apex-code 0.0.1-alpha.0 → 0.0.1-alpha.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 +471 -0
- package/README.md +74 -680
- package/dist/cli/args.d.ts +21 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +119 -15
- 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/concurrent-session.d.ts +3 -0
- package/dist/cli/concurrent-session.d.ts.map +1 -0
- package/dist/cli/concurrent-session.js +13 -0
- package/dist/cli/concurrent-session.js.map +1 -0
- 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/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js +2 -1
- package/dist/cli/file-processor.js.map +1 -1
- 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 +99 -16
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +5 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +35 -20
- 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 +28 -0
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +140 -4
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +121 -9
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +364 -123
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts +4 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +17 -14
- 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 +11 -10
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +3 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +4 -3
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +41 -32
- package/dist/core/compaction/compaction.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/defaults.d.ts +1 -0
- package/dist/core/defaults.d.ts.map +1 -1
- package/dist/core/defaults.js +9 -0
- package/dist/core/defaults.js.map +1 -1
- 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 +355 -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 +4 -0
- package/dist/core/experimental.d.ts.map +1 -1
- package/dist/core/experimental.js +6 -1
- package/dist/core/experimental.js.map +1 -1
- package/dist/core/extensions/index.d.ts +2 -2
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +115 -48
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/types.d.ts +44 -9
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js +3 -0
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts +1 -1
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +1 -1
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/http-dispatcher.d.ts +1 -2
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/http-dispatcher.js +2 -17
- package/dist/core/http-dispatcher.js.map +1 -1
- package/dist/core/http-idle-timeout.d.ts +12 -0
- package/dist/core/http-idle-timeout.d.ts.map +1 -0
- package/dist/core/http-idle-timeout.js +27 -0
- package/dist/core/http-idle-timeout.js.map +1 -0
- 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/keybindings.d.ts +38 -13
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +26 -5
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/lsp/client.d.ts +78 -0
- package/dist/core/lsp/client.d.ts.map +1 -0
- package/dist/core/lsp/client.js +494 -0
- package/dist/core/lsp/client.js.map +1 -0
- package/dist/core/lsp/diagnostics.d.ts +47 -0
- package/dist/core/lsp/diagnostics.d.ts.map +1 -0
- package/dist/core/lsp/diagnostics.js +224 -0
- package/dist/core/lsp/diagnostics.js.map +1 -0
- package/dist/core/lsp/pool.d.ts +48 -0
- package/dist/core/lsp/pool.d.ts.map +1 -0
- package/dist/core/lsp/pool.js +150 -0
- package/dist/core/lsp/pool.js.map +1 -0
- package/dist/core/lsp/registry.d.ts +49 -0
- package/dist/core/lsp/registry.d.ts.map +1 -0
- package/dist/core/lsp/registry.js +215 -0
- package/dist/core/lsp/registry.js.map +1 -0
- package/dist/core/lsp/status.d.ts +23 -0
- package/dist/core/lsp/status.d.ts.map +1 -0
- package/dist/core/lsp/status.js +35 -0
- package/dist/core/lsp/status.js.map +1 -0
- package/dist/core/lsp/sync.d.ts +13 -0
- package/dist/core/lsp/sync.d.ts.map +1 -0
- package/dist/core/lsp/sync.js +71 -0
- package/dist/core/lsp/sync.js.map +1 -0
- package/dist/core/model-config.d.ts +18 -0
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +25 -6
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-resolver.d.ts +21 -0
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +73 -8
- 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/models-store.d.ts.map +1 -1
- package/dist/core/models-store.js +2 -1
- package/dist/core/models-store.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 +40 -16
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/permissions/gate.d.ts +42 -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 +45 -0
- package/dist/core/permissions/startup.d.ts.map +1 -0
- package/dist/core/permissions/startup.js +63 -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/pi-manifest.d.ts.map +1 -1
- package/dist/core/pi-manifest.js +2 -1
- package/dist/core/pi-manifest.js.map +1 -1
- 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 +22 -17
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +3 -2
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sandbox/bwrap-arguments.d.ts +52 -0
- package/dist/core/sandbox/bwrap-arguments.d.ts.map +1 -0
- package/dist/core/sandbox/bwrap-arguments.js +86 -0
- package/dist/core/sandbox/bwrap-arguments.js.map +1 -0
- 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 +22 -0
- package/dist/core/sandbox/child-entry.js.map +1 -0
- package/dist/core/sandbox/cli-launch.d.ts +88 -0
- package/dist/core/sandbox/cli-launch.d.ts.map +1 -0
- package/dist/core/sandbox/cli-launch.js +272 -0
- package/dist/core/sandbox/cli-launch.js.map +1 -0
- package/dist/core/sandbox/cli-supervisor.d.ts +30 -0
- package/dist/core/sandbox/cli-supervisor.d.ts.map +1 -0
- package/dist/core/sandbox/cli-supervisor.js +123 -0
- package/dist/core/sandbox/cli-supervisor.js.map +1 -0
- package/dist/core/sandbox/default-hosts.d.ts +28 -0
- package/dist/core/sandbox/default-hosts.d.ts.map +1 -0
- package/dist/core/sandbox/default-hosts.js +69 -0
- package/dist/core/sandbox/default-hosts.js.map +1 -0
- package/dist/core/sandbox/full-access.d.ts +28 -0
- package/dist/core/sandbox/full-access.d.ts.map +1 -0
- package/dist/core/sandbox/full-access.js +63 -0
- package/dist/core/sandbox/full-access.js.map +1 -0
- package/dist/core/sandbox/git-identity.d.ts +57 -0
- package/dist/core/sandbox/git-identity.d.ts.map +1 -0
- package/dist/core/sandbox/git-identity.js +78 -0
- package/dist/core/sandbox/git-identity.js.map +1 -0
- package/dist/core/sandbox/host-approval.d.ts +42 -0
- package/dist/core/sandbox/host-approval.d.ts.map +1 -0
- package/dist/core/sandbox/host-approval.js +99 -0
- package/dist/core/sandbox/host-approval.js.map +1 -0
- package/dist/core/sandbox/linux-backend.d.ts +46 -0
- package/dist/core/sandbox/linux-backend.d.ts.map +1 -0
- package/dist/core/sandbox/linux-backend.js +304 -0
- package/dist/core/sandbox/linux-backend.js.map +1 -0
- package/dist/core/sandbox/macos-backend.d.ts +28 -0
- package/dist/core/sandbox/macos-backend.d.ts.map +1 -0
- package/dist/core/sandbox/macos-backend.js +313 -0
- package/dist/core/sandbox/macos-backend.js.map +1 -0
- package/dist/core/sandbox/network-proxy.d.ts +38 -0
- package/dist/core/sandbox/network-proxy.d.ts.map +1 -0
- package/dist/core/sandbox/network-proxy.js +153 -0
- package/dist/core/sandbox/network-proxy.js.map +1 -0
- package/dist/core/sandbox/network-refusal.d.ts +24 -0
- package/dist/core/sandbox/network-refusal.d.ts.map +1 -0
- package/dist/core/sandbox/network-refusal.js +72 -0
- package/dist/core/sandbox/network-refusal.js.map +1 -0
- package/dist/core/sandbox/policy.d.ts +40 -0
- package/dist/core/sandbox/policy.d.ts.map +1 -0
- package/dist/core/sandbox/policy.js +55 -0
- package/dist/core/sandbox/policy.js.map +1 -0
- package/dist/core/sandbox/profiles.d.ts +25 -0
- package/dist/core/sandbox/profiles.d.ts.map +1 -0
- package/dist/core/sandbox/profiles.js +23 -0
- package/dist/core/sandbox/profiles.js.map +1 -0
- package/dist/core/sandbox/rpc/command-client.d.ts +28 -0
- package/dist/core/sandbox/rpc/command-client.d.ts.map +1 -0
- package/dist/core/sandbox/rpc/command-client.js +86 -0
- package/dist/core/sandbox/rpc/command-client.js.map +1 -0
- package/dist/core/sandbox/rpc/command-proxy.d.ts +48 -0
- package/dist/core/sandbox/rpc/command-proxy.d.ts.map +1 -0
- package/dist/core/sandbox/rpc/command-proxy.js +120 -0
- package/dist/core/sandbox/rpc/command-proxy.js.map +1 -0
- package/dist/core/sandbox/rpc/credential-client.d.ts +20 -0
- package/dist/core/sandbox/rpc/credential-client.d.ts.map +1 -0
- package/dist/core/sandbox/rpc/credential-client.js +170 -0
- package/dist/core/sandbox/rpc/credential-client.js.map +1 -0
- package/dist/core/sandbox/rpc/credential-proxy.d.ts +44 -0
- package/dist/core/sandbox/rpc/credential-proxy.d.ts.map +1 -0
- package/dist/core/sandbox/rpc/credential-proxy.js +287 -0
- package/dist/core/sandbox/rpc/credential-proxy.js.map +1 -0
- package/dist/core/sandbox/rpc/framing.d.ts +35 -0
- package/dist/core/sandbox/rpc/framing.d.ts.map +1 -0
- package/dist/core/sandbox/rpc/framing.js +114 -0
- package/dist/core/sandbox/rpc/framing.js.map +1 -0
- package/dist/core/sandbox/rpc/git-credential-helper.d.ts +40 -0
- package/dist/core/sandbox/rpc/git-credential-helper.d.ts.map +1 -0
- package/dist/core/sandbox/rpc/git-credential-helper.js +152 -0
- package/dist/core/sandbox/rpc/git-credential-helper.js.map +1 -0
- package/dist/core/sandbox/rpc/git-credential-proxy.d.ts +48 -0
- package/dist/core/sandbox/rpc/git-credential-proxy.d.ts.map +1 -0
- package/dist/core/sandbox/rpc/git-credential-proxy.js +142 -0
- package/dist/core/sandbox/rpc/git-credential-proxy.js.map +1 -0
- package/dist/core/sandbox/supervisor-temp.d.ts +18 -0
- package/dist/core/sandbox/supervisor-temp.d.ts.map +1 -0
- package/dist/core/sandbox/supervisor-temp.js +21 -0
- package/dist/core/sandbox/supervisor-temp.js.map +1 -0
- package/dist/core/sandbox/supervisor.d.ts +51 -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/terminal-handoff.d.ts +45 -0
- package/dist/core/sandbox/terminal-handoff.d.ts.map +1 -0
- package/dist/core/sandbox/terminal-handoff.js +176 -0
- package/dist/core/sandbox/terminal-handoff.js.map +1 -0
- package/dist/core/sandbox/terminal-size.d.ts +40 -0
- package/dist/core/sandbox/terminal-size.d.ts.map +1 -0
- package/dist/core/sandbox/terminal-size.js +105 -0
- package/dist/core/sandbox/terminal-size.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 +32 -41
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +161 -6
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-export.d.ts +4 -0
- package/dist/core/session-export.d.ts.map +1 -0
- package/dist/core/session-export.js +32 -0
- package/dist/core/session-export.js.map +1 -0
- package/dist/core/session-lease.d.ts +31 -0
- package/dist/core/session-lease.d.ts.map +1 -0
- package/dist/core/session-lease.js +138 -0
- package/dist/core/session-lease.js.map +1 -0
- package/dist/core/session-manager.d.ts +46 -2
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +62 -4
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-share.d.ts +31 -0
- package/dist/core/session-share.d.ts.map +1 -0
- package/dist/core/session-share.js +45 -0
- package/dist/core/session-share.js.map +1 -0
- package/dist/core/settings-diagnostics.d.ts +9 -0
- package/dist/core/settings-diagnostics.d.ts.map +1 -0
- package/dist/core/settings-diagnostics.js +21 -0
- package/dist/core/settings-diagnostics.js.map +1 -0
- package/dist/core/settings-manager.d.ts +92 -9
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +138 -36
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts +19 -7
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +128 -52
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +5 -2
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts +2 -2
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +59 -68
- 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 +40 -4
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +183 -32
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/contract.d.ts +183 -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 +90 -0
- package/dist/core/tools/delegate.js.map +1 -0
- package/dist/core/tools/diagnostics.d.ts +39 -0
- package/dist/core/tools/diagnostics.d.ts.map +1 -0
- package/dist/core/tools/diagnostics.js +62 -0
- package/dist/core/tools/diagnostics.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +0 -5
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +2 -5
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/edit.d.ts +12 -2
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +61 -10
- 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 +13 -1
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts +4 -2
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +47 -10
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts +51 -6
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +145 -2
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/ls.d.ts +4 -2
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +17 -1
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/lsp.d.ts +62 -0
- package/dist/core/tools/lsp.d.ts.map +1 -0
- package/dist/core/tools/lsp.js +216 -0
- package/dist/core/tools/lsp.js.map +1 -0
- 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/powershell.d.ts +16 -0
- package/dist/core/tools/powershell.d.ts.map +1 -0
- package/dist/core/tools/powershell.js +39 -0
- package/dist/core/tools/powershell.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 +14 -0
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/skill-search.d.ts +32 -0
- package/dist/core/tools/skill-search.d.ts.map +1 -0
- package/dist/core/tools/skill-search.js +56 -0
- package/dist/core/tools/skill-search.js.map +1 -0
- 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-exa.d.ts +33 -0
- package/dist/core/tools/web-search-exa.d.ts.map +1 -0
- package/dist/core/tools/web-search-exa.js +128 -0
- package/dist/core/tools/web-search-exa.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 +16 -2
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +48 -2
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/trust-manager.d.ts.map +1 -1
- package/dist/core/trust-manager.js +2 -1
- package/dist/core/trust-manager.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/core/web-search-provider.d.ts +64 -0
- package/dist/core/web-search-provider.d.ts.map +1 -0
- package/dist/core/web-search-provider.js +149 -0
- package/dist/core/web-search-provider.js.map +1 -0
- package/dist/extensions/llama/index.d.ts.map +1 -1
- package/dist/extensions/llama/index.js +2 -0
- package/dist/extensions/llama/index.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +6 -2
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/index.d.ts +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +5 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +87 -22
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +6 -5
- 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/custom-editor.d.ts +72 -1
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +338 -1
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts +7 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.js +11 -2
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts +4 -0
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-selector.js +24 -6
- package/dist/modes/interactive/components/extension-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 +17 -41
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
- package/dist/modes/interactive/components/first-use-hints.d.ts +8 -0
- package/dist/modes/interactive/components/first-use-hints.d.ts.map +1 -0
- package/dist/modes/interactive/components/first-use-hints.js +22 -0
- package/dist/modes/interactive/components/first-use-hints.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts +23 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +182 -21
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +2 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +2 -0
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +31 -9
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +236 -96
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +25 -5
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +226 -58
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
- package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-submenu.js +165 -0
- package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
- package/dist/modes/interactive/components/splash-header.d.ts +66 -0
- package/dist/modes/interactive/components/splash-header.d.ts.map +1 -0
- package/dist/modes/interactive/components/splash-header.js +180 -0
- package/dist/modes/interactive/components/splash-header.js.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +15 -3
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +74 -17
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +16 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +113 -35
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tool-panel.d.ts +30 -0
- package/dist/modes/interactive/components/tool-panel.d.ts.map +1 -0
- package/dist/modes/interactive/components/tool-panel.js +130 -0
- package/dist/modes/interactive/components/tool-panel.js.map +1 -0
- package/dist/modes/interactive/external-editor.d.ts.map +1 -1
- package/dist/modes/interactive/external-editor.js +60 -10
- package/dist/modes/interactive/external-editor.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +61 -5
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +642 -203
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/model-catalog-refresh.d.ts +7 -0
- package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -0
- package/dist/modes/interactive/model-catalog-refresh.js +34 -0
- package/dist/modes/interactive/model-catalog-refresh.js.map +1 -0
- package/dist/modes/interactive/theme/apex.json +93 -0
- package/dist/modes/interactive/theme/dark.json +2 -0
- package/dist/modes/interactive/theme/light.json +3 -1
- package/dist/modes/interactive/theme/theme-controller.d.ts +10 -2
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.js +25 -11
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.json +11 -3
- package/dist/modes/interactive/theme/theme.d.ts +14 -3
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +65 -10
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/json-event.d.ts +18 -12
- package/dist/modes/json-event.d.ts.map +1 -1
- package/dist/modes/json-event.js +22 -5
- package/dist/modes/json-event.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +2 -1
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/package-manager-cli.d.ts +1 -0
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +211 -14
- 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 +8 -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/themes/apex-logo.d.ts +41 -0
- package/dist/themes/apex-logo.d.ts.map +1 -0
- package/dist/themes/apex-logo.js +35 -0
- package/dist/themes/apex-logo.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/changelog.d.ts +7 -2
- package/dist/utils/changelog.d.ts.map +1 -1
- package/dist/utils/changelog.js +82 -13
- package/dist/utils/changelog.js.map +1 -1
- 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/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +2 -1
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/management-http.d.ts +5 -3
- package/dist/utils/management-http.d.ts.map +1 -1
- package/dist/utils/management-http.js +14 -10
- package/dist/utils/management-http.js.map +1 -1
- package/dist/utils/shell.d.ts +3 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +17 -5
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/syntax-highlight.d.ts +1 -0
- package/dist/utils/syntax-highlight.d.ts.map +1 -1
- package/dist/utils/syntax-highlight.js +60 -1
- package/dist/utils/syntax-highlight.js.map +1 -1
- package/dist/utils/text.d.ts +8 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +9 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/utils/tools-manager.d.ts +70 -2
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +280 -124
- package/dist/utils/tools-manager.js.map +1 -1
- package/dist/utils/version-check.d.ts +7 -5
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +25 -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 +39 -24
- package/docs/containerization.md +24 -21
- package/docs/custom-provider.md +15 -12
- package/docs/development.md +11 -11
- package/docs/environment-variables.md +37 -77
- package/docs/extensions.md +68 -54
- package/docs/index.md +12 -24
- package/docs/json.md +18 -11
- package/docs/keybindings.md +18 -12
- package/docs/llama-cpp.md +9 -7
- package/docs/models.md +17 -11
- package/docs/packages.md +47 -43
- package/docs/prompt-templates.md +3 -3
- package/docs/providers.md +10 -10
- package/docs/quickstart.md +49 -32
- package/docs/rpc.md +35 -18
- package/docs/sdk.md +20 -6
- package/docs/security.md +18 -18
- package/docs/session-format.md +9 -9
- package/docs/sessions.md +13 -13
- package/docs/settings.md +83 -16
- package/docs/shell-aliases.md +1 -1
- package/docs/skills.md +66 -15
- package/docs/terminal-setup.md +44 -19
- package/docs/termux.md +4 -4
- package/docs/themes.md +32 -11
- package/docs/tmux.md +4 -4
- package/docs/tui.md +5 -5
- package/docs/usage.md +61 -53
- package/docs/windows.md +24 -2
- package/examples/extensions/border-status-editor.ts +1 -1
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +2 -2
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/git-checkpoint.ts +2 -2
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/notify.ts +3 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/subagent/README.md +3 -1
- package/examples/extensions/subagent/agents.ts +40 -9
- package/examples/extensions/subagent/index.ts +27 -4
- package/examples/extensions/titlebar-spinner.ts +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/rpc-extension-ui.ts +1 -1
- package/examples/sdk/06-extensions.ts +1 -1
- package/examples/sdk/README.md +1 -1
- package/npm-shrinkwrap.json +280 -445
- package/package.json +9 -12
- 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
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,476 @@
|
|
|
1
|
+
# Apex Code changelog
|
|
2
|
+
|
|
3
|
+
## [0.0.1-alpha.10] - 2026-08-28
|
|
4
|
+
|
|
5
|
+
- Commits made inside a session now carry your identity. `--tmpfs /home` leaves git's global
|
|
6
|
+
config resolution pointing at an empty directory, so every fresh workspace failed with
|
|
7
|
+
`Author identity unknown` and the only cure was setting `user.name` and `user.email` by hand,
|
|
8
|
+
per repository, forever. The supervisor still sees the host home before the sandbox hides it,
|
|
9
|
+
so it reads those two keys there and projects a synthesized config read-only. Synthesized
|
|
10
|
+
rather than copied: a real `~/.gitconfig` can carry a `credential.helper` that runs a command
|
|
11
|
+
or an `insteadOf` rule holding a token, and projecting the file wholesale would hand both to
|
|
12
|
+
the child. Repository-scope config still wins inside the session, exactly as it would on the
|
|
13
|
+
host.
|
|
14
|
+
|
|
15
|
+
- A request to a host the allowlist does not name now pauses and asks instead of failing.
|
|
16
|
+
Previously the allowlist was fixed when the session started, so a refused host was terminal:
|
|
17
|
+
the only remedy was to exit, edit global settings, and start again. Approving permits that one
|
|
18
|
+
host and nothing else for the rest of the session, is never written to settings, and declining
|
|
19
|
+
is not remembered -- a second attempt asks again, because a cached refusal is indistinguishable
|
|
20
|
+
to the user from the boundary having quietly stopped asking. Concurrent connections to the same
|
|
21
|
+
refused host raise one prompt rather than one each. Non-interactive modes (`--print`,
|
|
22
|
+
`--mode json`, `--mode rpc`) still deny without asking, now because the approver is only built
|
|
23
|
+
when a terminal exists rather than because of a mode check that could be forgotten.
|
|
24
|
+
|
|
25
|
+
The prompt is drawn by the supervisor and answered on its terminal, not by the session. That is
|
|
26
|
+
a security property rather than a presentation choice: the channel the child would ask over has
|
|
27
|
+
no peer authentication, so an approval asserted from inside the boundary would be
|
|
28
|
+
indistinguishable from one forged by a postinstall script or a git hook -- exactly the code the
|
|
29
|
+
boundary exists to contain. The session's only role is to stop drawing while the human answers.
|
|
30
|
+
See `docs/adr/0023-supervisor-owned-escalation-authority.md`.
|
|
31
|
+
|
|
32
|
+
- `git push` works from inside a session, without a credential ever entering the workspace. A git
|
|
33
|
+
credential cannot be projected the way `auth.json` is, because it is not one file with a stable
|
|
34
|
+
shape -- it is whatever the host's configured helper answers per host, and reimplementing that
|
|
35
|
+
resolution in the child would be a second, quietly diverging copy of git's own. So the
|
|
36
|
+
credential stays on the host: the child runs a helper speaking git's ordinary protocol, and the
|
|
37
|
+
supervisor answers by running `git credential fill` in its own environment. What crosses the
|
|
38
|
+
boundary is the answer to one question about one host. The host must already be reachable by
|
|
39
|
+
the session, since git only asks after a server challenged it and a request for an unreachable
|
|
40
|
+
host is not git doing its job; and you must release it, once per host, for that session only.
|
|
41
|
+
Only reads are served, so the session still cannot rewrite your credential store.
|
|
42
|
+
|
|
43
|
+
- A command the boundary refuses can now run once, with your approval, in a separate sandbox. A
|
|
44
|
+
refused write is refused by the kernel inside a namespace whose mounts are fixed for its
|
|
45
|
+
lifetime, so unlike a refused host there is nothing to hold open while a human decides. The
|
|
46
|
+
approved command therefore runs in a second child, and the session's own namespace is never
|
|
47
|
+
modified -- its next attempt at the same operation is refused exactly as before. Nothing is
|
|
48
|
+
remembered between commands, because a command is not a stable subject to grant against and a
|
|
49
|
+
remembered approval would silently cover the next one naming the same directory. See
|
|
50
|
+
`docs/adr/0024-per-command-sandbox-escalation.md`.
|
|
51
|
+
|
|
52
|
+
- `--add-dir <path>` makes another directory writable, and `--sandbox danger-full-access` runs
|
|
53
|
+
with no OS boundary at all, announcing itself and asking for confirmation at a terminal. The
|
|
54
|
+
opt-out was deliberately withheld until now: shipping an escape hatch into a boundary that
|
|
55
|
+
could not be worked with would have made the hatch the ordinary way to use the product. With
|
|
56
|
+
identity, network escalation, and the credential channel in place, the reasons to reach for it
|
|
57
|
+
are gone. Neither flag can be set from project settings, so a repository cannot grant itself
|
|
58
|
+
either; and turning the sandbox off cannot come from settings of any scope, only from a flag
|
|
59
|
+
typed for that run.
|
|
60
|
+
|
|
61
|
+
- `--permission-profile <name>` selects a saved combination of allowed hosts and writable roots
|
|
62
|
+
from global settings. It carries boundary inputs only -- it cannot express a permission mode,
|
|
63
|
+
because conflating the tool gate with the OS boundary is the misreading that makes
|
|
64
|
+
`bypassPermissions` look like a sandbox escape, and it cannot express "no boundary" either.
|
|
65
|
+
Unknown keys are ignored rather than rejected, so a profile written for a later version does
|
|
66
|
+
not break this one.
|
|
67
|
+
|
|
68
|
+
- Two read-only files projected from the same host directory no longer hide each other. Each
|
|
69
|
+
projection laid a `tmpfs` over the file's parent, so a second one replaced the first and the
|
|
70
|
+
child got `ENOENT` for a file that was supposed to be there. Only one projection existed until
|
|
71
|
+
this release, which is why nothing had caught it; projections are now grouped so one `tmpfs`
|
|
72
|
+
per directory carries every file bound into it.
|
|
73
|
+
|
|
74
|
+
- Documentation that contradicted itself is fixed. The README said `/share` uses your
|
|
75
|
+
authenticated GitHub CLI forty lines after saying the sandbox hides those credentials; the
|
|
76
|
+
roadmap listed interactive escalation as delivered Phase 2b scope while ADR 0005 deferred it;
|
|
77
|
+
and the user guide said the sandbox restricts writes and network "to what the permission layer
|
|
78
|
+
has allowed", which conflates two independent layers -- the boundary is fixed by the supervisor
|
|
79
|
+
before the gate ever runs.
|
|
80
|
+
|
|
81
|
+
## [0.0.1-alpha.9] - 2026-08-28
|
|
82
|
+
|
|
83
|
+
## [0.0.1-alpha.8] - 2026-08-27
|
|
84
|
+
|
|
85
|
+
- Hardened the cross-platform sandbox regression suite: POSIX-only credential-channel lifecycle cases are skipped on Windows, dead-supervisor cleanup uses a genuinely exited process, and macOS session-lease assertions compare canonical paths.
|
|
86
|
+
|
|
87
|
+
- Sandboxed credential writes now preserve the credential store's cross-process mutation
|
|
88
|
+
contract. The original channel read a credential in the child and later replaced it on
|
|
89
|
+
the host, so concurrent OAuth refreshes could derive from the same token and overwrite
|
|
90
|
+
each other. The supervisor now holds the host lock while the child callback decides the
|
|
91
|
+
mutation. First-run `/login` also creates and writes the canonical host `auth.json`
|
|
92
|
+
instead of silently saving under workspace sandbox state. The protocol validates roots
|
|
93
|
+
and credential shapes, uses byte and connection limits, keeps its socket in a private
|
|
94
|
+
directory, cleans up active clients and dead-supervisor socket artifacts, and never
|
|
95
|
+
includes a rejected secret in audit text.
|
|
96
|
+
|
|
97
|
+
- A custom system prompt no longer throws away what the active tools contribute. Setting one,
|
|
98
|
+
with `--system-prompt` or a discovered `SYSTEM.md`, replaced the entire prompt: not only the
|
|
99
|
+
Apex-authored prose it is meant to replace, but also the Available tools list and every
|
|
100
|
+
guideline the registered tools and extensions add. A session started that way sent the model
|
|
101
|
+
a bare handful of lines, so guidance like preferring `grep` over `bash` for searching simply
|
|
102
|
+
never arrived, and the model had no prose inventory of its own tools. The replay harness had
|
|
103
|
+
been computing both and passing them alongside the custom prompt since it was written, which
|
|
104
|
+
is how the drop surfaced. A custom prompt now replaces the Apex-authored prose only. Tool
|
|
105
|
+
snippets, tool guidelines, project context, skills, and the working directory are all still
|
|
106
|
+
delivered, because none of them are the prompt's text to override. This adds about 237 tokens
|
|
107
|
+
to a custom-prompt session that registers the full tool set, and the enforced static-prefix
|
|
108
|
+
budget was re-measured accordingly.
|
|
109
|
+
|
|
110
|
+
- `web_search` snippets now end on a whole word. The truncation budget cut at an exact
|
|
111
|
+
character count, so a long highlight could end "specificatio" -- which reads as
|
|
112
|
+
corruption rather than as a limit. The trim now backs up to the last word boundary
|
|
113
|
+
inside the budget; a snippet whose first word alone exceeds the budget still cuts
|
|
114
|
+
hard, because an intact fragment beats an empty one.
|
|
115
|
+
|
|
116
|
+
- The suite harness now scrubs every provider credential variable the registry reads,
|
|
117
|
+
not only the `*_API_KEY`-shaped ones. Regression `7209` broke on a `GEMINI_API_KEY`,
|
|
118
|
+
and the fix matched credential-shaped suffixes -- but `HF_TOKEN`,
|
|
119
|
+
`COPILOT_GITHUB_TOKEN`, the Bedrock container/web-identity variables, and the Vertex
|
|
120
|
+
ADC trio reach the registry through names no suffix covers, so a developer exporting
|
|
121
|
+
any of them still broke the faux-only assumption the suite is built on. The names and
|
|
122
|
+
suffixes together now cover every source `getEnvApiKey` consults, and a test pins
|
|
123
|
+
that coverage so a new provider's variable is caught the day it matters.
|
|
124
|
+
|
|
125
|
+
- Starting a sandboxed session no longer pays for a lock library and an HTTP stack it
|
|
126
|
+
never uses. The supervisor loads `settings-manager` on every launch to resolve the
|
|
127
|
+
network allowlist before the child exists, and that module statically imported
|
|
128
|
+
`proper-lockfile` (write-path only) and `http-dispatcher` (which loads `undici`) for
|
|
129
|
+
two small timeout definitions. Measured with the committed
|
|
130
|
+
`scripts/measure-supervisor-imports.mjs --dist`, A/B on one machine: the
|
|
131
|
+
settings-manager import fell from 1969ms to 577ms and the whole supervisor import path
|
|
132
|
+
from 2729ms to 812ms under load-23 (calmer runs: ~197ms to ~110ms). The lock library
|
|
133
|
+
is now required on first settings write, keeping `withLock` synchronous, and the
|
|
134
|
+
idle-timeout default/parser moved to a leaf module the dispatcher re-exports -- one
|
|
135
|
+
definition, but loading a settings file no longer costs an HTTP stack.
|
|
136
|
+
|
|
137
|
+
- `/login` now works inside a sandboxed session. Every interactive session runs under the
|
|
138
|
+
OS sandbox, which mounts `auth.json` read-only -- correct for keeping the agent from
|
|
139
|
+
tampering with credentials, but it also meant the documented way to store a provider key
|
|
140
|
+
failed with a raw `EACCES` pointing at a file the user could plainly write from their own
|
|
141
|
+
shell. Credential writes now travel a supervisor-owned unix socket instead: the child asks,
|
|
142
|
+
the supervisor writes, and only literal secrets are accepted. A value that would resolve
|
|
143
|
+
as a `!command` or `$VAR` reference is refused and the refusal says why, because such a
|
|
144
|
+
value written through this channel would be a sandbox escape (the host executes it on the
|
|
145
|
+
next resolve). Reads are unchanged on both sides of the boundary, the read-only mount
|
|
146
|
+
stays, and every write -- accepted or refused -- appears in the sandbox violation tail
|
|
147
|
+
the supervisor prints on exit. Linux is verified by a live sandboxed turn in the suite;
|
|
148
|
+
macOS is verified at the profile level, with the same live gate now running on macOS CI
|
|
149
|
+
rather than Linux only.
|
|
150
|
+
|
|
151
|
+
- `web_search` now has a backend. The tool has been registered in every session since Phase 4
|
|
152
|
+
but no search vendor was ever wired in, so the model would pick it when a search would help
|
|
153
|
+
and get an error telling it to pass a TypeScript SDK option — advice aimed at an embedder,
|
|
154
|
+
not at the person who asked the agent to look something up. An Exa backend now ships behind
|
|
155
|
+
the same `WebSearchOperations` seam that was already there. Set `EXA_API_KEY` and it works
|
|
156
|
+
with no further configuration; `webSearch.apiKey` in settings points at a different variable
|
|
157
|
+
or a secret manager (`!op read ...`) when you want one. The credential is resolved per search
|
|
158
|
+
rather than at session start, so it never goes stale mid-session. The backend's host is added
|
|
159
|
+
to the sandbox network allowlist automatically once a credential exists, so
|
|
160
|
+
`network.allowedHosts` needs no entry for it, and nothing is opened for anyone who never sets
|
|
161
|
+
a key. When no key resolves the tool still fails loudly rather than returning zero results.
|
|
162
|
+
|
|
163
|
+
- `grep` and `ls` now report how many results exist, not just where they stopped. Truncated
|
|
164
|
+
output said `200 matches limit reached`, which tells an agent it hit a wall but not whether
|
|
165
|
+
it saw 200 of 204 or 200 of 20,000 — so the usual next move was another call with a bigger
|
|
166
|
+
limit purely to find out. Both now say `200 of 847 total matches shown`, and the follow-up
|
|
167
|
+
call is only spent when it is actually worth spending. `ls` had the number in hand already.
|
|
168
|
+
`grep` gets it from ripgrep's own closing summary, which means the search now runs to
|
|
169
|
+
completion instead of being killed at the limit; the tail of an rg scan is far cheaper than
|
|
170
|
+
the model round trip it replaces. `find` is unchanged, because `fd` caps at the source and
|
|
171
|
+
an exact total there would mean a second full traversal.
|
|
172
|
+
|
|
173
|
+
## [0.0.1-alpha.7] - 2026-08-21
|
|
174
|
+
|
|
175
|
+
- The permission mode is now switchable from `/settings` instead of only at launch through
|
|
176
|
+
`--permission-mode`. Every mode already existed and worked; there was simply no way to
|
|
177
|
+
reach one from a running session, so `bypassPermissions` in particular was documented but
|
|
178
|
+
effectively unreachable for anyone who had already started typing. The row writes to user
|
|
179
|
+
scope (`~/.apex-code/agent/permissions.json`) and applies to the next tool call, because
|
|
180
|
+
the gate re-reads the store on every decision. Choosing `bypassPermissions` takes a
|
|
181
|
+
confirm step first, since the row is arrow-cyclable like every other setting and
|
|
182
|
+
"allow every tool call" should not be one stray keypress away. `--permission-mode`,
|
|
183
|
+
`.apex-code/permissions.json`, and `permissions.local.json` all still outrank a user-scope
|
|
184
|
+
write, so when one of them is in force the setting reports what actually applies rather
|
|
185
|
+
than appearing to save and doing nothing. Any mode other than `default` is now named in
|
|
186
|
+
the footer: `bypassPermissions` and `plan` both look like the agent misbehaving rather
|
|
187
|
+
than a mode being on. Shift+Tab still cycles the thinking level and is unchanged.
|
|
188
|
+
|
|
189
|
+
## [0.0.1-alpha.6] - 2026-08-21
|
|
190
|
+
|
|
191
|
+
- Fixed skills being invisible in every sandboxed session. The OS sandbox hides the host
|
|
192
|
+
home directory and repoints `HOME` and the agent directory into the workspace, so the two
|
|
193
|
+
directories skills discover from (`~/.apex-code/agent/skills`, `~/.agents/skills`) resolved
|
|
194
|
+
to empty workspace paths — no user-scope skill ever loaded, silently, since the sandbox
|
|
195
|
+
landed. Both roots are now mounted back in, read-only, at their original host paths, the
|
|
196
|
+
same mechanism already used for the host-owned credential file. A root that resolves —
|
|
197
|
+
directly or through a symlink — onto the host home directory or an ancestor of it is refused
|
|
198
|
+
rather than mounted, since mounting it would re-expose the whole home tree the sandbox
|
|
199
|
+
deliberately hides. A skill whose name isn't a valid slash-command token (spaces, capitals —
|
|
200
|
+
loading stays lenient, per the Agent Skills standard's own allowance) is now invocable
|
|
201
|
+
through a derived command token instead of never resolving.
|
|
202
|
+
- The system prompt now lists skill names only, alphabetically, bounded by a fixed token
|
|
203
|
+
budget, instead of each skill's full description and file location inline. A real
|
|
204
|
+
115-skill library cost 6,742 prefix tokens under the old shape against a 128-token margin
|
|
205
|
+
— unaffordable at any size, since it's the one prefix contributor sized by the user's own
|
|
206
|
+
data rather than the product. A new `skill_search` tool resolves a skill's description on
|
|
207
|
+
demand; `read` still loads its full content, unchanged. A library too large to list in full
|
|
208
|
+
states how many names were left out and points at `skill_search`.
|
|
209
|
+
- `/model` now picks in two steps: a provider first, then that provider's models. The single
|
|
210
|
+
flat list mixed every model from every configured provider into one scroll, so choosing one
|
|
211
|
+
meant reading past dozens of rows belonging to providers you weren't after. The provider
|
|
212
|
+
screen shows each provider's model count and marks the one the session is on. Escape steps
|
|
213
|
+
back to the provider list; ctrl+c still closes outright. Two cases skip the provider step,
|
|
214
|
+
where it would cost a keystroke and decide nothing: a single configured provider, and
|
|
215
|
+
`/model <search>`, which still opens straight onto matches drawn from every provider. Fuzzy
|
|
216
|
+
search, the all/scoped tab, and the background catalog refresh are unchanged.
|
|
217
|
+
|
|
218
|
+
## [0.0.1-alpha.5] - 2026-08-20
|
|
219
|
+
|
|
220
|
+
- `edit` and `write` now capture bounded language-server diagnostic evidence after a
|
|
221
|
+
mutation. Records identify the selected server when known, count diagnostics by
|
|
222
|
+
severity without storing diagnostic messages, distinguish stable unavailable states,
|
|
223
|
+
and report when the 1,000-diagnostic collector bound truncated a result. Sessions
|
|
224
|
+
without configured LSP diagnostics keep their previous tool contracts and evidence.
|
|
225
|
+
- The interactive startup screen now leads with the Apex Code brand mark and a short metadata
|
|
226
|
+
column — version, model, and working directory — rather than a keybinding list. The previous
|
|
227
|
+
screen spent four of its five elements on instructions and never showed which model was
|
|
228
|
+
loaded or which directory the session was rooted in, the two things that actually differ
|
|
229
|
+
between launches. The full keybinding cheatsheet moved behind `--verbose`. `ctrl+o` still
|
|
230
|
+
expands tool output and loaded resources; it just no longer unfolds the header.
|
|
231
|
+
- The startup mark degrades rather than breaking: a compact variant below 36 columns, and a
|
|
232
|
+
line-drawing variant under `terminal.symbolPreset: "ascii"`, whose users opted out of block
|
|
233
|
+
glyphs precisely because their terminal renders them badly. The metadata column is dropped
|
|
234
|
+
before it would be squeezed, and a long working directory keeps its leaf rather than its
|
|
235
|
+
root, so `cwd` still identifies the session.
|
|
236
|
+
- The first-run theme picker now shows the Apex Code mark instead of the leftover upstream one.
|
|
237
|
+
- New `apex` theme, now the default on dark terminals. It replaces the inherited palette's
|
|
238
|
+
unrelated accent/blue/cyan split with a single cool-teal primary that carries through the
|
|
239
|
+
accent and every border, over layered near-black surfaces. Semantic names (`primary`,
|
|
240
|
+
`surface`, `panel`, `grid`) replace raw colour names, and the harsher inherited values —
|
|
241
|
+
notably pure `#ffff00` for warnings — give way to desaturated ones that sit together.
|
|
242
|
+
`dark` and `light` are unchanged and still selectable via `/theme`; light terminals continue
|
|
243
|
+
to default to `light`, as there is no light brand palette yet.
|
|
244
|
+
- The input box now shows a teal `>` prompt marker on its first line, with wrapped and
|
|
245
|
+
additional lines indented to align under it, and a dim placeholder — `Ask anything, / for
|
|
246
|
+
commands, ! for bash` — while the input is empty. On a terminal too narrow to spare the
|
|
247
|
+
marker's columns, the box silently falls back to the previous full-width layout rather than
|
|
248
|
+
overflowing.
|
|
249
|
+
- A leading `/command` in the input box is now tinted with the accent colour as you type it,
|
|
250
|
+
so it reads as an invocation rather than as ordinary text. Arguments after the command stay
|
|
251
|
+
plain, and the tint survives the cursor landing in the middle of the token.
|
|
252
|
+
- Fixed the startup "What's New" section replaying the entire changelog — roughly 270 entries
|
|
253
|
+
going back to November 2025 — on every single launch. Three defects compounded. The stored
|
|
254
|
+
"last seen" version was parsed with `split(".").map(Number)`, so any prerelease
|
|
255
|
+
(`0.0.1-alpha.4`) collapsed to `0.0.0` and every entry in the file compared newer; because
|
|
256
|
+
the version was then re-stamped in the same unparseable form, the flood repeated on the next
|
|
257
|
+
launch instead of clearing. The upstream Pi history retained in this file for attribution
|
|
258
|
+
(`0.10.0`–`0.84.1`) was still in scope, and those versions sort *above* Apex Code's own
|
|
259
|
+
`0.0.x` line, so no amount of version comparison would ever have suppressed them. And the
|
|
260
|
+
version heading regex discarded the prerelease identifier, leaving `alpha.2`, `alpha.3`, and
|
|
261
|
+
`alpha.4` indistinguishable from each other. Version parsing and comparison are now
|
|
262
|
+
semver-correct including prerelease precedence, parsing stops at the `## Upstream Pi history`
|
|
263
|
+
boundary, and an unparseable stored version now shows nothing rather than everything.
|
|
264
|
+
`/changelog` is scoped to Apex Code's own releases for the same reason; the upstream history
|
|
265
|
+
remains in the file as written attribution.
|
|
266
|
+
|
|
267
|
+
## [0.0.1-alpha.4] - 2026-08-18
|
|
268
|
+
|
|
269
|
+
- Fixed `fd not found. Downloading...` / `Failed to download fd: fetch failed` (and the same
|
|
270
|
+
pair for ripgrep) on every sandboxed startup. The OS sandbox replaces `/home` with an empty
|
|
271
|
+
tmpfs, so the child could not see host installations of `fd` and `rg` even though its `PATH`
|
|
272
|
+
still named them, and `--unshare-net` plus an empty `network.allowedHosts` meant the fallback
|
|
273
|
+
download could not reach GitHub either. The supervisor now resolves both tools on the host —
|
|
274
|
+
installing them there once if missing, where the network is still reachable — and projects
|
|
275
|
+
each one read-only into the child at the path its own lookup already checks. One host-side
|
|
276
|
+
install now serves every workspace, and no network access is required at startup.
|
|
277
|
+
- The OS sandbox no longer reports `Sandbox violation (unknown)` when a sandboxed process
|
|
278
|
+
simply failed on its own, on either Linux or macOS. An invalid API key, a failing test command, or a script exiting 1
|
|
279
|
+
are not boundary refusals, and reporting them as such sent users looking for a refusal that
|
|
280
|
+
never happened. Genuine filesystem and network refusals are still recorded.
|
|
281
|
+
- The OS sandbox now permits the built-in model-provider hosts and the update check by
|
|
282
|
+
default, so a fresh install can reach its provider without first discovering
|
|
283
|
+
`network.allowedHosts` and the provider's endpoint. Configured hosts are added on top;
|
|
284
|
+
`network.allowDefaultHosts: false` restores the previous deny-all behaviour. Providers whose
|
|
285
|
+
endpoint depends on account or environment configuration — Bedrock, Azure, Cloudflare,
|
|
286
|
+
Vertex — still need an explicit entry.
|
|
287
|
+
- A request refused by the sandbox network allowlist now says which host was refused and how to
|
|
288
|
+
permit it, instead of surfacing undici's bare `fetch failed`. The refusal is also attempted
|
|
289
|
+
once rather than retried three times, since an allowlist decision cannot change on retry.
|
|
290
|
+
- Fixed the OS sandbox failing to start with `Error: listen EINVAL: invalid argument` in any
|
|
291
|
+
workspace with a moderately long path. The allowlist proxy's Unix socket lived under the
|
|
292
|
+
workspace, and AF_UNIX caps socket paths at 108 bytes, leaving only ~72 characters for the
|
|
293
|
+
project's own directory layout — a deep-but-ordinary checkout could not launch at all. The
|
|
294
|
+
socket now uses a short path in the system temp directory, bind-mounted into the child, and
|
|
295
|
+
is cleaned up on exit.
|
|
296
|
+
- Fixed `/share` reporting `GitHub CLI is not logged in. Run 'gh auth login' first.` inside the
|
|
297
|
+
OS sandbox, where that diagnosis is wrong and the suggested fix does not help. The sandbox
|
|
298
|
+
cannot reach the host's gh credentials — `~/.config/gh` sits under the tmpfs that replaces
|
|
299
|
+
`/home`, `XDG_CONFIG_HOME` is redirected, and the token usually lives in a system keyring.
|
|
300
|
+
The message now points at the workflow that works: `/export` inside the session, then
|
|
301
|
+
`gh gist create --public=false <file>` outside the sandbox.
|
|
302
|
+
- Hardened the managed-tool lookup against an unusable leftover file. A projected tool is
|
|
303
|
+
bind-mounted over a file in the child's tools directory, and Bubblewrap materialises that
|
|
304
|
+
mountpoint as an empty file that outlives the namespace. `getToolPath()` now requires an
|
|
305
|
+
executable file rather than merely an existing one, and the supervisor clears stale
|
|
306
|
+
zero-byte mountpoints, so a host tool that later disappears can no longer leave the child
|
|
307
|
+
treating a 0-byte stub as its binary.
|
|
308
|
+
|
|
309
|
+
## [0.0.1-alpha.3] - 2026-08-17
|
|
310
|
+
|
|
311
|
+
- Fixed the Linux OS sandbox crashing with `ReferenceError: require is not defined in ES module
|
|
312
|
+
scope` when launched inside a workspace whose `package.json` declares `"type": "module"`; the
|
|
313
|
+
sandbox's network relay script is now written as `relay.cjs` instead of `relay.js`.
|
|
314
|
+
|
|
315
|
+
## [0.0.1-alpha.2] - 2026-08-17
|
|
316
|
+
|
|
317
|
+
- Published the Apex Code CLI and agent core through npm Trusted Publishing.
|
|
318
|
+
- Added provider failover, permissions and sandboxing, context engineering, expanded tools, delegation, durable state, evidence, observability, and release hardening.
|
|
319
|
+
- Completed the current product identity, environment compatibility, and cross-platform portability surface.
|
|
320
|
+
- Removed implicit `pi.dev` model-catalog and share-viewer dependencies. Bundled catalogs
|
|
321
|
+
are now the default; remote catalogs and preview viewers require explicit Apex
|
|
322
|
+
environment configuration, and `/share` confirms the secret GitHub Gist upload.
|
|
323
|
+
- Fixed stale Pi-branded content shipped in the packed npm tarball's `docs/` (fictional
|
|
324
|
+
installer, broken command examples, wrong file paths, an ADR 0013 hosted-service
|
|
325
|
+
reference) across 29 files; added pnpm/Yarn/Bun install commands.
|
|
326
|
+
- Extended the packed-artifact identity gate to scan every packed `.md` file, not just
|
|
327
|
+
`README.md`, so this class of defect fails CI instead of shipping.
|
|
328
|
+
- Replaces `apex-code@0.0.1-alpha.1`, whose `next`-tagged tarball shipped this stale
|
|
329
|
+
content; see the release-integrity runbook for the deprecation of prior versions.
|
|
330
|
+
|
|
331
|
+
## Upstream Pi history
|
|
332
|
+
|
|
333
|
+
The entries below are retained as historical attribution for the forked code.
|
|
334
|
+
|
|
1
335
|
# Changelog
|
|
2
336
|
|
|
337
|
+
## [0.84.3] - 2026-08-24
|
|
338
|
+
|
|
339
|
+
### New Features
|
|
340
|
+
|
|
341
|
+
- **PowerShell tool** — Use optional native PowerShell command execution on Windows. See [PowerShell Tool](docs/windows.md#powershell-tool).
|
|
342
|
+
- **Safer managed updates** — Stage, verify, and atomically activate updates for installer-managed installations. See [Install and Manage](docs/packages.md#install-and-manage).
|
|
343
|
+
- **Model and thinking controls** — Select thinking levels with `/thinking`, search defaults, keep selections session-scoped, and persist them explicitly with Ctrl+S. See [Models and Thinking](docs/keybindings.md#models-and-thinking).
|
|
344
|
+
|
|
345
|
+
### Breaking Changes
|
|
346
|
+
|
|
347
|
+
- Renamed the inherited `GoogleThinkingLevel` type to `GoogleApiThinkingLevel` and added `ResolvedGoogleThinkingLevel` for normalized adapter levels.
|
|
348
|
+
|
|
349
|
+
### Added
|
|
350
|
+
|
|
351
|
+
- Added an optional `powershell` tool for Windows, configurable through `defaultTools` and the SDK. See [PowerShell Tool](docs/windows.md#powershell-tool).
|
|
352
|
+
- Added a `/thinking` selector and searchable default choices to the model and thinking selectors; Ctrl+S saves the selected model as the global default. See [Models and Thinking](docs/keybindings.md#models-and-thinking).
|
|
353
|
+
- Added optional routing session IDs to exported compaction summary helpers so callers can preserve provider routing without enabling prompt cache writes.
|
|
354
|
+
- Added transcript usage notices for compaction and branch summaries when cache miss notices are enabled.
|
|
355
|
+
- Added `session_compact_failed` extension events so compaction failures and aborts expose their reason, retry state, source, and error message to handlers ([#8175](https://github.com/earendil-works/pi/issues/8175)).
|
|
356
|
+
- Added inherited provider-neutral `toolChoice` support to simple stream requests.
|
|
357
|
+
- Added inherited automatic Anthropic server-side refusal fallback for supported first-party models, including returned-model usage pricing ([#8017](https://github.com/earendil-works/pi/issues/8017)).
|
|
358
|
+
- Added inherited configurable OpenAI-compatible thinking-token budget fields for vLLM, Qwen/SGLang, and llama.cpp servers. See [OpenAI Compatibility](docs/models.md#openai-compatibility) ([#8275](https://github.com/earendil-works/pi/pull/8275) by [@bnsd55](https://github.com/bnsd55)).
|
|
359
|
+
- Added inherited China-specific ZAI Coding Plan models, including GLM-4.6V vision support and API-equivalent usage cost estimates ([#8220](https://github.com/earendil-works/pi/issues/8220)).
|
|
360
|
+
- Added inherited `deepseek-v4-pro-0813` support to the Qwen Token Plan Individual catalog ([#8194](https://github.com/earendil-works/pi/issues/8194)).
|
|
361
|
+
|
|
362
|
+
### Changed
|
|
363
|
+
|
|
364
|
+
- Changed experimental installer-managed installations so `pi update` stages, verifies, and atomically activates the selected release in place. See [Install and Manage](docs/packages.md#install-and-manage).
|
|
365
|
+
- Changed inherited built-in xAI models to use the Responses API with encrypted reasoning replay and made Grok 4.6 the default xAI model ([#8124](https://github.com/earendil-works/pi/pull/8124) by [@Jaaneek](https://github.com/Jaaneek)).
|
|
366
|
+
- Changed inherited Anthropic, Azure OpenAI, Google, Mistral, and OpenAI adapters to send Pi's default `User-Agent` unless overridden ([#8305](https://github.com/earendil-works/pi/issues/8305)).
|
|
367
|
+
- Changed Windows and WSL keybinding defaults to avoid terminal-reserved shortcuts for image paste, model cycling, editor undo, fullscreen transcript navigation and search, and message queueing ([#8372](https://github.com/earendil-works/pi/issues/8372)).
|
|
368
|
+
- Changed Bun release archives to ship the native clipboard binary only inside the wrapper package, removing a duplicate platform package from each archive.
|
|
369
|
+
- Changed package resource glob expansion to use Node.js's built-in implementation with deterministic visible-path matching, reducing the installed runtime dependency tree.
|
|
370
|
+
- Changed the bundled Node.js runtime to load jiti only when importing an extension and Babel only when uncached source needs transformation, reducing CLI startup time and bundle size.
|
|
371
|
+
- Changed syntax highlighting to initialize only twenty common languages eagerly and defer the remaining grammars until after the initial TUI render, reducing CLI startup time.
|
|
372
|
+
- Changed the Node.js CLI and RPC entrypoints to load a bundled runtime, reducing startup filesystem reads while keeping the public library and legacy module paths on the modular runtime for normal dependency identity.
|
|
373
|
+
- Changed session sharing to render clickable terminal links, display only the canonical Radius artifact URL, and include the current system prompt and active tool definitions in Radius session shares.
|
|
374
|
+
|
|
375
|
+
### Fixed
|
|
376
|
+
|
|
377
|
+
- Fixed failed extension factories leaving event subscriptions, provider registrations, and default flag state active ([#8424](https://github.com/earendil-works/pi/pull/8424) by [@acmerfight](https://github.com/acmerfight)).
|
|
378
|
+
- Fixed `models.json` typings omitting the documented OpenAI-compatible `compat.supportsFinishReason` provider and model override ([#8487](https://github.com/earendil-works/pi/pull/8487) by [@petrroll](https://github.com/petrroll)).
|
|
379
|
+
- Fixed `/model` and `/thinking` selections being persisted globally unless explicitly saved with Ctrl+S ([#5263](https://github.com/earendil-works/pi/issues/5263)).
|
|
380
|
+
- Fixed JSON and RPC `toolcall_start` events omitting the tool call id and name ([#7953](https://github.com/earendil-works/pi/pull/7953) by [@christianklotz](https://github.com/christianklotz)).
|
|
381
|
+
- Fixed extensions failing to load when the Node.js CLI runs as a single-executable application ([#8237](https://github.com/earendil-works/pi/issues/8237)).
|
|
382
|
+
- Fixed nested Markdown skills inside `.agents/skills/` grouping directories not being discovered.
|
|
383
|
+
- Fixed compaction and branch summarization requests exposing tools to providers.
|
|
384
|
+
- Fixed single-object `edit` tool inputs failing validation by accepting them as one-edit arrays in both coding-agent and harness edit tools ([#7835](https://github.com/earendil-works/pi/issues/7835)).
|
|
385
|
+
- Fixed root Markdown files such as `README.md` and `AGENTS.md` in skill directories being reported as broken skills unless they declare valid skill frontmatter ([#7805](https://github.com/earendil-works/pi/issues/7805)).
|
|
386
|
+
- Fixed the default Cerebras model referencing an unavailable Z.AI model.
|
|
387
|
+
- Fixed inherited OpenAI-compatible Chat Completions reasoning replay to preserve and resend assistant-level `reasoning_details` verbatim and in order ([#7994](https://github.com/earendil-works/pi/issues/7994)).
|
|
388
|
+
- Fixed inherited Anthropic server-side fallback responses being priced with the requested model instead of the returned fallback model ([#8285](https://github.com/earendil-works/pi/issues/8285)).
|
|
389
|
+
- Fixed inherited GitHub Copilot login triggering model-policy rate limits by limiting policy updates, retrying model discovery once, and honoring server retry delays ([#7850](https://github.com/earendil-works/pi/issues/7850)).
|
|
390
|
+
- Fixed inherited Amazon Bedrock dropping and failing to replay opaque redacted reasoning from non-Anthropic models ([#8314](https://github.com/earendil-works/pi/pull/8314) by [@seiji](https://github.com/seiji)).
|
|
391
|
+
- Fixed inherited Z.AI Coding Plan models deriving incomplete reasoning-effort metadata, including missing GLM-5.3 low, high, and max levels ([#8336](https://github.com/earendil-works/pi/issues/8336)).
|
|
392
|
+
- Fixed inherited DeepSeek V4 Flash on OpenCode and OpenCode Go omitting its supported low thinking level ([#8181](https://github.com/earendil-works/pi/pull/8181) by [@tianshuang](https://github.com/tianshuang)).
|
|
393
|
+
- Fixed inherited Azure OpenAI Responses ignoring `toolChoice` in provider-specific stream requests.
|
|
394
|
+
- Fixed inherited Amazon Bedrock response hooks receiving only a synthesized request id instead of the raw response headers ([#8234](https://github.com/earendil-works/pi/issues/8234)).
|
|
395
|
+
- Fixed inherited Kimi usage reporting so top-level `cached_tokens` count as cache reads instead of normal input tokens ([#8075](https://github.com/earendil-works/pi/issues/8075)).
|
|
396
|
+
- Fixed inherited Google custom models ignoring `thinkingLevelMap`, which dropped extended thinking controls ([#8135](https://github.com/earendil-works/pi/issues/8135)).
|
|
397
|
+
- Fixed writes to `auth.json` and `models-store.json` overriding administrator-managed file permissions and ACLs ([#7779](https://github.com/earendil-works/pi/issues/7779)).
|
|
398
|
+
- Fixed UTF-8 BOM markers preventing frontmatter and user configuration files from loading ([#8337](https://github.com/earendil-works/pi/issues/8337)).
|
|
399
|
+
- Fixed invalid settings files being easy to miss during interactive startup by rendering warnings with the file path inside the TUI ([#7829](https://github.com/earendil-works/pi/issues/7829)).
|
|
400
|
+
- Fixed the subagent example repeatedly prompting before running project-local agents in trusted repositories ([#8261](https://github.com/earendil-works/pi/issues/8261)).
|
|
401
|
+
- Fixed npm package update checks treating older registry versions as available updates, preventing `pi update` from downgrading already-newer installed packages ([#8226](https://github.com/earendil-works/pi/issues/8226)).
|
|
402
|
+
- Fixed built-in llama.cpp models disappearing from `/model` when `/llama` refreshed a configured server under `PI_OFFLINE`, and included idle-slept `sleeping` router models in the selectable catalog ([#8167](https://github.com/earendil-works/pi/issues/8167)).
|
|
403
|
+
- Fixed `pi.registerFlag()` accepting default values that do not match the declared flag type ([#8064](https://github.com/earendil-works/pi/issues/8064)).
|
|
404
|
+
- Fixed Z.AI Coding Plan defaults referencing the removed GLM-5.1 model ([#8096](https://github.com/earendil-works/pi/issues/8096)).
|
|
405
|
+
- Fixed repeated ambiguous truncated-response recovery being mislabeled as context overflow ([#8130](https://github.com/earendil-works/pi/issues/8130)).
|
|
406
|
+
- Fixed duplicate fullscreen right-click paste in VS Code-based terminals on Windows ([#8186](https://github.com/earendil-works/pi/issues/8186)).
|
|
407
|
+
- Fixed inherited padded text exceeding narrow terminal widths ([#8252](https://github.com/earendil-works/pi/issues/8252)).
|
|
408
|
+
- Fixed inherited wrapped Markdown table links leaking color into borders and neighboring cells, including tables inside blockquotes ([#8335](https://github.com/earendil-works/pi/issues/8335)).
|
|
409
|
+
- Fixed llama.cpp login guidance to direct users to `/llama` before `/model` when no local models are loaded ([#8203](https://github.com/earendil-works/pi/issues/8203)).
|
|
410
|
+
- Fixed hung pi.dev model catalog requests consuming the entire refresh deadline without retrying ([#8198](https://github.com/earendil-works/pi/issues/8198)).
|
|
411
|
+
- Fixed inherited Xiaomi model catalogs listing shut-down MiMo V2 models in `/model` and `--list-models` ([#8187](https://github.com/earendil-works/pi/issues/8187)).
|
|
412
|
+
- Fixed branch summary entries recording the navigation destination in `fromId` instead of the pre-navigation source leaf.
|
|
413
|
+
- Fixed threshold auto-compaction being skipped when providers omit streaming usage data ([#8328](https://github.com/earendil-works/pi/issues/8328)).
|
|
414
|
+
- Fixed dash-prefixed prompts being parsed as options by supporting `--` as an end-of-options delimiter ([#7269](https://github.com/earendil-works/pi/issues/7269)).
|
|
415
|
+
|
|
416
|
+
## [0.84.2] - 2026-08-14
|
|
417
|
+
|
|
418
|
+
### New Features
|
|
419
|
+
|
|
420
|
+
- **Fullscreen transcript search** — Search and navigate matches in fullscreen mode. See [TUI Fullscreen Viewport](docs/keybindings.md#tui-fullscreen-viewport).
|
|
421
|
+
- **Configurable default tools** — Choose startup built-in tools globally or per project. See [Tools](docs/settings.md#tools).
|
|
422
|
+
- **Configurable fullscreen exit output** — Print the transcript or only a resume hint on exit. See [Interactive Mode](docs/usage.md#interactive-mode).
|
|
423
|
+
|
|
424
|
+
### Added
|
|
425
|
+
|
|
426
|
+
- Added fullscreen transcript search with `Ctrl+Shift+F`, incremental match highlighting, configurable search match theme colors, and next/previous navigation with `Enter`/`Ctrl+G` and `Shift+Enter`/`Ctrl+Shift+G`.
|
|
427
|
+
- Added experimental strict JSON-schema constrained sampling for the default `read`, `bash`, `edit`, and `write` tools under `PI_EXPERIMENTAL=1`.
|
|
428
|
+
- Added a fullscreen exit output setting to choose between printing the final transcript and only a session resume hint.
|
|
429
|
+
- Added the `defaultTools` setting for configuring the initial built-in tool selection globally or per project.
|
|
430
|
+
- Added `--use-theme <name[/name]>` to choose an initial per-run interactive theme without changing saved settings ([#7722](https://github.com/earendil-works/pi/pull/7722) by [@rwachtler](https://github.com/rwachtler)).
|
|
431
|
+
- Added `expandPromptTemplates` to extension `pi.sendUserMessage()` options for explicitly dispatching commands and expanding skills and prompt templates. See [`pi.sendUserMessage()`](docs/extensions.md#pisendusermessagecontent-options) ([#7857](https://github.com/earendil-works/pi/pull/7857) by [@mrexodia](https://github.com/mrexodia)).
|
|
432
|
+
- Added inherited `createGatewayBindingFetch()` for routing Cloudflare AI Gateway requests through a Workers AI binding without an API token ([#7901](https://github.com/earendil-works/pi/pull/7901) by [@Maximo-Guk](https://github.com/Maximo-Guk)).
|
|
433
|
+
- Added inherited `AssistantMessage.endTurn` to preserve OpenAI Codex's terminal `end_turn` signal for diagnostics ([#7766](https://github.com/earendil-works/pi/pull/7766)).
|
|
434
|
+
- Added inherited unbound single-line transcript scrolling actions for fullscreen mode. See [TUI Fullscreen Viewport](docs/keybindings.md#tui-fullscreen-viewport) ([#7903](https://github.com/earendil-works/pi/pull/7903) by [@midastruth](https://github.com/midastruth)).
|
|
435
|
+
|
|
436
|
+
### Changed
|
|
437
|
+
|
|
438
|
+
- Changed inherited Kimi Coding requests to use pi's runtime `User-Agent` header.
|
|
439
|
+
- Replaced the inherited Mistral SDK transport with a native Chat Completions HTTP stream, eliminating its generated client and schema runtime overhead.
|
|
440
|
+
- Documented the generic `AI_AGENT=pi` process marker and how it differs from `PI_CODING_AGENT=true` ([#7747](https://github.com/earendil-works/pi/issues/7747)).
|
|
441
|
+
- Changed inherited OpenAI Responses deferred tool loading to prefer message-anchored `additional_tools` where supported while retaining tool-search and top-level fallbacks ([#7709](https://github.com/earendil-works/pi/issues/7709)).
|
|
442
|
+
- Reduced inherited fullscreen rendering allocation churn by painting full-width layout rows directly instead of recompositing them on every frame.
|
|
443
|
+
|
|
444
|
+
### Fixed
|
|
445
|
+
|
|
446
|
+
- Fixed root Markdown files such as `README.md` and `AGENTS.md` in skill directories being reported as broken skills unless they declare valid skill frontmatter ([#7805](https://github.com/earendil-works/pi/issues/7805)).
|
|
447
|
+
- Fixed single-object `edit` tool inputs failing validation by accepting them as one-edit arrays in both coding-agent and harness edit tools ([#7835](https://github.com/earendil-works/pi/issues/7835)).
|
|
448
|
+
- Fixed managed-tool downloads delaying TUI startup and hiding diagnostics in fullscreen mode by mounting the TUI first and showing download progress and warnings inside it.
|
|
449
|
+
- Fixed opening a model selector immediately after startup cancelling and restarting the in-progress model catalog refresh.
|
|
450
|
+
- Fixed inherited GitHub Copilot login triggering API rate limits while enabling model policies by limiting concurrent policy updates ([#6187](https://github.com/earendil-works/pi/issues/6187)).
|
|
451
|
+
- Fixed fullscreen transcript search snapping back to the current match during manual scrolling and fragmented mouse input leaking into the search query.
|
|
452
|
+
- Fixed inherited required LaTeX arguments starting on a new line being parsed as empty ([#7760](https://github.com/earendil-works/pi/issues/7760)).
|
|
453
|
+
- Updated the transitive `nanoid` development dependency to address a denial-of-service vulnerability.
|
|
454
|
+
- Fixed fallback rendering for extension tool results to collapse long output and honor tool expansion ([#7979](https://github.com/earendil-works/pi/issues/7979)).
|
|
455
|
+
- Fixed JSON and RPC `message_update` events dropping cumulative usage during streaming. See [JSON Event Mode](docs/json.md) and [RPC `message_update`](docs/rpc.md#message_update-streaming) ([#7982](https://github.com/earendil-works/pi/pull/7982) by [@christianklotz](https://github.com/christianklotz)).
|
|
456
|
+
- Fixed `pi.sendMessage(..., { triggerTurn: false })` steering an active run instead of only recording the custom message ([#8022](https://github.com/earendil-works/pi/pull/8022) by [@cristinaponcela](https://github.com/cristinaponcela)).
|
|
457
|
+
- Fixed the `defaultTools` setting dropping extension and SDK custom tools when selecting built-in defaults.
|
|
458
|
+
- Fixed the subagent example rejecting YAML array syntax for the `tools` frontmatter field ([#7598](https://github.com/earendil-works/pi/pull/7598) by [@alexsavio](https://github.com/alexsavio)).
|
|
459
|
+
- Fixed the subagent example dropping parent session model, thinking, and tool configuration ([#7897](https://github.com/earendil-works/pi/pull/7897) by [@virtuald](https://github.com/virtuald)).
|
|
460
|
+
- Fixed custom system prompts concatenating the current working directory with later appended prompt content ([#7887](https://github.com/earendil-works/pi/pull/7887) by [@distributedlock](https://github.com/distributedlock)).
|
|
461
|
+
- Fixed inherited OpenAI Responses function and custom tool calls losing namespaces during streaming, proxying, and replay ([#7709](https://github.com/earendil-works/pi/issues/7709)).
|
|
462
|
+
- Fixed inherited upstream request buffer failures not triggering automatic assistant retries.
|
|
463
|
+
- Fixed inherited built-in and custom DeepSeek API models sending output limits through an unsupported field.
|
|
464
|
+
- Fixed inherited Amazon Bedrock replay rejecting tool arguments that contain empty object keys while preserving all valid nested values ([#7882](https://github.com/earendil-works/pi/pull/7882) by [@muyiyr](https://github.com/muyiyr)).
|
|
465
|
+
- Fixed inherited DeepSeek compatibility detection for base URLs whose hostname contains uppercase letters ([#7933](https://github.com/earendil-works/pi/pull/7933) by [@yearth](https://github.com/yearth)).
|
|
466
|
+
- Fixed inherited Google Generative AI and Vertex AI responses with tool calls incorrectly treating output-limit or provider-error stops as normal tool use ([#8059](https://github.com/earendil-works/pi/issues/8059)).
|
|
467
|
+
- Fixed inherited fullscreen mouse drag selection and OSC 8 link activation in terminals that report generic SGR mouse release button codes ([#7963](https://github.com/earendil-works/pi/issues/7963)).
|
|
468
|
+
- Fixed inherited focused fullscreen overlays not receiving mouse wheel or viewport scroll keys such as PageUp and PageDown ([#7894](https://github.com/earendil-works/pi/issues/7894)).
|
|
469
|
+
- Fixed inherited LaTeX control spaces split across line endings causing complete expressions to fall back to raw source.
|
|
470
|
+
- Fixed split `Alt+Enter` input over SSH being misread as Escape, added `PI_TUI_ESC_TIMEOUT` for high-latency terminals, and limited that timeout to lone Escape input ([#7899](https://github.com/earendil-works/pi/pull/7899) by [@powerfooI](https://github.com/powerfooI)).
|
|
471
|
+
- Fixed inherited idle fullscreen sessions repainting and clearing text selection when the terminal loses focus ([#7892](https://github.com/earendil-works/pi/pull/7892) by [@terrorobe](https://github.com/terrorobe)).
|
|
472
|
+
- Fixed fullscreen selection copy to use the host clipboard and report failure instead of claiming success when OSC 52 is unsupported ([#8110](https://github.com/earendil-works/pi/pull/8110) by [@Panoplos](https://github.com/Panoplos)).
|
|
473
|
+
|
|
3
474
|
## [0.84.1] - 2026-08-07
|
|
4
475
|
|
|
5
476
|
### New Features
|