apex-code 0.0.1-alpha.0 → 0.0.1-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/README.md +66 -681
- package/dist/cli/args.d.ts +5 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +45 -6
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/auth-command.d.ts.map +1 -1
- package/dist/cli/auth-command.js +3 -3
- package/dist/cli/auth-command.js.map +1 -1
- package/dist/cli/cost-command.d.ts +19 -0
- package/dist/cli/cost-command.d.ts.map +1 -0
- package/dist/cli/cost-command.js +107 -0
- package/dist/cli/cost-command.js.map +1 -0
- package/dist/cli/startup-ui.d.ts +1 -1
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +1 -2
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +45 -16
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +2 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +14 -7
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +2 -0
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +9 -0
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +30 -4
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +46 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +137 -19
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +6 -6
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js +1 -1
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/context/deferred-schemas.d.ts +92 -0
- package/dist/core/context/deferred-schemas.d.ts.map +1 -0
- package/dist/core/context/deferred-schemas.js +74 -0
- package/dist/core/context/deferred-schemas.js.map +1 -0
- package/dist/core/context/eviction.d.ts +47 -0
- package/dist/core/context/eviction.d.ts.map +1 -0
- package/dist/core/context/eviction.js +83 -0
- package/dist/core/context/eviction.js.map +1 -0
- package/dist/core/context/pipeline.d.ts +90 -0
- package/dist/core/context/pipeline.d.ts.map +1 -0
- package/dist/core/context/pipeline.js +109 -0
- package/dist/core/context/pipeline.js.map +1 -0
- package/dist/core/credential-failover.d.ts +30 -0
- package/dist/core/credential-failover.d.ts.map +1 -0
- package/dist/core/credential-failover.js +46 -0
- package/dist/core/credential-failover.js.map +1 -0
- package/dist/core/credential-pool.d.ts +60 -0
- package/dist/core/credential-pool.d.ts.map +1 -0
- package/dist/core/credential-pool.js +84 -0
- package/dist/core/credential-pool.js.map +1 -0
- package/dist/core/delegation/agents.d.ts +15 -0
- package/dist/core/delegation/agents.d.ts.map +1 -0
- package/dist/core/delegation/agents.js +55 -0
- package/dist/core/delegation/agents.js.map +1 -0
- package/dist/core/delegation/ceiling.d.ts +29 -0
- package/dist/core/delegation/ceiling.d.ts.map +1 -0
- package/dist/core/delegation/ceiling.js +34 -0
- package/dist/core/delegation/ceiling.js.map +1 -0
- package/dist/core/delegation/runtime.d.ts +94 -0
- package/dist/core/delegation/runtime.d.ts.map +1 -0
- package/dist/core/delegation/runtime.js +117 -0
- package/dist/core/delegation/runtime.js.map +1 -0
- package/dist/core/durable-state/daemon.d.ts +37 -0
- package/dist/core/durable-state/daemon.d.ts.map +1 -0
- package/dist/core/durable-state/daemon.js +62 -0
- package/dist/core/durable-state/daemon.js.map +1 -0
- package/dist/core/durable-state/provenance.d.ts +7 -0
- package/dist/core/durable-state/provenance.d.ts.map +1 -0
- package/dist/core/durable-state/provenance.js +24 -0
- package/dist/core/durable-state/provenance.js.map +1 -0
- package/dist/core/durable-state/sqlite.d.ts +84 -0
- package/dist/core/durable-state/sqlite.d.ts.map +1 -0
- package/dist/core/durable-state/sqlite.js +331 -0
- package/dist/core/durable-state/sqlite.js.map +1 -0
- package/dist/core/environment.d.ts +12 -0
- package/dist/core/environment.d.ts.map +1 -0
- package/dist/core/environment.js +69 -0
- package/dist/core/environment.js.map +1 -0
- package/dist/core/evidence-policy.d.ts +17 -0
- package/dist/core/evidence-policy.d.ts.map +1 -0
- package/dist/core/evidence-policy.js +25 -0
- package/dist/core/evidence-policy.js.map +1 -0
- package/dist/core/evidence.d.ts +16 -0
- package/dist/core/evidence.d.ts.map +1 -0
- package/dist/core/evidence.js +51 -0
- package/dist/core/evidence.js.map +1 -0
- package/dist/core/experimental.d.ts.map +1 -1
- package/dist/core/experimental.js +2 -1
- package/dist/core/experimental.js.map +1 -1
- package/dist/core/extensions/types.d.ts +2 -0
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/model-config.d.ts +8 -0
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +21 -5
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-resolver.d.ts +20 -0
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +59 -0
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-runtime.d.ts +73 -0
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +225 -8
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/observability/aggregate.d.ts +21 -0
- package/dist/core/observability/aggregate.d.ts.map +1 -0
- package/dist/core/observability/aggregate.js +36 -0
- package/dist/core/observability/aggregate.js.map +1 -0
- package/dist/core/observability/otlp.d.ts +66 -0
- package/dist/core/observability/otlp.d.ts.map +1 -0
- package/dist/core/observability/otlp.js +95 -0
- package/dist/core/observability/otlp.js.map +1 -0
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +3 -2
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/permissions/gate.d.ts +35 -0
- package/dist/core/permissions/gate.d.ts.map +1 -0
- package/dist/core/permissions/gate.js +72 -0
- package/dist/core/permissions/gate.js.map +1 -0
- package/dist/core/permissions/modes.d.ts +18 -0
- package/dist/core/permissions/modes.d.ts.map +1 -0
- package/dist/core/permissions/modes.js +57 -0
- package/dist/core/permissions/modes.js.map +1 -0
- package/dist/core/permissions/responder.d.ts +30 -0
- package/dist/core/permissions/responder.d.ts.map +1 -0
- package/dist/core/permissions/responder.js +32 -0
- package/dist/core/permissions/responder.js.map +1 -0
- package/dist/core/permissions/rules.d.ts +34 -0
- package/dist/core/permissions/rules.d.ts.map +1 -0
- package/dist/core/permissions/rules.js +74 -0
- package/dist/core/permissions/rules.js.map +1 -0
- package/dist/core/permissions/startup.d.ts +33 -0
- package/dist/core/permissions/startup.d.ts.map +1 -0
- package/dist/core/permissions/startup.js +55 -0
- package/dist/core/permissions/startup.js.map +1 -0
- package/dist/core/permissions/store.d.ts +114 -0
- package/dist/core/permissions/store.d.ts.map +1 -0
- package/dist/core/permissions/store.js +229 -0
- package/dist/core/permissions/store.js.map +1 -0
- package/dist/core/project-trust.d.ts.map +1 -1
- package/dist/core/project-trust.js +1 -1
- package/dist/core/project-trust.js.map +1 -1
- package/dist/core/provider-attribution.d.ts.map +1 -1
- package/dist/core/provider-attribution.js +6 -7
- package/dist/core/provider-attribution.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts +2 -2
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +20 -16
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/sandbox/child-entry.d.ts +2 -0
- package/dist/core/sandbox/child-entry.d.ts.map +1 -0
- package/dist/core/sandbox/child-entry.js +11 -0
- package/dist/core/sandbox/child-entry.js.map +1 -0
- package/dist/core/sandbox/cli-launch.d.ts +27 -0
- package/dist/core/sandbox/cli-launch.d.ts.map +1 -0
- package/dist/core/sandbox/cli-launch.js +133 -0
- package/dist/core/sandbox/cli-launch.js.map +1 -0
- package/dist/core/sandbox/cli-supervisor.d.ts +25 -0
- package/dist/core/sandbox/cli-supervisor.d.ts.map +1 -0
- package/dist/core/sandbox/cli-supervisor.js +57 -0
- package/dist/core/sandbox/cli-supervisor.js.map +1 -0
- package/dist/core/sandbox/linux-backend.d.ts +18 -0
- package/dist/core/sandbox/linux-backend.d.ts.map +1 -0
- package/dist/core/sandbox/linux-backend.js +186 -0
- package/dist/core/sandbox/linux-backend.js.map +1 -0
- package/dist/core/sandbox/macos-backend.d.ts +18 -0
- package/dist/core/sandbox/macos-backend.d.ts.map +1 -0
- package/dist/core/sandbox/macos-backend.js +195 -0
- package/dist/core/sandbox/macos-backend.js.map +1 -0
- package/dist/core/sandbox/network-proxy.d.ts +19 -0
- package/dist/core/sandbox/network-proxy.d.ts.map +1 -0
- package/dist/core/sandbox/network-proxy.js +79 -0
- package/dist/core/sandbox/network-proxy.js.map +1 -0
- package/dist/core/sandbox/policy.d.ts +32 -0
- package/dist/core/sandbox/policy.d.ts.map +1 -0
- package/dist/core/sandbox/policy.js +38 -0
- package/dist/core/sandbox/policy.js.map +1 -0
- package/dist/core/sandbox/supervisor.d.ts +31 -0
- package/dist/core/sandbox/supervisor.d.ts.map +1 -0
- package/dist/core/sandbox/supervisor.js +18 -0
- package/dist/core/sandbox/supervisor.js.map +1 -0
- package/dist/core/sandbox/violations.d.ts +23 -0
- package/dist/core/sandbox/violations.d.ts.map +1 -0
- package/dist/core/sandbox/violations.js +30 -0
- package/dist/core/sandbox/violations.js.map +1 -0
- package/dist/core/sdk.d.ts +20 -36
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +129 -2
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts +41 -2
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +57 -0
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-share.d.ts +16 -0
- package/dist/core/session-share.d.ts.map +1 -0
- package/dist/core/session-share.js +22 -0
- package/dist/core/session-share.js.map +1 -0
- package/dist/core/settings-manager.d.ts +38 -9
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +39 -24
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +5 -5
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/timings.d.ts +1 -1
- package/dist/core/timings.d.ts.map +1 -1
- package/dist/core/timings.js +3 -2
- package/dist/core/timings.js.map +1 -1
- package/dist/core/tools/ask-user.d.ts +25 -0
- package/dist/core/tools/ask-user.d.ts.map +1 -0
- package/dist/core/tools/ask-user.js +49 -0
- package/dist/core/tools/ask-user.js.map +1 -0
- package/dist/core/tools/bash-command-segments.d.ts +22 -0
- package/dist/core/tools/bash-command-segments.d.ts.map +1 -0
- package/dist/core/tools/bash-command-segments.js +128 -0
- package/dist/core/tools/bash-command-segments.js.map +1 -0
- package/dist/core/tools/bash.d.ts +26 -3
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +105 -16
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/contract.d.ts +156 -0
- package/dist/core/tools/contract.d.ts.map +1 -0
- package/dist/core/tools/contract.js +48 -0
- package/dist/core/tools/contract.js.map +1 -0
- package/dist/core/tools/delegate.d.ts +38 -0
- package/dist/core/tools/delegate.d.ts.map +1 -0
- package/dist/core/tools/delegate.js +66 -0
- package/dist/core/tools/delegate.js.map +1 -0
- package/dist/core/tools/edit.d.ts +2 -2
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +24 -0
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/find.d.ts +2 -2
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +12 -0
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts +2 -2
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +12 -0
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts +29 -4
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +118 -2
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/ls.d.ts +2 -2
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +12 -0
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js +1 -1
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/core/tools/path-permission.d.ts +18 -0
- package/dist/core/tools/path-permission.d.ts.map +1 -0
- package/dist/core/tools/path-permission.js +28 -0
- package/dist/core/tools/path-permission.js.map +1 -0
- package/dist/core/tools/plan-present.d.ts +27 -0
- package/dist/core/tools/plan-present.d.ts.map +1 -0
- package/dist/core/tools/plan-present.js +55 -0
- package/dist/core/tools/plan-present.js.map +1 -0
- package/dist/core/tools/read.d.ts +2 -2
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +12 -0
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/test.d.ts +34 -0
- package/dist/core/tools/test.d.ts.map +1 -0
- package/dist/core/tools/test.js +75 -0
- package/dist/core/tools/test.js.map +1 -0
- package/dist/core/tools/todo-write.d.ts +31 -0
- package/dist/core/tools/todo-write.d.ts.map +1 -0
- package/dist/core/tools/todo-write.js +51 -0
- package/dist/core/tools/todo-write.js.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts +13 -2
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +11 -1
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/tools/tool-schema.d.ts +22 -0
- package/dist/core/tools/tool-schema.d.ts.map +1 -0
- package/dist/core/tools/tool-schema.js +45 -0
- package/dist/core/tools/tool-schema.js.map +1 -0
- package/dist/core/tools/web-fetch.d.ts +26 -0
- package/dist/core/tools/web-fetch.d.ts.map +1 -0
- package/dist/core/tools/web-fetch.js +62 -0
- package/dist/core/tools/web-fetch.js.map +1 -0
- package/dist/core/tools/web-search.d.ts +26 -0
- package/dist/core/tools/web-search.d.ts.map +1 -0
- package/dist/core/tools/web-search.js +53 -0
- package/dist/core/tools/web-search.js.map +1 -0
- package/dist/core/tools/write.d.ts +6 -2
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +32 -1
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/usage-performance-store.d.ts +56 -0
- package/dist/core/usage-performance-store.d.ts.map +1 -0
- package/dist/core/usage-performance-store.js +85 -0
- package/dist/core/usage-performance-store.js.map +1 -0
- 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 +48 -6
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +2 -2
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +9 -6
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.d.ts +1 -4
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.js +11 -39
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +8 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +49 -20
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +2 -2
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +6 -6
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +2 -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/external-editor.d.ts.map +1 -1
- package/dist/modes/interactive/external-editor.js +58 -9
- package/dist/modes/interactive/external-editor.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +2 -3
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +92 -104
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.json +2 -2
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +15 -10
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/rpc-entry.d.ts.map +1 -1
- package/dist/rpc-entry.js +2 -1
- package/dist/rpc-entry.js.map +1 -1
- package/dist/server/create-harness.d.ts +1 -1
- package/dist/server/create-harness.d.ts.map +1 -1
- package/dist/server/create-harness.js +6 -5
- package/dist/server/create-harness.js.map +1 -1
- package/dist/testing/replay/metrics.d.ts +24 -0
- package/dist/testing/replay/metrics.d.ts.map +1 -0
- package/dist/testing/replay/metrics.js +35 -0
- package/dist/testing/replay/metrics.js.map +1 -0
- package/dist/testing/replay/recorded-provider.d.ts +10 -0
- package/dist/testing/replay/recorded-provider.d.ts.map +1 -0
- package/dist/testing/replay/recorded-provider.js +108 -0
- package/dist/testing/replay/recorded-provider.js.map +1 -0
- package/dist/testing/replay/runner.d.ts +56 -0
- package/dist/testing/replay/runner.d.ts.map +1 -0
- package/dist/testing/replay/runner.js +406 -0
- package/dist/testing/replay/runner.js.map +1 -0
- package/dist/utils/apex-code-user-agent.d.ts +2 -0
- package/dist/utils/apex-code-user-agent.d.ts.map +1 -0
- package/dist/utils/apex-code-user-agent.js +5 -0
- package/dist/utils/apex-code-user-agent.js.map +1 -0
- package/dist/utils/clipboard-image.d.ts.map +1 -1
- package/dist/utils/clipboard-image.js +1 -1
- package/dist/utils/clipboard-image.js.map +1 -1
- package/dist/utils/tools-manager.d.ts +32 -0
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +198 -100
- package/dist/utils/tools-manager.js.map +1 -1
- package/dist/utils/version-check.d.ts +5 -5
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +23 -14
- package/dist/utils/version-check.js.map +1 -1
- package/dist/utils/windows-self-update.d.ts.map +1 -1
- package/dist/utils/windows-self-update.js +1 -1
- package/dist/utils/windows-self-update.js.map +1 -1
- package/docs/compaction.md +21 -21
- package/docs/containerization.md +24 -21
- package/docs/custom-provider.md +9 -9
- package/docs/development.md +11 -11
- package/docs/environment-variables.md +36 -77
- package/docs/extensions.md +47 -47
- package/docs/index.md +12 -24
- package/docs/json.md +6 -6
- package/docs/keybindings.md +3 -3
- package/docs/llama-cpp.md +7 -7
- package/docs/models.md +11 -11
- package/docs/packages.md +46 -42
- package/docs/prompt-templates.md +3 -3
- package/docs/providers.md +10 -10
- package/docs/quickstart.md +49 -32
- package/docs/rpc.md +11 -11
- package/docs/sdk.md +4 -4
- package/docs/security.md +18 -18
- package/docs/session-format.md +9 -9
- package/docs/sessions.md +13 -13
- package/docs/settings.md +10 -14
- package/docs/shell-aliases.md +1 -1
- package/docs/skills.md +8 -8
- package/docs/terminal-setup.md +12 -12
- package/docs/termux.md +4 -4
- package/docs/themes.md +8 -8
- package/docs/tmux.md +4 -4
- package/docs/tui.md +3 -3
- package/docs/usage.md +54 -51
- package/docs/windows.md +1 -1
- package/npm-shrinkwrap.json +5 -5
- package/package.json +2 -3
- package/dist/core/telemetry.d.ts +0 -3
- package/dist/core/telemetry.d.ts.map +0 -1
- package/dist/core/telemetry.js +0 -9
- package/dist/core/telemetry.js.map +0 -1
- package/dist/utils/pi-user-agent.d.ts +0 -2
- package/dist/utils/pi-user-agent.d.ts.map +0 -1
- package/dist/utils/pi-user-agent.js +0 -5
- package/dist/utils/pi-user-agent.js.map +0 -1
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
16
16
|
import { basename, dirname } from "node:path";
|
|
17
17
|
import { contentText } from "@earendil-works/pi-ai";
|
|
18
|
-
import { clampThinkingLevel, cleanupSessionResources, getSupportedThinkingLevels, isContextOverflow, isRecoverableLength, isRetryableAssistantError, modelsAreEqual, resetApiProviders,
|
|
18
|
+
import { clampThinkingLevel, cleanupSessionResources, getSupportedThinkingLevels, isContextOverflow, isRecoverableLength, isRetryableAssistantError, modelsAreEqual, resetApiProviders, } from "@earendil-works/pi-ai/compat";
|
|
19
19
|
import { getThemeByName, theme } from "../modes/interactive/theme/theme.js";
|
|
20
20
|
import { stripFrontmatter } from "../utils/frontmatter.js";
|
|
21
21
|
import { resolvePath } from "../utils/paths.js";
|
|
@@ -24,19 +24,25 @@ import { normalizeToolResultImages } from "../utils/tool-result-images.js";
|
|
|
24
24
|
import { formatNoApiKeyFoundMessage, formatNoModelSelectedMessage } from "./auth-guidance.js";
|
|
25
25
|
import { executeBashWithOperations } from "./bash-executor.js";
|
|
26
26
|
import { calculateContextTokens, collectEntriesForBranchSummary, compact, estimateContextTokens, estimateTokens, generateBranchSummary, prepareCompaction, shouldCompact, } from "./compaction/index.js";
|
|
27
|
+
import { evictionBudget, installContextPipeline, isDefaultStreamFunction } from "./context/pipeline.js";
|
|
27
28
|
import { DEFAULT_THINKING_LEVEL } from "./defaults.js";
|
|
29
|
+
import { SessionEvidenceSink } from "./evidence.js";
|
|
28
30
|
import { exportSessionToHtml } from "./export-html/index.js";
|
|
29
31
|
import { createToolHtmlRenderer } from "./export-html/tool-renderer.js";
|
|
30
32
|
import { ExtensionRunner, wrapRegisteredTools, } from "./extensions/index.js";
|
|
31
33
|
import { emitSessionShutdownEvent } from "./extensions/runner.js";
|
|
32
34
|
import { ModelRegistry } from "./model-registry.js";
|
|
35
|
+
import { evaluateToolCall } from "./permissions/gate.js";
|
|
36
|
+
import { createInteractiveResponder } from "./permissions/responder.js";
|
|
33
37
|
import { expandPromptTemplate } from "./prompt-templates.js";
|
|
34
|
-
import { CURRENT_SESSION_VERSION, getLatestCompactionEntry } from "./session-manager.js";
|
|
38
|
+
import { CURRENT_SESSION_VERSION, getLatestCompactionEntry, TODO_CUSTOM_ENTRY_TYPE, } from "./session-manager.js";
|
|
35
39
|
import { createSyntheticSourceInfo } from "./source-info.js";
|
|
36
40
|
import { buildSystemPrompt } from "./system-prompt.js";
|
|
37
41
|
import { createLocalBashOperations } from "./tools/bash.js";
|
|
38
42
|
import { createAllToolDefinitions } from "./tools/index.js";
|
|
43
|
+
import { createTodoWriteToolDefinition } from "./tools/todo-write.js";
|
|
39
44
|
import { createToolDefinitionFromAgentTool } from "./tools/tool-definition-wrapper.js";
|
|
45
|
+
import { createToolSchemaToolDefinition } from "./tools/tool-schema.js";
|
|
40
46
|
import { addUsageToTotals, createUsageTotals } from "./usage-totals.js";
|
|
41
47
|
/**
|
|
42
48
|
* Parse a skill block from message text.
|
|
@@ -118,6 +124,8 @@ export class AgentSession {
|
|
|
118
124
|
_excludedToolNames;
|
|
119
125
|
_baseToolsOverride;
|
|
120
126
|
_sessionStartEvent;
|
|
127
|
+
_permissionGate;
|
|
128
|
+
_evidenceSink;
|
|
121
129
|
_extensionUIContext;
|
|
122
130
|
_extensionMode = "print";
|
|
123
131
|
_extensionCommandContextActions;
|
|
@@ -131,6 +139,7 @@ export class AgentSession {
|
|
|
131
139
|
_toolDefinitions = new Map();
|
|
132
140
|
_toolPromptSnippets = new Map();
|
|
133
141
|
_toolPromptGuidelines = new Map();
|
|
142
|
+
_loadedDeferredSchemas = new Set();
|
|
134
143
|
// Base system prompt (without extension appends) - used to apply fresh appends each turn
|
|
135
144
|
_baseSystemPrompt = "";
|
|
136
145
|
_baseSystemPromptOptions;
|
|
@@ -150,11 +159,14 @@ export class AgentSession {
|
|
|
150
159
|
this._excludedToolNames = config.excludedToolNames ? new Set(config.excludedToolNames) : undefined;
|
|
151
160
|
this._baseToolsOverride = config.baseToolsOverride;
|
|
152
161
|
this._sessionStartEvent = config.sessionStartEvent ?? { type: "session_start", reason: "startup" };
|
|
162
|
+
this._permissionGate = config.permissionGate;
|
|
163
|
+
this._evidenceSink = config.evidenceSink ?? new SessionEvidenceSink(this.sessionManager);
|
|
153
164
|
// Always subscribe to agent events for internal handling
|
|
154
165
|
// (session persistence, extensions, auto-compaction, retry logic)
|
|
155
166
|
this._unsubscribeAgent = this.agent.subscribe(this._handleAgentEvent);
|
|
156
167
|
this._installAgentToolHooks();
|
|
157
168
|
this._installAgentNextTurnRefresh();
|
|
169
|
+
this._installContextPipeline();
|
|
158
170
|
this._buildRuntime({
|
|
159
171
|
activeToolNames: this._initialActiveToolNames,
|
|
160
172
|
includeAllExtensionTools: true,
|
|
@@ -193,7 +205,7 @@ export class AgentSession {
|
|
|
193
205
|
throw new Error(formatNoApiKeyFoundMessage(model.provider));
|
|
194
206
|
}
|
|
195
207
|
async _getSummarizationRequestAuth(model) {
|
|
196
|
-
if (this.agent.streamFunction
|
|
208
|
+
if (isDefaultStreamFunction(this.agent.streamFunction)) {
|
|
197
209
|
return this._getRequiredRequestAuth(model);
|
|
198
210
|
}
|
|
199
211
|
try {
|
|
@@ -223,25 +235,63 @@ export class AgentSession {
|
|
|
223
235
|
_installAgentToolHooks() {
|
|
224
236
|
this.agent.beforeToolCall = async ({ toolCall, args }) => {
|
|
225
237
|
const runner = this._extensionRunner;
|
|
226
|
-
if (
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
catch (err) {
|
|
238
|
-
if (err instanceof Error) {
|
|
239
|
-
throw err;
|
|
238
|
+
if (runner.hasHandlers("tool_call")) {
|
|
239
|
+
let extensionResult;
|
|
240
|
+
try {
|
|
241
|
+
extensionResult = await runner.emitToolCall({
|
|
242
|
+
type: "tool_call",
|
|
243
|
+
toolName: toolCall.name,
|
|
244
|
+
toolCallId: toolCall.id,
|
|
245
|
+
input: args,
|
|
246
|
+
});
|
|
240
247
|
}
|
|
241
|
-
|
|
248
|
+
catch (err) {
|
|
249
|
+
if (err instanceof Error) {
|
|
250
|
+
throw err;
|
|
251
|
+
}
|
|
252
|
+
throw new Error(`Extension failed, blocking execution: ${String(err)}`);
|
|
253
|
+
}
|
|
254
|
+
// A blocking extension remains authoritative. A non-blocking result
|
|
255
|
+
// (including a mutation-only `{}`) must still pass the permission gate,
|
|
256
|
+
// which evaluates the extension's final input below.
|
|
257
|
+
if (extensionResult?.block === true)
|
|
258
|
+
return extensionResult;
|
|
259
|
+
}
|
|
260
|
+
// Permission gate (roadmap Phase 2a, ADR 0004). Off by default — see
|
|
261
|
+
// AgentSessionConfig.permissionGate. When present, every registered tool
|
|
262
|
+
// call passes through it (contracts.md invariant 2): this is the seam,
|
|
263
|
+
// not a per-tool opt-in.
|
|
264
|
+
if (this._permissionGate) {
|
|
265
|
+
const decision = await evaluateToolCall(toolCall.name, args, {
|
|
266
|
+
...this._permissionGate,
|
|
267
|
+
getContract: (name) => this.getToolDefinition(name)?.contract,
|
|
268
|
+
getResponder: () => this._extensionMode === "tui" && this._extensionUIContext
|
|
269
|
+
? createInteractiveResponder(this._extensionUIContext)
|
|
270
|
+
: undefined,
|
|
271
|
+
});
|
|
272
|
+
if (decision.block)
|
|
273
|
+
return { block: true, reason: decision.reason };
|
|
242
274
|
}
|
|
275
|
+
return undefined;
|
|
243
276
|
};
|
|
244
277
|
this.agent.afterToolCall = async ({ toolCall, args, result, isError }) => {
|
|
278
|
+
const definition = this.getToolDefinition(toolCall.name);
|
|
279
|
+
if (this._evidenceSink && definition?.contract) {
|
|
280
|
+
try {
|
|
281
|
+
const records = definition.contract.evidence.capture(args, result);
|
|
282
|
+
if (!records.every((record) => definition.contract?.evidence.emits.has(record.kind))) {
|
|
283
|
+
throw new Error("Evidence capture emitted a kind not declared by its tool contract");
|
|
284
|
+
}
|
|
285
|
+
if (records.length > 0)
|
|
286
|
+
this._evidenceSink.record({ toolName: toolCall.name, records });
|
|
287
|
+
}
|
|
288
|
+
catch (error) {
|
|
289
|
+
this._evidenceSink.recordDiagnostic?.({
|
|
290
|
+
toolName: toolCall.name,
|
|
291
|
+
reason: error instanceof Error ? error.message : String(error),
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
}
|
|
245
295
|
const runner = this._extensionRunner;
|
|
246
296
|
const hookResult = runner.hasHandlers("tool_result")
|
|
247
297
|
? await runner.emitToolResult({
|
|
@@ -291,6 +341,46 @@ export class AgentSession {
|
|
|
291
341
|
};
|
|
292
342
|
};
|
|
293
343
|
}
|
|
344
|
+
/**
|
|
345
|
+
* Installs the context pipeline settled in `docs/architecture/contracts.md` § 2:
|
|
346
|
+
* deferred-schema resolution → tool-result eviction → compaction. Compaction
|
|
347
|
+
* already runs reactively from `_checkCompaction`, after a response comes back
|
|
348
|
+
* over-threshold or overflowed; this method only adds the two stages that run
|
|
349
|
+
* *ahead of* every LLM request, so that reactive check is reached less often
|
|
350
|
+
* because the request it is reacting to is smaller. It does not call into
|
|
351
|
+
* compaction and does not need to.
|
|
352
|
+
*
|
|
353
|
+
* The wiring itself — where each stage attaches, and why they land in different
|
|
354
|
+
* seams (`transformContext` for eviction, `streamFunction` for schema
|
|
355
|
+
* projection) — lives in `./context/pipeline.ts`'s `installContextPipeline`,
|
|
356
|
+
* shared with the offline replay harness so there is one implementation, not
|
|
357
|
+
* two. This method only supplies this session's two dependencies: a contract
|
|
358
|
+
* lookup backed by `getToolDefinition`, and a budget thunk (never cached — see
|
|
359
|
+
* `_evictionBudget`, which reads live `this.model` / `this.settingsManager` on
|
|
360
|
+
* every call, so a model switch or settings edit mid-session takes effect on
|
|
361
|
+
* the very next request).
|
|
362
|
+
*/
|
|
363
|
+
_installContextPipeline() {
|
|
364
|
+
installContextPipeline(this.agent, {
|
|
365
|
+
contractLookup: (name) => this.getToolDefinition(name)?.contract,
|
|
366
|
+
loadedSchemaNames: this._loadedDeferredSchemas,
|
|
367
|
+
evictionBudget: () => this._evictionBudget(),
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Token budget for `evictToolResults`'s outbound pass, derived from the same
|
|
372
|
+
* quantities compaction already uses for its own threshold
|
|
373
|
+
* (`getCompactionSettings()`; see `shouldCompact` in
|
|
374
|
+
* `core/compaction/compaction.ts`). The formula itself is `./context/
|
|
375
|
+
* pipeline.ts`'s `evictionBudget` — see that function's comment for the "why
|
|
376
|
+
* half of headroom" reasoning; this method only supplies production's real
|
|
377
|
+
* `contextWindow` / `reserveTokens` inputs.
|
|
378
|
+
*/
|
|
379
|
+
_evictionBudget() {
|
|
380
|
+
const contextWindow = this.model?.contextWindow ?? 0;
|
|
381
|
+
const { reserveTokens } = this.settingsManager.getCompactionSettings();
|
|
382
|
+
return evictionBudget(contextWindow, reserveTokens);
|
|
383
|
+
}
|
|
294
384
|
// =========================================================================
|
|
295
385
|
// Event Subscription
|
|
296
386
|
// =========================================================================
|
|
@@ -611,12 +701,16 @@ export class AgentSession {
|
|
|
611
701
|
* Get all configured tools with name, description, parameter schema, prompt guidelines, and source metadata.
|
|
612
702
|
*/
|
|
613
703
|
getAllTools() {
|
|
614
|
-
|
|
704
|
+
const schemaToolActive = this.getActiveToolNames().includes("tool_schema");
|
|
705
|
+
return Array.from(this._toolDefinitions.values())
|
|
706
|
+
.filter(({ definition }) => definition.name !== "tool_schema" || schemaToolActive)
|
|
707
|
+
.map(({ definition, sourceInfo }) => ({
|
|
615
708
|
name: definition.name,
|
|
616
709
|
description: definition.description,
|
|
617
710
|
parameters: definition.parameters,
|
|
618
711
|
promptGuidelines: definition.promptGuidelines,
|
|
619
712
|
sourceInfo,
|
|
713
|
+
unclassified: !("contract" in definition),
|
|
620
714
|
}));
|
|
621
715
|
}
|
|
622
716
|
getToolDefinition(name) {
|
|
@@ -2012,6 +2106,14 @@ export class AgentSession {
|
|
|
2012
2106
|
}
|
|
2013
2107
|
}
|
|
2014
2108
|
}
|
|
2109
|
+
const hasDeferredActiveTool = nextActiveToolNames.some((name) => {
|
|
2110
|
+
const contract = definitionRegistry.get(name)?.definition
|
|
2111
|
+
?.contract;
|
|
2112
|
+
return contract?.context.deferSchema === true;
|
|
2113
|
+
});
|
|
2114
|
+
if (hasDeferredActiveTool && this._toolRegistry.has("tool_schema")) {
|
|
2115
|
+
nextActiveToolNames.push("tool_schema");
|
|
2116
|
+
}
|
|
2015
2117
|
this.setActiveToolsByName([...new Set(nextActiveToolNames)]);
|
|
2016
2118
|
}
|
|
2017
2119
|
_buildRuntime(options) {
|
|
@@ -2027,6 +2129,22 @@ export class AgentSession {
|
|
|
2027
2129
|
read: { autoResizeImages },
|
|
2028
2130
|
bash: { commandPrefix: shellCommandPrefix, shellPath },
|
|
2029
2131
|
});
|
|
2132
|
+
baseToolDefinitions.tool_schema = createToolSchemaToolDefinition({
|
|
2133
|
+
getTool: (name) => {
|
|
2134
|
+
if (!this.getActiveToolNames().includes(name))
|
|
2135
|
+
return undefined;
|
|
2136
|
+
const definition = this._toolDefinitions.get(name)?.definition;
|
|
2137
|
+
return definition ? { name: definition.name, parameters: definition.parameters } : undefined;
|
|
2138
|
+
},
|
|
2139
|
+
markLoaded: (name) => {
|
|
2140
|
+
this._loadedDeferredSchemas.add(name);
|
|
2141
|
+
},
|
|
2142
|
+
});
|
|
2143
|
+
baseToolDefinitions.todo_write = createTodoWriteToolDefinition({
|
|
2144
|
+
write: (todos) => {
|
|
2145
|
+
this.sessionManager.appendCustomEntry(TODO_CUSTOM_ENTRY_TYPE, todos);
|
|
2146
|
+
},
|
|
2147
|
+
});
|
|
2030
2148
|
this._baseToolDefinitions = new Map(Object.entries(baseToolDefinitions).map(([name, tool]) => [name, tool]));
|
|
2031
2149
|
const extensionsResult = this._resourceLoader.getExtensions();
|
|
2032
2150
|
if (options.flagValues) {
|