@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":"runtime.js","sourceRoot":"","sources":["../../../src/modes/app-server/runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { ENV_SESSION_DIR, getAgentDir } from \"../../config.ts\";\nimport { getMcpService } from \"../../core/extensions/builtin/mcp/service.ts\";\nimport { DefaultResourceLoader } from \"../../core/resource-loader.ts\";\nimport { type CreateAgentSessionOptions, createAgentSession } from \"../../core/sdk.ts\";\nimport type { RpcNotification } from \"./rpc/envelope.ts\";\nimport { createRegistry, type MethodRegistry, registerExtensionRequestMethod } from \"./rpc/registry.ts\";\nimport { registerFuzzyFileSearchMethods } from \"./search/fuzzy-search-methods.ts\";\nimport { FuzzyFileSearchService } from \"./search/fuzzy-search-service.ts\";\nimport { ApprovalBridge, createAppServerUIContext } from \"./server/approvals.ts\";\nimport { NotificationRouter } from \"./server/notifications.ts\";\nimport type { ServerCore } from \"./server/server-core.ts\";\nimport { registerAppServerSkillMethods } from \"./server/skills.ts\";\nimport { connectionId } from \"./threads/handler-params.ts\";\nimport { registerThreadLifecycleHandlers, type ThreadLifecycleController } from \"./threads/handlers.ts\";\nimport { createMcpWireStatusAdapter, createProcessMcpWireStatusAdapter } from \"./threads/mcp-wire-status.ts\";\nimport { type AppServerSessionResult, ThreadNotFoundError, ThreadRegistry } from \"./threads/registry.ts\";\nimport { TurnLog } from \"./threads/turn-log.ts\";\nimport { createTurnEngine, type TurnEngineApi } from \"./threads/turns.ts\";\nimport {\n\tcreateModeTurnStore,\n\tcreateRoutedServerCore,\n\tregisterLoadedThreadObjectListHandler,\n\tturnInterruptParams,\n\tturnStartParams,\n\tturnSteerParams,\n} from \"./turn-adapter.ts\";\n\nexport type AppServerRuntime = {\n\treadonly core: ServerCore;\n\treadonly threads: ThreadRegistry;\n\treadonly turnLog: TurnLog;\n\treadonly turns: TurnEngineApi;\n\treadonly dispose: () => void;\n};\n\nexport function createAppServerRuntime(requestShutdown: (reason: string) => void): AppServerRuntime {\n\tconst notifications = new NotificationRouter();\n\tconst registry = createRegistry();\n\tconst fuzzySearch = new FuzzyFileSearchService({\n\t\tbroadcast: (notification) => notifications.broadcast(notification),\n\t});\n\tregisterFuzzyFileSearchMethods(registry, fuzzySearch);\n\tlet threads: ThreadRegistry;\n\tconst processMcpWireStatusAdapter = createProcessMcpWireStatusAdapter({\n\t\tagentDir: getAgentDir(),\n\t\tcwd: process.cwd(),\n\t\tenv: process.env,\n\t});\n\tconst approvals = new ApprovalBridge((threadId, message) => {\n\t\tlet subscriberCount = 0;\n\t\ttry {\n\t\t\tsubscriberCount = threads.getLoadedThread(threadId).subscribers.size;\n\t\t} catch (error: unknown) {\n\t\t\tif (error instanceof ThreadNotFoundError) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t\tnotifications.toThread(threadId, message);\n\t\treturn subscriberCount;\n\t});\n\tlet lifecycle: ThreadLifecycleController | undefined;\n\tthreads = new ThreadRegistry({\n\t\tagentDir: getAgentDir(),\n\t\tsessionDir: process.env[ENV_SESSION_DIR],\n\t\tcreateSession: (options) => createBoundAppServerSession(options, approvals, notifications, requestShutdown),\n\t\tmcpWireStatusAdapter: processMcpWireStatusAdapter,\n\t});\n\tregisterExtensionRequestMethod(registry, (threadId) => threads.getLoadedThread(threadId).session);\n\tconst core = createRoutedServerCore(\n\t\tregistry,\n\t\tnotifications,\n\t\tapprovals,\n\t\t(threadId) => {\n\t\t\tlifecycle?.scheduleIdleUnloadForThread(threadId);\n\t\t},\n\t\t{\n\t\t\tcodexHome: getAgentDir(),\n\t\t\tserverCwd: process.cwd(),\n\t\t\tthreads,\n\t\t},\n\t);\n\tregisterAppServerSkillMethods(registry, {\n\t\tagentDir: getAgentDir(),\n\t\tserverCwd: process.cwd(),\n\t\tthreads,\n\t\tresourceLoaderFactory: async (cwd) => {\n\t\t\tconst loader = new DefaultResourceLoader({ cwd, agentDir: getAgentDir() });\n\t\t\tawait loader.reload();\n\t\t\treturn loader;\n\t\t},\n\t});\n\tconst turnLog = new TurnLog();\n\tconst turns = createTurnEngine({\n\t\tstore: createModeTurnStore(threads),\n\t\tturnLog,\n\t\temitToThread: (threadId, notification) => notifications.toThread(threadId, notification),\n\t\tbroadcast: (notification) => notifications.broadcast(notification),\n\t});\n\tregisterTurnHandlers(registry, turns, core);\n\n\tlifecycle = registerThreadLifecycleHandlers(registry, {\n\t\tthreads,\n\t\tturnLog,\n\t\tnotifications,\n\t\tdeferUntilResponded: (connectionId, action) => core.deferUntilResponded(connectionId, action),\n\t\tobserveThread: (threadId) => turns.observeThread(threadId),\n\t\tidleUnloadMinutes: 30,\n\t\treplayPendingApprovals: (threadId) => {\n\t\t\tapprovals.replayPendingForThread(threadId);\n\t\t},\n\t});\n\tregisterLoadedThreadObjectListHandler(registry, threads);\n\n\treturn {\n\t\tcore,\n\t\tthreads,\n\t\tturnLog,\n\t\tturns,\n\t\tdispose: () => {\n\t\t\tfuzzySearch.dispose();\n\t\t\tlifecycle?.dispose();\n\t\t},\n\t};\n}\n\nasync function createBoundAppServerSession(\n\toptions: CreateAgentSessionOptions,\n\tapprovals: ApprovalBridge,\n\tnotifications: NotificationRouter,\n\trequestShutdown: (reason: string) => void,\n): Promise<AppServerSessionResult> {\n\tconst result = await createAgentSession(options);\n\tconst threadId = result.session.sessionId;\n\tconst initialNotifications: RpcNotification[] = [];\n\tlet bindingExtensions = true;\n\tresult.session.extensionRunner.onRpcEvent(({ name, data }) => {\n\t\tconst notification = {\n\t\t\tmethod: \"extension_event\",\n\t\t\tparams: { type: \"extension_event\", name, data, threadId },\n\t\t};\n\t\tif (bindingExtensions) {\n\t\t\tinitialNotifications.push(notification);\n\t\t\treturn;\n\t\t}\n\t\tnotifications.toThread(threadId, notification);\n\t});\n\tawait result.session.bindExtensions({\n\t\tuiContext: createAppServerUIContext(approvals, threadId),\n\t\tmode: \"app-server\",\n\t\tshutdownHandler: () => requestShutdown(\"extension shutdown\"),\n\t\tonError: (error) => {\n\t\t\tnotifications.toThread(threadId, { method: \"error\", params: error });\n\t\t},\n\t});\n\tbindingExtensions = false;\n\t// The MCP service captures this session's attach state under its session id.\n\t// Convert that captured state into a session-owned adapter before the entry is\n\t// registered; later requests never consult the service-global lifecycle view.\n\tconst mcpService = getMcpService();\n\tconst mcpWireStatusAdapter = createMcpWireStatusAdapter(mcpService.getWireStatusSnapshot(threadId));\n\tresult.session.subscribe((event) => {\n\t\tif (event.type === \"agent_end\") {\n\t\t\tapprovals.cancelPendingForThread(threadId);\n\t\t}\n\t});\n\treturn { ...result, initialNotifications, mcpWireStatusAdapter };\n}\n\nfunction registerTurnHandlers(registry: MethodRegistry, turns: TurnEngineApi, core: ServerCore): void {\n\tconst deferForResponse = async <T>(\n\t\tconnection: Parameters<MethodRegistry[\"dispatch\"]>[0],\n\t\trun: (defer: (action: () => void) => boolean) => Promise<T>,\n\t): Promise<T> => {\n\t\tconst actions: Array<() => void> = [];\n\t\tconst result = await run((action) => {\n\t\t\tactions.push(action);\n\t\t\treturn true;\n\t\t});\n\t\tfor (const action of actions) core.deferUntilResponded(connectionId(connection), action);\n\t\treturn result;\n\t};\n\tregistry.register(\"turn/start\", {\n\t\tscope: \"thread\",\n\t\thandler: (context) =>\n\t\t\tdeferForResponse(context.connection, (defer) => turns.startTurn(turnStartParams(context.request), defer)),\n\t});\n\tregistry.register(\"turn/steer\", {\n\t\tscope: \"thread\",\n\t\thandler: (context) => turns.steerTurn(turnSteerParams(context.request)),\n\t});\n\tregistry.register(\"turn/interrupt\", {\n\t\tscope: \"thread\",\n\t\thandler: (context) =>\n\t\t\tdeferForResponse(context.connection, (defer) =>\n\t\t\t\tturns.interruptTurn(turnInterruptParams(context.request), defer),\n\t\t\t),\n\t});\n}\n"]}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/modes/app-server/runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { ENV_SESSION_DIR, getAgentDir } from \"../../config.ts\";\nimport { getMcpService } from \"../../core/extensions/builtin/mcp/service.ts\";\nimport { DefaultResourceLoader } from \"../../core/resource-loader.ts\";\nimport { type CreateAgentSessionOptions, createAgentSession } from \"../../core/sdk.ts\";\nimport type { RpcNotification } from \"./rpc/envelope.ts\";\nimport { createRegistry, type MethodRegistry, registerExtensionRequestMethod } from \"./rpc/registry.ts\";\nimport { registerFuzzyFileSearchMethods } from \"./search/fuzzy-search-methods.ts\";\nimport { FuzzyFileSearchService } from \"./search/fuzzy-search-service.ts\";\nimport { ApprovalBridge, createAppServerUIContext } from \"./server/approvals.ts\";\nimport { NotificationRouter, type RouterOutboundMessage } from \"./server/notifications.ts\";\nimport type { ServerCore } from \"./server/server-core.ts\";\nimport { registerAppServerSkillMethods } from \"./server/skills.ts\";\nimport { UserInputBridge } from \"./server/user-input-bridge.ts\";\nimport { connectionId } from \"./threads/handler-params.ts\";\nimport { registerThreadLifecycleHandlers, type ThreadLifecycleController } from \"./threads/handlers.ts\";\nimport { createMcpWireStatusAdapter, createProcessMcpWireStatusAdapter } from \"./threads/mcp-wire-status.ts\";\nimport { type AppServerSessionResult, ThreadNotFoundError, ThreadRegistry } from \"./threads/registry.ts\";\nimport { TurnLog } from \"./threads/turn-log.ts\";\nimport { createTurnEngine, type TurnEngineApi } from \"./threads/turns.ts\";\nimport {\n\tcreateModeTurnStore,\n\tcreateRoutedServerCore,\n\tregisterLoadedThreadObjectListHandler,\n\tturnInterruptParams,\n\tturnStartParams,\n\tturnSteerParams,\n} from \"./turn-adapter.ts\";\n\nexport type AppServerRuntime = {\n\treadonly core: ServerCore;\n\treadonly threads: ThreadRegistry;\n\treadonly turnLog: TurnLog;\n\treadonly turns: TurnEngineApi;\n\treadonly dispose: () => void;\n};\n\nexport function createAppServerRuntime(requestShutdown: (reason: string) => void): AppServerRuntime {\n\tconst notifications = new NotificationRouter();\n\tconst registry = createRegistry();\n\tconst fuzzySearch = new FuzzyFileSearchService({\n\t\tbroadcast: (notification) => notifications.broadcast(notification),\n\t});\n\tregisterFuzzyFileSearchMethods(registry, fuzzySearch);\n\tlet threads: ThreadRegistry;\n\tconst processMcpWireStatusAdapter = createProcessMcpWireStatusAdapter({\n\t\tagentDir: getAgentDir(),\n\t\tcwd: process.cwd(),\n\t\tenv: process.env,\n\t});\n\tconst sendToSubscribers = (threadId: string, message: RouterOutboundMessage): number => {\n\t\tlet subscriberCount = 0;\n\t\ttry {\n\t\t\tsubscriberCount = threads.getLoadedThread(threadId).subscribers.size;\n\t\t} catch (error: unknown) {\n\t\t\tif (error instanceof ThreadNotFoundError) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t\tnotifications.toThread(threadId, message);\n\t\treturn subscriberCount;\n\t};\n\tconst approvals = new ApprovalBridge(sendToSubscribers);\n\tconst userInput = new UserInputBridge(sendToSubscribers);\n\tlet lifecycle: ThreadLifecycleController | undefined;\n\tthreads = new ThreadRegistry({\n\t\tagentDir: getAgentDir(),\n\t\tsessionDir: process.env[ENV_SESSION_DIR],\n\t\tcreateSession: (options) =>\n\t\t\tcreateBoundAppServerSession(options, approvals, notifications, requestShutdown, userInput, (threadId) => {\n\t\t\t\ttry {\n\t\t\t\t\treturn threads.getLoadedThread(threadId).activeTurn?.turnId ?? \"turn-user-input\";\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (error instanceof ThreadNotFoundError) return \"turn-user-input\";\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}),\n\t\tmcpWireStatusAdapter: processMcpWireStatusAdapter,\n\t});\n\tregisterExtensionRequestMethod(registry, (threadId) => threads.getLoadedThread(threadId).session);\n\tconst core = createRoutedServerCore(\n\t\tregistry,\n\t\tnotifications,\n\t\tapprovals,\n\t\t(threadId) => {\n\t\t\tlifecycle?.scheduleIdleUnloadForThread(threadId);\n\t\t},\n\t\t{\n\t\t\tcodexHome: getAgentDir(),\n\t\t\tserverCwd: process.cwd(),\n\t\t\tthreads,\n\t\t},\n\t\tuserInput,\n\t);\n\tregisterAppServerSkillMethods(registry, {\n\t\tagentDir: getAgentDir(),\n\t\tserverCwd: process.cwd(),\n\t\tthreads,\n\t\tresourceLoaderFactory: async (cwd) => {\n\t\t\tconst loader = new DefaultResourceLoader({ cwd, agentDir: getAgentDir() });\n\t\t\tawait loader.reload();\n\t\t\treturn loader;\n\t\t},\n\t});\n\tconst turnLog = new TurnLog();\n\tconst turns = createTurnEngine({\n\t\tstore: createModeTurnStore(threads),\n\t\tturnLog,\n\t\temitToThread: (threadId, notification) => notifications.toThread(threadId, notification),\n\t\tbroadcast: (notification) => notifications.broadcast(notification),\n\t});\n\tregisterTurnHandlers(registry, turns, core);\n\n\tlifecycle = registerThreadLifecycleHandlers(registry, {\n\t\tthreads,\n\t\tturnLog,\n\t\tnotifications,\n\t\tdeferUntilResponded: (connectionId, action) => core.deferUntilResponded(connectionId, action),\n\t\tobserveThread: (threadId) => turns.observeThread(threadId),\n\t\tidleUnloadMinutes: 30,\n\t\treplayPendingApprovals: (threadId) => {\n\t\t\tapprovals.replayPendingForThread(threadId);\n\t\t\tuserInput.replayPendingForThread(threadId);\n\t\t},\n\t});\n\tregisterLoadedThreadObjectListHandler(registry, threads);\n\n\treturn {\n\t\tcore,\n\t\tthreads,\n\t\tturnLog,\n\t\tturns,\n\t\tdispose: () => {\n\t\t\tfor (const thread of threads.listLoaded()) userInput.cancelPendingForThread(thread.id);\n\t\t\tfuzzySearch.dispose();\n\t\t\tlifecycle?.dispose();\n\t\t},\n\t};\n}\n\nasync function createBoundAppServerSession(\n\toptions: CreateAgentSessionOptions,\n\tapprovals: ApprovalBridge,\n\tnotifications: NotificationRouter,\n\trequestShutdown: (reason: string) => void,\n\tuserInput: UserInputBridge,\n\tgetTurnId: (threadId: string) => string,\n): Promise<AppServerSessionResult> {\n\tconst result = await createAgentSession(options);\n\tconst threadId = result.session.sessionId;\n\tconst initialNotifications: RpcNotification[] = [];\n\tlet bindingExtensions = true;\n\tresult.session.extensionRunner.onRpcEvent(({ name, data }) => {\n\t\tconst notification = {\n\t\t\tmethod: \"extension_event\",\n\t\t\tparams: { type: \"extension_event\", name, data, threadId },\n\t\t};\n\t\tif (bindingExtensions) {\n\t\t\tinitialNotifications.push(notification);\n\t\t\treturn;\n\t\t}\n\t\tnotifications.toThread(threadId, notification);\n\t});\n\tawait result.session.bindExtensions({\n\t\tuiContext: createAppServerUIContext(approvals, threadId, userInput, () => getTurnId(threadId)),\n\t\tmode: \"app-server\",\n\t\tshutdownHandler: () => requestShutdown(\"extension shutdown\"),\n\t\tonError: (error) => {\n\t\t\tnotifications.toThread(threadId, { method: \"error\", params: error });\n\t\t},\n\t});\n\tbindingExtensions = false;\n\t// The MCP service captures this session's attach state under its session id.\n\t// Convert that captured state into a session-owned adapter before the entry is\n\t// registered; later requests never consult the service-global lifecycle view.\n\tconst mcpService = getMcpService();\n\tconst mcpWireStatusAdapter = createMcpWireStatusAdapter(mcpService.getWireStatusSnapshot(threadId));\n\tresult.session.subscribe((event) => {\n\t\tif (event.type === \"agent_end\") {\n\t\t\tapprovals.cancelPendingForThread(threadId);\n\t\t\tuserInput.cancelPendingForThread(threadId);\n\t\t}\n\t});\n\treturn { ...result, initialNotifications, mcpWireStatusAdapter };\n}\n\nfunction registerTurnHandlers(registry: MethodRegistry, turns: TurnEngineApi, core: ServerCore): void {\n\tconst deferForResponse = async <T>(\n\t\tconnection: Parameters<MethodRegistry[\"dispatch\"]>[0],\n\t\trun: (defer: (action: () => void) => boolean) => Promise<T>,\n\t): Promise<T> => {\n\t\tconst actions: Array<() => void> = [];\n\t\tconst result = await run((action) => {\n\t\t\tactions.push(action);\n\t\t\treturn true;\n\t\t});\n\t\tfor (const action of actions) core.deferUntilResponded(connectionId(connection), action);\n\t\treturn result;\n\t};\n\tregistry.register(\"turn/start\", {\n\t\tscope: \"thread\",\n\t\thandler: (context) =>\n\t\t\tdeferForResponse(context.connection, (defer) => turns.startTurn(turnStartParams(context.request), defer)),\n\t});\n\tregistry.register(\"turn/steer\", {\n\t\tscope: \"thread\",\n\t\thandler: (context) => turns.steerTurn(turnSteerParams(context.request)),\n\t});\n\tregistry.register(\"turn/interrupt\", {\n\t\tscope: \"thread\",\n\t\thandler: (context) =>\n\t\t\tdeferForResponse(context.connection, (defer) =>\n\t\t\t\tturns.interruptTurn(turnInterruptParams(context.request), defer),\n\t\t\t),\n\t});\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fuzzy-files.js","sourceRoot":"","sources":["../../../../src/modes/app-server/search/fuzzy-files.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Dirent } from \"node:fs\";\nimport { lstat, readdir } from \"node:fs/promises\";\nimport { basename, join, relative, resolve, sep } from \"node:path\";\nimport type { FuzzyFileSearchMatchType, FuzzyFileSearchResult } from \"../protocol/fuzzy-search.ts\";\nimport { addGitignoreScope, type IgnoreScope, isIgnored } from \"./gitignore.ts\";\n\nexport const FUZZY_SEARCH_MAX_DEPTH = 12;\nexport const FUZZY_SEARCH_MAX_VISITED_ENTRIES = 50_000;\nexport const FUZZY_SEARCH_RESULT_LIMIT = 50;\n\nconst FILENAME_MATCH_BONUS = 1_000_000;\nconst CHARACTER_MATCH_SCORE = 10;\nconst CONTIGUOUS_MATCH_BONUS = 20;\nconst BOUNDARY_MATCH_BONUS = 5;\nconst CANCELLATION_YIELD_INTERVAL = 256;\n\nexport type FuzzyFileEntry = {\n\treadonly root: string;\n\treadonly path: string;\n\treadonly matchType: FuzzyFileSearchMatchType;\n\treadonly fileName: string;\n};\n\nexport type FuzzyTraversalOptions = {\n\treadonly signal?: AbortSignal;\n\treadonly maxDepth?: number;\n\treadonly maxVisitedEntries?: number;\n};\n\ntype TraversalState = {\n\tvisitedEntries: number;\n\tstopped: boolean;\n};\n\ntype ScoredMatch = {\n\treadonly score: number;\n\treadonly indices: readonly number[];\n};\n\ntype NormalizedText = {\n\treadonly value: string;\n\treadonly sourceIndices: readonly number[];\n};\n\nexport async function collectFuzzyFileEntries(\n\troots: readonly string[],\n\toptions: FuzzyTraversalOptions = {},\n): Promise<readonly FuzzyFileEntry[]> {\n\tconst entries: FuzzyFileEntry[] = [];\n\tconst state: TraversalState = { visitedEntries: 0, stopped: false };\n\tconst maxDepth = options.maxDepth ?? FUZZY_SEARCH_MAX_DEPTH;\n\tconst maxVisitedEntries = options.maxVisitedEntries ?? FUZZY_SEARCH_MAX_VISITED_ENTRIES;\n\tfor (const root of roots) {\n\t\tif (options.signal?.aborted || state.stopped) break;\n\t\tconst absoluteRoot = resolve(root);\n\t\tconst rootStat = await readableStat(absoluteRoot);\n\t\tif (!rootStat?.isDirectory() || rootStat.isSymbolicLink()) continue;\n\t\tawait walkDirectory({\n\t\t\twireRoot: root,\n\t\t\tabsoluteRoot,\n\t\t\tabsoluteDirectory: absoluteRoot,\n\t\t\tdepth: 0,\n\t\t\tmatchers: [],\n\t\t\tentries,\n\t\t\tstate,\n\t\t\tsignal: options.signal,\n\t\t\tmaxDepth,\n\t\t\tmaxVisitedEntries,\n\t\t});\n\t}\n\treturn entries;\n}\n\nexport function rankFuzzyFileEntries(\n\tquery: string,\n\tentries: readonly FuzzyFileEntry[],\n): readonly FuzzyFileSearchResult[] {\n\tif (query.length === 0) return [];\n\tconst results: FuzzyFileSearchResult[] = [];\n\tfor (const entry of entries) {\n\t\tconst filenameMatch = scoreSubsequence(entry.fileName, query);\n\t\tconst pathMatch = filenameMatch ?? scoreSubsequence(entry.path, query);\n\t\tif (!pathMatch) continue;\n\t\tconst filenameOffset = Array.from(entry.path).length - Array.from(entry.fileName).length;\n\t\tconst indices = filenameMatch ? filenameMatch.indices.map((index) => index + filenameOffset) : pathMatch.indices;\n\t\tresults.push({\n\t\t\troot: entry.root,\n\t\t\tpath: entry.path,\n\t\t\tmatch_type: entry.matchType,\n\t\t\tfile_name: entry.fileName,\n\t\t\tscore: pathMatch.score + (filenameMatch ? FILENAME_MATCH_BONUS : 0),\n\t\t\tindices,\n\t\t});\n\t}\n\tresults.sort(compareResults);\n\treturn results.slice(0, FUZZY_SEARCH_RESULT_LIMIT);\n}\n\nasync function walkDirectory(input: {\n\treadonly wireRoot: string;\n\treadonly absoluteRoot: string;\n\treadonly absoluteDirectory: string;\n\treadonly depth: number;\n\treadonly matchers: readonly IgnoreScope[];\n\treadonly entries: FuzzyFileEntry[];\n\treadonly state: TraversalState;\n\treadonly signal: AbortSignal | undefined;\n\treadonly maxDepth: number;\n\treadonly maxVisitedEntries: number;\n}): Promise<void> {\n\tconst matchers = await addGitignoreScope(input.matchers, input.absoluteDirectory);\n\tconst directoryEntries = await readableDirectory(input.absoluteDirectory);\n\tdirectoryEntries.sort((left, right) => compareText(left.name, right.name));\n\tfor (const directoryEntry of directoryEntries) {\n\t\tif (input.signal?.aborted || input.state.stopped) return;\n\t\tif (input.state.visitedEntries >= input.maxVisitedEntries) {\n\t\t\tinput.state.stopped = true;\n\t\t\treturn;\n\t\t}\n\t\tinput.state.visitedEntries += 1;\n\t\tif (directoryEntry.name === \".git\" || directoryEntry.name === \"node_modules\") continue;\n\t\tif (directoryEntry.isSymbolicLink()) continue;\n\t\tconst isDirectory = directoryEntry.isDirectory();\n\t\tif (!isDirectory && !directoryEntry.isFile()) continue;\n\t\tconst absolutePath = join(input.absoluteDirectory, directoryEntry.name);\n\t\tconst relativePath = toPosixPath(relative(input.absoluteRoot, absolutePath));\n\t\tif (isIgnored(matchers, absolutePath, isDirectory)) continue;\n\t\tinput.entries.push({\n\t\t\troot: input.wireRoot,\n\t\t\tpath: relativePath,\n\t\t\tmatchType: isDirectory ? \"directory\" : \"file\",\n\t\t\tfileName: basename(relativePath),\n\t\t});\n\t\tconst entryDepth = input.depth + 1;\n\t\tif (isDirectory && entryDepth < input.maxDepth) {\n\t\t\tawait walkDirectory({ ...input, absoluteDirectory: absolutePath, depth: entryDepth, matchers });\n\t\t}\n\t\tif (input.state.visitedEntries % CANCELLATION_YIELD_INTERVAL === 0) await yieldToEventLoop();\n\t}\n}\n\nfunction scoreSubsequence(candidate: string, query: string): ScoredMatch | undefined {\n\tconst normalizedCandidate = normalizeText(candidate);\n\tconst normalizedQuery = query.toLowerCase();\n\tconst contiguousStart = normalizedCandidate.value.indexOf(normalizedQuery);\n\tconst normalizedIndices: number[] = [];\n\tif (contiguousStart >= 0) {\n\t\tlet cursor = contiguousStart;\n\t\tfor (const character of normalizedQuery) {\n\t\t\tnormalizedIndices.push(cursor);\n\t\t\tcursor += character.length;\n\t\t}\n\t} else {\n\t\tlet cursor = 0;\n\t\tfor (const character of normalizedQuery) {\n\t\t\tconst matchIndex = normalizedCandidate.value.indexOf(character, cursor);\n\t\t\tif (matchIndex < 0) return undefined;\n\t\t\tnormalizedIndices.push(matchIndex);\n\t\t\tcursor = matchIndex + character.length;\n\t\t}\n\t}\n\tconst indices: number[] = [];\n\tfor (const normalizedIndex of normalizedIndices) {\n\t\tconst sourceIndex = normalizedCandidate.sourceIndices[normalizedIndex];\n\t\tif (sourceIndex === undefined) return undefined;\n\t\tif (indices.at(-1) !== sourceIndex) indices.push(sourceIndex);\n\t}\n\tconst candidateCharacters = Array.from(candidate);\n\tlet score = indices.length * CHARACTER_MATCH_SCORE;\n\tfor (let index = 0; index < indices.length; index++) {\n\t\tconst current = indices[index];\n\t\tif (current === undefined) continue;\n\t\tconst previous = indices[index - 1];\n\t\tif (previous !== undefined && current === previous + 1) score += CONTIGUOUS_MATCH_BONUS;\n\t\tif (current === 0 || isBoundary(candidateCharacters[current - 1])) score += BOUNDARY_MATCH_BONUS;\n\t}\n\treturn { score, indices };\n}\n\nfunction normalizeText(value: string): NormalizedText {\n\tconst sourceIndices: number[] = [];\n\tfor (const [sourceIndex, character] of Array.from(value).entries()) {\n\t\tfor (let index = 0; index < character.toLowerCase().length; index++) sourceIndices.push(sourceIndex);\n\t}\n\treturn { value: value.toLowerCase(), sourceIndices };\n}\n\nfunction compareResults(left: FuzzyFileSearchResult, right: FuzzyFileSearchResult): number {\n\tif (left.score !== right.score) return right.score - left.score;\n\treturn compareText(left.path, right.path);\n}\n\nfunction compareText(left: string, right: string): number {\n\tif (left < right) return -1;\n\tif (left > right) return 1;\n\treturn 0;\n}\n\nfunction isBoundary(character: string | undefined): boolean {\n\treturn character === \"/\" || character === \"-\" || character === \"_\" || character === \".\" || character === \" \";\n}\n\nasync function readableDirectory(path: string): Promise<Dirent[]> {\n\ttry {\n\t\treturn await readdir(path, { withFileTypes: true });\n\t} catch (error: unknown) {\n\t\tif (error instanceof Error) return [];\n\t\tthrow error;\n\t}\n}\n\nasync function readableStat(path: string): Promise<Awaited<ReturnType<typeof lstat>> | undefined> {\n\ttry {\n\t\treturn await lstat(path);\n\t} catch (error: unknown) {\n\t\tif (error instanceof Error) return undefined;\n\t\tthrow error;\n\t}\n}\n\nfunction toPosixPath(path: string): string {\n\treturn path.split(sep).join(\"/\");\n}\n\nfunction yieldToEventLoop(): Promise<void> {\n\treturn new Promise((resolve) => setImmediate(resolve));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"fuzzy-files.js","sourceRoot":"","sources":["../../../../src/modes/app-server/search/fuzzy-files.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Dirent } from \"node:fs\";\nimport { lstat, readdir } from \"node:fs/promises\";\nimport { basename, join, relative, resolve, sep } from \"node:path\";\nimport type { FuzzyFileSearchMatchType, FuzzyFileSearchResult } from \"../protocol/fuzzy-search.ts\";\nimport { addGitignoreScope, type IgnoreScope, isIgnored } from \"./gitignore.ts\";\n\nexport const FUZZY_SEARCH_MAX_DEPTH = 12;\nexport const FUZZY_SEARCH_MAX_VISITED_ENTRIES = 50_000;\nexport const FUZZY_SEARCH_RESULT_LIMIT = 50;\n\nconst FILENAME_MATCH_BONUS = 1_000_000;\nconst CHARACTER_MATCH_SCORE = 10;\nconst CONTIGUOUS_MATCH_BONUS = 20;\nconst BOUNDARY_MATCH_BONUS = 5;\nconst CANCELLATION_YIELD_INTERVAL = 256;\n\nexport type FuzzyFileEntry = {\n\treadonly root: string;\n\treadonly path: string;\n\treadonly matchType: FuzzyFileSearchMatchType;\n\treadonly fileName: string;\n};\n\nexport type FuzzyTraversalOptions = {\n\treadonly signal?: AbortSignal;\n\treadonly maxDepth?: number;\n\treadonly maxVisitedEntries?: number;\n};\n\ntype TraversalState = {\n\tvisitedEntries: number;\n\tstopped: boolean;\n};\n\ntype ScoredMatch = {\n\treadonly score: number;\n\treadonly indices: readonly number[];\n};\n\ntype NormalizedText = {\n\treadonly value: string;\n\treadonly sourceIndices: readonly number[];\n};\n\nexport async function collectFuzzyFileEntries(\n\troots: readonly string[],\n\toptions: FuzzyTraversalOptions = {},\n): Promise<readonly FuzzyFileEntry[]> {\n\tconst entries: FuzzyFileEntry[] = [];\n\tconst state: TraversalState = { visitedEntries: 0, stopped: false };\n\tconst maxDepth = options.maxDepth ?? FUZZY_SEARCH_MAX_DEPTH;\n\tconst maxVisitedEntries = options.maxVisitedEntries ?? FUZZY_SEARCH_MAX_VISITED_ENTRIES;\n\tfor (const root of roots) {\n\t\tif (options.signal?.aborted || state.stopped) break;\n\t\tconst absoluteRoot = resolve(root);\n\t\tconst rootStat = await readableStat(absoluteRoot);\n\t\tif (!rootStat?.isDirectory() || rootStat.isSymbolicLink()) continue;\n\t\tawait walkDirectory({\n\t\t\twireRoot: root,\n\t\t\tabsoluteRoot,\n\t\t\tabsoluteDirectory: absoluteRoot,\n\t\t\tdepth: 0,\n\t\t\tmatchers: [],\n\t\t\tentries,\n\t\t\tstate,\n\t\t\tsignal: options.signal,\n\t\t\tmaxDepth,\n\t\t\tmaxVisitedEntries,\n\t\t});\n\t}\n\treturn entries;\n}\n\nexport function rankFuzzyFileEntries(\n\tquery: string,\n\tentries: readonly FuzzyFileEntry[],\n): readonly FuzzyFileSearchResult[] {\n\tif (query.length === 0) return [];\n\tconst results: FuzzyFileSearchResult[] = [];\n\tfor (const entry of entries) {\n\t\tconst filenameMatch = scoreSubsequence(entry.fileName, query);\n\t\tconst pathMatch = filenameMatch ?? scoreSubsequence(entry.path, query);\n\t\tif (!pathMatch) continue;\n\t\tconst filenameOffset = Array.from(entry.path).length - Array.from(entry.fileName).length;\n\t\tconst indices = filenameMatch ? filenameMatch.indices.map((index) => index + filenameOffset) : pathMatch.indices;\n\t\tresults.push({\n\t\t\troot: entry.root,\n\t\t\tpath: entry.path,\n\t\t\tmatch_type: entry.matchType,\n\t\t\tfile_name: entry.fileName,\n\t\t\tscore: pathMatch.score + (filenameMatch ? FILENAME_MATCH_BONUS : 0),\n\t\t\tindices,\n\t\t});\n\t}\n\tresults.sort(compareResults);\n\treturn results.slice(0, FUZZY_SEARCH_RESULT_LIMIT);\n}\n\nasync function walkDirectory(input: {\n\treadonly wireRoot: string;\n\treadonly absoluteRoot: string;\n\treadonly absoluteDirectory: string;\n\treadonly depth: number;\n\treadonly matchers: readonly IgnoreScope[];\n\treadonly entries: FuzzyFileEntry[];\n\treadonly state: TraversalState;\n\treadonly signal: AbortSignal | undefined;\n\treadonly maxDepth: number;\n\treadonly maxVisitedEntries: number;\n}): Promise<void> {\n\tconst matchers = await addGitignoreScope(input.matchers, input.absoluteDirectory);\n\tconst directoryEntries = await readableDirectory(input.absoluteDirectory);\n\tdirectoryEntries.sort((left, right) => compareText(left.name, right.name));\n\tfor (const directoryEntry of directoryEntries) {\n\t\tif (input.signal?.aborted || input.state.stopped) return;\n\t\tif (input.state.visitedEntries >= input.maxVisitedEntries) {\n\t\t\tinput.state.stopped = true;\n\t\t\treturn;\n\t\t}\n\t\tinput.state.visitedEntries += 1;\n\t\tif (directoryEntry.name === \".git\" || directoryEntry.name === \"node_modules\") continue;\n\t\tif (directoryEntry.isSymbolicLink()) continue;\n\t\tconst isDirectory = directoryEntry.isDirectory();\n\t\tif (!isDirectory && !directoryEntry.isFile()) continue;\n\t\tconst absolutePath = join(input.absoluteDirectory, directoryEntry.name);\n\t\tconst relativePath = toPosixPath(relative(input.absoluteRoot, absolutePath));\n\t\tif (isIgnored(matchers, absolutePath, isDirectory)) continue;\n\t\tinput.entries.push({\n\t\t\troot: input.wireRoot,\n\t\t\tpath: relativePath,\n\t\t\tmatchType: isDirectory ? \"directory\" : \"file\",\n\t\t\tfileName: basename(relativePath),\n\t\t});\n\t\tconst entryDepth = input.depth + 1;\n\t\tif (isDirectory && entryDepth < input.maxDepth) {\n\t\t\tawait walkDirectory({ ...input, absoluteDirectory: absolutePath, depth: entryDepth, matchers });\n\t\t}\n\t\tif (input.state.visitedEntries % CANCELLATION_YIELD_INTERVAL === 0) await yieldToEventLoop();\n\t}\n}\n\nfunction scoreSubsequence(candidate: string, query: string): ScoredMatch | undefined {\n\tconst normalizedCandidate = normalizeText(candidate);\n\tconst normalizedQuery = query.toLowerCase();\n\tconst contiguousStart = normalizedCandidate.value.indexOf(normalizedQuery);\n\tconst normalizedIndices: number[] = [];\n\tif (contiguousStart >= 0) {\n\t\tlet cursor = contiguousStart;\n\t\tfor (const character of normalizedQuery) {\n\t\t\tnormalizedIndices.push(cursor);\n\t\t\tcursor += character.length;\n\t\t}\n\t} else {\n\t\tlet cursor = 0;\n\t\tfor (const character of normalizedQuery) {\n\t\t\tconst matchIndex = normalizedCandidate.value.indexOf(character, cursor);\n\t\t\tif (matchIndex < 0) return undefined;\n\t\t\tnormalizedIndices.push(matchIndex);\n\t\t\tcursor = matchIndex + character.length;\n\t\t}\n\t}\n\tconst indices: number[] = [];\n\tfor (const normalizedIndex of normalizedIndices) {\n\t\tconst sourceIndex = normalizedCandidate.sourceIndices[normalizedIndex];\n\t\tif (sourceIndex === undefined) return undefined;\n\t\tif (indices.at(-1) !== sourceIndex) indices.push(sourceIndex);\n\t}\n\tconst candidateCharacters = Array.from(candidate);\n\tlet score = indices.length * CHARACTER_MATCH_SCORE;\n\tfor (let index = 0; index < indices.length; index++) {\n\t\tconst current = indices[index];\n\t\tif (current === undefined) continue;\n\t\tconst previous = indices[index - 1];\n\t\tif (previous !== undefined && current === previous + 1) score += CONTIGUOUS_MATCH_BONUS;\n\t\tif (current === 0 || isBoundary(candidateCharacters[current - 1])) score += BOUNDARY_MATCH_BONUS;\n\t}\n\treturn { score, indices };\n}\n\nfunction normalizeText(value: string): NormalizedText {\n\tconst sourceIndices: number[] = [];\n\tfor (const [sourceIndex, character] of Array.from(value).entries()) {\n\t\tfor (let index = 0; index < character.toLowerCase().length; index++) sourceIndices.push(sourceIndex);\n\t}\n\treturn { value: value.toLowerCase(), sourceIndices };\n}\n\nfunction compareResults(left: FuzzyFileSearchResult, right: FuzzyFileSearchResult): number {\n\tif (left.score !== right.score) return right.score - left.score;\n\treturn compareText(left.path, right.path);\n}\n\nfunction compareText(left: string, right: string): number {\n\tif (left < right) return -1;\n\tif (left > right) return 1;\n\treturn 0;\n}\n\nfunction isBoundary(character: string | undefined): boolean {\n\treturn character === \"/\" || character === \"-\" || character === \"_\" || character === \".\" || character === \" \";\n}\n\nasync function readableDirectory(path: string): Promise<Dirent[]> {\n\ttry {\n\t\treturn await readdir(path, { withFileTypes: true });\n\t} catch (error: unknown) {\n\t\tif (error instanceof Error) return [];\n\t\tthrow error;\n\t}\n}\n\nasync function readableStat(path: string): Promise<Awaited<ReturnType<typeof lstat>> | undefined> {\n\ttry {\n\t\treturn await lstat(path);\n\t} catch (error: unknown) {\n\t\tif (error instanceof Error) return undefined;\n\t\tthrow error;\n\t}\n}\n\nfunction toPosixPath(path: string): string {\n\treturn path.split(sep).join(\"/\");\n}\n\nfunction yieldToEventLoop(): Promise<void> {\n\treturn new Promise((resolve) => setImmediate(resolve));\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fuzzy-search-service.d.ts","sourceRoot":"","sources":["../../../../src/modes/app-server/search/fuzzy-search-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,iCAAiC,EACjC,mCAAmC,EACnC,gCAAgC,EAChC,kCAAkC,EAClC,kCAAkC,EAClC,oCAAoC,EACpC,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAA2B,KAAK,cAAc,EAAwB,MAAM,kBAAkB,CAAC;AAEtG,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC,CAAC;AAEvH,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,cAAc,EAAE,KAAK,SAAS,qBAAqB,EAAE,CAAC;AAEtH,MAAM,MAAM,6BAA6B,GAAG;IAC3C,QAAQ,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC/D,QAAQ,CAAC,cAAc,CAAC,EAAE,kBAAkB,CAAC;IAC7C,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,CAAC;CACvC,CAAC;AAaF,qBAAa,sBAAsB;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6C;IACvE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAC7D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IACtE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAC7D,OAAO,CAAC,QAAQ,CAAS;
|
|
1
|
+
{"version":3,"file":"fuzzy-search-service.d.ts","sourceRoot":"","sources":["../../../../src/modes/app-server/search/fuzzy-search-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,iCAAiC,EACjC,mCAAmC,EACnC,gCAAgC,EAChC,kCAAkC,EAClC,kCAAkC,EAClC,oCAAoC,EACpC,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAA2B,KAAK,cAAc,EAAwB,MAAM,kBAAkB,CAAC;AAEtG,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC,CAAC;AAEvH,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,cAAc,EAAE,KAAK,SAAS,qBAAqB,EAAE,CAAC;AAEtH,MAAM,MAAM,6BAA6B,GAAG;IAC3C,QAAQ,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC/D,QAAQ,CAAC,cAAc,CAAC,EAAE,kBAAkB,CAAC;IAC7C,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,CAAC;CACvC,CAAC;AAaF,qBAAa,sBAAsB;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6C;IACvE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAC7D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IACtE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAC7D,OAAO,CAAC,QAAQ,CAAS;IAEzB,YAAY,OAAO,EAAE,6BAA6B,EAIjD;IAEK,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAoB5E;IAED,YAAY,CAAC,MAAM,EAAE,iCAAiC,GAAG,mCAAmC,CAgB3F;IAED,aAAa,CAAC,MAAM,EAAE,kCAAkC,GAAG,oCAAoC,CAS9F;IAED,WAAW,CAAC,MAAM,EAAE,gCAAgC,GAAG,kCAAkC,CAGxF;IAED,OAAO,IAAI,IAAI,CAQd;YAEa,YAAY;YAgBZ,WAAW;IAczB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,MAAM;CAGd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../../src/modes/app-server/server/account.ts"],"names":[],"mappings":"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","sourcesContent":["import { join } from \"node:path\";\nimport { getAgentDir } from \"../../../config.ts\";\nimport { AuthStorage } from \"../../../core/auth-storage.ts\";\nimport {\n\tgetCredentialAccounts,\n\tpinCredentialAccount,\n\tremoveCredentialAccount,\n} from \"../../../core/credential-accounts.ts\";\nimport type { ProviderAccountEvent } from \"../../../core/extensions/builtin/claude-sdk-oauth/account-events.ts\";\nimport { resolvePath } from \"../../../utils/paths.ts\";\nimport type {\n\tAccountReadParams,\n\tAccountReadResponse,\n\tProviderAccountsPinParams,\n\tProviderAccountsReadParams,\n\tProviderAccountsReadResponse,\n\tProviderAccountsRemoveParams,\n} from \"../protocol/account.ts\";\nimport type { RpcNotification } from \"../rpc/envelope.ts\";\nimport { RpcHandlerError } from \"../rpc/errors.ts\";\nimport type { MethodRegistry } from \"../rpc/registry.ts\";\n\nexport interface RegisterAppServerAccountMethodsOptions {\n\treadonly agentDir?: string;\n}\n\nconst RATE_LIMITS_AUTHENTICATION_MESSAGE = \"codex account authentication required to read rate limits\";\nconst TOKEN_USAGE_AUTHENTICATION_MESSAGE = \"codex account authentication required to read token usage\";\n\nexport function registerAppServerAccountMethods(\n\tregistry: MethodRegistry,\n\toptions: RegisterAppServerAccountMethodsOptions = {},\n): void {\n\tconst agentDir = resolvePath(options.agentDir ?? getAgentDir());\n\n\tregistry.register(\"account/read\", {\n\t\tscope: \"global\",\n\t\thandler: ({ request }) => {\n\t\t\tparseAccountReadParams(request.params);\n\t\t\treturn accountReadResponse(agentDir);\n\t\t},\n\t});\n\tregistry.register(\"account/providerAccounts/read\", {\n\t\tscope: \"global\",\n\t\thandler: ({ request }) => providerAccountsResponse(agentDir, parseProviderAccountsReadParams(request.params)),\n\t});\n\tregistry.register(\"account/providerAccounts/pin\", {\n\t\tscope: \"global\",\n\t\thandler: async ({ request }) => {\n\t\t\tconst params = parseProviderAccountsPinParams(request.params);\n\t\t\tawait pinCredentialAccount(AuthStorage.create(join(agentDir, \"auth.json\")), params.provider, params.name);\n\t\t\treturn {};\n\t\t},\n\t});\n\tregistry.register(\"account/providerAccounts/remove\", {\n\t\tscope: \"global\",\n\t\thandler: async ({ request }) => {\n\t\t\tconst params = parseProviderAccountsRemoveParams(request.params);\n\t\t\tawait removeCredentialAccount(AuthStorage.create(join(agentDir, \"auth.json\")), params.provider, params.name);\n\t\t\treturn {};\n\t\t},\n\t});\n\tregistry.register(\"account/rateLimits/read\", {\n\t\tscope: \"global\",\n\t\thandler: () => {\n\t\t\tthrow unauthenticatedAccountReadError(RATE_LIMITS_AUTHENTICATION_MESSAGE);\n\t\t},\n\t});\n\tregistry.register(\"account/usage/read\", {\n\t\tscope: \"global\",\n\t\thandler: () => {\n\t\t\tthrow unauthenticatedAccountReadError(TOKEN_USAGE_AUTHENTICATION_MESSAGE);\n\t\t},\n\t});\n}\n\nexport function providerAccountEventNotification(event: ProviderAccountEvent): RpcNotification {\n\tif (event.type === \"accounts_changed\") {\n\t\treturn { method: \"account/providerAccounts/updated\", params: { provider: event.provider } };\n\t}\n\treturn {\n\t\tmethod: \"account/providerAccounts/failover\",\n\t\tparams: { provider: event.provider, from: event.from, to: event.to, reason: event.reason },\n\t};\n}\n\nfunction accountReadResponse(agentDir: string): AccountReadResponse {\n\tconst credentials = AuthStorage.create(join(agentDir, \"auth.json\")).getAll();\n\treturn {\n\t\taccount: Object.keys(credentials).length > 0 ? { type: \"apiKey\" } : null,\n\t\trequiresOpenaiAuth: false,\n\t};\n}\n\nasync function providerAccountsResponse(\n\tagentDir: string,\n\tparams: ProviderAccountsReadParams,\n): Promise<ProviderAccountsReadResponse> {\n\tconst storage = AuthStorage.create(join(agentDir, \"auth.json\"));\n\treturn { provider: params.provider, accounts: await getCredentialAccounts(storage, params.provider) };\n}\n\nfunction parseAccountReadParams(value: unknown): AccountReadParams {\n\tif (value === undefined || value === null) return {};\n\tif (!isRecord(value)) {\n\t\tthrow new RpcHandlerError({ code: -32600, message: \"account/read params must be an object\" });\n\t}\n\tconst refreshToken = value.refreshToken;\n\tif (refreshToken !== undefined && typeof refreshToken !== \"boolean\") {\n\t\tthrow new RpcHandlerError({ code: -32600, message: \"account/read refreshToken must be a boolean\" });\n\t}\n\treturn refreshToken === undefined ? {} : { refreshToken };\n}\n\nfunction parseProviderAccountsReadParams(value: unknown): ProviderAccountsReadParams {\n\treturn { provider: providerFrom(value, \"account/providerAccounts/read\") };\n}\n\nfunction parseProviderAccountsPinParams(value: unknown): ProviderAccountsPinParams {\n\tconst params = requiredRecord(value, \"account/providerAccounts/pin\");\n\tif (typeof params.name !== \"string\" && params.name !== null) {\n\t\tthrow invalidParams(\"account/providerAccounts/pin name must be a string or null\");\n\t}\n\treturn { provider: requiredProvider(params, \"account/providerAccounts/pin\"), name: params.name };\n}\n\nfunction parseProviderAccountsRemoveParams(value: unknown): ProviderAccountsRemoveParams {\n\tconst params = requiredRecord(value, \"account/providerAccounts/remove\");\n\tif (typeof params.name !== \"string\" || params.name.length === 0) {\n\t\tthrow invalidParams(\"account/providerAccounts/remove name must be a non-empty string\");\n\t}\n\treturn { provider: requiredProvider(params, \"account/providerAccounts/remove\"), name: params.name };\n}\n\nfunction providerFrom(value: unknown, method: string): string {\n\treturn requiredProvider(requiredRecord(value, method), method);\n}\n\nfunction requiredProvider(params: Record<string, unknown>, method: string): string {\n\tif (typeof params.provider !== \"string\" || params.provider.length === 0) {\n\t\tthrow invalidParams(`${method} provider must be a non-empty string`);\n\t}\n\treturn params.provider;\n}\n\nfunction requiredRecord(value: unknown, method: string): Record<string, unknown> {\n\tif (!isRecord(value)) throw invalidParams(`${method} params must be an object`);\n\treturn value;\n}\n\nfunction invalidParams(message: string): RpcHandlerError {\n\treturn new RpcHandlerError({ code: -32600, message });\n}\n\nfunction unauthenticatedAccountReadError(message: string): RpcHandlerError {\n\treturn new RpcHandlerError({ code: -32600, message });\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../../src/modes/app-server/server/account.ts"],"names":[],"mappings":"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","sourcesContent":["import { join } from \"node:path\";\nimport { getAgentDir } from \"../../../config.ts\";\nimport { AuthStorage } from \"../../../core/auth-storage.ts\";\nimport {\n\tgetCredentialAccounts,\n\tpinCredentialAccount,\n\tremoveCredentialAccount,\n} from \"../../../core/credential-accounts.ts\";\nimport type { ProviderAccountEvent } from \"../../../core/extensions/builtin/claude-sdk-oauth/account-events.ts\";\nimport { resolvePath } from \"../../../utils/paths.ts\";\nimport type {\n\tAccountReadParams,\n\tAccountReadResponse,\n\tProviderAccountsPinParams,\n\tProviderAccountsReadParams,\n\tProviderAccountsReadResponse,\n\tProviderAccountsRemoveParams,\n} from \"../protocol/account.ts\";\nimport type { RpcNotification } from \"../rpc/envelope.ts\";\nimport { RpcHandlerError } from \"../rpc/errors.ts\";\nimport type { MethodRegistry } from \"../rpc/registry.ts\";\n\nexport interface RegisterAppServerAccountMethodsOptions {\n\treadonly agentDir?: string;\n}\n\nconst RATE_LIMITS_AUTHENTICATION_MESSAGE = \"codex account authentication required to read rate limits\";\nconst TOKEN_USAGE_AUTHENTICATION_MESSAGE = \"codex account authentication required to read token usage\";\n\nexport function registerAppServerAccountMethods(\n\tregistry: MethodRegistry,\n\toptions: RegisterAppServerAccountMethodsOptions = {},\n): void {\n\tconst agentDir = resolvePath(options.agentDir ?? getAgentDir());\n\n\tregistry.register(\"account/read\", {\n\t\tscope: \"global\",\n\t\thandler: ({ request }) => {\n\t\t\tparseAccountReadParams(request.params);\n\t\t\treturn accountReadResponse(agentDir);\n\t\t},\n\t});\n\tregistry.register(\"account/providerAccounts/read\", {\n\t\tscope: \"global\",\n\t\thandler: ({ request }) => providerAccountsResponse(agentDir, parseProviderAccountsReadParams(request.params)),\n\t});\n\tregistry.register(\"account/providerAccounts/pin\", {\n\t\tscope: \"global\",\n\t\thandler: async ({ request }) => {\n\t\t\tconst params = parseProviderAccountsPinParams(request.params);\n\t\t\tawait pinCredentialAccount(AuthStorage.create(join(agentDir, \"auth.json\")), params.provider, params.name);\n\t\t\treturn {};\n\t\t},\n\t});\n\tregistry.register(\"account/providerAccounts/remove\", {\n\t\tscope: \"global\",\n\t\thandler: async ({ request }) => {\n\t\t\tconst params = parseProviderAccountsRemoveParams(request.params);\n\t\t\tawait removeCredentialAccount(AuthStorage.create(join(agentDir, \"auth.json\")), params.provider, params.name);\n\t\t\treturn {};\n\t\t},\n\t});\n\tregistry.register(\"account/rateLimits/read\", {\n\t\tscope: \"global\",\n\t\thandler: () => {\n\t\t\tthrow unauthenticatedAccountReadError(RATE_LIMITS_AUTHENTICATION_MESSAGE);\n\t\t},\n\t});\n\tregistry.register(\"account/usage/read\", {\n\t\tscope: \"global\",\n\t\thandler: () => {\n\t\t\tthrow unauthenticatedAccountReadError(TOKEN_USAGE_AUTHENTICATION_MESSAGE);\n\t\t},\n\t});\n}\n\nexport function providerAccountEventNotification(event: ProviderAccountEvent): RpcNotification {\n\tif (event.type === \"accounts_changed\") {\n\t\treturn { method: \"account/providerAccounts/updated\", params: { provider: event.provider } };\n\t}\n\treturn {\n\t\tmethod: \"account/providerAccounts/failover\",\n\t\tparams: { provider: event.provider, from: event.from, to: event.to, reason: event.reason },\n\t};\n}\n\nfunction accountReadResponse(agentDir: string): AccountReadResponse {\n\tconst credentials = AuthStorage.create(join(agentDir, \"auth.json\")).getAll();\n\treturn {\n\t\taccount: Object.keys(credentials).length > 0 ? { type: \"apiKey\" } : null,\n\t\trequiresOpenaiAuth: false,\n\t};\n}\n\nasync function providerAccountsResponse(\n\tagentDir: string,\n\tparams: ProviderAccountsReadParams,\n): Promise<ProviderAccountsReadResponse> {\n\tconst storage = AuthStorage.create(join(agentDir, \"auth.json\"));\n\treturn { provider: params.provider, accounts: await getCredentialAccounts(storage, params.provider) };\n}\n\nfunction parseAccountReadParams(value: unknown): AccountReadParams {\n\tif (value === undefined || value === null) return {};\n\tif (!isRecord(value)) {\n\t\tthrow new RpcHandlerError({ code: -32600, message: \"account/read params must be an object\" });\n\t}\n\tconst refreshToken = value.refreshToken;\n\tif (refreshToken !== undefined && typeof refreshToken !== \"boolean\") {\n\t\tthrow new RpcHandlerError({ code: -32600, message: \"account/read refreshToken must be a boolean\" });\n\t}\n\treturn refreshToken === undefined ? {} : { refreshToken };\n}\n\nfunction parseProviderAccountsReadParams(value: unknown): ProviderAccountsReadParams {\n\treturn { provider: providerFrom(value, \"account/providerAccounts/read\") };\n}\n\nfunction parseProviderAccountsPinParams(value: unknown): ProviderAccountsPinParams {\n\tconst params = requiredRecord(value, \"account/providerAccounts/pin\");\n\tif (typeof params.name !== \"string\" && params.name !== null) {\n\t\tthrow invalidParams(\"account/providerAccounts/pin name must be a string or null\");\n\t}\n\treturn { provider: requiredProvider(params, \"account/providerAccounts/pin\"), name: params.name };\n}\n\nfunction parseProviderAccountsRemoveParams(value: unknown): ProviderAccountsRemoveParams {\n\tconst params = requiredRecord(value, \"account/providerAccounts/remove\");\n\tif (typeof params.name !== \"string\" || params.name.length === 0) {\n\t\tthrow invalidParams(\"account/providerAccounts/remove name must be a non-empty string\");\n\t}\n\treturn { provider: requiredProvider(params, \"account/providerAccounts/remove\"), name: params.name };\n}\n\nfunction providerFrom(value: unknown, method: string): string {\n\treturn requiredProvider(requiredRecord(value, method), method);\n}\n\nfunction requiredProvider(params: Record<string, unknown>, method: string): string {\n\tif (typeof params.provider !== \"string\" || params.provider.length === 0) {\n\t\tthrow invalidParams(`${method} provider must be a non-empty string`);\n\t}\n\treturn params.provider;\n}\n\nfunction requiredRecord(value: unknown, method: string): Record<string, unknown> {\n\tif (!isRecord(value)) throw invalidParams(`${method} params must be an object`);\n\treturn value;\n}\n\nfunction invalidParams(message: string): RpcHandlerError {\n\treturn new RpcHandlerError({ code: -32600, message });\n}\n\nfunction unauthenticatedAccountReadError(message: string): RpcHandlerError {\n\treturn new RpcHandlerError({ code: -32600, message });\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval-bridge.d.ts","sourceRoot":"","sources":["../../../../src/modes/app-server/server/approval-bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAGN,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EAIrB,KAAK,uBAAuB,EAC5B,MAAM,qBAAqB,CAAC;AAS7B,qBAAa,cAAc;IAC1B,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IACjE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;
|
|
1
|
+
{"version":3,"file":"approval-bridge.d.ts","sourceRoot":"","sources":["../../../../src/modes/app-server/server/approval-bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAGN,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EAIrB,KAAK,uBAAuB,EAC5B,MAAM,qBAAqB,CAAC;AAS7B,qBAAa,cAAc;IAC1B,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IACjE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;IAElE,YAAY,uBAAuB,EAAE,uBAAuB,EAE3D;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAgBxG;IAED,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAanD;IAED;;;;;;OAMG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU/C;IAED,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY/C;IAED,OAAO,CAAC,YAAY;CAMpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval-types.d.ts","sourceRoot":"","sources":["../../../../src/modes/app-server/server/approval-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG,YAAY,CAAC;AAC7D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,kBAAkB,GAAG,SAAS,GAAG,QAAQ,CAAC;AACpF,MAAM,MAAM,eAAe,GAAG;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC,CAAC;AACH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC/C,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,EAAE,uCAAuC,GAAG,iCAAiC,CAAC;IACpF,MAAM,EAAE,SAAS,CAAC;CAClB,CAAC,CAAC;AACH,MAAM,MAAM,wBAAwB,GACjC,wBAAwB,GACxB;IACA,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;KAAE,CAAC;CAC7E,CAAC;AACL,MAAM,MAAM,uBAAuB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,KAAK,MAAM,CAAC;AACtG,MAAM,MAAM,gBAAgB,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE/G,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"approval-types.d.ts","sourceRoot":"","sources":["../../../../src/modes/app-server/server/approval-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG,YAAY,CAAC;AAC7D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,kBAAkB,GAAG,SAAS,GAAG,QAAQ,CAAC;AACpF,MAAM,MAAM,eAAe,GAAG;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC,CAAC;AACH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC/C,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,EAAE,uCAAuC,GAAG,iCAAiC,CAAC;IACpF,MAAM,EAAE,SAAS,CAAC;CAClB,CAAC,CAAC;AACH,MAAM,MAAM,wBAAwB,GACjC,wBAAwB,GACxB;IACA,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;KAAE,CAAC;CAC7E,CAAC;AACL,MAAM,MAAM,uBAAuB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,KAAK,MAAM,CAAC;AACtG,MAAM,MAAM,gBAAgB,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE/G,eAAO,MAAM,kBAAkB,YAAI,QAAQ,EAAE,kBAAkB,EAAE,SAAS,EAAE,QAAQ,CAAU,CAAC;AAC/F,eAAO,MAAM,kBAAkB,YAAI,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,oBAAoB,CAAU,CAAC;AACxG,eAAO,MAAM,aAAa,0DAA0D,CAAC;AACrF,eAAO,MAAM,oBAAoB,mCAAmC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ExtensionUIContext } from "../../../core/extensions/index.ts";
|
|
2
2
|
import type { ApprovalBridge } from "./approval-bridge.ts";
|
|
3
|
-
|
|
3
|
+
import type { UserInputBridge } from "./user-input-bridge.ts";
|
|
4
|
+
export declare function createAppServerUIContext(bridge: ApprovalBridge, threadId: string, userInput?: UserInputBridge, getTurnId?: () => string): ExtensionUIContext;
|
|
4
5
|
//# sourceMappingURL=approval-ui-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval-ui-context.d.ts","sourceRoot":"","sources":["../../../../src/modes/app-server/server/approval-ui-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAE5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"approval-ui-context.d.ts","sourceRoot":"","sources":["../../../../src/modes/app-server/server/approval-ui-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAE5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,eAAe,EAC3B,SAAS,GAAE,MAAM,MAAgC,GAC/C,kBAAkB,CAsGpB"}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import { getAvailableThemesWithPaths, getThemeByName, theme } from "../../interactive/theme/theme.js";
|
|
2
2
|
import { CANCEL_REASON, NO_SUBSCRIBER_REASON, PERMISSION_OPTIONS } from "./approval-types.js";
|
|
3
|
-
export function createAppServerUIContext(bridge, threadId) {
|
|
3
|
+
export function createAppServerUIContext(bridge, threadId, userInput, getTurnId = () => "turn-user-input") {
|
|
4
4
|
let pendingInput;
|
|
5
5
|
let editorText = "";
|
|
6
6
|
let editorFactory;
|
|
7
7
|
let toolsExpanded = false;
|
|
8
8
|
return {
|
|
9
|
+
question(request, opts) {
|
|
10
|
+
return (userInput?.requestUserInput(threadId, getTurnId(), request.requestId, request, opts) ??
|
|
11
|
+
Promise.resolve({
|
|
12
|
+
status: "unavailable",
|
|
13
|
+
answers: {},
|
|
14
|
+
unanswered: request.questions.map((question) => question.id),
|
|
15
|
+
}));
|
|
16
|
+
},
|
|
9
17
|
async select(title, options) {
|
|
10
18
|
const prompt = parsePermissionPrompt(title);
|
|
11
19
|
if (!prompt || !isPermissionOptions(options)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval-ui-context.js","sourceRoot":"","sources":["../../../../src/modes/app-server/server/approval-ui-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,cAAc,EAAc,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAElH,OAAO,EAAqB,aAAa,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"approval-ui-context.js","sourceRoot":"","sources":["../../../../src/modes/app-server/server/approval-ui-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,cAAc,EAAc,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAElH,OAAO,EAAqB,aAAa,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAKjH,MAAM,UAAU,wBAAwB,CACvC,MAAsB,EACtB,QAAgB,EAChB,SAA2B,EAC3B,SAAS,GAAiB,GAAG,EAAE,CAAC,iBAAiB;IAEjD,IAAI,YAAgC,CAAC;IACrC,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,aAAkF,CAAC;IACvF,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,OAAO;QACN,QAAQ,CAAC,OAAO,EAAE,IAAI;YACrB,OAAO,CACN,SAAS,EAAE,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC;gBACpF,OAAO,CAAC,OAAO,CAAC;oBACf,MAAM,EAAE,aAAa;oBACrB,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;iBAC5D,CAAC,CACF,CAAC;QACH,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO;YAC1B,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,OAAO,SAAS,CAAC;YAClB,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE;gBACnE,MAAM,EAAE,eAAe;gBACvB,MAAM,EAAE,YAAY,MAAM,CAAC,QAAQ,EAAE;gBACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;aACrB,CAAC,CAAC;YACH,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;gBAAE,OAAO,YAAY,CAAC;YACvD,IAAI,OAAO,CAAC,QAAQ,KAAK,kBAAkB;gBAAE,OAAO,cAAc,CAAC;YACnE,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,oBAAoB,IAAI,OAAO,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;gBACnG,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC9B,OAAO,oBAAoB,CAAC;YAC7B,CAAC;YACD,OAAO,MAAM,CAAC;QACf,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO;YAC3B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,kBAAkB,EAAE;gBAC1E,MAAM,EAAE,eAAe;gBACvB,MAAM,EAAE,kBAAkB;gBAC1B,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,OAAO;aACf,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,KAAK,CAAC;QACtB,CAAC;QACD,KAAK,CAAC,KAAK;YACV,MAAM,KAAK,GAAG,YAAY,CAAC;YAC3B,YAAY,GAAG,SAAS,CAAC;YACzB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,KAAU,CAAC;QACjB,eAAe;YACd,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;QACjB,CAAC;QACD,SAAS,KAAU,CAAC;QACpB,iBAAiB,KAAU,CAAC;QAC5B,iBAAiB,KAAU,CAAC;QAC5B,mBAAmB,KAAU,CAAC;QAC9B,sBAAsB,KAAU,CAAC;QACjC,SAAS,KAAU,CAAC;QACpB,SAAS,KAAU,CAAC;QACpB,SAAS,KAAU,CAAC;QACpB,QAAQ,KAAU,CAAC;QACnB,MAAM;YACL,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,aAAa,CAAC,IAAI;YACjB,UAAU,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,aAAa,CAAC,IAAI;YACjB,UAAU,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,aAAa;YACZ,OAAO,UAAU,CAAC;QACnB,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;YAC3B,OAAO,OAAO,CAAC;QAChB,CAAC;QACD,uBAAuB,KAAU,CAAC;QAClC,kBAAkB,CAAC,OAAO;YACzB,aAAa,GAAG,OAAO,CAAC;QACzB,CAAC;QACD,kBAAkB;YACjB,OAAO,aAAa,CAAC;QACtB,CAAC;QACD,KAAK;QACL,YAAY,EAAE,2BAA2B;QACzC,QAAQ,CAAC,IAAI;YACZ,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,QAAQ,CAAC,UAA0B;YAClC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sDAAsD,EAAE,CAAC;QAC1F,CAAC;QACD,gBAAgB;YACf,OAAO,aAAa,CAAC;QACtB,CAAC;QACD,gBAAgB,CAAC,QAAQ;YACxB,aAAa,GAAG,QAAQ,CAAC;QAC1B,CAAC;KACD,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC3C,MAAM,CAAC,SAAS,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,uBAAuB,CAAC;IACvC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IACpD,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,OAAO;QACN,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC;QAC9B,QAAQ;QACR,OAAO,EACN,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC;YACpC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC;YAC/B,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC;YAC/B,IAAI;QACL,MAAM;KACN,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB;IACvC,OAAO,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,aAAa,IAAI,QAAQ,KAAK,WAAW;QAC3G,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,kBAAkB,CAAC;AACvB,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,MAAc;IAClD,OAAO,IAAI;SACT,KAAK,CAAC,IAAI,CAAC;SACX,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,mBAAmB,CAAC,OAA0B;IACtD,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACvE,CAAC","sourcesContent":["import type { ExtensionUIContext } from \"../../../core/extensions/index.ts\";\nimport { getAvailableThemesWithPaths, getThemeByName, type Theme, theme } from \"../../interactive/theme/theme.ts\";\nimport type { ApprovalBridge } from \"./approval-bridge.ts\";\nimport { type ApprovalKind, CANCEL_REASON, NO_SUBSCRIBER_REASON, PERMISSION_OPTIONS } from \"./approval-types.ts\";\nimport type { UserInputBridge } from \"./user-input-bridge.ts\";\n\ntype PermissionPrompt = Readonly<{ kind: ApprovalKind; toolName: string; command: string | null; reason: string }>;\n\nexport function createAppServerUIContext(\n\tbridge: ApprovalBridge,\n\tthreadId: string,\n\tuserInput?: UserInputBridge,\n\tgetTurnId: () => string = () => \"turn-user-input\",\n): ExtensionUIContext {\n\tlet pendingInput: string | undefined;\n\tlet editorText = \"\";\n\tlet editorFactory: Parameters<ExtensionUIContext[\"setEditorComponent\"]>[0] | undefined;\n\tlet toolsExpanded = false;\n\n\treturn {\n\t\tquestion(request, opts) {\n\t\t\treturn (\n\t\t\t\tuserInput?.requestUserInput(threadId, getTurnId(), request.requestId, request, opts) ??\n\t\t\t\tPromise.resolve({\n\t\t\t\t\tstatus: \"unavailable\",\n\t\t\t\t\tanswers: {},\n\t\t\t\t\tunanswered: request.questions.map((question) => question.id),\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\t\tasync select(title, options) {\n\t\t\tconst prompt = parsePermissionPrompt(title);\n\t\t\tif (!prompt || !isPermissionOptions(options)) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tconst outcome = await bridge.requestApproval(threadId, prompt.kind, {\n\t\t\t\tturnId: \"turn-approval\",\n\t\t\t\titemId: `approval-${prompt.toolName}`,\n\t\t\t\ttoolName: prompt.toolName,\n\t\t\t\tcommand: prompt.command,\n\t\t\t\treason: prompt.reason,\n\t\t\t});\n\t\t\tif (outcome.decision === \"accept\") return \"Allow once\";\n\t\t\tif (outcome.decision === \"acceptForSession\") return \"Allow always\";\n\t\t\tif (outcome.reason && outcome.reason !== NO_SUBSCRIBER_REASON && outcome.reason !== CANCEL_REASON) {\n\t\t\t\tpendingInput = outcome.reason;\n\t\t\t\treturn \"Deny with feedback\";\n\t\t\t}\n\t\t\treturn \"Deny\";\n\t\t},\n\t\tasync confirm(title, message) {\n\t\t\tconst outcome = await bridge.requestApproval(threadId, \"commandExecution\", {\n\t\t\t\tturnId: \"turn-approval\",\n\t\t\t\titemId: \"approval-confirm\",\n\t\t\t\ttoolName: \"confirm\",\n\t\t\t\tcommand: title,\n\t\t\t\treason: message,\n\t\t\t});\n\t\t\treturn outcome.allow;\n\t\t},\n\t\tasync input() {\n\t\t\tconst value = pendingInput;\n\t\t\tpendingInput = undefined;\n\t\t\treturn value;\n\t\t},\n\t\tnotify(): void {},\n\t\tonTerminalInput(): () => void {\n\t\t\treturn () => {};\n\t\t},\n\t\tsetStatus(): void {},\n\t\tsetWorkingMessage(): void {},\n\t\tsetWorkingVisible(): void {},\n\t\tsetWorkingIndicator(): void {},\n\t\tsetHiddenThinkingLabel(): void {},\n\t\tsetWidget(): void {},\n\t\tsetFooter(): void {},\n\t\tsetHeader(): void {},\n\t\tsetTitle(): void {},\n\t\tcustom<T>(): Promise<T> {\n\t\t\treturn Promise.reject(new Error(\"Custom UI is not available in app-server mode.\"));\n\t\t},\n\t\tpasteToEditor(text): void {\n\t\t\teditorText = text;\n\t\t},\n\t\tsetEditorText(text): void {\n\t\t\teditorText = text;\n\t\t},\n\t\tgetEditorText(): string {\n\t\t\treturn editorText;\n\t\t},\n\t\tasync editor(_title, prefill) {\n\t\t\treturn prefill;\n\t\t},\n\t\taddAutocompleteProvider(): void {},\n\t\tsetEditorComponent(factory): void {\n\t\t\teditorFactory = factory;\n\t\t},\n\t\tgetEditorComponent() {\n\t\t\treturn editorFactory;\n\t\t},\n\t\ttheme,\n\t\tgetAllThemes: getAvailableThemesWithPaths,\n\t\tgetTheme(name): Theme | undefined {\n\t\t\treturn getThemeByName(name);\n\t\t},\n\t\tsetTheme(_nextTheme: string | Theme): { success: boolean; error?: string } {\n\t\t\treturn { success: false, error: \"Theme switching is not available in app-server mode.\" };\n\t\t},\n\t\tgetToolsExpanded(): boolean {\n\t\t\treturn toolsExpanded;\n\t\t},\n\t\tsetToolsExpanded(expanded): void {\n\t\t\ttoolsExpanded = expanded;\n\t\t},\n\t};\n}\n\nfunction parsePermissionPrompt(title: string): PermissionPrompt | undefined {\n\tconst [firstLine = \"\", ...rest] = title.split(\"\\n\");\n\tconst prefix = \"Permission required: \";\n\tif (!firstLine.startsWith(prefix)) return undefined;\n\tconst toolName = firstLine.slice(prefix.length).trim();\n\tconst reason = rest.join(\"\\n\").trim();\n\treturn {\n\t\tkind: permissionKind(toolName),\n\t\ttoolName,\n\t\tcommand:\n\t\t\treadLineValue(reason, \"Command: $ \") ??\n\t\t\treadLineValue(reason, \"File: \") ??\n\t\t\treadLineValue(reason, \"Path: \") ??\n\t\t\tnull,\n\t\treason,\n\t};\n}\n\nfunction permissionKind(toolName: string): ApprovalKind {\n\treturn toolName === \"edit\" || toolName === \"write\" || toolName === \"apply_patch\" || toolName === \"multiedit\"\n\t\t? \"fileChange\"\n\t\t: \"commandExecution\";\n}\n\nfunction readLineValue(text: string, prefix: string): string | undefined {\n\treturn text\n\t\t.split(\"\\n\")\n\t\t.find((line) => line.startsWith(prefix))\n\t\t?.slice(prefix.length);\n}\n\nfunction isPermissionOptions(options: readonly string[]): boolean {\n\treturn PERMISSION_OPTIONS.every((option) => options.includes(option));\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalogs.js","sourceRoot":"","sources":["../../../../src/modes/app-server/server/catalogs.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Api, Model as PiModel } from \"@earendil-works/pi-ai\";\nimport { getAgentDir } from \"../../../config.ts\";\nimport { AuthStorage } from \"../../../core/auth-storage.ts\";\nimport { ModelRegistry } from \"../../../core/model-registry.ts\";\nimport { defaultModelPerProvider } from \"../../../core/model-resolver.ts\";\nimport { SettingsManager } from \"../../../core/settings-manager.ts\";\nimport { resolvePath } from \"../../../utils/paths.ts\";\nimport { buildSenpiCollaborationModePreset } from \"../protocol/collaboration-mode.ts\";\nimport type {\n\tCollaborationModeListResponse,\n\tExperimentalFeature,\n\tExperimentalFeatureListParams,\n\tMcpServerStatus,\n\tMcpServerStatusDetail,\n\tMcpServerStatusListParams,\n\tMcpServerStatusListResponse,\n\tPermissionProfileListParams,\n\tPermissionProfileSummary,\n} from \"../protocol/index.ts\";\nimport { RpcHandlerError } from \"../rpc/errors.ts\";\nimport type { MethodRegistry } from \"../rpc/registry.ts\";\nimport type { ThreadRegistry } from \"../threads/registry.ts\";\nimport type { AppServerModelRegistry } from \"./models.ts\";\n\nexport interface RegisterAppServerCatalogMethodsOptions {\n\treadonly modelRegistry?: AppServerModelRegistry;\n\treadonly agentDir?: string;\n\treadonly serverCwd?: string;\n\treadonly threads?: Pick<ThreadRegistry, \"getLoadedThread\" | \"getMcpWireStatusAdapter\">;\n}\n\nconst PERMISSION_PROFILES = [\n\t{ id: \"dangerFullAccess\", description: null, allowed: true },\n] as const satisfies readonly PermissionProfileSummary[];\n\nconst EXPERIMENTAL_FEATURES = [] as const satisfies readonly ExperimentalFeature[];\n\nexport function registerAppServerCatalogMethods(\n\tregistry: MethodRegistry,\n\toptions: RegisterAppServerCatalogMethodsOptions = {},\n): void {\n\tconst serverCwd = resolvePath(options.serverCwd ?? process.cwd());\n\tconst agentDir = options.agentDir ?? getAgentDir();\n\tlet defaultModelRegistry: AppServerModelRegistry | undefined;\n\tconst getModelRegistry = (): AppServerModelRegistry => {\n\t\tdefaultModelRegistry ??= ModelRegistry.create(AuthStorage.create());\n\t\treturn options.modelRegistry ?? defaultModelRegistry;\n\t};\n\n\tregistry.register(\"collaborationMode/list\", {\n\t\texperimental: true,\n\t\tscope: \"global\",\n\t\thandler: ({ request }) => {\n\t\t\tparseObjectParams(request.params, \"collaborationMode/list\");\n\t\t\tconst model = defaultModelId(getModelRegistry().getAvailable());\n\t\t\treturn { data: [buildSenpiCollaborationModePreset(model)] } satisfies CollaborationModeListResponse;\n\t\t},\n\t});\n\n\tregistry.register(\"permissionProfile/list\", {\n\t\tscope: \"global\",\n\t\thandler: ({ request }) => {\n\t\t\tconst params = parsePermissionProfileListParams(request.params);\n\t\t\tconst cwd = resolvePath(params.cwd ?? serverCwd, serverCwd, { trim: true });\n\t\t\tSettingsManager.create(cwd, agentDir).getProjectSettings();\n\t\t\treturn paginateCatalog(PERMISSION_PROFILES, params.cursor, params.limit, \"permissionProfile/list\");\n\t\t},\n\t});\n\n\tregistry.register(\"experimentalFeature/list\", {\n\t\tscope: \"global\",\n\t\thandler: ({ request }) => {\n\t\t\tconst params = parseExperimentalFeatureListParams(request.params);\n\t\t\tvalidateThreadId(params.threadId, options.threads, \"experimentalFeature/list\");\n\t\t\treturn paginateCatalog(EXPERIMENTAL_FEATURES, params.cursor, params.limit, \"experimentalFeature/list\");\n\t\t},\n\t});\n\n\tregistry.register(\"mcpServerStatus/list\", {\n\t\tscope: \"global\",\n\t\thandler: ({ request }) => {\n\t\t\tconst params = parseMcpServerStatusListParams(request.params);\n\t\t\tvalidateThreadId(params.threadId, options.threads, \"mcpServerStatus/list\");\n\t\t\tconst adapter = options.threads?.getMcpWireStatusAdapter(params.threadId);\n\t\t\tconst detail = params.detail ?? \"full\";\n\t\t\tconst statuses = adapter?.getServerStatuses() ?? [];\n\t\t\tconst visibleStatuses = statuses.map((status) => applyMcpServerStatusDetail(status, detail));\n\t\t\treturn paginateCatalog(\n\t\t\t\tvisibleStatuses,\n\t\t\t\tparams.cursor,\n\t\t\t\tparams.limit,\n\t\t\t\t\"mcpServerStatus/list\",\n\t\t\t) satisfies McpServerStatusListResponse;\n\t\t},\n\t});\n}\n\nfunction defaultModelId(models: readonly PiModel<Api>[]): string {\n\tconst knownDefault = models.find((model) =>\n\t\tObject.entries(defaultModelPerProvider).some(\n\t\t\t([provider, modelId]) => provider === model.provider && modelId === model.id,\n\t\t),\n\t);\n\treturn knownDefault?.id ?? models[0]?.id ?? \"unknown\";\n}\n\nfunction parsePermissionProfileListParams(value: unknown): PermissionProfileListParams {\n\tconst params = parseObjectParams(value, \"permissionProfile/list\");\n\treturn {\n\t\tcursor: optionalString(params.cursor, \"permissionProfile/list\", \"cursor\"),\n\t\tlimit: optionalNumber(params.limit, \"permissionProfile/list\", \"limit\"),\n\t\tcwd: optionalString(params.cwd, \"permissionProfile/list\", \"cwd\"),\n\t};\n}\n\nfunction parseExperimentalFeatureListParams(value: unknown): ExperimentalFeatureListParams {\n\tconst params = parseObjectParams(value, \"experimentalFeature/list\");\n\treturn {\n\t\tcursor: optionalString(params.cursor, \"experimentalFeature/list\", \"cursor\"),\n\t\tlimit: optionalNumber(params.limit, \"experimentalFeature/list\", \"limit\"),\n\t\tthreadId: optionalString(params.threadId, \"experimentalFeature/list\", \"threadId\"),\n\t};\n}\n\nfunction parseMcpServerStatusListParams(value: unknown): McpServerStatusListParams {\n\tconst params = parseObjectParams(value, \"mcpServerStatus/list\");\n\treturn {\n\t\tcursor: optionalString(params.cursor, \"mcpServerStatus/list\", \"cursor\"),\n\t\tlimit: optionalNumber(params.limit, \"mcpServerStatus/list\", \"limit\"),\n\t\tdetail: optionalMcpServerStatusDetail(params.detail),\n\t\tthreadId: optionalString(params.threadId, \"mcpServerStatus/list\", \"threadId\"),\n\t};\n}\n\nfunction optionalMcpServerStatusDetail(value: unknown): McpServerStatusDetail | null | undefined {\n\tif (value === undefined || value === null) return value;\n\tif (value === \"full\" || value === \"toolsAndAuthOnly\") return value;\n\tthrow invalidCatalogParams(\"mcpServerStatus/list detail must be full, toolsAndAuthOnly, or null\");\n}\n\nfunction applyMcpServerStatusDetail(server: McpServerStatus, detail: McpServerStatusDetail): McpServerStatus {\n\tswitch (detail) {\n\t\tcase \"full\":\n\t\t\treturn server;\n\t\tcase \"toolsAndAuthOnly\":\n\t\t\treturn {\n\t\t\t\t...server,\n\t\t\t\tserverInfo: null,\n\t\t\t\tresources: [],\n\t\t\t\tresourceTemplates: [],\n\t\t\t};\n\t\tdefault:\n\t\t\treturn assertNever(detail);\n\t}\n}\n\nfunction parseObjectParams(value: unknown, method: string): Record<string, unknown> {\n\tif (value === undefined || value === null) return {};\n\tif (!isRecord(value)) throw invalidCatalogParams(`${method} params must be an object`);\n\treturn value;\n}\n\nfunction optionalString(value: unknown, method: string, field: string): string | null | undefined {\n\tif (value === undefined || value === null) return value;\n\tif (typeof value !== \"string\") throw invalidCatalogParams(`${method} ${field} must be a string or null`);\n\treturn value;\n}\n\nfunction optionalNumber(value: unknown, method: string, field: string): number | null | undefined {\n\tif (value === undefined || value === null) return value;\n\tif (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < 0) {\n\t\tthrow invalidCatalogParams(`${method} ${field} must be a non-negative integer or null`);\n\t}\n\treturn value;\n}\n\nfunction paginateCatalog<T>(\n\titems: readonly T[],\n\tcursor: string | null | undefined,\n\tlimit: number | null | undefined,\n\tmethod: string,\n): { readonly data: readonly T[]; readonly nextCursor: string | null } {\n\tconst start = parseCursor(cursor, items.length, method);\n\tconst pageSize = Math.max(1, limit ?? items.length);\n\tconst data = items.slice(start, start + pageSize);\n\tconst nextOffset = start + data.length;\n\treturn { data, nextCursor: nextOffset < items.length ? String(nextOffset) : null };\n}\n\nfunction parseCursor(cursor: string | null | undefined, total: number, method: string): number {\n\tif (cursor === undefined || cursor === null) return 0;\n\tif (!/^\\d+$/u.test(cursor)) throw invalidCatalogParams(`${method} received an invalid cursor: ${cursor}`);\n\tconst offset = Number(cursor);\n\tif (!Number.isSafeInteger(offset) || offset > total) {\n\t\tthrow invalidCatalogParams(`${method} cursor ${cursor} exceeds total records ${total}`);\n\t}\n\treturn offset;\n}\n\nfunction validateThreadId(\n\tthreadId: string | null | undefined,\n\tthreads: Pick<ThreadRegistry, \"getLoadedThread\"> | undefined,\n\tmethod: string,\n): void {\n\tif (threadId === undefined || threadId === null) return;\n\tif (!threads) throw invalidCatalogParams(`${method} received an unknown threadId: ${threadId}`);\n\ttry {\n\t\tthreads.getLoadedThread(threadId);\n\t} catch (error: unknown) {\n\t\tif (error instanceof Error && error.name === \"ThreadNotFoundError\") {\n\t\t\tthrow invalidCatalogParams(`${method} received an unknown threadId: ${threadId}`);\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nfunction invalidCatalogParams(message: string): RpcHandlerError {\n\treturn new RpcHandlerError({ code: -32600, message });\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction assertNever(value: never): never {\n\tthrow new Error(`Unhandled MCP server status detail: ${JSON.stringify(value)}`);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"catalogs.js","sourceRoot":"","sources":["../../../../src/modes/app-server/server/catalogs.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Api, Model as PiModel } from \"@earendil-works/pi-ai\";\nimport { getAgentDir } from \"../../../config.ts\";\nimport { AuthStorage } from \"../../../core/auth-storage.ts\";\nimport { ModelRegistry } from \"../../../core/model-registry.ts\";\nimport { defaultModelPerProvider } from \"../../../core/model-resolver.ts\";\nimport { SettingsManager } from \"../../../core/settings-manager.ts\";\nimport { resolvePath } from \"../../../utils/paths.ts\";\nimport { buildSenpiCollaborationModePreset } from \"../protocol/collaboration-mode.ts\";\nimport type {\n\tCollaborationModeListResponse,\n\tExperimentalFeature,\n\tExperimentalFeatureListParams,\n\tMcpServerStatus,\n\tMcpServerStatusDetail,\n\tMcpServerStatusListParams,\n\tMcpServerStatusListResponse,\n\tPermissionProfileListParams,\n\tPermissionProfileSummary,\n} from \"../protocol/index.ts\";\nimport { RpcHandlerError } from \"../rpc/errors.ts\";\nimport type { MethodRegistry } from \"../rpc/registry.ts\";\nimport type { ThreadRegistry } from \"../threads/registry.ts\";\nimport type { AppServerModelRegistry } from \"./models.ts\";\n\nexport interface RegisterAppServerCatalogMethodsOptions {\n\treadonly modelRegistry?: AppServerModelRegistry;\n\treadonly agentDir?: string;\n\treadonly serverCwd?: string;\n\treadonly threads?: Pick<ThreadRegistry, \"getLoadedThread\" | \"getMcpWireStatusAdapter\">;\n}\n\nconst PERMISSION_PROFILES = [\n\t{ id: \"dangerFullAccess\", description: null, allowed: true },\n] as const satisfies readonly PermissionProfileSummary[];\n\nconst EXPERIMENTAL_FEATURES = [] as const satisfies readonly ExperimentalFeature[];\n\nexport function registerAppServerCatalogMethods(\n\tregistry: MethodRegistry,\n\toptions: RegisterAppServerCatalogMethodsOptions = {},\n): void {\n\tconst serverCwd = resolvePath(options.serverCwd ?? process.cwd());\n\tconst agentDir = options.agentDir ?? getAgentDir();\n\tlet defaultModelRegistry: AppServerModelRegistry | undefined;\n\tconst getModelRegistry = (): AppServerModelRegistry => {\n\t\tdefaultModelRegistry ??= ModelRegistry.create(AuthStorage.create());\n\t\treturn options.modelRegistry ?? defaultModelRegistry;\n\t};\n\n\tregistry.register(\"collaborationMode/list\", {\n\t\texperimental: true,\n\t\tscope: \"global\",\n\t\thandler: ({ request }) => {\n\t\t\tparseObjectParams(request.params, \"collaborationMode/list\");\n\t\t\tconst model = defaultModelId(getModelRegistry().getAvailable());\n\t\t\treturn { data: [buildSenpiCollaborationModePreset(model)] } satisfies CollaborationModeListResponse;\n\t\t},\n\t});\n\n\tregistry.register(\"permissionProfile/list\", {\n\t\tscope: \"global\",\n\t\thandler: ({ request }) => {\n\t\t\tconst params = parsePermissionProfileListParams(request.params);\n\t\t\tconst cwd = resolvePath(params.cwd ?? serverCwd, serverCwd, { trim: true });\n\t\t\tSettingsManager.create(cwd, agentDir).getProjectSettings();\n\t\t\treturn paginateCatalog(PERMISSION_PROFILES, params.cursor, params.limit, \"permissionProfile/list\");\n\t\t},\n\t});\n\n\tregistry.register(\"experimentalFeature/list\", {\n\t\tscope: \"global\",\n\t\thandler: ({ request }) => {\n\t\t\tconst params = parseExperimentalFeatureListParams(request.params);\n\t\t\tvalidateThreadId(params.threadId, options.threads, \"experimentalFeature/list\");\n\t\t\treturn paginateCatalog(EXPERIMENTAL_FEATURES, params.cursor, params.limit, \"experimentalFeature/list\");\n\t\t},\n\t});\n\n\tregistry.register(\"mcpServerStatus/list\", {\n\t\tscope: \"global\",\n\t\thandler: ({ request }) => {\n\t\t\tconst params = parseMcpServerStatusListParams(request.params);\n\t\t\tvalidateThreadId(params.threadId, options.threads, \"mcpServerStatus/list\");\n\t\t\tconst adapter = options.threads?.getMcpWireStatusAdapter(params.threadId);\n\t\t\tconst detail = params.detail ?? \"full\";\n\t\t\tconst statuses = adapter?.getServerStatuses() ?? [];\n\t\t\tconst visibleStatuses = statuses.map((status) => applyMcpServerStatusDetail(status, detail));\n\t\t\treturn paginateCatalog(\n\t\t\t\tvisibleStatuses,\n\t\t\t\tparams.cursor,\n\t\t\t\tparams.limit,\n\t\t\t\t\"mcpServerStatus/list\",\n\t\t\t) satisfies McpServerStatusListResponse;\n\t\t},\n\t});\n}\n\nfunction defaultModelId(models: readonly PiModel<Api>[]): string {\n\tconst knownDefault = models.find((model) =>\n\t\tObject.entries(defaultModelPerProvider).some(\n\t\t\t([provider, modelId]) => provider === model.provider && modelId === model.id,\n\t\t),\n\t);\n\treturn knownDefault?.id ?? models[0]?.id ?? \"unknown\";\n}\n\nfunction parsePermissionProfileListParams(value: unknown): PermissionProfileListParams {\n\tconst params = parseObjectParams(value, \"permissionProfile/list\");\n\treturn {\n\t\tcursor: optionalString(params.cursor, \"permissionProfile/list\", \"cursor\"),\n\t\tlimit: optionalNumber(params.limit, \"permissionProfile/list\", \"limit\"),\n\t\tcwd: optionalString(params.cwd, \"permissionProfile/list\", \"cwd\"),\n\t};\n}\n\nfunction parseExperimentalFeatureListParams(value: unknown): ExperimentalFeatureListParams {\n\tconst params = parseObjectParams(value, \"experimentalFeature/list\");\n\treturn {\n\t\tcursor: optionalString(params.cursor, \"experimentalFeature/list\", \"cursor\"),\n\t\tlimit: optionalNumber(params.limit, \"experimentalFeature/list\", \"limit\"),\n\t\tthreadId: optionalString(params.threadId, \"experimentalFeature/list\", \"threadId\"),\n\t};\n}\n\nfunction parseMcpServerStatusListParams(value: unknown): McpServerStatusListParams {\n\tconst params = parseObjectParams(value, \"mcpServerStatus/list\");\n\treturn {\n\t\tcursor: optionalString(params.cursor, \"mcpServerStatus/list\", \"cursor\"),\n\t\tlimit: optionalNumber(params.limit, \"mcpServerStatus/list\", \"limit\"),\n\t\tdetail: optionalMcpServerStatusDetail(params.detail),\n\t\tthreadId: optionalString(params.threadId, \"mcpServerStatus/list\", \"threadId\"),\n\t};\n}\n\nfunction optionalMcpServerStatusDetail(value: unknown): McpServerStatusDetail | null | undefined {\n\tif (value === undefined || value === null) return value;\n\tif (value === \"full\" || value === \"toolsAndAuthOnly\") return value;\n\tthrow invalidCatalogParams(\"mcpServerStatus/list detail must be full, toolsAndAuthOnly, or null\");\n}\n\nfunction applyMcpServerStatusDetail(server: McpServerStatus, detail: McpServerStatusDetail): McpServerStatus {\n\tswitch (detail) {\n\t\tcase \"full\":\n\t\t\treturn server;\n\t\tcase \"toolsAndAuthOnly\":\n\t\t\treturn {\n\t\t\t\t...server,\n\t\t\t\tserverInfo: null,\n\t\t\t\tresources: [],\n\t\t\t\tresourceTemplates: [],\n\t\t\t};\n\t\tdefault:\n\t\t\treturn assertNever(detail);\n\t}\n}\n\nfunction parseObjectParams(value: unknown, method: string): Record<string, unknown> {\n\tif (value === undefined || value === null) return {};\n\tif (!isRecord(value)) throw invalidCatalogParams(`${method} params must be an object`);\n\treturn value;\n}\n\nfunction optionalString(value: unknown, method: string, field: string): string | null | undefined {\n\tif (value === undefined || value === null) return value;\n\tif (typeof value !== \"string\") throw invalidCatalogParams(`${method} ${field} must be a string or null`);\n\treturn value;\n}\n\nfunction optionalNumber(value: unknown, method: string, field: string): number | null | undefined {\n\tif (value === undefined || value === null) return value;\n\tif (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < 0) {\n\t\tthrow invalidCatalogParams(`${method} ${field} must be a non-negative integer or null`);\n\t}\n\treturn value;\n}\n\nfunction paginateCatalog<T>(\n\titems: readonly T[],\n\tcursor: string | null | undefined,\n\tlimit: number | null | undefined,\n\tmethod: string,\n): { readonly data: readonly T[]; readonly nextCursor: string | null } {\n\tconst start = parseCursor(cursor, items.length, method);\n\tconst pageSize = Math.max(1, limit ?? items.length);\n\tconst data = items.slice(start, start + pageSize);\n\tconst nextOffset = start + data.length;\n\treturn { data, nextCursor: nextOffset < items.length ? String(nextOffset) : null };\n}\n\nfunction parseCursor(cursor: string | null | undefined, total: number, method: string): number {\n\tif (cursor === undefined || cursor === null) return 0;\n\tif (!/^\\d+$/u.test(cursor)) throw invalidCatalogParams(`${method} received an invalid cursor: ${cursor}`);\n\tconst offset = Number(cursor);\n\tif (!Number.isSafeInteger(offset) || offset > total) {\n\t\tthrow invalidCatalogParams(`${method} cursor ${cursor} exceeds total records ${total}`);\n\t}\n\treturn offset;\n}\n\nfunction validateThreadId(\n\tthreadId: string | null | undefined,\n\tthreads: Pick<ThreadRegistry, \"getLoadedThread\"> | undefined,\n\tmethod: string,\n): void {\n\tif (threadId === undefined || threadId === null) return;\n\tif (!threads) throw invalidCatalogParams(`${method} received an unknown threadId: ${threadId}`);\n\ttry {\n\t\tthreads.getLoadedThread(threadId);\n\t} catch (error: unknown) {\n\t\tif (error instanceof Error && error.name === \"ThreadNotFoundError\") {\n\t\t\tthrow invalidCatalogParams(`${method} received an unknown threadId: ${threadId}`);\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nfunction invalidCatalogParams(message: string): RpcHandlerError {\n\treturn new RpcHandlerError({ code: -32600, message });\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction assertNever(value: never): never {\n\tthrow new Error(`Unhandled MCP server status detail: ${JSON.stringify(value)}`);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/modes/app-server/server/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { join } from \"node:path\";\nimport { CONFIG_DIR_NAME, getAgentDir } from \"../../../config.ts\";\nimport { type Settings, SettingsManager } from \"../../../core/settings-manager.ts\";\nimport { resolvePath } from \"../../../utils/paths.ts\";\nimport type { JsonValue } from \"../protocol/base.ts\";\nimport type {\n\tConfigLayer,\n\tConfigLayerMetadata,\n\tConfigLayerSource,\n\tConfigReadParams,\n\tConfigReadResponse,\n\tConfigRequirementsReadResponse,\n} from \"../protocol/config.ts\";\nimport { RpcHandlerError } from \"../rpc/errors.ts\";\nimport type { MethodRegistry } from \"../rpc/registry.ts\";\n\nexport interface RegisterAppServerConfigMethodsOptions {\n\treadonly agentDir?: string;\n\treadonly serverCwd?: string;\n}\n\nconst CONFIG_LAYER_VERSION = \"unversioned\";\n\nconst SETTINGS_MAPPINGS = [\n\t{ settingsKey: \"defaultModel\", wireKey: \"model\" },\n\t{ settingsKey: \"defaultProvider\", wireKey: \"model_provider\" },\n\t{ settingsKey: \"defaultThinkingLevel\", wireKey: \"model_reasoning_effort\" },\n] as const;\n\nexport function registerAppServerConfigMethods(\n\tregistry: MethodRegistry,\n\toptions: RegisterAppServerConfigMethodsOptions = {},\n): void {\n\tconst serverCwd = resolvePath(options.serverCwd ?? process.cwd());\n\tconst agentDir = resolvePath(options.agentDir ?? getAgentDir());\n\n\tregistry.register(\"config/read\", {\n\t\tscope: \"global\",\n\t\thandler: ({ request }) => {\n\t\t\tconst params = parseConfigReadParams(request.params);\n\t\t\tconst cwd = resolvePath(params.cwd ?? serverCwd, serverCwd, { trim: true });\n\t\t\treturn buildConfigReadResponse(\n\t\t\t\tSettingsManager.create(cwd, agentDir),\n\t\t\t\tagentDir,\n\t\t\t\tcwd,\n\t\t\t\tparams.includeLayers === true,\n\t\t\t);\n\t\t},\n\t});\n\n\tregistry.register(\"configRequirements/read\", {\n\t\tscope: \"global\",\n\t\thandler: (): ConfigRequirementsReadResponse => ({ requirements: null }),\n\t});\n}\n\nfunction buildConfigReadResponse(\n\tsettingsManager: SettingsManager,\n\tagentDir: string,\n\tcwd: string,\n\tincludeLayers: boolean,\n): ConfigReadResponse {\n\tconst globalSettings = settingsManager.getGlobalSettings();\n\tconst projectSettings = settingsManager.getProjectSettings();\n\tconst userSource = {\n\t\ttype: \"user\",\n\t\tfile: join(agentDir, \"settings.json\"),\n\t\tprofile: null,\n\t} as const satisfies ConfigLayerSource;\n\tconst projectSource = {\n\t\ttype: \"project\",\n\t\tdotCodexFolder: join(cwd, CONFIG_DIR_NAME),\n\t} as const satisfies ConfigLayerSource;\n\tconst userMetadata = buildLayerMetadata(userSource);\n\tconst projectMetadata = buildLayerMetadata(projectSource);\n\n\tconst origins: Record<string, ConfigLayerMetadata> = {};\n\tfor (const mapping of SETTINGS_MAPPINGS) {\n\t\tif (readMappedSetting(projectSettings, mapping.settingsKey) !== undefined) {\n\t\t\torigins[mapping.wireKey] = projectMetadata;\n\t\t} else if (readMappedSetting(globalSettings, mapping.settingsKey) !== undefined) {\n\t\t\torigins[mapping.wireKey] = userMetadata;\n\t\t}\n\t}\n\n\treturn {\n\t\tconfig: {\n\t\t\t// Pinned Senpi-to-wire map: default model id -> model; default provider -> model_provider.\n\t\t\tmodel: settingsManager.getDefaultModel() ?? null,\n\t\t\tmodel_provider: settingsManager.getDefaultProvider() ?? null,\n\t\t\t// Pinned Senpi permission posture; these are the only fixed values exposed here.\n\t\t\tapproval_policy: \"never\",\n\t\t\tsandbox_mode: \"danger-full-access\",\n\t\t\t// Pinned Senpi-to-wire map: default thinking level -> model_reasoning_effort.\n\t\t\tmodel_reasoning_effort: settingsManager.getDefaultThinkingLevel() ?? null,\n\t\t},\n\t\torigins,\n\t\tlayers: includeLayers\n\t\t\t? [buildLayer(userSource, globalSettings), buildLayer(projectSource, projectSettings)]\n\t\t\t: null,\n\t} satisfies ConfigReadResponse;\n}\n\nfunction buildLayerMetadata(source: ConfigLayerSource): ConfigLayerMetadata {\n\treturn { name: source, version: CONFIG_LAYER_VERSION };\n}\n\nfunction buildLayer(source: ConfigLayerSource, settings: Settings): ConfigLayer {\n\treturn {\n\t\tname: source,\n\t\tversion: CONFIG_LAYER_VERSION,\n\t\tconfig: buildMappedSettings(settings),\n\t\tdisabledReason: null,\n\t};\n}\n\nfunction buildMappedSettings(settings: Settings): Record<string, JsonValue> {\n\tconst config: Record<string, JsonValue> = {};\n\tfor (const mapping of SETTINGS_MAPPINGS) {\n\t\tconst value = readMappedSetting(settings, mapping.settingsKey);\n\t\tif (value !== undefined) config[mapping.wireKey] = value;\n\t}\n\treturn config;\n}\n\nfunction readMappedSetting(\n\tsettings: Settings,\n\tkey: (typeof SETTINGS_MAPPINGS)[number][\"settingsKey\"],\n): string | undefined {\n\tconst value = settings[key];\n\treturn typeof value === \"string\" ? value : undefined;\n}\n\nfunction parseConfigReadParams(value: unknown): ConfigReadParams {\n\tif (value === undefined || value === null) return {};\n\tif (!isRecord(value)) throw invalidConfigParams(\"config/read params must be an object\");\n\n\tconst includeLayers = value.includeLayers;\n\tif (includeLayers !== undefined && typeof includeLayers !== \"boolean\") {\n\t\tthrow invalidConfigParams(\"config/read includeLayers must be a boolean\");\n\t}\n\tconst cwd = value.cwd;\n\tif (cwd !== undefined && cwd !== null && typeof cwd !== \"string\") {\n\t\tthrow invalidConfigParams(\"config/read cwd must be a string or null\");\n\t}\n\treturn {\n\t\t...(includeLayers === undefined ? {} : { includeLayers }),\n\t\t...(cwd === undefined ? {} : { cwd }),\n\t};\n}\n\nfunction invalidConfigParams(message: string): RpcHandlerError {\n\treturn new RpcHandlerError({ code: -32600, message });\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/modes/app-server/server/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { join } from \"node:path\";\nimport { CONFIG_DIR_NAME, getAgentDir } from \"../../../config.ts\";\nimport { type Settings, SettingsManager } from \"../../../core/settings-manager.ts\";\nimport { resolvePath } from \"../../../utils/paths.ts\";\nimport type { JsonValue } from \"../protocol/base.ts\";\nimport type {\n\tConfigLayer,\n\tConfigLayerMetadata,\n\tConfigLayerSource,\n\tConfigReadParams,\n\tConfigReadResponse,\n\tConfigRequirementsReadResponse,\n} from \"../protocol/config.ts\";\nimport { RpcHandlerError } from \"../rpc/errors.ts\";\nimport type { MethodRegistry } from \"../rpc/registry.ts\";\n\nexport interface RegisterAppServerConfigMethodsOptions {\n\treadonly agentDir?: string;\n\treadonly serverCwd?: string;\n}\n\nconst CONFIG_LAYER_VERSION = \"unversioned\";\n\nconst SETTINGS_MAPPINGS = [\n\t{ settingsKey: \"defaultModel\", wireKey: \"model\" },\n\t{ settingsKey: \"defaultProvider\", wireKey: \"model_provider\" },\n\t{ settingsKey: \"defaultThinkingLevel\", wireKey: \"model_reasoning_effort\" },\n] as const;\n\nexport function registerAppServerConfigMethods(\n\tregistry: MethodRegistry,\n\toptions: RegisterAppServerConfigMethodsOptions = {},\n): void {\n\tconst serverCwd = resolvePath(options.serverCwd ?? process.cwd());\n\tconst agentDir = resolvePath(options.agentDir ?? getAgentDir());\n\n\tregistry.register(\"config/read\", {\n\t\tscope: \"global\",\n\t\thandler: ({ request }) => {\n\t\t\tconst params = parseConfigReadParams(request.params);\n\t\t\tconst cwd = resolvePath(params.cwd ?? serverCwd, serverCwd, { trim: true });\n\t\t\treturn buildConfigReadResponse(\n\t\t\t\tSettingsManager.create(cwd, agentDir),\n\t\t\t\tagentDir,\n\t\t\t\tcwd,\n\t\t\t\tparams.includeLayers === true,\n\t\t\t);\n\t\t},\n\t});\n\n\tregistry.register(\"configRequirements/read\", {\n\t\tscope: \"global\",\n\t\thandler: (): ConfigRequirementsReadResponse => ({ requirements: null }),\n\t});\n}\n\nfunction buildConfigReadResponse(\n\tsettingsManager: SettingsManager,\n\tagentDir: string,\n\tcwd: string,\n\tincludeLayers: boolean,\n): ConfigReadResponse {\n\tconst globalSettings = settingsManager.getGlobalSettings();\n\tconst projectSettings = settingsManager.getProjectSettings();\n\tconst userSource = {\n\t\ttype: \"user\",\n\t\tfile: join(agentDir, \"settings.json\"),\n\t\tprofile: null,\n\t} as const satisfies ConfigLayerSource;\n\tconst projectSource = {\n\t\ttype: \"project\",\n\t\tdotCodexFolder: join(cwd, CONFIG_DIR_NAME),\n\t} as const satisfies ConfigLayerSource;\n\tconst userMetadata = buildLayerMetadata(userSource);\n\tconst projectMetadata = buildLayerMetadata(projectSource);\n\n\tconst origins: Record<string, ConfigLayerMetadata> = {};\n\tfor (const mapping of SETTINGS_MAPPINGS) {\n\t\tif (readMappedSetting(projectSettings, mapping.settingsKey) !== undefined) {\n\t\t\torigins[mapping.wireKey] = projectMetadata;\n\t\t} else if (readMappedSetting(globalSettings, mapping.settingsKey) !== undefined) {\n\t\t\torigins[mapping.wireKey] = userMetadata;\n\t\t}\n\t}\n\n\treturn {\n\t\tconfig: {\n\t\t\t// Pinned Senpi-to-wire map: default model id -> model; default provider -> model_provider.\n\t\t\tmodel: settingsManager.getDefaultModel() ?? null,\n\t\t\tmodel_provider: settingsManager.getDefaultProvider() ?? null,\n\t\t\t// Pinned Senpi permission posture; these are the only fixed values exposed here.\n\t\t\tapproval_policy: \"never\",\n\t\t\tsandbox_mode: \"danger-full-access\",\n\t\t\t// Pinned Senpi-to-wire map: default thinking level -> model_reasoning_effort.\n\t\t\tmodel_reasoning_effort: settingsManager.getDefaultThinkingLevel() ?? null,\n\t\t},\n\t\torigins,\n\t\tlayers: includeLayers\n\t\t\t? [buildLayer(userSource, globalSettings), buildLayer(projectSource, projectSettings)]\n\t\t\t: null,\n\t} satisfies ConfigReadResponse;\n}\n\nfunction buildLayerMetadata(source: ConfigLayerSource): ConfigLayerMetadata {\n\treturn { name: source, version: CONFIG_LAYER_VERSION };\n}\n\nfunction buildLayer(source: ConfigLayerSource, settings: Settings): ConfigLayer {\n\treturn {\n\t\tname: source,\n\t\tversion: CONFIG_LAYER_VERSION,\n\t\tconfig: buildMappedSettings(settings),\n\t\tdisabledReason: null,\n\t};\n}\n\nfunction buildMappedSettings(settings: Settings): Record<string, JsonValue> {\n\tconst config: Record<string, JsonValue> = {};\n\tfor (const mapping of SETTINGS_MAPPINGS) {\n\t\tconst value = readMappedSetting(settings, mapping.settingsKey);\n\t\tif (value !== undefined) config[mapping.wireKey] = value;\n\t}\n\treturn config;\n}\n\nfunction readMappedSetting(\n\tsettings: Settings,\n\tkey: (typeof SETTINGS_MAPPINGS)[number][\"settingsKey\"],\n): string | undefined {\n\tconst value = settings[key];\n\treturn typeof value === \"string\" ? value : undefined;\n}\n\nfunction parseConfigReadParams(value: unknown): ConfigReadParams {\n\tif (value === undefined || value === null) return {};\n\tif (!isRecord(value)) throw invalidConfigParams(\"config/read params must be an object\");\n\n\tconst includeLayers = value.includeLayers;\n\tif (includeLayers !== undefined && typeof includeLayers !== \"boolean\") {\n\t\tthrow invalidConfigParams(\"config/read includeLayers must be a boolean\");\n\t}\n\tconst cwd = value.cwd;\n\tif (cwd !== undefined && cwd !== null && typeof cwd !== \"string\") {\n\t\tthrow invalidConfigParams(\"config/read cwd must be a string or null\");\n\t}\n\treturn {\n\t\t...(includeLayers === undefined ? {} : { includeLayers }),\n\t\t...(cwd === undefined ? {} : { cwd }),\n\t};\n}\n\nfunction invalidConfigParams(message: string): RpcHandlerError {\n\treturn new RpcHandlerError({ code: -32600, message });\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../src/modes/app-server/server/connection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAMrH,OAAO,EAAwC,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAClH,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,IAAI,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAEvH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAClC,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,CAAC;AAC3D,MAAM,MAAM,sBAAsB,GAAG,sBAAsB,CAAC;AAE5D,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,qBAAqB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAA;CAAE,CAAC;AAEhH,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACrD,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC;IAC9C,QAAQ,CAAC,yBAAyB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChD,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,GAAG,qBAAqB,CAAC;IACnF,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9D,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACzD;AAoBD,qBAAa,iBAAkB,YAAW,UAAU;IACnD,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,yBAAyB,cAAqB;IACvD,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiD;IAC7E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2C;
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../src/modes/app-server/server/connection.ts"],"names":[],"mappings":"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"}
|