@code-yeongyu/senpi 2026.9.9 → 2026.9.10
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 +82 -1
- package/README.md +2 -0
- package/dist/beta/omo-local-update-worker.js.map +1 -1
- package/dist/beta/omo-local-update.d.ts.map +1 -1
- package/dist/brand-dir-migration.js.map +1 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +1 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/auth-check.js.map +1 -1
- package/dist/cli/experimental/command.d.ts.map +1 -1
- package/dist/cli/grok-neo-gate.js.map +1 -1
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/client/remote-session.d.ts.map +1 -1
- package/dist/client/remote-session.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +43 -19
- package/dist/config.js.map +1 -1
- package/dist/core/agent-abort-provenance.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session.d.ts +46 -7
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +109 -6
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/agent-settled-delivery.d.ts.map +1 -1
- package/dist/core/auth-providers.js.map +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/brand.js.map +1 -1
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/lifecycle.d.ts.map +1 -1
- package/dist/core/compaction/stream-watchdog.d.ts.map +1 -1
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/credential-accounts.js.map +1 -1
- package/dist/core/credential-pool/classify.js.map +1 -1
- package/dist/core/credential-pool/failover.d.ts.map +1 -1
- package/dist/core/credential-pool/rotation-stream.js.map +1 -1
- package/dist/core/credential-pool/state-store.d.ts +2 -2
- package/dist/core/credential-pool/state-store.d.ts.map +1 -1
- package/dist/core/credential-pool/state-store.js.map +1 -1
- package/dist/core/dynamic-prompt/verification.d.ts.map +1 -1
- package/dist/core/edited-assistant-message.d.ts +24 -0
- package/dist/core/edited-assistant-message.d.ts.map +1 -0
- package/dist/core/edited-assistant-message.js +57 -0
- package/dist/core/edited-assistant-message.js.map +1 -0
- package/dist/core/experimental.d.ts.map +1 -1
- package/dist/core/extensions/builtin/ask-user/extension.d.ts +3 -0
- package/dist/core/extensions/builtin/ask-user/extension.d.ts.map +1 -0
- package/dist/core/extensions/builtin/ask-user/extension.js +47 -0
- package/dist/core/extensions/builtin/ask-user/extension.js.map +1 -0
- package/dist/core/extensions/builtin/ask-user/family.d.ts +8 -0
- package/dist/core/extensions/builtin/ask-user/family.d.ts.map +1 -0
- package/dist/core/extensions/builtin/ask-user/family.js +6 -0
- package/dist/core/extensions/builtin/ask-user/family.js.map +1 -0
- package/dist/core/extensions/builtin/ask-user/format.d.ts +22 -0
- package/dist/core/extensions/builtin/ask-user/format.d.ts.map +1 -0
- package/dist/core/extensions/builtin/ask-user/format.js +109 -0
- package/dist/core/extensions/builtin/ask-user/format.js.map +1 -0
- package/dist/core/extensions/builtin/ask-user/index.d.ts +4 -0
- package/dist/core/extensions/builtin/ask-user/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/ask-user/index.js +4 -0
- package/dist/core/extensions/builtin/ask-user/index.js.map +1 -0
- package/dist/core/extensions/builtin/ask-user/params.d.ts +27 -0
- package/dist/core/extensions/builtin/ask-user/params.d.ts.map +1 -0
- package/dist/core/extensions/builtin/ask-user/params.js +78 -0
- package/dist/core/extensions/builtin/ask-user/params.js.map +1 -0
- package/dist/core/extensions/builtin/ask-user/pending.d.ts +58 -0
- package/dist/core/extensions/builtin/ask-user/pending.d.ts.map +1 -0
- package/dist/core/extensions/builtin/ask-user/pending.js +130 -0
- package/dist/core/extensions/builtin/ask-user/pending.js.map +1 -0
- package/dist/core/extensions/builtin/ask-user/registry.d.ts +21 -0
- package/dist/core/extensions/builtin/ask-user/registry.d.ts.map +1 -0
- package/dist/core/extensions/builtin/ask-user/registry.js +20 -0
- package/dist/core/extensions/builtin/ask-user/registry.js.map +1 -0
- package/dist/core/extensions/builtin/ask-user/render.d.ts +4 -0
- package/dist/core/extensions/builtin/ask-user/render.d.ts.map +1 -0
- package/dist/core/extensions/builtin/ask-user/render.js +25 -0
- package/dist/core/extensions/builtin/ask-user/render.js.map +1 -0
- package/dist/core/extensions/builtin/ask-user/resume.d.ts +4 -0
- package/dist/core/extensions/builtin/ask-user/resume.d.ts.map +1 -0
- package/dist/core/extensions/builtin/ask-user/resume.js +85 -0
- package/dist/core/extensions/builtin/ask-user/resume.js.map +1 -0
- package/dist/core/extensions/builtin/ask-user/schema.d.ts +40 -0
- package/dist/core/extensions/builtin/ask-user/schema.d.ts.map +1 -0
- package/dist/core/extensions/builtin/ask-user/schema.js +102 -0
- package/dist/core/extensions/builtin/ask-user/schema.js.map +1 -0
- package/dist/core/extensions/builtin/ask-user/tool.d.ts +8 -0
- package/dist/core/extensions/builtin/ask-user/tool.d.ts.map +1 -0
- package/dist/core/extensions/builtin/ask-user/tool.js +195 -0
- package/dist/core/extensions/builtin/ask-user/tool.js.map +1 -0
- package/dist/core/extensions/builtin/bash-timeout/timeout.js.map +1 -1
- package/dist/core/extensions/builtin/btw/panel.d.ts.map +1 -1
- package/dist/core/extensions/builtin/btw/side-query.js.map +1 -1
- package/dist/core/extensions/builtin/cache-keepalive/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/cache-keepalive/index.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/account-command.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/account-management.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/accounts.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/accounts.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/affinity.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/affinity.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/availability.d.ts +11 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/availability.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/availability.js +12 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/availability.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/bounded-queue.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/custom-tools.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/errors.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/executable-path-lookup.d.ts +14 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/executable-path-lookup.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/executable-path-lookup.js +42 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/executable-path-lookup.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/executable.d.ts +18 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/executable.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/executable.js +105 -36
- package/dist/core/extensions/builtin/claude-sdk-oauth/executable.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/failover.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/index.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/refusal.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/sdk-boundary.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-commit-boundary.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-reaper.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.js +4 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-attempt.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-types.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/settings.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream-protocol.d.ts +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/tool-watch.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/tools.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/context-reduction.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/lane-policy.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/log.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/model-usability-budget.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/openai-remote-convert.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/openai-remote.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/overflow-retry.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/resume-admission.d.ts +7 -0
- package/dist/core/extensions/builtin/compaction/resume-admission.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/resume-admission.js +7 -0
- package/dist/core/extensions/builtin/compaction/resume-admission.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/resume-slice.d.ts +23 -0
- package/dist/core/extensions/builtin/compaction/resume-slice.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/resume-slice.js +99 -0
- package/dist/core/extensions/builtin/compaction/resume-slice.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/summarization-retry.js.map +1 -1
- package/dist/core/extensions/builtin/config-reload/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/config-reload/index.js.map +1 -1
- package/dist/core/extensions/builtin/config-reload/log.js.map +1 -1
- package/dist/core/extensions/builtin/config-reload/protocol.d.ts.map +1 -1
- package/dist/core/extensions/builtin/config-reload/reload-deferral.d.ts.map +1 -1
- package/dist/core/extensions/builtin/config-reload/watch-engine.d.ts.map +1 -1
- package/dist/core/extensions/builtin/config-reload/watch-event-source.js.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/account-command.js.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/accounts.d.ts.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/affinity.d.ts.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/affinity.js.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/diagnostics.d.ts.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/diagnostics.js.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/executable.d.ts.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/executable.js.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/failover.d.ts.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/guardrails.d.ts.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/guardrails.js.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/index.js.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/oauth-login.js.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/session-router.d.ts.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/session-router.js.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/stream-parser.d.ts.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/stream-parser.js.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/stream.js.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/transport.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/cache-warm-renderer.js.map +1 -1
- package/dist/core/extensions/builtin/goal/command-registration.js.map +1 -1
- package/dist/core/extensions/builtin/goal/direct-input-lifecycle.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/elapsed-ticker.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/errors.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/monitor-continuation.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/monitor-continuation.js +57 -4
- package/dist/core/extensions/builtin/goal/monitor-continuation.js.map +1 -1
- package/dist/core/extensions/builtin/goal/persistence.js.map +1 -1
- package/dist/core/extensions/builtin/goal/prompt.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/prompt.js +9 -6
- package/dist/core/extensions/builtin/goal/prompt.js.map +1 -1
- package/dist/core/extensions/builtin/goal/store.js.map +1 -1
- package/dist/core/extensions/builtin/goal/tool-registration.js +1 -1
- package/dist/core/extensions/builtin/goal/tool-registration.js.map +1 -1
- package/dist/core/extensions/builtin/goal/turn-usage.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/types.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/ui.js.map +1 -1
- package/dist/core/extensions/builtin/goal/wait-progress.js.map +1 -1
- package/dist/core/extensions/builtin/goal/wait-ticker.d.ts.map +1 -1
- package/dist/core/extensions/builtin/gpt-account.d.ts.map +1 -1
- package/dist/core/extensions/builtin/gpt-account.js +1 -0
- package/dist/core/extensions/builtin/gpt-account.js.map +1 -1
- package/dist/core/extensions/builtin/gpt-apply-patch/apply.js.map +1 -1
- package/dist/core/extensions/builtin/gpt-apply-patch/errors.d.ts.map +1 -1
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.d.ts.map +1 -1
- package/dist/core/extensions/builtin/gpt-apply-patch/preview-format.js.map +1 -1
- package/dist/core/extensions/builtin/gpt-apply-patch/preview.js.map +1 -1
- package/dist/core/extensions/builtin/gpt-apply-patch/streaming-parser.d.ts.map +1 -1
- package/dist/core/extensions/builtin/gpt-apply-patch/tool.js.map +1 -1
- package/dist/core/extensions/builtin/help/panel.d.ts.map +1 -1
- package/dist/core/extensions/builtin/history-search/index.js.map +1 -1
- package/dist/core/extensions/builtin/history-search/overlay.d.ts.map +1 -1
- package/dist/core/extensions/builtin/hooks/command-runner.js.map +1 -1
- package/dist/core/extensions/builtin/hooks/dispatcher.js.map +1 -1
- package/dist/core/extensions/builtin/hooks/plugin-loader.js.map +1 -1
- package/dist/core/extensions/builtin/hooks/tool-adapter.js.map +1 -1
- package/dist/core/extensions/builtin/hooks/trust-storage.d.ts.map +1 -1
- package/dist/core/extensions/builtin/hooks/trust.js.map +1 -1
- package/dist/core/extensions/builtin/hooks/types.d.ts.map +1 -1
- package/dist/core/extensions/builtin/imagegen/index.js.map +1 -1
- package/dist/core/extensions/builtin/imagegen/params.d.ts +45 -0
- package/dist/core/extensions/builtin/imagegen/params.d.ts.map +1 -0
- package/dist/core/extensions/builtin/imagegen/params.js +81 -0
- package/dist/core/extensions/builtin/imagegen/params.js.map +1 -0
- package/dist/core/extensions/builtin/imagegen/paths.d.ts +10 -4
- package/dist/core/extensions/builtin/imagegen/paths.d.ts.map +1 -1
- package/dist/core/extensions/builtin/imagegen/paths.js +43 -10
- package/dist/core/extensions/builtin/imagegen/paths.js.map +1 -1
- package/dist/core/extensions/builtin/imagegen/reference-images.d.ts +20 -0
- package/dist/core/extensions/builtin/imagegen/reference-images.d.ts.map +1 -0
- package/dist/core/extensions/builtin/imagegen/reference-images.js +70 -0
- package/dist/core/extensions/builtin/imagegen/reference-images.js.map +1 -0
- package/dist/core/extensions/builtin/imagegen/skill/SKILL.md +58 -33
- package/dist/core/extensions/builtin/imagegen/tool.d.ts +15 -19
- package/dist/core/extensions/builtin/imagegen/tool.d.ts.map +1 -1
- package/dist/core/extensions/builtin/imagegen/tool.js +74 -52
- package/dist/core/extensions/builtin/imagegen/tool.js.map +1 -1
- package/dist/core/extensions/builtin/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/index.js +2 -0
- package/dist/core/extensions/builtin/index.js.map +1 -1
- package/dist/core/extensions/builtin/look-at/model-selector.d.ts.map +1 -1
- package/dist/core/extensions/builtin/look-at/runner.js.map +1 -1
- package/dist/core/extensions/builtin/loop/command.js.map +1 -1
- package/dist/core/extensions/builtin/loop/cron-planner.js.map +1 -1
- package/dist/core/extensions/builtin/loop/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/loop/index.js.map +1 -1
- package/dist/core/extensions/builtin/loop/loopfile.d.ts.map +1 -1
- package/dist/core/extensions/builtin/loop/scheduler.js.map +1 -1
- package/dist/core/extensions/builtin/loop/status.d.ts.map +1 -1
- package/dist/core/extensions/builtin/loop/store.d.ts.map +1 -1
- package/dist/core/extensions/builtin/loop/types.d.ts.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/detectors.d.ts.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/escalation.d.ts.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/escalation.js.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/index.js.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/notice.js.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/renderer.js.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/tracker.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/active-set.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/auth/callback.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/auth/oauth-errors.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/auth/oauth-errors.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/auth/oauth-provider.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/auth/oauth-refresh.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/auth/oauth-refresh.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/auth/oauth.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/auth/token-store.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/catalog.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/config-schema.d.ts +28 -28
- package/dist/core/extensions/builtin/mcp/config.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/connection.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/elicitation.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/elicitation.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/errors.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/errors.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/expose/register.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/expose/session.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/guard/output-guard.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/guard/output-guard.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/log.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/reconnect.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/service-register.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/service.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/service.js.map +1 -1
- package/dist/core/extensions/builtin/nested-agents-md/core/errors.d.ts.map +1 -1
- package/dist/core/extensions/builtin/nested-agents-md/core/injection-cache.d.ts.map +1 -1
- package/dist/core/extensions/builtin/nested-agents-md/core/types.d.ts.map +1 -1
- package/dist/core/extensions/builtin/oauth-login-interaction.d.ts +13 -6
- package/dist/core/extensions/builtin/oauth-login-interaction.d.ts.map +1 -1
- package/dist/core/extensions/builtin/oauth-login-interaction.js +43 -19
- package/dist/core/extensions/builtin/oauth-login-interaction.js.map +1 -1
- package/dist/core/extensions/builtin/openai-image-gen/inject.d.ts +5 -3
- package/dist/core/extensions/builtin/openai-image-gen/inject.d.ts.map +1 -1
- package/dist/core/extensions/builtin/openai-image-gen/inject.js +7 -4
- package/dist/core/extensions/builtin/openai-image-gen/inject.js.map +1 -1
- package/dist/core/extensions/builtin/permission-system/arity.d.ts.map +1 -1
- package/dist/core/extensions/builtin/permission-system/parsers.d.ts.map +1 -1
- package/dist/core/extensions/builtin/permission-system/prompt.js.map +1 -1
- package/dist/core/extensions/builtin/permission-system/service.d.ts.map +1 -1
- package/dist/core/extensions/builtin/permission-system/service.js.map +1 -1
- package/dist/core/extensions/builtin/permission-system/types.d.ts.map +1 -1
- package/dist/core/extensions/builtin/permission-system/wildcard.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/claude-fable-5-1.js +1 -1
- package/dist/core/extensions/builtin/prompt-preset/claude-fable-5-1.js.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/claude-fable-5.js +1 -1
- package/dist/core/extensions/builtin/prompt-preset/claude-fable-5.js.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-5.js +1 -1
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-5.js.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/execution-tooling.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/glm-5.d.ts +1 -1
- package/dist/core/extensions/builtin/prompt-preset/glm-5.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/glm-5.js +1 -1
- package/dist/core/extensions/builtin/prompt-preset/glm-5.js.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js +1 -1
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.d.ts +4 -4
- package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.js +4 -4
- package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.js.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/kimi-k3.js +1 -1
- package/dist/core/extensions/builtin/prompt-preset/kimi-k3.js.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/presets.js.map +1 -1
- package/dist/core/extensions/builtin/rule-activation/renderer.js.map +1 -1
- package/dist/core/extensions/builtin/rules/commands.js.map +1 -1
- package/dist/core/extensions/builtin/rules/config.js.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/errors.d.ts.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/project-root.js.map +1 -1
- package/dist/core/extensions/builtin/rules/ui/dynamic-border.d.ts.map +1 -1
- package/dist/core/extensions/builtin/rules/ui/rules-banner.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/extension.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/manager.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/manager.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-notify.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-registry.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-status-ticker.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/notify.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/restore.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/runtime-session.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/session-bundle.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/terminal-manifest.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/tools/render.d.ts.map +1 -1
- package/dist/core/extensions/builtin/todotools/index.js.map +1 -1
- package/dist/core/extensions/builtin/todotools/normalize.js.map +1 -1
- package/dist/core/extensions/builtin/todotools/todo-operations.js.map +1 -1
- package/dist/core/extensions/builtin/todotools/todo-widget-component.d.ts.map +1 -1
- package/dist/core/extensions/builtin/todotools/todo-widget-component.js.map +1 -1
- package/dist/core/extensions/builtin/todotools/tools/todo.js.map +1 -1
- package/dist/core/extensions/builtin/tool-search/native-search.d.ts.map +1 -1
- package/dist/core/extensions/builtin/tool-search/service.d.ts.map +1 -1
- package/dist/core/extensions/builtin/tool-search/service.js.map +1 -1
- package/dist/core/extensions/builtin/ttsr/detectors/leak-context.d.ts.map +1 -1
- package/dist/core/extensions/builtin/ttsr/detectors/token-grammar.d.ts.map +1 -1
- package/dist/core/extensions/builtin/ttsr/manager.d.ts.map +1 -1
- package/dist/core/extensions/builtin/ttsr/message-update.js.map +1 -1
- package/dist/core/extensions/builtin/ttsr/repetitive-turns-lane.d.ts.map +1 -1
- package/dist/core/extensions/builtin/ttsr/stream-utils.d.ts.map +1 -1
- package/dist/core/extensions/builtin/ttsr/watch.d.ts.map +1 -1
- package/dist/core/extensions/builtin/webfetch/webfetch/errors.d.ts.map +1 -1
- package/dist/core/extensions/builtin/webfetch/webfetch/tool.d.ts +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/native.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +2 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +17 -8
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/notice/box.d.ts.map +1 -1
- package/dist/core/extensions/notice/box.js +13 -5
- package/dist/core/extensions/notice/box.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +11 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +23 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +76 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/http-dispatcher.js.map +1 -1
- package/dist/core/keybindings.d.ts +182 -177
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +5 -0
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/lockfile-policy.d.ts.map +1 -1
- package/dist/core/messages.js.map +1 -1
- package/dist/core/model-config-schema.d.ts +150 -150
- package/dist/core/model-config-schema.d.ts.map +1 -1
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +1 -0
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/models-store.d.ts.map +1 -1
- package/dist/core/models-store.js.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/provider-display-names.d.ts.map +1 -1
- package/dist/core/provider-display-names.js +1 -0
- package/dist/core/provider-display-names.js.map +1 -1
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resource-loader.d.ts +2 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +11 -7
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/retry-fallback/controller.d.ts.map +1 -1
- package/dist/core/retry-fallback/cooldown.d.ts.map +1 -1
- package/dist/core/retry-fallback/cooldown.js.map +1 -1
- package/dist/core/retry-fallback/expansion.js.map +1 -1
- package/dist/core/retry-fallback/log.js.map +1 -1
- package/dist/core/retry-fallback/probe-scheduler.d.ts.map +1 -1
- package/dist/core/runtime-credentials.d.ts.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +24 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-activity.d.ts.map +1 -1
- package/dist/core/session-cwd.d.ts.map +1 -1
- package/dist/core/session-log.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-resident-store.d.ts.map +1 -1
- package/dist/core/session-sidecar-store.d.ts.map +1 -1
- package/dist/core/session-summary-lru.d.ts.map +1 -1
- package/dist/core/session-work-barrier.d.ts.map +1 -1
- package/dist/core/settings-manager.d.ts +6 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +14 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/settings-shapes.d.ts +7 -0
- package/dist/core/settings-shapes.d.ts.map +1 -1
- package/dist/core/settings-shapes.js +3 -1
- package/dist/core/settings-shapes.js.map +1 -1
- package/dist/core/telemetry.js.map +1 -1
- package/dist/core/timings.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bounded-realpath.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/core/tools/powershell.d.ts.map +1 -1
- package/dist/core/tools/read-classifiers.d.ts +17 -0
- package/dist/core/tools/read-classifiers.d.ts.map +1 -0
- package/dist/core/tools/read-classifiers.js +26 -0
- package/dist/core/tools/read-classifiers.js.map +1 -0
- package/dist/core/tools/read.d.ts +5 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +21 -1
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/tail-window.d.ts.map +1 -1
- package/dist/core/tools/truncate.js.map +1 -1
- package/dist/core/tools/write-result.js.map +1 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/trust-manager.d.ts.map +1 -1
- package/dist/extensions/llama/client.d.ts.map +1 -1
- package/dist/extensions/llama/client.js.map +1 -1
- package/dist/extensions/llama/huggingface.d.ts.map +1 -1
- package/dist/extensions/llama/huggingface.js.map +1 -1
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/from-source-config-guard.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +4 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/app-server/daemon/occupancy.d.ts.map +1 -1
- package/dist/modes/app-server/daemon/process.d.ts.map +1 -1
- package/dist/modes/app-server/daemon/process.js.map +1 -1
- package/dist/modes/app-server/daemon.js.map +1 -1
- package/dist/modes/app-server/protocol/collaboration-mode.d.ts.map +1 -1
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputAnswer.d.ts +7 -0
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputAnswer.d.ts.map +1 -0
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputAnswer.js +4 -0
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputAnswer.js.map +1 -0
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputOption.d.ts +8 -0
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputOption.d.ts.map +1 -0
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputOption.js +4 -0
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputOption.js.map +1 -0
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputParams.d.ts +12 -0
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputParams.d.ts.map +1 -0
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputParams.js +4 -0
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputParams.js.map +1 -0
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputQuestion.d.ts +13 -0
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputQuestion.d.ts.map +1 -0
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputQuestion.js +4 -0
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputQuestion.js.map +1 -0
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputResponse.d.ts +10 -0
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputResponse.d.ts.map +1 -0
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputResponse.js +4 -0
- package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputResponse.js.map +1 -0
- package/dist/modes/app-server/protocol/index.d.ts +2 -0
- package/dist/modes/app-server/protocol/index.d.ts.map +1 -1
- package/dist/modes/app-server/protocol/index.js.map +1 -1
- package/dist/modes/app-server/protocol/methods.d.ts +1 -0
- package/dist/modes/app-server/protocol/methods.d.ts.map +1 -1
- package/dist/modes/app-server/protocol/methods.js +1 -0
- package/dist/modes/app-server/protocol/methods.js.map +1 -1
- package/dist/modes/app-server/rpc/errors.d.ts.map +1 -1
- package/dist/modes/app-server/runtime.d.ts.map +1 -1
- package/dist/modes/app-server/runtime.js +22 -6
- package/dist/modes/app-server/runtime.js.map +1 -1
- package/dist/modes/app-server/search/fuzzy-files.js.map +1 -1
- package/dist/modes/app-server/search/fuzzy-search-service.d.ts.map +1 -1
- package/dist/modes/app-server/server/account.js.map +1 -1
- package/dist/modes/app-server/server/approval-bridge.d.ts.map +1 -1
- package/dist/modes/app-server/server/approval-types.d.ts.map +1 -1
- package/dist/modes/app-server/server/approval-ui-context.d.ts +2 -1
- package/dist/modes/app-server/server/approval-ui-context.d.ts.map +1 -1
- package/dist/modes/app-server/server/approval-ui-context.js +9 -1
- package/dist/modes/app-server/server/approval-ui-context.js.map +1 -1
- package/dist/modes/app-server/server/catalogs.js.map +1 -1
- package/dist/modes/app-server/server/config.js.map +1 -1
- package/dist/modes/app-server/server/connection.d.ts.map +1 -1
- package/dist/modes/app-server/server/models.js.map +1 -1
- package/dist/modes/app-server/server/notifications.d.ts.map +1 -1
- package/dist/modes/app-server/server/notifications.js.map +1 -1
- package/dist/modes/app-server/server/server-core.d.ts.map +1 -1
- package/dist/modes/app-server/server/server-core.js.map +1 -1
- package/dist/modes/app-server/server/skills.js.map +1 -1
- package/dist/modes/app-server/server/user-input-bridge.d.ts +16 -0
- package/dist/modes/app-server/server/user-input-bridge.d.ts.map +1 -0
- package/dist/modes/app-server/server/user-input-bridge.js +142 -0
- package/dist/modes/app-server/server/user-input-bridge.js.map +1 -0
- package/dist/modes/app-server/server/user-input-types.d.ts +43 -0
- package/dist/modes/app-server/server/user-input-types.d.ts.map +1 -0
- package/dist/modes/app-server/server/user-input-types.js +51 -0
- package/dist/modes/app-server/server/user-input-types.js.map +1 -0
- package/dist/modes/app-server/threads/archive-state.d.ts.map +1 -1
- package/dist/modes/app-server/threads/handlers.js.map +1 -1
- package/dist/modes/app-server/threads/mcp-wire-status.d.ts.map +1 -1
- package/dist/modes/app-server/threads/metadata-state.d.ts.map +1 -1
- package/dist/modes/app-server/threads/projection-file-changes.js.map +1 -1
- package/dist/modes/app-server/threads/projection-message-items.d.ts.map +1 -1
- package/dist/modes/app-server/threads/projection-turn-diff.d.ts.map +1 -1
- package/dist/modes/app-server/threads/projection-web-search.js.map +1 -1
- package/dist/modes/app-server/threads/projection.d.ts.map +1 -1
- package/dist/modes/app-server/threads/registry.d.ts.map +1 -1
- package/dist/modes/app-server/threads/registry.js.map +1 -1
- package/dist/modes/app-server/threads/search-cache.d.ts.map +1 -1
- package/dist/modes/app-server/threads/turn-log.d.ts.map +1 -1
- package/dist/modes/app-server/threads/turn-runtime.d.ts.map +1 -1
- package/dist/modes/app-server/threads/turn-runtime.js.map +1 -1
- package/dist/modes/app-server/threads/turns.js.map +1 -1
- package/dist/modes/app-server/threads/wire-thread.js.map +1 -1
- package/dist/modes/app-server/transports/unix-socket.d.ts.map +1 -1
- package/dist/modes/app-server/transports/unix-socket.js.map +1 -1
- package/dist/modes/app-server/transports/websocket.d.ts.map +1 -1
- package/dist/modes/app-server/turn-adapter.d.ts +3 -3
- package/dist/modes/app-server/turn-adapter.d.ts.map +1 -1
- package/dist/modes/app-server/turn-adapter.js +36 -5
- package/dist/modes/app-server/turn-adapter.js.map +1 -1
- package/dist/modes/interactive/compaction-queue-transfer.js.map +1 -1
- package/dist/modes/interactive/components/armin.d.ts.map +1 -1
- package/dist/modes/interactive/components/armin.js.map +1 -1
- package/dist/modes/interactive/components/ask-user-async-widget.d.ts +39 -0
- package/dist/modes/interactive/components/ask-user-async-widget.d.ts.map +1 -0
- package/dist/modes/interactive/components/ask-user-async-widget.js +82 -0
- package/dist/modes/interactive/components/ask-user-async-widget.js.map +1 -0
- package/dist/modes/interactive/components/ask-user-question-keys.d.ts +21 -0
- package/dist/modes/interactive/components/ask-user-question-keys.d.ts.map +1 -0
- package/dist/modes/interactive/components/ask-user-question-keys.js +115 -0
- package/dist/modes/interactive/components/ask-user-question-keys.js.map +1 -0
- package/dist/modes/interactive/components/ask-user-question-render.d.ts +17 -0
- package/dist/modes/interactive/components/ask-user-question-render.d.ts.map +1 -0
- package/dist/modes/interactive/components/ask-user-question-render.js +75 -0
- package/dist/modes/interactive/components/ask-user-question-render.js.map +1 -0
- package/dist/modes/interactive/components/ask-user-question-state.d.ts +52 -0
- package/dist/modes/interactive/components/ask-user-question-state.d.ts.map +1 -0
- package/dist/modes/interactive/components/ask-user-question-state.js +134 -0
- package/dist/modes/interactive/components/ask-user-question-state.js.map +1 -0
- package/dist/modes/interactive/components/ask-user-question.d.ts +50 -0
- package/dist/modes/interactive/components/ask-user-question.d.ts.map +1 -0
- package/dist/modes/interactive/components/ask-user-question.js +148 -0
- package/dist/modes/interactive/components/ask-user-question.js.map +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/assistant-render-descriptors.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/continuity-notice.d.ts.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
- package/dist/modes/interactive/components/diff.js.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
- package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-selector.js.map +1 -1
- package/dist/modes/interactive/components/favorite-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/progressive-transcript-container.d.ts.map +1 -1
- package/dist/modes/interactive/components/render-signature.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/shortcut-overlay.d.ts.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution-images.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution-renderer.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tool-renderer-boundary.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts +4 -0
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.js +17 -0
- package/dist/modes/interactive/components/tree-selector.js.map +1 -1
- package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
- package/dist/modes/interactive/grok/chrome.d.ts.map +1 -1
- package/dist/modes/interactive/grok/footer.d.ts.map +1 -1
- package/dist/modes/interactive/grok/input-card.d.ts.map +1 -1
- package/dist/modes/interactive/grok/palette.d.ts.map +1 -1
- package/dist/modes/interactive/grok/tool-row.d.ts.map +1 -1
- package/dist/modes/interactive/grok/welcome-card.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-host-runtime.d.ts +6 -0
- package/dist/modes/interactive/interactive-host-runtime.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-host-runtime.js +32 -3
- package/dist/modes/interactive/interactive-host-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +35 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +413 -100
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/login-outcome.d.ts +20 -0
- package/dist/modes/interactive/login-outcome.d.ts.map +1 -0
- package/dist/modes/interactive/login-outcome.js +35 -0
- package/dist/modes/interactive/login-outcome.js.map +1 -0
- package/dist/modes/interactive/startup-tools.js.map +1 -1
- package/dist/modes/interactive/streaming-reveal-content.d.ts.map +1 -1
- package/dist/modes/interactive/streaming-reveal-content.js.map +1 -1
- package/dist/modes/interactive/streaming-reveal.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/interactive/tips/catalog/input-tips.d.ts +7 -7
- package/dist/modes/interactive/tips/catalog/input-tips.d.ts.map +1 -1
- package/dist/modes/interactive/tips/catalog/input-tips.js +5 -0
- package/dist/modes/interactive/tips/catalog/input-tips.js.map +1 -1
- package/dist/modes/interactive/tips/catalog/model-tips.d.ts +1 -1
- package/dist/modes/interactive/tips/catalog/workspace-tips.d.ts +1 -1
- package/dist/modes/interactive/tips/scheduler.js.map +1 -1
- package/dist/modes/interactive/tips/working-tip.d.ts.map +1 -1
- package/dist/modes/interactive/tool-args-reveal.d.ts.map +1 -1
- package/dist/modes/interactive/tool-result-reveal.d.ts.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +8 -0
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/provider-native-rendering.d.ts.map +1 -1
- package/dist/modes/provider-native-rendering.js +35 -0
- package/dist/modes/provider-native-rendering.js.map +1 -1
- package/dist/modes/rpc/connection-handler.d.ts.map +1 -1
- package/dist/modes/rpc/connection-handler.js +72 -1
- package/dist/modes/rpc/connection-handler.js.map +1 -1
- package/dist/modes/rpc/connection-question-bridge.d.ts +18 -0
- package/dist/modes/rpc/connection-question-bridge.d.ts.map +1 -0
- package/dist/modes/rpc/connection-question-bridge.js +156 -0
- package/dist/modes/rpc/connection-question-bridge.js.map +1 -0
- package/dist/modes/rpc/custom-capability.d.ts +2 -0
- package/dist/modes/rpc/custom-capability.d.ts.map +1 -1
- package/dist/modes/rpc/custom-capability.js +2 -0
- package/dist/modes/rpc/custom-capability.js.map +1 -1
- package/dist/modes/rpc/event-output-buffer.js.map +1 -1
- package/dist/modes/rpc/host-ensure.js.map +1 -1
- package/dist/modes/rpc/host-lifecycle.d.ts.map +1 -1
- package/dist/modes/rpc/host-lifecycle.js.map +1 -1
- package/dist/modes/rpc/host-watchdog.js.map +1 -1
- package/dist/modes/rpc/jsonl.js.map +1 -1
- package/dist/modes/rpc/multi-session-host.js.map +1 -1
- package/dist/modes/rpc/ownership-safe-lock.d.ts.map +1 -1
- package/dist/modes/rpc/ownership-safe-lock.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +20 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +35 -3
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-input-validation.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +103 -3
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js +6 -0
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/modes/rpc/session-binding.js.map +1 -1
- package/dist/modes/rpc/session-command-router.d.ts +4 -4
- package/dist/modes/rpc/session-command-router.d.ts.map +1 -1
- package/dist/modes/rpc/session-command-router.js +14 -8
- package/dist/modes/rpc/session-command-router.js.map +1 -1
- package/dist/modes/rpc/session-event-fanout.d.ts +2 -0
- package/dist/modes/rpc/session-event-fanout.d.ts.map +1 -1
- package/dist/modes/rpc/session-event-fanout.js +25 -1
- package/dist/modes/rpc/session-event-fanout.js.map +1 -1
- package/dist/modes/rpc/session-event-writer.d.ts +7 -1
- package/dist/modes/rpc/session-event-writer.d.ts.map +1 -1
- package/dist/modes/rpc/session-event-writer.js +17 -4
- package/dist/modes/rpc/session-event-writer.js.map +1 -1
- package/dist/modes/rpc/session-extension-ui-requests.d.ts.map +1 -1
- package/dist/modes/rpc/session-registry.d.ts.map +1 -1
- package/dist/modes/rpc/session-registry.js +11 -1
- package/dist/modes/rpc/session-registry.js.map +1 -1
- package/dist/modes/rpc/session-worker-client.d.ts.map +1 -1
- package/dist/modes/rpc/session-worker-client.js.map +1 -1
- package/dist/modes/rpc/session-worker-protocol.d.ts.map +1 -1
- package/dist/modes/rpc/session-worker-requests.d.ts.map +1 -1
- package/dist/modes/rpc/session-worker-requests.js +1 -1
- package/dist/modes/rpc/session-worker-requests.js.map +1 -1
- package/dist/modes/rpc/session-worker.js +10 -2
- package/dist/modes/rpc/session-worker.js.map +1 -1
- package/dist/modes/rpc/socket-event-fanout.d.ts +14 -1
- package/dist/modes/rpc/socket-event-fanout.d.ts.map +1 -1
- package/dist/modes/rpc/socket-event-fanout.js +48 -2
- package/dist/modes/rpc/socket-event-fanout.js.map +1 -1
- package/dist/modes/rpc/socket-ownership.js.map +1 -1
- package/dist/modes/rpc/worker-session-registry.d.ts.map +1 -1
- package/dist/modes/rpc/worker-session-registry.js +2 -1
- package/dist/modes/rpc/worker-session-registry.js.map +1 -1
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/self-update-bootstrap.js.map +1 -1
- package/dist/utils/ansi.js.map +1 -1
- package/dist/utils/clipboard-image.js.map +1 -1
- package/dist/utils/clipboard-native.js.map +1 -1
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/exif-orientation.js.map +1 -1
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/image-resize.js.map +1 -1
- package/dist/utils/management-http.js.map +1 -1
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/photon.js.map +1 -1
- package/dist/utils/pi-user-agent.js.map +1 -1
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/syntax-highlight.js.map +1 -1
- package/dist/utils/version-check.js.map +1 -1
- package/docs/app-server.md +14 -0
- package/docs/extensions.md +28 -1
- package/docs/keybindings.md +1 -0
- package/docs/providers.md +1 -0
- package/docs/rpc.md +95 -3
- package/docs/settings.md +18 -0
- package/docs/skills.md +1 -1
- package/docs/tui.md +6 -0
- package/docs/usage.md +2 -1
- package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +30 -0
- package/node_modules/@code-yeongyu/senpi-codemode/README.md +17 -2
- package/node_modules/@code-yeongyu/senpi-codemode/package.json +4 -4
- package/node_modules/@code-yeongyu/senpi-codemode/src/config/settings.ts +35 -15
- package/node_modules/@code-yeongyu/senpi-codemode/src/index.ts +13 -2
- package/node_modules/@code-yeongyu/senpi-codemode/src/prompt/eval-prompt-template.ts +76 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/prompt/eval-prompt.ts +6 -77
- package/node_modules/@code-yeongyu/senpi-codemode/src/timeouts/run-budget.ts +107 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/cell-deadlines.ts +76 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/cell-execution.ts +25 -14
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-contract.ts +4 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-manager.ts +47 -40
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-notification.ts +2 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-snapshot.ts +5 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-tool-options.ts +8 -3
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-tool.ts +17 -187
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/run-eval-cell.ts +189 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/types.ts +66 -56
- 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 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/agent.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/assistant-terminal-state.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/events.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/reducer.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/reducer.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/result.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/context.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/errors.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/repo.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/repo.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/storage.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/storage.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/state.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/state.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/telemetry.d.ts +36 -36
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/telemetry.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/truncate.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/proxy.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/proxy.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/search/scanning.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +5 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/package.json +4 -4
- package/node_modules/@earendil-works/pi-ai/README.md +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts +3 -1
- 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 +6 -2
- 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.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.lazy.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/context-room.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/gen/agent_pb.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/measure.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/stream-retry.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.lazy.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-conversation-rotation.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/google-shared.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.js.map +1 -1
- 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.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +5 -0
- 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-images-edit.d.ts +4 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-edit.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-edit.js +15 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-edit.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-params.d.ts +60 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-params.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-params.js +93 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-params.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-result.d.ts +12 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-result.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-result.js +96 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-result.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images.d.ts +3 -6
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images.js +26 -119
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/transform-messages.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/warm-prompt-cache.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/auth/credential-store.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openai-codex.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/auth/oauth-refresh.d.ts +47 -0
- package/node_modules/@earendil-works/pi-ai/dist/auth/oauth-refresh.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/auth/oauth-refresh.js +126 -0
- package/node_modules/@earendil-works/pi-ai/dist/auth/oauth-refresh.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/auth/pool/failover.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/auth/pool/select.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/auth/refresh-credential.d.ts +12 -0
- package/node_modules/@earendil-works/pi-ai/dist/auth/refresh-credential.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/auth/refresh-credential.js +44 -0
- package/node_modules/@earendil-works/pi-ai/dist/auth/refresh-credential.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.d.ts +2 -0
- package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.js +26 -35
- package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/compat.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/cursor/model-capabilities.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/cursor/selection-descriptor.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts +99 -66
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +34 -1
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/images.d.ts +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/images.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/images.js +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/images.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models-store.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +2 -0
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +2 -0
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.js +3 -28
- package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/node/provider-scope.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/all.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/all.js +2 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/all.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/nvidia.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/openrouter.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/venice.json +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/faux.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/ollama.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/radius.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/venice.d.ts +3 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/venice.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/venice.js +15 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/venice.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/venice.models.d.ts +4 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/venice.models.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/venice.models.js +6 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/venice.models.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/context-transformer.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/recovery-wrapper-state.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/kimi-xtml/parse.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-content-lifecycle.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-event-stream.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-native-projection.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-native-projection.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-stream-terminal.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-stream-wrapper.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-text-projection.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-text-projection.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-thinking-projection.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-wrapper-shared.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-wrapper-shared.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-wrapper.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +20 -3
- 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/deferred-tools.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.d.ts +3 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/provider-retry.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/validation.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/package.json +3 -3
- package/node_modules/@earendil-works/pi-pty/dist/loader.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-pty/dist/loader.js.map +1 -1
- package/node_modules/@earendil-works/pi-pty/dist/pipe-fallback.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-pty/dist/pipe-fallback.js.map +1 -1
- package/node_modules/@earendil-works/pi-pty/dist/quarantine.js.map +1 -1
- package/node_modules/@earendil-works/pi-pty/dist/registry-types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-pty/dist/registry.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-pty/dist/registry.js.map +1 -1
- package/node_modules/@earendil-works/pi-pty/dist/screen.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-pty/dist/screen.js.map +1 -1
- package/node_modules/@earendil-works/pi-pty/dist/session-bun.js.map +1 -1
- package/node_modules/@earendil-works/pi-pty/dist/session.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-pty/dist/session.js.map +1 -1
- package/node_modules/@earendil-works/pi-pty/package.json +2 -2
- package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/alt-screen-search.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/alt-screen-flash.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/box.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/h-stack.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/h-stack.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/image.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/image.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/input.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/latex.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/loader.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/scroll-view.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/scroll-view.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/select-list.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/select-list.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/spacer.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/spacer.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/stack.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/stack.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/text.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/text.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/v-stack.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/v-stack.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/image-markers.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/keybindings.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/keybindings.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/keys.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/keys.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/kill-ring.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/mux.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/native-module-path.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/paste-markers.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/stdin-buffer.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/stdin-buffer.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal-capabilities.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/tmux-image-probe.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/tui-main-screen.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/undo-stack.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/utils.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/package.json +2 -2
- package/node_modules/css-tree/cjs/data-patch.cjs +853 -5
- package/node_modules/css-tree/cjs/data.cjs +13598 -3
- package/node_modules/css-tree/cjs/version.cjs +1 -3
- package/node_modules/css-tree/lib/data-patch.js +853 -4
- package/node_modules/css-tree/lib/data.js +13598 -5
- package/node_modules/css-tree/lib/version.js +1 -5
- package/package.json +8 -8
- package/vendor/pi-client/client.d.ts.map +1 -1
- package/vendor/pi-client/client.js.map +1 -1
- package/vendor/pi-client/connection.d.ts.map +1 -1
- package/vendor/pi-client/connection.js.map +1 -1
- package/vendor/pi-client/errors.d.ts.map +1 -1
- package/vendor/pi-client/session-handle.d.ts.map +1 -1
- package/vendor/pi-client/state.d.ts.map +1 -1
- package/vendor/pi-protocol/cbor/decoder.js.map +1 -1
- package/vendor/pi-protocol/cbor/options.d.ts.map +1 -1
- package/vendor/pi-protocol/codec.d.ts.map +1 -1
- package/vendor/pi-protocol/codec.js.map +1 -1
- package/vendor/pi-protocol/framing.d.ts.map +1 -1
- package/vendor/pi-protocol/schemas.d.ts +678 -678
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-sync.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/session-sync.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport type { Context, Message } from \"@earendil-works/pi-ai\";\nimport { appendSdkContentBlocks } from \"./content-blocks.ts\";\nimport type { ClaudeSdkOauthAuthLane } from \"./options.ts\";\nimport type { ContentBlockParam, Options } from \"./sdk-boundary.ts\";\nimport type { ClaudeSdkOauthSessionEntry } from \"./session-registry.ts\";\nimport { HOST_TOOL_POLICY_FINGERPRINT, mapPiToolNameToSdk } from \"./tools.ts\";\n\nexport type SentMessage = Extract<Message, { role: \"user\" | \"toolResult\" }>;\n\nexport type SessionConfigFingerprint = {\n\tsystemPromptHash: string;\n\ttoolsetHash: string;\n};\n\nconst sentHashesByEntry = new WeakMap<ClaudeSdkOauthSessionEntry, string[]>();\n\nfunction stableValue(value: unknown, seen = new WeakSet<object>()): unknown {\n\tif (typeof value === \"function\") return `[function:${value.name}:${value.toString()}]`;\n\tif (typeof value === \"bigint\") return value.toString();\n\tif (value === null || typeof value !== \"object\") return value;\n\tif (seen.has(value)) return \"[circular]\";\n\tseen.add(value);\n\tconst normalized = Array.isArray(value)\n\t\t? value.map((item) => stableValue(item, seen))\n\t\t: Object.fromEntries(\n\t\t\t\tObject.entries(value as Record<string, unknown>)\n\t\t\t\t\t.filter(([, item]) => item !== undefined)\n\t\t\t\t\t.sort(([left], [right]) => left.localeCompare(right))\n\t\t\t\t\t.map(([key, item]) => [key, stableValue(item, seen)]),\n\t\t\t);\n\tseen.delete(value);\n\treturn normalized;\n}\n\nfunction digest(value: unknown): string {\n\treturn createHash(\"sha256\")\n\t\t.update(JSON.stringify(stableValue(value)))\n\t\t.digest(\"hex\");\n}\n\nexport function sessionSyncDigest(value: unknown): string {\n\treturn digest(value);\n}\n\n/**\n * A user message with no content blocks carries nothing to transmit and is\n * transient: it is present for a single provider call and gone by the next.\n * Hashing one shifts every later index, so the following turn reports\n * `sent_stream_diverged` and re-sends the whole history even though the\n * conversation never changed. Tool results are never filtered - an empty tool\n * result is a real observation, and its id and name stay hash-significant.\n */\nfunction isContentlessUserMessage(message: SentMessage): boolean {\n\tif (message.role !== \"user\") return false;\n\t// Only a literal zero-block array is content-less. Whitespace-only text and\n\t// explicit empty-text blocks still emit transport blocks, so they must stay\n\t// hash-significant to keep divergence detection fail-closed.\n\treturn Array.isArray(message.content) && message.content.length === 0;\n}\n\nexport function sentMessages(context: Context): SentMessage[] {\n\treturn context.messages.filter(isTransmittedMessage);\n}\n\n/**\n * The one selection rule for \"message the provider was sent\". Branch-derived and\n * context-derived hashes MUST share it: a content-less user message that only one\n * side skips shifts every later index and reports a false divergence.\n */\nexport function isTransmittedMessage(message: { role: string }): message is SentMessage {\n\tif (message.role !== \"user\" && message.role !== \"toolResult\") return false;\n\treturn !isContentlessUserMessage(message as SentMessage);\n}\n\n/**\n * Applies the transmitted-message rule itself, so no caller can produce a hash\n * list that disagrees with another caller's by forgetting the filter.\n */\nexport function sentMessageHashes(messages: readonly SentMessage[]): string[] {\n\tconst hashes = messages.filter(isTransmittedMessage).map((message) =>\n\t\tdigest(\n\t\t\tmessage.role === \"user\"\n\t\t\t\t? { role: message.role, content: message.content }\n\t\t\t\t: {\n\t\t\t\t\t\trole: message.role,\n\t\t\t\t\t\ttoolCallId: message.toolCallId,\n\t\t\t\t\t\ttoolName: message.toolName,\n\t\t\t\t\t\tcontent: message.content,\n\t\t\t\t\t},\n\t\t),\n\t);\n\treturn hashes;\n}\n\nexport function sentHashPrefixDigest(hashes: readonly string[], count = hashes.length): string {\n\treturn digest(hashes.slice(0, count));\n}\n\n/** Pure divergence guard: every non-proven continuation resolves to cold-seed. */\n\nexport function sentHashesForEntry(entry: ClaudeSdkOauthSessionEntry): readonly string[] | undefined {\n\treturn sentHashesByEntry.get(entry);\n}\n\nexport function recordSyncedStream(entry: ClaudeSdkOauthSessionEntry, hashes: readonly string[]): void {\n\tconst copy = [...hashes];\n\tsentHashesByEntry.set(entry, copy);\n\tentry.sentCount = copy.length;\n\tentry.syncedPrefixHash = sentHashPrefixDigest(copy);\n\tentry.branchInfo = null;\n}\n\nconst GENERATED_DATE_LINE = /\\nCurrent date: \\d{4}-\\d{2}-\\d{2}(?=\\nCurrent working directory: [^\\n]*)/;\n\n/**\n * The generated date line advances at UTC midnight while the conversation is\n * unchanged; hashing it verbatim retires a live session at midnight for no\n * semantic reason. Only that exact date-plus-cwd pair is neutralized - cwd and\n * every other prompt region stay fail-closed. Extension appends legitimately\n * follow the cwd line (oh-my-openagent#7884), so the pair is matched wherever\n * it appears, not only at the end of the prompt.\n */\nfunction fingerprintSystemPrompt(systemPrompt: Options[\"systemPrompt\"]): unknown {\n\tif (typeof systemPrompt !== \"string\") return systemPrompt ?? null;\n\treturn systemPrompt.replace(GENERATED_DATE_LINE, \"\\nCurrent date: <session-date>\");\n}\n\nexport function configFingerprint(\n\toptions: Options,\n\tcontext: Context,\n\tauthLane: ClaudeSdkOauthAuthLane,\n\taccountName: string,\n): SessionConfigFingerprint {\n\treturn {\n\t\tsystemPromptHash: digest(fingerprintSystemPrompt(options.systemPrompt)),\n\t\ttoolsetHash: digest({\n\t\t\ttools: options.tools ?? [],\n\t\t\treasoning: {\n\t\t\t\tthinking: options.thinking,\n\t\t\t\teffort: options.effort,\n\t\t\t\tmaxThinkingTokens: options.maxThinkingTokens,\n\t\t\t},\n\t\t\tcontextTools: (context.tools ?? []).map((tool) => ({\n\t\t\t\tname: tool.name,\n\t\t\t\tdescription: tool.description,\n\t\t\t\tparameters: tool.parameters,\n\t\t\t})),\n\t\t\tcwd: options.cwd,\n\t\t\tauthLane,\n\t\t\taccountName,\n\t\t\tpermissionMode: options.permissionMode,\n\t\t\t// Bump HOST_TOOL_POLICY_FINGERPRINT in tools.ts when denial copy or hooks change.\n\t\t\thostToolPolicy: HOST_TOOL_POLICY_FINGERPRINT,\n\t\t\tsettingSources: options.settingSources,\n\t\t\textraArgs: options.extraArgs,\n\t\t\tpathToClaudeCodeExecutable: options.pathToClaudeCodeExecutable,\n\t\t\tincludePartialMessages: options.includePartialMessages,\n\t\t}),\n\t};\n}\n\nfunction appendContent(blocks: ContentBlockParam[], content: string | readonly unknown[]): void {\n\t// The delta path has always transmitted a whole-content empty string as an\n\t// empty text block; keep that wire shape so resident sessions see the same\n\t// payload as before the shared mapper (prompt-bridge intentionally skips it).\n\tif (content === \"\") {\n\t\tblocks.push({ type: \"text\", text: \"\" });\n\t\treturn;\n\t}\n\tappendSdkContentBlocks(blocks, content);\n}\n\nexport function buildDeltaPromptBlocks(\n\tmessages: readonly SentMessage[],\n\tcustomToolNameToSdk?: ReadonlyMap<string, string>,\n): ContentBlockParam[] {\n\tconst blocks: ContentBlockParam[] = [];\n\tfor (const [index, message] of messages.entries()) {\n\t\tif (index > 0) blocks.push({ type: \"text\", text: \"\\n\\n\" });\n\t\tif (message.role === \"toolResult\") {\n\t\t\tblocks.push({\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: `Tool result (${mapPiToolNameToSdk(message.toolName, customToolNameToSdk)}, id=${message.toolCallId}):\\n`,\n\t\t\t});\n\t\t}\n\t\tappendContent(blocks, message.content);\n\t}\n\treturn blocks;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"session-sync.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/session-sync.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport type { Context, Message } from \"@earendil-works/pi-ai\";\nimport { appendSdkContentBlocks } from \"./content-blocks.ts\";\nimport type { ClaudeSdkOauthAuthLane } from \"./options.ts\";\nimport type { ContentBlockParam, Options } from \"./sdk-boundary.ts\";\nimport type { ClaudeSdkOauthSessionEntry } from \"./session-registry.ts\";\nimport { HOST_TOOL_POLICY_FINGERPRINT, mapPiToolNameToSdk } from \"./tools.ts\";\n\nexport type SentMessage = Extract<Message, { role: \"user\" | \"toolResult\" }>;\n\nexport type SessionConfigFingerprint = {\n\tsystemPromptHash: string;\n\ttoolsetHash: string;\n};\n\nconst sentHashesByEntry = new WeakMap<ClaudeSdkOauthSessionEntry, string[]>();\n\nfunction stableValue(value: unknown, seen = new WeakSet<object>()): unknown {\n\tif (typeof value === \"function\") return `[function:${value.name}:${value.toString()}]`;\n\tif (typeof value === \"bigint\") return value.toString();\n\tif (value === null || typeof value !== \"object\") return value;\n\tif (seen.has(value)) return \"[circular]\";\n\tseen.add(value);\n\tconst normalized = Array.isArray(value)\n\t\t? value.map((item) => stableValue(item, seen))\n\t\t: Object.fromEntries(\n\t\t\t\tObject.entries(value as Record<string, unknown>)\n\t\t\t\t\t.filter(([, item]) => item !== undefined)\n\t\t\t\t\t.sort(([left], [right]) => left.localeCompare(right))\n\t\t\t\t\t.map(([key, item]) => [key, stableValue(item, seen)]),\n\t\t\t);\n\tseen.delete(value);\n\treturn normalized;\n}\n\nfunction digest(value: unknown): string {\n\treturn createHash(\"sha256\")\n\t\t.update(JSON.stringify(stableValue(value)))\n\t\t.digest(\"hex\");\n}\n\nexport function sessionSyncDigest(value: unknown): string {\n\treturn digest(value);\n}\n\n/**\n * A user message with no content blocks carries nothing to transmit and is\n * transient: it is present for a single provider call and gone by the next.\n * Hashing one shifts every later index, so the following turn reports\n * `sent_stream_diverged` and re-sends the whole history even though the\n * conversation never changed. Tool results are never filtered - an empty tool\n * result is a real observation, and its id and name stay hash-significant.\n */\nfunction isContentlessUserMessage(message: SentMessage): boolean {\n\tif (message.role !== \"user\") return false;\n\t// Only a literal zero-block array is content-less. Whitespace-only text and\n\t// explicit empty-text blocks still emit transport blocks, so they must stay\n\t// hash-significant to keep divergence detection fail-closed.\n\treturn Array.isArray(message.content) && message.content.length === 0;\n}\n\nexport function sentMessages(context: Context): SentMessage[] {\n\treturn context.messages.filter(isTransmittedMessage);\n}\n\n/**\n * The one selection rule for \"message the provider was sent\". Branch-derived and\n * context-derived hashes MUST share it: a content-less user message that only one\n * side skips shifts every later index and reports a false divergence.\n */\nexport function isTransmittedMessage(message: { role: string }): message is SentMessage {\n\tif (message.role !== \"user\" && message.role !== \"toolResult\") return false;\n\treturn !isContentlessUserMessage(message as SentMessage);\n}\n\n/**\n * Applies the transmitted-message rule itself, so no caller can produce a hash\n * list that disagrees with another caller's by forgetting the filter.\n */\nexport function sentMessageHashes(messages: readonly SentMessage[]): string[] {\n\tconst hashes = messages.filter(isTransmittedMessage).map((message) =>\n\t\tdigest(\n\t\t\tmessage.role === \"user\"\n\t\t\t\t? { role: message.role, content: message.content }\n\t\t\t\t: {\n\t\t\t\t\t\trole: message.role,\n\t\t\t\t\t\ttoolCallId: message.toolCallId,\n\t\t\t\t\t\ttoolName: message.toolName,\n\t\t\t\t\t\tcontent: message.content,\n\t\t\t\t\t},\n\t\t),\n\t);\n\treturn hashes;\n}\n\nexport function sentHashPrefixDigest(hashes: readonly string[], count = hashes.length): string {\n\treturn digest(hashes.slice(0, count));\n}\n\n/** Pure divergence guard: every non-proven continuation resolves to cold-seed. */\n\nexport function sentHashesForEntry(entry: ClaudeSdkOauthSessionEntry): readonly string[] | undefined {\n\treturn sentHashesByEntry.get(entry);\n}\n\nexport function recordSyncedStream(entry: ClaudeSdkOauthSessionEntry, hashes: readonly string[]): void {\n\tconst copy = [...hashes];\n\tsentHashesByEntry.set(entry, copy);\n\tentry.sentCount = copy.length;\n\tentry.syncedPrefixHash = sentHashPrefixDigest(copy);\n\tentry.branchInfo = null;\n}\n\nconst GENERATED_DATE_LINE = /\\nCurrent date: \\d{4}-\\d{2}-\\d{2}(?=\\nCurrent working directory: [^\\n]*)/;\n\n/**\n * The generated date line advances at UTC midnight while the conversation is\n * unchanged; hashing it verbatim retires a live session at midnight for no\n * semantic reason. Only that exact date-plus-cwd pair is neutralized - cwd and\n * every other prompt region stay fail-closed. Extension appends legitimately\n * follow the cwd line (oh-my-openagent#7884), so the pair is matched wherever\n * it appears, not only at the end of the prompt.\n */\nfunction fingerprintSystemPrompt(systemPrompt: Options[\"systemPrompt\"]): unknown {\n\tif (typeof systemPrompt !== \"string\") return systemPrompt ?? null;\n\treturn systemPrompt.replace(GENERATED_DATE_LINE, \"\\nCurrent date: <session-date>\");\n}\n\nexport function configFingerprint(\n\toptions: Options,\n\tcontext: Context,\n\tauthLane: ClaudeSdkOauthAuthLane,\n\taccountName: string,\n): SessionConfigFingerprint {\n\treturn {\n\t\tsystemPromptHash: digest(fingerprintSystemPrompt(options.systemPrompt)),\n\t\ttoolsetHash: digest({\n\t\t\ttools: options.tools ?? [],\n\t\t\treasoning: {\n\t\t\t\tthinking: options.thinking,\n\t\t\t\teffort: options.effort,\n\t\t\t\tmaxThinkingTokens: options.maxThinkingTokens,\n\t\t\t},\n\t\t\tcontextTools: (context.tools ?? []).map((tool) => ({\n\t\t\t\tname: tool.name,\n\t\t\t\tdescription: tool.description,\n\t\t\t\tparameters: tool.parameters,\n\t\t\t})),\n\t\t\tcwd: options.cwd,\n\t\t\tauthLane,\n\t\t\taccountName,\n\t\t\tpermissionMode: options.permissionMode,\n\t\t\t// Bump HOST_TOOL_POLICY_FINGERPRINT in tools.ts when denial copy or hooks change.\n\t\t\thostToolPolicy: HOST_TOOL_POLICY_FINGERPRINT,\n\t\t\tsettingSources: options.settingSources,\n\t\t\textraArgs: options.extraArgs,\n\t\t\tpathToClaudeCodeExecutable: options.pathToClaudeCodeExecutable,\n\t\t\tincludePartialMessages: options.includePartialMessages,\n\t\t}),\n\t};\n}\n\nfunction appendContent(blocks: ContentBlockParam[], content: string | readonly unknown[]): void {\n\t// The delta path has always transmitted a whole-content empty string as an\n\t// empty text block; keep that wire shape so resident sessions see the same\n\t// payload as before the shared mapper (prompt-bridge intentionally skips it).\n\tif (content === \"\") {\n\t\tblocks.push({ type: \"text\", text: \"\" });\n\t\treturn;\n\t}\n\tappendSdkContentBlocks(blocks, content);\n}\n\nexport function buildDeltaPromptBlocks(\n\tmessages: readonly SentMessage[],\n\tcustomToolNameToSdk?: ReadonlyMap<string, string>,\n): ContentBlockParam[] {\n\tconst blocks: ContentBlockParam[] = [];\n\tfor (const [index, message] of messages.entries()) {\n\t\tif (index > 0) blocks.push({ type: \"text\", text: \"\\n\\n\" });\n\t\tif (message.role === \"toolResult\") {\n\t\t\tblocks.push({\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: `Tool result (${mapPiToolNameToSdk(message.toolName, customToolNameToSdk)}, id=${message.toolCallId}):\\n`,\n\t\t\t});\n\t\t}\n\t\tappendContent(blocks, message.content);\n\t}\n\treturn blocks;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-turn-attempt.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/session-turn-attempt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EACN,KAAK,0BAA0B,EAI/B,MAAM,uBAAuB,CAAC;AAI/B,KAAK,wBAAwB,GAAG;IAAE,IAAI,IAAI,IAAI,CAAA;CAAE,CAAC;AAsCjD,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,0BAA0B,EACjC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,EAClC,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,MAAM,EAAE,wBAAwB
|
|
1
|
+
{"version":3,"file":"session-turn-attempt.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/session-turn-attempt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EACN,KAAK,0BAA0B,EAI/B,MAAM,uBAAuB,CAAC;AAI/B,KAAK,wBAAwB,GAAG;IAAE,IAAI,IAAI,IAAI,CAAA;CAAE,CAAC;AAsCjD,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,0BAA0B,EACjC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,EAClC,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,MAAM,EAAE,wBAAwB;IAM/B,QAAQ;IA4CR,OAAO,QAAM,IAAI;EAQlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-turn-types.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/session-turn-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,OAAO,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B,MAAM,EAAE,qBAAqB,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IACrD,QAAQ,CAAC,IAAI,uCAAuC;
|
|
1
|
+
{"version":3,"file":"session-turn-types.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/session-turn-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,OAAO,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B,MAAM,EAAE,qBAAqB,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IACrD,QAAQ,CAAC,IAAI,uCAAuC;IAEpD,YAAY,OAAO,EAAE,MAAM,EAG1B;CACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/settings.ts"],"names":[],"mappings":"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","sourcesContent":["import { statSync } from \"node:fs\";\nimport { getAgentDir } from \"../../../../config.ts\";\nimport { getSettingsPath, type Settings, SettingsManager } from \"../../../settings-manager.ts\";\nimport type { SettingSource } from \"./sdk-boundary.ts\";\n\nexport type ClaudeSdkOauthSystemPromptMode = \"preset-append\" | \"full\" | \"override\";\nexport type ClaudeSdkOauthResumeMode = \"auto\" | \"off\";\nexport type ClaudeSdkOauthTokenInjection = \"oauth-slots\" | \"config-dir\" | \"ambient\";\n\nexport interface ClaudeSdkOauthProviderSettings {\n\t/**\n\t * Explicit opt-in for the ambient (host Claude CLI) auth lane. Absent means\n\t * false: a logged-in host CLI alone never makes this provider available,\n\t * because that would silently spend the user's Claude subscription. Stored\n\t * accounts and `CLAUDE_CODE_OAUTH_TOKEN*` are themselves explicit opt-ins\n\t * and stay available without this flag.\n\t */\n\treadonly enabled?: boolean;\n\treadonly appendSystemPrompt?: boolean;\n\treadonly systemPromptMode?: ClaudeSdkOauthSystemPromptMode;\n\treadonly systemPromptFile?: string;\n\treadonly resumeMode?: ClaudeSdkOauthResumeMode;\n\treadonly settingSources?: SettingSource[];\n\treadonly strictMcpConfig?: boolean;\n\treadonly pinnedAccount?: string;\n\treadonly tokenInjection?: ClaudeSdkOauthTokenInjection;\n}\n\nexport type ResolvedSystemPromptMode = {\n\tmode: ClaudeSdkOauthSystemPromptMode;\n\tsource: string;\n\tconflict: boolean;\n};\n\ntype SettingsWithClaudeSdkOauthProvider = Settings & {\n\tclaudeSdkOauthProvider?: unknown;\n};\n\ntype Environment = Readonly<Record<string, string | undefined>>;\n\nconst systemPromptModeSources = new WeakMap<ClaudeSdkOauthProviderSettings, \"env\">();\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction parseSettingSources(value: unknown): SettingSource[] | undefined {\n\tif (!Array.isArray(value)) return undefined;\n\tif (!value.every((source) => source === \"user\" || source === \"project\" || source === \"local\")) {\n\t\treturn undefined;\n\t}\n\treturn [...value];\n}\n\nfunction parseEnvironmentSettingSources(value: string | undefined): SettingSource[] | undefined {\n\tif (value === undefined) return undefined;\n\tif (value === \"\") return [];\n\treturn parseSettingSources(value.split(\",\").map((source) => source.trim()));\n}\n\nfunction parseSystemPromptMode(value: unknown): ClaudeSdkOauthSystemPromptMode | undefined {\n\treturn value === \"preset-append\" || value === \"full\" || value === \"override\" ? value : undefined;\n}\n\nfunction parseResumeMode(value: unknown): ClaudeSdkOauthResumeMode | undefined {\n\treturn value === \"auto\" || value === \"off\" ? value : undefined;\n}\n\nfunction parseTokenInjection(value: unknown): ClaudeSdkOauthTokenInjection | undefined {\n\treturn value === \"oauth-slots\" || value === \"config-dir\" || value === \"ambient\" ? value : undefined;\n}\n\nfunction parseEnvironmentBoolean(value: string | undefined): boolean | undefined {\n\tif (value === undefined) return undefined;\n\tswitch (value.toLowerCase()) {\n\t\tcase \"1\":\n\t\tcase \"true\":\n\t\t\treturn true;\n\t\tcase \"0\":\n\t\tcase \"false\":\n\t\t\treturn false;\n\t\tdefault:\n\t\t\treturn undefined;\n\t}\n}\n\nfunction parseNonEmptyString(value: unknown): string | undefined {\n\treturn typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\nfunction parseProviderSettings(value: unknown): ClaudeSdkOauthProviderSettings {\n\tif (!isRecord(value)) return {};\n\tconst enabled = typeof value.enabled === \"boolean\" ? value.enabled : undefined;\n\tconst appendSystemPrompt = typeof value.appendSystemPrompt === \"boolean\" ? value.appendSystemPrompt : undefined;\n\tconst systemPromptMode = parseSystemPromptMode(value.systemPromptMode);\n\tconst systemPromptFile = parseNonEmptyString(value.systemPromptFile);\n\tconst resumeMode = parseResumeMode(value.resumeMode);\n\tconst settingSources = parseSettingSources(value.settingSources);\n\tconst strictMcpConfig = typeof value.strictMcpConfig === \"boolean\" ? value.strictMcpConfig : undefined;\n\tconst pinnedAccount = parseNonEmptyString(value.pinnedAccount);\n\tconst tokenInjection = parseTokenInjection(value.tokenInjection);\n\treturn {\n\t\t...(enabled !== undefined ? { enabled } : {}),\n\t\t...(appendSystemPrompt !== undefined ? { appendSystemPrompt } : {}),\n\t\t...(systemPromptMode !== undefined ? { systemPromptMode } : {}),\n\t\t...(systemPromptFile !== undefined ? { systemPromptFile } : {}),\n\t\t...(resumeMode !== undefined ? { resumeMode } : {}),\n\t\t...(settingSources !== undefined ? { settingSources } : {}),\n\t\t...(strictMcpConfig !== undefined ? { strictMcpConfig } : {}),\n\t\t...(pinnedAccount !== undefined ? { pinnedAccount } : {}),\n\t\t...(tokenInjection !== undefined ? { tokenInjection } : {}),\n\t};\n}\n\nfunction parseEnvironmentSettings(environment: Environment): ClaudeSdkOauthProviderSettings {\n\tconst enabled = parseEnvironmentBoolean(environment.SENPI_CLAUDE_SDK_OAUTH_ENABLED);\n\tconst systemPromptMode = parseSystemPromptMode(environment.SENPI_CLAUDE_SDK_OAUTH_SYSTEM_PROMPT_MODE);\n\tconst systemPromptFile = parseNonEmptyString(environment.SENPI_CLAUDE_SDK_OAUTH_SYSTEM_PROMPT_FILE);\n\tconst resumeMode = parseResumeMode(environment.SENPI_CLAUDE_SDK_OAUTH_RESUME);\n\tconst tokenInjection = parseTokenInjection(environment.SENPI_CLAUDE_SDK_OAUTH_TOKEN_INJECTION);\n\tconst settingSources = parseEnvironmentSettingSources(environment.SENPI_CLAUDE_SDK_OAUTH_SETTING_SOURCES);\n\tconst pinnedAccount = parseNonEmptyString(environment.SENPI_CLAUDE_SDK_OAUTH_PINNED_ACCOUNT);\n\treturn {\n\t\t...(enabled !== undefined ? { enabled } : {}),\n\t\t...(systemPromptMode !== undefined ? { systemPromptMode } : {}),\n\t\t...(systemPromptFile !== undefined ? { systemPromptFile } : {}),\n\t\t...(resumeMode !== undefined ? { resumeMode } : {}),\n\t\t...(tokenInjection !== undefined ? { tokenInjection } : {}),\n\t\t...(settingSources !== undefined ? { settingSources } : {}),\n\t\t...(pinnedAccount !== undefined ? { pinnedAccount } : {}),\n\t};\n}\n\nexport function resolveSystemPromptMode(settings: ClaudeSdkOauthProviderSettings): ResolvedSystemPromptMode {\n\tif (settings.systemPromptMode !== undefined) {\n\t\treturn {\n\t\t\tmode: settings.systemPromptMode,\n\t\t\tsource: systemPromptModeSources.get(settings) ?? \"setting\",\n\t\t\tconflict: settings.appendSystemPrompt !== undefined,\n\t\t};\n\t}\n\tif (settings.appendSystemPrompt !== undefined) {\n\t\treturn {\n\t\t\tmode: settings.appendSystemPrompt ? \"full\" : \"preset-append\",\n\t\t\tsource: \"legacy\",\n\t\t\tconflict: false,\n\t\t};\n\t}\n\treturn { mode: \"full\", source: \"default\", conflict: false };\n}\n\n/** Load the provider block with env values taking precedence over project and global values. */\nexport function loadClaudeSdkOauthProviderSettings(\n\tsettingsManager: SettingsManager,\n\tenvironment: Environment = process.env,\n): ClaudeSdkOauthProviderSettings {\n\tconst global = settingsManager.getGlobalSettings() as SettingsWithClaudeSdkOauthProvider;\n\tconst project = settingsManager.getProjectSettings() as SettingsWithClaudeSdkOauthProvider;\n\tconst environmentSettings = parseEnvironmentSettings(environment);\n\tconst settings = {\n\t\t...parseProviderSettings(global.claudeSdkOauthProvider),\n\t\t...parseProviderSettings(project.claudeSdkOauthProvider),\n\t\t...environmentSettings,\n\t};\n\tif (environmentSettings.systemPromptMode !== undefined) systemPromptModeSources.set(settings, \"env\");\n\treturn settings;\n}\n\nfunction settingsFingerprint(path: string): string {\n\ttry {\n\t\tconst stat = statSync(path);\n\t\treturn `${stat.mtimeMs}:${stat.size}`;\n\t} catch {\n\t\treturn \"missing\";\n\t}\n}\n\nlet cachedClaudeSdkOauthManager: { cwd: string; key: string; manager: SettingsManager } | undefined;\n\n/** Load settings from Senpi's configured global and project settings.json paths. */\nexport function loadClaudeSdkOauthProviderSettingsFromDisk(cwd: string): ClaudeSdkOauthProviderSettings {\n\t// fallbackEligible() calls this per candidate probe; cache the manager by\n\t// (cwd, settings mtime+size) and re-apply env live to avoid locked disk reads.\n\tconst agentDir = getAgentDir();\n\tconst key = `${cwd}|${settingsFingerprint(getSettingsPath(cwd, agentDir, \"global\"))}|${settingsFingerprint(\n\t\tgetSettingsPath(cwd, agentDir, \"project\"),\n\t)}`;\n\tlet settingsManager =\n\t\tcachedClaudeSdkOauthManager?.cwd === cwd && cachedClaudeSdkOauthManager.key === key\n\t\t\t? cachedClaudeSdkOauthManager.manager\n\t\t\t: undefined;\n\tif (!settingsManager) {\n\t\tsettingsManager = SettingsManager.create(cwd, agentDir);\n\t\tcachedClaudeSdkOauthManager = { cwd, key, manager: settingsManager };\n\t}\n\treturn loadClaudeSdkOauthProviderSettings(settingsManager);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/settings.ts"],"names":[],"mappings":"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","sourcesContent":["import { statSync } from \"node:fs\";\nimport { getAgentDir } from \"../../../../config.ts\";\nimport { getSettingsPath, type Settings, SettingsManager } from \"../../../settings-manager.ts\";\nimport type { SettingSource } from \"./sdk-boundary.ts\";\n\nexport type ClaudeSdkOauthSystemPromptMode = \"preset-append\" | \"full\" | \"override\";\nexport type ClaudeSdkOauthResumeMode = \"auto\" | \"off\";\nexport type ClaudeSdkOauthTokenInjection = \"oauth-slots\" | \"config-dir\" | \"ambient\";\n\nexport interface ClaudeSdkOauthProviderSettings {\n\t/**\n\t * Explicit opt-in for the ambient (host Claude CLI) auth lane. Absent means\n\t * false: a logged-in host CLI alone never makes this provider available,\n\t * because that would silently spend the user's Claude subscription. Stored\n\t * accounts and `CLAUDE_CODE_OAUTH_TOKEN*` are themselves explicit opt-ins\n\t * and stay available without this flag.\n\t */\n\treadonly enabled?: boolean;\n\treadonly appendSystemPrompt?: boolean;\n\treadonly systemPromptMode?: ClaudeSdkOauthSystemPromptMode;\n\treadonly systemPromptFile?: string;\n\treadonly resumeMode?: ClaudeSdkOauthResumeMode;\n\treadonly settingSources?: SettingSource[];\n\treadonly strictMcpConfig?: boolean;\n\treadonly pinnedAccount?: string;\n\treadonly tokenInjection?: ClaudeSdkOauthTokenInjection;\n}\n\nexport type ResolvedSystemPromptMode = {\n\tmode: ClaudeSdkOauthSystemPromptMode;\n\tsource: string;\n\tconflict: boolean;\n};\n\ntype SettingsWithClaudeSdkOauthProvider = Settings & {\n\tclaudeSdkOauthProvider?: unknown;\n};\n\ntype Environment = Readonly<Record<string, string | undefined>>;\n\nconst systemPromptModeSources = new WeakMap<ClaudeSdkOauthProviderSettings, \"env\">();\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction parseSettingSources(value: unknown): SettingSource[] | undefined {\n\tif (!Array.isArray(value)) return undefined;\n\tif (!value.every((source) => source === \"user\" || source === \"project\" || source === \"local\")) {\n\t\treturn undefined;\n\t}\n\treturn [...value];\n}\n\nfunction parseEnvironmentSettingSources(value: string | undefined): SettingSource[] | undefined {\n\tif (value === undefined) return undefined;\n\tif (value === \"\") return [];\n\treturn parseSettingSources(value.split(\",\").map((source) => source.trim()));\n}\n\nfunction parseSystemPromptMode(value: unknown): ClaudeSdkOauthSystemPromptMode | undefined {\n\treturn value === \"preset-append\" || value === \"full\" || value === \"override\" ? value : undefined;\n}\n\nfunction parseResumeMode(value: unknown): ClaudeSdkOauthResumeMode | undefined {\n\treturn value === \"auto\" || value === \"off\" ? value : undefined;\n}\n\nfunction parseTokenInjection(value: unknown): ClaudeSdkOauthTokenInjection | undefined {\n\treturn value === \"oauth-slots\" || value === \"config-dir\" || value === \"ambient\" ? value : undefined;\n}\n\nfunction parseEnvironmentBoolean(value: string | undefined): boolean | undefined {\n\tif (value === undefined) return undefined;\n\tswitch (value.toLowerCase()) {\n\t\tcase \"1\":\n\t\tcase \"true\":\n\t\t\treturn true;\n\t\tcase \"0\":\n\t\tcase \"false\":\n\t\t\treturn false;\n\t\tdefault:\n\t\t\treturn undefined;\n\t}\n}\n\nfunction parseNonEmptyString(value: unknown): string | undefined {\n\treturn typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\nfunction parseProviderSettings(value: unknown): ClaudeSdkOauthProviderSettings {\n\tif (!isRecord(value)) return {};\n\tconst enabled = typeof value.enabled === \"boolean\" ? value.enabled : undefined;\n\tconst appendSystemPrompt = typeof value.appendSystemPrompt === \"boolean\" ? value.appendSystemPrompt : undefined;\n\tconst systemPromptMode = parseSystemPromptMode(value.systemPromptMode);\n\tconst systemPromptFile = parseNonEmptyString(value.systemPromptFile);\n\tconst resumeMode = parseResumeMode(value.resumeMode);\n\tconst settingSources = parseSettingSources(value.settingSources);\n\tconst strictMcpConfig = typeof value.strictMcpConfig === \"boolean\" ? value.strictMcpConfig : undefined;\n\tconst pinnedAccount = parseNonEmptyString(value.pinnedAccount);\n\tconst tokenInjection = parseTokenInjection(value.tokenInjection);\n\treturn {\n\t\t...(enabled !== undefined ? { enabled } : {}),\n\t\t...(appendSystemPrompt !== undefined ? { appendSystemPrompt } : {}),\n\t\t...(systemPromptMode !== undefined ? { systemPromptMode } : {}),\n\t\t...(systemPromptFile !== undefined ? { systemPromptFile } : {}),\n\t\t...(resumeMode !== undefined ? { resumeMode } : {}),\n\t\t...(settingSources !== undefined ? { settingSources } : {}),\n\t\t...(strictMcpConfig !== undefined ? { strictMcpConfig } : {}),\n\t\t...(pinnedAccount !== undefined ? { pinnedAccount } : {}),\n\t\t...(tokenInjection !== undefined ? { tokenInjection } : {}),\n\t};\n}\n\nfunction parseEnvironmentSettings(environment: Environment): ClaudeSdkOauthProviderSettings {\n\tconst enabled = parseEnvironmentBoolean(environment.SENPI_CLAUDE_SDK_OAUTH_ENABLED);\n\tconst systemPromptMode = parseSystemPromptMode(environment.SENPI_CLAUDE_SDK_OAUTH_SYSTEM_PROMPT_MODE);\n\tconst systemPromptFile = parseNonEmptyString(environment.SENPI_CLAUDE_SDK_OAUTH_SYSTEM_PROMPT_FILE);\n\tconst resumeMode = parseResumeMode(environment.SENPI_CLAUDE_SDK_OAUTH_RESUME);\n\tconst tokenInjection = parseTokenInjection(environment.SENPI_CLAUDE_SDK_OAUTH_TOKEN_INJECTION);\n\tconst settingSources = parseEnvironmentSettingSources(environment.SENPI_CLAUDE_SDK_OAUTH_SETTING_SOURCES);\n\tconst pinnedAccount = parseNonEmptyString(environment.SENPI_CLAUDE_SDK_OAUTH_PINNED_ACCOUNT);\n\treturn {\n\t\t...(enabled !== undefined ? { enabled } : {}),\n\t\t...(systemPromptMode !== undefined ? { systemPromptMode } : {}),\n\t\t...(systemPromptFile !== undefined ? { systemPromptFile } : {}),\n\t\t...(resumeMode !== undefined ? { resumeMode } : {}),\n\t\t...(tokenInjection !== undefined ? { tokenInjection } : {}),\n\t\t...(settingSources !== undefined ? { settingSources } : {}),\n\t\t...(pinnedAccount !== undefined ? { pinnedAccount } : {}),\n\t};\n}\n\nexport function resolveSystemPromptMode(settings: ClaudeSdkOauthProviderSettings): ResolvedSystemPromptMode {\n\tif (settings.systemPromptMode !== undefined) {\n\t\treturn {\n\t\t\tmode: settings.systemPromptMode,\n\t\t\tsource: systemPromptModeSources.get(settings) ?? \"setting\",\n\t\t\tconflict: settings.appendSystemPrompt !== undefined,\n\t\t};\n\t}\n\tif (settings.appendSystemPrompt !== undefined) {\n\t\treturn {\n\t\t\tmode: settings.appendSystemPrompt ? \"full\" : \"preset-append\",\n\t\t\tsource: \"legacy\",\n\t\t\tconflict: false,\n\t\t};\n\t}\n\treturn { mode: \"full\", source: \"default\", conflict: false };\n}\n\n/** Load the provider block with env values taking precedence over project and global values. */\nexport function loadClaudeSdkOauthProviderSettings(\n\tsettingsManager: SettingsManager,\n\tenvironment: Environment = process.env,\n): ClaudeSdkOauthProviderSettings {\n\tconst global = settingsManager.getGlobalSettings() as SettingsWithClaudeSdkOauthProvider;\n\tconst project = settingsManager.getProjectSettings() as SettingsWithClaudeSdkOauthProvider;\n\tconst environmentSettings = parseEnvironmentSettings(environment);\n\tconst settings = {\n\t\t...parseProviderSettings(global.claudeSdkOauthProvider),\n\t\t...parseProviderSettings(project.claudeSdkOauthProvider),\n\t\t...environmentSettings,\n\t};\n\tif (environmentSettings.systemPromptMode !== undefined) systemPromptModeSources.set(settings, \"env\");\n\treturn settings;\n}\n\nfunction settingsFingerprint(path: string): string {\n\ttry {\n\t\tconst stat = statSync(path);\n\t\treturn `${stat.mtimeMs}:${stat.size}`;\n\t} catch {\n\t\treturn \"missing\";\n\t}\n}\n\nlet cachedClaudeSdkOauthManager: { cwd: string; key: string; manager: SettingsManager } | undefined;\n\n/** Load settings from Senpi's configured global and project settings.json paths. */\nexport function loadClaudeSdkOauthProviderSettingsFromDisk(cwd: string): ClaudeSdkOauthProviderSettings {\n\t// fallbackEligible() calls this per candidate probe; cache the manager by\n\t// (cwd, settings mtime+size) and re-apply env live to avoid locked disk reads.\n\tconst agentDir = getAgentDir();\n\tconst key = `${cwd}|${settingsFingerprint(getSettingsPath(cwd, agentDir, \"global\"))}|${settingsFingerprint(\n\t\tgetSettingsPath(cwd, agentDir, \"project\"),\n\t)}`;\n\tlet settingsManager =\n\t\tcachedClaudeSdkOauthManager?.cwd === cwd && cachedClaudeSdkOauthManager.key === key\n\t\t\t? cachedClaudeSdkOauthManager.manager\n\t\t\t: undefined;\n\tif (!settingsManager) {\n\t\tsettingsManager = SettingsManager.create(cwd, agentDir);\n\t\tcachedClaudeSdkOauthManager = { cwd, key, manager: settingsManager };\n\t}\n\treturn loadClaudeSdkOauthProviderSettings(settingsManager);\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Api, type AssistantMessage, type Model } from "@earendil-works/pi-ai";
|
|
2
2
|
/** @deprecated Resolve the active Context.tools allowlist through resolveSdkTools(). */
|
|
3
|
-
export declare const sdkTools: ("
|
|
3
|
+
export declare const sdkTools: ("Bash" | "Edit" | "Glob" | "Grep" | "Read" | "Write")[];
|
|
4
4
|
/** @deprecated Use TOOL_EXECUTION_DENIED_MESSAGE from tools.ts. */
|
|
5
5
|
export declare const toolExecutionDeniedMessage: string;
|
|
6
6
|
export type TextBlock = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-watch.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/tool-watch.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Context } from \"@earendil-works/pi-ai\";\nimport type { SessionEntry } from \"../../../session-manager.ts\";\nimport type {\n\tExtensionAPI,\n\tExtensionContext,\n\tSessionShutdownEvent,\n\tSessionStartEvent,\n\tSessionTreeEvent,\n\tToolExecutionEndEvent,\n} from \"../../types.ts\";\nimport { mapPiToolNameToSdk } from \"./tools.ts\";\n\nexport const TOOL_WATCH_CUSTOM_TYPE = \"claude-sdk-oauth-tool-watch\";\nconst PROVIDER_ID = \"claude-sdk-oauth\";\nconst MAX_TRACKED_TOOL_EXECUTIONS = 256;\nconst MAX_TRACKED_TOOL_CONTENT_CHARS = 4_000;\nconst MAX_LEDGER_TOOL_RESULTS = 4;\nconst MAX_LEDGER_TOOL_CONTENT_CHARS = 1_200;\n\nexport type TrackedToolExecution = {\n\ttoolCallId: string;\n\ttoolName: string;\n\tcontent: string;\n\tisError: boolean;\n\ttimestamp: number;\n};\n\ntype ToolWatchEntry = TrackedToolExecution & { type: \"tool_execution_end\" };\ntype ToolWatchState = { completedToolCalls: Map<string, TrackedToolExecution> };\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n\treturn value !== null && typeof value === \"object\" && !Array.isArray(value)\n\t\t? (value as Record<string, unknown>)\n\t\t: undefined;\n}\n\nfunction truncate(text: string, limit: number): string {\n\treturn text.length <= limit ? text : `${text.slice(0, limit)}\\n...[truncated]`;\n}\n\nfunction contentToText(content: unknown): string {\n\tif (typeof content === \"string\") return content;\n\tif (!Array.isArray(content)) return \"\";\n\treturn content\n\t\t.map((block) => {\n\t\t\tconst value = asRecord(block);\n\t\t\tif (value?.type === \"text\" && typeof value.text === \"string\") return value.text;\n\t\t\tif (value?.type === \"image\")\n\t\t\t\treturn `[image:${typeof value.mimeType === \"string\" ? value.mimeType : \"unknown\"}]`;\n\t\t\treturn typeof value?.type === \"string\" ? `[${value.type}]` : \"\";\n\t\t})\n\t\t.filter(Boolean)\n\t\t.join(\"\\n\");\n}\n\nfunction resultContent(result: unknown): string {\n\tconst value = asRecord(result);\n\tconst content = contentToText(value?.content);\n\tif (content) return truncate(content, MAX_TRACKED_TOOL_CONTENT_CHARS);\n\ttry {\n\t\treturn truncate(JSON.stringify(result), MAX_TRACKED_TOOL_CONTENT_CHARS);\n\t} catch {\n\t\treturn truncate(String(result), MAX_TRACKED_TOOL_CONTENT_CHARS);\n\t}\n}\n\nfunction toolWatchEntry(data: unknown): TrackedToolExecution | undefined {\n\tconst value = asRecord(data);\n\tif (\n\t\tvalue?.type !== \"tool_execution_end\" ||\n\t\ttypeof value.toolCallId !== \"string\" ||\n\t\ttypeof value.toolName !== \"string\" ||\n\t\ttypeof value.content !== \"string\"\n\t) {\n\t\treturn undefined;\n\t}\n\treturn {\n\t\ttoolCallId: value.toolCallId,\n\t\ttoolName: value.toolName,\n\t\tcontent: truncate(value.content, MAX_TRACKED_TOOL_CONTENT_CHARS),\n\t\tisError: value.isError === true,\n\t\ttimestamp: typeof value.timestamp === \"number\" ? value.timestamp : Date.now(),\n\t};\n}\n\nexport function createToolWatch() {\n\tconst states = new Map<string, ToolWatchState>();\n\tconst stateFor = (sessionKey: string): ToolWatchState => {\n\t\tconst existing = states.get(sessionKey);\n\t\tif (existing) return existing;\n\t\tconst created = { completedToolCalls: new Map<string, TrackedToolExecution>() };\n\t\tstates.set(sessionKey, created);\n\t\treturn created;\n\t};\n\tconst trackCompletedToolCall = (sessionKey: string, execution: TrackedToolExecution): void => {\n\t\tconst completed = stateFor(sessionKey).completedToolCalls;\n\t\tcompleted.delete(execution.toolCallId);\n\t\tcompleted.set(execution.toolCallId, execution);\n\t\twhile (completed.size > MAX_TRACKED_TOOL_EXECUTIONS) {\n\t\t\tconst oldest = completed.keys().next().value;\n\t\t\tif (oldest === undefined) return;\n\t\t\tcompleted.delete(oldest);\n\t\t}\n\t};\n\tconst reconcileWithContext = (sessionKey: string, context: Context): void => {\n\t\tfor (const message of context.messages) {\n\t\t\tif (message.role !== \"toolResult\") continue;\n\t\t\ttrackCompletedToolCall(sessionKey, {\n\t\t\t\ttoolCallId: message.toolCallId,\n\t\t\t\ttoolName: message.toolName,\n\t\t\t\tcontent: truncate(contentToText(message.content), MAX_TRACKED_TOOL_CONTENT_CHARS),\n\t\t\t\tisError: message.isError,\n\t\t\t\ttimestamp: message.timestamp,\n\t\t\t});\n\t\t}\n\t};\n\tconst hydrate = (sessionKey: string, entries: readonly SessionEntry[]): void => {\n\t\tstates.set(sessionKey, { completedToolCalls: new Map() });\n\t\tfor (const entry of entries) {\n\t\t\tif (entry.type === \"message\" && entry.message.role === \"toolResult\") {\n\t\t\t\treconcileWithContext(sessionKey, { messages: [entry.message] });\n\t\t\t} else if (entry.type === \"custom\" && entry.customType === TOOL_WATCH_CUSTOM_TYPE) {\n\t\t\t\tconst execution = toolWatchEntry(entry.data);\n\t\t\t\tif (execution) trackCompletedToolCall(sessionKey, execution);\n\t\t\t}\n\t\t}\n\t};\n\tconst buildPromptNote = (\n\t\tsessionKey: string | undefined,\n\t\tcontext: Context,\n\t\tcustomToolNameToSdk?: ReadonlyMap<string, string>,\n\t): string | undefined => {\n\t\tif (!sessionKey) return undefined;\n\t\tconst resultsInContext = new Set<string>();\n\t\tconst pending = new Map<string, { toolName: string; timestamp: number }>();\n\t\tfor (const message of context.messages) {\n\t\t\tif (message.role === \"toolResult\") {\n\t\t\t\tresultsInContext.add(message.toolCallId);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (message.role !== \"assistant\") continue;\n\t\t\tfor (const block of message.content) {\n\t\t\t\tif (block.type === \"toolCall\")\n\t\t\t\t\tpending.set(block.id, { toolName: block.name, timestamp: message.timestamp });\n\t\t\t}\n\t\t}\n\t\tconst completed = stateFor(sessionKey).completedToolCalls;\n\t\tconst notes = [...pending.entries()]\n\t\t\t.filter(([toolCallId]) => !resultsInContext.has(toolCallId))\n\t\t\t.sort((left, right) => right[1].timestamp - left[1].timestamp)\n\t\t\t.slice(0, MAX_LEDGER_TOOL_RESULTS)\n\t\t\t.map(([toolCallId, pendingCall]) => {\n\t\t\t\tconst execution = completed.get(toolCallId);\n\t\t\t\tif (!execution) {\n\t\t\t\t\treturn `TOOL RESULT (missing execution ${mapPiToolNameToSdk(pendingCall.toolName, customToolNameToSdk)}, id=${toolCallId}, status=error):\\nTool execution did not complete or its result was not observed. Do not guess. Call the tool again.`;\n\t\t\t\t}\n\t\t\t\tconst status = execution.isError ? \"error\" : \"ok\";\n\t\t\t\treturn `TOOL RESULT (recovered ${mapPiToolNameToSdk(execution.toolName, customToolNameToSdk)}, id=${toolCallId}, status=${status}):\\n${truncate(execution.content || \"(empty tool result)\", MAX_LEDGER_TOOL_CONTENT_CHARS)}`;\n\t\t\t});\n\t\treturn notes.length > 0 ? notes.join(\"\\n\\n\") : undefined;\n\t};\n\treturn {\n\t\tsessionKey: (sessionId: string): string => `session:${sessionId}`,\n\t\ttrackCompletedToolCall,\n\t\tgetCompletedToolCall: (sessionKey: string, toolCallId: string) =>\n\t\t\tstates.get(sessionKey)?.completedToolCalls.get(toolCallId),\n\t\treconcileWithContext,\n\t\thydrate,\n\t\tbuildPromptNote,\n\t\tdeleteSession: (sessionKey: string): void => void states.delete(sessionKey),\n\t};\n}\n\nexport const toolWatch = createToolWatch();\n\nfunction refreshToolWatch(\n\twatch: ReturnType<typeof createToolWatch>,\n\tevent: SessionStartEvent | SessionTreeEvent,\n\tctx: ExtensionContext,\n): void {\n\tvoid event;\n\tconst sessionKey = watch.sessionKey(ctx.sessionManager.getSessionId());\n\twatch.hydrate(sessionKey, ctx.sessionManager.getBranch());\n}\n\nexport function registerToolWatch(\n\tpi: Pick<ExtensionAPI, \"on\" | \"appendEntry\">,\n\twatch: ReturnType<typeof createToolWatch> = toolWatch,\n): void {\n\tpi.on(\"session_start\", (event, ctx) => refreshToolWatch(watch, event, ctx));\n\tpi.on(\"session_tree\", (event, ctx) => refreshToolWatch(watch, event, ctx));\n\tpi.on(\"session_shutdown\", (_event: SessionShutdownEvent, ctx) => {\n\t\twatch.deleteSession(watch.sessionKey(ctx.sessionManager.getSessionId()));\n\t});\n\tpi.on(\"tool_execution_end\", (event: ToolExecutionEndEvent, ctx) => {\n\t\tif (ctx.model?.provider !== PROVIDER_ID) return;\n\t\tconst execution: ToolWatchEntry = {\n\t\t\ttype: \"tool_execution_end\",\n\t\t\ttoolCallId: event.toolCallId,\n\t\t\ttoolName: event.toolName,\n\t\t\tcontent: resultContent(event.result),\n\t\t\tisError: event.isError,\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\t\tconst sessionKey = watch.sessionKey(ctx.sessionManager.getSessionId());\n\t\twatch.trackCompletedToolCall(sessionKey, execution);\n\t\tpi.appendEntry<ToolWatchEntry>(TOOL_WATCH_CUSTOM_TYPE, execution);\n\t});\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tool-watch.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/tool-watch.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Context } from \"@earendil-works/pi-ai\";\nimport type { SessionEntry } from \"../../../session-manager.ts\";\nimport type {\n\tExtensionAPI,\n\tExtensionContext,\n\tSessionShutdownEvent,\n\tSessionStartEvent,\n\tSessionTreeEvent,\n\tToolExecutionEndEvent,\n} from \"../../types.ts\";\nimport { mapPiToolNameToSdk } from \"./tools.ts\";\n\nexport const TOOL_WATCH_CUSTOM_TYPE = \"claude-sdk-oauth-tool-watch\";\nconst PROVIDER_ID = \"claude-sdk-oauth\";\nconst MAX_TRACKED_TOOL_EXECUTIONS = 256;\nconst MAX_TRACKED_TOOL_CONTENT_CHARS = 4_000;\nconst MAX_LEDGER_TOOL_RESULTS = 4;\nconst MAX_LEDGER_TOOL_CONTENT_CHARS = 1_200;\n\nexport type TrackedToolExecution = {\n\ttoolCallId: string;\n\ttoolName: string;\n\tcontent: string;\n\tisError: boolean;\n\ttimestamp: number;\n};\n\ntype ToolWatchEntry = TrackedToolExecution & { type: \"tool_execution_end\" };\ntype ToolWatchState = { completedToolCalls: Map<string, TrackedToolExecution> };\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n\treturn value !== null && typeof value === \"object\" && !Array.isArray(value)\n\t\t? (value as Record<string, unknown>)\n\t\t: undefined;\n}\n\nfunction truncate(text: string, limit: number): string {\n\treturn text.length <= limit ? text : `${text.slice(0, limit)}\\n...[truncated]`;\n}\n\nfunction contentToText(content: unknown): string {\n\tif (typeof content === \"string\") return content;\n\tif (!Array.isArray(content)) return \"\";\n\treturn content\n\t\t.map((block) => {\n\t\t\tconst value = asRecord(block);\n\t\t\tif (value?.type === \"text\" && typeof value.text === \"string\") return value.text;\n\t\t\tif (value?.type === \"image\")\n\t\t\t\treturn `[image:${typeof value.mimeType === \"string\" ? value.mimeType : \"unknown\"}]`;\n\t\t\treturn typeof value?.type === \"string\" ? `[${value.type}]` : \"\";\n\t\t})\n\t\t.filter(Boolean)\n\t\t.join(\"\\n\");\n}\n\nfunction resultContent(result: unknown): string {\n\tconst value = asRecord(result);\n\tconst content = contentToText(value?.content);\n\tif (content) return truncate(content, MAX_TRACKED_TOOL_CONTENT_CHARS);\n\ttry {\n\t\treturn truncate(JSON.stringify(result), MAX_TRACKED_TOOL_CONTENT_CHARS);\n\t} catch {\n\t\treturn truncate(String(result), MAX_TRACKED_TOOL_CONTENT_CHARS);\n\t}\n}\n\nfunction toolWatchEntry(data: unknown): TrackedToolExecution | undefined {\n\tconst value = asRecord(data);\n\tif (\n\t\tvalue?.type !== \"tool_execution_end\" ||\n\t\ttypeof value.toolCallId !== \"string\" ||\n\t\ttypeof value.toolName !== \"string\" ||\n\t\ttypeof value.content !== \"string\"\n\t) {\n\t\treturn undefined;\n\t}\n\treturn {\n\t\ttoolCallId: value.toolCallId,\n\t\ttoolName: value.toolName,\n\t\tcontent: truncate(value.content, MAX_TRACKED_TOOL_CONTENT_CHARS),\n\t\tisError: value.isError === true,\n\t\ttimestamp: typeof value.timestamp === \"number\" ? value.timestamp : Date.now(),\n\t};\n}\n\nexport function createToolWatch() {\n\tconst states = new Map<string, ToolWatchState>();\n\tconst stateFor = (sessionKey: string): ToolWatchState => {\n\t\tconst existing = states.get(sessionKey);\n\t\tif (existing) return existing;\n\t\tconst created = { completedToolCalls: new Map<string, TrackedToolExecution>() };\n\t\tstates.set(sessionKey, created);\n\t\treturn created;\n\t};\n\tconst trackCompletedToolCall = (sessionKey: string, execution: TrackedToolExecution): void => {\n\t\tconst completed = stateFor(sessionKey).completedToolCalls;\n\t\tcompleted.delete(execution.toolCallId);\n\t\tcompleted.set(execution.toolCallId, execution);\n\t\twhile (completed.size > MAX_TRACKED_TOOL_EXECUTIONS) {\n\t\t\tconst oldest = completed.keys().next().value;\n\t\t\tif (oldest === undefined) return;\n\t\t\tcompleted.delete(oldest);\n\t\t}\n\t};\n\tconst reconcileWithContext = (sessionKey: string, context: Context): void => {\n\t\tfor (const message of context.messages) {\n\t\t\tif (message.role !== \"toolResult\") continue;\n\t\t\ttrackCompletedToolCall(sessionKey, {\n\t\t\t\ttoolCallId: message.toolCallId,\n\t\t\t\ttoolName: message.toolName,\n\t\t\t\tcontent: truncate(contentToText(message.content), MAX_TRACKED_TOOL_CONTENT_CHARS),\n\t\t\t\tisError: message.isError,\n\t\t\t\ttimestamp: message.timestamp,\n\t\t\t});\n\t\t}\n\t};\n\tconst hydrate = (sessionKey: string, entries: readonly SessionEntry[]): void => {\n\t\tstates.set(sessionKey, { completedToolCalls: new Map() });\n\t\tfor (const entry of entries) {\n\t\t\tif (entry.type === \"message\" && entry.message.role === \"toolResult\") {\n\t\t\t\treconcileWithContext(sessionKey, { messages: [entry.message] });\n\t\t\t} else if (entry.type === \"custom\" && entry.customType === TOOL_WATCH_CUSTOM_TYPE) {\n\t\t\t\tconst execution = toolWatchEntry(entry.data);\n\t\t\t\tif (execution) trackCompletedToolCall(sessionKey, execution);\n\t\t\t}\n\t\t}\n\t};\n\tconst buildPromptNote = (\n\t\tsessionKey: string | undefined,\n\t\tcontext: Context,\n\t\tcustomToolNameToSdk?: ReadonlyMap<string, string>,\n\t): string | undefined => {\n\t\tif (!sessionKey) return undefined;\n\t\tconst resultsInContext = new Set<string>();\n\t\tconst pending = new Map<string, { toolName: string; timestamp: number }>();\n\t\tfor (const message of context.messages) {\n\t\t\tif (message.role === \"toolResult\") {\n\t\t\t\tresultsInContext.add(message.toolCallId);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (message.role !== \"assistant\") continue;\n\t\t\tfor (const block of message.content) {\n\t\t\t\tif (block.type === \"toolCall\")\n\t\t\t\t\tpending.set(block.id, { toolName: block.name, timestamp: message.timestamp });\n\t\t\t}\n\t\t}\n\t\tconst completed = stateFor(sessionKey).completedToolCalls;\n\t\tconst notes = [...pending.entries()]\n\t\t\t.filter(([toolCallId]) => !resultsInContext.has(toolCallId))\n\t\t\t.sort((left, right) => right[1].timestamp - left[1].timestamp)\n\t\t\t.slice(0, MAX_LEDGER_TOOL_RESULTS)\n\t\t\t.map(([toolCallId, pendingCall]) => {\n\t\t\t\tconst execution = completed.get(toolCallId);\n\t\t\t\tif (!execution) {\n\t\t\t\t\treturn `TOOL RESULT (missing execution ${mapPiToolNameToSdk(pendingCall.toolName, customToolNameToSdk)}, id=${toolCallId}, status=error):\\nTool execution did not complete or its result was not observed. Do not guess. Call the tool again.`;\n\t\t\t\t}\n\t\t\t\tconst status = execution.isError ? \"error\" : \"ok\";\n\t\t\t\treturn `TOOL RESULT (recovered ${mapPiToolNameToSdk(execution.toolName, customToolNameToSdk)}, id=${toolCallId}, status=${status}):\\n${truncate(execution.content || \"(empty tool result)\", MAX_LEDGER_TOOL_CONTENT_CHARS)}`;\n\t\t\t});\n\t\treturn notes.length > 0 ? notes.join(\"\\n\\n\") : undefined;\n\t};\n\treturn {\n\t\tsessionKey: (sessionId: string): string => `session:${sessionId}`,\n\t\ttrackCompletedToolCall,\n\t\tgetCompletedToolCall: (sessionKey: string, toolCallId: string) =>\n\t\t\tstates.get(sessionKey)?.completedToolCalls.get(toolCallId),\n\t\treconcileWithContext,\n\t\thydrate,\n\t\tbuildPromptNote,\n\t\tdeleteSession: (sessionKey: string): void => void states.delete(sessionKey),\n\t};\n}\n\nexport const toolWatch = createToolWatch();\n\nfunction refreshToolWatch(\n\twatch: ReturnType<typeof createToolWatch>,\n\tevent: SessionStartEvent | SessionTreeEvent,\n\tctx: ExtensionContext,\n): void {\n\tvoid event;\n\tconst sessionKey = watch.sessionKey(ctx.sessionManager.getSessionId());\n\twatch.hydrate(sessionKey, ctx.sessionManager.getBranch());\n}\n\nexport function registerToolWatch(\n\tpi: Pick<ExtensionAPI, \"on\" | \"appendEntry\">,\n\twatch: ReturnType<typeof createToolWatch> = toolWatch,\n): void {\n\tpi.on(\"session_start\", (event, ctx) => refreshToolWatch(watch, event, ctx));\n\tpi.on(\"session_tree\", (event, ctx) => refreshToolWatch(watch, event, ctx));\n\tpi.on(\"session_shutdown\", (_event: SessionShutdownEvent, ctx) => {\n\t\twatch.deleteSession(watch.sessionKey(ctx.sessionManager.getSessionId()));\n\t});\n\tpi.on(\"tool_execution_end\", (event: ToolExecutionEndEvent, ctx) => {\n\t\tif (ctx.model?.provider !== PROVIDER_ID) return;\n\t\tconst execution: ToolWatchEntry = {\n\t\t\ttype: \"tool_execution_end\",\n\t\t\ttoolCallId: event.toolCallId,\n\t\t\ttoolName: event.toolName,\n\t\t\tcontent: resultContent(event.result),\n\t\t\tisError: event.isError,\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\t\tconst sessionKey = watch.sessionKey(ctx.sessionManager.getSessionId());\n\t\twatch.trackCompletedToolCall(sessionKey, execution);\n\t\tpi.appendEntry<ToolWatchEntry>(TOOL_WATCH_CUSTOM_TYPE, execution);\n\t});\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOhE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQhE,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,wBAAwB,CAAC;AAElE,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOhE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQhE,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,wBAAwB,CAAC;AAElE,eAAO,MAAM,iBAAiB,YAAI,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;AAC5F,eAAO,MAAM,6BAA6B,QAEY,CAAC;AACvD,eAAO,MAAM,kCAAkC,QAAgC,CAAC;AAChF,eAAO,MAAM,4BAA4B,iBAAiB,CAAC;AAC3D,eAAO,MAAM,uBAAuB,wBAA2C,CAAC;AAChF,eAAO,MAAM,8BAA8B,yDAAyD,CAAC;AACrG,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAgBhE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,IAAI,EAAE,CAAC;IACpB,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC,CAAC;AAUF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAQ1G;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAQzG;AAED,qFAAqF;AACrF,wBAAgB,WAAW,CAC1B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,GACjD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuCzB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,CA6BlE;AAED,eAAO,MAAM,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAGxD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-reduction.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/context-reduction.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Deterministic, no-LLM context reductions applied before compaction summarization.\n *\n * Ported from plugsuits' `context-collapse` and `micro-compact` patterns and\n * adapted to the senpi `AgentMessage` shape. Three independent transforms:\n *\n * 1. {@link collapseConsecutiveToolResults} — runs of same-kind read/grep/shell\n * tool result payloads are replaced with a single one-line label so the\n * summarizer pays for the shape, not for the bytes.\n * 2. {@link microCompactAssistantText} — older long assistant text answers are\n * truncated and tagged with a `[response shrunk]` marker.\n * 3. {@link clearOldToolResults} — keep the last N tool results in full, replace\n * older clearable tool result content with `[tool result cleared]`.\n *\n * Each transform is pure (`messages` in → new array out, no in-place mutation\n * beyond freshly cloned messages) and returns aggregated token-savings stats.\n *\n * {@link reduceContextMessages} composes the three transforms in order.\n */\n\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { AssistantMessage, ImageContent, TextContent, ToolResultMessage } from \"@earendil-works/pi-ai\";\n\nconst DEFAULT_READ_TOOL_NAMES = [\"read\", \"Read\", \"read_file\"];\nconst DEFAULT_SEARCH_TOOL_NAMES = [\"grep\", \"Grep\", \"glob\", \"Glob\"];\nconst DEFAULT_SHELL_TOOL_NAMES = [\"bash\", \"Bash\", \"shell\", \"shell_execute\"];\nconst DEFAULT_CLEARABLE_TOOL_NAMES = [\n\t\"read\",\n\t\"Read\",\n\t\"read_file\",\n\t\"write\",\n\t\"Write\",\n\t\"edit\",\n\t\"Edit\",\n\t\"grep\",\n\t\"Grep\",\n\t\"glob\",\n\t\"Glob\",\n\t\"bash\",\n\t\"Bash\",\n\t\"shell\",\n];\n\nconst DEFAULT_MIN_GROUP_SIZE = 2;\nconst DEFAULT_PROTECT_RECENT_MESSAGES = 5;\nconst DEFAULT_PROTECT_RECENT_TOKENS = 2000;\nconst DEFAULT_MAX_ASSISTANT_TEXT_TOKENS = 500;\nconst DEFAULT_MIN_SAVINGS_TOKENS = 100;\nconst DEFAULT_KEEP_RECENT_TOOL_RESULTS = 3;\nconst DEFAULT_CLEARED_PLACEHOLDER = \"[tool result cleared]\";\nconst DEFAULT_REPLACEMENT_TEMPLATE = \"[response shrunk — {original_tokens} → {shrunk_tokens} tokens]\";\n\nconst MAX_HINTS_IN_LABEL = 5;\nconst MAX_HINT_LENGTH = 80;\nconst SHRUNK_RESPONSE_RATIO = 0.3;\n\nexport type CollapsedGroupKind = \"read\" | \"search\" | \"shell\";\n\nexport interface CollapsedGroup {\n\ttype: CollapsedGroupKind;\n\tcount: number;\n\tlabel: string;\n\toriginalTokens: number;\n\tcollapsedTokens: number;\n}\n\nexport interface CollapseConsecutiveOptions {\n\tminGroupSize?: number;\n\tprotectRecentMessages?: number;\n\treadToolNames?: string[];\n\tsearchToolNames?: string[];\n\tshellToolNames?: string[];\n}\n\nexport interface CollapseConsecutiveResult {\n\tmessages: AgentMessage[];\n\tgroups: CollapsedGroup[];\n\ttokensSaved: number;\n}\n\nexport interface MicroCompactAssistantOptions {\n\tprotectRecentTokens?: number;\n\tmaxAssistantTextTokens?: number;\n\tminSavingsTokens?: number;\n\treplacementTemplate?: string;\n}\n\nexport interface MicroCompactAssistantResult {\n\tmessages: AgentMessage[];\n\ttokensSaved: number;\n\tmessagesModified: number;\n}\n\nexport interface ClearOldToolResultsOptions {\n\tkeepRecent?: number;\n\tclearableToolNames?: string[];\n\treplacementText?: string;\n}\n\nexport interface ClearOldToolResultsResult {\n\tmessages: AgentMessage[];\n\ttokensSaved: number;\n\ttoolResultsCleared: number;\n}\n\nexport interface ReduceContextOptions {\n\tcollapse?: false | CollapseConsecutiveOptions;\n\tshrinkAssistant?: false | MicroCompactAssistantOptions;\n\tclearToolResults?: false | ClearOldToolResultsOptions;\n}\n\nexport interface ReduceContextResult {\n\tmessages: AgentMessage[];\n\ttokensSaved: number;\n\tgroupsCollapsed: number;\n\tmessagesShrunk: number;\n\ttoolResultsCleared: number;\n}\n\n/**\n * Default options passed to {@link reduceContextMessages} when the builtin\n * compaction extension's `context` hook decides to run a reduction pass.\n *\n * Each value is chosen to be strictly more conservative than the corresponding\n * plugsuits default — protect more of the recent tail, raise the per-message\n * shrink threshold, and keep more recent tool results intact — so a single\n * shared default is safe to apply across normal coding sessions without making\n * targeted reductions less effective.\n */\nexport const BUILTIN_CONTEXT_REDUCTION_OPTIONS: ReduceContextOptions = {\n\tcollapse: {\n\t\tminGroupSize: DEFAULT_MIN_GROUP_SIZE,\n\t\tprotectRecentMessages: DEFAULT_PROTECT_RECENT_MESSAGES,\n\t},\n\tshrinkAssistant: {\n\t\tprotectRecentTokens: 3000,\n\t\tmaxAssistantTextTokens: 800,\n\t\tminSavingsTokens: DEFAULT_MIN_SAVINGS_TOKENS,\n\t},\n\tclearToolResults: {\n\t\tkeepRecent: 6,\n\t},\n};\n\nexport const BUILTIN_CONTEXT_REDUCTION_GATE_RATIO = 0.5;\n\nexport interface ShouldApplyContextReductionInput {\n\tusageTokens: number | null;\n\tcontextWindow: number;\n\tgateRatio?: number;\n\tisProviderNativeCompactionPath?: boolean;\n}\n\nexport function shouldApplyContextReduction(input: ShouldApplyContextReductionInput): boolean {\n\tconst gate = input.gateRatio ?? BUILTIN_CONTEXT_REDUCTION_GATE_RATIO;\n\tif (input.isProviderNativeCompactionPath === true) return false;\n\tif (input.usageTokens === null) return false;\n\tif (input.contextWindow <= 0) return false;\n\treturn input.usageTokens >= input.contextWindow * gate;\n}\n\nfunction approxTextTokens(text: string): number {\n\tif (!text) return 0;\n\treturn Math.ceil(text.length / 4);\n}\n\nfunction extractContentText(content: (TextContent | ImageContent)[] | undefined): string {\n\tif (!Array.isArray(content)) return \"\";\n\tlet out = \"\";\n\tfor (const part of content) {\n\t\tif (part.type === \"text\") out += part.text;\n\t}\n\treturn out;\n}\n\nfunction extractMessageText(message: AgentMessage): string {\n\tif (message.role === \"user\") {\n\t\tif (typeof message.content === \"string\") return message.content;\n\t\treturn extractContentText(message.content as (TextContent | ImageContent)[]);\n\t}\n\tif (message.role === \"assistant\") {\n\t\tlet out = \"\";\n\t\tfor (const block of message.content) {\n\t\t\tif (block.type === \"text\") out += block.text;\n\t\t\telse if (block.type === \"toolCall\") out += `${block.name} ${JSON.stringify(block.arguments)}`;\n\t\t}\n\t\treturn out;\n\t}\n\tif (message.role === \"toolResult\") {\n\t\treturn extractContentText(message.content);\n\t}\n\treturn \"\";\n}\n\ninterface ToolNameSets {\n\tread: Set<string>;\n\tsearch: Set<string>;\n\tshell: Set<string>;\n}\n\nfunction classifyTool(name: string, sets: ToolNameSets): CollapsedGroupKind | null {\n\tif (sets.read.has(name)) return \"read\";\n\tif (sets.search.has(name)) return \"search\";\n\tif (sets.shell.has(name)) return \"shell\";\n\treturn null;\n}\n\ninterface FirstToolCall {\n\tid: string;\n\tname: string;\n\targs: Record<string, unknown>;\n}\n\nfunction getFirstToolCallFromAssistant(message: AgentMessage): FirstToolCall | null {\n\tif (message.role !== \"assistant\") return null;\n\tfor (const block of message.content) {\n\t\tif (block.type === \"toolCall\") {\n\t\t\treturn { id: block.id, name: block.name, args: block.arguments as Record<string, unknown> };\n\t\t}\n\t}\n\treturn null;\n}\n\ninterface CollapsibleOperation {\n\ttype: CollapsedGroupKind;\n\ttoolName: string;\n\tassistantIndex: number;\n\tresultIndex: number;\n\thint?: string;\n\tresultText: string;\n}\n\nfunction truncateHint(value: string): string {\n\tif (value.length <= MAX_HINT_LENGTH) return value;\n\treturn `${value.slice(0, MAX_HINT_LENGTH - 1)}…`;\n}\n\nfunction extractHint(type: CollapsedGroupKind, args: Record<string, unknown>): string | undefined {\n\tif (type === \"read\") {\n\t\tconst path = args.path ?? args.file_path ?? args.filePath;\n\t\tif (typeof path === \"string\" && path.length > 0) return truncateHint(path);\n\t\treturn undefined;\n\t}\n\tif (type === \"search\") {\n\t\tconst path = typeof args.path === \"string\" ? args.path : undefined;\n\t\tconst pattern =\n\t\t\t(typeof args.pattern === \"string\" && args.pattern) ||\n\t\t\t(typeof args.glob === \"string\" && args.glob) ||\n\t\t\t(typeof args.query === \"string\" && args.query) ||\n\t\t\tundefined;\n\t\tif (path && pattern) return truncateHint(`${path}:${pattern}`);\n\t\tif (path) return truncateHint(path);\n\t\tif (pattern) return truncateHint(pattern as string);\n\t\treturn undefined;\n\t}\n\tconst command = args.command ?? args.cmd;\n\tif (typeof command === \"string\" && command.length > 0) return truncateHint(command);\n\treturn undefined;\n}\n\nfunction buildGroupLabel(type: CollapsedGroupKind, operations: CollapsibleOperation[]): string {\n\tconst hints: string[] = [];\n\tfor (const op of operations) {\n\t\tif (op.hint && hints.length < MAX_HINTS_IN_LABEL) hints.push(op.hint);\n\t}\n\tconst noun = type === \"read\" ? \"read results\" : type === \"search\" ? \"search results\" : \"shell results\";\n\tif (hints.length === 0) return `[${operations.length} ${noun}]`;\n\tconst more = operations.length - hints.length;\n\tconst moreSuffix = more > 0 ? `, and ${more} more` : \"\";\n\treturn `[${operations.length} ${noun}: ${hints.join(\", \")}${moreSuffix}]`;\n}\n\nfunction collectCollapsibleOperations(\n\tmessages: AgentMessage[],\n\tcollapseLimit: number,\n\tsets: ToolNameSets,\n): CollapsibleOperation[] {\n\tconst operations: CollapsibleOperation[] = [];\n\tlet i = 0;\n\twhile (i < collapseLimit) {\n\t\tconst assistant = messages[i];\n\t\tconst call = getFirstToolCallFromAssistant(assistant);\n\t\tif (!call) {\n\t\t\ti += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tconst next = messages[i + 1];\n\t\tconst resultInWindow = i + 1 < collapseLimit;\n\t\tif (next?.role !== \"toolResult\" || next.toolCallId !== call.id || !resultInWindow) {\n\t\t\ti += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tconst type = classifyTool(call.name, sets);\n\t\tif (!type) {\n\t\t\ti += 1;\n\t\t\tcontinue;\n\t\t}\n\t\toperations.push({\n\t\t\ttype,\n\t\t\ttoolName: call.name,\n\t\t\tassistantIndex: i,\n\t\t\tresultIndex: i + 1,\n\t\t\thint: extractHint(type, call.args),\n\t\t\tresultText: extractContentText((next as ToolResultMessage).content),\n\t\t});\n\t\ti += 2;\n\t}\n\treturn operations;\n}\n\nfunction groupConsecutiveOperations(operations: CollapsibleOperation[]): CollapsibleOperation[][] {\n\tconst groups: CollapsibleOperation[][] = [];\n\tlet current: CollapsibleOperation[] = [];\n\tfor (const op of operations) {\n\t\tif (current.length === 0) {\n\t\t\tcurrent.push(op);\n\t\t\tcontinue;\n\t\t}\n\t\tconst prev = current[current.length - 1];\n\t\tif (op.type === prev.type && op.assistantIndex === prev.resultIndex + 1) {\n\t\t\tcurrent.push(op);\n\t\t\tcontinue;\n\t\t}\n\t\tgroups.push(current);\n\t\tcurrent = [op];\n\t}\n\tif (current.length > 0) groups.push(current);\n\treturn groups;\n}\n\nexport function collapseConsecutiveToolResults(\n\tmessages: AgentMessage[],\n\toptions: CollapseConsecutiveOptions = {},\n): CollapseConsecutiveResult {\n\tconst minGroupSize = Math.max(1, options.minGroupSize ?? DEFAULT_MIN_GROUP_SIZE);\n\tconst protectRecentMessages = Math.max(0, options.protectRecentMessages ?? DEFAULT_PROTECT_RECENT_MESSAGES);\n\tconst sets: ToolNameSets = {\n\t\tread: new Set(options.readToolNames ?? DEFAULT_READ_TOOL_NAMES),\n\t\tsearch: new Set(options.searchToolNames ?? DEFAULT_SEARCH_TOOL_NAMES),\n\t\tshell: new Set(options.shellToolNames ?? DEFAULT_SHELL_TOOL_NAMES),\n\t};\n\n\tconst collapseLimit = Math.max(0, messages.length - protectRecentMessages);\n\tconst operations = collectCollapsibleOperations(messages, collapseLimit, sets);\n\tconst operationGroups = groupConsecutiveOperations(operations);\n\n\tconst collapsedGroups: CollapsedGroup[] = [];\n\tconst nextMessages = messages.slice();\n\tlet tokensSaved = 0;\n\n\tfor (const group of operationGroups) {\n\t\tif (group.length < minGroupSize) continue;\n\t\tconst label = buildGroupLabel(group[0].type, group);\n\t\tlet originalTokens = 0;\n\t\tlet collapsedTokens = 0;\n\t\tfor (const op of group) {\n\t\t\tconst original = approxTextTokens(op.resultText);\n\t\t\tconst collapsed = approxTextTokens(label);\n\t\t\toriginalTokens += original;\n\t\t\tcollapsedTokens += collapsed;\n\t\t\tconst result = nextMessages[op.resultIndex];\n\t\t\tif (result.role !== \"toolResult\") continue;\n\t\t\tconst images = result.content.filter((c): c is ImageContent => c.type === \"image\");\n\t\t\tnextMessages[op.resultIndex] = {\n\t\t\t\t...result,\n\t\t\t\tcontent: [{ type: \"text\", text: label } as TextContent, ...images],\n\t\t\t};\n\t\t}\n\t\ttokensSaved += Math.max(0, originalTokens - collapsedTokens);\n\t\tcollapsedGroups.push({\n\t\t\ttype: group[0].type,\n\t\t\tcount: group.length,\n\t\t\tlabel,\n\t\t\toriginalTokens,\n\t\t\tcollapsedTokens,\n\t\t});\n\t}\n\n\treturn { messages: nextMessages, groups: collapsedGroups, tokensSaved };\n}\n\nfunction resolveProtectedFromIndex(messages: AgentMessage[], protectRecentTokens: number): number {\n\tif (messages.length === 0) return 0;\n\tlet recentTokens = 0;\n\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\tconst tokens = approxTextTokens(extractMessageText(messages[i]));\n\t\tif (recentTokens + tokens > protectRecentTokens) return i + 1;\n\t\trecentTokens += tokens;\n\t\tif (i === 0) return 0;\n\t}\n\treturn messages.length;\n}\n\nfunction renderReplacementText(template: string, originalTokens: number, shrunkTokens: number): string {\n\treturn template\n\t\t.split(\"{original_tokens}\")\n\t\t.join(String(originalTokens))\n\t\t.split(\"{shrunk_tokens}\")\n\t\t.join(String(shrunkTokens));\n}\n\nfunction buildShrunkText(\n\toriginalText: string,\n\toriginalTokens: number,\n\tmaxAssistantTextTokens: number,\n\ttemplate: string,\n): { text: string; tokens: number } {\n\tconst targetTextTokens = Math.max(1, Math.floor(maxAssistantTextTokens * SHRUNK_RESPONSE_RATIO));\n\tconst ratio = originalTokens > 0 ? targetTextTokens / originalTokens : 0;\n\tconst targetChars = Math.max(0, Math.floor(originalText.length * ratio));\n\tconst truncatedText = originalText.slice(0, targetChars);\n\tlet shrunkTokens = 0;\n\tlet shrunkText = \"\";\n\tfor (let iteration = 0; iteration < 5; iteration += 1) {\n\t\tconst replacement = renderReplacementText(template, originalTokens, shrunkTokens);\n\t\tconst candidate = truncatedText.length > 0 ? `${truncatedText}\\n\\n${replacement}` : replacement;\n\t\tconst tokens = approxTextTokens(candidate);\n\t\tshrunkText = candidate;\n\t\tif (tokens === shrunkTokens) return { text: candidate, tokens };\n\t\tshrunkTokens = tokens;\n\t}\n\treturn { text: shrunkText, tokens: approxTextTokens(shrunkText) };\n}\n\nexport function microCompactAssistantText(\n\tmessages: AgentMessage[],\n\toptions: MicroCompactAssistantOptions = {},\n): MicroCompactAssistantResult {\n\tconst protectRecentTokens = Math.max(0, options.protectRecentTokens ?? DEFAULT_PROTECT_RECENT_TOKENS);\n\tconst maxAssistantTextTokens = Math.max(0, options.maxAssistantTextTokens ?? DEFAULT_MAX_ASSISTANT_TEXT_TOKENS);\n\tconst minSavingsTokens = Math.max(0, options.minSavingsTokens ?? DEFAULT_MIN_SAVINGS_TOKENS);\n\tconst template = options.replacementTemplate ?? DEFAULT_REPLACEMENT_TEMPLATE;\n\n\tconst protectedFromIndex = resolveProtectedFromIndex(messages, protectRecentTokens);\n\tconst result = messages.slice();\n\tlet messagesModified = 0;\n\tlet tokensSaved = 0;\n\n\tfor (let i = 0; i < protectedFromIndex; i += 1) {\n\t\tconst msg = result[i];\n\t\tif (msg.role !== \"assistant\") continue;\n\t\tconst assistant = msg as AssistantMessage;\n\t\tconst allText = assistant.content.length > 0 && assistant.content.every((c) => c.type === \"text\");\n\t\tif (!allText) continue;\n\t\tconst originalText = assistant.content.map((c) => (c.type === \"text\" ? c.text : \"\")).join(\"\\n\");\n\t\tconst originalTokens = approxTextTokens(originalText);\n\t\tif (originalTokens <= maxAssistantTextTokens) continue;\n\t\tconst shrunk = buildShrunkText(originalText, originalTokens, maxAssistantTextTokens, template);\n\t\tconst saved = originalTokens - shrunk.tokens;\n\t\tif (saved < minSavingsTokens) continue;\n\t\tresult[i] = {\n\t\t\t...assistant,\n\t\t\tcontent: [{ type: \"text\", text: shrunk.text } as TextContent],\n\t\t};\n\t\ttokensSaved += saved;\n\t\tmessagesModified += 1;\n\t}\n\n\treturn { messages: result, tokensSaved, messagesModified };\n}\n\nexport function clearOldToolResults(\n\tmessages: AgentMessage[],\n\toptions: ClearOldToolResultsOptions = {},\n): ClearOldToolResultsResult {\n\tconst keepRecent = Math.max(0, options.keepRecent ?? DEFAULT_KEEP_RECENT_TOOL_RESULTS);\n\tconst clearable = new Set(options.clearableToolNames ?? DEFAULT_CLEARABLE_TOOL_NAMES);\n\tconst replacementText = options.replacementText ?? DEFAULT_CLEARED_PLACEHOLDER;\n\n\tconst clearableIndices: number[] = [];\n\tfor (let i = 0; i < messages.length; i += 1) {\n\t\tconst msg = messages[i];\n\t\tif (msg.role === \"toolResult\" && clearable.has(msg.toolName)) {\n\t\t\tclearableIndices.push(i);\n\t\t}\n\t}\n\n\tconst clearUntil = Math.max(0, clearableIndices.length - keepRecent);\n\tif (clearUntil === 0) {\n\t\treturn { messages: messages.slice(), tokensSaved: 0, toolResultsCleared: 0 };\n\t}\n\n\tconst result = messages.slice();\n\tlet tokensSaved = 0;\n\tlet toolResultsCleared = 0;\n\tconst replacementTokens = approxTextTokens(replacementText);\n\n\tfor (let k = 0; k < clearUntil; k += 1) {\n\t\tconst idx = clearableIndices[k];\n\t\tconst msg = result[idx];\n\t\tif (msg.role !== \"toolResult\") continue;\n\t\tconst original = msg as ToolResultMessage;\n\t\tconst originalText = extractContentText(original.content);\n\t\tconst originalTokens = approxTextTokens(originalText);\n\t\tconst images = original.content.filter((c): c is ImageContent => c.type === \"image\");\n\t\tresult[idx] = {\n\t\t\t...original,\n\t\t\tcontent: [{ type: \"text\", text: replacementText } as TextContent, ...images],\n\t\t};\n\t\tconst savings = originalTokens - replacementTokens;\n\t\tif (savings > 0) tokensSaved += savings;\n\t\ttoolResultsCleared += 1;\n\t}\n\n\treturn { messages: result, tokensSaved, toolResultsCleared };\n}\n\nexport function reduceContextMessages(\n\tmessages: AgentMessage[],\n\toptions: ReduceContextOptions = {},\n): ReduceContextResult {\n\tlet current = messages;\n\tlet tokensSaved = 0;\n\tlet groupsCollapsed = 0;\n\tlet messagesShrunk = 0;\n\tlet toolResultsCleared = 0;\n\n\tif (options.collapse !== false) {\n\t\tconst collapsed = collapseConsecutiveToolResults(current, options.collapse ?? undefined);\n\t\tcurrent = collapsed.messages;\n\t\ttokensSaved += collapsed.tokensSaved;\n\t\tgroupsCollapsed += collapsed.groups.length;\n\t}\n\tif (options.shrinkAssistant !== false) {\n\t\tconst shrunk = microCompactAssistantText(current, options.shrinkAssistant ?? undefined);\n\t\tcurrent = shrunk.messages;\n\t\ttokensSaved += shrunk.tokensSaved;\n\t\tmessagesShrunk += shrunk.messagesModified;\n\t}\n\tif (options.clearToolResults !== false) {\n\t\tconst cleared = clearOldToolResults(current, options.clearToolResults ?? undefined);\n\t\tcurrent = cleared.messages;\n\t\ttokensSaved += cleared.tokensSaved;\n\t\ttoolResultsCleared += cleared.toolResultsCleared;\n\t}\n\n\treturn { messages: current, tokensSaved, groupsCollapsed, messagesShrunk, toolResultsCleared };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"context-reduction.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/context-reduction.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Deterministic, no-LLM context reductions applied before compaction summarization.\n *\n * Ported from plugsuits' `context-collapse` and `micro-compact` patterns and\n * adapted to the senpi `AgentMessage` shape. Three independent transforms:\n *\n * 1. {@link collapseConsecutiveToolResults} — runs of same-kind read/grep/shell\n * tool result payloads are replaced with a single one-line label so the\n * summarizer pays for the shape, not for the bytes.\n * 2. {@link microCompactAssistantText} — older long assistant text answers are\n * truncated and tagged with a `[response shrunk]` marker.\n * 3. {@link clearOldToolResults} — keep the last N tool results in full, replace\n * older clearable tool result content with `[tool result cleared]`.\n *\n * Each transform is pure (`messages` in → new array out, no in-place mutation\n * beyond freshly cloned messages) and returns aggregated token-savings stats.\n *\n * {@link reduceContextMessages} composes the three transforms in order.\n */\n\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { AssistantMessage, ImageContent, TextContent, ToolResultMessage } from \"@earendil-works/pi-ai\";\n\nconst DEFAULT_READ_TOOL_NAMES = [\"read\", \"Read\", \"read_file\"];\nconst DEFAULT_SEARCH_TOOL_NAMES = [\"grep\", \"Grep\", \"glob\", \"Glob\"];\nconst DEFAULT_SHELL_TOOL_NAMES = [\"bash\", \"Bash\", \"shell\", \"shell_execute\"];\nconst DEFAULT_CLEARABLE_TOOL_NAMES = [\n\t\"read\",\n\t\"Read\",\n\t\"read_file\",\n\t\"write\",\n\t\"Write\",\n\t\"edit\",\n\t\"Edit\",\n\t\"grep\",\n\t\"Grep\",\n\t\"glob\",\n\t\"Glob\",\n\t\"bash\",\n\t\"Bash\",\n\t\"shell\",\n];\n\nconst DEFAULT_MIN_GROUP_SIZE = 2;\nconst DEFAULT_PROTECT_RECENT_MESSAGES = 5;\nconst DEFAULT_PROTECT_RECENT_TOKENS = 2000;\nconst DEFAULT_MAX_ASSISTANT_TEXT_TOKENS = 500;\nconst DEFAULT_MIN_SAVINGS_TOKENS = 100;\nconst DEFAULT_KEEP_RECENT_TOOL_RESULTS = 3;\nconst DEFAULT_CLEARED_PLACEHOLDER = \"[tool result cleared]\";\nconst DEFAULT_REPLACEMENT_TEMPLATE = \"[response shrunk — {original_tokens} → {shrunk_tokens} tokens]\";\n\nconst MAX_HINTS_IN_LABEL = 5;\nconst MAX_HINT_LENGTH = 80;\nconst SHRUNK_RESPONSE_RATIO = 0.3;\n\nexport type CollapsedGroupKind = \"read\" | \"search\" | \"shell\";\n\nexport interface CollapsedGroup {\n\ttype: CollapsedGroupKind;\n\tcount: number;\n\tlabel: string;\n\toriginalTokens: number;\n\tcollapsedTokens: number;\n}\n\nexport interface CollapseConsecutiveOptions {\n\tminGroupSize?: number;\n\tprotectRecentMessages?: number;\n\treadToolNames?: string[];\n\tsearchToolNames?: string[];\n\tshellToolNames?: string[];\n}\n\nexport interface CollapseConsecutiveResult {\n\tmessages: AgentMessage[];\n\tgroups: CollapsedGroup[];\n\ttokensSaved: number;\n}\n\nexport interface MicroCompactAssistantOptions {\n\tprotectRecentTokens?: number;\n\tmaxAssistantTextTokens?: number;\n\tminSavingsTokens?: number;\n\treplacementTemplate?: string;\n}\n\nexport interface MicroCompactAssistantResult {\n\tmessages: AgentMessage[];\n\ttokensSaved: number;\n\tmessagesModified: number;\n}\n\nexport interface ClearOldToolResultsOptions {\n\tkeepRecent?: number;\n\tclearableToolNames?: string[];\n\treplacementText?: string;\n}\n\nexport interface ClearOldToolResultsResult {\n\tmessages: AgentMessage[];\n\ttokensSaved: number;\n\ttoolResultsCleared: number;\n}\n\nexport interface ReduceContextOptions {\n\tcollapse?: false | CollapseConsecutiveOptions;\n\tshrinkAssistant?: false | MicroCompactAssistantOptions;\n\tclearToolResults?: false | ClearOldToolResultsOptions;\n}\n\nexport interface ReduceContextResult {\n\tmessages: AgentMessage[];\n\ttokensSaved: number;\n\tgroupsCollapsed: number;\n\tmessagesShrunk: number;\n\ttoolResultsCleared: number;\n}\n\n/**\n * Default options passed to {@link reduceContextMessages} when the builtin\n * compaction extension's `context` hook decides to run a reduction pass.\n *\n * Each value is chosen to be strictly more conservative than the corresponding\n * plugsuits default — protect more of the recent tail, raise the per-message\n * shrink threshold, and keep more recent tool results intact — so a single\n * shared default is safe to apply across normal coding sessions without making\n * targeted reductions less effective.\n */\nexport const BUILTIN_CONTEXT_REDUCTION_OPTIONS: ReduceContextOptions = {\n\tcollapse: {\n\t\tminGroupSize: DEFAULT_MIN_GROUP_SIZE,\n\t\tprotectRecentMessages: DEFAULT_PROTECT_RECENT_MESSAGES,\n\t},\n\tshrinkAssistant: {\n\t\tprotectRecentTokens: 3000,\n\t\tmaxAssistantTextTokens: 800,\n\t\tminSavingsTokens: DEFAULT_MIN_SAVINGS_TOKENS,\n\t},\n\tclearToolResults: {\n\t\tkeepRecent: 6,\n\t},\n};\n\nexport const BUILTIN_CONTEXT_REDUCTION_GATE_RATIO = 0.5;\n\nexport interface ShouldApplyContextReductionInput {\n\tusageTokens: number | null;\n\tcontextWindow: number;\n\tgateRatio?: number;\n\tisProviderNativeCompactionPath?: boolean;\n}\n\nexport function shouldApplyContextReduction(input: ShouldApplyContextReductionInput): boolean {\n\tconst gate = input.gateRatio ?? BUILTIN_CONTEXT_REDUCTION_GATE_RATIO;\n\tif (input.isProviderNativeCompactionPath === true) return false;\n\tif (input.usageTokens === null) return false;\n\tif (input.contextWindow <= 0) return false;\n\treturn input.usageTokens >= input.contextWindow * gate;\n}\n\nfunction approxTextTokens(text: string): number {\n\tif (!text) return 0;\n\treturn Math.ceil(text.length / 4);\n}\n\nfunction extractContentText(content: (TextContent | ImageContent)[] | undefined): string {\n\tif (!Array.isArray(content)) return \"\";\n\tlet out = \"\";\n\tfor (const part of content) {\n\t\tif (part.type === \"text\") out += part.text;\n\t}\n\treturn out;\n}\n\nfunction extractMessageText(message: AgentMessage): string {\n\tif (message.role === \"user\") {\n\t\tif (typeof message.content === \"string\") return message.content;\n\t\treturn extractContentText(message.content as (TextContent | ImageContent)[]);\n\t}\n\tif (message.role === \"assistant\") {\n\t\tlet out = \"\";\n\t\tfor (const block of message.content) {\n\t\t\tif (block.type === \"text\") out += block.text;\n\t\t\telse if (block.type === \"toolCall\") out += `${block.name} ${JSON.stringify(block.arguments)}`;\n\t\t}\n\t\treturn out;\n\t}\n\tif (message.role === \"toolResult\") {\n\t\treturn extractContentText(message.content);\n\t}\n\treturn \"\";\n}\n\ninterface ToolNameSets {\n\tread: Set<string>;\n\tsearch: Set<string>;\n\tshell: Set<string>;\n}\n\nfunction classifyTool(name: string, sets: ToolNameSets): CollapsedGroupKind | null {\n\tif (sets.read.has(name)) return \"read\";\n\tif (sets.search.has(name)) return \"search\";\n\tif (sets.shell.has(name)) return \"shell\";\n\treturn null;\n}\n\ninterface FirstToolCall {\n\tid: string;\n\tname: string;\n\targs: Record<string, unknown>;\n}\n\nfunction getFirstToolCallFromAssistant(message: AgentMessage): FirstToolCall | null {\n\tif (message.role !== \"assistant\") return null;\n\tfor (const block of message.content) {\n\t\tif (block.type === \"toolCall\") {\n\t\t\treturn { id: block.id, name: block.name, args: block.arguments as Record<string, unknown> };\n\t\t}\n\t}\n\treturn null;\n}\n\ninterface CollapsibleOperation {\n\ttype: CollapsedGroupKind;\n\ttoolName: string;\n\tassistantIndex: number;\n\tresultIndex: number;\n\thint?: string;\n\tresultText: string;\n}\n\nfunction truncateHint(value: string): string {\n\tif (value.length <= MAX_HINT_LENGTH) return value;\n\treturn `${value.slice(0, MAX_HINT_LENGTH - 1)}…`;\n}\n\nfunction extractHint(type: CollapsedGroupKind, args: Record<string, unknown>): string | undefined {\n\tif (type === \"read\") {\n\t\tconst path = args.path ?? args.file_path ?? args.filePath;\n\t\tif (typeof path === \"string\" && path.length > 0) return truncateHint(path);\n\t\treturn undefined;\n\t}\n\tif (type === \"search\") {\n\t\tconst path = typeof args.path === \"string\" ? args.path : undefined;\n\t\tconst pattern =\n\t\t\t(typeof args.pattern === \"string\" && args.pattern) ||\n\t\t\t(typeof args.glob === \"string\" && args.glob) ||\n\t\t\t(typeof args.query === \"string\" && args.query) ||\n\t\t\tundefined;\n\t\tif (path && pattern) return truncateHint(`${path}:${pattern}`);\n\t\tif (path) return truncateHint(path);\n\t\tif (pattern) return truncateHint(pattern as string);\n\t\treturn undefined;\n\t}\n\tconst command = args.command ?? args.cmd;\n\tif (typeof command === \"string\" && command.length > 0) return truncateHint(command);\n\treturn undefined;\n}\n\nfunction buildGroupLabel(type: CollapsedGroupKind, operations: CollapsibleOperation[]): string {\n\tconst hints: string[] = [];\n\tfor (const op of operations) {\n\t\tif (op.hint && hints.length < MAX_HINTS_IN_LABEL) hints.push(op.hint);\n\t}\n\tconst noun = type === \"read\" ? \"read results\" : type === \"search\" ? \"search results\" : \"shell results\";\n\tif (hints.length === 0) return `[${operations.length} ${noun}]`;\n\tconst more = operations.length - hints.length;\n\tconst moreSuffix = more > 0 ? `, and ${more} more` : \"\";\n\treturn `[${operations.length} ${noun}: ${hints.join(\", \")}${moreSuffix}]`;\n}\n\nfunction collectCollapsibleOperations(\n\tmessages: AgentMessage[],\n\tcollapseLimit: number,\n\tsets: ToolNameSets,\n): CollapsibleOperation[] {\n\tconst operations: CollapsibleOperation[] = [];\n\tlet i = 0;\n\twhile (i < collapseLimit) {\n\t\tconst assistant = messages[i];\n\t\tconst call = getFirstToolCallFromAssistant(assistant);\n\t\tif (!call) {\n\t\t\ti += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tconst next = messages[i + 1];\n\t\tconst resultInWindow = i + 1 < collapseLimit;\n\t\tif (next?.role !== \"toolResult\" || next.toolCallId !== call.id || !resultInWindow) {\n\t\t\ti += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tconst type = classifyTool(call.name, sets);\n\t\tif (!type) {\n\t\t\ti += 1;\n\t\t\tcontinue;\n\t\t}\n\t\toperations.push({\n\t\t\ttype,\n\t\t\ttoolName: call.name,\n\t\t\tassistantIndex: i,\n\t\t\tresultIndex: i + 1,\n\t\t\thint: extractHint(type, call.args),\n\t\t\tresultText: extractContentText((next as ToolResultMessage).content),\n\t\t});\n\t\ti += 2;\n\t}\n\treturn operations;\n}\n\nfunction groupConsecutiveOperations(operations: CollapsibleOperation[]): CollapsibleOperation[][] {\n\tconst groups: CollapsibleOperation[][] = [];\n\tlet current: CollapsibleOperation[] = [];\n\tfor (const op of operations) {\n\t\tif (current.length === 0) {\n\t\t\tcurrent.push(op);\n\t\t\tcontinue;\n\t\t}\n\t\tconst prev = current[current.length - 1];\n\t\tif (op.type === prev.type && op.assistantIndex === prev.resultIndex + 1) {\n\t\t\tcurrent.push(op);\n\t\t\tcontinue;\n\t\t}\n\t\tgroups.push(current);\n\t\tcurrent = [op];\n\t}\n\tif (current.length > 0) groups.push(current);\n\treturn groups;\n}\n\nexport function collapseConsecutiveToolResults(\n\tmessages: AgentMessage[],\n\toptions: CollapseConsecutiveOptions = {},\n): CollapseConsecutiveResult {\n\tconst minGroupSize = Math.max(1, options.minGroupSize ?? DEFAULT_MIN_GROUP_SIZE);\n\tconst protectRecentMessages = Math.max(0, options.protectRecentMessages ?? DEFAULT_PROTECT_RECENT_MESSAGES);\n\tconst sets: ToolNameSets = {\n\t\tread: new Set(options.readToolNames ?? DEFAULT_READ_TOOL_NAMES),\n\t\tsearch: new Set(options.searchToolNames ?? DEFAULT_SEARCH_TOOL_NAMES),\n\t\tshell: new Set(options.shellToolNames ?? DEFAULT_SHELL_TOOL_NAMES),\n\t};\n\n\tconst collapseLimit = Math.max(0, messages.length - protectRecentMessages);\n\tconst operations = collectCollapsibleOperations(messages, collapseLimit, sets);\n\tconst operationGroups = groupConsecutiveOperations(operations);\n\n\tconst collapsedGroups: CollapsedGroup[] = [];\n\tconst nextMessages = messages.slice();\n\tlet tokensSaved = 0;\n\n\tfor (const group of operationGroups) {\n\t\tif (group.length < minGroupSize) continue;\n\t\tconst label = buildGroupLabel(group[0].type, group);\n\t\tlet originalTokens = 0;\n\t\tlet collapsedTokens = 0;\n\t\tfor (const op of group) {\n\t\t\tconst original = approxTextTokens(op.resultText);\n\t\t\tconst collapsed = approxTextTokens(label);\n\t\t\toriginalTokens += original;\n\t\t\tcollapsedTokens += collapsed;\n\t\t\tconst result = nextMessages[op.resultIndex];\n\t\t\tif (result.role !== \"toolResult\") continue;\n\t\t\tconst images = result.content.filter((c): c is ImageContent => c.type === \"image\");\n\t\t\tnextMessages[op.resultIndex] = {\n\t\t\t\t...result,\n\t\t\t\tcontent: [{ type: \"text\", text: label } as TextContent, ...images],\n\t\t\t};\n\t\t}\n\t\ttokensSaved += Math.max(0, originalTokens - collapsedTokens);\n\t\tcollapsedGroups.push({\n\t\t\ttype: group[0].type,\n\t\t\tcount: group.length,\n\t\t\tlabel,\n\t\t\toriginalTokens,\n\t\t\tcollapsedTokens,\n\t\t});\n\t}\n\n\treturn { messages: nextMessages, groups: collapsedGroups, tokensSaved };\n}\n\nfunction resolveProtectedFromIndex(messages: AgentMessage[], protectRecentTokens: number): number {\n\tif (messages.length === 0) return 0;\n\tlet recentTokens = 0;\n\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\tconst tokens = approxTextTokens(extractMessageText(messages[i]));\n\t\tif (recentTokens + tokens > protectRecentTokens) return i + 1;\n\t\trecentTokens += tokens;\n\t\tif (i === 0) return 0;\n\t}\n\treturn messages.length;\n}\n\nfunction renderReplacementText(template: string, originalTokens: number, shrunkTokens: number): string {\n\treturn template\n\t\t.split(\"{original_tokens}\")\n\t\t.join(String(originalTokens))\n\t\t.split(\"{shrunk_tokens}\")\n\t\t.join(String(shrunkTokens));\n}\n\nfunction buildShrunkText(\n\toriginalText: string,\n\toriginalTokens: number,\n\tmaxAssistantTextTokens: number,\n\ttemplate: string,\n): { text: string; tokens: number } {\n\tconst targetTextTokens = Math.max(1, Math.floor(maxAssistantTextTokens * SHRUNK_RESPONSE_RATIO));\n\tconst ratio = originalTokens > 0 ? targetTextTokens / originalTokens : 0;\n\tconst targetChars = Math.max(0, Math.floor(originalText.length * ratio));\n\tconst truncatedText = originalText.slice(0, targetChars);\n\tlet shrunkTokens = 0;\n\tlet shrunkText = \"\";\n\tfor (let iteration = 0; iteration < 5; iteration += 1) {\n\t\tconst replacement = renderReplacementText(template, originalTokens, shrunkTokens);\n\t\tconst candidate = truncatedText.length > 0 ? `${truncatedText}\\n\\n${replacement}` : replacement;\n\t\tconst tokens = approxTextTokens(candidate);\n\t\tshrunkText = candidate;\n\t\tif (tokens === shrunkTokens) return { text: candidate, tokens };\n\t\tshrunkTokens = tokens;\n\t}\n\treturn { text: shrunkText, tokens: approxTextTokens(shrunkText) };\n}\n\nexport function microCompactAssistantText(\n\tmessages: AgentMessage[],\n\toptions: MicroCompactAssistantOptions = {},\n): MicroCompactAssistantResult {\n\tconst protectRecentTokens = Math.max(0, options.protectRecentTokens ?? DEFAULT_PROTECT_RECENT_TOKENS);\n\tconst maxAssistantTextTokens = Math.max(0, options.maxAssistantTextTokens ?? DEFAULT_MAX_ASSISTANT_TEXT_TOKENS);\n\tconst minSavingsTokens = Math.max(0, options.minSavingsTokens ?? DEFAULT_MIN_SAVINGS_TOKENS);\n\tconst template = options.replacementTemplate ?? DEFAULT_REPLACEMENT_TEMPLATE;\n\n\tconst protectedFromIndex = resolveProtectedFromIndex(messages, protectRecentTokens);\n\tconst result = messages.slice();\n\tlet messagesModified = 0;\n\tlet tokensSaved = 0;\n\n\tfor (let i = 0; i < protectedFromIndex; i += 1) {\n\t\tconst msg = result[i];\n\t\tif (msg.role !== \"assistant\") continue;\n\t\tconst assistant = msg as AssistantMessage;\n\t\tconst allText = assistant.content.length > 0 && assistant.content.every((c) => c.type === \"text\");\n\t\tif (!allText) continue;\n\t\tconst originalText = assistant.content.map((c) => (c.type === \"text\" ? c.text : \"\")).join(\"\\n\");\n\t\tconst originalTokens = approxTextTokens(originalText);\n\t\tif (originalTokens <= maxAssistantTextTokens) continue;\n\t\tconst shrunk = buildShrunkText(originalText, originalTokens, maxAssistantTextTokens, template);\n\t\tconst saved = originalTokens - shrunk.tokens;\n\t\tif (saved < minSavingsTokens) continue;\n\t\tresult[i] = {\n\t\t\t...assistant,\n\t\t\tcontent: [{ type: \"text\", text: shrunk.text } as TextContent],\n\t\t};\n\t\ttokensSaved += saved;\n\t\tmessagesModified += 1;\n\t}\n\n\treturn { messages: result, tokensSaved, messagesModified };\n}\n\nexport function clearOldToolResults(\n\tmessages: AgentMessage[],\n\toptions: ClearOldToolResultsOptions = {},\n): ClearOldToolResultsResult {\n\tconst keepRecent = Math.max(0, options.keepRecent ?? DEFAULT_KEEP_RECENT_TOOL_RESULTS);\n\tconst clearable = new Set(options.clearableToolNames ?? DEFAULT_CLEARABLE_TOOL_NAMES);\n\tconst replacementText = options.replacementText ?? DEFAULT_CLEARED_PLACEHOLDER;\n\n\tconst clearableIndices: number[] = [];\n\tfor (let i = 0; i < messages.length; i += 1) {\n\t\tconst msg = messages[i];\n\t\tif (msg.role === \"toolResult\" && clearable.has(msg.toolName)) {\n\t\t\tclearableIndices.push(i);\n\t\t}\n\t}\n\n\tconst clearUntil = Math.max(0, clearableIndices.length - keepRecent);\n\tif (clearUntil === 0) {\n\t\treturn { messages: messages.slice(), tokensSaved: 0, toolResultsCleared: 0 };\n\t}\n\n\tconst result = messages.slice();\n\tlet tokensSaved = 0;\n\tlet toolResultsCleared = 0;\n\tconst replacementTokens = approxTextTokens(replacementText);\n\n\tfor (let k = 0; k < clearUntil; k += 1) {\n\t\tconst idx = clearableIndices[k];\n\t\tconst msg = result[idx];\n\t\tif (msg.role !== \"toolResult\") continue;\n\t\tconst original = msg as ToolResultMessage;\n\t\tconst originalText = extractContentText(original.content);\n\t\tconst originalTokens = approxTextTokens(originalText);\n\t\tconst images = original.content.filter((c): c is ImageContent => c.type === \"image\");\n\t\tresult[idx] = {\n\t\t\t...original,\n\t\t\tcontent: [{ type: \"text\", text: replacementText } as TextContent, ...images],\n\t\t};\n\t\tconst savings = originalTokens - replacementTokens;\n\t\tif (savings > 0) tokensSaved += savings;\n\t\ttoolResultsCleared += 1;\n\t}\n\n\treturn { messages: result, tokensSaved, toolResultsCleared };\n}\n\nexport function reduceContextMessages(\n\tmessages: AgentMessage[],\n\toptions: ReduceContextOptions = {},\n): ReduceContextResult {\n\tlet current = messages;\n\tlet tokensSaved = 0;\n\tlet groupsCollapsed = 0;\n\tlet messagesShrunk = 0;\n\tlet toolResultsCleared = 0;\n\n\tif (options.collapse !== false) {\n\t\tconst collapsed = collapseConsecutiveToolResults(current, options.collapse ?? undefined);\n\t\tcurrent = collapsed.messages;\n\t\ttokensSaved += collapsed.tokensSaved;\n\t\tgroupsCollapsed += collapsed.groups.length;\n\t}\n\tif (options.shrinkAssistant !== false) {\n\t\tconst shrunk = microCompactAssistantText(current, options.shrinkAssistant ?? undefined);\n\t\tcurrent = shrunk.messages;\n\t\ttokensSaved += shrunk.tokensSaved;\n\t\tmessagesShrunk += shrunk.messagesModified;\n\t}\n\tif (options.clearToolResults !== false) {\n\t\tconst cleared = clearOldToolResults(current, options.clearToolResults ?? undefined);\n\t\tcurrent = cleared.messages;\n\t\ttokensSaved += cleared.tokensSaved;\n\t\ttoolResultsCleared += cleared.toolResultsCleared;\n\t}\n\n\treturn { messages: current, tokensSaved, groupsCollapsed, messagesShrunk, toolResultsCleared };\n}\n"]}
|