@code-yeongyu/senpi 2026.7.30-2 → 2026.7.31-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +104 -0
- package/dist/core/agent-session.d.ts +48 -12
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +110 -18
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/dynamic-prompt/build.d.ts.map +1 -1
- package/dist/core/dynamic-prompt/build.js +4 -0
- package/dist/core/dynamic-prompt/build.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.d.ts +2 -2
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.js +25 -25
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-events.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-events.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-management.d.ts +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-management.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-management.js +2 -2
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-management.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/accounts.d.ts +9 -9
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/accounts.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/accounts.js +2 -2
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/accounts.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/affinity.d.ts +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/affinity.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/affinity.js +3 -3
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/affinity.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.d.ts +21 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.js +30 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/auth-lane.d.ts +8 -4
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.d.ts.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/auth-lane.js +34 -25
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools-schema.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools-schema.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/errors.d.ts +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/errors.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/errors.js +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/errors.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/executable.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/executable.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/failover.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/failover.js +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/failover.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.d.ts +14 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.d.ts.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/guidance.js +37 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/index.d.ts +4 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/index.js +12 -10
- package/dist/core/extensions/builtin/claude-sdk-oauth/index.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/oauth-login.d.ts +3 -3
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/oauth-login.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/oauth-login.js +2 -2
- package/dist/core/extensions/builtin/claude-sdk-oauth/oauth-login.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/options.d.ts +18 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/options.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/options.js +70 -10
- package/dist/core/extensions/builtin/claude-sdk-oauth/options.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/prompt-bridge.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/prompt-bridge.js +32 -19
- package/dist/core/extensions/builtin/claude-sdk-oauth/prompt-bridge.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/sdk-boundary.d.ts +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/sdk-boundary.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/sdk-boundary.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.d.ts +30 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.js +197 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.d.ts +18 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.js +33 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.d.ts +3 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js +134 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.d.ts +85 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.js +270 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.d.ts +17 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.js +217 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.d.ts +49 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js +204 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/settings.d.ts +28 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/settings.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/settings.js +107 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/settings.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.d.ts +2 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.js +10 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream-protocol.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream-protocol.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream.d.ts +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream.d.ts.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream.js +72 -53
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.d.ts +3 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.js +25 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tool-watch.d.ts +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tool-watch.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tool-watch.js +2 -2
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tool-watch.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tools.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tools.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.d.ts +18 -0
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.js +69 -0
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/index.js +28 -2
- package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/openai-remote.d.ts +3 -0
- package/dist/core/extensions/builtin/compaction/openai-remote.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/openai-remote.js +15 -4
- package/dist/core/extensions/builtin/compaction/openai-remote.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculative.d.ts +4 -1
- package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculative.js +39 -20
- package/dist/core/extensions/builtin/compaction/speculative.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/task-intent.d.ts +2 -6
- package/dist/core/extensions/builtin/compaction/task-intent.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/task-intent.js +10 -9
- package/dist/core/extensions/builtin/compaction/task-intent.js.map +1 -1
- package/dist/core/extensions/builtin/goal/continuation-recovery.d.ts +6 -0
- package/dist/core/extensions/builtin/goal/continuation-recovery.d.ts.map +1 -0
- package/dist/core/extensions/builtin/goal/continuation-recovery.js +20 -0
- package/dist/core/extensions/builtin/goal/continuation-recovery.js.map +1 -0
- package/dist/core/extensions/builtin/goal/continuation.d.ts +2 -4
- package/dist/core/extensions/builtin/goal/continuation.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/continuation.js +2 -8
- package/dist/core/extensions/builtin/goal/continuation.js.map +1 -1
- package/dist/core/extensions/builtin/goal/direct-input-lifecycle.d.ts +19 -0
- package/dist/core/extensions/builtin/goal/direct-input-lifecycle.d.ts.map +1 -0
- package/dist/core/extensions/builtin/goal/direct-input-lifecycle.js +48 -0
- package/dist/core/extensions/builtin/goal/direct-input-lifecycle.js.map +1 -0
- package/dist/core/extensions/builtin/goal/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/index.js +17 -15
- package/dist/core/extensions/builtin/goal/index.js.map +1 -1
- package/dist/core/extensions/builtin/goal/lifecycle-helpers.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/lifecycle-helpers.js +12 -10
- package/dist/core/extensions/builtin/goal/lifecycle-helpers.js.map +1 -1
- package/dist/core/extensions/builtin/goal/monitor-continuation.d.ts +5 -1
- package/dist/core/extensions/builtin/goal/monitor-continuation.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/monitor-continuation.js +94 -52
- package/dist/core/extensions/builtin/goal/monitor-continuation.js.map +1 -1
- package/dist/core/extensions/builtin/goal/persistence.d.ts +1 -0
- package/dist/core/extensions/builtin/goal/persistence.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/persistence.js +49 -7
- package/dist/core/extensions/builtin/goal/persistence.js.map +1 -1
- package/dist/core/extensions/builtin/goal/ui.d.ts +1 -0
- package/dist/core/extensions/builtin/goal/ui.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/ui.js +11 -2
- package/dist/core/extensions/builtin/goal/ui.js.map +1 -1
- package/dist/core/extensions/builtin/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/index.js +5 -2
- package/dist/core/extensions/builtin/index.js.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/detectors.d.ts +31 -0
- package/dist/core/extensions/builtin/loop-guard/detectors.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/detectors.js +111 -0
- package/dist/core/extensions/builtin/loop-guard/detectors.js.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/index.d.ts +3 -0
- package/dist/core/extensions/builtin/loop-guard/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/index.js +31 -0
- package/dist/core/extensions/builtin/loop-guard/index.js.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/notice.d.ts +5 -0
- package/dist/core/extensions/builtin/loop-guard/notice.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/notice.js +42 -0
- package/dist/core/extensions/builtin/loop-guard/notice.js.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/policy.d.ts +30 -0
- package/dist/core/extensions/builtin/loop-guard/policy.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/policy.js +30 -0
- package/dist/core/extensions/builtin/loop-guard/policy.js.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/renderer.d.ts +4 -0
- package/dist/core/extensions/builtin/loop-guard/renderer.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/renderer.js +50 -0
- package/dist/core/extensions/builtin/loop-guard/renderer.js.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/similarity.d.ts +13 -0
- package/dist/core/extensions/builtin/loop-guard/similarity.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/similarity.js +51 -0
- package/dist/core/extensions/builtin/loop-guard/similarity.js.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/tracker.d.ts +13 -0
- package/dist/core/extensions/builtin/loop-guard/tracker.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/tracker.js +39 -0
- package/dist/core/extensions/builtin/loop-guard/tracker.js.map +1 -0
- package/dist/core/extensions/builtin/monitor-state-event.d.ts +10 -0
- package/dist/core/extensions/builtin/monitor-state-event.d.ts.map +1 -1
- package/dist/core/extensions/builtin/monitor-state-event.js.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/index.js +8 -4
- package/dist/core/extensions/builtin/prompt-preset/index.js.map +1 -1
- package/dist/core/extensions/builtin/rules/index.js +4 -3
- package/dist/core/extensions/builtin/rules/index.js.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/constants.d.ts +11 -0
- package/dist/core/extensions/builtin/rules/rules/constants.d.ts.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/constants.js +11 -0
- package/dist/core/extensions/builtin/rules/rules/constants.js.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/formatter.d.ts.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/formatter.js +15 -1
- package/dist/core/extensions/builtin/rules/rules/formatter.js.map +1 -1
- package/dist/core/extensions/builtin/service-tier.d.ts.map +1 -1
- package/dist/core/extensions/builtin/service-tier.js +23 -21
- package/dist/core/extensions/builtin/service-tier.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/extension.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/extension.js +21 -7
- package/dist/core/extensions/builtin/terminal/extension.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-registry.d.ts +2 -0
- package/dist/core/extensions/builtin/terminal/monitor-registry.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-registry.js +2 -0
- package/dist/core/extensions/builtin/terminal/monitor-registry.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-status-ticker.d.ts +37 -0
- package/dist/core/extensions/builtin/terminal/monitor-status-ticker.d.ts.map +1 -0
- package/dist/core/extensions/builtin/terminal/monitor-status-ticker.js +61 -0
- package/dist/core/extensions/builtin/terminal/monitor-status-ticker.js.map +1 -0
- package/dist/core/extensions/builtin/terminal/monitor-status.d.ts +9 -1
- package/dist/core/extensions/builtin/terminal/monitor-status.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-status.js +35 -2
- package/dist/core/extensions/builtin/terminal/monitor-status.js.map +1 -1
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.d.ts +1 -1
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.d.ts.map +1 -1
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.js +88 -29
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.js.map +1 -1
- package/dist/core/extensions/builtin/ttsr/builtin-rules.d.ts +4 -0
- package/dist/core/extensions/builtin/ttsr/builtin-rules.d.ts.map +1 -0
- package/dist/core/extensions/builtin/ttsr/builtin-rules.js +20 -0
- package/dist/core/extensions/builtin/ttsr/builtin-rules.js.map +1 -0
- package/dist/core/extensions/builtin/ttsr/commands.js +9 -1
- package/dist/core/extensions/builtin/ttsr/commands.js.map +1 -1
- package/dist/core/extensions/builtin/ttsr/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/ttsr/index.js +4 -3
- package/dist/core/extensions/builtin/ttsr/index.js.map +1 -1
- package/dist/core/extensions/builtin/ttsr/manager.js +1 -1
- package/dist/core/extensions/builtin/ttsr/manager.js.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/renderers.d.ts.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/renderers.js +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/renderers.js.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/search.d.ts.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/search.js +1 -3
- package/dist/core/extensions/builtin/websearch/websearch/search.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +5 -0
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +1 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +3 -1
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +22 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/thinking-levels.d.ts.map +1 -1
- package/dist/core/thinking-levels.js +23 -3
- package/dist/core/thinking-levels.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/modes/app-server/server/account.d.ts +1 -1
- package/dist/modes/app-server/server/account.js +1 -1
- package/dist/modes/app-server/server/account.js.map +1 -1
- package/dist/modes/app-server/server/server-core.js +1 -1
- package/dist/modes/app-server/server/server-core.js.map +1 -1
- package/dist/modes/interactive/compaction-queue-transfer.d.ts +2 -0
- package/dist/modes/interactive/compaction-queue-transfer.d.ts.map +1 -1
- package/dist/modes/interactive/compaction-queue-transfer.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +9 -5
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +37 -11
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/connection-handler.js +3 -3
- package/dist/modes/rpc/connection-handler.js.map +1 -1
- package/docs/extensions.md +10 -0
- package/docs/providers.md +21 -5
- package/docs/release-guide.md +2 -2
- package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +27 -0
- package/node_modules/@code-yeongyu/senpi-codemode/package.json +3 -3
- package/node_modules/@code-yeongyu/senpi-codemode/src/extension/eval-status-ticker.ts +79 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/extension/eval-status.ts +36 -3
- package/node_modules/@code-yeongyu/senpi-codemode/src/index.ts +26 -12
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-manager.ts +9 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +10 -15
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.d.ts +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.js +69 -19
- package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/amazon-bedrock.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/azure-openai-responses.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/huggingface.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode-go.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +5 -0
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/unavailable-tool-text.d.ts +3 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/unavailable-tool-text.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/unavailable-tool-text.js +36 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/unavailable-tool-text.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/package.json +1 -1
- package/node_modules/@earendil-works/pi-pty/package.json +1 -1
- package/node_modules/@earendil-works/pi-tui/package.json +1 -1
- package/package.json +6 -6
- package/dist/core/extensions/builtin/claude-agent-sdk/auth-lane.d.ts.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/auth-lane.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/guidance.d.ts +0 -6
- package/dist/core/extensions/builtin/claude-agent-sdk/guidance.d.ts.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/guidance.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/index.d.ts +0 -4
- package/dist/core/extensions/builtin/claude-agent-sdk/index.d.ts.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/index.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/oauth-login.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/options.d.ts +0 -16
- package/dist/core/extensions/builtin/claude-agent-sdk/options.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/prompt-bridge.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/settings.d.ts +0 -15
- package/dist/core/extensions/builtin/claude-agent-sdk/settings.d.ts.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/settings.js +0 -41
- package/dist/core/extensions/builtin/claude-agent-sdk/settings.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/stream.d.ts.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/stream.js.map +0 -1
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-events.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-events.js +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools-schema.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools-schema.js +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools.js +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/executable.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/executable.js +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/failover.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/prompt-bridge.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/sdk-boundary.js +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream-protocol.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream-protocol.js +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tools.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tools.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAQnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AA2BvE,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAmBtE"}
|
|
@@ -3,10 +3,11 @@ import { join } from "node:path";
|
|
|
3
3
|
import { getModels } from "@earendil-works/pi-ai/compat";
|
|
4
4
|
import { getAgentDir } from "../../../../config.js";
|
|
5
5
|
import { registerClaudeAccountCommand } from "./account-command.js";
|
|
6
|
-
import {
|
|
6
|
+
import { CLAUDE_SDK_OAUTH_PROVIDER_ID } from "./account-management.js";
|
|
7
7
|
import { createOAuthConfig } from "./oauth-login.js";
|
|
8
|
-
import {
|
|
9
|
-
|
|
8
|
+
import { registerSessionRegistry } from "./session-registry-wiring.js";
|
|
9
|
+
import { streamClaudeSdkOauth } from "./stream.js";
|
|
10
|
+
export { CLAUDE_SDK_OAUTH_PROVIDER_ID } from "./account-management.js";
|
|
10
11
|
const MODELS = getModels("anthropic").map((model) => ({
|
|
11
12
|
id: model.id,
|
|
12
13
|
name: model.name,
|
|
@@ -32,16 +33,17 @@ function readStoredCredential(providerId) {
|
|
|
32
33
|
return undefined;
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
|
-
export default function
|
|
36
|
+
export default function claudeSdkOauthExtension(pi) {
|
|
36
37
|
registerClaudeAccountCommand(pi);
|
|
37
|
-
pi
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
registerSessionRegistry(pi);
|
|
39
|
+
pi.registerProvider(CLAUDE_SDK_OAUTH_PROVIDER_ID, {
|
|
40
|
+
baseUrl: CLAUDE_SDK_OAUTH_PROVIDER_ID,
|
|
41
|
+
api: CLAUDE_SDK_OAUTH_PROVIDER_ID,
|
|
42
|
+
apiKey: "claude-sdk-oauth-managed",
|
|
41
43
|
models: MODELS,
|
|
42
|
-
streamSimple:
|
|
44
|
+
streamSimple: streamClaudeSdkOauth,
|
|
43
45
|
oauth: createOAuthConfig({
|
|
44
|
-
readCurrent: async () => readStoredCredential(
|
|
46
|
+
readCurrent: async () => readStoredCredential(CLAUDE_SDK_OAUTH_PROVIDER_ID),
|
|
45
47
|
readAnthropicCredential: async () => {
|
|
46
48
|
const credential = readStoredCredential("anthropic");
|
|
47
49
|
return credential && typeof credential.access === "string"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAEvE,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrD,EAAE,EAAE,KAAK,CAAC,EAAE;IACZ,IAAI,EAAE,KAAK,CAAC,IAAI;IAChB,SAAS,EAAE,KAAK,CAAC,SAAS;IAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;IAClB,IAAI,EAAE,KAAK,CAAC,IAAI;IAChB,aAAa,EAAE,KAAK,CAAC,aAAa;IAClC,SAAS,EAAE,KAAK,CAAC,SAAS;IAC1B,gBAAgB,EAAE;QACjB,GAAG,KAAK,CAAC,gBAAgB;QACzB,OAAO,EAAE,IAAI;KACb;CACD,CAAC,CAAC,CAAC;AAEJ,SAAS,oBAAoB,CAAC,UAAkB;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAA6C,CAAC;QACpG,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;AACF,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAAgB;IAC/D,4BAA4B,CAAC,EAAE,CAAC,CAAC;IACjC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAC5B,EAAE,CAAC,gBAAgB,CAAC,4BAA4B,EAAE;QACjD,OAAO,EAAE,4BAA4B;QACrC,GAAG,EAAE,4BAA4B;QACjC,MAAM,EAAE,0BAA0B;QAClC,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,oBAAoB;QAClC,KAAK,EAAE,iBAAiB,CAAC;YACxB,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,oBAAoB,CAAC,4BAA4B,CAAC;YAC3E,uBAAuB,EAAE,KAAK,IAAI,EAAE;gBACnC,MAAM,UAAU,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;gBACrD,OAAO,UAAU,IAAI,OAAO,UAAU,CAAC,MAAM,KAAK,QAAQ;oBACzD,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE;oBACzF,CAAC,CAAC,SAAS,CAAC;YACd,CAAC;SACD,CAAC;KACF,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { getModels } from \"@earendil-works/pi-ai/compat\";\nimport { getAgentDir } from \"../../../../config.ts\";\nimport type { ExtensionAPI } from \"../../types.ts\";\nimport { registerClaudeAccountCommand } from \"./account-command.ts\";\nimport { CLAUDE_SDK_OAUTH_PROVIDER_ID } from \"./account-management.ts\";\nimport type { ClaudeSdkOauthCredential } from \"./accounts.ts\";\nimport { createOAuthConfig } from \"./oauth-login.ts\";\nimport { registerSessionRegistry } from \"./session-registry-wiring.ts\";\nimport { streamClaudeSdkOauth } from \"./stream.ts\";\n\nexport { CLAUDE_SDK_OAUTH_PROVIDER_ID } from \"./account-management.ts\";\n\nconst MODELS = getModels(\"anthropic\").map((model) => ({\n\tid: model.id,\n\tname: model.name,\n\treasoning: model.reasoning,\n\tinput: model.input,\n\tcost: model.cost,\n\tcontextWindow: model.contextWindow,\n\tmaxTokens: model.maxTokens,\n\tthinkingLevelMap: {\n\t\t...model.thinkingLevelMap,\n\t\tminimal: null,\n\t},\n}));\n\nfunction readStoredCredential(providerId: string): ClaudeSdkOauthCredential | undefined {\n\tconst authPath = join(getAgentDir(), \"auth.json\");\n\tif (!existsSync(authPath)) return undefined;\n\ttry {\n\t\tconst data = JSON.parse(readFileSync(authPath, \"utf8\")) as Record<string, ClaudeSdkOauthCredential>;\n\t\treturn data[providerId];\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nexport default function claudeSdkOauthExtension(pi: ExtensionAPI): void {\n\tregisterClaudeAccountCommand(pi);\n\tregisterSessionRegistry(pi);\n\tpi.registerProvider(CLAUDE_SDK_OAUTH_PROVIDER_ID, {\n\t\tbaseUrl: CLAUDE_SDK_OAUTH_PROVIDER_ID,\n\t\tapi: CLAUDE_SDK_OAUTH_PROVIDER_ID,\n\t\tapiKey: \"claude-sdk-oauth-managed\",\n\t\tmodels: MODELS,\n\t\tstreamSimple: streamClaudeSdkOauth,\n\t\toauth: createOAuthConfig({\n\t\t\treadCurrent: async () => readStoredCredential(CLAUDE_SDK_OAUTH_PROVIDER_ID),\n\t\t\treadAnthropicCredential: async () => {\n\t\t\t\tconst credential = readStoredCredential(\"anthropic\");\n\t\t\t\treturn credential && typeof credential.access === \"string\"\n\t\t\t\t\t? { access: credential.access, refresh: credential.refresh, expires: credential.expires }\n\t\t\t\t\t: undefined;\n\t\t\t},\n\t\t}),\n\t});\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { OAuthAuth, OAuthCredentials } from "@earendil-works/pi-ai";
|
|
2
|
-
import { type
|
|
2
|
+
import { type ClaudeSdkOauthCredential } from "./accounts.ts";
|
|
3
3
|
export type OAuthLoginCallbacks = {
|
|
4
4
|
signal?: AbortSignal;
|
|
5
5
|
onAuth?: (event: {
|
|
@@ -12,14 +12,14 @@ export type OAuthLoginCallbacks = {
|
|
|
12
12
|
onManualCodeInput?: () => Promise<string>;
|
|
13
13
|
onProgress?: (message: string) => void;
|
|
14
14
|
};
|
|
15
|
-
export type CurrentCredentialReader = () => Promise<
|
|
15
|
+
export type CurrentCredentialReader = () => Promise<ClaudeSdkOauthCredential | undefined>;
|
|
16
16
|
export type OAuthConfigShape = {
|
|
17
17
|
name: string;
|
|
18
18
|
login(callbacks: OAuthLoginCallbacks): Promise<OAuthCredentials>;
|
|
19
19
|
refreshToken(credentials: OAuthCredentials): Promise<OAuthCredentials>;
|
|
20
20
|
getApiKey(credentials: OAuthCredentials): string;
|
|
21
21
|
};
|
|
22
|
-
export declare const
|
|
22
|
+
export declare const CLAUDE_SDK_OAUTH_NAME = "Claude SDK OAuth (Claude Pro/Max)";
|
|
23
23
|
export declare function createOAuthConfig(deps: {
|
|
24
24
|
readCurrent: CurrentCredentialReader;
|
|
25
25
|
readAnthropicCredential?: () => Promise<{
|
package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/oauth-login.d.ts.map
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-login.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-
|
|
1
|
+
{"version":3,"file":"oauth-login.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/oauth-login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,SAAS,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE1F,OAAO,EAGN,KAAK,wBAAwB,EAI7B,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,mBAAmB,GAAG;IACjC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClF,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,MAAM,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAAC;AAE1F,MAAM,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjE,YAAY,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACvE,SAAS,CAAC,WAAW,EAAE,gBAAgB,GAAG,MAAM,CAAC;CACjD,CAAC;AAEF,eAAO,MAAM,qBAAqB,sCAAsC,CAAC;AAsBzE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACvC,WAAW,EAAE,uBAAuB,CAAC;IACrC,uBAAuB,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;IAC1G,SAAS,CAAC,EAAE,SAAS,CAAC;CACtB,GAAG,gBAAgB,CAiDnB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { loadAnthropicOAuth } from "@earendil-works/pi-ai/oauth";
|
|
2
2
|
import { addAccount, emptyCredential, listAccounts, SENTINEL_OAUTH_FIELDS, } from "./accounts.js";
|
|
3
|
-
export const
|
|
3
|
+
export const CLAUDE_SDK_OAUTH_NAME = "Claude SDK OAuth (Claude Pro/Max)";
|
|
4
4
|
function toSlot(credential, name, source) {
|
|
5
5
|
return { name, access: credential.access, refresh: credential.refresh, expires: credential.expires, source };
|
|
6
6
|
}
|
|
@@ -17,7 +17,7 @@ async function promptAccountName(callbacks, existing) {
|
|
|
17
17
|
}
|
|
18
18
|
export function createOAuthConfig(deps) {
|
|
19
19
|
return {
|
|
20
|
-
name:
|
|
20
|
+
name: CLAUDE_SDK_OAUTH_NAME,
|
|
21
21
|
async login(callbacks) {
|
|
22
22
|
const current = (await deps.readCurrent()) ?? emptyCredential();
|
|
23
23
|
const existing = listAccounts(current);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-login.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/oauth-login.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AuthInteraction, OAuthAuth, OAuthCredentials } from \"@earendil-works/pi-ai\";\nimport { loadAnthropicOAuth } from \"@earendil-works/pi-ai/oauth\";\nimport {\n\ttype AccountSlot,\n\taddAccount,\n\ttype ClaudeSdkOauthCredential,\n\temptyCredential,\n\tlistAccounts,\n\tSENTINEL_OAUTH_FIELDS,\n} from \"./accounts.ts\";\n\nexport type OAuthLoginCallbacks = {\n\tsignal?: AbortSignal;\n\tonAuth?: (event: { url: string }) => void | Promise<void>;\n\tonPrompt?: (prompt: { message: string; placeholder?: string }) => Promise<string>;\n\tonManualCodeInput?: () => Promise<string>;\n\tonProgress?: (message: string) => void;\n};\n\nexport type CurrentCredentialReader = () => Promise<ClaudeSdkOauthCredential | undefined>;\n\nexport type OAuthConfigShape = {\n\tname: string;\n\tlogin(callbacks: OAuthLoginCallbacks): Promise<OAuthCredentials>;\n\trefreshToken(credentials: OAuthCredentials): Promise<OAuthCredentials>;\n\tgetApiKey(credentials: OAuthCredentials): string;\n};\n\nexport const CLAUDE_SDK_OAUTH_NAME = \"Claude SDK OAuth (Claude Pro/Max)\";\n\nfunction toSlot(\n\tcredential: { access: string; refresh: string; expires: number },\n\tname: string,\n\tsource: AccountSlot[\"source\"],\n): AccountSlot {\n\treturn { name, access: credential.access, refresh: credential.refresh, expires: credential.expires, source };\n}\n\nasync function promptAccountName(callbacks: OAuthLoginCallbacks, existing: AccountSlot[]): Promise<string> {\n\tif (existing.length === 0) return \"default\";\n\tif (!callbacks.onPrompt) return `account-${existing.length + 1}`;\n\tconst answer = (\n\t\tawait callbacks.onPrompt({\n\t\t\tmessage: `Name for this account (existing: ${existing.map((slot) => slot.name).join(\", \")})`,\n\t\t\tplaceholder: `account-${existing.length + 1}`,\n\t\t})\n\t).trim();\n\treturn answer || `account-${existing.length + 1}`;\n}\n\nexport function createOAuthConfig(deps: {\n\treadCurrent: CurrentCredentialReader;\n\treadAnthropicCredential?: () => Promise<{ access: string; refresh: string; expires: number } | undefined>;\n\tloginFlow?: OAuthAuth;\n}): OAuthConfigShape {\n\treturn {\n\t\tname: CLAUDE_SDK_OAUTH_NAME,\n\n\t\tasync login(callbacks) {\n\t\t\tconst current = (await deps.readCurrent()) ?? emptyCredential();\n\t\t\tconst existing = listAccounts(current);\n\t\t\tif (existing.length === 0 && deps.readAnthropicCredential && callbacks.onPrompt) {\n\t\t\t\tconst imported = await deps.readAnthropicCredential();\n\t\t\t\tif (imported) {\n\t\t\t\t\tconst answer = (\n\t\t\t\t\t\tawait callbacks.onPrompt({\n\t\t\t\t\t\t\tmessage: \"An Anthropic OAuth login already exists. Import it instead of a new login? [y/N]\",\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t\t.trim()\n\t\t\t\t\t\t.toLowerCase();\n\t\t\t\t\tif (answer === \"y\" || answer === \"yes\") {\n\t\t\t\t\t\treturn addAccount(current, toSlot(imported, \"imported-anthropic\", \"import\"));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst interaction: AuthInteraction = {\n\t\t\t\tsignal: callbacks.signal,\n\t\t\t\tprompt: async (prompt) => {\n\t\t\t\t\tif (prompt.type === \"select\") return \"\";\n\t\t\t\t\treturn callbacks.onPrompt ? callbacks.onPrompt({ message: prompt.message }) : \"\";\n\t\t\t\t},\n\t\t\t\tnotify: (event) => {\n\t\t\t\t\tif (event.type === \"auth_url\" && callbacks.onAuth) void callbacks.onAuth({ url: event.url });\n\t\t\t\t\tif (event.type === \"progress\" && callbacks.onProgress) callbacks.onProgress(event.message);\n\t\t\t\t},\n\t\t\t};\n\t\t\tconst flow = deps.loginFlow ?? (await loadAnthropicOAuth());\n\t\t\tconst credential = await flow.login(interaction);\n\n\t\t\tconst existingAfter = listAccounts(current);\n\t\t\tconst name = await promptAccountName(callbacks, existingAfter);\n\t\t\treturn addAccount(current, toSlot(credential, name, \"login\"));\n\t\t},\n\n\t\tasync refreshToken(credentials) {\n\t\t\treturn credentials;\n\t\t},\n\n\t\tgetApiKey(_credentials) {\n\t\t\treturn SENTINEL_OAUTH_FIELDS.access;\n\t\t},\n\t};\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Api, Context, Model, SimpleStreamOptions } from "@earendil-works/pi-ai";
|
|
2
|
+
import type { Options } from "./sdk-boundary.ts";
|
|
3
|
+
import { type ClaudeSdkOauthProviderSettings, type ClaudeSdkOauthTokenInjection } from "./settings.ts";
|
|
4
|
+
export type ClaudeSdkOauthAuthLane = ClaudeSdkOauthTokenInjection;
|
|
5
|
+
export interface ClaudeSdkOauthQueryOptionsInput {
|
|
6
|
+
readonly model: Model<Api>;
|
|
7
|
+
readonly context: Context;
|
|
8
|
+
readonly streamOptions?: SimpleStreamOptions;
|
|
9
|
+
readonly cwd?: string;
|
|
10
|
+
readonly providerSettings?: ClaudeSdkOauthProviderSettings;
|
|
11
|
+
readonly authLane?: ClaudeSdkOauthAuthLane;
|
|
12
|
+
readonly tools?: readonly string[];
|
|
13
|
+
readonly pathToClaudeCodeExecutable?: string;
|
|
14
|
+
readonly sessionId?: string;
|
|
15
|
+
readonly onGuidance?: (text: string) => void;
|
|
16
|
+
}
|
|
17
|
+
export declare function buildClaudeSdkOauthQueryOptions(input: ClaudeSdkOauthQueryOptionsInput): Options;
|
|
18
|
+
//# sourceMappingURL=options.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/options.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAkC,MAAM,uBAAuB,CAAC;AAUtH,OAAO,KAAK,EAAe,OAAO,EAAiC,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EACN,KAAK,8BAA8B,EAEnC,KAAK,4BAA4B,EAGjC,MAAM,eAAe,CAAC;AAIvB,MAAM,MAAM,sBAAsB,GAAG,4BAA4B,CAAC;AAElE,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IAC7C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,8BAA8B,CAAC;IAC3D,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAsLD,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,+BAA+B,GAAG,OAAO,CAoD/F"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from "node:fs";
|
|
2
2
|
import { dirname, join, relative, resolve } from "node:path";
|
|
3
3
|
import { CONFIG_DIR_NAME, getAgentDir } from "../../../../config.js";
|
|
4
|
-
import {
|
|
4
|
+
import { PROJECT_RULES_END_MARKER, PROJECT_RULES_HEADING, PROJECT_RULES_REGION_END_MARKER, PROJECT_RULES_REGION_START_MARKER, PROJECT_RULES_START_MARKER, } from "../rules/rules/constants.js";
|
|
5
|
+
import { presetAppendDeprecationGuidance } from "./guidance.js";
|
|
6
|
+
import { loadClaudeSdkOauthProviderSettingsFromDisk, resolveSystemPromptMode, } from "./settings.js";
|
|
7
|
+
import { loadOverrideSystemPrompt, resolveCustomSystemPrompt } from "./system-prompt.js";
|
|
5
8
|
import { BUILTIN_SDK_TOOLS, canUseTool, HOST_TOOL_DENIAL_HOOKS } from "./tools.js";
|
|
6
9
|
const ADAPTIVE_THINKING_MODEL_MARKERS = [
|
|
7
10
|
"opus-4-6",
|
|
@@ -131,19 +134,76 @@ function extractSkillsAppend(systemPrompt, cwd) {
|
|
|
131
134
|
return undefined;
|
|
132
135
|
return rewriteSkillsLocations(systemPrompt.slice(start, end + "</available_skills>".length).trim(), cwd);
|
|
133
136
|
}
|
|
134
|
-
|
|
135
|
-
|
|
137
|
+
/**
|
|
138
|
+
* This lane rebuilds the prompt from the `claude_code` preset plus `append`, so any
|
|
139
|
+
* region of senpi's composed prompt without an extractor here never reaches the model.
|
|
140
|
+
*
|
|
141
|
+
* Located by the rules builtin's opaque region sentinels rather than the model-facing
|
|
142
|
+
* `<project_rules>` tags, which surrounding prompt content may legitimately contain.
|
|
143
|
+
* The sentinels are a reserved wire literal but nothing neutralizes them outside the block, so
|
|
144
|
+
* each candidate is structurally validated and rejected candidates are skipped - otherwise a
|
|
145
|
+
* context file carrying one would shadow the real block or cross-match its end sentinel.
|
|
146
|
+
* Fail-closed on a missing end sentinel: never read to end-of-string, or the sections
|
|
147
|
+
* extensions append after this one get relabelled as project rules.
|
|
148
|
+
*/
|
|
149
|
+
function extractProjectRulesAppend(systemPrompt) {
|
|
150
|
+
if (!systemPrompt)
|
|
151
|
+
return undefined;
|
|
152
|
+
let searchFrom = 0;
|
|
153
|
+
while (searchFrom <= systemPrompt.length) {
|
|
154
|
+
const sentinelStart = systemPrompt.indexOf(PROJECT_RULES_REGION_START_MARKER, searchFrom);
|
|
155
|
+
if (sentinelStart === -1)
|
|
156
|
+
return undefined;
|
|
157
|
+
const regionStart = sentinelStart + PROJECT_RULES_REGION_START_MARKER.length;
|
|
158
|
+
const regionEnd = systemPrompt.indexOf(PROJECT_RULES_REGION_END_MARKER, regionStart);
|
|
159
|
+
if (regionEnd === -1)
|
|
160
|
+
return undefined;
|
|
161
|
+
const region = systemPrompt.slice(regionStart, regionEnd).trim();
|
|
162
|
+
if (isProjectRulesEnvelope(region))
|
|
163
|
+
return region;
|
|
164
|
+
searchFrom = regionStart;
|
|
165
|
+
}
|
|
166
|
+
return undefined;
|
|
167
|
+
}
|
|
168
|
+
function isProjectRulesEnvelope(region) {
|
|
169
|
+
return (region.startsWith(`${PROJECT_RULES_START_MARKER}\n${PROJECT_RULES_HEADING}\n`) &&
|
|
170
|
+
region.endsWith(`\n${PROJECT_RULES_END_MARKER}`));
|
|
171
|
+
}
|
|
172
|
+
function resolveSettingSources(providerSettings, mode, authLane) {
|
|
173
|
+
if (providerSettings.settingSources !== undefined)
|
|
174
|
+
return [...providerSettings.settingSources];
|
|
175
|
+
if (mode !== "preset-append" || authLane !== "ambient")
|
|
136
176
|
return [];
|
|
137
|
-
return
|
|
177
|
+
return ["user", "project"];
|
|
138
178
|
}
|
|
139
|
-
export function
|
|
179
|
+
export function buildClaudeSdkOauthQueryOptions(input) {
|
|
140
180
|
const cwd = input.cwd ?? process.cwd();
|
|
141
|
-
const providerSettings = input.providerSettings ??
|
|
181
|
+
const providerSettings = input.providerSettings ?? loadClaudeSdkOauthProviderSettingsFromDisk(cwd);
|
|
142
182
|
const appendSystemPrompt = providerSettings.appendSystemPrompt !== false;
|
|
183
|
+
const resolvedMode = resolveSystemPromptMode(providerSettings);
|
|
184
|
+
const mode = resolvedMode.mode;
|
|
185
|
+
if (input.sessionId !== undefined && input.onGuidance !== undefined) {
|
|
186
|
+
const deprecation = presetAppendDeprecationGuidance({
|
|
187
|
+
mode,
|
|
188
|
+
conflict: resolvedMode.conflict,
|
|
189
|
+
sessionId: input.sessionId,
|
|
190
|
+
});
|
|
191
|
+
if (deprecation !== undefined)
|
|
192
|
+
input.onGuidance(deprecation);
|
|
193
|
+
}
|
|
143
194
|
const authLane = input.authLane ?? providerSettings.tokenInjection ?? "oauth-slots";
|
|
144
|
-
const append =
|
|
145
|
-
? [
|
|
195
|
+
const append = mode === "preset-append"
|
|
196
|
+
? [
|
|
197
|
+
extractAgentsAppend(cwd),
|
|
198
|
+
extractSkillsAppend(input.context.systemPrompt, cwd),
|
|
199
|
+
extractProjectRulesAppend(input.context.systemPrompt),
|
|
200
|
+
].filter((part) => part !== undefined)
|
|
146
201
|
: [];
|
|
202
|
+
const systemPrompt = mode === "preset-append"
|
|
203
|
+
? { type: "preset", preset: "claude_code", append: append.join("\n\n") || undefined }
|
|
204
|
+
: mode === "override"
|
|
205
|
+
? loadOverrideSystemPrompt(providerSettings.systemPromptFile)
|
|
206
|
+
: resolveCustomSystemPrompt(input.context.systemPrompt);
|
|
147
207
|
const strictMcpConfig = providerSettings.strictMcpConfig ?? !appendSystemPrompt;
|
|
148
208
|
const queryOptions = {
|
|
149
209
|
cwd,
|
|
@@ -153,8 +213,8 @@ export function buildClaudeAgentSdkQueryOptions(input) {
|
|
|
153
213
|
includePartialMessages: true,
|
|
154
214
|
canUseTool,
|
|
155
215
|
hooks: HOST_TOOL_DENIAL_HOOKS,
|
|
156
|
-
systemPrompt
|
|
157
|
-
settingSources: resolveSettingSources(providerSettings,
|
|
216
|
+
systemPrompt,
|
|
217
|
+
settingSources: resolveSettingSources(providerSettings, mode, authLane),
|
|
158
218
|
};
|
|
159
219
|
if (input.pathToClaudeCodeExecutable)
|
|
160
220
|
queryOptions.pathToClaudeCodeExecutable = input.pathToClaudeCodeExecutable;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/options.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { dirname, join, relative, resolve } from \"node:path\";\nimport type { Api, Context, Model, SimpleStreamOptions, ThinkingBudgets, ThinkingLevel } from \"@earendil-works/pi-ai\";\nimport { CONFIG_DIR_NAME, getAgentDir } from \"../../../../config.ts\";\nimport {\n\tPROJECT_RULES_END_MARKER,\n\tPROJECT_RULES_HEADING,\n\tPROJECT_RULES_REGION_END_MARKER,\n\tPROJECT_RULES_REGION_START_MARKER,\n\tPROJECT_RULES_START_MARKER,\n} from \"../rules/rules/constants.ts\";\nimport { presetAppendDeprecationGuidance } from \"./guidance.ts\";\nimport type { EffortLevel, Options, SettingSource, ThinkingConfig } from \"./sdk-boundary.ts\";\nimport {\n\ttype ClaudeSdkOauthProviderSettings,\n\ttype ClaudeSdkOauthSystemPromptMode,\n\ttype ClaudeSdkOauthTokenInjection,\n\tloadClaudeSdkOauthProviderSettingsFromDisk,\n\tresolveSystemPromptMode,\n} from \"./settings.ts\";\nimport { loadOverrideSystemPrompt, resolveCustomSystemPrompt } from \"./system-prompt.ts\";\nimport { BUILTIN_SDK_TOOLS, canUseTool, HOST_TOOL_DENIAL_HOOKS } from \"./tools.ts\";\n\nexport type ClaudeSdkOauthAuthLane = ClaudeSdkOauthTokenInjection;\n\nexport interface ClaudeSdkOauthQueryOptionsInput {\n\treadonly model: Model<Api>;\n\treadonly context: Context;\n\treadonly streamOptions?: SimpleStreamOptions;\n\treadonly cwd?: string;\n\treadonly providerSettings?: ClaudeSdkOauthProviderSettings;\n\treadonly authLane?: ClaudeSdkOauthAuthLane;\n\treadonly tools?: readonly string[];\n\treadonly pathToClaudeCodeExecutable?: string;\n\treadonly sessionId?: string;\n\treadonly onGuidance?: (text: string) => void;\n}\n\nconst ADAPTIVE_THINKING_MODEL_MARKERS = [\n\t\"opus-4-6\",\n\t\"opus-4.6\",\n\t\"opus-4-7\",\n\t\"opus-4.7\",\n\t\"opus-4-8\",\n\t\"opus-4.8\",\n\t\"opus-5\",\n\t\"sonnet-4-6\",\n\t\"sonnet-4.6\",\n\t\"sonnet-5\",\n\t\"fable-5\",\n\t\"mythos-5\",\n] as const;\n\nconst NATIVE_XHIGH_EFFORT_MODEL_MARKERS = [\n\t\"opus-4-7\",\n\t\"opus-4-8\",\n\t\"opus-5\",\n\t\"sonnet-5\",\n\t\"fable-5\",\n\t\"mythos-5\",\n] as const;\n\nconst DEFAULT_THINKING_BUDGETS: Required<ThinkingBudgets> = {\n\tminimal: 2048,\n\tlow: 8192,\n\tmedium: 16384,\n\thigh: 31999,\n\tmax: 63999,\n};\n\nfunction includesModelMarker(model: Model<Api>, markers: readonly string[]): boolean {\n\tconst id = model.id.toLowerCase();\n\treturn markers.some((marker) => id.includes(marker));\n}\n\nfunction forcedAdaptiveThinking(model: Model<Api>): boolean | undefined {\n\tconst compat = model.compat;\n\tif (!compat || !(\"forceAdaptiveThinking\" in compat)) return undefined;\n\treturn typeof compat.forceAdaptiveThinking === \"boolean\" ? compat.forceAdaptiveThinking : undefined;\n}\n\nfunction supportsAdaptiveThinking(model: Model<Api>): boolean {\n\treturn forcedAdaptiveThinking(model) ?? includesModelMarker(model, ADAPTIVE_THINKING_MODEL_MARKERS);\n}\n\nfunction supportsNativeXhighEffort(model: Model<Api>): boolean {\n\treturn includesModelMarker(model, NATIVE_XHIGH_EFFORT_MODEL_MARKERS);\n}\n\nfunction isEffortLevel(value: string): value is EffortLevel {\n\treturn value === \"low\" || value === \"medium\" || value === \"high\" || value === \"xhigh\" || value === \"max\";\n}\n\nfunction mapThinkingLevelToEffort(model: Model<Api>, level: ThinkingLevel): EffortLevel {\n\tconst mapped = model.thinkingLevelMap?.[level];\n\tif (typeof mapped === \"string\" && isEffortLevel(mapped)) return mapped;\n\tswitch (level) {\n\t\tcase \"minimal\":\n\t\tcase \"low\":\n\t\t\treturn \"low\";\n\t\tcase \"medium\":\n\t\t\treturn \"medium\";\n\t\tcase \"high\":\n\t\t\treturn \"high\";\n\t\tcase \"xhigh\":\n\t\t\treturn supportsNativeXhighEffort(model) ? \"xhigh\" : \"max\";\n\t\tcase \"max\":\n\t\t\treturn \"max\";\n\t}\n}\n\nfunction mapThinkingTokens(reasoning: ThinkingLevel, thinkingBudgets: ThinkingBudgets | undefined): number {\n\tconst budgetLevel = reasoning === \"xhigh\" ? \"high\" : reasoning;\n\tconst customBudget = thinkingBudgets?.[budgetLevel];\n\treturn typeof customBudget === \"number\" && Number.isFinite(customBudget) && customBudget > 0\n\t\t? customBudget\n\t\t: DEFAULT_THINKING_BUDGETS[budgetLevel];\n}\n\nfunction findAgentsMdInParents(cwd: string): string | undefined {\n\tlet current = resolve(cwd);\n\twhile (true) {\n\t\tconst candidate = join(current, \"AGENTS.md\");\n\t\tif (existsSync(candidate)) return candidate;\n\t\tconst parent = dirname(current);\n\t\tif (parent === current) return undefined;\n\t\tcurrent = parent;\n\t}\n}\n\nfunction sanitizeAgentsContent(content: string): string {\n\tconst configDirectory = CONFIG_DIR_NAME.replace(/^\\./, \"\");\n\tconst escapedConfigDirectory = configDirectory.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\treturn content\n\t\t.replace(new RegExp(`~/${escapedConfigDirectory}\\\\b`, \"gi\"), \"~/.claude\")\n\t\t.replace(new RegExp(`(^|[\\\\s'\"\\`])\\\\.${escapedConfigDirectory}/`, \"g\"), \"$1.claude/\")\n\t\t.replace(new RegExp(`\\\\b${escapedConfigDirectory}\\\\b`, \"gi\"), \"environment\");\n}\n\nfunction extractAgentsAppend(cwd: string): string | undefined {\n\tconst agentsPath = findAgentsMdInParents(cwd) ?? join(getAgentDir(), \"AGENTS.md\");\n\tif (!existsSync(agentsPath)) return undefined;\n\ttry {\n\t\tconst content = sanitizeAgentsContent(readFileSync(agentsPath, \"utf-8\").trim());\n\t\treturn content.length > 0 ? `# CLAUDE.md\\n\\n${content}` : undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction rewriteSkillsLocations(skillsBlock: string, cwd: string): string {\n\tconst globalSkillsRoot = join(getAgentDir(), \"skills\");\n\tconst projectSkillsRoot = join(cwd, CONFIG_DIR_NAME, \"skills\");\n\treturn skillsBlock.replace(/<location>([^<]+)<\\/location>/g, (_match, location: string) => {\n\t\tif (location.startsWith(globalSkillsRoot)) {\n\t\t\treturn `<location>~/.claude/skills/${relative(globalSkillsRoot, location).replace(/^\\.+/, \"\")}</location>`;\n\t\t}\n\t\tif (location.startsWith(projectSkillsRoot)) {\n\t\t\treturn `<location>.claude/skills/${relative(projectSkillsRoot, location).replace(/^\\.+/, \"\")}</location>`;\n\t\t}\n\t\treturn `<location>${location}</location>`;\n\t});\n}\n\nfunction extractSkillsAppend(systemPrompt: string | undefined, cwd: string): string | undefined {\n\tif (!systemPrompt) return undefined;\n\tconst marker = \"The following skills provide specialized instructions for specific tasks.\";\n\tconst start = systemPrompt.indexOf(marker);\n\tconst end = start === -1 ? -1 : systemPrompt.indexOf(\"</available_skills>\", start);\n\tif (end === -1) return undefined;\n\treturn rewriteSkillsLocations(systemPrompt.slice(start, end + \"</available_skills>\".length).trim(), cwd);\n}\n\n/**\n * This lane rebuilds the prompt from the `claude_code` preset plus `append`, so any\n * region of senpi's composed prompt without an extractor here never reaches the model.\n *\n * Located by the rules builtin's opaque region sentinels rather than the model-facing\n * `<project_rules>` tags, which surrounding prompt content may legitimately contain.\n * The sentinels are a reserved wire literal but nothing neutralizes them outside the block, so\n * each candidate is structurally validated and rejected candidates are skipped - otherwise a\n * context file carrying one would shadow the real block or cross-match its end sentinel.\n * Fail-closed on a missing end sentinel: never read to end-of-string, or the sections\n * extensions append after this one get relabelled as project rules.\n */\nfunction extractProjectRulesAppend(systemPrompt: string | undefined): string | undefined {\n\tif (!systemPrompt) return undefined;\n\tlet searchFrom = 0;\n\twhile (searchFrom <= systemPrompt.length) {\n\t\tconst sentinelStart = systemPrompt.indexOf(PROJECT_RULES_REGION_START_MARKER, searchFrom);\n\t\tif (sentinelStart === -1) return undefined;\n\t\tconst regionStart = sentinelStart + PROJECT_RULES_REGION_START_MARKER.length;\n\t\tconst regionEnd = systemPrompt.indexOf(PROJECT_RULES_REGION_END_MARKER, regionStart);\n\t\tif (regionEnd === -1) return undefined;\n\t\tconst region = systemPrompt.slice(regionStart, regionEnd).trim();\n\t\tif (isProjectRulesEnvelope(region)) return region;\n\t\tsearchFrom = regionStart;\n\t}\n\treturn undefined;\n}\n\nfunction isProjectRulesEnvelope(region: string): boolean {\n\treturn (\n\t\tregion.startsWith(`${PROJECT_RULES_START_MARKER}\\n${PROJECT_RULES_HEADING}\\n`) &&\n\t\tregion.endsWith(`\\n${PROJECT_RULES_END_MARKER}`)\n\t);\n}\n\nfunction resolveSettingSources(\n\tproviderSettings: ClaudeSdkOauthProviderSettings,\n\tmode: ClaudeSdkOauthSystemPromptMode,\n\tauthLane: ClaudeSdkOauthAuthLane,\n): SettingSource[] {\n\tif (providerSettings.settingSources !== undefined) return [...providerSettings.settingSources];\n\tif (mode !== \"preset-append\" || authLane !== \"ambient\") return [];\n\treturn [\"user\", \"project\"];\n}\n\nexport function buildClaudeSdkOauthQueryOptions(input: ClaudeSdkOauthQueryOptionsInput): Options {\n\tconst cwd = input.cwd ?? process.cwd();\n\tconst providerSettings = input.providerSettings ?? loadClaudeSdkOauthProviderSettingsFromDisk(cwd);\n\tconst appendSystemPrompt = providerSettings.appendSystemPrompt !== false;\n\tconst resolvedMode = resolveSystemPromptMode(providerSettings);\n\tconst mode = resolvedMode.mode;\n\tif (input.sessionId !== undefined && input.onGuidance !== undefined) {\n\t\tconst deprecation = presetAppendDeprecationGuidance({\n\t\t\tmode,\n\t\t\tconflict: resolvedMode.conflict,\n\t\t\tsessionId: input.sessionId,\n\t\t});\n\t\tif (deprecation !== undefined) input.onGuidance(deprecation);\n\t}\n\tconst authLane = input.authLane ?? providerSettings.tokenInjection ?? \"oauth-slots\";\n\tconst append =\n\t\tmode === \"preset-append\"\n\t\t\t? [\n\t\t\t\t\textractAgentsAppend(cwd),\n\t\t\t\t\textractSkillsAppend(input.context.systemPrompt, cwd),\n\t\t\t\t\textractProjectRulesAppend(input.context.systemPrompt),\n\t\t\t\t].filter((part): part is string => part !== undefined)\n\t\t\t: [];\n\tconst systemPrompt =\n\t\tmode === \"preset-append\"\n\t\t\t? { type: \"preset\" as const, preset: \"claude_code\" as const, append: append.join(\"\\n\\n\") || undefined }\n\t\t\t: mode === \"override\"\n\t\t\t\t? loadOverrideSystemPrompt(providerSettings.systemPromptFile)\n\t\t\t\t: resolveCustomSystemPrompt(input.context.systemPrompt);\n\tconst strictMcpConfig = providerSettings.strictMcpConfig ?? !appendSystemPrompt;\n\tconst queryOptions: Options = {\n\t\tcwd,\n\t\tmodel: input.model.id,\n\t\ttools: input.tools ? [...input.tools] : [...BUILTIN_SDK_TOOLS],\n\t\tpermissionMode: \"dontAsk\",\n\t\tincludePartialMessages: true,\n\t\tcanUseTool,\n\t\thooks: HOST_TOOL_DENIAL_HOOKS,\n\t\tsystemPrompt,\n\t\tsettingSources: resolveSettingSources(providerSettings, mode, authLane),\n\t};\n\tif (input.pathToClaudeCodeExecutable) queryOptions.pathToClaudeCodeExecutable = input.pathToClaudeCodeExecutable;\n\tif (strictMcpConfig) queryOptions.extraArgs = { \"strict-mcp-config\": null };\n\n\tconst reasoning = input.streamOptions?.reasoning;\n\tif (reasoning && supportsAdaptiveThinking(input.model)) {\n\t\tqueryOptions.thinking = { type: \"adaptive\", display: \"summarized\" } satisfies ThinkingConfig;\n\t\tqueryOptions.effort = mapThinkingLevelToEffort(input.model, reasoning);\n\t} else if (reasoning) {\n\t\tqueryOptions.maxThinkingTokens = mapThinkingTokens(reasoning, input.streamOptions?.thinkingBudgets);\n\t}\n\treturn queryOptions;\n}\n"]}
|
package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/prompt-bridge.d.ts.map
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-bridge.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-
|
|
1
|
+
{"version":3,"file":"prompt-bridge.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/prompt-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAA6B,MAAM,uBAAuB,CAAC;AAClG,OAAO,KAAK,EAAqB,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAG9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIhD,wBAAgB,aAAa,CAC5B,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,EACpC,mBAAmB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/C,MAAM,CAWR;AA2BD,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,OAAO,EAChB,mBAAmB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EACjD,aAAa,CAAC,EAAE,MAAM,GACpB,iBAAiB,EAAE,CA+CrB;AAED,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,iBAAiB,EAAE,GAAG,aAAa,CAAC,cAAc,CAAC,CASlG"}
|
|
@@ -44,32 +44,45 @@ export function buildPromptBlocks(context, customToolNameToSdk, toolWatchNote) {
|
|
|
44
44
|
const pushText = (text) => {
|
|
45
45
|
blocks.push({ type: "text", text });
|
|
46
46
|
};
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
47
|
+
const finalMessage = context.messages.at(-1);
|
|
48
|
+
const finalUserMessage = finalMessage?.role === "user" ? finalMessage : undefined;
|
|
49
|
+
const history = finalUserMessage ? context.messages.slice(0, -1) : context.messages;
|
|
50
|
+
if (history.length > 0) {
|
|
51
|
+
pushText("<conversation_history>\n");
|
|
52
|
+
let hasPreviousTurn = false;
|
|
53
|
+
const pushPrefix = (label) => {
|
|
54
|
+
pushText(`${hasPreviousTurn ? "\n\n" : ""}${label}\n`);
|
|
55
|
+
hasPreviousTurn = true;
|
|
56
|
+
};
|
|
57
|
+
for (const message of history) {
|
|
58
|
+
if (message.role === "user") {
|
|
59
|
+
pushPrefix("USER:");
|
|
60
|
+
if (!appendContentBlocks(blocks, message.content))
|
|
61
|
+
pushText("(see attached image)");
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (message.role === "assistant") {
|
|
65
|
+
pushPrefix("ASSISTANT:");
|
|
66
|
+
const text = contentToText(message.content, customToolNameToSdk);
|
|
67
|
+
if (text.length > 0)
|
|
68
|
+
pushText(text);
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
pushPrefix(`TOOL RESULT (historical ${mapPiToolNameToSdk(message.toolName, customToolNameToSdk)}, id=${message.toolCallId}):`);
|
|
53
72
|
if (!appendContentBlocks(blocks, message.content))
|
|
54
73
|
pushText("(see attached image)");
|
|
55
|
-
continue;
|
|
56
|
-
}
|
|
57
|
-
if (message.role === "assistant") {
|
|
58
|
-
pushPrefix("ASSISTANT:");
|
|
59
|
-
const text = contentToText(message.content, customToolNameToSdk);
|
|
60
|
-
if (text.length > 0)
|
|
61
|
-
pushText(text);
|
|
62
|
-
continue;
|
|
63
74
|
}
|
|
64
|
-
|
|
65
|
-
if (!appendContentBlocks(blocks, message.content))
|
|
66
|
-
pushText("(see attached image)");
|
|
75
|
+
pushText("\n</conversation_history>");
|
|
67
76
|
}
|
|
68
77
|
if (toolWatchNote?.trim()) {
|
|
69
|
-
|
|
78
|
+
pushText("<recovered_tool_results>\n");
|
|
70
79
|
pushText(toolWatchNote.trim());
|
|
80
|
+
pushText("\n</recovered_tool_results>");
|
|
71
81
|
}
|
|
72
|
-
|
|
82
|
+
pushText('The above is the conversation history so far, provided as context. Respond as the assistant to the user message below only. Never emit "USER:" or "ASSISTANT:" labels or continue the transcript.');
|
|
83
|
+
if (finalUserMessage && !appendContentBlocks(blocks, finalUserMessage.content))
|
|
84
|
+
pushText("(see attached image)");
|
|
85
|
+
return blocks;
|
|
73
86
|
}
|
|
74
87
|
export function buildPromptStream(promptBlocks) {
|
|
75
88
|
return (async function* () {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-bridge.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/prompt-bridge.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIhD,MAAM,UAAU,aAAa,CAC5B,OAAoC,EACpC,mBAAiD;IAEjD,OAAO,OAAO;SACZ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACd,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC;QAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO,KAAK,CAAC,QAAQ,CAAC;QACrD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,OAAO,0CAA0C,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAChJ,CAAC;QACD,OAAO,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC;IAC1B,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,MAA2B,EAAE,OAAsB;IAC/E,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QACjC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACrE,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAChD,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,KAAK,CAAC,QAA2C;oBAC7D,IAAI,EAAE,KAAK,CAAC,IAAI;iBAChB;aACD,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAChC,OAAgB,EAChB,mBAAiD,EACjD,aAAsB;IAEtB,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAQ,EAAE;QACvC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC;IACF,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,gBAAgB,GAAG,YAAY,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAEpF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,QAAQ,CAAC,0BAA0B,CAAC,CAAC;QACrC,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,MAAM,UAAU,GAAG,CAAC,KAAa,EAAQ,EAAE;YAC1C,QAAQ,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;YACvD,eAAe,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC7B,UAAU,CAAC,OAAO,CAAC,CAAC;gBACpB,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC;oBAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC;gBACpF,SAAS;YACV,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAClC,UAAU,CAAC,YAAY,CAAC,CAAC;gBACzB,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;gBACjE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;oBAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpC,SAAS;YACV,CAAC;YACD,UAAU,CACT,2BAA2B,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,OAAO,CAAC,UAAU,IAAI,CAClH,CAAC;YACF,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC;gBAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC;QACrF,CAAC;QACD,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,aAAa,EAAE,IAAI,EAAE,EAAE,CAAC;QAC3B,QAAQ,CAAC,4BAA4B,CAAC,CAAC;QACvC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/B,QAAQ,CAAC,6BAA6B,CAAC,CAAC;IACzC,CAAC;IACD,QAAQ,CACP,mMAAmM,CACnM,CAAC;IACF,IAAI,gBAAgB,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC;QAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IACjH,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,YAAiC;IAClE,OAAO,CAAC,KAAK,SAAS,CAAC;QACtB,MAAM;YACL,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAA+B;YAC7E,kBAAkB,EAAE,IAAI;YACxB,UAAU,EAAE,QAAQ;SACpB,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;AACN,CAAC","sourcesContent":["import type { AssistantMessage, Context, ImageContent, TextContent } from \"@earendil-works/pi-ai\";\nimport type { Base64ImageSource, ContentBlockParam, SDKUserMessage } from \"./sdk-boundary.ts\";\nimport { mapPiToolNameToSdk } from \"./tools.ts\";\n\nexport { mapPiToolNameToSdk } from \"./tools.ts\";\n\ntype PromptContent = string | readonly (TextContent | ImageContent)[];\n\nexport function contentToText(\n\tcontent: AssistantMessage[\"content\"],\n\tcustomToolNameToSdk?: ReadonlyMap<string, string>,\n): string {\n\treturn content\n\t\t.map((block) => {\n\t\t\tif (block.type === \"text\") return block.text;\n\t\t\tif (block.type === \"thinking\") return block.thinking;\n\t\t\tif (block.type === \"toolCall\") {\n\t\t\t\treturn `Historical tool call (non-executable): ${mapPiToolNameToSdk(block.name, customToolNameToSdk)} args=${JSON.stringify(block.arguments)}`;\n\t\t\t}\n\t\t\treturn `[${block.type}]`;\n\t\t})\n\t\t.join(\"\\n\");\n}\n\nfunction appendContentBlocks(blocks: ContentBlockParam[], content: PromptContent): boolean {\n\tif (typeof content === \"string\") {\n\t\tif (content.length > 0) blocks.push({ type: \"text\", text: content });\n\t\treturn content.trim().length > 0;\n\t}\n\n\tlet hasText = false;\n\tfor (const block of content) {\n\t\tif (block.type === \"text\") {\n\t\t\tblocks.push({ type: \"text\", text: block.text });\n\t\t\thasText ||= block.text.trim().length > 0;\n\t\t} else {\n\t\t\tblocks.push({\n\t\t\t\ttype: \"image\",\n\t\t\t\tsource: {\n\t\t\t\t\ttype: \"base64\",\n\t\t\t\t\tmedia_type: block.mimeType as Base64ImageSource[\"media_type\"],\n\t\t\t\t\tdata: block.data,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\treturn hasText;\n}\n\nexport function buildPromptBlocks(\n\tcontext: Context,\n\tcustomToolNameToSdk?: ReadonlyMap<string, string>,\n\ttoolWatchNote?: string,\n): ContentBlockParam[] {\n\tconst blocks: ContentBlockParam[] = [];\n\tconst pushText = (text: string): void => {\n\t\tblocks.push({ type: \"text\", text });\n\t};\n\tconst finalMessage = context.messages.at(-1);\n\tconst finalUserMessage = finalMessage?.role === \"user\" ? finalMessage : undefined;\n\tconst history = finalUserMessage ? context.messages.slice(0, -1) : context.messages;\n\n\tif (history.length > 0) {\n\t\tpushText(\"<conversation_history>\\n\");\n\t\tlet hasPreviousTurn = false;\n\t\tconst pushPrefix = (label: string): void => {\n\t\t\tpushText(`${hasPreviousTurn ? \"\\n\\n\" : \"\"}${label}\\n`);\n\t\t\thasPreviousTurn = true;\n\t\t};\n\n\t\tfor (const message of history) {\n\t\t\tif (message.role === \"user\") {\n\t\t\t\tpushPrefix(\"USER:\");\n\t\t\t\tif (!appendContentBlocks(blocks, message.content)) pushText(\"(see attached image)\");\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (message.role === \"assistant\") {\n\t\t\t\tpushPrefix(\"ASSISTANT:\");\n\t\t\t\tconst text = contentToText(message.content, customToolNameToSdk);\n\t\t\t\tif (text.length > 0) pushText(text);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tpushPrefix(\n\t\t\t\t`TOOL RESULT (historical ${mapPiToolNameToSdk(message.toolName, customToolNameToSdk)}, id=${message.toolCallId}):`,\n\t\t\t);\n\t\t\tif (!appendContentBlocks(blocks, message.content)) pushText(\"(see attached image)\");\n\t\t}\n\t\tpushText(\"\\n</conversation_history>\");\n\t}\n\n\tif (toolWatchNote?.trim()) {\n\t\tpushText(\"<recovered_tool_results>\\n\");\n\t\tpushText(toolWatchNote.trim());\n\t\tpushText(\"\\n</recovered_tool_results>\");\n\t}\n\tpushText(\n\t\t'The above is the conversation history so far, provided as context. Respond as the assistant to the user message below only. Never emit \"USER:\" or \"ASSISTANT:\" labels or continue the transcript.',\n\t);\n\tif (finalUserMessage && !appendContentBlocks(blocks, finalUserMessage.content)) pushText(\"(see attached image)\");\n\treturn blocks;\n}\n\nexport function buildPromptStream(promptBlocks: ContentBlockParam[]): AsyncIterable<SDKUserMessage> {\n\treturn (async function* () {\n\t\tyield {\n\t\t\ttype: \"user\",\n\t\t\tmessage: { role: \"user\", content: promptBlocks } as SDKUserMessage[\"message\"],\n\t\t\tparent_tool_use_id: null,\n\t\t\tsession_id: \"prompt\",\n\t\t};\n\t})();\n}\n"]}
|
package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/sdk-boundary.d.ts
RENAMED
|
@@ -6,6 +6,7 @@ export type SdkQueryInput = Parameters<typeof query>[0];
|
|
|
6
6
|
export type SdkQueryHandle = AsyncIterable<SDKMessage> & {
|
|
7
7
|
interrupt(): Promise<unknown>;
|
|
8
8
|
close(): void;
|
|
9
|
+
initializationResult?: () => Promise<unknown>;
|
|
9
10
|
};
|
|
10
11
|
export type SdkQuery = (input: SdkQueryInput) => SdkQueryHandle;
|
|
11
12
|
export type SdkBoundary = {
|
package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/sdk-boundary.d.ts.map
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-boundary.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-
|
|
1
|
+
{"version":3,"file":"sdk-boundary.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/sdk-boundary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,WAAW,EACX,OAAO,EACP,UAAU,EACV,cAAc,EACd,aAAa,EACb,cAAc,EACd,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAExF,YAAY,EACX,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,OAAO,EACP,UAAU,EACV,cAAc,EACd,aAAa,EACb,cAAc,GACd,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,MAAM,MAAM,cAAc,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG;IACxD,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,KAAK,IAAI,IAAI,CAAC;IACd,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9C,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,cAAc,CAAC;AAEhE,MAAM,MAAM,WAAW,GAAG;IACzB,KAAK,EAAE,QAAQ,CAAC;IAChB,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;CAC9C,CAAC;AAEF,QAAA,MAAM,kBAAkB,EAAE,WAA2C,CAAC;AAGtE,wBAAgB,cAAc,IAAI,WAAW,CAE5C;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAExE;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;eAEc,kBAAkB"}
|
package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/sdk-boundary.js.map
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-boundary.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-
|
|
1
|
+
{"version":3,"file":"sdk-boundary.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/sdk-boundary.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AA2B3E,MAAM,kBAAkB,GAAgB,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;AACtE,IAAI,iBAAiB,GAAG,kBAAkB,CAAC;AAE3C,MAAM,UAAU,cAAc;IAC7B,OAAO,iBAAiB,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAA8B;IACjE,iBAAiB,GAAG,EAAE,GAAG,kBAAkB,EAAE,GAAG,QAAQ,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC/B,iBAAiB,GAAG,kBAAkB,CAAC;AACxC,CAAC;AAED,eAAe,kBAAkB,CAAC","sourcesContent":["import type {\n\tEffortLevel,\n\tOptions,\n\tSDKMessage,\n\tSDKUserMessage,\n\tSettingSource,\n\tThinkingConfig,\n} from \"@anthropic-ai/claude-agent-sdk\";\nimport { createSdkMcpServer, query } from \"@anthropic-ai/claude-agent-sdk\";\nimport type { Base64ImageSource, ContentBlockParam } from \"@anthropic-ai/sdk/resources\";\n\nexport type {\n\tBase64ImageSource,\n\tContentBlockParam,\n\tEffortLevel,\n\tOptions,\n\tSDKMessage,\n\tSDKUserMessage,\n\tSettingSource,\n\tThinkingConfig,\n};\n\nexport type SdkQueryInput = Parameters<typeof query>[0];\nexport type SdkQueryHandle = AsyncIterable<SDKMessage> & {\n\tinterrupt(): Promise<unknown>;\n\tclose(): void;\n\tinitializationResult?: () => Promise<unknown>;\n};\nexport type SdkQuery = (input: SdkQueryInput) => SdkQueryHandle;\n\nexport type SdkBoundary = {\n\tquery: SdkQuery;\n\tcreateSdkMcpServer: typeof createSdkMcpServer;\n};\n\nconst defaultSdkBoundary: SdkBoundary = { query, createSdkMcpServer };\nlet activeSdkBoundary = defaultSdkBoundary;\n\nexport function getSdkBoundary(): SdkBoundary {\n\treturn activeSdkBoundary;\n}\n\nexport function overrideSdkBoundary(override: Partial<SdkBoundary>): void {\n\tactiveSdkBoundary = { ...defaultSdkBoundary, ...override };\n}\n\nexport function resetSdkBoundary(): void {\n\tactiveSdkBoundary = defaultSdkBoundary;\n}\n\nexport default defaultSdkBoundary;\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { SDKMessage, SDKUserMessage } from "./sdk-boundary.ts";
|
|
2
|
+
import { type ClaudeSdkOauthSessionEntry, type ClaudeSdkOauthSessionRegistry } from "./session-registry.ts";
|
|
3
|
+
export declare const DEFAULT_PRE_REPLAY_MAX_MESSAGES = 64;
|
|
4
|
+
export declare const DEFAULT_PRE_REPLAY_MAX_BYTES: number;
|
|
5
|
+
export declare const SESSION_TURN_ABORT_GRACE_MS = 1000;
|
|
6
|
+
export interface SessionTurnRequest {
|
|
7
|
+
message: SDKUserMessage["message"];
|
|
8
|
+
signal?: AbortSignal;
|
|
9
|
+
onMessage?: (message: SDKMessage) => void;
|
|
10
|
+
scheduleAbort?: (callback: () => void, delayMs: number) => () => void;
|
|
11
|
+
}
|
|
12
|
+
export interface SessionTurnResult {
|
|
13
|
+
uuid: string;
|
|
14
|
+
messages: SDKMessage[];
|
|
15
|
+
aborted: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface PreReplayBufferLimits {
|
|
18
|
+
maxMessages: number;
|
|
19
|
+
maxBytes: number;
|
|
20
|
+
}
|
|
21
|
+
export declare class ConcurrentSessionTurnAdmissionError extends Error {
|
|
22
|
+
readonly code = "claude_sdk_oauth_concurrent_turn_admission";
|
|
23
|
+
constructor(sessionId: string);
|
|
24
|
+
}
|
|
25
|
+
export declare class SessionTurnAttributionError extends Error {
|
|
26
|
+
readonly code = "claude_sdk_oauth_turn_attribution";
|
|
27
|
+
constructor(message: string);
|
|
28
|
+
}
|
|
29
|
+
export declare function submitSessionTurn(registry: ClaudeSdkOauthSessionRegistry, entry: ClaudeSdkOauthSessionEntry, request: SessionTurnRequest, limits?: PreReplayBufferLimits): Promise<SessionTurnResult>;
|
|
30
|
+
//# sourceMappingURL=session-registry-pump.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-registry-pump.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EACN,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAElC,MAAM,uBAAuB,CAAC;AAU/B,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAClD,eAAO,MAAM,4BAA4B,QAAa,CAAC;AACvD,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,IAAI,CAAC;CACtE;AAED,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAmBD,qBAAa,mCAAoC,SAAQ,KAAK;IAC7D,QAAQ,CAAC,IAAI,gDAAgD;IAE7D,YAAY,SAAS,EAAE,MAAM,EAG5B;CACD;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IACrD,QAAQ,CAAC,IAAI,uCAAuC;IAEpD,YAAY,OAAO,EAAE,MAAM,EAG1B;CACD;AAiJD,wBAAgB,iBAAiB,CAChC,QAAQ,EAAE,6BAA6B,EACvC,KAAK,EAAE,0BAA0B,EACjC,OAAO,EAAE,kBAAkB,EAC3B,MAAM,GAAE,qBAGP,GACC,OAAO,CAAC,iBAAiB,CAAC,CAgD5B"}
|