@99percentpeople/pi-codex-api 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.min.js.map CHANGED
@@ -1,8 +1,11 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../extensions/codex-api/ask.ts", "../../extensions/codex-api/config.ts", "../../extensions/codex-api/client.ts", "../../extensions/codex-api/render.ts", "../../extensions/codex-api/features.ts", "../../extensions/codex-api/image.ts", "../../extensions/codex-api/search.ts", "../../extensions/codex-api/search-display.ts", "../../extensions/codex-api/settings.ts", "../../extensions/codex-api/usage.ts", "../../extensions/codex-api/index.ts"],
3
+ "sources": ["../../packages/workspace-files/index.ts", "../../extensions/codex-api/ask.ts", "../../packages/shared-settings/index.ts", "../../packages/shared-settings/sectioned-settings-list.ts", "../../extensions/codex-api/config.ts", "../../extensions/codex-api/client.ts", "../../extensions/codex-api/render.ts", "../../extensions/codex-api/features.ts", "../../extensions/codex-api/image.ts", "../../extensions/codex-api/search.ts", "../../extensions/codex-api/search-display.ts", "../../extensions/codex-api/settings.ts", "../../extensions/codex-api/usage.ts", "../../extensions/codex-api/index.ts"],
4
4
  "sourcesContent": [
5
+ "import { createReadStream, createWriteStream } from \"node:fs\";\nimport { access, mkdir, writeFile } from \"node:fs/promises\";\nimport {\n dirname,\n extname,\n isAbsolute,\n relative,\n resolve,\n sep,\n} from \"node:path\";\nimport { Readable } from \"node:stream\";\nimport { pipeline } from \"node:stream/promises\";\nimport type { ExtensionAPI } from \"@earendil-works/pi-coding-agent\";\n\nexport const WORKSPACE_FILES_REQUEST_CHANNEL =\n \"@99percentpeople/pi-workspace-files/request-v1\";\n\nexport type WorkspaceFileData = Uint8Array | AsyncIterable<Uint8Array>;\n\nexport interface WorkspaceFileOptions {\n signal?: AbortSignal;\n}\n\nexport interface WorkspaceFileSystem {\n /** Resolve a model-facing path and reject paths outside this workspace. */\n resolvePath(path: string): string;\n /** Return the platform-native extension for a resolved path. */\n extname(path: string): string;\n /** Return the platform-native parent directory for a resolved path. */\n dirname(path: string): string;\n /** Test whether a resolved file or directory already exists. */\n exists(path: string, options?: WorkspaceFileOptions): Promise<boolean>;\n /** Read a resolved file as buffered bytes or an asynchronous byte stream. */\n readFile(path: string, options?: WorkspaceFileOptions): Promise<WorkspaceFileData>;\n /** Create a resolved directory recursively. */\n mkdir(path: string, options?: WorkspaceFileOptions): Promise<void>;\n /** Write buffered bytes or an asynchronous byte stream to a resolved file. */\n writeFile(\n path: string,\n content: WorkspaceFileData,\n options?: WorkspaceFileOptions,\n ): Promise<void>;\n}\n\nexport interface WorkspaceFileProviderContext {\n /** Pi's local anchor cwd for mapping model-facing paths. */\n cwd: string;\n}\n\nexport type WorkspaceFileProvider = (\n context: WorkspaceFileProviderContext,\n) => WorkspaceFileSystem | undefined;\n\nexport interface WorkspaceFilesRequest {\n version: 1;\n cwd: string;\n claim(owner: string, files: WorkspaceFileSystem): void;\n}\n\ninterface WorkspaceFilesClaim {\n owner: string;\n files: WorkspaceFileSystem;\n}\n\nfunction isInsideRoot(root: string, value: string): boolean {\n const fromRoot = relative(root, value);\n return fromRoot === \"\" || (\n fromRoot !== \"..\"\n && !fromRoot.startsWith(`..${sep}`)\n && !isAbsolute(fromRoot)\n );\n}\n\nfunction localWorkspacePath(cwd: string, path: string): string {\n const root = resolve(cwd);\n const absolute = isAbsolute(path) ? resolve(path) : resolve(root, path);\n if (!isInsideRoot(root, absolute)) {\n throw new Error(`Path must stay inside the current workspace: ${path}`);\n }\n return absolute;\n}\n\nfunction throwIfAborted(signal?: AbortSignal): void {\n signal?.throwIfAborted();\n}\n\nfunction isByteArray(data: WorkspaceFileData): data is Uint8Array {\n return data instanceof Uint8Array;\n}\n\nasync function* checkedChunks(\n data: AsyncIterable<Uint8Array>,\n signal?: AbortSignal,\n): AsyncGenerator<Uint8Array> {\n for await (const chunk of data) {\n throwIfAborted(signal);\n if (!(chunk instanceof Uint8Array)) {\n throw new TypeError(\"Workspace file streams must yield Uint8Array chunks\");\n }\n yield chunk;\n }\n throwIfAborted(signal);\n}\n\nexport async function collectWorkspaceFile(\n data: WorkspaceFileData,\n options: WorkspaceFileOptions = {},\n): Promise<Buffer> {\n const { signal } = options;\n throwIfAborted(signal);\n if (isByteArray(data)) return Buffer.from(data);\n const chunks: Buffer[] = [];\n for await (const chunk of checkedChunks(data, signal)) {\n chunks.push(Buffer.from(chunk));\n }\n return Buffer.concat(chunks);\n}\n\nexport function createLocalWorkspaceFiles(cwd: string): WorkspaceFileSystem {\n return {\n resolvePath: (path) => localWorkspacePath(cwd, path),\n extname,\n dirname,\n async exists(path, options = {}) {\n const { signal } = options;\n throwIfAborted(signal);\n try {\n await access(path);\n throwIfAborted(signal);\n return true;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") return false;\n throw error;\n }\n },\n async readFile(path, options = {}) {\n const { signal } = options;\n throwIfAborted(signal);\n return createReadStream(path, { signal });\n },\n async mkdir(path, options = {}) {\n const { signal } = options;\n throwIfAborted(signal);\n await mkdir(path, { recursive: true });\n throwIfAborted(signal);\n },\n async writeFile(path, content, options = {}) {\n const { signal } = options;\n throwIfAborted(signal);\n if (isByteArray(content)) {\n await writeFile(path, content, { signal });\n return;\n }\n await pipeline(\n Readable.from(checkedChunks(content, signal)),\n createWriteStream(path, { signal }),\n { signal },\n );\n },\n };\n}\n\nfunction isWorkspaceFilesRequest(value: unknown): value is WorkspaceFilesRequest {\n if (!value || typeof value !== \"object\") return false;\n const request = value as Partial<WorkspaceFilesRequest>;\n return request.version === 1\n && typeof request.cwd === \"string\"\n && typeof request.claim === \"function\";\n}\n\nfunction assertOwner(owner: string): void {\n if (!owner.trim() || /[\\0\\r\\n]/.test(owner)) {\n throw new Error(\"Workspace file provider owner must be a non-empty single line\");\n }\n}\n\nexport function registerWorkspaceFileProvider(\n pi: Pick<ExtensionAPI, \"events\">,\n owner: string,\n provider: WorkspaceFileProvider,\n): () => void {\n assertOwner(owner);\n return pi.events.on(WORKSPACE_FILES_REQUEST_CHANNEL, (value) => {\n if (!isWorkspaceFilesRequest(value)) return;\n const files = provider({ cwd: value.cwd });\n if (files) value.claim(owner, files);\n });\n}\n\nexport function resolveWorkspaceFiles(\n pi: Pick<ExtensionAPI, \"events\">,\n cwd: string,\n): WorkspaceFileSystem {\n const claims: WorkspaceFilesClaim[] = [];\n const request: WorkspaceFilesRequest = {\n version: 1,\n cwd,\n claim(owner, files) {\n assertOwner(owner);\n claims.push({ owner, files });\n },\n };\n pi.events.emit(WORKSPACE_FILES_REQUEST_CHANNEL, request);\n if (claims.length > 1) {\n throw new Error(\n `Multiple extensions claimed the active workspace file system: ${claims.map((claim) => claim.owner).join(\", \")}`,\n );\n }\n return claims[0]?.files ?? createLocalWorkspaceFiles(cwd);\n}\n",
5
6
  "import {\n collectWorkspaceFile,\n resolveWorkspaceFiles,\n type WorkspaceFileSystem,\n} from \"@99percentpeople/pi-workspace-files\";\nimport {\n contentText,\n uuidv7,\n type AssistantMessage,\n type Context,\n type ImageContent,\n type Model,\n type OpenAICodexResponsesOptions,\n type TextContent,\n} from \"@earendil-works/pi-ai\";\nimport {\n keyHint,\n type ExtensionAPI,\n type ExtensionContext,\n} from \"@earendil-works/pi-coding-agent\";\nimport { Type } from \"typebox\";\nimport {\n DEFAULT_CODEX_API_CONFIG,\n type CodexApiConfig,\n type CodexResponseVerbosity,\n} from \"./config.ts\";\nimport { createCodexApiClient, type CodexFetch } from \"./client.ts\";\nimport {\n reusableText,\n streamingSuffix,\n textOutput,\n} from \"./render.ts\";\n\nconst MAX_ASK_IMAGES = 5;\nconst DEFAULT_MAX_OUTPUT_TOKENS = 8192;\nconst MAX_OUTPUT_TOKENS = 32768;\nconst CODEX_MODELS_CLIENT_VERSION = \"0.0.0\";\nconst CODEX_ASK_SYSTEM_PROMPT = `You are Codex answering a standalone request delegated by another Pi agent.\nAnswer the request directly and accurately. Use only the prompt and images provided in this request.\nDo not assume access to the surrounding conversation, repository, files, or tools unless their relevant contents are included.\nIf required context is missing, say exactly what is needed.`;\n\nconst IMAGE_MIME_TYPES: Record<string, string> = {\n \".gif\": \"image/gif\",\n \".jpeg\": \"image/jpeg\",\n \".jpg\": \"image/jpeg\",\n \".png\": \"image/png\",\n \".webp\": \"image/webp\",\n};\n\nconst ReasoningSchema = Type.Union([\n Type.Literal(\"off\"),\n Type.Literal(\"minimal\"),\n Type.Literal(\"low\"),\n Type.Literal(\"medium\"),\n Type.Literal(\"high\"),\n Type.Literal(\"xhigh\"),\n Type.Literal(\"max\"),\n], {\n description: \"Optional Codex reasoning effort. Omit to use the selected model's default\",\n});\n\nconst VerbositySchema = Type.Union([\n Type.Literal(\"auto\"),\n Type.Literal(\"low\"),\n Type.Literal(\"medium\"),\n Type.Literal(\"high\"),\n], {\n description: \"Per-call answer detail override. Omit to use the /99settings default\",\n});\n\nexport type CodexAskReasoning = \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\";\nexport type CodexAskPhase = \"selecting-model\" | \"reading-images\" | \"asking\" | \"completed\";\nexport type CodexTextModel = Model<\"openai-codex-responses\">;\n\nexport interface CodexAskDetails {\n phase: CodexAskPhase;\n model?: string;\n imageCount?: number;\n outputChars?: number;\n stopReason?: string;\n}\n\nfunction phaseLabel(phase: CodexAskPhase): string {\n if (phase === \"selecting-model\") return \"Selecting a logged-in Codex model…\";\n if (phase === \"reading-images\") return \"Reading image inputs…\";\n if (phase === \"asking\") return \"Waiting for Codex…\";\n return \"Codex answer completed\";\n}\n\nfunction normalizeConversationImage(value: ImageContent): ImageContent | undefined {\n if (!value.data || !value.mimeType.toLowerCase().startsWith(\"image/\")) return undefined;\n if (!value.data.startsWith(\"data:image/\")) {\n return {\n type: \"image\",\n data: value.data,\n mimeType: value.mimeType.toLowerCase() === \"image/jpg\" ? \"image/jpeg\" : value.mimeType,\n };\n }\n const match = /^data:([^;,]+);base64,(.*)$/s.exec(value.data);\n if (!match) return undefined;\n return { type: \"image\", mimeType: match[1], data: match[2] };\n}\n\nfunction imagesFromContent(content: unknown): ImageContent[] {\n if (!Array.isArray(content)) return [];\n const images: ImageContent[] = [];\n for (const item of content) {\n if (!item || typeof item !== \"object\" || (item as { type?: unknown }).type !== \"image\") continue;\n const normalized = normalizeConversationImage(item as ImageContent);\n if (normalized) images.push(normalized);\n }\n return images;\n}\n\nfunction recentConversationImages(ctx: ExtensionContext, count: number): ImageContent[] {\n const images: ImageContent[] = [];\n for (const entry of ctx.sessionManager.buildContextEntries()) {\n if (entry.type === \"message\" && \"content\" in entry.message) {\n images.push(...imagesFromContent(entry.message.content));\n } else if (entry.type === \"custom_message\") {\n images.push(...imagesFromContent(entry.content));\n }\n }\n const selected = images.slice(-count);\n if (selected.length !== count) {\n throw new Error(\n `Requested the last ${count} conversation image${count === 1 ? \"\" : \"s\"}, but only ${selected.length} were available`,\n );\n }\n return selected;\n}\n\nasync function workspaceImage(\n files: WorkspaceFileSystem,\n path: string,\n signal?: AbortSignal,\n): Promise<ImageContent> {\n const absolute = files.resolvePath(path);\n const mimeType = IMAGE_MIME_TYPES[files.extname(absolute).toLowerCase()];\n if (!mimeType) throw new Error(`Unsupported image input type: ${path}`);\n const bytes = await collectWorkspaceFile(await files.readFile(absolute, { signal }), { signal });\n return { type: \"image\", data: bytes.toString(\"base64\"), mimeType };\n}\n\nfunction reasoningEffort(value: CodexAskReasoning | undefined): \"none\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\" | undefined {\n return value === \"off\" ? \"none\" : value;\n}\n\nfunction abbreviatedPrompt(value: unknown): string {\n if (typeof value !== \"string\" || !value) return \"\";\n const compact = value.replace(/\\s+/g, \" \").trim();\n return JSON.stringify(compact.length > 180 ? `${compact.slice(0, 177)}…` : compact);\n}\n\nfunction answerPreview(value: string, maxChars = 320): { text: string; truncated: boolean } {\n const compact = value.replace(/\\s+/g, \" \").trim();\n const characters = Array.from(compact);\n if (characters.length <= maxChars) return { text: compact, truncated: false };\n return {\n text: `${characters.slice(0, Math.max(0, maxChars - 1)).join(\"\").trimEnd()}…`,\n truncated: true,\n };\n}\n\ninterface CodexModelsCatalogEntry {\n slug?: unknown;\n priority?: unknown;\n visibility?: unknown;\n}\n\ninterface CodexModelsCatalog {\n models?: unknown;\n}\n\nfunction officialDefaultModelId(catalog: CodexModelsCatalog): string | undefined {\n if (!Array.isArray(catalog.models)) return undefined;\n return (catalog.models as CodexModelsCatalogEntry[])\n .filter((model) =>\n typeof model.slug === \"string\"\n && model.visibility === \"list\"\n && typeof model.priority === \"number\"\n && Number.isFinite(model.priority)\n )\n .sort((left, right) => (left.priority as number) - (right.priority as number))[0]\n ?.slug as string | undefined;\n}\n\nasync function resolveOfficialCodexDefaultModelId(\n ctx: Pick<ExtensionContext, \"model\" | \"modelRegistry\">,\n allowOtherProviders: boolean,\n signal?: AbortSignal,\n fetchImpl?: CodexFetch,\n): Promise<string> {\n const client = await createCodexApiClient(\n ctx,\n { allowOtherProviders },\n fetchImpl,\n );\n const catalog = await client.get<CodexModelsCatalog>(\n `/models?client_version=${encodeURIComponent(CODEX_MODELS_CLIENT_VERSION)}`,\n signal,\n );\n const modelId = officialDefaultModelId(catalog);\n if (!modelId) {\n throw new Error(\"Codex did not return an official default model\");\n }\n return modelId;\n}\n\nexport function resolveCodexAskModel(\n ctx: Pick<ExtensionContext, \"model\" | \"modelRegistry\">,\n allowOtherProviders: boolean,\n requestedModelId?: string,\n): CodexTextModel {\n if (ctx.model?.provider !== \"openai-codex\" && !allowOtherProviders) {\n throw new Error(\n \"Codex API tools require an active openai-codex model. \"\n + \"Enable Other providers in /99settings to use them from another model.\",\n );\n }\n const candidates = ctx.modelRegistry.getAll().filter((model) =>\n model.provider === \"openai-codex\"\n && model.api === \"openai-codex-responses\"\n && ctx.modelRegistry.isUsingOAuth(model)\n );\n if (ctx.model?.provider === \"openai-codex\"\n && ctx.model.api === \"openai-codex-responses\"\n && ctx.modelRegistry.isUsingOAuth(ctx.model)\n && !candidates.some((model) => model.id === ctx.model?.id)) {\n candidates.unshift(ctx.model);\n }\n const requested = requestedModelId?.trim();\n const selected = requested\n ? candidates.find((model) => model.id === requested)\n : candidates.find((model) => model.id === ctx.model?.id) ?? candidates[0];\n if (!selected) {\n if (requested) {\n throw new Error(\n `Codex model is unavailable or not logged in: ${requested}. Use Pi's model list to inspect openai-codex model IDs.`,\n );\n }\n throw new Error(\n \"Codex subscription OAuth is unavailable. Run /login and sign in to openai-codex, then retry.\",\n );\n }\n return selected as CodexTextModel;\n}\n\nexport async function resolveOfficialCodexAskModel(\n ctx: Pick<ExtensionContext, \"model\" | \"modelRegistry\">,\n allowOtherProviders: boolean,\n requestedModelId?: string,\n signal?: AbortSignal,\n fetchImpl?: CodexFetch,\n): Promise<CodexTextModel> {\n const requested = requestedModelId?.trim();\n if (requested) return resolveCodexAskModel(ctx, allowOtherProviders, requested);\n const officialDefault = await resolveOfficialCodexDefaultModelId(\n ctx,\n allowOtherProviders,\n signal,\n fetchImpl,\n );\n try {\n return resolveCodexAskModel(ctx, allowOtherProviders, officialDefault);\n } catch (error) {\n if (error instanceof Error && /unavailable or not logged in/.test(error.message)) {\n throw new Error(\n `The official Codex default model (${officialDefault}) is unavailable in Pi's model registry. Update Pi and retry.`,\n );\n }\n throw error;\n }\n}\n\ninterface CompleteCapableRegistry {\n complete?: (\n model: CodexTextModel,\n context: Context,\n options?: OpenAICodexResponsesOptions,\n ) => Promise<AssistantMessage>;\n}\n\nexport async function completeCodexAsk(\n ctx: Pick<ExtensionContext, \"modelRegistry\">,\n model: CodexTextModel,\n context: Context,\n options: OpenAICodexResponsesOptions,\n): Promise<AssistantMessage> {\n const registry = ctx.modelRegistry as unknown as CompleteCapableRegistry;\n if (typeof registry.complete !== \"function\") {\n throw new Error(\"codex_ask requires Pi 0.84.1 or newer; update Pi and retry\");\n }\n return registry.complete.call(ctx.modelRegistry, model, context, options);\n}\n\nexport function registerCodexAskTool(\n pi: ExtensionAPI,\n getConfig: () => CodexApiConfig = () => DEFAULT_CODEX_API_CONFIG,\n refreshUsage?: (ctx: ExtensionContext) => void,\n): void {\n pi.registerTool({\n name: \"codex_ask\",\n label: \"Ask Codex\",\n description:\n \"Ask a live Codex subscription model for a standalone text or vision second opinion. Supports multilingual prompts, translation, rewriting, analysis, and explicit model/reasoning/detail controls without an OpenAI API key.\",\n promptSnippet: \"Ask the logged-in Codex subscription for an explicit standalone second opinion\",\n promptGuidelines: [\n \"Use codex_ask only when the user explicitly asks to consult Codex, requests a Codex second opinion, or delegates a specific translation, rewrite, analysis, or image-understanding task to Codex.\",\n \"Do not call codex_ask merely because the active model is already Codex; normal assistant responses already use Codex. Never invoke it recursively or automatically for routine work.\",\n \"The call is standalone and does not receive the Pi conversation or workspace automatically. Put all necessary context, target language, and output format in prompt, while avoiding unrelated secrets or large context dumps.\",\n \"Omit model unless the user names an exact openai-codex model ID from Pi's model list. Omit reasoning, verbosity, and max_output_tokens unless the user requests those controls.\",\n \"For vision, use image_paths for workspace images or num_last_images_to_include for recent conversation images; never provide both and use the smallest necessary number.\",\n ],\n parameters: Type.Object({\n prompt: Type.String({\n minLength: 1,\n description: \"Complete standalone request for Codex, including needed context, target language, and output format\",\n }),\n model: Type.Optional(Type.String({\n minLength: 1,\n description: \"Exact openai-codex model ID from Pi's model list; omit to use ChatGPT's current official Codex default\",\n })),\n reasoning: Type.Optional(ReasoningSchema),\n verbosity: Type.Optional(VerbositySchema),\n image_paths: Type.Optional(Type.Array(Type.String({ minLength: 1 }), {\n maxItems: MAX_ASK_IMAGES,\n description: \"Workspace PNG, JPEG, WebP, or GIF files to include for vision analysis\",\n })),\n num_last_images_to_include: Type.Optional(Type.Integer({\n minimum: 1,\n maximum: MAX_ASK_IMAGES,\n description: \"Include recent attached/generated conversation images; do not combine with image_paths\",\n })),\n max_output_tokens: Type.Optional(Type.Integer({\n minimum: 1,\n maximum: MAX_OUTPUT_TOKENS,\n description: `Output cap only when explicitly needed; defaults to ${DEFAULT_MAX_OUTPUT_TOKENS}`,\n })),\n }, { additionalProperties: false }),\n async execute(_toolCallId, params, signal, onUpdate, ctx) {\n const config = getConfig();\n if (config.askEnabled === false) {\n throw new Error(\"codex_ask is disabled in /99settings > Codex API > Tools\");\n }\n const paths = params.image_paths ?? [];\n const recentCount = params.num_last_images_to_include;\n if (paths.length > 0 && recentCount !== undefined) {\n throw new Error(\"Provide only one of image_paths or num_last_images_to_include\");\n }\n const update = (phase: CodexAskPhase, details: Partial<CodexAskDetails> = {}) => onUpdate?.({\n content: [{ type: \"text\", text: phaseLabel(phase) }],\n details: { phase, ...details } satisfies CodexAskDetails,\n });\n\n update(\"selecting-model\");\n const selected = await resolveOfficialCodexAskModel(\n ctx,\n config.allowOtherProviders,\n params.model,\n signal,\n );\n\n let images: ImageContent[] = [];\n if (paths.length > 0) {\n update(\"reading-images\", { model: selected.id, imageCount: paths.length });\n const files = resolveWorkspaceFiles(pi, ctx.cwd);\n images = await Promise.all(paths.map((path) => workspaceImage(files, path, signal)));\n } else if (recentCount !== undefined) {\n update(\"reading-images\", { model: selected.id, imageCount: recentCount });\n images = recentConversationImages(ctx, recentCount);\n }\n if (images.length > 0 && !selected.input.includes(\"image\")) {\n throw new Error(`Codex model ${selected.id} does not accept image input`);\n }\n\n const requestedReasoning = params.reasoning as CodexAskReasoning | undefined;\n if (requestedReasoning && requestedReasoning !== \"off\" && !selected.reasoning) {\n throw new Error(`Codex model ${selected.id} does not support reasoning controls`);\n }\n if (requestedReasoning && requestedReasoning !== \"off\"\n && selected.thinkingLevelMap?.[requestedReasoning] === null) {\n throw new Error(`Codex model ${selected.id} does not support ${requestedReasoning} reasoning`);\n }\n const verbosity = (params.verbosity ?? config.responseVerbosity) as CodexResponseVerbosity;\n\n const userContent: Array<TextContent | ImageContent> = [\n { type: \"text\", text: params.prompt },\n ...images,\n ];\n update(\"asking\", { model: selected.id, imageCount: images.length });\n const response = await completeCodexAsk(\n ctx,\n selected,\n {\n systemPrompt: CODEX_ASK_SYSTEM_PROMPT,\n messages: [{ role: \"user\", content: userContent, timestamp: Date.now() }],\n },\n {\n maxTokens: params.max_output_tokens ?? DEFAULT_MAX_OUTPUT_TOKENS,\n signal,\n cacheRetention: \"none\",\n sessionId: uuidv7(),\n serviceTier: config.fastMode ? \"priority\" : undefined,\n reasoningEffort: reasoningEffort(requestedReasoning),\n textVerbosity: verbosity === \"auto\" ? undefined : verbosity,\n },\n );\n if (response.stopReason === \"error\") {\n throw new Error(`Codex answer failed: ${response.errorMessage || \"Unknown error\"}`);\n }\n const answer = contentText(response.content).trim();\n if (!answer) throw new Error(\"Codex returned no text answer\");\n const output = response.stopReason === \"length\"\n ? `${answer}\\n\\n[Codex stopped at the configured output limit]`\n : answer;\n const details: CodexAskDetails = {\n phase: \"completed\",\n model: selected.id,\n imageCount: images.length,\n outputChars: output.length,\n stopReason: response.stopReason,\n };\n refreshUsage?.(ctx);\n return {\n content: [{ type: \"text\", text: output }],\n details,\n usage: response.usage,\n };\n },\n renderCall(args, theme, context) {\n const text = reusableText(context);\n const prompt = abbreviatedPrompt(args.prompt);\n const model = typeof args.model === \"string\" && args.model ? `model=${args.model}` : \"\";\n const reasoning = typeof args.reasoning === \"string\" && args.reasoning ? `reasoning=${args.reasoning}` : \"\";\n const verbosity = typeof args.verbosity === \"string\" && args.verbosity ? `detail=${args.verbosity}` : \"\";\n const imageCount = Array.isArray(args.image_paths)\n ? args.image_paths.length\n : typeof args.num_last_images_to_include === \"number\"\n ? args.num_last_images_to_include\n : 0;\n text.setText(\n theme.fg(\"toolTitle\", theme.bold(\"codex_ask\"))\n + (prompt ? ` ${theme.fg(\"muted\", prompt)}` : \"\")\n + (model ? ` ${theme.fg(\"accent\", model)}` : \"\")\n + (reasoning ? ` ${theme.fg(\"dim\", reasoning)}` : \"\")\n + (verbosity ? ` ${theme.fg(\"dim\", verbosity)}` : \"\")\n + (imageCount ? ` ${theme.fg(\"dim\", `images=${imageCount}`)}` : \"\")\n + streamingSuffix(theme, context.argsComplete || context.executionStarted || !context.isPartial),\n );\n return text;\n },\n renderResult(result, { expanded, isPartial }, theme, context) {\n const text = reusableText(context);\n const details = result.details as CodexAskDetails | undefined;\n const output = textOutput(result.content);\n if (isPartial) {\n text.setText(theme.fg(\"warning\", phaseLabel(details?.phase ?? \"selecting-model\")));\n return text;\n }\n if (context.isError || !details) {\n text.setText(output ? theme.fg(\"error\", output) : theme.fg(\"error\", \"Codex answer failed\"));\n return text;\n }\n if (expanded) {\n text.setText(output ? theme.fg(\"toolOutput\", output) : \"\");\n return text;\n }\n const preview = answerPreview(output);\n const model = details.model ? ` with ${details.model}` : \"\";\n const length = details.outputChars === undefined ? \"\" : ` · ${details.outputChars.toLocaleString(\"en-US\")} chars`;\n const expandHint = preview.truncated\n ? theme.fg(\"muted\", \" (\") + keyHint(\"app.tools.expand\", \"to expand\") + theme.fg(\"muted\", \")\")\n : \"\";\n const summary = theme.fg(\"success\", `Codex answered${model}`)\n + theme.fg(\"muted\", length)\n + expandHint;\n text.setText(preview.text\n ? `\\n${theme.fg(\"toolOutput\", preview.text)}\\n${summary}`\n : summary);\n return text;\n },\n });\n}\n",
7
+ "import { mkdirSync, readFileSync, renameSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport {\n DynamicBorder,\n getAgentDir,\n getSettingsListTheme,\n type ExtensionAPI,\n type ExtensionContext,\n} from \"@earendil-works/pi-coding-agent\";\nimport { Container, Text } from \"@earendil-works/pi-tui\";\nimport {\n SectionedSettingsList,\n type SectionedSettingRow,\n} from \"./sectioned-settings-list.ts\";\n\nconst REGISTRY_SYMBOL = Symbol.for(\"@99percentpeople/pi-shared-settings/registry-v1\");\nconst COMMAND_NAME = \"99settings\";\nconst MAX_VISIBLE_SETTINGS_ROWS = 10;\n\nexport interface ExtensionSetting {\n id: string;\n label: string;\n description: string;\n currentValue: string;\n values?: string[];\n submenu?: ExtensionSettingsPanel;\n}\n\nexport interface ExtensionSettingsPanel {\n title: string;\n currentValue?(): string;\n settings(): ExtensionSetting[];\n onChange?(id: string, value: string, ctx: ExtensionContext): void;\n}\n\nexport interface ExtensionSettingsSection {\n namespace: string;\n title: string;\n settings(): ExtensionSetting[];\n onChange?(id: string, value: string, ctx: ExtensionContext): void;\n}\n\ninterface RegisteredSection extends ExtensionSettingsSection {\n owner: symbol;\n}\n\ninterface SharedSettingsRegistry {\n commandRegistered: boolean;\n sections: Map<string, RegisteredSection>;\n}\n\ntype SettingsDocument = Record<string, unknown>;\n\nconst globalRegistry = globalThis as typeof globalThis & {\n [REGISTRY_SYMBOL]?: SharedSettingsRegistry;\n};\n\nfunction getRegistry(): SharedSettingsRegistry {\n globalRegistry[REGISTRY_SYMBOL] ??= {\n commandRegistered: false,\n sections: new Map(),\n };\n return globalRegistry[REGISTRY_SYMBOL];\n}\n\nexport function getSharedSettingsPath(): string {\n return join(getAgentDir(), \"99extensions.json\");\n}\n\nfunction loadDocument(path: string): SettingsDocument {\n try {\n const value: unknown = JSON.parse(readFileSync(path, \"utf8\"));\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? (value as SettingsDocument)\n : {};\n } catch (error) {\n const code = (error as NodeJS.ErrnoException).code;\n if (code === \"ENOENT\" || error instanceof SyntaxError) return {};\n throw error;\n }\n}\n\nfunction assertNamespace(namespace: string): void {\n if (!/^[a-z0-9][a-z0-9-]*$/.test(namespace)) {\n throw new Error(`Invalid settings namespace: ${namespace}`);\n }\n}\n\nexport function readSettingsNamespace<T>(\n namespace: string,\n normalize: (value: unknown) => T,\n path = getSharedSettingsPath(),\n): T {\n assertNamespace(namespace);\n return normalize(loadDocument(path)[namespace]);\n}\n\nexport function writeSettingsNamespace<T>(\n namespace: string,\n value: T,\n path = getSharedSettingsPath(),\n): void {\n assertNamespace(namespace);\n const document = loadDocument(path);\n document[namespace] = value;\n mkdirSync(dirname(path), { recursive: true });\n const temporaryPath = `${path}.${process.pid}.tmp`;\n writeFileSync(temporaryPath, `${JSON.stringify(document, null, 2)}\\n`, \"utf8\");\n renameSync(temporaryPath, path);\n}\n\ninterface MenuRow {\n section: RegisteredSection;\n setting?: ExtensionSetting;\n}\n\nasync function showSettingsMenu(ctx: ExtensionContext, registry: SharedSettingsRegistry): Promise<void> {\n if (ctx.mode !== \"tui\") {\n ctx.ui.notify(`/${COMMAND_NAME} requires TUI mode`, \"error\");\n return;\n }\n\n const sections = [...registry.sections.values()]\n .filter((section) => section.settings().length > 0)\n .sort((left, right) => left.title.localeCompare(right.title));\n if (sections.length === 0) {\n ctx.ui.notify(\"No configurable @99percentpeople extension settings are currently available\", \"info\");\n return;\n }\n\n await ctx.ui.custom((tui, theme, _keybindings, done) => {\n const createPanel = (\n panel: ExtensionSettingsPanel,\n close: (value?: string) => void,\n ) => {\n let list: SectionedSettingsList;\n const buildRows = (): SectionedSettingRow[] =>\n panel.settings().map((setting) => ({\n id: setting.id,\n section: panel.title,\n label: setting.label,\n description: setting.description,\n currentValue: setting.currentValue,\n values: setting.values,\n submenu: setting.submenu\n ? (_current, done) => createPanel(setting.submenu!, done)\n : undefined,\n }));\n list = new SectionedSettingsList(\n buildRows(),\n MAX_VISIBLE_SETTINGS_ROWS,\n {\n ...getSettingsListTheme(),\n header: (text) => theme.fg(\"accent\", theme.bold(text)),\n },\n (id, value) => {\n panel.onChange?.(id, value, ctx);\n list.replaceRows(buildRows(), id);\n },\n () => close(panel.currentValue?.()),\n );\n return list;\n };\n\n const menuRows = new Map<string, MenuRow>();\n const buildRootRows = (): SectionedSettingRow[] => {\n menuRows.clear();\n const rows: SectionedSettingRow[] = [];\n for (const section of sections) {\n const settings = section.settings();\n for (const setting of settings) {\n const id = `${section.namespace}:${setting.id}`;\n menuRows.set(id, { section, setting });\n rows.push({\n id,\n section: section.title,\n label: setting.label,\n description: setting.description,\n currentValue: setting.currentValue,\n values: setting.values,\n submenu: setting.submenu\n ? (_current, done) => createPanel(setting.submenu!, done)\n : undefined,\n });\n }\n }\n return rows;\n };\n\n const container = new Container();\n const border = new DynamicBorder((text: string) => theme.fg(\"accent\", text));\n container.addChild(border);\n container.addChild(new Text(theme.fg(\"accent\", theme.bold(\"99 Extensions Settings\")), 1, 0));\n const listTheme = getSettingsListTheme();\n const settingsList = new SectionedSettingsList(\n buildRootRows(),\n MAX_VISIBLE_SETTINGS_ROWS,\n {\n ...listTheme,\n header: (text) => theme.fg(\"accent\", theme.bold(text)),\n },\n (id, value) => {\n const row = menuRows.get(id);\n if (!row?.setting || !row.section.onChange) return;\n row.section.onChange(row.setting.id, value, ctx);\n settingsList.replaceRows(buildRootRows(), id);\n },\n () => done(undefined),\n );\n container.addChild(settingsList);\n container.addChild(border);\n\n return {\n render: (width: number) => container.render(width),\n invalidate: () => container.invalidate(),\n handleInput: (data: string) => {\n settingsList.handleInput(data);\n tui.requestRender();\n },\n };\n });\n}\n\nfunction ensureCommand(pi: ExtensionAPI, registry: SharedSettingsRegistry): void {\n if (registry.commandRegistered) return;\n registry.commandRegistered = true;\n pi.registerCommand(COMMAND_NAME, {\n description: \"Configure installed @99percentpeople extensions\",\n handler: async (_args, ctx) => showSettingsMenu(ctx, registry),\n });\n}\n\nexport function registerExtensionSettings(\n pi: ExtensionAPI,\n section: ExtensionSettingsSection,\n): void {\n assertNamespace(section.namespace);\n const registry = getRegistry();\n const owner = Symbol(section.namespace);\n registry.sections.set(section.namespace, { ...section, owner });\n ensureCommand(pi, registry);\n\n pi.on(\"session_shutdown\", () => {\n const current = registry.sections.get(section.namespace);\n if (current?.owner === owner) registry.sections.delete(section.namespace);\n if (registry.sections.size === 0) {\n registry.commandRegistered = false;\n delete globalRegistry[REGISTRY_SYMBOL];\n }\n });\n}\n\nexport const SHARED_SETTINGS_COMMAND = COMMAND_NAME;\n",
8
+ "import {\n getKeybindings,\n truncateToWidth,\n visibleWidth,\n wrapTextWithAnsi,\n type Component,\n type SettingsListTheme,\n} from \"@earendil-works/pi-tui\";\n\nexport interface SectionedSettingRow {\n id: string;\n section: string;\n label: string;\n description?: string;\n currentValue: string;\n values?: string[];\n submenu?: (currentValue: string, done: (value?: string) => void) => Component;\n}\n\nexport interface SectionedSettingsListTheme extends SettingsListTheme {\n header(text: string): string;\n}\n\nexport class SectionedSettingsList implements Component {\n private selectedIndex = 0;\n private submenuComponent: Component | undefined;\n private submenuRowId: string | undefined;\n\n constructor(\n private rows: SectionedSettingRow[],\n private readonly maxVisibleRows: number,\n private readonly theme: SectionedSettingsListTheme,\n private readonly onChange: (id: string, value: string) => void,\n private readonly onCancel: () => void,\n ) {}\n\n replaceRows(rows: SectionedSettingRow[], selectedId?: string): void {\n const currentId = selectedId ?? this.rows[this.selectedIndex]?.id;\n this.rows = rows;\n const nextIndex = currentId ? rows.findIndex((row) => row.id === currentId) : -1;\n this.selectedIndex = nextIndex >= 0 ? nextIndex : Math.min(this.selectedIndex, Math.max(0, rows.length - 1));\n }\n\n updateValue(id: string, value: string): void {\n const row = this.rows.find((candidate) => candidate.id === id);\n if (row) row.currentValue = value;\n }\n\n invalidate(): void {\n this.submenuComponent?.invalidate?.();\n }\n\n render(width: number): string[] {\n if (this.submenuComponent) return this.submenuComponent.render(width);\n if (this.rows.length === 0) {\n return [this.theme.hint(\" No settings available\"), \"\", this.renderHint(width)];\n }\n\n const visibleCount = Math.max(1, this.maxVisibleRows);\n const start = Math.max(\n 0,\n Math.min(\n this.selectedIndex - Math.floor(visibleCount / 2),\n this.rows.length - visibleCount,\n ),\n );\n const end = Math.min(start + visibleCount, this.rows.length);\n const visibleRows = this.rows.slice(start, end);\n const maxLabelWidth = Math.min(\n 30,\n Math.max(...this.rows.map((row) => visibleWidth(row.label))),\n );\n const lines: string[] = [];\n let previousSection: string | undefined;\n\n for (let offset = 0; offset < visibleRows.length; offset += 1) {\n const row = visibleRows[offset]!;\n const rowIndex = start + offset;\n if (row.section !== previousSection) {\n lines.push(truncateToWidth(this.theme.header(` ${row.section}`), width));\n previousSection = row.section;\n }\n\n const selected = rowIndex === this.selectedIndex;\n const prefix = selected ? this.theme.cursor : \" \";\n const label = truncateToWidth(row.label, maxLabelWidth, \"\");\n const labelPadded = label + \" \".repeat(Math.max(0, maxLabelWidth - visibleWidth(label)));\n const separator = \" \";\n const usedWidth =\n visibleWidth(prefix) +\n maxLabelWidth +\n visibleWidth(separator);\n const valueWidth = Math.max(0, width - usedWidth - 2);\n const value = truncateToWidth(row.currentValue, valueWidth, \"\");\n lines.push(\n truncateToWidth(\n prefix +\n this.theme.label(labelPadded, selected) +\n separator +\n this.theme.value(value, selected),\n width,\n ),\n );\n }\n\n if (start > 0 || end < this.rows.length) {\n lines.push(this.theme.hint(` (${this.selectedIndex + 1}/${this.rows.length})`));\n }\n\n const selectedRow = this.rows[this.selectedIndex];\n if (selectedRow?.description) {\n lines.push(\"\");\n for (const line of wrapTextWithAnsi(selectedRow.description, Math.max(1, width - 4))) {\n lines.push(this.theme.description(` ${line}`));\n }\n }\n lines.push(\"\");\n lines.push(this.renderHint(width));\n return lines;\n }\n\n handleInput(data: string): void {\n if (this.submenuComponent) {\n this.submenuComponent.handleInput?.(data);\n return;\n }\n const keybindings = getKeybindings();\n if (keybindings.matches(data, \"tui.select.up\")) {\n if (this.rows.length > 0) {\n this.selectedIndex = this.selectedIndex === 0 ? this.rows.length - 1 : this.selectedIndex - 1;\n }\n return;\n }\n if (keybindings.matches(data, \"tui.select.down\")) {\n if (this.rows.length > 0) {\n this.selectedIndex =\n this.selectedIndex === this.rows.length - 1 ? 0 : this.selectedIndex + 1;\n }\n return;\n }\n if (keybindings.matches(data, \"tui.select.cancel\")) {\n this.onCancel();\n return;\n }\n if (keybindings.matches(data, \"tui.select.confirm\") || data === \" \") {\n const row = this.rows[this.selectedIndex];\n if (row?.submenu) {\n this.submenuRowId = row.id;\n this.submenuComponent = row.submenu(row.currentValue, (value) => {\n if (value !== undefined) {\n row.currentValue = value;\n this.onChange(row.id, value);\n }\n this.submenuComponent = undefined;\n const restoredIndex = this.rows.findIndex((candidate) => candidate.id === this.submenuRowId);\n if (restoredIndex >= 0) this.selectedIndex = restoredIndex;\n this.submenuRowId = undefined;\n });\n return;\n }\n if (!row?.values || row.values.length === 0) return;\n const currentIndex = row.values.indexOf(row.currentValue);\n const value = row.values[(currentIndex + 1) % row.values.length]!;\n row.currentValue = value;\n this.onChange(row.id, value);\n }\n }\n\n private renderHint(width: number): string {\n return truncateToWidth(\n this.theme.hint(\" ↑/↓ to navigate · Enter/Space to change · Esc to cancel\"),\n width,\n );\n }\n}\n",
6
9
  "import {\n getSharedSettingsPath,\n readSettingsNamespace,\n writeSettingsNamespace,\n} from \"@99percentpeople/pi-shared-settings\";\n\nexport type CodexSearchMode = \"auto\" | \"cached\" | \"indexed\" | \"live\";\nexport type CodexSearchContextSize = \"low\" | \"medium\" | \"high\";\nexport type CodexImageQuality = \"auto\" | \"low\" | \"medium\" | \"high\";\nexport type CodexResponseVerbosity = \"auto\" | \"low\" | \"medium\" | \"high\";\n\nexport interface CodexApiConfig {\n fastMode: boolean;\n responseVerbosity: CodexResponseVerbosity;\n searchEnabled: boolean;\n imageEnabled: boolean;\n askEnabled: boolean;\n allowOtherProviders: boolean;\n searchMode: CodexSearchMode;\n searchContextSize: CodexSearchContextSize;\n imageQuality: CodexImageQuality;\n usageStatus: boolean;\n /** Minutes between background status refreshes; 0 disables polling. */\n usagePollInterval: number;\n}\n\nexport const CODEX_API_SETTINGS_NAMESPACE = \"codex-api\";\n\nexport const DEFAULT_CODEX_API_CONFIG: CodexApiConfig = {\n fastMode: false,\n responseVerbosity: \"auto\",\n searchEnabled: true,\n imageEnabled: true,\n askEnabled: true,\n allowOtherProviders: false,\n searchMode: \"auto\",\n searchContextSize: \"medium\",\n imageQuality: \"auto\",\n usageStatus: true,\n usagePollInterval: 5,\n};\n\nfunction oneOf<T extends string>(value: unknown, values: readonly T[], fallback: T): T {\n return typeof value === \"string\" && values.includes(value as T) ? value as T : fallback;\n}\n\nexport function normalizeCodexApiConfig(value: unknown): CodexApiConfig {\n if (!value || typeof value !== \"object\") return { ...DEFAULT_CODEX_API_CONFIG };\n const input = value as Record<string, unknown>;\n return {\n fastMode: typeof input.fastMode === \"boolean\"\n ? input.fastMode\n : DEFAULT_CODEX_API_CONFIG.fastMode,\n responseVerbosity: oneOf(\n input.responseVerbosity,\n [\"auto\", \"low\", \"medium\", \"high\"],\n DEFAULT_CODEX_API_CONFIG.responseVerbosity,\n ),\n searchEnabled: typeof input.searchEnabled === \"boolean\"\n ? input.searchEnabled\n : DEFAULT_CODEX_API_CONFIG.searchEnabled,\n imageEnabled: typeof input.imageEnabled === \"boolean\"\n ? input.imageEnabled\n : DEFAULT_CODEX_API_CONFIG.imageEnabled,\n askEnabled: typeof input.askEnabled === \"boolean\"\n ? input.askEnabled\n : DEFAULT_CODEX_API_CONFIG.askEnabled,\n allowOtherProviders: typeof input.allowOtherProviders === \"boolean\"\n ? input.allowOtherProviders\n : DEFAULT_CODEX_API_CONFIG.allowOtherProviders,\n searchMode: oneOf(\n input.searchMode,\n [\"auto\", \"cached\", \"indexed\", \"live\"],\n DEFAULT_CODEX_API_CONFIG.searchMode,\n ),\n searchContextSize: oneOf(\n input.searchContextSize,\n [\"low\", \"medium\", \"high\"],\n DEFAULT_CODEX_API_CONFIG.searchContextSize,\n ),\n imageQuality: oneOf(\n input.imageQuality,\n [\"auto\", \"low\", \"medium\", \"high\"],\n DEFAULT_CODEX_API_CONFIG.imageQuality,\n ),\n usageStatus: typeof input.usageStatus === \"boolean\"\n ? input.usageStatus\n : DEFAULT_CODEX_API_CONFIG.usageStatus,\n usagePollInterval: typeof input.usagePollInterval === \"number\"\n && Number.isFinite(input.usagePollInterval)\n && input.usagePollInterval >= 0\n ? Math.min(60, Math.round(input.usagePollInterval))\n : DEFAULT_CODEX_API_CONFIG.usagePollInterval,\n };\n}\n\nexport function getCodexApiConfigPath(): string {\n return getSharedSettingsPath();\n}\n\nexport function loadCodexApiConfig(path = getCodexApiConfigPath()): CodexApiConfig {\n return readSettingsNamespace(CODEX_API_SETTINGS_NAMESPACE, normalizeCodexApiConfig, path);\n}\n\nexport function saveCodexApiConfig(\n config: CodexApiConfig,\n path = getCodexApiConfigPath(),\n): void {\n writeSettingsNamespace(CODEX_API_SETTINGS_NAMESPACE, normalizeCodexApiConfig(config), path);\n}\n",
7
10
  "import type { ExtensionContext } from \"@earendil-works/pi-coding-agent\";\n\nconst DEFAULT_CODEX_BASE_URL = \"https://chatgpt.com/backend-api\";\nconst CODEX_AUTH_CLAIM = \"https://api.openai.com/auth\";\n\nexport type CodexFetch = typeof fetch;\n\nexport interface CodexApiClientOptions {\n accessToken: string;\n accountId: string;\n modelId?: string;\n baseUrl?: string;\n headers?: Record<string, string>;\n fetch?: CodexFetch;\n}\n\nexport class CodexApiError extends Error {\n readonly status: number;\n readonly body: unknown;\n\n constructor(status: number, message: string, body?: unknown) {\n super(message);\n this.name = \"CodexApiError\";\n this.status = status;\n this.body = body;\n }\n}\n\n/** OAuth credentials are absent, malformed, or could not be refreshed. */\nexport class CodexOAuthError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"CodexOAuthError\";\n }\n}\n\nfunction headerValue(headers: Record<string, string> | undefined, name: string): string | undefined {\n const normalized = name.toLowerCase();\n return Object.entries(headers ?? {}).find(([key]) => key.toLowerCase() === normalized)?.[1];\n}\n\nexport function extractCodexAccountId(accessToken: string): string {\n try {\n const parts = accessToken.split(\".\");\n if (parts.length !== 3) throw new Error(\"not a JWT\");\n const payload = JSON.parse(Buffer.from(parts[1], \"base64url\").toString(\"utf8\")) as {\n [CODEX_AUTH_CLAIM]?: { chatgpt_account_id?: unknown };\n };\n const accountId = payload[CODEX_AUTH_CLAIM]?.chatgpt_account_id;\n if (typeof accountId !== \"string\" || accountId.length === 0) throw new Error(\"missing claim\");\n return accountId;\n } catch {\n throw new CodexOAuthError(\"Failed to extract ChatGPT account ID from Codex OAuth token\");\n }\n}\n\nexport function resolveCodexApiRoot(baseUrl = DEFAULT_CODEX_BASE_URL): string {\n const normalized = baseUrl.trim().replace(/\\/+$/, \"\");\n if (normalized.endsWith(\"/codex/responses\")) return normalized.slice(0, -\"/responses\".length);\n if (normalized.endsWith(\"/codex\")) return normalized;\n return `${normalized}/codex`;\n}\n\nfunction errorMessage(status: number, statusText: string, body: unknown): string {\n if (body && typeof body === \"object\") {\n const error = (body as { error?: unknown }).error;\n if (typeof error === \"string\" && error.trim()) return error;\n if (error && typeof error === \"object\") {\n const message = (error as { message?: unknown }).message;\n if (typeof message === \"string\" && message.trim()) return message;\n }\n const message = (body as { message?: unknown }).message;\n if (typeof message === \"string\" && message.trim()) return message;\n }\n if (typeof body === \"string\" && body.trim()) return body.trim();\n return `Codex API request failed with HTTP ${status}${statusText ? ` ${statusText}` : \"\"}`;\n}\n\nasync function responseBody(response: Response): Promise<unknown> {\n const text = await response.text();\n if (!text) return undefined;\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nfunction transportErrorCode(error: unknown): string | undefined {\n const values = [\n error,\n error && typeof error === \"object\" ? (error as { cause?: unknown }).cause : undefined,\n ];\n for (const value of values) {\n if (!value || typeof value !== \"object\") continue;\n const code = (value as { code?: unknown }).code;\n if (typeof code === \"string\" && /^[A-Z0-9_-]+$/.test(code)) return code;\n }\n return undefined;\n}\n\nfunction transportError(method: string, endpoint: string, error: unknown): CodexApiError {\n const path = new URL(endpoint).pathname;\n const code = transportErrorCode(error);\n return new CodexApiError(\n 0,\n `Codex network request failed before a response: ${method} ${path}${code ? ` (${code})` : \"\"}. `\n + \"No HTTP status was received, so a generation may or may not have reached ChatGPT. \"\n + \"Automatic retry was not attempted.\",\n );\n}\n\nexport class CodexApiClient {\n readonly rootUrl: string;\n readonly modelId?: string;\n /** ChatGPT account identity used only for in-memory account-scoped state. */\n readonly accountId: string;\n private readonly accessToken: string;\n private readonly headers: Record<string, string>;\n private readonly fetchImpl: CodexFetch;\n\n constructor(options: CodexApiClientOptions) {\n this.rootUrl = resolveCodexApiRoot(options.baseUrl);\n this.modelId = options.modelId;\n this.accessToken = options.accessToken;\n this.accountId = options.accountId;\n this.headers = options.headers ?? {};\n this.fetchImpl = options.fetch ?? fetch;\n }\n\n private endpoint(path: string): string {\n const root = new URL(`${this.rootUrl}/`);\n const endpoint = new URL(path.replace(/^\\/+/, \"\"), root);\n if (endpoint.protocol !== \"https:\" || endpoint.hostname !== \"chatgpt.com\" || endpoint.origin !== root.origin) {\n throw new Error(`Refusing to send Codex OAuth credentials to non-ChatGPT endpoint: ${endpoint.origin}`);\n }\n return endpoint.toString();\n }\n\n private async request<T>(\n method: \"GET\" | \"POST\",\n path: string,\n body: unknown,\n signal?: AbortSignal,\n ): Promise<T> {\n const headers = new Headers(this.headers);\n headers.set(\"authorization\", `Bearer ${this.accessToken}`);\n headers.set(\"chatgpt-account-id\", this.accountId);\n headers.set(\"originator\", \"pi\");\n headers.set(\"accept\", \"application/json\");\n if (body !== undefined) headers.set(\"content-type\", \"application/json\");\n\n const endpoint = this.endpoint(path);\n let response: Response;\n try {\n response = await this.fetchImpl(endpoint, {\n method,\n headers,\n body: body === undefined ? undefined : JSON.stringify(body),\n signal,\n });\n } catch (error) {\n throw transportError(method, endpoint, error);\n }\n const parsed = await responseBody(response);\n if (!response.ok) {\n throw new CodexApiError(\n response.status,\n errorMessage(response.status, response.statusText, parsed),\n parsed,\n );\n }\n return parsed as T;\n }\n\n async get<T>(path: string, signal?: AbortSignal): Promise<T> {\n return this.request<T>(\"GET\", path, undefined, signal);\n }\n\n async post<T>(path: string, body: unknown, signal?: AbortSignal): Promise<T> {\n return this.request<T>(\"POST\", path, body, signal);\n }\n}\n\nexport interface CodexApiClientContextOptions {\n /** Allow a non-Codex active model to use separately stored Codex OAuth. */\n allowOtherProviders?: boolean;\n}\n\nfunction codexOAuthUnavailable(message?: string): CodexOAuthError {\n return new CodexOAuthError(\n `Codex subscription OAuth is unavailable${message ? `: ${message}` : \"\"}. `\n + \"Run /login and sign in to openai-codex, then retry.\",\n );\n}\n\nfunction resolveCodexAuthModel(\n ctx: Pick<ExtensionContext, \"model\" | \"modelRegistry\">,\n allowOtherProviders: boolean,\n) {\n if (ctx.model?.provider === \"openai-codex\") return ctx.model;\n if (!allowOtherProviders) {\n throw new Error(\n \"Codex API tools require an active openai-codex model. \"\n + \"Enable Other providers in /99settings to use them from another model.\",\n );\n }\n const model = ctx.modelRegistry.getAll().find((candidate) =>\n candidate.provider === \"openai-codex\" && ctx.modelRegistry.isUsingOAuth(candidate)\n );\n if (!model) throw codexOAuthUnavailable();\n return model;\n}\n\nexport async function createCodexApiClient(\n ctx: Pick<ExtensionContext, \"model\" | \"modelRegistry\">,\n optionsOrFetch: CodexApiClientContextOptions | CodexFetch = {},\n fetchImpl?: CodexFetch,\n): Promise<CodexApiClient> {\n // Keep the former (ctx, fetch) call shape usable for extension consumers.\n const options = typeof optionsOrFetch === \"function\" ? {} : optionsOrFetch;\n const effectiveFetch = typeof optionsOrFetch === \"function\" ? optionsOrFetch : fetchImpl;\n const model = resolveCodexAuthModel(ctx, options.allowOtherProviders === true);\n if (!ctx.modelRegistry.isUsingOAuth(model)) {\n throw codexOAuthUnavailable(\"API-key authentication is not supported\");\n }\n const resolved = await ctx.modelRegistry.getApiKeyAndHeaders(model);\n if (!resolved.ok) throw codexOAuthUnavailable(resolved.error);\n if (!resolved.apiKey) throw codexOAuthUnavailable();\n const accountId = headerValue(resolved.headers, \"chatgpt-account-id\")\n ?? extractCodexAccountId(resolved.apiKey);\n const baseUrl = model.baseUrl ?? DEFAULT_CODEX_BASE_URL;\n const endpoint = new URL(resolveCodexApiRoot(baseUrl));\n if (endpoint.protocol !== \"https:\" || endpoint.hostname !== \"chatgpt.com\") {\n throw new Error(`Refusing to send Codex OAuth credentials to non-ChatGPT endpoint: ${endpoint.origin}`);\n }\n return new CodexApiClient({\n accessToken: resolved.apiKey,\n accountId,\n modelId: model.id,\n baseUrl,\n headers: resolved.headers,\n fetch: effectiveFetch,\n });\n}\n",
8
11
  "import type { Theme } from \"@earendil-works/pi-coding-agent\";\nimport { Text, type Component } from \"@earendil-works/pi-tui\";\n\ninterface ReusableRenderContext {\n lastComponent: Component | undefined;\n}\n\nexport function reusableText(context: ReusableRenderContext): Text {\n return context.lastComponent instanceof Text ? context.lastComponent : new Text(\"\", 0, 0);\n}\n\nexport function streamingSuffix(theme: Theme, argsComplete: boolean): string {\n return argsComplete ? \"\" : theme.fg(\"dim\", \" …\");\n}\n\nexport function textOutput(content: Array<{ type: string; text?: string }>): string {\n return content\n .filter((item): item is { type: \"text\"; text: string } =>\n item.type === \"text\" && typeof item.text === \"string\"\n )\n .map((item) => item.text)\n .join(\"\\n\");\n}\n",
@@ -14,7 +17,7 @@
14
17
  "import { watch, type FSWatcher } from \"node:fs\";\nimport { basename, dirname, join } from \"node:path\";\nimport {\n getAgentDir,\n type ExtensionAPI,\n type ExtensionContext,\n type ThemeColor,\n} from \"@earendil-works/pi-coding-agent\";\nimport {\n CodexApiError,\n CodexOAuthError,\n createCodexApiClient,\n type CodexApiClient,\n} from \"./client.ts\";\nimport type { CodexApiConfig } from \"./config.ts\";\n\nconst USAGE_PATH = \"../wham/usage\";\nconst REDEEM_CREDITS_PATH = \"../wham/rate-limit-reset-credits\";\nconst REDEEM_PATH = \"../wham/rate-limit-reset-credits/consume\";\nconst REDEEM_CONFIRM_WINDOW_MS = 10_000;\nconst REDEEM_DIALOG_TIMEOUT_MS = 30_000;\nconst REDEEM_RETRY_WINDOW_MS = 5 * 60_000;\nconst USAGE_REFRESH_INTERVAL_MS = 60_000;\n/** Re-render the reset countdown locally; network refreshes only re-sync the snapshot. */\nconst USAGE_COUNTDOWN_INTERVAL_MS = 60_000;\nconst AUTH_WATCH_DEBOUNCE_MS = 100;\n/** Cap usage/redeem requests so a stalled backend cannot wedge the status pipeline. */\nconst USAGE_FETCH_TIMEOUT_MS = 15_000;\nconst AUTH_EXPIRED_STATUS = \"Codex auth expired\";\nconst USAGE_UNAVAILABLE_STATUS = \"Codex usage unavailable\";\n\nconst STATUS_KEY = \"codex-api-usage\";\n\nexport interface CodexRateLimitWindow {\n usedPercent: number;\n windowMinutes?: number;\n resetsAt?: number;\n}\n\nexport interface CodexCreditsSnapshot {\n hasCredits: boolean;\n unlimited: boolean;\n balance?: string;\n}\n\nexport interface CodexRateLimitSnapshot {\n limitId: string;\n limitName?: string;\n primary?: CodexRateLimitWindow;\n secondary?: CodexRateLimitWindow;\n credits?: CodexCreditsSnapshot;\n /** True when the server reports the account has hit its Codex usage limit. */\n limitReached?: boolean;\n}\n\nexport interface CodexAccountSnapshot {\n planType?: string;\n email?: string;\n}\n\nexport interface CodexRedeemCredit {\n id: string;\n title?: string;\n description?: string;\n status?: string;\n /** Epoch milliseconds, when provided by the backend. */\n grantedAt?: number;\n expiresAt?: number;\n}\n\nexport interface CodexRedeemCreditsSnapshot {\n availableCount: number;\n totalEarnedCount?: number;\n credits: CodexRedeemCredit[];\n}\n\nfunction object(value: unknown): Record<string, unknown> | undefined {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? value as Record<string, unknown>\n : undefined;\n}\n\nfunction property(value: Record<string, unknown>, snake: string, camel: string): unknown {\n return value[snake] ?? value[camel];\n}\n\nfunction payloadNumber(value: unknown): number | undefined {\n const number = typeof value === \"number\" ? value : typeof value === \"string\" ? Number(value) : NaN;\n return Number.isFinite(number) ? number : undefined;\n}\n\nfunction payloadDate(value: unknown): number | undefined {\n if (typeof value === \"number\") return Number.isFinite(value) ? value : undefined;\n if (typeof value === \"string\") {\n const ms = Date.parse(value);\n return Number.isFinite(ms) ? ms : undefined;\n }\n return undefined;\n}\n\nfunction payloadString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n}\n\nfunction payloadBool(value: unknown): boolean | undefined {\n if (typeof value === \"boolean\") return value;\n if (value === 1 || value === \"1\" || (typeof value === \"string\" && value.toLowerCase() === \"true\")) return true;\n if (value === 0 || value === \"0\" || (typeof value === \"string\" && value.toLowerCase() === \"false\")) return false;\n return undefined;\n}\n\nfunction payloadWindow(value: unknown): CodexRateLimitWindow | undefined {\n const input = object(value);\n if (!input) return undefined;\n const usedPercent = payloadNumber(property(input, \"used_percent\", \"usedPercent\"));\n if (usedPercent === undefined) return undefined;\n const seconds = payloadNumber(property(input, \"limit_window_seconds\", \"limitWindowSeconds\"));\n return {\n usedPercent,\n windowMinutes: seconds !== undefined && seconds > 0 ? Math.ceil(seconds / 60) : undefined,\n resetsAt: payloadNumber(property(input, \"reset_at\", \"resetAt\")),\n };\n}\n\nfunction payloadCredits(value: unknown): CodexCreditsSnapshot | undefined {\n const input = object(value);\n if (!input) return undefined;\n const hasCredits = payloadBool(property(input, \"has_credits\", \"hasCredits\"));\n const unlimited = payloadBool(input.unlimited);\n if (hasCredits === undefined || unlimited === undefined) return undefined;\n const balance = input.balance;\n return {\n hasCredits,\n unlimited,\n balance: typeof balance === \"string\" && balance ? balance : undefined,\n };\n}\n\nfunction payloadSnapshot(\n limitId: string,\n limitName: string | undefined,\n rateLimitValue: unknown,\n creditsValue?: unknown,\n limitReached?: boolean,\n): CodexRateLimitSnapshot {\n const rateLimit = object(rateLimitValue);\n return {\n limitId,\n limitName,\n primary: payloadWindow(rateLimit && property(rateLimit, \"primary_window\", \"primaryWindow\")),\n secondary: payloadWindow(rateLimit && property(rateLimit, \"secondary_window\", \"secondaryWindow\")),\n credits: payloadCredits(creditsValue),\n limitReached,\n };\n}\n\nexport function parseCodexAccountInfo(value: unknown): CodexAccountSnapshot | undefined {\n const input = object(value);\n if (!input) return undefined;\n const planType = payloadString(property(input, \"plan_type\", \"planType\"));\n const email = payloadString(property(input, \"email\", \"email\"));\n if (planType === undefined && email === undefined) return undefined;\n return { planType, email };\n}\n\nexport function maskCodexEmail(email: string): string {\n const [local, domain] = email.split(\"@\");\n if (!domain) return \"***\";\n const head = local.length > 3 ? local.slice(0, 3) : local.slice(0, 1);\n return `${head}***@${domain}`;\n}\n\nexport function parseCodexRedeemCredits(value: unknown): CodexRedeemCreditsSnapshot | undefined {\n const input = object(value);\n if (!input) return undefined;\n const availableCount = payloadNumber(property(input, \"available_count\", \"availableCount\"));\n if (availableCount === undefined) return undefined;\n const credits: CodexRedeemCredit[] = [];\n const list = property(input, \"credits\", \"credits\");\n if (Array.isArray(list)) {\n for (const item of list) {\n const credit = object(item);\n if (!credit) continue;\n const id = payloadString(property(credit, \"id\", \"id\"));\n if (!id) continue;\n credits.push({\n id,\n title: payloadString(property(credit, \"title\", \"title\")),\n description: payloadString(property(credit, \"description\", \"description\")),\n status: payloadString(property(credit, \"status\", \"status\")),\n grantedAt: payloadDate(property(credit, \"granted_at\", \"grantedAt\")),\n expiresAt: payloadDate(property(credit, \"expires_at\", \"expiresAt\")),\n });\n }\n }\n return {\n availableCount,\n totalEarnedCount: payloadNumber(property(input, \"total_earned_count\", \"totalEarnedCount\")),\n credits,\n };\n}\n\nexport function parseCodexUsagePayload(value: unknown): CodexRateLimitSnapshot[] {\n const input = object(value);\n if (!input) return [];\n const rateLimit = property(input, \"rate_limit\", \"rateLimit\");\n const rateLimitObject = object(rateLimit);\n const limitReached = payloadBool(rateLimitObject && property(rateLimitObject, \"limit_reached\", \"limitReached\"));\n const snapshots = rateLimit !== undefined || input.credits !== undefined\n ? [payloadSnapshot(\"codex\", undefined, rateLimit, input.credits, limitReached)]\n : [];\n const additional = property(input, \"additional_rate_limits\", \"additionalRateLimits\");\n if (Array.isArray(additional)) {\n for (const value of additional) {\n const item = object(value);\n if (!item) continue;\n const id = property(item, \"metered_feature\", \"meteredFeature\");\n if (typeof id !== \"string\" || !id.trim()) continue;\n const name = property(item, \"limit_name\", \"limitName\");\n snapshots.push(payloadSnapshot(\n id.trim().toLowerCase().replace(/-/g, \"_\"),\n typeof name === \"string\" && name.trim() ? name.trim() : undefined,\n property(item, \"rate_limit\", \"rateLimit\"),\n ));\n }\n }\n return snapshots;\n}\n\nfunction normalizedHeaders(headers: Record<string, string>): Record<string, string> {\n return Object.fromEntries(Object.entries(headers).map(([key, value]) => [key.toLowerCase(), value]));\n}\n\nfunction finiteNumber(value: string | undefined): number | undefined {\n if (value === undefined) return undefined;\n const number = Number(value);\n return Number.isFinite(number) ? number : undefined;\n}\n\nfunction bool(value: string | undefined): boolean | undefined {\n if (value === \"1\" || value?.toLowerCase() === \"true\") return true;\n if (value === \"0\" || value?.toLowerCase() === \"false\") return false;\n return undefined;\n}\n\nfunction windowFor(headers: Record<string, string>, prefix: string): CodexRateLimitWindow | undefined {\n const usedPercent = finiteNumber(headers[`${prefix}-used-percent`]);\n if (usedPercent === undefined) return undefined;\n return {\n usedPercent,\n windowMinutes: finiteNumber(headers[`${prefix}-window-minutes`]),\n resetsAt: finiteNumber(headers[`${prefix}-reset-at`]),\n };\n}\n\nexport function parseCodexRateLimits(input: Record<string, string>): CodexRateLimitSnapshot[] {\n const headers = normalizedHeaders(input);\n const prefixes = new Set<string>();\n for (const name of Object.keys(headers)) {\n const match = /^x-(.+)-primary-used-percent$/.exec(name);\n if (match) prefixes.add(`x-${match[1]}`);\n }\n if (Object.keys(headers).some((name) => name.startsWith(\"x-codex-\"))) prefixes.add(\"x-codex\");\n\n return [...prefixes].sort().flatMap((prefix) => {\n const primary = windowFor(headers, `${prefix}-primary`);\n const secondary = windowFor(headers, `${prefix}-secondary`);\n const hasCredits = bool(headers[\"x-codex-credits-has-credits\"]);\n const unlimited = bool(headers[\"x-codex-credits-unlimited\"]);\n const credits = prefix === \"x-codex\" && hasCredits !== undefined && unlimited !== undefined\n ? {\n hasCredits,\n unlimited,\n balance: headers[\"x-codex-credits-balance\"],\n }\n : undefined;\n // The backend includes this header only when the account is currently rate limited.\n const limitReached = prefix === \"x-codex\"\n ? headers[\"x-codex-rate-limit-reached-type\"] !== undefined\n : undefined;\n if (!primary && !secondary && !credits && !limitReached) return [];\n return [{\n limitId: prefix.slice(2).replace(/-/g, \"_\"),\n limitName: headers[`${prefix}-limit-name`],\n primary,\n secondary,\n credits,\n limitReached,\n }];\n });\n}\n\nfunction percent(value: number): string {\n return Number.isInteger(value) ? String(value) : value.toFixed(1);\n}\n\nfunction resetText(epochSeconds: number | undefined, now = Date.now()): string | undefined {\n if (epochSeconds === undefined) return undefined;\n const remainingMs = epochSeconds * 1000 - now;\n if (remainingMs <= 0) return undefined;\n const totalMinutes = Math.ceil(remainingMs / 60_000);\n if (totalMinutes < 60) return `${totalMinutes}m`;\n if (totalMinutes < 24 * 60) {\n const hours = Math.floor(totalMinutes / 60);\n const minutes = totalMinutes % 60;\n return minutes > 0 ? `${hours}h ${minutes}m` : `${hours}h`;\n }\n const days = Math.floor(totalMinutes / (24 * 60));\n const hours = Math.floor((totalMinutes % (24 * 60)) / 60);\n return hours > 0 ? `${days}d ${hours}h` : `${days}d`;\n}\n\nconst KNOWN_WINDOWS = [\n { minutes: 5 * 60, label: \"5h\" },\n { minutes: 24 * 60, label: \"daily\" },\n { minutes: 7 * 24 * 60, label: \"weekly\" },\n { minutes: 30 * 24 * 60, label: \"monthly\" },\n { minutes: 365 * 24 * 60, label: \"annual\" },\n] as const;\n\nfunction windowLabel(window: CodexRateLimitWindow, fallback: string): string {\n if (window.windowMinutes === undefined) return fallback;\n const known = KNOWN_WINDOWS.find(({ minutes }) =>\n window.windowMinutes! >= minutes * 0.95 && window.windowMinutes! <= minutes * 1.05\n );\n return known?.label ?? fallback;\n}\n\nfunction activeWindow(window: CodexRateLimitWindow | undefined, now: number): window is CodexRateLimitWindow {\n if (!window) return false;\n const resetIsStale = window.resetsAt !== undefined && window.resetsAt * 1000 <= now;\n if (window.usedPercent === 0 && resetIsStale) return false;\n return window.usedPercent > 0\n || (window.windowMinutes !== undefined && window.windowMinutes > 0)\n || (window.resetsAt !== undefined && window.resetsAt * 1000 > now);\n}\n\ninterface LabeledWindow {\n label: string;\n window: CodexRateLimitWindow;\n}\n\nfunction activeWindows(snapshot: CodexRateLimitSnapshot, now: number): LabeledWindow[] {\n return [\n activeWindow(snapshot.primary, now)\n ? { label: windowLabel(snapshot.primary, \"usage\"), window: snapshot.primary }\n : undefined,\n activeWindow(snapshot.secondary, now)\n ? { label: windowLabel(snapshot.secondary, \"secondary usage\"), window: snapshot.secondary }\n : undefined,\n ].filter((value): value is LabeledWindow => value !== undefined);\n}\n\nconst USAGE_BAR_WIDTH = 20;\n\nfunction remainingPercent(window: CodexRateLimitWindow): number {\n return Math.min(100, Math.max(0, 100 - window.usedPercent));\n}\n\nfunction usageBar(remaining: number): string {\n const filled = Math.round(remaining / 100 * USAGE_BAR_WIDTH);\n return `[${\"█\".repeat(filled)}${\"░\".repeat(USAGE_BAR_WIDTH - filled)}]`;\n}\n\nfunction windowText(item: LabeledWindow, labelWidth: number, now: number, limitReached: boolean): string {\n const reset = resetText(item.window.resetsAt, now);\n const remaining = remainingPercent(item.window);\n const state = limitReached ? \"limit reached\" : `${percent(remaining)}% left`;\n return `${item.label.padEnd(labelWidth)} ${usageBar(limitReached ? 0 : remaining)} ${state}${reset ? ` resets in ${reset}` : \"\"}`;\n}\n\nfunction creditsText(credits: CodexCreditsSnapshot): string {\n if (credits.unlimited) return \"unlimited additional credits\";\n if (credits.hasCredits) {\n return `additional credits available${credits.balance ? ` (${credits.balance})` : \"\"}`;\n }\n return \"no additional credits\";\n}\n\nexport interface CodexUsageExtras {\n account?: CodexAccountSnapshot;\n redeemCredits?: CodexRedeemCreditsSnapshot;\n}\n\nfunction planLabel(planType: string): string {\n return planType.charAt(0).toUpperCase() + planType.slice(1);\n}\n\nfunction formatDateTime(epochMs: number): string {\n // Render in the user's local timezone with an explicit UTC offset label, so\n // the expiry reads naturally while the boundary stays unambiguous.\n const date = new Date(epochMs);\n const pad = (value: number) => String(value).padStart(2, \"0\");\n const offsetMinutes = -new Date(epochMs).getTimezoneOffset();\n const sign = offsetMinutes >= 0 ? \"+\" : \"-\";\n const abs = Math.abs(offsetMinutes);\n const offset = abs % 60 === 0\n ? `UTC${sign}${abs / 60}`\n : `UTC${sign}${Math.floor(abs / 60)}:${pad(abs % 60)}`;\n return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())} ${offset}`;\n}\n\n/** Renders redeem lines; returns an empty array when there is nothing to redeem. */\nexport function formatCodexRedeemCredits(\n redeemCredits: CodexRedeemCreditsSnapshot | undefined,\n now = Date.now(),\n): string[] {\n if (!redeemCredits || redeemCredits.availableCount <= 0) return [];\n const lines = [`rate limit redeem${redeemCredits.availableCount === 1 ? \"\" : ` ×${redeemCredits.availableCount}`}`];\n const available = redeemCredits.credits\n .filter((credit) => credit.status === undefined || credit.status === \"available\")\n // Earliest expiring first, so the most urgent card is visible at the top.\n .sort((left, right) => (left.expiresAt ?? Number.POSITIVE_INFINITY) - (right.expiresAt ?? Number.POSITIVE_INFINITY));\n for (const credit of available) {\n const details: string[] = [\"available\"];\n if (credit.expiresAt !== undefined) {\n details.push(credit.expiresAt > now ? `expires ${formatDateTime(credit.expiresAt)}` : \"expired\");\n }\n lines.push(` ${credit.title ?? \"reset credit\"} (${details.join(\", \")})`);\n }\n return lines.length > 1 ? lines : [];\n}\n\nexport function formatCodexUsage(\n snapshots: CodexRateLimitSnapshot[],\n now = Date.now(),\n extras: CodexUsageExtras = {},\n): string {\n if (snapshots.length === 0) {\n return \"No Codex usage data is available. Run /codex-usage with an active Codex subscription model to refresh it.\";\n }\n const lines = [\"Codex usage\"];\n if (extras.account) {\n const plan = extras.account.planType ? planLabel(extras.account.planType) : \"unknown plan\";\n lines.push(\"\", `account · ${plan}${extras.account.email ? ` (${maskCodexEmail(extras.account.email)})` : \"\"}`);\n }\n for (const snapshot of snapshots) {\n const name = snapshot.limitName ?? snapshot.limitId;\n const windows = activeWindows(snapshot, now);\n const labelWidth = Math.max(0, ...windows.map((window) => window.label.length));\n lines.push(\"\", name);\n if (windows.length === 0) lines.push(\" no active usage windows\");\n else lines.push(...windows.map((window) => ` ${windowText(window, labelWidth, now, snapshot.limitReached === true)}`));\n if (snapshot.credits) lines.push(` ${creditsText(snapshot.credits)}`);\n }\n const redeemLines = formatCodexRedeemCredits(extras.redeemCredits, now);\n if (redeemLines.length > 0) lines.push(\"\", ...redeemLines);\n return lines.join(\"\\n\");\n}\n\nexport function formatCodexStatus(\n snapshots: CodexRateLimitSnapshot[],\n fastMode: boolean,\n now = Date.now(),\n): string | undefined {\n const snapshot = snapshots.find((item) => item.limitId === \"codex\") ?? snapshots[0];\n if (!snapshot) return undefined;\n const shortest = activeWindows(snapshot, now)\n .sort((left, right) => {\n const leftWindow = left.window.windowMinutes ?? Number.POSITIVE_INFINITY;\n const rightWindow = right.window.windowMinutes ?? Number.POSITIVE_INFINITY;\n if (leftWindow !== rightWindow) return leftWindow - rightWindow;\n return (left.window.resetsAt ?? Number.POSITIVE_INFINITY) - (right.window.resetsAt ?? Number.POSITIVE_INFINITY);\n })[0];\n if (!shortest) return undefined;\n const remaining = remainingPercent(shortest.window);\n const reset = resetText(shortest.window.resetsAt, now);\n const usage = snapshot.limitReached === true ? \"limit reached\" : `${percent(remaining)}%`;\n return `Codex ${shortest.label} ${usage}${reset ? ` ${reset}` : \"\"}${fastMode ? \" Fast\" : \"\"}`;\n}\n\nexport function applyFastModePayload(payload: unknown, enabled: boolean): unknown {\n if (!enabled || !payload || typeof payload !== \"object\" || Array.isArray(payload)) return payload;\n return { ...(payload as Record<string, unknown>), service_tier: \"priority\" };\n}\n\nexport function applyResponseVerbosityPayload(\n payload: unknown,\n verbosity: CodexApiConfig[\"responseVerbosity\"],\n): unknown {\n if (verbosity === \"auto\" || !payload || typeof payload !== \"object\" || Array.isArray(payload)) {\n return payload;\n }\n const record = payload as Record<string, unknown>;\n const text = record.text && typeof record.text === \"object\" && !Array.isArray(record.text)\n ? record.text as Record<string, unknown>\n : {};\n return { ...record, text: { ...text, verbosity } };\n}\n\nexport function applyCodexProviderPayload(payload: unknown, config: CodexApiConfig): unknown {\n return applyResponseVerbosityPayload(\n applyFastModePayload(payload, config.fastMode),\n config.responseVerbosity,\n );\n}\n\ninterface UsageController {\n getConfig(): CodexApiConfig;\n updateConfig(config: CodexApiConfig, ctx: ExtensionContext): void;\n}\n\ninterface AccountUsageFetch {\n revision: number;\n promise: Promise<void>;\n}\n\ninterface ResolvedActiveClient {\n accountChanged: boolean;\n accountId: string;\n client: CodexApiClient;\n revision: number;\n}\n\ninterface PendingRedeem {\n redeemRequestId: string;\n creditId?: string;\n expiresAt: number;\n}\n\ninterface AccountUsageState {\n snapshots: CodexRateLimitSnapshot[];\n account?: CodexAccountSnapshot;\n redeemCredits?: CodexRedeemCreditsSnapshot;\n lastFetchAt: number;\n usageFetch?: AccountUsageFetch;\n}\n\nexport interface CodexUsageHandle {\n getSnapshots(): CodexRateLimitSnapshot[];\n refreshStatus(ctx: ExtensionContext): void;\n refreshUsage(ctx: ExtensionContext, force?: boolean): Promise<void>;\n}\n\nexport interface CodexUsageOptions {\n /** Internal/test override. Production watches Pi's agent-dir auth.json. */\n authPath?: string;\n /** Internal/test override for command-handler tests without a session lifecycle. */\n registerCommandsImmediately?: boolean;\n /** Internal/test override to keep timeout tests fast. */\n usageFetchTimeoutMs?: number;\n}\n\n/**\n * Whether a settings change should pull fresh usage data immediately:\n * toggling status visibility on, or changing cross-provider tool access,\n * both alter what the status area can show.\n */\nexport function usageRefreshNeeded(prev: CodexApiConfig, next: CodexApiConfig): boolean {\n return next.usageStatus\n && (prev.usageStatus !== next.usageStatus || prev.allowOtherProviders !== next.allowOtherProviders);\n}\n\nexport function registerCodexUsageAndFast(\n pi: ExtensionAPI,\n controller: UsageController,\n options: CodexUsageOptions = {},\n): CodexUsageHandle {\n const usageByAccount = new Map<string, AccountUsageState>();\n const pendingRedeemByAccount = new Map<string, PendingRedeem>();\n let activeAccountId: string | undefined;\n let credentialRevision = 0;\n let latestContext: ExtensionContext | undefined;\n let accountCheck: Promise<void> | undefined;\n let accountObserverActive = false;\n let authWatcher: FSWatcher | undefined;\n let authWatchDebounce: ReturnType<typeof setTimeout> | undefined;\n let pollDelay: ReturnType<typeof setTimeout> | undefined;\n let countdownInterval: ReturnType<typeof setInterval> | undefined;\n\n const codexOAuthLoginAvailable = (ctx: ExtensionContext): boolean =>\n (ctx.model?.provider === \"openai-codex\" && ctx.modelRegistry.isUsingOAuth(ctx.model))\n || (ctx.modelRegistry.getAll?.() ?? []).some((candidate) =>\n candidate.provider === \"openai-codex\" && ctx.modelRegistry.isUsingOAuth(candidate)\n );\n\n const usageEnabled = (ctx: ExtensionContext): boolean => {\n const config = controller.getConfig();\n return config.usageStatus\n && (ctx.model?.provider === \"openai-codex\" || config.allowOtherProviders);\n };\n\n const usageFetchSignal = (): AbortSignal =>\n AbortSignal.timeout(options.usageFetchTimeoutMs ?? USAGE_FETCH_TIMEOUT_MS);\n\n const setStatus = (\n ctx: ExtensionContext,\n value: string | undefined,\n color: ThemeColor = \"muted\",\n ): void => {\n ctx.ui.setStatus(STATUS_KEY, value && ctx.ui.theme\n ? ctx.ui.theme.fg(color, value)\n : value);\n };\n\n const stopCountdown = (): void => {\n if (countdownInterval) {\n clearInterval(countdownInterval);\n countdownInterval = undefined;\n }\n };\n\n const resetAccountState = (): void => {\n stopCountdown();\n credentialRevision += 1;\n activeAccountId = undefined;\n usageByAccount.clear();\n pendingRedeemByAccount.clear();\n };\n\n /** Missing OAuth is an inactive state, not an expired-credential error. */\n const clearIfCodexOAuthUnavailable = (ctx: ExtensionContext): boolean => {\n if (codexOAuthLoginAvailable(ctx)) return false;\n if (\n activeAccountId !== undefined\n || usageByAccount.size > 0\n || pendingRedeemByAccount.size > 0\n || accountCheck !== undefined\n ) {\n resetAccountState();\n }\n setStatus(ctx, undefined);\n return true;\n };\n\n const currentState = (): AccountUsageState | undefined =>\n activeAccountId ? usageByAccount.get(activeAccountId) : undefined;\n\n const hasFutureReset = (state: AccountUsageState | undefined, now = Date.now()): boolean =>\n state?.snapshots.some((snapshot) => [snapshot.primary, snapshot.secondary].some((window) =>\n window?.resetsAt !== undefined && window.resetsAt * 1000 > now\n )) === true;\n\n const syncCountdown = (ctx: ExtensionContext): void => {\n if (!usageEnabled(ctx) || !hasFutureReset(currentState())) {\n stopCountdown();\n return;\n }\n if (countdownInterval) return;\n countdownInterval = setInterval(() => {\n const active = latestContext;\n if (!active) {\n stopCountdown();\n return;\n }\n // Recompute from the absolute reset timestamp. This intentionally does\n // not fetch; a normal refresh replaces the snapshot and re-syncs it.\n refreshStatus(active);\n }, USAGE_COUNTDOWN_INTERVAL_MS);\n countdownInterval.unref?.();\n };\n\n function refreshStatus(ctx: ExtensionContext): void {\n latestContext = ctx;\n if (controller.getConfig().usageStatus) startPolling(ctx);\n else stopPolling();\n if (clearIfCodexOAuthUnavailable(ctx)) return;\n if (!usageEnabled(ctx)) {\n stopCountdown();\n setStatus(ctx, undefined);\n return;\n }\n setStatus(ctx, formatCodexStatus(currentState()?.snapshots ?? [], controller.getConfig().fastMode));\n syncCountdown(ctx);\n }\n\n const showSyncingStatus = (ctx: ExtensionContext): void => {\n latestContext = ctx;\n if (clearIfCodexOAuthUnavailable(ctx)) return;\n stopCountdown();\n setStatus(ctx, usageEnabled(ctx) ? \"Codex syncing…\" : undefined);\n };\n\n /**\n * Terminal status for a failed refresh: keep the last known usage during\n * transient failures, but surface an actionable error when the stored OAuth\n * token is rejected outright (the snapshot would be stale anyway).\n */\n const showErrorStatus = (ctx: ExtensionContext, error: unknown): void => {\n latestContext = ctx;\n if (clearIfCodexOAuthUnavailable(ctx)) return;\n if (!usageEnabled(ctx)) {\n stopCountdown();\n setStatus(ctx, undefined);\n return;\n }\n const isAuthError = error instanceof CodexOAuthError\n || (error instanceof CodexApiError && (error.status === 401 || error.status === 403));\n const snapshots = currentState()?.snapshots;\n if (!isAuthError && snapshots && snapshots.length > 0) {\n setStatus(ctx, formatCodexStatus(snapshots, controller.getConfig().fastMode));\n syncCountdown(ctx);\n return;\n }\n stopCountdown();\n setStatus(\n ctx,\n isAuthError ? AUTH_EXPIRED_STATUS : USAGE_UNAVAILABLE_STATUS,\n isAuthError ? \"error\" : \"warning\",\n );\n };\n\n const invalidateAuthState = (ctx: ExtensionContext, action: \"set\" | \"remove\"): void => {\n resetAccountState();\n if (action === \"set\") showSyncingStatus(ctx);\n else setStatus(ctx, undefined);\n };\n\n const activateAccount = (accountId: string, ctx: ExtensionContext): boolean => {\n if (activeAccountId === accountId) return false;\n credentialRevision += 1;\n activeAccountId = accountId;\n usageByAccount.clear();\n pendingRedeemByAccount.clear();\n showSyncingStatus(ctx);\n return true;\n };\n\n const accountState = (accountId: string): AccountUsageState => {\n let state = usageByAccount.get(accountId);\n if (!state) {\n state = { snapshots: [], lastFetchAt: 0 };\n usageByAccount.set(accountId, state);\n }\n return state;\n };\n\n const resolveActiveClient = async (\n ctx: ExtensionContext,\n config: CodexApiConfig,\n ): Promise<ResolvedActiveClient> => {\n for (let attempt = 0; attempt < 2; attempt += 1) {\n const revision = credentialRevision;\n const client = await createCodexApiClient(ctx, {\n allowOtherProviders: config.allowOtherProviders,\n });\n if (revision !== credentialRevision) continue;\n const accountChanged = activateAccount(client.accountId, ctx);\n return {\n accountChanged,\n accountId: client.accountId,\n client,\n revision: credentialRevision,\n };\n }\n throw new Error(\"Codex account changed while resolving subscription usage; retry the refresh\");\n };\n\n const isCurrentResolution = (\n ctx: ExtensionContext,\n resolved: ResolvedActiveClient,\n ): boolean => latestContext === ctx\n && activeAccountId === resolved.accountId\n && credentialRevision === resolved.revision;\n\n const refreshResolvedUsage = async (\n ctx: ExtensionContext,\n resolved: ResolvedActiveClient,\n force = false,\n ): Promise<void> => {\n const state = accountState(resolved.accountId);\n const now = Date.now();\n if (\n !force\n && !resolved.accountChanged\n && state.snapshots.length > 0\n && now - state.lastFetchAt < USAGE_REFRESH_INTERVAL_MS\n ) {\n if (isCurrentResolution(ctx, resolved)) refreshStatus(ctx);\n return;\n }\n\n let usageFetch = state.usageFetch;\n if (!usageFetch || usageFetch.revision !== resolved.revision) {\n const operation = (async () => {\n // Timeout: a stalled request must settle so the transient syncing\n // state is always replaced by a terminal status.\n const payload = await resolved.client.get<unknown>(\n USAGE_PATH,\n usageFetchSignal(),\n );\n const parsed = parseCodexUsagePayload(payload);\n if (parsed.length === 0) throw new Error(\"Codex usage API returned no usage data\");\n state.snapshots = parsed;\n state.account = parseCodexAccountInfo(payload);\n state.lastFetchAt = Date.now();\n })();\n let nextFetch: AccountUsageFetch;\n const pending = operation.finally(() => {\n if (state.usageFetch === nextFetch) state.usageFetch = undefined;\n });\n nextFetch = { revision: resolved.revision, promise: pending };\n state.usageFetch = nextFetch;\n usageFetch = nextFetch;\n }\n\n await usageFetch.promise;\n if (isCurrentResolution(ctx, resolved)) refreshStatus(ctx);\n };\n\n const refreshUsage = async (ctx: ExtensionContext, force = false): Promise<void> => {\n latestContext = ctx;\n const invocationRevision = credentialRevision;\n const config = controller.getConfig();\n if (ctx.model?.provider !== \"openai-codex\" && !config.allowOtherProviders) {\n const error = new Error(\n \"An active openai-codex model is required to refresh subscription usage. \"\n + \"Enable Other providers in /99settings to use the logged-in Codex subscription from another model.\",\n );\n showErrorStatus(ctx, error);\n throw error;\n }\n\n let resolved: ResolvedActiveClient | undefined;\n try {\n resolved = await resolveActiveClient(ctx, config);\n await refreshResolvedUsage(ctx, resolved, force);\n } catch (error) {\n // Ignore stale completions from an old account/context/session. A current\n // failure always replaces syncing with a terminal status.\n const isCurrent = resolved\n ? isCurrentResolution(ctx, resolved)\n : latestContext === ctx && credentialRevision === invocationRevision;\n if (isCurrent) showErrorStatus(ctx, error);\n throw error;\n }\n };\n\n const refreshInBackground = (ctx: ExtensionContext, force = false) => {\n latestContext = ctx;\n // refreshUsage reports the terminal status itself on failure.\n void refreshUsage(ctx, force).catch(() => {});\n };\n\n const stopPolling = (): void => {\n if (pollDelay) {\n clearTimeout(pollDelay);\n pollDelay = undefined;\n }\n };\n\n /**\n * Chain a background poll with setTimeout (not setInterval) so the interval\n * is re-read from the latest config on every round: changing the setting\n * takes effect without restarting anything.\n */\n const scheduleNextPoll = (): void => {\n if (pollDelay) return;\n const config = controller.getConfig();\n if (!config.usageStatus) return;\n const intervalMinutes = Math.round(config.usagePollInterval);\n if (intervalMinutes <= 0) return;\n pollDelay = setTimeout(() => {\n pollDelay = undefined;\n const active = latestContext;\n if (active) {\n // Reconcile auth before polling so logout cannot revive an expired\n // status through a credential-resolution failure.\n const oauthAvailable = !clearIfCodexOAuthUnavailable(active);\n const state = currentState();\n if (oauthAvailable && usageEnabled(active)) {\n const intervalMs = intervalMinutes * 60_000;\n if (!state || state.snapshots.length === 0 || Date.now() - state.lastFetchAt >= intervalMs) {\n void refreshUsage(active).catch(() => {});\n }\n }\n }\n scheduleNextPoll();\n }, intervalMinutes * 60_000);\n pollDelay.unref?.();\n };\n\n const startPolling = (ctx: ExtensionContext): void => {\n latestContext = ctx;\n scheduleNextPoll();\n };\n\n const codexOAuthAvailable = (ctx: ExtensionContext, config: CodexApiConfig): boolean => {\n const model = ctx.model?.provider === \"openai-codex\"\n ? ctx.model\n : config.allowOtherProviders\n ? ctx.modelRegistry.getAll().find((candidate) =>\n candidate.provider === \"openai-codex\" && ctx.modelRegistry.isUsingOAuth(candidate)\n )\n : undefined;\n return !!model && ctx.modelRegistry.isUsingOAuth(model);\n };\n\n const checkCurrentAccount = (\n ctx: ExtensionContext,\n forceUsage = false,\n ): Promise<void> => {\n latestContext = ctx;\n if (accountCheck) return accountCheck;\n const operation = (async () => {\n const config = controller.getConfig();\n const usageAvailable = codexOAuthAvailable(ctx, config);\n if (!codexOAuthLoginAvailable(ctx)) {\n if (activeAccountId !== undefined) invalidateAuthState(ctx, \"remove\");\n else setStatus(ctx, undefined);\n return;\n }\n let client: CodexApiClient;\n try {\n // Command visibility follows login state, not the active model or the\n // cross-provider tool setting. The latter still controls execution.\n client = await createCodexApiClient(ctx, {\n allowOtherProviders: true,\n });\n } catch (error) {\n // Credential-resolution failures are terminal too. Suppress a stale\n // completion after a context switch or session shutdown.\n if (latestContext === ctx) showErrorStatus(ctx, error);\n return;\n }\n if (!accountObserverActive || latestContext !== ctx) return;\n registerCodexCommands(ctx);\n const accountChanged = activateAccount(client.accountId, ctx);\n const resolved: ResolvedActiveClient = {\n accountChanged,\n accountId: client.accountId,\n client,\n revision: credentialRevision,\n };\n if (\n usageAvailable\n && config.usageStatus\n && (forceUsage || accountChanged || (currentState()?.snapshots.length ?? 0) === 0)\n ) {\n try {\n // Reuse the client resolved above. Resolving OAuth a second time after\n // showing syncing would create an unbounded pre-fetch stall window.\n await refreshResolvedUsage(ctx, resolved, true);\n } catch (error) {\n if (isCurrentResolution(ctx, resolved)) showErrorStatus(ctx, error);\n }\n } else {\n refreshStatus(ctx);\n }\n })();\n const pending = operation.finally(() => {\n if (accountCheck === pending) accountCheck = undefined;\n });\n accountCheck = pending;\n return pending;\n };\n\n const startAccountObserver = (ctx: ExtensionContext): void => {\n latestContext = ctx;\n accountObserverActive = true;\n if (authWatcher) return;\n const authPath = options.authPath ?? join(getAgentDir(), \"auth.json\");\n const authFilename = basename(authPath);\n try {\n const watcher = watch(dirname(authPath), { persistent: false }, (_event, filename) => {\n if (filename !== null && filename.toString() !== authFilename) return;\n if (authWatchDebounce) clearTimeout(authWatchDebounce);\n authWatchDebounce = setTimeout(() => {\n authWatchDebounce = undefined;\n const activeContext = latestContext;\n if (!activeContext) return;\n void (async () => {\n await activeContext.modelRegistry.refresh();\n if (latestContext !== activeContext) return;\n await checkCurrentAccount(activeContext);\n })().catch(() => {});\n }, AUTH_WATCH_DEBOUNCE_MS);\n authWatchDebounce.unref?.();\n });\n watcher.on(\"error\", () => {\n watcher.close();\n if (authWatcher === watcher) authWatcher = undefined;\n });\n authWatcher = watcher;\n } catch {\n // The normal agent directory exists; natural usage events remain a fallback.\n }\n };\n\n const storeHeaderSnapshots = async (\n ctx: ExtensionContext,\n snapshots: CodexRateLimitSnapshot[],\n ): Promise<void> => {\n const resolved = await resolveActiveClient(ctx, controller.getConfig());\n const state = accountState(resolved.accountId);\n state.snapshots = snapshots;\n state.lastFetchAt = Date.now();\n if (activeAccountId === resolved.accountId && credentialRevision === resolved.revision) {\n refreshStatus(ctx);\n }\n };\n\n const codexUsageCommand: Parameters<ExtensionAPI[\"registerCommand\"]>[1] = {\n description: \"Refresh and show Codex subscription usage, plan, and rate limit redeems\",\n handler: async (_args, ctx) => {\n try {\n await refreshUsage(ctx, true);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n const snapshots = currentState()?.snapshots ?? [];\n if (snapshots.length === 0) {\n ctx.ui.notify(`Failed to refresh Codex usage: ${message}`, \"error\");\n return;\n }\n ctx.ui.notify(`Failed to refresh Codex usage; showing the latest snapshot: ${message}`, \"warning\");\n }\n try {\n const resolved = await resolveActiveClient(ctx, controller.getConfig());\n const state = accountState(resolved.accountId);\n const payload = await resolved.client.get<unknown>(\n REDEEM_CREDITS_PATH,\n usageFetchSignal(),\n );\n state.redeemCredits = parseCodexRedeemCredits(payload);\n } catch {\n // Redeem details are best-effort; the base usage message still shows.\n }\n const state = currentState();\n const message = formatCodexUsage(state?.snapshots ?? [], Date.now(), {\n account: state?.account,\n redeemCredits: state?.redeemCredits,\n });\n // Notify renders in dim; wrap the message in muted so the usage block is\n // slightly more visible. The embedded ANSI codes survive the notify path.\n ctx.ui.notify(ctx.ui.theme ? ctx.ui.theme.fg(\"muted\", message) : message, \"info\");\n },\n };\n\n const codexRedeemCommand: Parameters<ExtensionAPI[\"registerCommand\"]>[1] = {\n description: \"Preview and redeem an earned Codex rate limit reset credit (confirmation required)\",\n handler: async (_args, ctx) => {\n const config = controller.getConfig();\n if (ctx.model?.provider !== \"openai-codex\" && !config.allowOtherProviders) {\n ctx.ui.notify(\n \"An active openai-codex model is required to redeem a rate limit reset. \"\n + \"Enable Other providers in /99settings to use the logged-in Codex subscription from another model.\",\n \"error\",\n );\n return;\n }\n let resolved: Awaited<ReturnType<typeof resolveActiveClient>>;\n try {\n resolved = await resolveActiveClient(ctx, config);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n ctx.ui.notify(`Failed to resolve the Codex subscription: ${message}`, \"error\");\n return;\n }\n const state = accountState(resolved.accountId);\n try {\n const payload = await resolved.client.get<unknown>(\n REDEEM_CREDITS_PATH,\n usageFetchSignal(),\n );\n const redeemCredits = parseCodexRedeemCredits(payload);\n state.redeemCredits = redeemCredits;\n const now = Date.now();\n if (!redeemCredits || redeemCredits.availableCount <= 0) {\n pendingRedeemByAccount.delete(resolved.accountId);\n ctx.ui.notify(\"No Codex rate limit reset credits are available to redeem.\", \"info\");\n return;\n }\n const availableCredits = [...redeemCredits.credits]\n .filter((item) => item.status === undefined || item.status === \"available\")\n // Prefer the card that expires soonest, so near-expiry credits are used first.\n .sort((left, right) => (left.expiresAt ?? Number.POSITIVE_INFINITY) - (right.expiresAt ?? Number.POSITIVE_INFINITY));\n const credit = availableCredits[0] ?? redeemCredits.credits[0];\n const expiryOf = (item: CodexRedeemCredit | undefined): string =>\n item?.expiresAt !== undefined && item.expiresAt > now\n ? ` (expires ${formatDateTime(item.expiresAt)})`\n : \"\";\n let selected = credit;\n\n if (ctx.hasUI) {\n // 1) Pick a card when more than one is available.\n if (availableCredits.length > 1) {\n const options = availableCredits.map((item) => `${item.title ?? \"reset credit\"}${expiryOf(item)}`);\n const choice = await ctx.ui.select(\"Select a reset credit to redeem\", options, {\n timeout: REDEEM_DIALOG_TIMEOUT_MS,\n });\n if (choice === undefined) {\n pendingRedeemByAccount.delete(resolved.accountId);\n ctx.ui.notify(\"Redeem cancelled — no reset credit was consumed.\", \"info\");\n return;\n }\n const index = options.indexOf(choice);\n selected = availableCredits[index] ?? credit;\n }\n // 2) Confirm the selection before redeeming. \"No\" is listed first so\n // a stray Enter on the default-selected row cancels instead of redeeming.\n const confirmOptions = [\"No\", \"Yes\"];\n const choice = await ctx.ui.select(\n `Redeem ${selected?.title ?? \"Full reset\"}${expiryOf(selected)}?`,\n confirmOptions,\n { timeout: REDEEM_DIALOG_TIMEOUT_MS },\n );\n if (choice !== confirmOptions[1]) {\n pendingRedeemByAccount.delete(resolved.accountId);\n ctx.ui.notify(\"Redeem cancelled — no reset credit was consumed.\", \"info\");\n return;\n }\n }\n\n // Reuse an in-flight redeem_request_id while it is still valid, so a\n // retry after a network failure cannot consume a second credit.\n const targetId = selected?.id;\n const existing = pendingRedeemByAccount.get(resolved.accountId);\n const pending = existing && existing.expiresAt > now && existing.creditId === targetId\n ? existing\n : {\n redeemRequestId: crypto.randomUUID(),\n creditId: targetId,\n expiresAt: now + REDEEM_CONFIRM_WINDOW_MS,\n };\n pendingRedeemByAccount.set(resolved.accountId, pending);\n\n if (!ctx.hasUI && (!existing || existing.expiresAt <= now || existing.creditId !== targetId)) {\n // No dialog UI: preview now and require a second run within the window.\n ctx.ui.notify(\n `${redeemCredits.availableCount} rate limit reset redeem available: ${credit?.title ?? \"Full reset\"}${expiryOf(credit)}. `\n + `Run /codex-redeem again within ${REDEEM_CONFIRM_WINDOW_MS / 1000}s to confirm.`,\n \"warning\",\n );\n return;\n }\n\n try {\n await resolved.client.post<unknown>(REDEEM_PATH, {\n redeem_request_id: pending.redeemRequestId,\n credit_id: pending.creditId,\n }, usageFetchSignal());\n pendingRedeemByAccount.delete(resolved.accountId);\n try {\n await refreshUsage(ctx, true);\n } catch {\n // The redeem succeeded; usage refresh is best-effort.\n }\n const status = formatCodexStatus(currentState()?.snapshots ?? [], config.fastMode);\n ctx.ui.notify(\n `✓ Rate limit reset redeemed — usage reset.${status ? `\\n${status}` : \"\"}`,\n \"info\",\n );\n } catch (error) {\n // Keep the redeem_request_id so a retry stays idempotent.\n pending.expiresAt = Date.now() + REDEEM_RETRY_WINDOW_MS;\n pendingRedeemByAccount.set(resolved.accountId, pending);\n const message = error instanceof Error ? error.message : String(error);\n ctx.ui.notify(\n `Failed to redeem a rate limit reset: ${message}. `\n + \"Run /codex-redeem again to retry with the same request ID.\",\n \"error\",\n );\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n ctx.ui.notify(`Failed to redeem a rate limit reset: ${message}`, \"error\");\n }\n },\n };\n\n let commandsRegistered = false;\n const registerCodexCommands = (ctx?: ExtensionContext): void => {\n if (commandsRegistered) return;\n commandsRegistered = true;\n pi.registerCommand(\"codex-usage\", codexUsageCommand);\n pi.registerCommand(\"codex-redeem\", codexRedeemCommand);\n\n // Refresh interactive autocomplete when login happens after startup.\n ctx?.ui.addAutocompleteProvider?.((current) => current);\n };\n\n if (options.registerCommandsImmediately) registerCodexCommands();\n\n pi.on(\"before_provider_request\", (event, ctx) => {\n if (ctx.model?.provider !== \"openai-codex\") return;\n const config = controller.getConfig();\n if (config.usageStatus) refreshInBackground(ctx);\n return applyCodexProviderPayload(event.payload, config);\n });\n\n pi.on(\"after_provider_response\", (event, ctx) => {\n if (ctx.model?.provider !== \"openai-codex\" || !controller.getConfig().usageStatus) return;\n const parsed = parseCodexRateLimits(event.headers);\n if (parsed.length > 0) {\n void storeHeaderSnapshots(ctx, parsed).catch(() => refreshInBackground(ctx));\n return;\n }\n refreshInBackground(ctx);\n });\n\n pi.on(\"model_select\", async (_event, ctx) => {\n startAccountObserver(ctx);\n await checkCurrentAccount(ctx, true).catch(() => {});\n startPolling(ctx);\n });\n pi.on(\"session_start\", async (_event, ctx) => {\n startAccountObserver(ctx);\n await checkCurrentAccount(ctx, true).catch(() => {});\n startPolling(ctx);\n });\n pi.on(\"session_shutdown\", (_event, ctx) => {\n stopPolling();\n stopCountdown();\n credentialRevision += 1;\n activeAccountId = undefined;\n usageByAccount.clear();\n pendingRedeemByAccount.clear();\n latestContext = undefined;\n accountObserverActive = false;\n if (authWatchDebounce) clearTimeout(authWatchDebounce);\n authWatchDebounce = undefined;\n authWatcher?.close();\n authWatcher = undefined;\n accountCheck = undefined;\n setStatus(ctx, undefined);\n });\n\n return {\n getSnapshots: () => structuredClone(currentState()?.snapshots ?? []),\n refreshStatus,\n refreshUsage,\n };\n}\n",
15
18
  "import type { ExtensionAPI } from \"@earendil-works/pi-coding-agent\";\nimport { registerCodexAskTool } from \"./ask.ts\";\nimport {\n loadCodexApiConfig,\n saveCodexApiConfig,\n type CodexApiConfig,\n} from \"./config.ts\";\nimport {\n applyCodexToolFeatureChanges,\n disableUnavailableCodexTools,\n type CodexToolFeature,\n} from \"./features.ts\";\nimport { registerCodexImageTool } from \"./image.ts\";\nimport { registerCodexSearchTool } from \"./search.ts\";\nimport { registerCodexApiSettings } from \"./settings.ts\";\nimport {\n registerCodexUsageAndFast,\n usageRefreshNeeded,\n type CodexUsageHandle,\n} from \"./usage.ts\";\n\nconst CODEX_TOOL_FEATURES: readonly CodexToolFeature<CodexApiConfig>[] = [\n {\n toolName: \"codex_search\",\n isEnabled: (config) => config.searchEnabled !== false,\n },\n {\n toolName: \"codex_image\",\n isEnabled: (config) => config.imageEnabled !== false,\n },\n {\n toolName: \"codex_ask\",\n isEnabled: (config) => config.askEnabled !== false,\n },\n];\n\nexport default function (pi: ExtensionAPI) {\n let config = loadCodexApiConfig();\n let usageHandle: CodexUsageHandle | undefined;\n\n pi.on(\"session_start\", () => {\n disableUnavailableCodexTools(pi, config, CODEX_TOOL_FEATURES);\n });\n\n const controller = {\n getConfig: () => config,\n updateConfig: (next: CodexApiConfig, ctx: Parameters<CodexUsageHandle[\"refreshStatus\"]>[0]) => {\n const prev = config;\n config = next;\n try {\n saveCodexApiConfig(config);\n } catch (error) {\n ctx.ui.notify(\n `Failed to save Codex API settings: ${error instanceof Error ? error.message : String(error)}`,\n \"error\",\n );\n }\n applyCodexToolFeatureChanges(pi, prev, next, CODEX_TOOL_FEATURES);\n usageHandle?.refreshStatus(ctx);\n // Toggling visibility or cross-provider access changes what the status\n // area may show; pull fresh data immediately instead of waiting for the\n // next request event (which may never come under other providers).\n if (usageRefreshNeeded(prev, next)) {\n void usageHandle?.refreshUsage(ctx, true).catch(() => {});\n }\n },\n };\n\n usageHandle = registerCodexUsageAndFast(pi, controller);\n const refreshUsageInBackground = (ctx: Parameters<CodexUsageHandle[\"refreshUsage\"]>[0]) => {\n if (!config.usageStatus) return;\n void usageHandle?.refreshUsage(ctx).catch(() => {});\n };\n registerCodexAskTool(pi, () => config, refreshUsageInBackground);\n registerCodexImageTool(pi, () => config);\n registerCodexSearchTool(pi, () => config, refreshUsageInBackground);\n registerCodexApiSettings(pi, controller);\n}\n\nexport {\n CodexApiClient,\n CodexApiError,\n CodexOAuthError,\n createCodexApiClient,\n extractCodexAccountId,\n resolveCodexApiRoot,\n type CodexApiClientContextOptions,\n type CodexApiClientOptions,\n type CodexFetch,\n} from \"./client.ts\";\nexport {\n completeCodexAsk,\n registerCodexAskTool,\n resolveCodexAskModel,\n resolveOfficialCodexAskModel,\n type CodexAskDetails,\n type CodexAskPhase,\n type CodexAskReasoning,\n type CodexTextModel,\n} from \"./ask.ts\";\nexport {\n CODEX_API_SETTINGS_NAMESPACE,\n DEFAULT_CODEX_API_CONFIG,\n getCodexApiConfigPath,\n loadCodexApiConfig,\n normalizeCodexApiConfig,\n saveCodexApiConfig,\n type CodexApiConfig,\n type CodexImageQuality,\n type CodexResponseVerbosity,\n type CodexSearchContextSize,\n type CodexSearchMode,\n} from \"./config.ts\";\nexport {\n applyCodexToolFeatureChanges,\n disableUnavailableCodexTools,\n type CodexToolFeature,\n} from \"./features.ts\";\nexport {\n normalizeCodexImageSize,\n registerCodexImageTool,\n type CodexImageDetails,\n} from \"./image.ts\";\nexport {\n cleanCodexSearchOutput,\n createCodexSearchDisplay,\n formatCodexSearchDisplay,\n type CodexSearchDisplay,\n type CodexSearchDocument,\n type CodexSearchDisplayLine,\n type CodexSearchDisplayLineRole,\n type CodexSearchLookup,\n type CodexSearchLookupSection,\n type CodexSearchLookupType,\n type CodexSearchSource,\n} from \"./search-display.ts\";\nexport {\n registerCodexSearchTool,\n resolveSearchMode,\n SearchCommandsSchema,\n type CodexEffectiveSearchMode,\n type CodexSearchDetails,\n} from \"./search.ts\";\nexport {\n codexFeatureSummary,\n CONTEXT_SIZE_LABELS,\n createCodexFeaturesPanel,\n IMAGE_QUALITY_LABELS,\n registerCodexApiSettings,\n RESPONSE_VERBOSITY_LABELS,\n SEARCH_MODE_LABELS,\n type CodexSettingsController,\n} from \"./settings.ts\";\nexport {\n applyCodexProviderPayload,\n applyFastModePayload,\n applyResponseVerbosityPayload,\n formatCodexStatus,\n formatCodexUsage,\n formatCodexRedeemCredits,\n maskCodexEmail,\n parseCodexAccountInfo,\n parseCodexRateLimits,\n parseCodexRedeemCredits,\n parseCodexUsagePayload,\n registerCodexUsageAndFast,\n usageRefreshNeeded,\n type CodexAccountSnapshot,\n type CodexCreditsSnapshot,\n type CodexRateLimitSnapshot,\n type CodexRateLimitWindow,\n type CodexRedeemCredit,\n type CodexRedeemCreditsSnapshot,\n type CodexUsageExtras,\n type CodexUsageHandle,\n type CodexUsageOptions,\n} from \"./usage.ts\";\n"
16
19
  ],
17
- "mappings": "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",
18
- "debugId": "3E14AD0646C6D70D64756E2164756E21",
20
+ "mappings": "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",
21
+ "debugId": "36E9115A6810CBD164756E2164756E21",
19
22
  "names": []
20
23
  }