pi-background-tasks 2.5.0 → 2.6.0
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/BACKGROUND-TASKS-INSTRUCTIONS.md +1 -1
- package/README.md +70 -25
- package/TESTING.md +42 -2
- package/TEST_PLAN.md +7 -4
- package/dist/extensions/anthropic-attribution-child.js +4 -0
- package/dist/extensions/anthropic-attribution-child.js.map +1 -0
- package/dist/extensions/anthropic-attribution.js +107 -0
- package/dist/extensions/anthropic-attribution.js.map +1 -0
- package/dist/extensions/background-tasks.js +2 -0
- package/dist/extensions/background-tasks.js.map +1 -0
- package/dist/extensions/delegate-child.js +2 -0
- package/dist/extensions/delegate-child.js.map +1 -0
- package/dist/extensions/fusion-child.js +2 -0
- package/dist/extensions/fusion-child.js.map +1 -0
- package/dist/package.json +5 -0
- package/dist/src/core/anthropic-attribution-path.js +24 -0
- package/dist/src/core/anthropic-attribution-path.js.map +1 -0
- package/dist/src/core/anthropic-attribution.js +2247 -0
- package/dist/src/core/anthropic-attribution.js.map +1 -0
- package/dist/src/core/attested-pi-contract.js +5 -0
- package/dist/src/core/attested-pi-contract.js.map +1 -0
- package/dist/src/core/attested-pi-run.js +749 -0
- package/dist/src/core/attested-pi-run.js.map +1 -0
- package/dist/src/core/canonical-json.js +19 -0
- package/dist/src/core/canonical-json.js.map +1 -0
- package/dist/src/core/common.js +787 -0
- package/dist/src/core/common.js.map +1 -0
- package/dist/src/core/config.js +78 -0
- package/dist/src/core/config.js.map +1 -0
- package/dist/src/core/context/parent-snapshot.js +75 -0
- package/dist/src/core/context/parent-snapshot.js.map +1 -0
- package/dist/src/core/context/token-budget.js +631 -0
- package/dist/src/core/context/token-budget.js.map +1 -0
- package/dist/src/core/context/visible-conversation-v2.js +390 -0
- package/dist/src/core/context/visible-conversation-v2.js.map +1 -0
- package/dist/src/core/delegate/artifacts.js +357 -0
- package/dist/src/core/delegate/artifacts.js.map +1 -0
- package/dist/src/core/delegate/budget.js +266 -0
- package/dist/src/core/delegate/budget.js.map +1 -0
- package/dist/src/core/delegate/facade-contract.js +7 -0
- package/dist/src/core/delegate/facade-contract.js.map +1 -0
- package/dist/src/core/delegate/hook-contract-evidence.json +18 -0
- package/dist/src/core/delegate/hook-contract.js +124 -0
- package/dist/src/core/delegate/hook-contract.js.map +1 -0
- package/dist/src/core/delegate/launch.js +366 -0
- package/dist/src/core/delegate/launch.js.map +1 -0
- package/dist/src/core/delegate/result-package.js +293 -0
- package/dist/src/core/delegate/result-package.js.map +1 -0
- package/dist/src/core/delegate/runner.js +398 -0
- package/dist/src/core/delegate/runner.js.map +1 -0
- package/dist/src/core/delegate/seed.js +334 -0
- package/dist/src/core/delegate/seed.js.map +1 -0
- package/dist/src/core/delegate/types.js +103 -0
- package/dist/src/core/delegate/types.js.map +1 -0
- package/dist/src/core/durable-fs.js +372 -0
- package/dist/src/core/durable-fs.js.map +1 -0
- package/dist/src/core/extension-api.js +382 -0
- package/dist/src/core/extension-api.js.map +1 -0
- package/dist/src/core/fusion/artifacts.js +654 -0
- package/dist/src/core/fusion/artifacts.js.map +1 -0
- package/dist/src/core/fusion/budget.js +949 -0
- package/dist/src/core/fusion/budget.js.map +1 -0
- package/dist/src/core/fusion/child-protocol.js +176 -0
- package/dist/src/core/fusion/child-protocol.js.map +1 -0
- package/dist/src/core/fusion/claude-cache.js +156 -0
- package/dist/src/core/fusion/claude-cache.js.map +1 -0
- package/dist/src/core/fusion/clean-context.js +64 -0
- package/dist/src/core/fusion/clean-context.js.map +1 -0
- package/dist/src/core/fusion/config.js +349 -0
- package/dist/src/core/fusion/config.js.map +1 -0
- package/dist/src/core/fusion/context.js +184 -0
- package/dist/src/core/fusion/context.js.map +1 -0
- package/dist/src/core/fusion/evaluation.js +696 -0
- package/dist/src/core/fusion/evaluation.js.map +1 -0
- package/dist/src/core/fusion/facade-contract.js +3 -0
- package/dist/src/core/fusion/facade-contract.js.map +1 -0
- package/dist/src/core/fusion/orchestrator.js +867 -0
- package/dist/src/core/fusion/orchestrator.js.map +1 -0
- package/dist/src/core/fusion/output-contract.js +27 -0
- package/dist/src/core/fusion/output-contract.js.map +1 -0
- package/dist/src/core/fusion/pi-child.js +1741 -0
- package/dist/src/core/fusion/pi-child.js.map +1 -0
- package/dist/src/core/fusion/prompts.js +260 -0
- package/dist/src/core/fusion/prompts.js.map +1 -0
- package/dist/src/core/fusion/result-package.js +857 -0
- package/dist/src/core/fusion/result-package.js.map +1 -0
- package/dist/src/core/fusion/source-policy.js +259 -0
- package/dist/src/core/fusion/source-policy.js.map +1 -0
- package/dist/src/core/fusion/types.js +207 -0
- package/dist/src/core/fusion/types.js.map +1 -0
- package/dist/src/core/fusion/web-fetch.js +777 -0
- package/dist/src/core/fusion/web-fetch.js.map +1 -0
- package/dist/src/core/fusion/workflows.js +126 -0
- package/dist/src/core/fusion/workflows.js.map +1 -0
- package/dist/src/core/lazy-module.js +181 -0
- package/dist/src/core/lazy-module.js.map +1 -0
- package/dist/src/core/pi-launch.js +431 -0
- package/dist/src/core/pi-launch.js.map +1 -0
- package/dist/src/core/registry.js +3331 -0
- package/dist/src/core/registry.js.map +1 -0
- package/dist/src/core/reload-shell-owner.js +1396 -0
- package/dist/src/core/reload-shell-owner.js.map +1 -0
- package/dist/src/core/shell-policy.js +80 -0
- package/dist/src/core/shell-policy.js.map +1 -0
- package/dist/src/core/task-durable.js +51 -0
- package/dist/src/core/task-durable.js.map +1 -0
- package/dist/src/core/update-check.js +92 -0
- package/dist/src/core/update-check.js.map +1 -0
- package/dist/src/core/windows-taskkill.js +185 -0
- package/dist/src/core/windows-taskkill.js.map +1 -0
- package/dist/src/delegate-child-extension.js +776 -0
- package/dist/src/delegate-child-extension.js.map +1 -0
- package/dist/src/delegate-extension.js +746 -0
- package/dist/src/delegate-extension.js.map +1 -0
- package/dist/src/extension.js +953 -0
- package/dist/src/extension.js.map +1 -0
- package/dist/src/fusion-child-extension.js +760 -0
- package/dist/src/fusion-child-extension.js.map +1 -0
- package/dist/src/fusion-extension.js +1030 -0
- package/dist/src/fusion-extension.js.map +1 -0
- package/dist/src/ui/background-tasks-manager.js +689 -0
- package/dist/src/ui/background-tasks-manager.js.map +1 -0
- package/dist/src/ui/fusion-model-selector.js +277 -0
- package/dist/src/ui/fusion-model-selector.js.map +1 -0
- package/docs/INDEX.md +35 -33
- package/docs/api/eventbus-v1.md +21 -5
- package/docs/choose-a-workflow.md +2 -0
- package/docs/commands/bg-clear.md +3 -3
- package/docs/commands/bg-update.md +3 -3
- package/docs/commands/bg.md +18 -6
- package/docs/commands/claude-cache.md +4 -4
- package/docs/commands/fusion-models.md +49 -4
- package/docs/commands/fusion.md +3 -3
- package/docs/commands/jobs.md +3 -3
- package/docs/commands/kill.md +3 -3
- package/docs/commands/logs.md +3 -3
- package/docs/commands/task-manager.md +5 -5
- package/docs/concepts/completion-delivery.md +6 -2
- package/docs/getting-started.md +7 -1
- package/docs/manifest.json +228 -42
- package/docs/operations/configuration.md +58 -5
- package/docs/operations/releasing.md +4 -2
- package/docs/operations/testing.md +22 -0
- package/docs/operations/troubleshooting.md +6 -2
- package/docs/read-before-edit.md +44 -31
- package/docs/reference/runtime-contracts.md +87 -51
- package/docs/reference/shortcuts-and-dock.md +28 -14
- package/docs/subsystems/anthropic-attribution.md +23 -11
- package/docs/subsystems/attested-pi-runs.md +12 -7
- package/docs/subsystems/background-task-runtime.md +53 -11
- package/docs/subsystems/child-launch-durability-and-safety.md +28 -9
- package/docs/subsystems/delegation.md +16 -3
- package/docs/subsystems/docs-freshness-gate.md +14 -7
- package/docs/subsystems/fusion.md +36 -11
- package/docs/subsystems/host-ui-and-telemetry.md +22 -9
- package/docs/tools/bg_delegate.md +3 -1
- package/docs/tools/bg_kill.md +3 -1
- package/docs/tools/bg_logs.md +3 -1
- package/docs/tools/bg_result.md +5 -3
- package/docs/tools/bg_run.md +31 -5
- package/docs/tools/bg_run_pi_attested.md +3 -1
- package/docs/tools/bg_status.md +3 -1
- package/docs/tools/fusion_investigate.md +3 -1
- package/docs/tools/fusion_reason.md +3 -1
- package/docs/tools/fusion_research.md +3 -1
- package/docs/tools/fusion_validate.md +3 -1
- package/extensions/anthropic-attribution-child.ts +3 -0
- package/extensions/anthropic-attribution.ts +166 -1
- package/package.json +12 -10
- package/src/core/anthropic-attribution-path.ts +5 -4
- package/src/core/anthropic-attribution.ts +293 -113
- package/src/core/attested-pi-contract.ts +4 -0
- package/src/core/attested-pi-run.ts +468 -81
- package/src/core/canonical-json.ts +21 -0
- package/src/core/common.ts +450 -40
- package/src/core/config.ts +121 -0
- package/src/core/context/visible-conversation-v2.ts +3 -6
- package/src/core/delegate/artifacts.ts +13 -9
- package/src/core/delegate/budget.ts +13 -6
- package/src/core/delegate/facade-contract.ts +6 -0
- package/src/core/delegate/result-package.ts +32 -14
- package/src/core/delegate/runner.ts +129 -58
- package/src/core/delegate/seed.ts +5 -7
- package/src/core/durable-fs.ts +178 -30
- package/src/core/extension-api.ts +36 -8
- package/src/core/fusion/artifacts.ts +17 -16
- package/src/core/fusion/clean-context.ts +8 -5
- package/src/core/fusion/config.ts +2 -1
- package/src/core/fusion/context.ts +2 -6
- package/src/core/fusion/facade-contract.ts +2 -0
- package/src/core/fusion/orchestrator.ts +3 -3
- package/src/core/fusion/prompts.ts +1 -1
- package/src/core/fusion/result-package.ts +259 -72
- package/src/core/fusion/source-policy.ts +43 -17
- package/src/core/lazy-module.ts +215 -0
- package/src/core/pi-launch.ts +390 -65
- package/src/core/registry.ts +2010 -381
- package/src/core/reload-shell-owner.ts +1662 -0
- package/src/core/shell-policy.ts +134 -0
- package/src/core/task-durable.ts +67 -0
- package/src/delegate-extension.ts +404 -144
- package/src/extension.ts +387 -114
- package/src/fusion-extension.ts +202 -96
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic-attribution.js","sourceRoot":"","sources":["../../../src/core/anthropic-attribution.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from 'node:crypto';\nimport { appendFileSync, readFileSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { isAbsolute, join } from 'node:path';\nimport { anthropicMessagesApi } from '@earendil-works/pi-ai/compat';\nimport type {\n AssistantMessageEventStream as HostAssistantMessageEventStream,\n Context as HostContext,\n Model as HostModel,\n SimpleStreamOptions as HostSimpleStreamOptions,\n} from '@earendil-works/pi-ai';\n\nexport const CLAUDE_CODE_SESSION_HEADER = 'X-Claude-Code-Session-Id';\n\nconst CLAUDE_CODE_VERSION = '2.1.251';\nconst CLAUDE_CODE_ENTRYPOINT = 'sdk-cli';\nconst CLAUDE_CODE_USER_AGENT = 'claude-cli/2.1.251 (external, sdk-cli)';\nexport const ANTHROPIC_1M_CONTEXT_BETA = 'context-1m-2025-08-07' as const;\nexport const CLAUDE_CODE_200K_SUBSCRIPTION_CONTEXT_WINDOW = 200_000 as const;\n\ntype ClaudeCode200KSubscriptionBetaValue =\n | 'claude-code-20250219'\n | 'oauth-2025-04-20'\n | 'interleaved-thinking-2025-05-14'\n | 'thinking-token-count-2026-05-13'\n | 'context-management-2025-06-27'\n | 'prompt-caching-scope-2026-01-05'\n | 'advisor-tool-2026-03-01'\n | 'structured-outputs-2025-12-15'\n | 'mid-conversation-system-2026-04-07'\n | 'thinking-binding-controls-2026-08-01'\n | 'cache-diagnosis-2026-04-07';\n\nconst CLAUDE_CODE_LEGACY_BETA_VALUES = [\n 'claude-code-20250219',\n 'oauth-2025-04-20',\n 'interleaved-thinking-2025-05-14',\n 'thinking-token-count-2026-05-13',\n 'context-management-2025-06-27',\n 'prompt-caching-scope-2026-01-05',\n 'advisor-tool-2026-03-01',\n 'structured-outputs-2025-12-15',\n] as const satisfies readonly ClaudeCode200KSubscriptionBetaValue[];\nconst CLAUDE_CODE_ADAPTIVE_200K_BETA_VALUES = [\n 'claude-code-20250219',\n 'oauth-2025-04-20',\n 'interleaved-thinking-2025-05-14',\n 'thinking-token-count-2026-05-13',\n 'context-management-2025-06-27',\n 'prompt-caching-scope-2026-01-05',\n 'mid-conversation-system-2026-04-07',\n] as const satisfies readonly ClaudeCode200KSubscriptionBetaValue[];\nconst CLAUDE_CODE_FABLE_5_1_200K_BETA_VALUES = [\n ...CLAUDE_CODE_ADAPTIVE_200K_BETA_VALUES,\n 'thinking-binding-controls-2026-08-01',\n 'cache-diagnosis-2026-04-07',\n] as const satisfies readonly ClaudeCode200KSubscriptionBetaValue[];\n\nfunction build200KSubscriptionBetaHeader(\n values: readonly ClaudeCode200KSubscriptionBetaValue[],\n): string {\n if ((values as readonly string[]).includes(ANTHROPIC_1M_CONTEXT_BETA)) {\n throw new Error(\n `Anthropic attribution 200K subscription policy must not emit ${ANTHROPIC_1M_CONTEXT_BETA}`,\n );\n }\n return values.join(',');\n}\n\nexport const CLAUDE_CODE_BETA = build200KSubscriptionBetaHeader(CLAUDE_CODE_LEGACY_BETA_VALUES);\nconst CLAUDE_CODE_ADAPTIVE_200K_BETA = build200KSubscriptionBetaHeader(\n CLAUDE_CODE_ADAPTIVE_200K_BETA_VALUES,\n);\nconst CLAUDE_CODE_FABLE_5_1_200K_BETA = build200KSubscriptionBetaHeader(\n CLAUDE_CODE_FABLE_5_1_200K_BETA_VALUES,\n);\nconst CLAUDE_AGENT_SDK_SYSTEM_TEXT =\n \"You are a Claude agent, built on Anthropic's Claude Agent SDK.\";\nconst FINGERPRINT_SALT = '59cf53e54c78';\nconst AUDIT_ENV = 'PIPELINE_ANTHROPIC_ATTRIBUTION_AUDIT_PATH';\nconst CACHE_RETENTION_ENV = 'PI_CACHE_RETENTION';\nexport const ANTHROPIC_ACCOUNT_CONFIG_PATH_ENV = 'PI_ANTHROPIC_ACCOUNT_CONFIG_PATH';\nexport const ANTHROPIC_CACHE_RETENTION_ENTRY = 'pipeline-anthropic-cache-retention';\nconst ANTHROPIC_CACHE_RETENTION_SCHEMA = 'pipeline.anthropic_cache_retention.v1';\nexport const ANTHROPIC_ATTRIBUTION_CLAIM_CHANNEL = 'pi-anthropic-attribution:claim:v1';\nconst ANTHROPIC_ATTRIBUTION_CLAIM_SCHEMA = 'pi-anthropic-attribution.claim.v1';\nconst NATIVE_ATTESTATION_PLACEHOLDER = '00000';\nconst ANTHROPIC_CACHE_CONTROL_BREAKPOINT_LIMIT = 4;\nconst ANTHROPIC_LINEAGE_DIAGNOSTIC_TYPE = 'anthropic-cache-lineage';\nconst ANTHROPIC_LINEAGE_SCHEMA = 'pi-anthropic-attribution.lineage.v1';\n// Bump whenever any system/tool/message wire projection changes. Old receipts then\n// become legacy and cannot authorize signature replay under a rewritten prefix.\nconst ANTHROPIC_PROJECTION_VERSION = 3;\nconst ANTHROPIC_OFFICIAL_ORIGIN = 'https://api.anthropic.com';\nconst ANTHROPIC_BETA_MESSAGES_URL = `${ANTHROPIC_OFFICIAL_ORIGIN}/v1/messages?beta=true`;\nconst ANTHROPIC_CACHE_DIAGNOSTICS_BETA = 'cache-diagnosis-2026-04-07';\nconst ANTHROPIC_THINKING_BINDING_BETA = 'thinking-binding-controls-2026-08-01';\nconst COMPACTION_SUMMARY_PREFIX =\n 'The conversation history before this point was compacted into the following summary:';\n\n// Sanitization behavior derived from the MIT-licensed ravshansbox/pi-anthropic-sps\n// extension at commit 17409b5615f0ec0625776bc5434f92f2c55e3fd0. Keep exact-match\n// semantics and all known Pi prompt variants; unrelated system text is preserved.\nconst ANTHROPIC_SYSTEM_PROMPT_BAD_LINES = new Set([\n '- When asked about: extensions (docs/extensions.md, examples/extensions/), themes (docs/themes.md), skills (docs/skills.md), prompt templates (docs/prompt-templates.md), TUI components (docs/tui.md), keybindings (docs/keybindings.md), SDK integrations (docs/sdk.md), custom providers (docs/custom-provider.md), adding models (docs/models.md), pi packages (docs/packages.md)',\n '- When asked about: extensions (docs/extensions.md, examples/extensions/), themes (docs/themes.md), skills (docs/skills.md), prompt templates (docs/prompt-templates.md), TUI components (docs/tui.md), keybindings (docs/keybindings.md), SDK integrations (docs/sdk.md), custom providers (docs/custom-provider.md), adding models (docs/models.md), pi packages (docs/packages.md), environment variables (docs/environment-variables.md)',\n '- When working on pi topics, read the docs and examples, and follow .md cross-references before implementing',\n]);\n\ntype JsonObject = Record<string, unknown>;\nexport type CacheRetention = 'none' | 'short' | 'long';\ntype ProviderEnv = Record<string, string | undefined>;\nexport interface AnthropicCacheControl {\n type: 'ephemeral';\n ttl?: '1h' | '5m';\n [key: string]: unknown;\n}\n\nconst parseJsonSource = JSON.parse.bind(JSON) as (source: string) => unknown;\n\nfunction parseJsonValue(text: string, label: string): unknown {\n try {\n return parseJsonSource(text);\n } catch (error) {\n throw new Error(\n `${label} is invalid JSON: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\nfunction parseJsonObject(text: string, label: string): JsonObject {\n const parsed = parseJsonValue(text, label);\n if (!isPlainObject(parsed)) throw new Error(`${label} must be a JSON object`);\n return parsed;\n}\n\nexport interface ClaudeAttributionAccount {\n readonly deviceId: string;\n readonly accountUuid: string;\n}\n\ninterface PiCostRatesLike {\n readonly input?: number;\n readonly output?: number;\n readonly cacheRead?: number;\n readonly cacheWrite?: number;\n readonly inputTokensAbove?: number;\n}\n\ninterface PiModelCostLike extends PiCostRatesLike {\n readonly tiers?: readonly PiCostRatesLike[];\n}\n\nexport interface PiModelLike {\n readonly provider?: string;\n readonly id?: string;\n readonly name?: string;\n readonly api?: string;\n readonly baseUrl?: string;\n readonly input?: readonly ('text' | 'image')[];\n readonly contextWindow?: number;\n readonly maxTokens?: number;\n readonly reasoning?: boolean;\n readonly compat?: {\n readonly supportsLongCacheRetention?: boolean;\n readonly supportsCacheControlOnTools?: boolean;\n };\n readonly cost?: PiModelCostLike;\n}\n\ntype ClaudeCodeThinkingPolicy = 'fixed-budget' | 'adaptive-effort';\n\nexport interface ClaudeCodeModelPolicy {\n readonly modelId: string;\n readonly beta: string;\n readonly thinkingPolicy: ClaudeCodeThinkingPolicy;\n readonly contextWindow: typeof CLAUDE_CODE_200K_SUBSCRIPTION_CONTEXT_WINDOW;\n readonly enforcesThinkingPrefixBinding: boolean;\n readonly supportsCacheDiagnostics: boolean;\n}\n\nfunction claudeCode200KSubscriptionPolicy(\n modelId: string,\n beta: string,\n thinkingPolicy: ClaudeCodeThinkingPolicy,\n features: {\n readonly enforcesThinkingPrefixBinding?: boolean;\n readonly supportsCacheDiagnostics?: boolean;\n } = {},\n): ClaudeCodeModelPolicy {\n if (beta.split(',').includes(ANTHROPIC_1M_CONTEXT_BETA)) {\n throw new Error(\n `Anthropic attribution 200K subscription policy for ${modelId} must not emit ${ANTHROPIC_1M_CONTEXT_BETA}`,\n );\n }\n return {\n modelId,\n beta,\n thinkingPolicy,\n contextWindow: CLAUDE_CODE_200K_SUBSCRIPTION_CONTEXT_WINDOW,\n enforcesThinkingPrefixBinding: features.enforcesThinkingPrefixBinding === true,\n supportsCacheDiagnostics: features.supportsCacheDiagnostics === true,\n };\n}\n\nconst CLAUDE_CODE_MODEL_POLICIES: Record<string, ClaudeCodeModelPolicy> = Object.freeze({\n 'claude-3-5-haiku-20241022': claudeCode200KSubscriptionPolicy(\n 'claude-3-5-haiku-20241022',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-3-5-haiku-latest': claudeCode200KSubscriptionPolicy(\n 'claude-3-5-haiku-latest',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-3-5-sonnet-20240620': claudeCode200KSubscriptionPolicy(\n 'claude-3-5-sonnet-20240620',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-3-5-sonnet-20241022': claudeCode200KSubscriptionPolicy(\n 'claude-3-5-sonnet-20241022',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-3-7-sonnet-20250219': claudeCode200KSubscriptionPolicy(\n 'claude-3-7-sonnet-20250219',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-3-haiku-20240307': claudeCode200KSubscriptionPolicy(\n 'claude-3-haiku-20240307',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-3-opus-20240229': claudeCode200KSubscriptionPolicy(\n 'claude-3-opus-20240229',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-3-sonnet-20240229': claudeCode200KSubscriptionPolicy(\n 'claude-3-sonnet-20240229',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-fable-5': claudeCode200KSubscriptionPolicy(\n 'claude-fable-5',\n CLAUDE_CODE_ADAPTIVE_200K_BETA,\n 'adaptive-effort',\n ),\n 'claude-fable-5-1': claudeCode200KSubscriptionPolicy(\n 'claude-fable-5-1',\n CLAUDE_CODE_FABLE_5_1_200K_BETA,\n 'adaptive-effort',\n { enforcesThinkingPrefixBinding: true, supportsCacheDiagnostics: true },\n ),\n 'claude-haiku-4-5': claudeCode200KSubscriptionPolicy(\n 'claude-haiku-4-5',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-haiku-4-5-20251001': claudeCode200KSubscriptionPolicy(\n 'claude-haiku-4-5-20251001',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-opus-4-0': claudeCode200KSubscriptionPolicy(\n 'claude-opus-4-0',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-opus-4-1': claudeCode200KSubscriptionPolicy(\n 'claude-opus-4-1',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-opus-4-1-20250805': claudeCode200KSubscriptionPolicy(\n 'claude-opus-4-1-20250805',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-opus-4-20250514': claudeCode200KSubscriptionPolicy(\n 'claude-opus-4-20250514',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-opus-4-5': claudeCode200KSubscriptionPolicy(\n 'claude-opus-4-5',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-opus-4-5-20251101': claudeCode200KSubscriptionPolicy(\n 'claude-opus-4-5-20251101',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-opus-4-6': claudeCode200KSubscriptionPolicy(\n 'claude-opus-4-6',\n CLAUDE_CODE_ADAPTIVE_200K_BETA,\n 'adaptive-effort',\n ),\n 'claude-opus-4-7': claudeCode200KSubscriptionPolicy(\n 'claude-opus-4-7',\n CLAUDE_CODE_ADAPTIVE_200K_BETA,\n 'adaptive-effort',\n ),\n 'claude-opus-4-8': claudeCode200KSubscriptionPolicy(\n 'claude-opus-4-8',\n CLAUDE_CODE_ADAPTIVE_200K_BETA,\n 'adaptive-effort',\n ),\n 'claude-opus-5': claudeCode200KSubscriptionPolicy(\n 'claude-opus-5',\n CLAUDE_CODE_ADAPTIVE_200K_BETA,\n 'adaptive-effort',\n ),\n 'claude-sonnet-4-0': claudeCode200KSubscriptionPolicy(\n 'claude-sonnet-4-0',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-sonnet-4-20250514': claudeCode200KSubscriptionPolicy(\n 'claude-sonnet-4-20250514',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-sonnet-4-5': claudeCode200KSubscriptionPolicy(\n 'claude-sonnet-4-5',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-sonnet-4-5-20250929': claudeCode200KSubscriptionPolicy(\n 'claude-sonnet-4-5-20250929',\n CLAUDE_CODE_BETA,\n 'fixed-budget',\n ),\n 'claude-sonnet-4-6': claudeCode200KSubscriptionPolicy(\n 'claude-sonnet-4-6',\n CLAUDE_CODE_ADAPTIVE_200K_BETA,\n 'adaptive-effort',\n ),\n 'claude-sonnet-5': claudeCode200KSubscriptionPolicy(\n 'claude-sonnet-5',\n CLAUDE_CODE_ADAPTIVE_200K_BETA,\n 'adaptive-effort',\n ),\n});\n\nexport interface PiSessionManagerLike {\n getSessionId(): string;\n getBranch(): readonly unknown[];\n}\n\nexport interface PiContextLike {\n readonly model?: PiModelLike;\n readonly sessionManager: PiSessionManagerLike;\n readonly ui?: {\n notify(message: string, level: 'info' | 'warning' | 'error'): void;\n };\n}\n\nexport interface PiProviderRegistrationConfig {\n readonly api?: string;\n readonly headers?: Record<string, string>;\n readonly streamSimple?: (\n model: PiModelLike,\n context: PiStreamContext,\n options?: PiSimpleStreamOptions,\n ) => AssistantMessageEventStreamLike;\n}\n\nexport interface PiProviderRegistrationHost {\n registerProvider(name: string, config: PiProviderRegistrationConfig): void;\n}\n\ninterface PiCommandConfigLike {\n readonly description: string;\n readonly handler: (args: string, ctx: PiContextLike) => Promise<void> | void;\n}\n\ninterface PiEventBusLike {\n emit(channel: string, data: unknown): void;\n on(channel: string, handler: (data: unknown) => void): () => void;\n}\n\nexport interface PiExtensionHost extends PiProviderRegistrationHost {\n readonly events: PiEventBusLike;\n on(\n eventName: 'session_start' | 'session_shutdown' | 'session_tree' | 'before_agent_start',\n handler: (event: unknown, ctx: PiContextLike) => void,\n ): void;\n registerCommand(name: string, config: PiCommandConfigLike): void;\n appendEntry(customType: string, data?: unknown): void;\n}\n\ntype PiContentBlock =\n | { readonly type: 'text'; readonly text: string }\n | { readonly type: 'image'; readonly mimeType: string; readonly data: string };\n\ninterface PiAssistantDiagnosticLike {\n readonly type: string;\n readonly timestamp: number;\n readonly details?: JsonObject;\n}\n\ntype PiMessage =\n | {\n readonly role: 'user';\n readonly content: string | readonly PiContentBlock[];\n readonly timestamp?: number;\n }\n | {\n readonly role: 'assistant';\n readonly content: readonly JsonObject[];\n readonly provider?: string;\n readonly api?: string;\n readonly model?: string;\n readonly responseId?: string;\n readonly stopReason?: string;\n readonly diagnostics?: readonly PiAssistantDiagnosticLike[];\n readonly timestamp?: number;\n }\n | {\n readonly role: 'toolResult';\n readonly toolCallId: string;\n readonly toolName?: string;\n readonly content: readonly PiContentBlock[];\n readonly isError?: boolean;\n readonly timestamp?: number;\n };\n\nexport interface PiStreamContext {\n readonly messages: readonly PiMessage[];\n readonly systemPrompt?: string;\n readonly tools?: readonly PiToolLike[];\n}\n\nexport interface PiToolLike {\n readonly name: string;\n readonly description?: string;\n readonly parameters?: unknown;\n}\n\nexport interface PiSimpleStreamOptions {\n readonly apiKey?: string;\n readonly headers?: Record<string, string>;\n readonly maxTokens?: number;\n readonly reasoning?: 'off' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';\n readonly thinkingBudgets?: Partial<\n Record<'minimal' | 'low' | 'medium' | 'high' | 'xhigh', number>\n >;\n readonly signal?: AbortSignal;\n readonly timeoutMs?: number;\n readonly maxRetries?: number;\n readonly temperature?: number;\n readonly cacheRetention?: CacheRetention;\n readonly sessionId?: string;\n readonly env?: ProviderEnv;\n readonly metadata?: { readonly user_id?: string };\n readonly toolChoice?: unknown;\n readonly onPayload?: (payload: JsonObject, model: PiModelLike) => Promise<unknown> | unknown;\n readonly onResponse?: (\n response: { readonly status: number; readonly headers: Record<string, string> },\n model: PiModelLike,\n ) => Promise<void> | void;\n}\n\nexport interface AnthropicTransportDependencies {\n readonly loadAccount?: () => ClaudeAttributionAccount;\n}\n\nexport interface AssistantMessageLike {\n role: 'assistant';\n content: JsonObject[];\n api: string | undefined;\n provider: string | undefined;\n model: string | undefined;\n usage: {\n input: number;\n output: number;\n cacheRead: number;\n cacheWrite: number;\n cacheWrite1h?: number;\n reasoning?: number;\n totalTokens: number;\n cost: { input: number; output: number; cacheRead: number; cacheWrite: number; total: number };\n };\n stopReason: 'pending' | 'stop' | 'length' | 'toolUse' | 'aborted' | 'error' | 'deferred';\n timestamp: number;\n responseModel?: string;\n responseId?: string;\n providerThinkingLevel?: string;\n endTurn?: boolean;\n diagnostics?: PiAssistantDiagnosticLike[];\n deferred?: unknown;\n errorMessage?: string;\n rawStopReason?: string;\n}\n\ntype AssistantMessageEvent =\n | { readonly type: 'start'; readonly partial: AssistantMessageLike }\n | {\n readonly type: 'text_start';\n readonly contentIndex: number;\n readonly partial: AssistantMessageLike;\n }\n | {\n readonly type: 'text_delta';\n readonly contentIndex: number;\n readonly delta: string;\n readonly partial: AssistantMessageLike;\n }\n | {\n readonly type: 'text_end';\n readonly contentIndex: number;\n readonly content: string;\n readonly partial: AssistantMessageLike;\n }\n | {\n readonly type: 'thinking_start';\n readonly contentIndex: number;\n readonly partial: AssistantMessageLike;\n }\n | {\n readonly type: 'thinking_delta';\n readonly contentIndex: number;\n readonly delta: string;\n readonly partial: AssistantMessageLike;\n }\n | {\n readonly type: 'thinking_end';\n readonly contentIndex: number;\n readonly content: string;\n readonly partial: AssistantMessageLike;\n }\n | {\n readonly type: 'toolcall_start';\n readonly contentIndex: number;\n readonly partial: AssistantMessageLike;\n }\n | {\n readonly type: 'toolcall_delta';\n readonly contentIndex: number;\n readonly delta: string;\n readonly partial: AssistantMessageLike;\n }\n | {\n readonly type: 'toolcall_end';\n readonly contentIndex: number;\n readonly toolCall: JsonObject;\n readonly partial: AssistantMessageLike;\n }\n | {\n readonly type: 'done';\n readonly reason: AssistantMessageLike['stopReason'];\n readonly message: AssistantMessageLike;\n }\n | {\n readonly type: 'error';\n readonly reason: AssistantMessageLike['stopReason'];\n readonly error: AssistantMessageLike;\n };\n\nexport interface AssistantMessageEventStreamLike extends AsyncIterable<AssistantMessageEvent> {\n push(event: AssistantMessageEvent): void;\n end(result?: AssistantMessageLike): void;\n result(): Promise<AssistantMessageLike>;\n}\n\nclass LocalAssistantMessageEventStream implements AssistantMessageEventStreamLike {\n private queue: AssistantMessageEvent[] = [];\n private waiting: Array<(result: IteratorResult<AssistantMessageEvent>) => void> = [];\n private done = false;\n private readonly finalResultPromise: Promise<AssistantMessageLike>;\n private resolveFinalResult!: (value: AssistantMessageLike) => void;\n\n constructor() {\n this.finalResultPromise = new Promise((resolve) => {\n this.resolveFinalResult = resolve;\n });\n }\n\n push(event: AssistantMessageEvent): void {\n if (this.done) return;\n if (event.type === 'done') {\n this.done = true;\n this.resolveFinalResult(event.message);\n } else if (event.type === 'error') {\n this.done = true;\n this.resolveFinalResult(event.error);\n }\n const waiter = this.waiting.shift();\n if (waiter) waiter({ value: event, done: false });\n else this.queue.push(event);\n }\n\n end(result?: AssistantMessageLike): void {\n this.done = true;\n if (result !== undefined) this.resolveFinalResult(result);\n while (this.waiting.length > 0) {\n this.waiting.shift()?.({ value: undefined, done: true });\n }\n }\n\n async *[Symbol.asyncIterator](): AsyncIterator<AssistantMessageEvent> {\n for (;;) {\n const queued = this.queue.shift();\n if (queued) {\n yield queued;\n } else if (this.done) {\n return;\n } else {\n const next = await new Promise<IteratorResult<AssistantMessageEvent>>((resolve) =>\n this.waiting.push(resolve),\n );\n if (next.done) return;\n yield next.value;\n }\n }\n }\n\n result(): Promise<AssistantMessageLike> {\n return this.finalResultPromise;\n }\n}\n\nfunction createAssistantMessageEventStream(): AssistantMessageEventStreamLike {\n return new LocalAssistantMessageEventStream();\n}\n\nfunction isPlainObject(value: unknown): value is JsonObject {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction providerEnvValue(name: string, env?: ProviderEnv): string | undefined {\n return env?.[name] ?? process.env[name];\n}\n\nfunction parseCacheRetention(value: string, source: string): CacheRetention {\n if (value === 'none' || value === 'short' || value === 'long') return value;\n throw new Error(\n `Anthropic attribution ${source} must be one of none, short, or long; got ${JSON.stringify(value)}`,\n );\n}\n\n/** Resolve an explicit request posture. Registered Pi sessions apply the stronger\n * one-hour policy through resolveRegisteredCacheRetention below. */\nexport function resolveCacheRetentionPreference(\n options?: {\n readonly cacheRetention?: CacheRetention;\n readonly env?: ProviderEnv;\n },\n sessionOverride?: Exclude<CacheRetention, 'none'>,\n): CacheRetention {\n if (options?.cacheRetention !== undefined) return options.cacheRetention;\n if (sessionOverride !== undefined) return sessionOverride;\n const configured = providerEnvValue(CACHE_RETENTION_ENV, options?.env);\n if (configured !== undefined) return parseCacheRetention(configured, CACHE_RETENTION_ENV);\n return 'long';\n}\n\nfunction resolveRegisteredCacheRetention(\n options: PiSimpleStreamOptions | undefined,\n sessionOverride: Exclude<CacheRetention, 'none'> | undefined,\n): CacheRetention {\n if (options?.cacheRetention === 'none') return 'none';\n if (sessionOverride !== undefined) return sessionOverride;\n const configured = providerEnvValue(CACHE_RETENTION_ENV, options?.env);\n if (configured !== undefined) return parseCacheRetention(configured, CACHE_RETENTION_ENV);\n if (options?.cacheRetention === 'long') return 'long';\n // Pi's generic provider default is five minutes. Subscription coding sessions\n // routinely have turns longer than that, so the attributed route pins one hour.\n return 'long';\n}\n\n/** Restore the latest branch-local command decision; custom entries stay out of LLM context. */\nexport function restoreAnthropicSessionCacheRetention(\n entries: readonly unknown[],\n): Exclude<CacheRetention, 'none'> | undefined {\n let restored: Exclude<CacheRetention, 'none'> | undefined;\n for (const entry of entries) {\n if (!isPlainObject(entry) || entry['type'] !== 'custom') continue;\n if (entry['customType'] !== ANTHROPIC_CACHE_RETENTION_ENTRY) continue;\n const data = entry['data'];\n if (\n !isPlainObject(data) ||\n data['schema_version'] !== ANTHROPIC_CACHE_RETENTION_SCHEMA ||\n (data['retention'] !== 'default' &&\n data['retention'] !== 'short' &&\n data['retention'] !== 'long')\n ) {\n throw new Error('Anthropic attribution found a malformed persisted cache retention entry');\n }\n restored = data['retention'] === 'default' ? undefined : data['retention'];\n }\n return restored;\n}\n\nfunction resolveAnthropicCacheControl(\n model: PiModelLike | undefined,\n options?: { readonly cacheRetention?: CacheRetention; readonly env?: ProviderEnv },\n): AnthropicCacheControl | undefined {\n const retention = resolveCacheRetentionPreference(options);\n if (retention === 'none') return undefined;\n const ttl =\n retention === 'long' && (model?.compat?.supportsLongCacheRetention ?? true) ? '1h' : undefined;\n return ttl === undefined ? { type: 'ephemeral' } : { type: 'ephemeral', ttl };\n}\n\nfunction cloneAnthropicCacheControl(value: unknown): AnthropicCacheControl | undefined {\n if (value === undefined) return undefined;\n if (!isPlainObject(value)) {\n throw new Error(\n 'Anthropic attribution cannot safely process malformed cache_control; expected an object',\n );\n }\n if (value['type'] !== 'ephemeral') {\n throw new Error(\n 'Anthropic attribution cannot safely process malformed cache_control.type; expected \"ephemeral\"',\n );\n }\n const ttl = value['ttl'];\n if (ttl !== undefined && ttl !== '1h' && ttl !== '5m') {\n throw new Error(\n 'Anthropic attribution cannot safely process malformed cache_control.ttl; expected \"1h\" or \"5m\"',\n );\n }\n return {\n ...value,\n type: 'ephemeral',\n ...(ttl === undefined ? {} : { ttl }),\n } as AnthropicCacheControl;\n}\n\nfunction mergedCacheControl(\n existing: unknown,\n desired: AnthropicCacheControl | undefined,\n): AnthropicCacheControl | undefined {\n const existingControl = cloneAnthropicCacheControl(existing);\n if (existingControl === undefined) return desired === undefined ? undefined : { ...desired };\n if (desired?.ttl === '1h' && existingControl.ttl !== '1h')\n return { ...existingControl, ttl: '1h' };\n return existingControl;\n}\n\nfunction cloneBlockWithCacheControl(\n block: JsonObject,\n desired: AnthropicCacheControl | undefined,\n): JsonObject {\n const next = { ...block };\n const cacheControl = mergedCacheControl(next['cache_control'], desired);\n if (cacheControl !== undefined) next['cache_control'] = cacheControl;\n return next;\n}\n\nfunction stripAnthropicSystemPromptBadLines(text: string): string {\n return text\n .split('\\n')\n .filter((line) => !ANTHROPIC_SYSTEM_PROMPT_BAD_LINES.has(line))\n .join('\\n');\n}\n\ninterface CacheControlInspection {\n readonly count: number;\n readonly retention: Exclude<CacheRetention, 'none'> | undefined;\n}\n\nfunction inspectCacheControls(payload: JsonObject): CacheControlInspection {\n let count = 0;\n let hasLong = false;\n const inspectBlock = (block: unknown): void => {\n if (!isPlainObject(block) || block['cache_control'] === undefined) return;\n const cacheControl = cloneAnthropicCacheControl(block['cache_control']);\n count += 1;\n if (cacheControl?.ttl === '1h') hasLong = true;\n };\n\n const system = payload['system'];\n if (Array.isArray(system)) {\n for (const block of system) inspectBlock(block);\n }\n\n const tools = payload['tools'];\n if (Array.isArray(tools)) {\n for (const tool of tools) inspectBlock(tool);\n }\n\n const messages = payload['messages'];\n if (Array.isArray(messages)) {\n for (const message of messages) {\n if (!isPlainObject(message)) continue;\n const content = message['content'];\n if (Array.isArray(content)) {\n for (const block of content) inspectBlock(block);\n }\n }\n }\n\n return { count, retention: count === 0 ? undefined : hasLong ? 'long' : 'short' };\n}\n\ninterface CacheControlOccurrence {\n readonly path: string;\n readonly control: AnthropicCacheControl;\n}\n\nfunction cacheControlOccurrences(payload: JsonObject): CacheControlOccurrence[] {\n const occurrences: CacheControlOccurrence[] = [];\n const inspectBlocks = (value: unknown, path: string): void => {\n if (!Array.isArray(value)) return;\n value.forEach((block, index) => {\n if (!isPlainObject(block)) return;\n const blockPath = `${path}[${String(index)}]`;\n if (block['cache_control'] !== undefined) {\n const control = cloneAnthropicCacheControl(block['cache_control']);\n if (control !== undefined) occurrences.push({ path: blockPath, control });\n }\n if (block['type'] === 'tool_result') inspectBlocks(block['content'], `${blockPath}.content`);\n });\n };\n\n if (payload['cache_control'] !== undefined) {\n const control = cloneAnthropicCacheControl(payload['cache_control']);\n if (control !== undefined) occurrences.push({ path: '$', control });\n }\n inspectBlocks(payload['system'], '$.system');\n inspectBlocks(payload['tools'], '$.tools');\n const messages = payload['messages'];\n if (Array.isArray(messages)) {\n messages.forEach((message, index) => {\n if (isPlainObject(message))\n inspectBlocks(message['content'], `$.messages[${String(index)}].content`);\n });\n }\n return occurrences;\n}\n\nfunction countCacheControlBreakpoints(payload: JsonObject): number {\n return cacheControlOccurrences(payload).length;\n}\n\nfunction cacheControlTopologySha256(payload: JsonObject): string {\n return sha256Canonical(cacheControlOccurrences(payload));\n}\n\nfunction assertCacheControlBreakpointLimit(payload: JsonObject): void {\n const count = countCacheControlBreakpoints(payload);\n if (count > ANTHROPIC_CACHE_CONTROL_BREAKPOINT_LIMIT) {\n throw new Error(\n `Anthropic attribution produced ${count} cache_control breakpoints; Anthropic supports at most ${ANTHROPIC_CACHE_CONTROL_BREAKPOINT_LIMIT}`,\n );\n }\n}\n\nfunction assertNonEmptyString(value: unknown, fieldName: string, configPath: string): string {\n if (typeof value !== 'string' || value.trim().length === 0) {\n throw new Error(\n `Anthropic attribution config ${configPath} missing/malformed required field ${fieldName}`,\n );\n }\n return value;\n}\n\nexport function extractClaudeAttributionAccount(\n parsedConfig: unknown,\n configPath: string,\n): ClaudeAttributionAccount {\n if (!isPlainObject(parsedConfig)) {\n throw new Error(`Anthropic attribution config ${configPath} is not a JSON object`);\n }\n const oauthAccount = parsedConfig['oauthAccount'];\n if (!isPlainObject(oauthAccount)) {\n throw new Error(\n `Anthropic attribution config ${configPath} missing/malformed required field oauthAccount.accountUuid`,\n );\n }\n return {\n deviceId: assertNonEmptyString(parsedConfig['userID'], 'userID', configPath),\n accountUuid: assertNonEmptyString(\n oauthAccount['accountUuid'],\n 'oauthAccount.accountUuid',\n configPath,\n ),\n };\n}\n\nexport function resolveClaudeAttributionConfigPath(\n explicitConfigPath?: string,\n env?: ProviderEnv,\n homeDirectory = homedir(),\n): string {\n const configuredPath = providerEnvValue(ANTHROPIC_ACCOUNT_CONFIG_PATH_ENV, env);\n const selectedPath = explicitConfigPath ?? configuredPath ?? join(homeDirectory, '.claude.json');\n const source =\n explicitConfigPath !== undefined\n ? 'explicit configPath'\n : configuredPath !== undefined\n ? ANTHROPIC_ACCOUNT_CONFIG_PATH_ENV\n : 'default ~/.claude.json path';\n if (selectedPath.trim().length === 0 || !isAbsolute(selectedPath)) {\n throw new Error(\n `Anthropic attribution ${source} must be a non-empty absolute file path; got ${JSON.stringify(selectedPath)}`,\n );\n }\n return selectedPath;\n}\n\nexport function loadClaudeAttributionAccount(\n configPath?: string,\n env?: ProviderEnv,\n): ClaudeAttributionAccount {\n const selectedPath = resolveClaudeAttributionConfigPath(configPath, env);\n let configText: string;\n try {\n configText = readFileSync(selectedPath, 'utf8');\n } catch (error) {\n throw new Error(\n `Anthropic attribution config ${selectedPath} could not be read: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n return extractClaudeAttributionAccount(\n parseJsonValue(configText, `Anthropic attribution config ${selectedPath}`),\n selectedPath,\n );\n}\n\nexport function isAnthropicContext(ctx: PiContextLike): boolean {\n return ctx.model?.provider === 'anthropic';\n}\n\nfunction requireSessionId(value: unknown, source: string): string {\n if (typeof value !== 'string' || value.trim().length === 0) {\n throw new Error(`Anthropic attribution requires a non-empty ${source}`);\n }\n return value;\n}\n\nfunction getSessionId(ctx: PiContextLike): string {\n return requireSessionId(ctx.sessionManager.getSessionId(), 'Pi session id');\n}\n\nfunction normalizedAnthropicModelId(model: PiModelLike): string {\n if (typeof model.id !== 'string' || model.id.trim().length === 0) {\n throw new Error('Anthropic attribution requires a non-empty model id');\n }\n const providerPrefix = 'anthropic/';\n return model.id.startsWith(providerPrefix) ? model.id.slice(providerPrefix.length) : model.id;\n}\n\nexport function resolveClaudeCodeModelPolicy(model: PiModelLike): ClaudeCodeModelPolicy {\n const modelId = normalizedAnthropicModelId(model);\n const policy = CLAUDE_CODE_MODEL_POLICIES[modelId];\n if (policy === undefined) {\n throw new Error(`Anthropic attribution has no Claude Code model policy for ${modelId}`);\n }\n return policy;\n}\n\nexport function resolveAnthropicMaxTokens(model: PiModelLike): number {\n return assertPositiveInteger(\n model.maxTokens,\n `model.maxTokens for ${normalizedAnthropicModelId(model)}`,\n );\n}\n\nexport function computeClaudeCodeFingerprint(\n messageText: string,\n version = CLAUDE_CODE_VERSION,\n): string {\n const chars = [4, 7, 20].map((index) => messageText[index] || '0').join('');\n return createHash('sha256')\n .update(`${FINGERPRINT_SALT}${chars}${version}`)\n .digest('hex')\n .slice(0, 3);\n}\n\nfunction firstUserMessageTextFromPayload(payload: JsonObject): string {\n const messages = payload['messages'];\n if (!Array.isArray(messages)) return '';\n for (const message of messages) {\n if (!isPlainObject(message) || message['role'] !== 'user') continue;\n const content = message['content'];\n if (typeof content === 'string') return content;\n if (Array.isArray(content)) {\n const textBlock = content.find(\n (block) =>\n isPlainObject(block) && block['type'] === 'text' && typeof block['text'] === 'string',\n );\n if (isPlainObject(textBlock) && typeof textBlock['text'] === 'string')\n return textBlock['text'];\n }\n }\n return '';\n}\n\nexport function buildClaudeCodeBillingSystemText(firstUserMessageText: string): string {\n const fingerprint = computeClaudeCodeFingerprint(firstUserMessageText);\n return `x-anthropic-billing-header: cc_version=${CLAUDE_CODE_VERSION}.${fingerprint}; cc_entrypoint=${CLAUDE_CODE_ENTRYPOINT}; cch=${NATIVE_ATTESTATION_PLACEHOLDER};`;\n}\n\nexport function buildAnthropicAttributionHeaders(\n sessionId: string,\n model?: PiModelLike,\n): Record<string, string> {\n const beta = model === undefined ? CLAUDE_CODE_BETA : resolveClaudeCodeModelPolicy(model).beta;\n return {\n [CLAUDE_CODE_SESSION_HEADER]: sessionId,\n 'anthropic-beta': beta,\n 'anthropic-version': '2023-06-01',\n 'User-Agent': CLAUDE_CODE_USER_AGENT,\n 'x-app': 'cli',\n 'anthropic-dangerous-direct-browser-access': 'true',\n };\n}\n\nexport function registerAnthropicAttributionProvider(\n pi: PiProviderRegistrationHost,\n ctx: PiContextLike,\n getSessionOverride: () => Exclude<CacheRetention, 'none'> | undefined = () => undefined,\n dependencies: AnthropicTransportDependencies = {},\n): void {\n if (!isAnthropicContext(ctx)) return;\n pi.registerProvider('anthropic', {\n api: 'anthropic-messages',\n headers: buildAnthropicAttributionHeaders(getSessionId(ctx), ctx.model),\n streamSimple: (model, context, options) =>\n streamAnthropicViaBetaMessages(\n model,\n context,\n {\n ...(options ?? {}),\n cacheRetention: resolveRegisteredCacheRetention(options, getSessionOverride()),\n },\n dependencies,\n ),\n });\n}\n\nfunction assertPositiveInteger(value: unknown, fieldName: string): number {\n if (!Number.isInteger(value) || typeof value !== 'number' || value <= 0) {\n throw new Error(\n `Anthropic attribution cannot safely process malformed ${fieldName}; expected a positive integer`,\n );\n }\n return value;\n}\n\nfunction rewriteThinking(\n payload: JsonObject,\n maxTokens: number | undefined,\n): { readonly thinking: unknown; readonly budgetTokens: number | undefined } {\n if (payload['thinking'] === undefined) return { thinking: undefined, budgetTokens: undefined };\n if (!isPlainObject(payload['thinking'])) {\n throw new Error(\n 'Anthropic attribution cannot safely process malformed thinking; expected an object',\n );\n }\n const thinking = { ...payload['thinking'] };\n if (thinking['type'] === 'disabled')\n return { thinking: { type: 'disabled' }, budgetTokens: undefined };\n if (thinking['budget_tokens'] === undefined) return { thinking, budgetTokens: undefined };\n const existingBudget = assertPositiveInteger(thinking['budget_tokens'], 'thinking.budget_tokens');\n if (maxTokens !== undefined && existingBudget >= maxTokens) {\n thinking['budget_tokens'] = maxTokens - 1;\n }\n if (typeof thinking['budget_tokens'] === 'number' && thinking['budget_tokens'] <= 0) {\n throw new Error(\n 'Anthropic attribution cannot satisfy thinking.budget_tokens < max_tokens when max_tokens <= 1',\n );\n }\n return { thinking, budgetTokens: thinking['budget_tokens'] as number };\n}\n\nfunction isClaudeCodeIdentityText(text: string): boolean {\n return (\n text.startsWith('x-anthropic-billing-header:') ||\n text === CLAUDE_AGENT_SDK_SYSTEM_TEXT ||\n text === \"You are Claude Code, Anthropic's official CLI for Claude.\" ||\n text ===\n \"You are Claude Code, Anthropic's official CLI for Claude, running within the Claude Agent SDK.\"\n );\n}\n\nfunction normalizeSystemBlock(block: unknown): unknown {\n if (!isPlainObject(block)) return block;\n const next = { ...block };\n if (typeof next['text'] === 'string')\n next['text'] = stripAnthropicSystemPromptBadLines(next['text']);\n if (next['cache_control'] !== undefined)\n next['cache_control'] = cloneAnthropicCacheControl(next['cache_control']);\n return next;\n}\n\nfunction hasCacheControl(block: unknown): block is JsonObject {\n return isPlainObject(block) && block['cache_control'] !== undefined;\n}\n\nfunction isSystemCacheSurface(block: unknown): block is JsonObject {\n return isPlainObject(block) && typeof block['text'] === 'string';\n}\n\nfunction markSystemCacheSurface(\n blocks: readonly unknown[],\n desired: AnthropicCacheControl | undefined,\n): unknown[] {\n const output = blocks.map((block) => (isPlainObject(block) ? { ...block } : block));\n if (desired === undefined) return output;\n\n let lastTextBlockIndex = -1;\n for (let index = 0; index < output.length; index += 1) {\n if (isSystemCacheSurface(output[index])) lastTextBlockIndex = index;\n }\n\n if (lastTextBlockIndex === -1) return output;\n\n const withLongRetentionUpgrades =\n desired.ttl === '1h'\n ? output.map((block) =>\n hasCacheControl(block) ? cloneBlockWithCacheControl(block, desired) : block,\n )\n : output;\n withLongRetentionUpgrades[lastTextBlockIndex] = cloneBlockWithCacheControl(\n withLongRetentionUpgrades[lastTextBlockIndex] as JsonObject,\n desired,\n );\n return withLongRetentionUpgrades;\n}\n\nfunction withClaudeCodeSystemIdentity(\n system: unknown,\n billingSystemText: string,\n cacheControl: AnthropicCacheControl | undefined,\n): unknown {\n const identityBlocks: JsonObject[] = [\n { type: 'text', text: billingSystemText },\n { type: 'text', text: CLAUDE_AGENT_SDK_SYSTEM_TEXT },\n ];\n if (system === undefined) return markSystemCacheSurface(identityBlocks, cacheControl);\n if (Array.isArray(system)) {\n const withoutPriorIdentity = system\n .filter((entry) => {\n if (!isPlainObject(entry) || typeof entry['text'] !== 'string') return true;\n return !isClaudeCodeIdentityText(entry['text']);\n })\n .map(normalizeSystemBlock);\n return markSystemCacheSurface([...identityBlocks, ...withoutPriorIdentity], cacheControl);\n }\n if (typeof system === 'string') {\n return markSystemCacheSurface(\n [...identityBlocks, { type: 'text', text: stripAnthropicSystemPromptBadLines(system) }],\n cacheControl,\n );\n }\n throw new Error(\n 'Anthropic attribution cannot safely apply Claude Code system identity to malformed system payload',\n );\n}\n\nfunction appendAuditRecord(args: {\n readonly provider: 'anthropic';\n readonly headerRegistered: boolean;\n readonly metadataSessionMatchesHeader: boolean;\n readonly maxTokens: number | undefined;\n readonly thinkingBudgetTokens: number | undefined;\n readonly beta: string;\n readonly betaResourcePath: string;\n readonly nativeAttestation: 'placeholder-pending-live';\n}): void {\n const auditPath = process.env[AUDIT_ENV];\n if (auditPath === undefined || auditPath.length === 0) return;\n const record = {\n schema_version: 'pipeline.anthropic_attribution_audit.v1',\n provider: args.provider,\n header_name: CLAUDE_CODE_SESSION_HEADER,\n header_registered: args.headerRegistered,\n anthropic_beta: args.beta,\n anthropic_version: '2023-06-01',\n beta_resource_path: args.betaResourcePath,\n native_attestation: args.nativeAttestation,\n metadata_user_id_keys: ['account_uuid', 'device_id', 'session_id'],\n metadata_session_id_matches_header: args.metadataSessionMatchesHeader,\n account_uuid_present: true,\n device_id_present: true,\n max_tokens: args.maxTokens,\n thinking_budget_tokens: args.thinkingBudgetTokens,\n };\n appendFileSync(auditPath, `${JSON.stringify(record)}\\n`, { encoding: 'utf8', mode: 0o600 });\n}\n\nfunction requireAttributionAccount(value: unknown): ClaudeAttributionAccount {\n if (\n !isPlainObject(value) ||\n typeof value['deviceId'] !== 'string' ||\n value['deviceId'].trim().length === 0 ||\n typeof value['accountUuid'] !== 'string' ||\n value['accountUuid'].trim().length === 0\n ) {\n throw new Error('Anthropic attribution account loader returned malformed account identity');\n }\n return { deviceId: value['deviceId'], accountUuid: value['accountUuid'] };\n}\n\nfunction anthropicMetadataUserId(account: ClaudeAttributionAccount, sessionId: string): string {\n return JSON.stringify({\n account_uuid: account.accountUuid,\n device_id: account.deviceId,\n session_id: sessionId,\n });\n}\n\ninterface AnthropicAttributionForSessionArgs {\n readonly payload: unknown;\n readonly model: PiModelLike;\n readonly sessionId: string;\n readonly account: ClaudeAttributionAccount;\n readonly headerRegistered?: boolean;\n readonly cacheRetention?: CacheRetention;\n}\n\nfunction rewriteAnthropicRequestPayloadForSession(\n args: AnthropicAttributionForSessionArgs,\n): JsonObject {\n if (!isPlainObject(args.payload)) {\n throw new Error('Anthropic attribution expected provider payload to be a JSON object');\n }\n\n const sessionId = requireSessionId(args.sessionId, 'provider options.sessionId');\n const metadata = args.payload['metadata'] === undefined ? {} : args.payload['metadata'];\n if (!isPlainObject(metadata)) {\n throw new Error('Anthropic attribution expected payload.metadata to be an object when present');\n }\n\n const policy = resolveClaudeCodeModelPolicy(args.model);\n const maxTokens =\n args.payload['max_tokens'] === undefined\n ? undefined\n : assertPositiveInteger(args.payload['max_tokens'], 'max_tokens');\n const { thinking, budgetTokens } = rewriteThinking(args.payload, maxTokens);\n const billingSystemText = buildClaudeCodeBillingSystemText(\n firstUserMessageTextFromPayload(args.payload),\n );\n const incomingCache = inspectCacheControls(args.payload);\n // The provider builder has already resolved environment/session defaults and\n // selected the cache surfaces. No incoming marker can therefore be Pi's\n // explicit call-level `cacheRetention: \"none\"` (used for compaction). Reapplying\n // the process default here would silently defeat that opt-out.\n const configuredCacheRetention = args.cacheRetention ?? incomingCache.retention;\n const cacheControl =\n configuredCacheRetention === undefined\n ? undefined\n : resolveAnthropicCacheControl(args.model, {\n cacheRetention: configuredCacheRetention,\n });\n\n const rewritten: JsonObject = {\n ...args.payload,\n metadata: {\n ...metadata,\n user_id: anthropicMetadataUserId(args.account, sessionId),\n },\n system: withClaudeCodeSystemIdentity(args.payload['system'], billingSystemText, cacheControl),\n };\n if (thinking !== undefined) rewritten['thinking'] = thinking;\n assertCacheControlBreakpointLimit(rewritten);\n\n appendAuditRecord({\n provider: 'anthropic',\n headerRegistered: args.headerRegistered ?? true,\n metadataSessionMatchesHeader: true,\n maxTokens,\n thinkingBudgetTokens: budgetTokens,\n beta: policy.beta,\n betaResourcePath: '/v1/messages?beta=true',\n nativeAttestation: 'placeholder-pending-live',\n });\n\n return rewritten;\n}\n\nfunction assertProtectedAnthropicAttribution(args: {\n readonly payload: JsonObject;\n readonly account: ClaudeAttributionAccount;\n readonly sessionId: string;\n readonly billingSystemText: string;\n readonly modelId: string;\n readonly cacheControlTopologySha256: string;\n}): void {\n if (args.payload['model'] !== args.modelId || args.payload['stream'] !== true) {\n throw new Error(\n 'Anthropic protected attribution model/stream route changed during payload middleware',\n );\n }\n const metadata = args.payload['metadata'];\n if (\n !isPlainObject(metadata) ||\n metadata['user_id'] !== anthropicMetadataUserId(args.account, args.sessionId)\n ) {\n throw new Error(\n 'Anthropic protected attribution metadata.user_id/account/device/session_id changed during payload middleware',\n );\n }\n const system = args.payload['system'];\n if (!Array.isArray(system)) {\n throw new Error(\n 'Anthropic protected attribution system identity was removed during payload middleware',\n );\n }\n const billingBlocks = system.filter(\n (block) =>\n isPlainObject(block) &&\n typeof block['text'] === 'string' &&\n block['text'].startsWith('x-anthropic-billing-header:'),\n );\n const sdkBlocks = system.filter(\n (block) => isPlainObject(block) && block['text'] === CLAUDE_AGENT_SDK_SYSTEM_TEXT,\n );\n if (\n billingBlocks.length !== 1 ||\n billingBlocks[0]?.['text'] !== args.billingSystemText ||\n sdkBlocks.length !== 1 ||\n system[0] !== billingBlocks[0] ||\n system[1] !== sdkBlocks[0]\n ) {\n throw new Error(\n 'Anthropic protected attribution system identity changed during payload middleware',\n );\n }\n assertCacheControlBreakpointLimit(args.payload);\n if (cacheControlTopologySha256(args.payload) !== args.cacheControlTopologySha256) {\n throw new Error('Anthropic protected cache-control topology changed during payload middleware');\n }\n}\n\nexport function rewriteAnthropicRequestPayload(args: {\n readonly payload: unknown;\n readonly ctx: PiContextLike;\n readonly account: ClaudeAttributionAccount;\n readonly headerRegistered?: boolean;\n readonly cacheRetention?: CacheRetention;\n readonly env?: ProviderEnv;\n}): unknown {\n if (!isAnthropicContext(args.ctx)) return undefined;\n return rewriteAnthropicRequestPayloadForSession({\n payload: args.payload,\n model: args.ctx.model ?? {},\n sessionId: getSessionId(args.ctx),\n account: args.account,\n ...(args.headerRegistered === undefined ? {} : { headerRegistered: args.headerRegistered }),\n ...(args.cacheRetention === undefined ? {} : { cacheRetention: args.cacheRetention }),\n });\n}\n\nfunction sanitizeSurrogates(text: string): string {\n let sanitized = '';\n for (let index = 0; index < text.length; index += 1) {\n const code = text.charCodeAt(index);\n if (code >= 0xd800 && code <= 0xdbff) {\n const next = index + 1 < text.length ? text.charCodeAt(index + 1) : -1;\n if (next >= 0xdc00 && next <= 0xdfff) {\n sanitized += text[index] ?? '';\n sanitized += text[index + 1] ?? '';\n index += 1;\n } else {\n sanitized += '\\uFFFD';\n }\n } else if (code >= 0xdc00 && code <= 0xdfff) {\n sanitized += '\\uFFFD';\n } else {\n sanitized += text[index] ?? '';\n }\n }\n return sanitized;\n}\n\nfunction convertContentBlocks(content: readonly PiContentBlock[]): JsonObject[] {\n const blocks: JsonObject[] = content.map((block) => {\n if (block.type === 'text') return { type: 'text', text: sanitizeSurrogates(block.text) };\n return {\n type: 'image',\n source: { type: 'base64', media_type: block.mimeType, data: block.data },\n };\n });\n if (blocks.length === 0) blocks.push({ type: 'text', text: '' });\n if (!blocks.some((block) => block['type'] === 'text'))\n blocks.unshift({ type: 'text', text: '(see attached image)' });\n return blocks;\n}\n\nfunction cloneMessageForCacheControl(message: JsonObject): JsonObject {\n const content = message['content'];\n return {\n ...message,\n ...(Array.isArray(content)\n ? { content: content.map((block) => (isPlainObject(block) ? { ...block } : block)) }\n : {}),\n };\n}\n\nfunction isCacheableConversationBlock(role: unknown, block: JsonObject): boolean {\n if (role === 'assistant') return block['type'] === 'text';\n return block['type'] === 'text' || block['type'] === 'image' || block['type'] === 'tool_result';\n}\n\nfunction markMessageContentCacheSurface(\n message: JsonObject,\n cacheControl: AnthropicCacheControl,\n): boolean {\n const role = message['role'];\n if (role !== 'user' && role !== 'assistant') return false;\n const content = message['content'];\n if (typeof content === 'string') {\n throw new Error(\n 'Anthropic attribution cache projection encountered non-canonical string message content',\n );\n }\n if (!Array.isArray(content)) return false;\n for (let index = content.length - 1; index >= 0; index -= 1) {\n const block = content[index];\n if (!isPlainObject(block) || !isCacheableConversationBlock(role, block)) continue;\n content[index] = cloneBlockWithCacheControl(block, cacheControl);\n return true;\n }\n return false;\n}\n\nfunction markLastConversationCacheSurface(\n messages: readonly JsonObject[],\n cacheControl: AnthropicCacheControl | undefined,\n): JsonObject[] {\n const output = messages.map(cloneMessageForCacheControl);\n if (cacheControl === undefined) return output;\n for (let index = output.length - 1; index >= 0; index -= 1) {\n const message = output[index];\n if (message !== undefined && markMessageContentCacheSurface(message, cacheControl)) break;\n }\n return output;\n}\n\nfunction canonicalizeJson(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(canonicalizeJson);\n if (!isPlainObject(value)) return value;\n const output: JsonObject = {};\n for (const key of Object.keys(value).sort()) {\n const child = value[key];\n if (child !== undefined) output[key] = canonicalizeJson(child);\n }\n return output;\n}\n\nfunction canonicalJson(value: unknown): string {\n return JSON.stringify(canonicalizeJson(value));\n}\n\nfunction sha256Canonical(value: unknown): string {\n return createHash('sha256').update(canonicalJson(value), 'utf8').digest('hex');\n}\n\nfunction isSha256(value: unknown): value is string {\n return typeof value === 'string' && /^[a-f0-9]{64}$/u.test(value);\n}\n\nfunction isNonEmptyString(value: unknown): value is string {\n return typeof value === 'string' && value.trim().length > 0;\n}\n\nfunction blockWithoutCacheControl(block: unknown): unknown {\n if (!isPlainObject(block)) return block;\n const output = { ...block };\n delete output['cache_control'];\n return output;\n}\n\nfunction promptMessagesWithoutCacheControls(messages: readonly JsonObject[]): JsonObject[] {\n return messages.map((message) => {\n const content = message['content'];\n return {\n ...message,\n ...(Array.isArray(content) ? { content: content.map(blockWithoutCacheControl) } : {}),\n };\n });\n}\n\nfunction promptMessagesHash(messages: readonly JsonObject[]): string {\n return sha256Canonical(promptMessagesWithoutCacheControls(messages));\n}\n\nfunction assistantContentHash(content: readonly JsonObject[]): string {\n return sha256Canonical(content);\n}\n\ninterface AnthropicLineageDetails {\n readonly schema_version: typeof ANTHROPIC_LINEAGE_SCHEMA;\n readonly projection_version: typeof ANTHROPIC_PROJECTION_VERSION;\n readonly source_provider: 'anthropic';\n readonly source_api: 'anthropic-messages';\n readonly source_model: string;\n readonly response_id: string;\n readonly assistant_content_sha256: string;\n readonly conversation_static_sha256: string;\n readonly request_message_count: number;\n readonly request_messages_sha256: string;\n readonly cache_profile_sha256: string;\n readonly cache_retention: CacheRetention;\n readonly compaction_boundary_sha256: string | null;\n readonly signature_epoch_sha256: string;\n readonly signature_epoch_inherits_prior: boolean;\n readonly previous_message_id: string | null;\n}\n\nfunction parseAnthropicLineageDetails(\n message: Extract<PiMessage, { role: 'assistant' }>,\n): AnthropicLineageDetails | undefined {\n const diagnostic = [...(message.diagnostics ?? [])]\n .reverse()\n .find((candidate) => candidate.type === ANTHROPIC_LINEAGE_DIAGNOSTIC_TYPE);\n const details = diagnostic?.details;\n if (!isPlainObject(details)) return undefined;\n\n const sourceModel = details['source_model'];\n const responseId = details['response_id'];\n const assistantContentSha256 = details['assistant_content_sha256'];\n const conversationStaticSha256 = details['conversation_static_sha256'];\n const requestMessageCount = details['request_message_count'];\n const requestMessagesSha256 = details['request_messages_sha256'];\n const cacheProfileSha256 = details['cache_profile_sha256'];\n const cacheRetention = details['cache_retention'];\n const compactionBoundarySha256 = details['compaction_boundary_sha256'];\n const signatureEpochSha256 = details['signature_epoch_sha256'];\n const signatureEpochInheritsPrior = details['signature_epoch_inherits_prior'];\n const previousMessageId = details['previous_message_id'];\n if (\n details['schema_version'] !== ANTHROPIC_LINEAGE_SCHEMA ||\n details['projection_version'] !== ANTHROPIC_PROJECTION_VERSION ||\n details['source_provider'] !== 'anthropic' ||\n details['source_api'] !== 'anthropic-messages' ||\n !isNonEmptyString(sourceModel) ||\n !isNonEmptyString(responseId) ||\n !isSha256(assistantContentSha256) ||\n !isSha256(conversationStaticSha256) ||\n typeof requestMessageCount !== 'number' ||\n !Number.isSafeInteger(requestMessageCount) ||\n requestMessageCount < 0 ||\n !isSha256(requestMessagesSha256) ||\n !isSha256(cacheProfileSha256) ||\n (cacheRetention !== 'none' && cacheRetention !== 'short' && cacheRetention !== 'long') ||\n (compactionBoundarySha256 !== null && !isSha256(compactionBoundarySha256)) ||\n !isSha256(signatureEpochSha256) ||\n typeof signatureEpochInheritsPrior !== 'boolean' ||\n (previousMessageId !== null && !isNonEmptyString(previousMessageId))\n ) {\n return undefined;\n }\n\n return {\n schema_version: ANTHROPIC_LINEAGE_SCHEMA,\n projection_version: ANTHROPIC_PROJECTION_VERSION,\n source_provider: 'anthropic',\n source_api: 'anthropic-messages',\n source_model: sourceModel,\n response_id: responseId,\n assistant_content_sha256: assistantContentSha256,\n conversation_static_sha256: conversationStaticSha256,\n request_message_count: requestMessageCount,\n request_messages_sha256: requestMessagesSha256,\n cache_profile_sha256: cacheProfileSha256,\n cache_retention: cacheRetention,\n compaction_boundary_sha256: compactionBoundarySha256,\n signature_epoch_sha256: signatureEpochSha256,\n signature_epoch_inherits_prior: signatureEpochInheritsPrior,\n previous_message_id: previousMessageId,\n };\n}\n\nfunction isSuccessfulLineageStopReason(\n stopReason: string | undefined,\n): stopReason is 'stop' | 'length' | 'toolUse' {\n return stopReason === 'stop' || stopReason === 'length' || stopReason === 'toolUse';\n}\n\nfunction lineageBindsContainingAssistant(\n message: Extract<PiMessage, { role: 'assistant' }>,\n lineage: AnthropicLineageDetails,\n): boolean {\n return (\n message.provider === lineage.source_provider &&\n message.api === lineage.source_api &&\n isNonEmptyString(message.model) &&\n message.model === lineage.source_model &&\n isSuccessfulLineageStopReason(message.stopReason) &&\n isNonEmptyString(message.responseId) &&\n message.responseId === lineage.response_id &&\n lineage.assistant_content_sha256 === assistantContentHash(message.content)\n );\n}\n\nfunction canTargetReadAnthropicThinking(sourceModel: string, targetModel: string): boolean {\n if (sourceModel === targetModel) return true;\n return (\n targetModel === 'claude-fable-5-1' && CLAUDE_CODE_MODEL_POLICIES[sourceModel] !== undefined\n );\n}\n\ninterface SignatureEpochPolicy {\n readonly sha256: string;\n readonly inheritsPrior: boolean;\n}\n\nfunction initialSignatureEpochPolicy(\n targetModelId: string,\n cacheRetention: CacheRetention,\n compactionBoundarySha256: string | null,\n): SignatureEpochPolicy {\n return {\n sha256: sha256Canonical({\n projection_version: ANTHROPIC_PROJECTION_VERSION,\n kind: 'initial',\n target_model: targetModelId,\n cache_retention: cacheRetention,\n compaction_boundary_sha256: compactionBoundarySha256,\n }),\n inheritsPrior: compactionBoundarySha256 === null,\n };\n}\n\nfunction resolveSignatureEpochPolicy(\n model: PiModelLike,\n messages: readonly PiMessage[],\n cacheRetention: CacheRetention,\n compactionBoundarySha256: string | null,\n): SignatureEpochPolicy {\n const targetModelId = normalizedAnthropicModelId(model);\n const latestState = targetLineageState({ messages }, targetModelId);\n if (latestState.kind === 'none') {\n return initialSignatureEpochPolicy(targetModelId, cacheRetention, compactionBoundarySha256);\n }\n if (latestState.kind === 'untrusted') {\n return {\n sha256: sha256Canonical({\n projection_version: ANTHROPIC_PROJECTION_VERSION,\n kind: 'untrusted-lineage-reset',\n target_model: targetModelId,\n cache_retention: cacheRetention,\n compaction_boundary_sha256: compactionBoundarySha256,\n latest_assistant_sha256: latestState.assistantSha256,\n }),\n inheritsPrior: false,\n };\n }\n\n const latest = latestState.lineage;\n const retentionChanged = latest.cache_retention !== cacheRetention;\n const declaredNewCompaction =\n compactionBoundarySha256 !== null &&\n compactionBoundarySha256 !== latest.compaction_boundary_sha256;\n if (retentionChanged || declaredNewCompaction) {\n return {\n sha256: sha256Canonical({\n projection_version: ANTHROPIC_PROJECTION_VERSION,\n kind: 'transition',\n previous_signature_epoch_sha256: latest.signature_epoch_sha256,\n target_model: targetModelId,\n cache_retention: cacheRetention,\n compaction_boundary_sha256: compactionBoundarySha256,\n reason: retentionChanged ? 'cache-retention' : 'compaction',\n }),\n inheritsPrior: false,\n };\n }\n return {\n sha256: latest.signature_epoch_sha256,\n inheritsPrior: latest.signature_epoch_inherits_prior,\n };\n}\n\nfunction isTrustedReplayableAnthropicAssistant(\n message: Extract<PiMessage, { role: 'assistant' }>,\n targetModel: PiModelLike,\n targetCacheRetention: CacheRetention,\n conversationStaticSha256: string,\n wireMessagesBeforeAssistant: readonly JsonObject[],\n): boolean {\n if (typeof message.model !== 'string') return false;\n const lineage = parseAnthropicLineageDetails(message);\n if (\n lineage === undefined ||\n !lineageBindsContainingAssistant(message, lineage) ||\n !canTargetReadAnthropicThinking(message.model, normalizedAnthropicModelId(targetModel)) ||\n lineage.cache_retention !== targetCacheRetention ||\n lineage.conversation_static_sha256 !== conversationStaticSha256 ||\n lineage.request_message_count !== wireMessagesBeforeAssistant.length ||\n lineage.request_messages_sha256 !== promptMessagesHash(wireMessagesBeforeAssistant)\n ) {\n return false;\n }\n return true;\n}\n\nfunction normalizeAnthropicToolCallId(id: string): string {\n if (/^[a-zA-Z0-9_-]{1,64}$/u.test(id)) return id;\n const safe = id.replace(/[^a-zA-Z0-9_-]/gu, '_');\n const digest = createHash('sha256').update(id, 'utf8').digest('hex').slice(0, 12);\n const prefix = safe.slice(0, 64 - digest.length - 1) || 'tool';\n return `${prefix}_${digest}`.slice(0, 64);\n}\n\nfunction projectedUserContent(content: string | readonly PiContentBlock[]): JsonObject[] {\n if (typeof content === 'string') {\n return content.trim().length > 0 ? [{ type: 'text', text: sanitizeSurrogates(content) }] : [];\n }\n const blocks: JsonObject[] = [];\n for (const block of content) {\n if (block.type === 'text') {\n if (block.text.trim().length > 0)\n blocks.push({ type: 'text', text: sanitizeSurrogates(block.text) });\n continue;\n }\n if (block.type === 'image') {\n blocks.push({\n type: 'image',\n source: { type: 'base64', media_type: block.mimeType, data: block.data },\n });\n continue;\n }\n throw new Error('Anthropic attribution encountered an unsupported user content block');\n }\n return blocks;\n}\n\nfunction compactionBoundarySha256FromPiMessages(messages: readonly PiMessage[]): string | null {\n const first = messages[0];\n if (first?.role !== 'user') return null;\n const content = projectedUserContent(first.content);\n return declaredCompactionBoundarySha256([{ role: 'user', content }]);\n}\n\nfunction convertMessages(\n model: PiModelLike,\n messages: readonly PiMessage[],\n conversationStaticSha256: string,\n cacheRetention: CacheRetention,\n signatureEpoch: SignatureEpochPolicy,\n cacheControl?: AnthropicCacheControl,\n): JsonObject[] {\n const params: JsonObject[] = [];\n const toolCallIdMap = new Map<string, string>();\n const normalizedToolCallOwners = new Map<string, string>();\n let pendingToolCalls: Array<{ readonly id: string; readonly name: string }> = [];\n let completedPendingToolCallIds = new Set<string>();\n\n const normalizeToolCallId = (id: string): string => {\n const existing = toolCallIdMap.get(id);\n if (existing !== undefined) return existing;\n const normalized = normalizeAnthropicToolCallId(id);\n const owner = normalizedToolCallOwners.get(normalized);\n if (owner !== undefined && owner !== id) {\n throw new Error('Anthropic attribution tool-call ID normalization collision');\n }\n normalizedToolCallOwners.set(normalized, id);\n toolCallIdMap.set(id, normalized);\n return normalized;\n };\n\n const flushMissingToolResults = (): void => {\n const missing = pendingToolCalls.filter((call) => !completedPendingToolCallIds.has(call.id));\n if (missing.length > 0) {\n params.push({\n role: 'user',\n content: missing.map((call) => ({\n type: 'tool_result',\n tool_use_id: call.id,\n content: 'No result provided',\n is_error: true,\n })),\n });\n }\n pendingToolCalls = [];\n completedPendingToolCallIds = new Set<string>();\n };\n\n for (let index = 0; index < messages.length; index += 1) {\n const message = messages[index];\n if (message === undefined) throw new TypeError(`Anthropic message ${index} is missing`);\n\n if (message.role === 'user') {\n flushMissingToolResults();\n const content = projectedUserContent(message.content);\n if (content.length > 0) params.push({ role: 'user', content });\n continue;\n }\n\n if (message.role === 'assistant') {\n flushMissingToolResults();\n if (message.stopReason === 'error' || message.stopReason === 'aborted') continue;\n const lineage = parseAnthropicLineageDetails(message);\n const epochAllowsReplay =\n signatureEpoch.inheritsPrior || lineage?.signature_epoch_sha256 === signatureEpoch.sha256;\n const preserveThinking =\n epochAllowsReplay &&\n isTrustedReplayableAnthropicAssistant(\n message,\n model,\n cacheRetention,\n conversationStaticSha256,\n params,\n );\n const content: JsonObject[] = [];\n for (const block of message.content) {\n if (block['type'] === 'text') {\n if (typeof block['text'] !== 'string')\n throw new Error('Anthropic attribution encountered malformed assistant text');\n if (block['text'].trim().length > 0)\n content.push({ type: 'text', text: sanitizeSurrogates(block['text']) });\n continue;\n }\n if (block['type'] === 'thinking') {\n if (typeof block['thinking'] !== 'string')\n throw new Error('Anthropic attribution encountered malformed assistant thinking');\n const signature =\n typeof block['thinkingSignature'] === 'string' ? block['thinkingSignature'] : '';\n if (preserveThinking && signature.trim().length > 0) {\n content.push(\n block['redacted'] === true\n ? { type: 'redacted_thinking', data: signature }\n : {\n type: 'thinking',\n // A signature authenticates the exact provider-returned reasoning bytes.\n // Provenance and lineage checks above make this raw replay safe; changing\n // even valid non-BMP Unicode here would invalidate the opaque signature.\n thinking: block['thinking'],\n signature,\n },\n );\n } else if (block['redacted'] !== true && block['thinking'].trim().length > 0) {\n content.push({ type: 'text', text: sanitizeSurrogates(block['thinking']) });\n }\n continue;\n }\n if (block['type'] === 'toolCall') {\n if (typeof block['id'] !== 'string' || typeof block['name'] !== 'string')\n throw new Error('Anthropic attribution encountered malformed assistant tool call');\n const id = normalizeToolCallId(block['id']);\n content.push({\n type: 'tool_use',\n id,\n name: block['name'],\n input: canonicalizeJson(block['arguments'] ?? {}),\n });\n continue;\n }\n throw new Error(\n `Anthropic attribution encountered unsupported assistant block type ${JSON.stringify(block['type'])}`,\n );\n }\n if (content.length > 0) {\n params.push({ role: 'assistant', content });\n pendingToolCalls = content\n .filter((block) => block['type'] === 'tool_use')\n .map((block) => ({ id: String(block['id']), name: String(block['name']) }));\n }\n continue;\n }\n\n const toolResults: JsonObject[] = [];\n let lookahead = index;\n while (lookahead < messages.length && messages[lookahead]?.role === 'toolResult') {\n const result = messages[lookahead] as Extract<PiMessage, { role: 'toolResult' }>;\n const toolUseId = normalizeToolCallId(result.toolCallId);\n completedPendingToolCallIds.add(toolUseId);\n toolResults.push({\n type: 'tool_result',\n tool_use_id: toolUseId,\n content: convertContentBlocks(result.content),\n is_error: result.isError === true,\n });\n lookahead += 1;\n }\n index = lookahead - 1;\n if (toolResults.length > 0) params.push({ role: 'user', content: toolResults });\n }\n flushMissingToolResults();\n return markLastConversationCacheSurface(params, cacheControl);\n}\n\nfunction convertTools(\n tools: readonly PiToolLike[] | undefined,\n cacheControl?: AnthropicCacheControl,\n): JsonObject[] {\n if (!tools || tools.length === 0) return [];\n return tools.map((tool, index) => {\n const parameters = isPlainObject(tool.parameters) ? tool.parameters : {};\n const converted: JsonObject = {\n name: tool.name,\n description: tool.description ?? '',\n input_schema: {\n type: 'object',\n properties: canonicalizeJson(\n isPlainObject(parameters['properties']) ? parameters['properties'] : {},\n ),\n required: Array.isArray(parameters['required']) ? [...parameters['required']] : [],\n },\n };\n return cacheControl !== undefined && index === tools.length - 1\n ? cloneBlockWithCacheControl(converted, cacheControl)\n : converted;\n });\n}\n\nfunction thinkingBudgetFor(\n level: NonNullable<PiSimpleStreamOptions['reasoning']>,\n maxTokens: number,\n custom?: PiSimpleStreamOptions['thinkingBudgets'],\n): number {\n const defaults = {\n minimal: 1024,\n low: 4096,\n medium: 10240,\n high: 20480,\n xhigh: 32768,\n off: 0,\n } as const;\n const requested = level === 'off' ? 0 : (custom?.[level] ?? defaults[level]);\n return Math.min(maxTokens - 1, requested);\n}\n\nfunction adaptiveEffortFor(\n level: Exclude<NonNullable<PiSimpleStreamOptions['reasoning']>, 'off'>,\n): 'low' | 'medium' | 'high' | 'xhigh' {\n switch (level) {\n case 'low':\n case 'medium':\n case 'high':\n case 'xhigh':\n return level;\n case 'minimal':\n throw new Error(\n 'Anthropic attribution cannot map Pi reasoning=minimal to Claude adaptive effort; use low, medium, high, or xhigh',\n );\n }\n}\n\nfunction conversationStaticHash(system: readonly unknown[], tools: readonly JsonObject[]): string {\n const normalizedSystem = system\n .filter(\n (block) =>\n !isPlainObject(block) ||\n typeof block['text'] !== 'string' ||\n !isClaudeCodeIdentityText(block['text']),\n )\n .map(blockWithoutCacheControl);\n return sha256Canonical({\n attribution_profile: {\n claude_code_version: CLAUDE_CODE_VERSION,\n entrypoint: CLAUDE_CODE_ENTRYPOINT,\n },\n system: normalizedSystem,\n tools: tools.map(blockWithoutCacheControl),\n });\n}\n\nexport function buildAnthropicRequestParams(\n model: PiModelLike,\n context: PiStreamContext,\n options?: PiSimpleStreamOptions,\n): JsonObject {\n return buildAnthropicRequest(model, context, options).params;\n}\n\nfunction buildAnthropicRequest(\n model: PiModelLike,\n context: PiStreamContext,\n options?: PiSimpleStreamOptions,\n): { readonly params: JsonObject; readonly signatureEpoch: SignatureEpochPolicy } {\n const policy = resolveClaudeCodeModelPolicy(model);\n const maxTokens = resolveAnthropicMaxTokens(model);\n const cacheControl = resolveAnthropicCacheControl(model, options);\n const cacheRetention: CacheRetention =\n cacheControl === undefined ? 'none' : cacheControl.ttl === '1h' ? 'long' : 'short';\n let signatureEpoch = resolveSignatureEpochPolicy(\n model,\n context.messages,\n cacheRetention,\n compactionBoundarySha256FromPiMessages(context.messages),\n );\n const system =\n context.systemPrompt && context.systemPrompt.trim().length > 0\n ? markSystemCacheSurface(\n [\n {\n type: 'text',\n text: sanitizeSurrogates(stripAnthropicSystemPromptBadLines(context.systemPrompt)),\n },\n ],\n cacheControl,\n )\n : [];\n const tools = convertTools(\n context.tools,\n model.compat?.supportsCacheControlOnTools === false ? undefined : cacheControl,\n );\n const staticSha256 = conversationStaticHash(system, tools);\n const params: JsonObject = {\n model: policy.modelId,\n messages: convertMessages(\n model,\n context.messages,\n staticSha256,\n cacheRetention,\n signatureEpoch,\n cacheControl,\n ),\n max_tokens: maxTokens,\n stream: true,\n tools,\n };\n if (system.length > 0) params['system'] = system;\n if (options?.toolChoice !== undefined)\n params['tool_choice'] = canonicalizeJson(options.toolChoice);\n const reasoning = options?.reasoning;\n if (model.reasoning && reasoning !== undefined) {\n if (reasoning === 'off') {\n if (policy.enforcesThinkingPrefixBinding) {\n throw new Error('Anthropic attribution cannot disable thinking for Claude Fable 5.1');\n }\n params['thinking'] = { type: 'disabled' };\n params['temperature'] = options?.temperature ?? 1;\n } else if (policy.thinkingPolicy === 'adaptive-effort') {\n params['thinking'] = {\n type: 'adaptive',\n ...(policy.enforcesThinkingPrefixBinding\n ? { block_binding: { prefix_mismatch_behavior: 'error' } }\n : {}),\n };\n params['output_config'] = { effort: adaptiveEffortFor(reasoning) };\n } else {\n params['thinking'] = {\n type: 'enabled',\n budget_tokens: thinkingBudgetFor(reasoning, maxTokens, options?.thinkingBudgets),\n };\n }\n } else if (policy.enforcesThinkingPrefixBinding) {\n params['thinking'] = {\n type: 'adaptive',\n block_binding: { prefix_mismatch_behavior: 'error' },\n };\n } else {\n params['thinking'] = { type: 'disabled' };\n params['temperature'] = options?.temperature ?? 1;\n }\n const previous = latestLineageForTarget(context, normalizedAnthropicModelId(model));\n if (\n previous !== undefined &&\n signatureEpoch.sha256 === previous.signature_epoch_sha256 &&\n (previous.cache_profile_sha256 !== cacheProfileHash(model, policy, params, staticSha256) ||\n !hasLineageRequestPrefix(requestMessagesFromPayload(params), previous))\n ) {\n // Resume/reload and profile edits can invalidate a lane. Re-project before transport,\n // rather than just clearing the response ID while retaining prefix-bound signatures.\n signatureEpoch = {\n sha256: sha256Canonical({\n projection_version: ANTHROPIC_PROJECTION_VERSION,\n kind: 'lineage-reset',\n previous_signature_epoch_sha256: previous.signature_epoch_sha256,\n previous_response_id: previous.response_id,\n cache_profile_sha256: cacheProfileHash(model, policy, params, staticSha256),\n request_messages_sha256: promptMessagesHash(requestMessagesFromPayload(params)),\n }),\n inheritsPrior: false,\n };\n params['messages'] = convertMessages(\n model,\n context.messages,\n staticSha256,\n cacheRetention,\n signatureEpoch,\n cacheControl,\n );\n }\n assertCacheControlBreakpointLimit(params);\n return { params, signatureEpoch };\n}\n\ninterface PreparedAnthropicLineage {\n readonly key: string;\n readonly details: Omit<AnthropicLineageDetails, 'response_id' | 'assistant_content_sha256'>;\n}\n\nfunction requestMessagesFromPayload(payload: JsonObject): JsonObject[] {\n const messages = payload['messages'];\n if (!Array.isArray(messages) || messages.some((message) => !isPlainObject(message))) {\n throw new Error('Anthropic attribution final payload.messages must be an object array');\n }\n for (const message of messages as JsonObject[]) {\n if (message['role'] !== 'user' && message['role'] !== 'assistant') {\n throw new Error('Anthropic attribution final payload message has an unsupported role');\n }\n const content = message['content'];\n if (!Array.isArray(content) || content.some((block) => !isPlainObject(block))) {\n throw new Error(\n 'Anthropic attribution final payload message content must use canonical block arrays',\n );\n }\n }\n return messages as JsonObject[];\n}\n\nfunction systemBlocksFromPayload(payload: JsonObject): unknown[] {\n const system = payload['system'];\n if (system === undefined) return [];\n if (typeof system === 'string') return [{ type: 'text', text: system }];\n if (!Array.isArray(system))\n throw new Error('Anthropic attribution final payload.system must be a string or block array');\n return system;\n}\n\nfunction toolsFromPayload(payload: JsonObject): JsonObject[] {\n const tools = payload['tools'];\n if (tools === undefined) return [];\n if (!Array.isArray(tools) || tools.some((tool) => !isPlainObject(tool))) {\n throw new Error('Anthropic attribution final payload.tools must be an object array');\n }\n return tools as JsonObject[];\n}\n\nfunction cacheProfileHash(\n model: PiModelLike,\n policy: ClaudeCodeModelPolicy,\n payload: JsonObject,\n staticSha256: string,\n): string {\n return sha256Canonical({\n projection_version: ANTHROPIC_PROJECTION_VERSION,\n model: normalizedAnthropicModelId(model),\n beta: policy.beta,\n conversation_static_sha256: staticSha256,\n thinking: payload['thinking'],\n output_config: payload['output_config'],\n tool_choice: payload['tool_choice'],\n });\n}\n\nfunction cacheRetentionFromPayload(payload: JsonObject): CacheRetention {\n return inspectCacheControls(payload).retention ?? 'none';\n}\n\ntype TargetLineageState =\n | { readonly kind: 'none' }\n | { readonly kind: 'trusted'; readonly lineage: AnthropicLineageDetails }\n | { readonly kind: 'untrusted'; readonly assistantSha256: string };\n\nfunction untrustedAssistantSha256(\n message: Extract<PiMessage, { role: 'assistant' }>,\n): string {\n return sha256Canonical({\n provider: message.provider ?? null,\n api: message.api ?? null,\n model: message.model ?? null,\n response_id: message.responseId ?? null,\n stop_reason: message.stopReason ?? null,\n assistant_content_sha256: assistantContentHash(message.content),\n lineage_diagnostics: (message.diagnostics ?? []).filter(\n (diagnostic) => diagnostic.type === ANTHROPIC_LINEAGE_DIAGNOSTIC_TYPE,\n ),\n });\n}\n\nfunction targetLineageState(\n context: PiStreamContext,\n targetModelId: string,\n): TargetLineageState {\n for (let index = context.messages.length - 1; index >= 0; index -= 1) {\n const message = context.messages[index];\n if (message?.role !== 'assistant') continue;\n\n const lineageDiagnostics = (message.diagnostics ?? []).filter(\n (diagnostic) => diagnostic.type === ANTHROPIC_LINEAGE_DIAGNOSTIC_TYPE,\n );\n const latestRawDetails = lineageDiagnostics.at(-1)?.details;\n const receiptClaimsTarget = latestRawDetails?.['source_model'] === targetModelId;\n const assistantClaimsTarget = message.model === targetModelId;\n if (!assistantClaimsTarget && !receiptClaimsTarget) continue;\n\n if (\n (message.stopReason === 'error' || message.stopReason === 'aborted') &&\n lineageDiagnostics.length === 0\n ) {\n continue;\n }\n\n const lineage = parseAnthropicLineageDetails(message);\n if (\n lineage?.source_model === targetModelId &&\n lineageBindsContainingAssistant(message, lineage)\n ) {\n return { kind: 'trusted', lineage };\n }\n return { kind: 'untrusted', assistantSha256: untrustedAssistantSha256(message) };\n }\n return { kind: 'none' };\n}\n\nfunction latestLineageForTarget(\n context: PiStreamContext,\n targetModelId: string,\n): AnthropicLineageDetails | undefined {\n const state = targetLineageState(context, targetModelId);\n return state.kind === 'trusted' ? state.lineage : undefined;\n}\n\nfunction declaredCompactionBoundarySha256(messages: readonly JsonObject[]): string | null {\n const firstMessage = messages[0];\n if (firstMessage?.['role'] !== 'user' || !Array.isArray(firstMessage['content'])) return null;\n const declaresCompaction = firstMessage['content'].some(\n (block) =>\n isPlainObject(block) &&\n block['type'] === 'text' &&\n typeof block['text'] === 'string' &&\n block['text'].startsWith(COMPACTION_SUMMARY_PREFIX),\n );\n if (!declaresCompaction) return null;\n return sha256Canonical(promptMessagesWithoutCacheControls([firstMessage])[0]);\n}\n\nfunction hasLineageRequestPrefix(\n messages: readonly JsonObject[],\n previous: AnthropicLineageDetails,\n): boolean {\n return (\n messages.length >= previous.request_message_count &&\n promptMessagesHash(messages.slice(0, previous.request_message_count)) ===\n previous.request_messages_sha256\n );\n}\n\nfunction prepareAnthropicLineageDetails(args: {\n readonly model: PiModelLike;\n readonly policy: ClaudeCodeModelPolicy;\n readonly context: PiStreamContext;\n readonly payload: JsonObject;\n readonly signatureEpoch: SignatureEpochPolicy;\n}): PreparedAnthropicLineage['details'] {\n const targetModelId = normalizedAnthropicModelId(args.model);\n const messages = requestMessagesFromPayload(args.payload);\n const staticSha256 = conversationStaticHash(\n systemBlocksFromPayload(args.payload),\n toolsFromPayload(args.payload),\n );\n const profileSha256 = cacheProfileHash(args.model, args.policy, args.payload, staticSha256);\n const cacheRetention = cacheRetentionFromPayload(args.payload);\n const compactionBoundarySha256 = declaredCompactionBoundarySha256(messages);\n const signatureEpoch = args.signatureEpoch;\n let previous = latestLineageForTarget(args.context, targetModelId);\n if (\n previous !== undefined &&\n (signatureEpoch.sha256 !== previous.signature_epoch_sha256 ||\n !hasLineageRequestPrefix(messages, previous) ||\n previous.cache_profile_sha256 !== profileSha256 ||\n previous.cache_retention !== cacheRetention)\n ) {\n previous = undefined;\n }\n return {\n schema_version: ANTHROPIC_LINEAGE_SCHEMA,\n projection_version: ANTHROPIC_PROJECTION_VERSION,\n source_provider: 'anthropic',\n source_api: 'anthropic-messages',\n source_model: targetModelId,\n conversation_static_sha256: staticSha256,\n request_message_count: messages.length,\n request_messages_sha256: promptMessagesHash(messages),\n cache_profile_sha256: profileSha256,\n cache_retention: cacheRetention,\n compaction_boundary_sha256: compactionBoundarySha256,\n signature_epoch_sha256: signatureEpoch.sha256,\n signature_epoch_inherits_prior: signatureEpoch.inheritsPrior,\n previous_message_id: previous?.response_id ?? null,\n };\n}\n\nclass AnthropicLineageCoordinator {\n private readonly inFlight = new Set<string>();\n\n prepare(args: {\n readonly sessionId: string;\n readonly model: PiModelLike;\n readonly policy: ClaudeCodeModelPolicy;\n readonly context: PiStreamContext;\n readonly payload: JsonObject;\n readonly signatureEpoch: SignatureEpochPolicy;\n }): PreparedAnthropicLineage {\n const targetModelId = normalizedAnthropicModelId(args.model);\n const key = `${args.sessionId}\\u0000${targetModelId}`;\n if (this.inFlight.has(key)) {\n throw new Error(\n `Anthropic cache lineage already has an in-flight request for ${targetModelId}; concurrent continuations must fork`,\n );\n }\n const details = prepareAnthropicLineageDetails(args);\n this.inFlight.add(key);\n return { key, details };\n }\n\n release(prepared: PreparedAnthropicLineage): void {\n this.inFlight.delete(prepared.key);\n }\n}\n\nconst anthropicLineageCoordinator = new AnthropicLineageCoordinator();\n\nexport function createAnthropicLineageDiagnostic(args: {\n readonly model: PiModelLike;\n readonly responseId: string;\n readonly assistantContent: readonly JsonObject[];\n readonly requestPayload: JsonObject;\n readonly previousMessageId?: string | null;\n}): PiAssistantDiagnosticLike {\n if (!isNonEmptyString(args.responseId)) {\n throw new Error('Anthropic lineage diagnostic requires a non-empty response ID');\n }\n if (args.previousMessageId !== undefined && args.previousMessageId !== null) {\n if (!isNonEmptyString(args.previousMessageId)) {\n throw new Error('Anthropic lineage diagnostic requires a non-empty previous response ID');\n }\n }\n const policy = resolveClaudeCodeModelPolicy(args.model);\n const messages = requestMessagesFromPayload(args.requestPayload);\n const staticSha256 = conversationStaticHash(\n systemBlocksFromPayload(args.requestPayload),\n toolsFromPayload(args.requestPayload),\n );\n const cacheRetention = cacheRetentionFromPayload(args.requestPayload);\n const compactionBoundarySha256 = declaredCompactionBoundarySha256(messages);\n const signatureEpoch = initialSignatureEpochPolicy(\n normalizedAnthropicModelId(args.model),\n cacheRetention,\n compactionBoundarySha256,\n );\n return {\n type: ANTHROPIC_LINEAGE_DIAGNOSTIC_TYPE,\n timestamp: Date.now(),\n details: {\n schema_version: ANTHROPIC_LINEAGE_SCHEMA,\n projection_version: ANTHROPIC_PROJECTION_VERSION,\n source_provider: 'anthropic',\n source_api: 'anthropic-messages',\n source_model: normalizedAnthropicModelId(args.model),\n response_id: args.responseId,\n assistant_content_sha256: assistantContentHash(args.assistantContent),\n conversation_static_sha256: staticSha256,\n request_message_count: messages.length,\n request_messages_sha256: promptMessagesHash(messages),\n cache_profile_sha256: cacheProfileHash(args.model, policy, args.requestPayload, staticSha256),\n cache_retention: cacheRetention,\n compaction_boundary_sha256: compactionBoundarySha256,\n signature_epoch_sha256: signatureEpoch.sha256,\n signature_epoch_inherits_prior: signatureEpoch.inheritsPrior,\n previous_message_id: args.previousMessageId ?? null,\n },\n };\n}\n\nfunction appendLineageDiagnostic(\n output: AssistantMessageLike,\n prepared: PreparedAnthropicLineage,\n): void {\n if (!isNonEmptyString(output.responseId)) {\n throw new Error(\n 'Anthropic attribution successful response is missing responseId lineage proof',\n );\n }\n output.diagnostics ??= [];\n output.diagnostics.push({\n type: ANTHROPIC_LINEAGE_DIAGNOSTIC_TYPE,\n timestamp: Date.now(),\n details: {\n ...prepared.details,\n response_id: output.responseId,\n assistant_content_sha256: assistantContentHash(output.content),\n },\n });\n}\n\nfunction appendProviderCacheDiagnostic(\n output: AssistantMessageLike,\n messageStart: JsonObject,\n): void {\n const diagnostics = messageStart['diagnostics'];\n const inputTransformations = messageStart['input_transformations'];\n if (diagnostics === undefined && inputTransformations === undefined) return;\n output.diagnostics ??= [];\n output.diagnostics.push({\n type: 'anthropic-provider-cache',\n timestamp: Date.now(),\n details: {\n cache_diagnostics: canonicalizeJson(diagnostics ?? null),\n input_transformations: canonicalizeJson(inputTransformations ?? []),\n },\n });\n}\n\nfunction headersToRecord(headers: Headers): Record<string, string> {\n return Object.fromEntries([...headers.entries()]);\n}\n\nfunction lowerHeaderMap(headers: Record<string, string> | undefined): Record<string, string> {\n const output: Record<string, string> = {};\n for (const [key, value] of Object.entries(headers ?? {})) output[key.toLowerCase()] = value;\n return output;\n}\n\nfunction resolveAnthropicBetaMessagesUrl(model: PiModelLike): string {\n const configured =\n typeof model.baseUrl === 'string' && model.baseUrl.trim().length > 0\n ? model.baseUrl.trim()\n : ANTHROPIC_OFFICIAL_ORIGIN;\n let parsed: URL;\n try {\n parsed = new URL(configured);\n } catch (error) {\n throw new Error(\n `Anthropic attribution requires the official Anthropic HTTPS endpoint; invalid model.baseUrl: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n if (\n parsed.origin !== ANTHROPIC_OFFICIAL_ORIGIN ||\n parsed.protocol !== 'https:' ||\n parsed.username.length > 0 ||\n parsed.password.length > 0 ||\n (parsed.pathname !== '' && parsed.pathname !== '/') ||\n parsed.search.length > 0 ||\n parsed.hash.length > 0\n ) {\n throw new Error(\n `Anthropic attribution requires the official Anthropic HTTPS endpoint ${ANTHROPIC_OFFICIAL_ORIGIN}; refusing model.baseUrl ${JSON.stringify(configured)}`,\n );\n }\n return ANTHROPIC_BETA_MESSAGES_URL;\n}\n\nfunction buildFetchHeaders(\n options: PiSimpleStreamOptions | undefined,\n apiKey: string,\n sessionHeader: string | undefined,\n beta: string,\n): Record<string, string> {\n const optionHeaders = lowerHeaderMap(options?.headers);\n return {\n Accept: 'application/json',\n Authorization: `Bearer ${apiKey}`,\n 'Content-Type': 'application/json',\n 'User-Agent': optionHeaders['user-agent'] ?? CLAUDE_CODE_USER_AGENT,\n [CLAUDE_CODE_SESSION_HEADER]: sessionHeader ?? optionHeaders['x-claude-code-session-id'] ?? '',\n 'anthropic-beta': beta,\n 'anthropic-dangerous-direct-browser-access': 'true',\n 'anthropic-version': '2023-06-01',\n 'x-app': 'cli',\n };\n}\n\nfunction mapStopReason(reason: unknown): AssistantMessageLike['stopReason'] {\n switch (reason) {\n case 'end_turn':\n case 'pause_turn':\n case 'stop_sequence':\n return 'stop';\n case 'max_tokens':\n return 'length';\n case 'tool_use':\n return 'toolUse';\n default:\n return 'error';\n }\n}\n\nfunction parseStreamingJsonFragment(text: string): unknown {\n try {\n return parseJsonSource(text);\n } catch {\n return {};\n }\n}\n\nfunction parseCompletedToolInput(text: string): JsonObject {\n const parsed = parseJsonValue(text, 'Anthropic streamed tool input');\n if (!isPlainObject(parsed)) {\n throw new Error('Anthropic streamed tool input must complete as a JSON object');\n }\n return parsed;\n}\n\nfunction anthropicStreamErrorMessage(event: JsonObject): string {\n const error = event['error'];\n if (isPlainObject(error) && typeof error['message'] === 'string') {\n const type = typeof error['type'] === 'string' ? `${error['type']}: ` : '';\n return `Anthropic beta messages stream error: ${type}${error['message']}`;\n }\n return 'Anthropic beta messages stream emitted an error event';\n}\n\nfunction validCostRate(value: unknown, fallback: number, field: string): number {\n if (value === undefined) return fallback;\n if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {\n throw new Error(\n `Anthropic attribution model cost.${field} must be a finite non-negative number`,\n );\n }\n return value;\n}\n\nfunction resolveModelCostRates(\n model: PiModelLike,\n totalInputTokens: number,\n): Required<Pick<PiCostRatesLike, 'input' | 'output' | 'cacheRead' | 'cacheWrite'>> {\n let selected = model.cost;\n let matchedThreshold = -1;\n for (const tier of model.cost?.tiers ?? []) {\n const threshold = tier.inputTokensAbove;\n if (\n typeof threshold === 'number' &&\n Number.isFinite(threshold) &&\n threshold >= 0 &&\n totalInputTokens > threshold &&\n threshold > matchedThreshold\n ) {\n selected = tier;\n matchedThreshold = threshold;\n }\n }\n return {\n input: validCostRate(selected?.input, 3, 'input'),\n output: validCostRate(selected?.output, 15, 'output'),\n cacheRead: validCostRate(selected?.cacheRead, 0.3, 'cacheRead'),\n cacheWrite: validCostRate(selected?.cacheWrite, 3.75, 'cacheWrite'),\n };\n}\n\nexport function updateAnthropicUsage(\n output: AssistantMessageLike,\n usage: JsonObject | undefined,\n model: PiModelLike,\n): void {\n if (!usage) return;\n if (typeof usage['input_tokens'] === 'number') output.usage.input = usage['input_tokens'];\n if (typeof usage['output_tokens'] === 'number') output.usage.output = usage['output_tokens'];\n if (typeof usage['cache_read_input_tokens'] === 'number')\n output.usage.cacheRead = usage['cache_read_input_tokens'];\n const cacheCreation = usage['cache_creation'];\n const reportedLongCacheWrite =\n isPlainObject(cacheCreation) && typeof cacheCreation['ephemeral_1h_input_tokens'] === 'number'\n ? cacheCreation['ephemeral_1h_input_tokens']\n : undefined;\n if (typeof usage['cache_creation_input_tokens'] === 'number') {\n output.usage.cacheWrite = usage['cache_creation_input_tokens'];\n output.usage.cacheWrite1h = reportedLongCacheWrite ?? 0;\n } else if (reportedLongCacheWrite !== undefined) {\n output.usage.cacheWrite1h = reportedLongCacheWrite;\n }\n const longCacheWrite = output.usage.cacheWrite1h ?? 0;\n if (\n !Number.isFinite(longCacheWrite) ||\n !Number.isInteger(longCacheWrite) ||\n longCacheWrite < 0 ||\n longCacheWrite > output.usage.cacheWrite\n ) {\n throw new Error(\n 'Anthropic attribution received malformed 1h cache usage exceeding total cache writes',\n );\n }\n output.usage.totalTokens =\n output.usage.input + output.usage.output + output.usage.cacheRead + output.usage.cacheWrite;\n const rates = resolveModelCostRates(\n model,\n output.usage.input + output.usage.cacheRead + output.usage.cacheWrite,\n );\n const shortCacheWrite = output.usage.cacheWrite - longCacheWrite;\n output.usage.cost.input = (output.usage.input * rates.input) / 1_000_000;\n output.usage.cost.output = (output.usage.output * rates.output) / 1_000_000;\n output.usage.cost.cacheRead = (output.usage.cacheRead * rates.cacheRead) / 1_000_000;\n output.usage.cost.cacheWrite =\n (shortCacheWrite * rates.cacheWrite + longCacheWrite * rates.input * 2) / 1_000_000;\n output.usage.cost.total =\n output.usage.cost.input +\n output.usage.cost.output +\n output.usage.cost.cacheRead +\n output.usage.cost.cacheWrite;\n}\n\nasync function* iterateSseEvents(\n response: Response,\n signal?: AbortSignal,\n): AsyncGenerator<JsonObject> {\n if (!response.body) throw new Error('Anthropic beta messages response had no body');\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = '';\n let eventName = '';\n let dataLines: string[] = [];\n function flush(): JsonObject | undefined {\n if (dataLines.length === 0) {\n eventName = '';\n return undefined;\n }\n const data = dataLines.join('\\n');\n const declaredEventName = eventName;\n eventName = '';\n dataLines = [];\n if (data === '[DONE]') return undefined;\n const event = parseJsonObject(data, 'Anthropic beta messages SSE event');\n if (\n declaredEventName.length > 0 &&\n (typeof event['type'] !== 'string' || event['type'] !== declaredEventName)\n ) {\n throw new Error(\n `Anthropic beta messages SSE event name ${JSON.stringify(declaredEventName)} did not match data.type`,\n );\n }\n return event;\n }\n function consumeLine(line: string): JsonObject | undefined {\n if (line.length === 0) return flush();\n if (line.startsWith(':')) return undefined;\n const colon = line.indexOf(':');\n const field = colon === -1 ? line : line.slice(0, colon);\n let value = colon === -1 ? '' : line.slice(colon + 1);\n if (value.startsWith(' ')) value = value.slice(1);\n if (field === 'event') eventName = value;\n if (field === 'data') dataLines.push(value);\n return undefined;\n }\n try {\n for (;;) {\n if (signal?.aborted) throw new Error('Request was aborted');\n const { value, done } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n for (;;) {\n const match = /\\r\\n|\\n|\\r/.exec(buffer);\n if (match?.index === undefined) break;\n const line = buffer.slice(0, match.index);\n buffer = buffer.slice(match.index + match[0].length);\n const event = consumeLine(line);\n if (event) yield event;\n }\n }\n buffer += decoder.decode();\n if (buffer.length > 0) {\n const event = consumeLine(buffer);\n if (event) yield event;\n }\n const trailing = flush();\n if (trailing) yield trailing;\n } finally {\n reader.releaseLock();\n }\n}\n\nfunction createOutput(model: PiModelLike): AssistantMessageLike {\n return {\n role: 'assistant',\n content: [],\n api: model.api,\n provider: model.provider,\n model: model.id,\n usage: {\n input: 0,\n output: 0,\n cacheRead: 0,\n cacheWrite: 0,\n totalTokens: 0,\n cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n },\n stopReason: 'stop',\n timestamp: Date.now(),\n };\n}\n\ntype HostForwardingModel = PiModelLike & HostModel<'anthropic-messages'>;\ntype HostForwardingContext = PiStreamContext & HostContext;\ntype HostForwardingOptions = PiSimpleStreamOptions & HostSimpleStreamOptions;\ntype HostForwardingStream = AssistantMessageEventStreamLike & HostAssistantMessageEventStream;\n\nfunction forwardToBuiltInAnthropic(\n model: PiModelLike,\n context: PiStreamContext,\n options: PiSimpleStreamOptions | undefined,\n): AssistantMessageEventStreamLike {\n // Pi aliases these SDK imports to its own version while loading extensions.\n // The host therefore owns both its legacy Context or normalized TranscriptContext\n // input and the complete stream/event/result shape. These intersections only mark\n // that host-owned boundary; no request, callback, event, or result is reconstructed.\n const delegated = anthropicMessagesApi().streamSimple(\n model as HostForwardingModel,\n context as HostForwardingContext,\n options as HostForwardingOptions | undefined,\n );\n return delegated as HostForwardingStream;\n}\n\nexport function streamAnthropicViaBetaMessages(\n model: PiModelLike,\n context: PiStreamContext,\n options?: PiSimpleStreamOptions,\n dependencies: AnthropicTransportDependencies = {},\n): AssistantMessageEventStreamLike {\n if (model.provider !== 'anthropic') {\n return forwardToBuiltInAnthropic(model, context, options);\n }\n\n const stream = createAssistantMessageEventStream();\n const output = createOutput(model);\n void (async () => {\n let preparedLineage: PreparedAnthropicLineage | undefined;\n try {\n const apiKey = options?.apiKey;\n if (typeof apiKey !== 'string' || apiKey.length === 0) {\n throw new Error(\n 'Anthropic attribution requires Pi OAuth apiKey/token; no credential was supplied',\n );\n }\n if (!apiKey.includes('sk-ant-oat')) {\n throw new Error(\n 'Anthropic attribution refuses non-OAuth Anthropic credential; subscription OAuth token is required',\n );\n }\n\n const sessionId = requireSessionId(options?.sessionId, 'options.sessionId');\n const account = requireAttributionAccount(\n dependencies.loadAccount?.() ?? loadClaudeAttributionAccount(undefined, options?.env),\n );\n const url = resolveAnthropicBetaMessagesUrl(model);\n const policy = resolveClaudeCodeModelPolicy(model);\n const request = buildAnthropicRequest(model, context, options);\n let params = request.params;\n const billingSystemText = buildClaudeCodeBillingSystemText(\n firstUserMessageTextFromPayload(params),\n );\n const provisionalLineage = prepareAnthropicLineageDetails({\n model,\n policy,\n context,\n payload: params,\n signatureEpoch: request.signatureEpoch,\n });\n if (policy.supportsCacheDiagnostics) {\n if (!policy.beta.split(',').includes(ANTHROPIC_CACHE_DIAGNOSTICS_BETA)) {\n throw new Error('Anthropic cache diagnostics policy is missing its required beta header');\n }\n params['diagnostics'] = {\n previous_message_id: provisionalLineage.previous_message_id,\n };\n }\n if (\n policy.enforcesThinkingPrefixBinding &&\n !policy.beta.split(',').includes(ANTHROPIC_THINKING_BINDING_BETA)\n ) {\n throw new Error('Anthropic thinking-binding policy is missing its required beta header');\n }\n params = rewriteAnthropicRequestPayloadForSession({\n payload: params,\n model,\n sessionId,\n account,\n headerRegistered: true,\n ...(options?.cacheRetention === undefined\n ? {}\n : { cacheRetention: options.cacheRetention }),\n });\n const protectedCacheControlTopologySha256 = cacheControlTopologySha256(params);\n const nextParams = await options?.onPayload?.(params, model);\n if (nextParams !== undefined) {\n if (!isPlainObject(nextParams))\n throw new Error('Anthropic attribution onPayload returned a non-object payload');\n params = nextParams;\n }\n assertProtectedAnthropicAttribution({\n payload: params,\n account,\n sessionId,\n billingSystemText,\n modelId: policy.modelId,\n cacheControlTopologySha256: protectedCacheControlTopologySha256,\n });\n\n preparedLineage = anthropicLineageCoordinator.prepare({\n sessionId,\n model,\n policy,\n context,\n payload: params,\n signatureEpoch: request.signatureEpoch,\n });\n if (\n preparedLineage.details.previous_message_id !== provisionalLineage.previous_message_id ||\n preparedLineage.details.conversation_static_sha256 !==\n provisionalLineage.conversation_static_sha256 ||\n preparedLineage.details.request_message_count !==\n provisionalLineage.request_message_count ||\n preparedLineage.details.request_messages_sha256 !==\n provisionalLineage.request_messages_sha256 ||\n preparedLineage.details.cache_profile_sha256 !== provisionalLineage.cache_profile_sha256 ||\n preparedLineage.details.cache_retention !== provisionalLineage.cache_retention ||\n preparedLineage.details.compaction_boundary_sha256 !==\n provisionalLineage.compaction_boundary_sha256 ||\n preparedLineage.details.signature_epoch_sha256 !==\n provisionalLineage.signature_epoch_sha256 ||\n preparedLineage.details.signature_epoch_inherits_prior !==\n provisionalLineage.signature_epoch_inherits_prior\n ) {\n throw new Error(\n 'Anthropic request/cache lineage changed during before_provider_request transforms',\n );\n }\n if (policy.supportsCacheDiagnostics) {\n const diagnostics = params['diagnostics'];\n if (\n !isPlainObject(diagnostics) ||\n diagnostics['previous_message_id'] !== preparedLineage.details.previous_message_id\n ) {\n throw new Error(\n 'Anthropic cache diagnostics were removed or changed during before_provider_request transforms',\n );\n }\n }\n\n const headers = buildFetchHeaders(options, apiKey, sessionId, policy.beta);\n const requestInit: RequestInit = {\n method: 'POST',\n headers,\n body: JSON.stringify(params),\n redirect: 'error',\n };\n if (options?.signal) requestInit.signal = options.signal;\n const response = await fetch(url, requestInit);\n await options?.onResponse?.(\n { status: response.status, headers: headersToRecord(response.headers) },\n model,\n );\n if (!response.ok) {\n throw new Error(\n `Anthropic beta messages request failed: HTTP ${response.status} ${response.statusText}: ${await response.text()}`,\n );\n }\n const contentType = response.headers.get('content-type')?.toLowerCase() ?? '';\n if (!contentType.includes('text/event-stream')) {\n throw new Error(\n `Anthropic beta messages response must be text/event-stream; got ${JSON.stringify(contentType || '(missing)')}`,\n );\n }\n\n stream.push({ type: 'start', partial: output });\n const blocks = output.content as Array<JsonObject & { index?: number; partialJson?: string }>;\n const activeContentIndexes = new Set<number>();\n let sawMessageStart = false;\n let sawMessageStop = false;\n let sawTerminalStopReason = false;\n for await (const event of iterateSseEvents(response, options?.signal)) {\n const eventType = event['type'];\n if (typeof eventType !== 'string') {\n throw new Error('Anthropic beta messages SSE event is missing string data.type');\n }\n if (eventType === 'error') throw new Error(anthropicStreamErrorMessage(event));\n if (eventType === 'ping') continue;\n if (sawMessageStop) {\n throw new Error('Anthropic beta messages stream emitted data after message_stop');\n }\n if (eventType !== 'message_start' && !sawMessageStart) {\n throw new Error('Anthropic beta messages stream emitted content before message_start');\n }\n\n if (eventType === 'message_start') {\n if (sawMessageStart || !isPlainObject(event['message'])) {\n throw new Error(\n 'Anthropic beta messages stream emitted malformed/duplicate message_start',\n );\n }\n if (!isNonEmptyString(event['message']['id'])) {\n throw new Error('Anthropic beta messages message_start is missing a response id');\n }\n sawMessageStart = true;\n if (typeof event['message']['id'] === 'string')\n output.responseId = event['message']['id'];\n appendProviderCacheDiagnostic(output, event['message']);\n updateAnthropicUsage(\n output,\n isPlainObject(event['message']['usage']) ? event['message']['usage'] : undefined,\n model,\n );\n } else if (eventType === 'content_block_start') {\n const contentIndex = event['index'];\n const contentBlock = event['content_block'];\n if (\n !Number.isSafeInteger(contentIndex) ||\n (contentIndex as number) < 0 ||\n !isPlainObject(contentBlock)\n ) {\n throw new Error('Anthropic beta messages stream emitted malformed content_block_start');\n }\n if (activeContentIndexes.has(contentIndex as number)) {\n throw new Error('Anthropic beta messages stream duplicated an active content block');\n }\n activeContentIndexes.add(contentIndex as number);\n if (contentBlock['type'] === 'text') {\n output.content.push({ type: 'text', text: '', index: contentIndex });\n stream.push({\n type: 'text_start',\n contentIndex: output.content.length - 1,\n partial: output,\n });\n } else if (contentBlock['type'] === 'thinking') {\n output.content.push({\n type: 'thinking',\n thinking: '',\n thinkingSignature: '',\n index: contentIndex,\n });\n stream.push({\n type: 'thinking_start',\n contentIndex: output.content.length - 1,\n partial: output,\n });\n } else if (contentBlock['type'] === 'redacted_thinking') {\n if (typeof contentBlock['data'] !== 'string') {\n throw new Error('Anthropic redacted_thinking block is missing string data');\n }\n output.content.push({\n type: 'thinking',\n thinking: '[Reasoning redacted]',\n thinkingSignature: contentBlock['data'],\n redacted: true,\n index: contentIndex,\n });\n stream.push({\n type: 'thinking_start',\n contentIndex: output.content.length - 1,\n partial: output,\n });\n } else if (contentBlock['type'] === 'tool_use') {\n if (\n typeof contentBlock['id'] !== 'string' ||\n typeof contentBlock['name'] !== 'string' ||\n !isPlainObject(contentBlock['input'] ?? {})\n ) {\n throw new Error('Anthropic tool_use block is malformed');\n }\n output.content.push({\n type: 'toolCall',\n id: contentBlock['id'],\n name: contentBlock['name'],\n arguments: contentBlock['input'] ?? {},\n partialJson: '',\n index: contentIndex,\n });\n stream.push({\n type: 'toolcall_start',\n contentIndex: output.content.length - 1,\n partial: output,\n });\n } else {\n throw new Error(\n `Anthropic beta messages stream emitted unsupported content block ${JSON.stringify(contentBlock['type'])}`,\n );\n }\n } else if (eventType === 'content_block_delta') {\n const contentIndex = event['index'];\n const delta = event['delta'];\n if (\n !Number.isSafeInteger(contentIndex) ||\n !activeContentIndexes.has(contentIndex as number) ||\n !isPlainObject(delta)\n ) {\n throw new Error(\n 'Anthropic beta messages stream emitted malformed/orphan content_block_delta',\n );\n }\n const blockIndex = blocks.findIndex((block) => block.index === contentIndex);\n const block = blocks[blockIndex];\n if (!block) {\n throw new Error('Anthropic beta messages stream delta has no projected content block');\n }\n if (\n delta['type'] === 'text_delta' &&\n block['type'] === 'text' &&\n typeof delta['text'] === 'string'\n ) {\n block['text'] = `${String(block['text'] ?? '')}${delta['text']}`;\n stream.push({\n type: 'text_delta',\n contentIndex: blockIndex,\n delta: delta['text'],\n partial: output,\n });\n } else if (\n delta['type'] === 'thinking_delta' &&\n block['type'] === 'thinking' &&\n typeof delta['thinking'] === 'string'\n ) {\n block['thinking'] = `${String(block['thinking'] ?? '')}${delta['thinking']}`;\n stream.push({\n type: 'thinking_delta',\n contentIndex: blockIndex,\n delta: delta['thinking'],\n partial: output,\n });\n } else if (\n delta['type'] === 'input_json_delta' &&\n block['type'] === 'toolCall' &&\n typeof delta['partial_json'] === 'string'\n ) {\n block.partialJson = `${block.partialJson ?? ''}${delta['partial_json']}`;\n block['arguments'] = parseStreamingJsonFragment(block.partialJson);\n stream.push({\n type: 'toolcall_delta',\n contentIndex: blockIndex,\n delta: delta['partial_json'],\n partial: output,\n });\n } else if (\n delta['type'] === 'signature_delta' &&\n block['type'] === 'thinking' &&\n typeof delta['signature'] === 'string'\n ) {\n block['thinkingSignature'] =\n `${String(block['thinkingSignature'] ?? '')}${delta['signature']}`;\n } else {\n throw new Error(\n `Anthropic beta messages stream emitted unsupported/mismatched delta ${JSON.stringify(delta['type'])}`,\n );\n }\n } else if (eventType === 'content_block_stop') {\n const contentIndex = event['index'];\n if (\n !Number.isSafeInteger(contentIndex) ||\n !activeContentIndexes.delete(contentIndex as number)\n ) {\n throw new Error(\n 'Anthropic beta messages stream emitted malformed/orphan content_block_stop',\n );\n }\n const blockIndex = blocks.findIndex((block) => block.index === contentIndex);\n const block = blocks[blockIndex];\n if (!block) {\n throw new Error('Anthropic beta messages stream stop has no projected content block');\n }\n delete block.index;\n if (block['type'] === 'text') {\n stream.push({\n type: 'text_end',\n contentIndex: blockIndex,\n content: String(block['text'] ?? ''),\n partial: output,\n });\n } else if (block['type'] === 'thinking') {\n stream.push({\n type: 'thinking_end',\n contentIndex: blockIndex,\n content: String(block['thinking'] ?? ''),\n partial: output,\n });\n } else if (block['type'] === 'toolCall') {\n block['arguments'] =\n block.partialJson && block.partialJson.length > 0\n ? parseCompletedToolInput(block.partialJson)\n : canonicalizeJson(block['arguments'] ?? {});\n delete block.partialJson;\n stream.push({\n type: 'toolcall_end',\n contentIndex: blockIndex,\n toolCall: block,\n partial: output,\n });\n }\n } else if (eventType === 'message_delta') {\n if (!isPlainObject(event['delta'])) {\n throw new Error('Anthropic beta messages stream emitted malformed message_delta');\n }\n const stopReason = event['delta']['stop_reason'];\n if (typeof stopReason === 'string') {\n const mapped = mapStopReason(stopReason);\n if (mapped === 'error') {\n throw new Error(\n `Anthropic beta messages stream emitted unsupported stop reason ${JSON.stringify(stopReason)}`,\n );\n }\n output.stopReason = mapped;\n sawTerminalStopReason = true;\n }\n updateAnthropicUsage(\n output,\n isPlainObject(event['usage']) ? event['usage'] : undefined,\n model,\n );\n } else if (eventType === 'message_stop') {\n if (activeContentIndexes.size > 0) {\n throw new Error(\n 'Anthropic beta messages message_stop arrived with open content blocks',\n );\n }\n sawMessageStop = true;\n } else {\n throw new Error(\n `Anthropic beta messages stream emitted unsupported event ${JSON.stringify(eventType)}`,\n );\n }\n }\n if (options?.signal?.aborted) throw new Error('Request was aborted');\n if (!sawMessageStart) {\n throw new Error('Anthropic beta messages stream ended without message_start');\n }\n if (!sawMessageStop) {\n throw new Error('Anthropic beta messages stream ended without message_stop');\n }\n if (!sawTerminalStopReason || output.stopReason === 'error') {\n throw new Error(\n 'Anthropic beta messages stream ended without a valid terminal stop reason',\n );\n }\n if (preparedLineage === undefined)\n throw new Error('Anthropic attribution completed without prepared cache lineage');\n appendLineageDiagnostic(output, preparedLineage);\n stream.push({ type: 'done', reason: output.stopReason, message: output });\n stream.end();\n } catch (error) {\n for (const block of output.content) {\n delete block['index'];\n delete block['partialJson'];\n }\n output.stopReason = options?.signal?.aborted ? 'aborted' : 'error';\n output.errorMessage = error instanceof Error ? error.message : String(error);\n stream.push({ type: 'error', reason: output.stopReason, error: output });\n stream.end();\n } finally {\n if (preparedLineage !== undefined) anthropicLineageCoordinator.release(preparedLineage);\n }\n })();\n\n return stream;\n}\n\nfunction cacheRetentionLabel(retention: CacheRetention): string {\n switch (retention) {\n case 'long':\n return '1-hour';\n case 'short':\n return '5-minute';\n case 'none':\n return 'disabled';\n }\n}\n\ninterface AnthropicAttributionClaimProbe {\n readonly schema_version: typeof ANTHROPIC_ATTRIBUTION_CLAIM_SCHEMA;\n readonly acknowledge: () => void;\n}\n\nfunction isAnthropicAttributionClaimProbe(value: unknown): value is AnthropicAttributionClaimProbe {\n return (\n isPlainObject(value) &&\n value['schema_version'] === ANTHROPIC_ATTRIBUTION_CLAIM_SCHEMA &&\n typeof value['acknowledge'] === 'function'\n );\n}\n\n/**\n * Prevent two independently installed copies from registering duplicate provider\n * hooks and `/claude-cache` commands in one Pi runtime. Pi loads extension factories\n * sequentially and its EventBus dispatches listeners synchronously, so an existing\n * owner acknowledges this probe before emit() returns. The winning extension only\n * publishes ownership after every registration below succeeds; a factory that throws\n * cannot strand a false claim that suppresses a healthy later copy.\n */\nexport default function spawnAnthropicAttribution(\n pi: PiExtensionHost,\n dependencies: AnthropicTransportDependencies = {},\n): void {\n const acknowledgements: true[] = [];\n const probe: AnthropicAttributionClaimProbe = {\n schema_version: ANTHROPIC_ATTRIBUTION_CLAIM_SCHEMA,\n acknowledge: () => {\n acknowledgements.push(true);\n },\n };\n pi.events.emit(ANTHROPIC_ATTRIBUTION_CLAIM_CHANNEL, probe);\n if (acknowledgements.length > 0) return;\n\n let sessionCacheRetention: Exclude<CacheRetention, 'none'> | undefined;\n const getSessionOverride = (): Exclude<CacheRetention, 'none'> | undefined =>\n sessionCacheRetention;\n\n // Registration is global but route-scoped by provider name. Keeping it at\n // factory scope avoids lifecycle-dependent provider availability; every custom\n // transport request owns attribution from its request-scoped session options.\n pi.registerProvider('anthropic', {\n api: 'anthropic-messages',\n streamSimple: (model, context, options) =>\n streamAnthropicViaBetaMessages(\n model,\n context,\n {\n ...(options ?? {}),\n cacheRetention: resolveRegisteredCacheRetention(options, getSessionOverride()),\n },\n dependencies,\n ),\n });\n\n pi.registerCommand('claude-cache', {\n description: 'Show or set Claude cache retention for this session (short, long, default)',\n handler: (args, ctx) => {\n const action = args.trim().toLowerCase();\n if (action.length === 0 || action === 'status') {\n const effective = resolveCacheRetentionPreference(undefined, sessionCacheRetention);\n ctx.ui?.notify(\n `Claude cache retention: ${cacheRetentionLabel(effective)}${sessionCacheRetention === undefined ? ' (default)' : ' (session override)'}`,\n 'info',\n );\n return;\n }\n if (action !== 'short' && action !== 'long' && action !== 'default') {\n throw new Error('Usage: /claude-cache [status|short|long|default]');\n }\n sessionCacheRetention = action === 'default' ? undefined : action;\n pi.appendEntry(ANTHROPIC_CACHE_RETENTION_ENTRY, {\n schema_version: ANTHROPIC_CACHE_RETENTION_SCHEMA,\n retention: action,\n });\n const effective = resolveCacheRetentionPreference(undefined, sessionCacheRetention);\n ctx.ui?.notify(\n `Claude cache retention set to ${cacheRetentionLabel(effective)} for this session${action === 'default' ? ' (default policy)' : ''}.`,\n 'info',\n );\n },\n });\n\n pi.on('session_start', (_event, ctx) => {\n sessionCacheRetention = restoreAnthropicSessionCacheRetention(ctx.sessionManager.getBranch());\n });\n\n pi.on('session_shutdown', () => {\n sessionCacheRetention = undefined;\n });\n\n pi.on('session_tree', (_event, ctx) => {\n sessionCacheRetention = restoreAnthropicSessionCacheRetention(ctx.sessionManager.getBranch());\n });\n\n // Publish ownership last. Extension loading is sequential, so later independent\n // copies probe this responder and become inert instead of registering duplicates.\n pi.events.on(ANTHROPIC_ATTRIBUTION_CLAIM_CHANNEL, (value) => {\n if (isAnthropicAttributionClaimProbe(value)) value.acknowledge();\n });\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attested-pi-contract.js","sourceRoot":"","sources":["../../../src/core/attested-pi-contract.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG,iBAAiB,CAAC;AAC1D,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAC9C,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC","sourcesContent":["export const ATTESTED_TASK_ID_PATTERN = /^b[0-9a-f]{32}$/;\nexport const ATTESTED_GIT_TIMEOUT_MS = 30_000;\nexport const ATTESTED_GIT_KILL_GRACE_MS = 250;\nexport const ATTESTED_GIT_MAX_OUTPUT_BYTES = 4 * 1024 * 1024;\n"]}
|