Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/antonioan23_atuscode.json
T

1 line
16 KiB
JSON

{"repo": "antonioan23/atuscode", "files": {"packages/tui/src/component/dialog-retry-action.tsx": {"ef7e3f27fd9b99c741e0ac382383463ff30fb1eb": {"t": 1785596385.13158, "n": 5246, "h": "64ebd016c759caab", "c": "import { RGBA, TextAttributes } from \"@opentui/core\"\nimport open from \"open\"\nimport { createSignal } from \"solid-js\"\nimport { selectedForeground, useTheme } from \"../context/theme\"\nimport { useDialog, type DialogContext } from \"../ui/dialog\"\nimport { Link } from \"../ui/link\"\nimport { BgPulse } from \"./bg-pulse\"\nimport { useBindings } from \"../keymap\"\n\nconst GO_URL = \"https://opencode.ai/go\"\nconst PAD_X = 3\nconst PAD_TOP_OUTER = 1\nconst FOREGROUND_ALPHA = 186\n\nexport type DialogRetryActionProps = {\n title: string\n message: string\n label: string\n link?: string\n onClose?: (dontShowAgain?: boolean) => void\n}\n\nfunction runAction(props: DialogRetryActionProps, dialog: ReturnType<typeof useDialog>) {\n if (props.link) open(props.link).catch(() => {})\n props.onClose?.()\n dialog.clear()\n}\n\nfunction dismiss(props: DialogRetryActionProps, dialog: ReturnType<typeof useDialog>) {\n props.onClose?.(true)\n dialog.clear()\n}\n\nfunction panelOverlay(color: RGBA) {\n const [r, g, b] = color.toInts()\n return RGBA.fromInts(r, g, b, FOREGROUND_ALPHA)\n}\n\nexport function DialogRetryAction(props: DialogRetryActionProps) {\n const dialog = useDialog()\n const { theme } = useTheme()\n const fg = selectedForeground(theme)\n const showGoTreatment = () => props.link === GO_URL\n const textBg = () => (showGoTreatment() ? panelOverlay(theme.backgroundPanel) : undefined)\n const [selected, setSelected] = createSignal<\"dismiss\" | \"action\">(\"action\")\n\n useBindings(() => ({\n bindings: [\n {\n key: \"left\",\n desc: \"Previous retry option\",\n group: \"Dialog\",\n cmd: () => setSelected((value) => (value === \"action\" ? \"dismiss\" : \"action\")),\n },\n {\n key: \"right\",\n desc: \"Next retry option\",\n group: \"Dialog\",\n cmd: () => setSelected((value) => (value === \"action\" ? \"dismiss\" : \"action\")),\n },\n {\n key: \"tab\",\n desc: \"Next retry option\",\n group: \"Dialog\",\n cmd: () => setSelected((value) => (value === \"action\" ? \"dismiss\" : \"action\")),\n },\n {\n key: \"return\",\n desc: \"Confirm retry option\",\n group: \"Dialog\",\n cmd: () => {\n if (selected() === \"action\") runAction(props, dialog)\n else dismiss(props, dialog)\n },\n },\n ],\n }))\n\n return (\n <box>\n {showGoTreatment() ? (\n <box position=\"absolute\" top={-PAD_TOP_OUTER} left={0} right={0} bottom={0} zIndex={0}>\n <BgPulse />\n </box>\n ) : null}\n <box zIndex={1} paddingLeft={PAD_X} paddingRight={PAD_X} paddingBottom={1} gap={1}>\n <box flexDirection=\"row\" justifyContent=\"space-between\">\n <text attributes={TextAttributes.BOLD} fg={theme.text} bg={textBg()}>\n {props.title}\n </text>\n <text fg={theme.textMuted} bg={textBg()} onMouseUp={() => dialog.clear()}>\n esc\n </text>\n </box>\n <box gap={0}>\n <text fg={theme.textMuted} bg={textBg()}>\n {props.message}\n </text>\n </box>\n {props.link ? (\n showGoTreatment() ? (\n <box alignItems=\"center\" justifyContent=\"flex-end\" height={7} paddingBottom={1}>\n <Link href={props.link} fg={theme.primary} bg={textBg()} wrapMode=\"none\" />\n </box>\n ) : (\n <box width=\"100%\" flexDirection=\"row\" justifyContent=\"center\" paddingBottom={1}>\n <Link href={props.link} fg={theme.primary} wrapMode=\"none\" />\n </box>\n )\n ) : (\n <box paddingBottom={1} />\n )}\n <box flexDirection=\"row\" justifyContent=\"space-between\">\n <box\n paddingLeft={2}\n paddingRight={2}\n backgroundColor={selected() === \"dismiss\" ? theme.primary : RGBA.fromInts(0, 0, 0, 0)}\n onMouseOver={() => setSelected(\"dismiss\")}\n onMouseUp={() => dismiss(props, dialog)}\n >\n <text\n fg={selected() === \"dismiss\" ? fg : theme.textMuted}\n bg={selected() === \"dismiss\" ? undefined : textBg()}\n attributes={selected() === \"dismiss\" ? TextAttributes.BOLD : undefined}\n >\n don't show again\n </text>\n </box>\n <box\n paddingLeft={2}\n paddingRight={2}\n backgroundColor={selected() === \"action\" ? theme.primary : RGBA.fromInts(0, 0, 0, 0)}\n onMouseOver={() => setSelected(\"action\")}\n onMouseUp={() => runAction(props, dialog)}\n >\n <text\n fg={selected() === \"action\" ? fg : theme.text}\n bg={selected() === \"action\" ? undefined : textBg()}\n attributes={selected() === \"action\" ? TextAttributes.BOLD : undefined}\n >\n {props.label}\n </text>\n </box>\n </box>\n </box>\n </box>\n )\n}\n\nDialogRetryAction.show = (\n dialog: DialogContext,\n props: Pick<DialogRetryActionProps, \"title\" | \"message\" | \"label\" | \"link\">,\n) => {\n return new Promise<boolean>((resolve) => {\n dialog.replace(\n () => <DialogRetryAction {...props} onClose={(dontShow) => resolve(dontShow ?? false)} />,\n () => resolve(false),\n )\n })\n}\n"}}, "packages/atuscode/test/session/schema-decoding.test.ts": {"ef7e3f27fd9b99c741e0ac382383463ff30fb1eb": {"t": 1785596394.9153738, "n": 9959, "h": "a4d1482bbde80108", "c": "import { describe, expect, test } from \"bun:test\"\nimport { Schema } from \"effect\"\n\nimport { Session } from \"@/session/session\"\nimport { SessionPrompt } from \"../../src/session/prompt\"\nimport { SessionRevert } from \"../../src/session/revert\"\nimport { SessionStatus } from \"../../src/session/status\"\nimport { SessionSummary } from \"../../src/session/summary\"\nimport { Todo } from \"../../src/session/todo\"\nimport { SessionID, MessageID, PartID } from \"../../src/session/schema\"\nimport { ProjectV2 } from \"@hostclube/core/project\"\nimport { WorkspaceV2 } from \"@hostclube/core/workspace\"\n\n// Covers the session-domain Effect Schema migration. For each migrated\n// schema we assert:\n// 1. The Effect decoder (`Schema.decodeUnknownSync`) accepts valid input.\n// 2. Clearly-invalid input is rejected.\n\n// Representative valid IDs — the branded schemas require the right prefix\n// (see src/id/id.ts).\nconst sessionID = Schema.decodeUnknownSync(SessionID)(\"ses_01J5Y5H0AH4Q4NXJ6P4C3P5V2K\")\nconst sessionIDChild = Schema.decodeUnknownSync(SessionID)(\"ses_01J5Y5H0AH4Q4NXJ6P4C3P5V2L\")\nconst messageID = Schema.decodeUnknownSync(MessageID)(\"msg_01J5Y5H0AH4Q4NXJ6P4C3P5V2M\")\nconst partID = Schema.decodeUnknownSync(PartID)(\"prt_01J5Y5H0AH4Q4NXJ6P4C3P5V2N\")\nconst projectID = ProjectV2.ID.make(\"proj-alpha\")\nconst workspaceID = Schema.decodeUnknownSync(WorkspaceV2.ID)(\"wrk-primary\")\n\nfunction decodeUnknown<S extends Schema.Top>(schema: S) {\n const decode = Schema.decodeUnknownSync(schema as any)\n return (input: unknown): Schema.Schema.Type<S> => decode(input) as Schema.Schema.Type<S>\n}\n\ndescribe(\"Session.Info\", () => {\n const decode = decodeUnknown(Session.Info)\n\n test(\"accepts minimal session\", () => {\n const input = {\n id: sessionID,\n slug: \"hello\",\n projectID,\n directory: \"/tmp/proj\",\n title: \"First session\",\n version: \"0.1.0\",\n time: { created: 1, updated: 2 },\n }\n expect(decode(input)).toEqual(input)\n })\n\n test(\"round-trips every optional field\", () => {\n const input = {\n id: sessionID,\n slug: \"fullshape\",\n projectID,\n workspaceID,\n directory: \"/tmp/proj\",\n path: \"packages/opencode\",\n parentID: sessionIDChild,\n summary: {\n additions: 10,\n deletions: 5,\n files: 2,\n diffs: [{ additions: 1, deletions: 0, file: \"a.ts\", patch: \"--- a/a.ts\" }],\n },\n share: { url: \"https://share.example.com/s/1\" },\n title: \"Full session\",\n version: \"1.0.0\",\n metadata: { source: \"test\" },\n time: { created: 100, updated: 200, compacting: 150, archived: 300 },\n permission: [{ action: \"allow\" as const, pattern: \"*\", permission: \"read\" }],\n revert: {\n messageID,\n partID,\n snapshot: \"snap-1\",\n diff: \"diff-1\",\n },\n }\n expect(decode(input)).toEqual(input)\n })\n\n test(\"accepts migrated summary diffs without file details\", () => {\n const input = {\n id: sessionID,\n slug: \"legacy-diff\",\n projectID,\n directory: \"/tmp/proj\",\n title: \"Legacy diff\",\n version: \"0.1.0\",\n summary: {\n additions: 1,\n deletions: 0,\n files: 1,\n diffs: [{ additions: 1, deletions: 0 }],\n },\n time: { created: 1, updated: 2 },\n }\n expect(decode(input)).toEqual(input)\n })\n\n test(\"rejects unbranded session id\", () => {\n const bad = { id: \"not-a-session-id\" } as unknown\n expect(() => decode(bad)).toThrow()\n })\n\n test(\"rejects missing required fields\", () => {\n const bad = { id: sessionID } as unknown\n expect(() => decode(bad)).toThrow()\n })\n})\n\ndescribe(\"Session.ProjectInfo\", () => {\n const decode = decodeUnknown(Session.ProjectInfo)\n\n test(\"accepts with and without optional name\", () => {\n const noName = { id: projectID, worktree: \"/tmp/wt\" }\n const withName = { ...noName, name: \"alpha\" }\n expect(decode(noName)).toEqual(noName)\n expect(decode(withName)).toEqual(withName)\n })\n})\n\ndescribe(\"Session.GlobalInfo\", () => {\n const decode = decodeUnknown(Session.GlobalInfo)\n\n test(\"accepts null project\", () => {\n const input = {\n id: sessionID,\n slug: \"global\",\n projectID,\n directory: \"/tmp/proj\",\n title: \"global\",\n version: \"0\",\n time: { created: 0, updated: 0 },\n project: null,\n }\n expect(decode(input)).toEqual(input)\n })\n\n test(\"accepts populated project\", () => {\n const input = {\n id: sessionID,\n slug: \"global\",\n projectID,\n directory: \"/tmp/proj\",\n title: \"global\",\n version: \"0\",\n time: { created: 0, updated: 0 },\n project: { id: projectID, worktree: \"/tmp/wt\", name: \"alpha\" },\n }\n expect(decode(input)).toEqual(input)\n })\n})\n\ndescribe(\"Session input schemas\", () => {\n test(\"CreateInput accepts undefined and populated forms\", () => {\n const decode = decodeUnknown(Session.CreateInput)\n expect(decode(undefined)).toBeUndefined()\n\n const populated = {\n parentID: sessionID,\n title: \"child\",\n metadata: { source: \"test\" },\n permission: [{ action: \"ask\" as const, pattern: \"*\", permission: \"bash\" }],\n workspaceID,\n }\n expect(decode(populated)).toEqual(populated)\n })\n\n test(\"ForkInput round-trips\", () => {\n const decode = decodeUnknown(Session.ForkInput)\n const input = { sessionID, messageID }\n expect(decode(input)).toEqual(input)\n // messageID is optional\n const bare = { sessionID }\n expect(decode(bare)).toEqual(bare)\n })\n\n test(\"SetTitleInput rejects missing title\", () => {\n expect(() => decodeUnknown(Session.SetTitleInput)({ sessionID })).toThrow()\n })\n\n test(\"SetArchivedInput accepts both with and without time\", () => {\n const decode = decodeUnknown(Session.SetArchivedInput)\n expect(decode({ sessionID })).toEqual({ sessionID })\n expect(decode({ sessionID, time: 123 })).toEqual({ sessionID, time: 123 })\n })\n\n test(\"SetPermissionInput requires a ruleset\", () => {\n const decode = decodeUnknown(Session.SetPermissionInput)\n const input = { sessionID, permission: [{ action: \"deny\" as const, pattern: \"*\", permission: \"write\" }] }\n expect(decode(input)).toEqual(input)\n expect(() => decode({ sessionID })).toThrow()\n })\n\n test(\"MessagesInput accepts optional limit\", () => {\n const decode = decodeUnknown(Session.MessagesInput)\n expect(decode({ sessionID })).toEqual({ sessionID })\n expect(decode({ sessionID, limit: 50 })).toEqual({ sessionID, limit: 50 })\n })\n})\n\ndescribe(\"SessionRevert.RevertInput\", () => {\n const decode = decodeUnknown(SessionRevert.RevertInput)\n\n test(\"messageID is required, partID is optional\", () => {\n const withPart = { sessionID, messageID, partID }\n expect(decode(withPart)).toEqual(withPart)\n\n const noPart = { sessionID, messageID }\n expect(decode(noPart)).toEqual(noPart)\n\n expect(() => decode({ sessionID })).toThrow()\n })\n})\n\ndescribe(\"SessionSummary.DiffInput\", () => {\n const decode = decodeUnknown(SessionSummary.DiffInput)\n\n test(\"messageID optional\", () => {\n expect(decode({ sessionID })).toEqual({ sessionID })\n expect(decode({ sessionID, messageID })).toEqual({ sessionID, messageID })\n })\n})\n\ndescribe(\"SessionStatus.Info\", () => {\n const decode = decodeUnknown(SessionStatus.Info)\n\n test(\"idle / busy discriminators\", () => {\n expect(decode({ type: \"idle\" })).toEqual({ type: \"idle\" })\n expect(decode({ type: \"busy\" })).toEqual({ type: \"busy\" })\n })\n\n test(\"retry carries attempt/message/action/next\", () => {\n const input = {\n type: \"retry\" as const,\n attempt: 1,\n message: \"transient\",\n action: {\n reason: \"free_tier_limit\",\n provider: \"opencode\",\n title: \"Free limit reached\",\n message: \"Subscribe to OpenCode Go.\",\n label: \"subscribe\",\n link: \"https://opencode.ai/go\",\n },\n next: 500,\n }\n expect(decode(input)).toEqual(input)\n })\n\n test(\"rejects unknown type\", () => {\n expect(() => decode({ type: \"bogus\" })).toThrow()\n })\n})\n\ndescribe(\"Todo.Info\", () => {\n const decode = decodeUnknown(Todo.Info)\n\n test(\"three-field round-trip\", () => {\n const input = { content: \"do a thing\", status: \"pending\", priority: \"high\" }\n expect(decode(input)).toEqual(input)\n })\n})\n\ndescribe(\"SessionPrompt input schemas\", () => {\n test(\"LoopInput is just sessionID\", () => {\n const decode = decodeUnknown(SessionPrompt.LoopInput)\n expect(decode({ sessionID })).toEqual({ sessionID })\n })\n\n test(\"ShellInput requires agent + command\", () => {\n const decode = decodeUnknown(SessionPrompt.ShellInput)\n const expected = { sessionID, agent: \"build\", command: \"echo hi\" }\n const input: unknown = expected\n expect(decode(input)).toEqual(expected)\n expect(() => decode({ sessionID })).toThrow()\n })\n\n test(\"PromptInput accepts a text part and a file part\", () => {\n const decode = decodeUnknown(SessionPrompt.PromptInput)\n const expected = {\n sessionID,\n parts: [\n { type: \"text\" as const, text: \"hello\" },\n { type: \"file\" as const, mime: \"image/png\", url: \"data:image/png;base64,AAAA\" },\n ],\n }\n const input: unknown = expected\n const decoded = decode(input)\n expect(decoded.parts).toHaveLength(2)\n expect(decoded.parts[0]).toMatchObject({ type: \"text\", text: \"hello\" })\n expect(decoded.parts[1]).toMatchObject({ type: \"file\", mime: \"image/png\" })\n })\n\n test(\"PromptInput rejects unknown part type\", () => {\n const decode = decodeUnknown(SessionPrompt.PromptInput)\n const bad = {\n sessionID,\n parts: [{ type: \"nonsense\", payload: 42 }],\n }\n expect(() => decode(bad)).toThrow()\n })\n\n test(\"CommandInput round-trips core fields\", () => {\n const decode = decodeUnknown(SessionPrompt.CommandInput)\n const expected = {\n sessionID,\n arguments: \"--flag\",\n command: \"deploy\",\n }\n const input: unknown = expected\n expect(decode(input)).toEqual(expected)\n })\n})\n"}}}}