@oh-my-pi/pi-coding-agent 17.0.9 → 17.1.1
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 +78 -0
- package/README.md +1 -1
- package/dist/cli.js +4685 -4614
- package/dist/types/async/job-manager.d.ts +37 -1
- package/dist/types/cli/args.d.ts +2 -0
- package/dist/types/cli/bench-cli.d.ts +41 -0
- package/dist/types/commands/bench.d.ts +15 -3
- package/dist/types/commands/launch.d.ts +4 -0
- package/dist/types/config/model-registry.d.ts +3 -1
- package/dist/types/config/models-config-schema.d.ts +18 -6
- package/dist/types/config/models-config.d.ts +14 -5
- package/dist/types/config/provider-globals.d.ts +2 -2
- package/dist/types/config/service-tier.d.ts +5 -1
- package/dist/types/config/settings-schema.d.ts +374 -47
- package/dist/types/config/settings.d.ts +7 -0
- package/dist/types/dap/client.d.ts +20 -0
- package/dist/types/exec/bash-executor.d.ts +38 -0
- package/dist/types/exec/direnv.d.ts +33 -0
- package/dist/types/export/html/args.d.ts +15 -0
- package/dist/types/export/html/index.d.ts +11 -26
- package/dist/types/export/html/web-palette.d.ts +55 -116
- package/dist/types/extensibility/extensions/loader.d.ts +3 -0
- package/dist/types/extensibility/extensions/types.d.ts +17 -2
- package/dist/types/extensibility/legacy-pi-coding-agent-shim.d.ts +3 -0
- package/dist/types/extensibility/plugins/legacy-pi-compat.d.ts +13 -0
- package/dist/types/live/attestation.d.ts +2 -0
- package/dist/types/live/controller.d.ts +48 -0
- package/dist/types/live/protocol.d.ts +85 -0
- package/dist/types/live/protocol.test.d.ts +1 -0
- package/dist/types/live/transport.d.ts +35 -0
- package/dist/types/live/visualizer.d.ts +30 -0
- package/dist/types/lsp/client.d.ts +16 -1
- package/dist/types/mcp/config-writer.test.d.ts +1 -0
- package/dist/types/mcp/oauth-discovery.d.ts +2 -0
- package/dist/types/mcp/smithery-auth.d.ts +1 -1
- package/dist/types/mcp/smithery-auth.test.d.ts +1 -0
- package/dist/types/memory-backend/tool-names.d.ts +2 -0
- package/dist/types/modes/components/assistant-message.d.ts +1 -0
- package/dist/types/modes/components/custom-message.d.ts +1 -1
- package/dist/types/modes/components/login-dialog.d.ts +2 -2
- package/dist/types/modes/components/message-frame.d.ts +8 -4
- package/dist/types/modes/components/plan-review-overlay.d.ts +26 -0
- package/dist/types/modes/components/session-account-selector.d.ts +11 -0
- package/dist/types/modes/components/settings-defs.d.ts +7 -1
- package/dist/types/modes/components/status-line/component.jj-cache.test.d.ts +1 -0
- package/dist/types/modes/components/tool-execution.d.ts +9 -1
- package/dist/types/modes/controllers/command-controller.d.ts +1 -1
- package/dist/types/modes/controllers/event-controller.d.ts +6 -1
- package/dist/types/modes/controllers/live-command-controller.d.ts +14 -0
- package/dist/types/modes/controllers/selector-controller.d.ts +1 -0
- package/dist/types/modes/interactive-mode.d.ts +6 -0
- package/dist/types/modes/theme/theme.d.ts +1 -1
- package/dist/types/modes/types.d.ts +4 -1
- package/dist/types/modes/utils/context-usage.d.ts +12 -2
- package/dist/types/plan-mode/plan-files.d.ts +10 -0
- package/dist/types/registry/agent-lifecycle.d.ts +21 -9
- package/dist/types/registry/agent-registry.d.ts +11 -4
- package/dist/types/sdk.d.ts +15 -1
- package/dist/types/secrets/index.d.ts +15 -2
- package/dist/types/secrets/obfuscator.d.ts +113 -15
- package/dist/types/session/acp-permission-gate.d.ts +19 -0
- package/dist/types/session/agent-session-events.d.ts +84 -0
- package/dist/types/session/agent-session-types.d.ts +321 -0
- package/dist/types/session/agent-session.d.ts +135 -753
- package/dist/types/session/async-job-delivery.d.ts +28 -0
- package/dist/types/session/auth-storage.d.ts +1 -1
- package/dist/types/session/bash-runner.d.ts +75 -0
- package/dist/types/session/blob-store.d.ts +11 -1
- package/dist/types/session/blob-store.test.d.ts +1 -0
- package/dist/types/session/checkpoint-entries.d.ts +28 -0
- package/dist/types/session/eval-runner.d.ts +51 -0
- package/dist/types/session/irc-bridge.d.ts +46 -0
- package/dist/types/session/messages.d.ts +24 -0
- package/dist/types/session/model-controls.d.ts +180 -0
- package/dist/types/session/prewalk.d.ts +46 -0
- package/dist/types/session/queued-messages.d.ts +22 -0
- package/dist/types/session/redis-session-storage.d.ts +1 -0
- package/dist/types/session/retry-fallback-chains.d.ts +74 -0
- package/dist/types/session/role-models.d.ts +15 -0
- package/dist/types/session/session-advisors.d.ts +228 -0
- package/dist/types/session/session-entries.d.ts +8 -0
- package/dist/types/session/session-handoff.d.ts +70 -0
- package/dist/types/session/session-history-format.d.ts +6 -1
- package/dist/types/session/session-maintenance.d.ts +246 -0
- package/dist/types/session/session-manager.d.ts +41 -0
- package/dist/types/session/session-memory.d.ts +56 -0
- package/dist/types/session/session-provider-boundary.d.ts +62 -0
- package/dist/types/session/session-stats.d.ts +48 -0
- package/dist/types/session/session-tools.d.ts +158 -0
- package/dist/types/session/session-workspace.d.ts +32 -0
- package/dist/types/session/stream-guards.d.ts +44 -0
- package/dist/types/session/streaming-output.d.ts +8 -0
- package/dist/types/session/todo-tracker.d.ts +56 -0
- package/dist/types/session/ttsr-coordinator.d.ts +51 -0
- package/dist/types/session/turn-recovery.d.ts +225 -0
- package/dist/types/slash-commands/helpers/session-pin.d.ts +9 -0
- package/dist/types/stt/index.d.ts +0 -2
- package/dist/types/stt/stt-controller.d.ts +7 -0
- package/dist/types/system-prompt.d.ts +2 -0
- package/dist/types/task/executor.d.ts +4 -1
- package/dist/types/task/output-manager.d.ts +3 -1
- package/dist/types/tiny/title-client.d.ts +10 -0
- package/dist/types/tools/approval.d.ts +1 -0
- package/dist/types/tools/browser/launch.d.ts +5 -0
- package/dist/types/tools/builtin-names.d.ts +1 -1
- package/dist/types/tools/computer/protocol.d.ts +43 -0
- package/dist/types/tools/computer/supervisor.d.ts +32 -0
- package/dist/types/tools/computer/worker-entry.d.ts +1 -0
- package/dist/types/tools/computer/worker.d.ts +15 -0
- package/dist/types/tools/computer-renderer.d.ts +22 -0
- package/dist/types/tools/computer.d.ts +71 -0
- package/dist/types/tools/context.d.ts +2 -0
- package/dist/types/tools/default-renderer.d.ts +21 -0
- package/dist/types/tools/image-gen.d.ts +4 -4
- package/dist/types/tools/image-providers.d.ts +38 -0
- package/dist/types/tools/index.d.ts +7 -0
- package/dist/types/tools/path-utils.d.ts +8 -0
- package/dist/types/tools/todo.d.ts +10 -4
- package/dist/types/tools/xdev.d.ts +5 -1
- package/dist/types/tts/streaming-player.d.ts +10 -29
- package/dist/types/tts/vocalizer.d.ts +5 -0
- package/dist/types/utils/jj.d.ts +29 -0
- package/dist/types/utils/lang-from-path.d.ts +1 -0
- package/dist/types/utils/title-generator.d.ts +30 -0
- package/dist/types/utils/tools-manager.d.ts +1 -2
- package/dist/types/vibe/runtime.d.ts +36 -8
- package/dist/types/web/search/index.d.ts +1 -1
- package/dist/types/web/search/provider.d.ts +15 -5
- package/dist/types/web/search/types.d.ts +94 -0
- package/package.json +12 -12
- package/scripts/generate-share-viewer.ts +4 -6
- package/src/advisor/__tests__/advisor.test.ts +643 -0
- package/src/advisor/runtime.ts +144 -43
- package/src/async/job-manager.ts +90 -2
- package/src/cli/args.ts +3 -0
- package/src/cli/auth-gateway-cli.ts +18 -3
- package/src/cli/bench-cli.ts +395 -29
- package/src/cli/flag-tables.ts +3 -0
- package/src/cli/gc-cli.ts +2 -2
- package/src/cli/setup-cli.ts +2 -14
- package/src/cli/usage-cli.ts +10 -1
- package/src/cli.ts +8 -0
- package/src/collab/host.ts +3 -2
- package/src/commands/bench.ts +18 -4
- package/src/commands/launch.ts +4 -0
- package/src/config/model-registry.ts +16 -2
- package/src/config/models-config-schema.ts +15 -4
- package/src/config/provider-globals.ts +9 -9
- package/src/config/service-tier.ts +26 -1
- package/src/config/settings-schema.ts +270 -51
- package/src/config/settings.ts +81 -2
- package/src/dap/client.ts +37 -4
- package/src/edit/index.ts +49 -12
- package/src/eval/executor-base.ts +1 -0
- package/src/eval/js/executor.ts +2 -0
- package/src/eval/py/executor.ts +103 -33
- package/src/exec/bash-executor.ts +90 -6
- package/src/exec/direnv.ts +145 -0
- package/src/export/html/args.ts +20 -0
- package/src/export/html/index.ts +45 -47
- package/src/export/html/template.css +19 -1
- package/src/export/html/template.html +6 -0
- package/src/export/html/template.js +21 -0
- package/src/export/html/tool-views.generated.js +31 -31
- package/src/export/html/web-palette.ts +116 -132
- package/src/export/share.ts +249 -49
- package/src/extensibility/extensions/loader.ts +29 -1
- package/src/extensibility/extensions/runner.ts +6 -0
- package/src/extensibility/extensions/types.ts +33 -2
- package/src/extensibility/extensions/wrapper.ts +68 -12
- package/src/extensibility/legacy-pi-coding-agent-shim.ts +7 -1
- package/src/extensibility/plugins/legacy-pi-compat.ts +19 -1
- package/src/hindsight/state.ts +64 -6
- package/src/internal-urls/local-protocol.ts +2 -1
- package/src/internal-urls/memory-protocol.ts +2 -2
- package/src/internal-urls/skill-protocol.ts +2 -2
- package/src/internal-urls/ssh-protocol.ts +2 -1
- package/src/internal-urls/vault-protocol.ts +2 -1
- package/src/live/attestation.ts +91 -0
- package/src/live/controller.ts +517 -0
- package/src/live/prompts/agent-final-message.md +3 -0
- package/src/live/prompts/live-instructions.md +23 -0
- package/src/live/protocol.test.ts +140 -0
- package/src/live/protocol.ts +233 -0
- package/src/live/transport.ts +422 -0
- package/src/live/visualizer.ts +214 -0
- package/src/lsp/client.ts +29 -9
- package/src/lsp/index.ts +19 -4
- package/src/main.ts +8 -1
- package/src/mcp/config-writer.test.ts +43 -0
- package/src/mcp/config-writer.ts +109 -82
- package/src/mcp/oauth-discovery.ts +10 -2
- package/src/mcp/smithery-auth.test.ts +29 -0
- package/src/mcp/smithery-auth.ts +3 -2
- package/src/memories/index.ts +40 -20
- package/src/memory-backend/tool-names.ts +2 -0
- package/src/mnemopi/backend.ts +24 -7
- package/src/modes/acp/acp-agent.ts +56 -10
- package/src/modes/acp/acp-event-mapper.ts +8 -1
- package/src/modes/components/agent-hub.ts +1 -1
- package/src/modes/components/assistant-message.ts +7 -2
- package/src/modes/components/custom-message.ts +4 -1
- package/src/modes/components/login-dialog.ts +14 -4
- package/src/modes/components/message-frame.ts +14 -8
- package/src/modes/components/plan-review-overlay.ts +350 -35
- package/src/modes/components/session-account-selector.ts +62 -0
- package/src/modes/components/settings-defs.ts +23 -1
- package/src/modes/components/settings-selector.ts +169 -1
- package/src/modes/components/status-line/component.jj-cache.test.ts +229 -0
- package/src/modes/components/status-line/component.ts +123 -2
- package/src/modes/components/tool-execution.ts +28 -112
- package/src/modes/controllers/command-controller.ts +56 -15
- package/src/modes/controllers/event-controller.ts +111 -16
- package/src/modes/controllers/extension-ui-controller.test.ts +1 -0
- package/src/modes/controllers/extension-ui-controller.ts +20 -4
- package/src/modes/controllers/input-controller.ts +47 -39
- package/src/modes/controllers/live-command-controller.ts +255 -0
- package/src/modes/controllers/mcp-command-controller.ts +10 -1
- package/src/modes/controllers/omfg-controller.ts +44 -40
- package/src/modes/controllers/selector-controller.ts +80 -10
- package/src/modes/controllers/session-focus-controller.ts +6 -1
- package/src/modes/interactive-mode.ts +176 -38
- package/src/modes/runtime-init.ts +2 -0
- package/src/modes/setup-wizard/scenes/web-search.ts +17 -9
- package/src/modes/theme/theme.ts +1 -1
- package/src/modes/types.ts +4 -1
- package/src/modes/utils/context-usage.ts +23 -7
- package/src/modes/utils/ui-helpers.ts +10 -5
- package/src/plan-mode/plan-files.ts +40 -0
- package/src/prompts/bench/cache-prefix-chunk.md +1 -0
- package/src/prompts/bench/cache-prefix.md +3 -0
- package/src/prompts/bench/cache-suffix.md +1 -0
- package/src/prompts/system/computer-safety.md +14 -0
- package/src/prompts/system/custom-system-prompt.md +1 -1
- package/src/prompts/system/project-prompt.md +8 -1
- package/src/prompts/system/subagent-async-pending.md +6 -0
- package/src/prompts/system/system-prompt.md +1 -1
- package/src/prompts/system/workflow-notice.md +48 -40
- package/src/prompts/system/xdev-mount-notice.md +4 -0
- package/src/prompts/tools/computer.md +26 -0
- package/src/prompts/tools/todo.md +3 -1
- package/src/registry/agent-lifecycle.ts +116 -46
- package/src/registry/agent-registry.ts +35 -8
- package/src/registry/persisted-agents.ts +26 -2
- package/src/sdk.ts +215 -136
- package/src/secrets/index.ts +127 -4
- package/src/secrets/obfuscator.ts +2328 -105
- package/src/session/acp-permission-gate.ts +165 -0
- package/src/session/agent-session-error-log.test.ts +1 -1
- package/src/session/agent-session-events.ts +66 -0
- package/src/session/agent-session-types.ts +343 -0
- package/src/session/agent-session.ts +1940 -12218
- package/src/session/artifacts.ts +6 -5
- package/src/session/async-job-delivery.ts +74 -0
- package/src/session/auth-storage.ts +1 -0
- package/src/session/bash-runner.ts +326 -0
- package/src/session/blob-store.test.ts +56 -0
- package/src/session/blob-store.ts +18 -2
- package/src/session/checkpoint-entries.ts +81 -0
- package/src/session/eval-runner.ts +217 -0
- package/src/session/indexed-session-storage.ts +9 -2
- package/src/session/irc-bridge.ts +203 -0
- package/src/session/messages.ts +266 -1
- package/src/session/model-controls.ts +714 -0
- package/src/session/prewalk.ts +252 -0
- package/src/session/queued-messages.ts +93 -0
- package/src/session/redis-session-storage.ts +51 -11
- package/src/session/retry-fallback-chains.ts +455 -0
- package/src/session/role-models.ts +85 -0
- package/src/session/session-advisors.ts +1679 -0
- package/src/session/session-context.ts +6 -3
- package/src/session/session-entries.ts +8 -0
- package/src/session/session-handoff.ts +308 -0
- package/src/session/session-history-format.ts +20 -9
- package/src/session/session-loader.ts +0 -46
- package/src/session/session-maintenance.ts +2983 -0
- package/src/session/session-manager.ts +390 -30
- package/src/session/session-memory.ts +222 -0
- package/src/session/session-provider-boundary.ts +307 -0
- package/src/session/session-stats.ts +293 -0
- package/src/session/session-tools.ts +980 -0
- package/src/session/session-workspace.ts +53 -0
- package/src/session/stream-guards.ts +417 -0
- package/src/session/streaming-output.ts +52 -5
- package/src/session/todo-tracker.ts +380 -0
- package/src/session/ttsr-coordinator.ts +496 -0
- package/src/session/turn-recovery.ts +1629 -0
- package/src/slash-commands/builtin-registry.ts +257 -20
- package/src/slash-commands/helpers/session-pin.ts +44 -0
- package/src/slash-commands/helpers/usage-report.ts +22 -3
- package/src/stt/downloader.ts +0 -2
- package/src/stt/index.ts +0 -2
- package/src/stt/stt-controller.ts +57 -146
- package/src/system-prompt.ts +45 -17
- package/src/task/executor.ts +285 -70
- package/src/task/index.ts +98 -105
- package/src/task/output-manager.ts +25 -3
- package/src/task/persisted-revive.ts +4 -3
- package/src/task/structured-subagent.ts +1 -0
- package/src/tiny/title-client.ts +22 -0
- package/src/tools/approval.ts +55 -10
- package/src/tools/bash-interactive.ts +116 -86
- package/src/tools/bash-skill-urls.ts +28 -2
- package/src/tools/bash.ts +339 -123
- package/src/tools/browser/launch.ts +9 -1
- package/src/tools/browser/tab-supervisor.ts +8 -5
- package/src/tools/browser.ts +94 -47
- package/src/tools/builtin-names.ts +1 -0
- package/src/tools/computer/protocol.ts +28 -0
- package/src/tools/computer/supervisor.ts +258 -0
- package/src/tools/computer/worker-entry.ts +25 -0
- package/src/tools/computer/worker.ts +135 -0
- package/src/tools/computer-renderer.ts +108 -0
- package/src/tools/computer.ts +433 -0
- package/src/tools/context.ts +2 -0
- package/src/tools/default-renderer.ts +139 -0
- package/src/tools/essential-tools.ts +1 -0
- package/src/tools/image-gen.ts +20 -28
- package/src/tools/image-providers.ts +50 -0
- package/src/tools/index.ts +14 -0
- package/src/tools/path-utils.ts +49 -2
- package/src/tools/read.ts +156 -88
- package/src/tools/renderers.ts +9 -1
- package/src/tools/todo.ts +101 -11
- package/src/tools/vibe.ts +1 -2
- package/src/tools/write.ts +51 -1
- package/src/tools/xdev.ts +121 -29
- package/src/tts/streaming-player.ts +82 -283
- package/src/tts/vocalizer.ts +18 -1
- package/src/utils/clipboard.ts +1 -30
- package/src/utils/jj.ts +125 -4
- package/src/utils/lang-from-path.ts +7 -0
- package/src/utils/mac-file-urls.applescript +37 -0
- package/src/utils/title-generator.ts +137 -1
- package/src/utils/tool-choice.ts +14 -0
- package/src/utils/tools-manager.ts +1 -19
- package/src/vibe/runtime.ts +852 -72
- package/src/web/search/index.ts +3 -6
- package/src/web/search/provider.ts +31 -16
- package/src/web/search/providers/xai.ts +7 -1
- package/src/web/search/types.ts +3 -0
- package/dist/types/stt/recorder.d.ts +0 -30
- package/dist/types/stt/transcriber.d.ts +0 -14
- package/dist/types/stt/wav.d.ts +0 -29
- package/dist/types/tts/player.d.ts +0 -32
- package/src/stt/recorder.ts +0 -551
- package/src/stt/transcriber.ts +0 -60
- package/src/stt/wav.ts +0 -173
- package/src/tts/player.ts +0 -137
|
@@ -30,8 +30,18 @@ export interface AsyncJob {
|
|
|
30
30
|
*/
|
|
31
31
|
queued?: boolean;
|
|
32
32
|
}
|
|
33
|
+
/** Delivery callback for a settled job's result text. */
|
|
34
|
+
export type AsyncJobDeliverySink = (jobId: string, text: string, job?: AsyncJob) => void | Promise<void>;
|
|
33
35
|
export interface AsyncJobManagerOptions {
|
|
34
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Delivery sink for UNOWNED completions (jobs registered without an
|
|
38
|
+
* `ownerId`). Owned deliveries route exclusively through
|
|
39
|
+
* {@link AsyncJobManager.registerDeliverySink}; when the owner has no live
|
|
40
|
+
* sink they are dead-lettered (dropped with a warning; the job row keeps
|
|
41
|
+
* the result text until retention eviction) — never routed here, which
|
|
42
|
+
* would leak one agent's result into another session.
|
|
43
|
+
*/
|
|
44
|
+
onJobComplete?: AsyncJobDeliverySink;
|
|
35
45
|
maxRunningJobs?: number;
|
|
36
46
|
retentionMs?: number;
|
|
37
47
|
}
|
|
@@ -120,6 +130,32 @@ export declare class AsyncJobManager {
|
|
|
120
130
|
*/
|
|
121
131
|
cancelAll(filter?: AsyncJobFilter): void;
|
|
122
132
|
waitForAll(): Promise<void>;
|
|
133
|
+
/**
|
|
134
|
+
* Route completions for jobs owned by `ownerId` to `sink`. Sessions register
|
|
135
|
+
* their own sink at construction and unregister on dispose. Owned deliveries
|
|
136
|
+
* with no live sink are dead-lettered — `onJobComplete` serves only unowned
|
|
137
|
+
* deliveries.
|
|
138
|
+
*
|
|
139
|
+
* Last registration wins for an owner id; the returned unregister clears the
|
|
140
|
+
* mapping only while it still points at `sink`, so a revived session's fresh
|
|
141
|
+
* registration survives its parked predecessor's late cleanup.
|
|
142
|
+
*/
|
|
143
|
+
registerDeliverySink(ownerId: string, sink: AsyncJobDeliverySink): () => void;
|
|
144
|
+
/**
|
|
145
|
+
* Wait until every job owned by `ownerId` has settled — its run promise
|
|
146
|
+
* resolved, which for cancelled jobs means the underlying process actually
|
|
147
|
+
* exited. Jobs registered while waiting (e.g. by a follow-up turn) are
|
|
148
|
+
* awaited too. Returns false when `timeoutMs` elapses first.
|
|
149
|
+
*
|
|
150
|
+
* `excludeSuppressed` skips jobs whose delivery is suppressed (acknowledged
|
|
151
|
+
* or `hub`-watched): those can never re-wake a run, so quiescence barriers
|
|
152
|
+
* pass it to share one contract with the pending-async-wake predicate.
|
|
153
|
+
* Teardown reaps omit it — worktree safety concerns every owner process.
|
|
154
|
+
*/
|
|
155
|
+
waitForOwnerJobs(ownerId: string, options?: {
|
|
156
|
+
timeoutMs?: number;
|
|
157
|
+
excludeSuppressed?: boolean;
|
|
158
|
+
}): Promise<boolean>;
|
|
123
159
|
drainDeliveries(options?: {
|
|
124
160
|
timeoutMs?: number;
|
|
125
161
|
filter?: AsyncJobFilter;
|
package/dist/types/cli/args.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ import { type ConfiguredThinkingLevel } from "../thinking.js";
|
|
|
2
2
|
export type Mode = "text" | "json" | "rpc" | "acp" | "rpc-ui";
|
|
3
3
|
export interface Args {
|
|
4
4
|
cwd?: string;
|
|
5
|
+
/** Workspace directories beyond cwd for this session (repeatable `--add-dir`). */
|
|
6
|
+
addDir?: string[];
|
|
5
7
|
profile?: string;
|
|
6
8
|
alias?: string;
|
|
7
9
|
allowHome?: boolean;
|
|
@@ -12,6 +12,11 @@ export interface BenchCommandArgs {
|
|
|
12
12
|
serviceTier?: string;
|
|
13
13
|
json?: boolean;
|
|
14
14
|
par?: number;
|
|
15
|
+
cache?: boolean;
|
|
16
|
+
cachePrefixFile?: string;
|
|
17
|
+
cachePrefixBytes?: number;
|
|
18
|
+
cachePairs?: number;
|
|
19
|
+
cacheConcurrency?: number;
|
|
15
20
|
};
|
|
16
21
|
}
|
|
17
22
|
export interface BenchModelRegistry {
|
|
@@ -38,6 +43,36 @@ export interface BenchRunFailure {
|
|
|
38
43
|
error: string;
|
|
39
44
|
}
|
|
40
45
|
export type BenchRunResult = BenchRunSuccess | BenchRunFailure;
|
|
46
|
+
export type CacheObservation = "prompt_cache_read_observed" | "prompt_cache_write_observed" | "response_cache_hit_observed" | "no_provider_proof";
|
|
47
|
+
export interface BenchCacheUsage {
|
|
48
|
+
inputTokens: number;
|
|
49
|
+
outputTokens: number;
|
|
50
|
+
cacheReadTokens: number;
|
|
51
|
+
cacheWriteTokens: number;
|
|
52
|
+
totalTokens: number;
|
|
53
|
+
cost: number;
|
|
54
|
+
}
|
|
55
|
+
export interface BenchCacheRunReport {
|
|
56
|
+
phase: "cold" | "warm";
|
|
57
|
+
result: BenchRunResult;
|
|
58
|
+
usage?: BenchCacheUsage;
|
|
59
|
+
requestIdObserved: boolean;
|
|
60
|
+
observations: CacheObservation[];
|
|
61
|
+
}
|
|
62
|
+
export interface BenchCachePairReport {
|
|
63
|
+
cold: BenchCacheRunReport;
|
|
64
|
+
warm: BenchCacheRunReport;
|
|
65
|
+
/** The nominal cold request showed cache reuse, so it is not a true cold baseline. */
|
|
66
|
+
coldAlreadyWarm: boolean;
|
|
67
|
+
/** Structural-only comparisons: prompt text and cache keys are never emitted. */
|
|
68
|
+
stablePrefix: true;
|
|
69
|
+
suffixChanged: true;
|
|
70
|
+
promptCacheKeyStable: true;
|
|
71
|
+
statefulResponsesDisabled: true;
|
|
72
|
+
freshProviderSessionState: true;
|
|
73
|
+
/** "unavailable" when a transport does not expose the provider payload locally. */
|
|
74
|
+
payloadStructureStable: boolean | "unavailable";
|
|
75
|
+
}
|
|
41
76
|
export interface BenchAverages {
|
|
42
77
|
ttftMs: number;
|
|
43
78
|
durationMs: number;
|
|
@@ -54,6 +89,7 @@ export interface BenchModelReport {
|
|
|
54
89
|
results: BenchRunResult[];
|
|
55
90
|
/** Averages over successful runs; null when every run failed. */
|
|
56
91
|
average: BenchAverages | null;
|
|
92
|
+
cachePairs?: BenchCachePairReport[];
|
|
57
93
|
}
|
|
58
94
|
export interface BenchSummary {
|
|
59
95
|
runs: number;
|
|
@@ -62,6 +98,10 @@ export interface BenchSummary {
|
|
|
62
98
|
failures: number;
|
|
63
99
|
/** Requested per-family service tiers, resolved per model before reaching the wire. */
|
|
64
100
|
serviceTierByFamily?: ServiceTierByFamily;
|
|
101
|
+
cache?: {
|
|
102
|
+
pairs: number;
|
|
103
|
+
concurrency: number;
|
|
104
|
+
};
|
|
65
105
|
}
|
|
66
106
|
type BenchStreamSimple = (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;
|
|
67
107
|
export interface BenchDependencies {
|
|
@@ -72,6 +112,7 @@ export interface BenchDependencies {
|
|
|
72
112
|
setExitCode?: (code: number) => void;
|
|
73
113
|
streamSimple?: BenchStreamSimple;
|
|
74
114
|
now?: () => number;
|
|
115
|
+
readTextFile?: (path: string, maxBytes: number) => Promise<string>;
|
|
75
116
|
stdoutIsTTY?: boolean;
|
|
76
117
|
}
|
|
77
118
|
export declare function formatBenchTable(summary: BenchSummary): string;
|
|
@@ -11,11 +11,9 @@ export default class Bench extends Command {
|
|
|
11
11
|
static flags: {
|
|
12
12
|
runs: import("@oh-my-pi/pi-utils/cli").FlagDescriptor<"integer"> & {
|
|
13
13
|
description: string;
|
|
14
|
-
default: number;
|
|
15
14
|
};
|
|
16
15
|
"max-tokens": import("@oh-my-pi/pi-utils/cli").FlagDescriptor<"integer"> & {
|
|
17
16
|
description: string;
|
|
18
|
-
default: number;
|
|
19
17
|
};
|
|
20
18
|
prompt: import("@oh-my-pi/pi-utils/cli").FlagDescriptor<"string"> & {
|
|
21
19
|
description: string;
|
|
@@ -29,7 +27,21 @@ export default class Bench extends Command {
|
|
|
29
27
|
};
|
|
30
28
|
par: import("@oh-my-pi/pi-utils/cli").FlagDescriptor<"integer"> & {
|
|
31
29
|
description: string;
|
|
32
|
-
|
|
30
|
+
};
|
|
31
|
+
cache: import("@oh-my-pi/pi-utils/cli").FlagDescriptor<"boolean"> & {
|
|
32
|
+
description: string;
|
|
33
|
+
};
|
|
34
|
+
"cache-prefix-file": import("@oh-my-pi/pi-utils/cli").FlagDescriptor<"string"> & {
|
|
35
|
+
description: string;
|
|
36
|
+
};
|
|
37
|
+
"cache-prefix-bytes": import("@oh-my-pi/pi-utils/cli").FlagDescriptor<"integer"> & {
|
|
38
|
+
description: string;
|
|
39
|
+
};
|
|
40
|
+
"cache-pairs": import("@oh-my-pi/pi-utils/cli").FlagDescriptor<"integer"> & {
|
|
41
|
+
description: string;
|
|
42
|
+
};
|
|
43
|
+
"cache-concurrency": import("@oh-my-pi/pi-utils/cli").FlagDescriptor<"integer"> & {
|
|
44
|
+
description: string;
|
|
33
45
|
};
|
|
34
46
|
};
|
|
35
47
|
static examples: string[];
|
|
@@ -72,6 +72,10 @@ export default class Index extends Command {
|
|
|
72
72
|
description: string;
|
|
73
73
|
multiple: true;
|
|
74
74
|
};
|
|
75
|
+
"add-dir": import("@oh-my-pi/pi-utils/cli").FlagDescriptor<"string"> & {
|
|
76
|
+
description: string;
|
|
77
|
+
multiple: true;
|
|
78
|
+
};
|
|
75
79
|
print: import("@oh-my-pi/pi-utils/cli").FlagDescriptor<"boolean"> & {
|
|
76
80
|
char: string;
|
|
77
81
|
description: string;
|
|
@@ -175,7 +175,9 @@ export declare class ModelRegistry {
|
|
|
175
175
|
/**
|
|
176
176
|
* Get API key for a model.
|
|
177
177
|
*/
|
|
178
|
-
getApiKey(model: Model<Api>, sessionId?: string
|
|
178
|
+
getApiKey(model: Model<Api>, sessionId?: string, options?: {
|
|
179
|
+
signal?: AbortSignal;
|
|
180
|
+
}): Promise<string | undefined>;
|
|
179
181
|
/**
|
|
180
182
|
* Get API key for a provider (e.g., "openai").
|
|
181
183
|
*
|
|
@@ -250,12 +250,15 @@ export declare const ModelOverrideSchema: import("arktype/internal/variants/obje
|
|
|
250
250
|
requiresToolResultId?: boolean | undefined;
|
|
251
251
|
replayUnsignedThinking?: boolean | undefined;
|
|
252
252
|
} | undefined;
|
|
253
|
+
promptCacheMode?: "automatic" | "explicit" | "none" | undefined;
|
|
254
|
+
promptCacheMinimumTokens?: number | undefined;
|
|
255
|
+
promptCacheMaximumCheckpoints?: number | undefined;
|
|
253
256
|
} | undefined;
|
|
254
257
|
contextPromotionTarget?: string | undefined;
|
|
255
258
|
compactionModel?: string | undefined;
|
|
256
259
|
remoteCompaction?: {
|
|
257
260
|
enabled?: boolean | undefined;
|
|
258
|
-
api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
261
|
+
api?: "anthropic-messages" | "azure-openai-responses" | "bedrock-converse-stream" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
259
262
|
endpoint?: string | undefined;
|
|
260
263
|
model?: string | undefined;
|
|
261
264
|
v2StreamingEnabled?: boolean | undefined;
|
|
@@ -275,7 +278,7 @@ export declare const ModelsConfigSchema: import("arktype/internal/variants/objec
|
|
|
275
278
|
[x: string]: {
|
|
276
279
|
baseUrl?: string | undefined;
|
|
277
280
|
apiKey?: string | undefined;
|
|
278
|
-
api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
281
|
+
api?: "anthropic-messages" | "azure-openai-responses" | "bedrock-converse-stream" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
279
282
|
headers?: {
|
|
280
283
|
[x: string]: string;
|
|
281
284
|
} | undefined;
|
|
@@ -384,10 +387,13 @@ export declare const ModelsConfigSchema: import("arktype/internal/variants/objec
|
|
|
384
387
|
requiresToolResultId?: boolean | undefined;
|
|
385
388
|
replayUnsignedThinking?: boolean | undefined;
|
|
386
389
|
} | undefined;
|
|
390
|
+
promptCacheMode?: "automatic" | "explicit" | "none" | undefined;
|
|
391
|
+
promptCacheMinimumTokens?: number | undefined;
|
|
392
|
+
promptCacheMaximumCheckpoints?: number | undefined;
|
|
387
393
|
} | undefined;
|
|
388
394
|
remoteCompaction?: {
|
|
389
395
|
enabled?: boolean | undefined;
|
|
390
|
-
api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
396
|
+
api?: "anthropic-messages" | "azure-openai-responses" | "bedrock-converse-stream" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
391
397
|
endpoint?: string | undefined;
|
|
392
398
|
model?: string | undefined;
|
|
393
399
|
v2StreamingEnabled?: boolean | undefined;
|
|
@@ -402,7 +408,7 @@ export declare const ModelsConfigSchema: import("arktype/internal/variants/objec
|
|
|
402
408
|
models?: {
|
|
403
409
|
id: string;
|
|
404
410
|
name?: string | undefined;
|
|
405
|
-
api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
411
|
+
api?: "anthropic-messages" | "azure-openai-responses" | "bedrock-converse-stream" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
406
412
|
baseUrl?: string | undefined;
|
|
407
413
|
reasoning?: boolean | undefined;
|
|
408
414
|
thinking?: ((In: {
|
|
@@ -548,12 +554,15 @@ export declare const ModelsConfigSchema: import("arktype/internal/variants/objec
|
|
|
548
554
|
requiresToolResultId?: boolean | undefined;
|
|
549
555
|
replayUnsignedThinking?: boolean | undefined;
|
|
550
556
|
} | undefined;
|
|
557
|
+
promptCacheMode?: "automatic" | "explicit" | "none" | undefined;
|
|
558
|
+
promptCacheMinimumTokens?: number | undefined;
|
|
559
|
+
promptCacheMaximumCheckpoints?: number | undefined;
|
|
551
560
|
} | undefined;
|
|
552
561
|
contextPromotionTarget?: string | undefined;
|
|
553
562
|
compactionModel?: string | undefined;
|
|
554
563
|
remoteCompaction?: {
|
|
555
564
|
enabled?: boolean | undefined;
|
|
556
|
-
api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
565
|
+
api?: "anthropic-messages" | "azure-openai-responses" | "bedrock-converse-stream" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
557
566
|
endpoint?: string | undefined;
|
|
558
567
|
model?: string | undefined;
|
|
559
568
|
v2StreamingEnabled?: boolean | undefined;
|
|
@@ -708,12 +717,15 @@ export declare const ModelsConfigSchema: import("arktype/internal/variants/objec
|
|
|
708
717
|
requiresToolResultId?: boolean | undefined;
|
|
709
718
|
replayUnsignedThinking?: boolean | undefined;
|
|
710
719
|
} | undefined;
|
|
720
|
+
promptCacheMode?: "automatic" | "explicit" | "none" | undefined;
|
|
721
|
+
promptCacheMinimumTokens?: number | undefined;
|
|
722
|
+
promptCacheMaximumCheckpoints?: number | undefined;
|
|
711
723
|
} | undefined;
|
|
712
724
|
contextPromotionTarget?: string | undefined;
|
|
713
725
|
compactionModel?: string | undefined;
|
|
714
726
|
remoteCompaction?: {
|
|
715
727
|
enabled?: boolean | undefined;
|
|
716
|
-
api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
728
|
+
api?: "anthropic-messages" | "azure-openai-responses" | "bedrock-converse-stream" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
717
729
|
endpoint?: string | undefined;
|
|
718
730
|
model?: string | undefined;
|
|
719
731
|
v2StreamingEnabled?: boolean | undefined;
|
|
@@ -32,7 +32,7 @@ export declare const ModelsConfigFile: ConfigFile<{
|
|
|
32
32
|
[x: string]: {
|
|
33
33
|
baseUrl?: string | undefined;
|
|
34
34
|
apiKey?: string | undefined;
|
|
35
|
-
api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
35
|
+
api?: "anthropic-messages" | "azure-openai-responses" | "bedrock-converse-stream" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
36
36
|
headers?: {
|
|
37
37
|
[x: string]: string;
|
|
38
38
|
} | undefined;
|
|
@@ -141,10 +141,13 @@ export declare const ModelsConfigFile: ConfigFile<{
|
|
|
141
141
|
requiresToolResultId?: boolean | undefined;
|
|
142
142
|
replayUnsignedThinking?: boolean | undefined;
|
|
143
143
|
} | undefined;
|
|
144
|
+
promptCacheMode?: "automatic" | "explicit" | "none" | undefined;
|
|
145
|
+
promptCacheMinimumTokens?: number | undefined;
|
|
146
|
+
promptCacheMaximumCheckpoints?: number | undefined;
|
|
144
147
|
} | undefined;
|
|
145
148
|
remoteCompaction?: {
|
|
146
149
|
enabled?: boolean | undefined;
|
|
147
|
-
api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
150
|
+
api?: "anthropic-messages" | "azure-openai-responses" | "bedrock-converse-stream" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
148
151
|
endpoint?: string | undefined;
|
|
149
152
|
model?: string | undefined;
|
|
150
153
|
v2StreamingEnabled?: boolean | undefined;
|
|
@@ -159,7 +162,7 @@ export declare const ModelsConfigFile: ConfigFile<{
|
|
|
159
162
|
models?: {
|
|
160
163
|
id: string;
|
|
161
164
|
name?: string | undefined;
|
|
162
|
-
api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
165
|
+
api?: "anthropic-messages" | "azure-openai-responses" | "bedrock-converse-stream" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
163
166
|
baseUrl?: string | undefined;
|
|
164
167
|
reasoning?: boolean | undefined;
|
|
165
168
|
thinking?: {
|
|
@@ -289,12 +292,15 @@ export declare const ModelsConfigFile: ConfigFile<{
|
|
|
289
292
|
requiresToolResultId?: boolean | undefined;
|
|
290
293
|
replayUnsignedThinking?: boolean | undefined;
|
|
291
294
|
} | undefined;
|
|
295
|
+
promptCacheMode?: "automatic" | "explicit" | "none" | undefined;
|
|
296
|
+
promptCacheMinimumTokens?: number | undefined;
|
|
297
|
+
promptCacheMaximumCheckpoints?: number | undefined;
|
|
292
298
|
} | undefined;
|
|
293
299
|
contextPromotionTarget?: string | undefined;
|
|
294
300
|
compactionModel?: string | undefined;
|
|
295
301
|
remoteCompaction?: {
|
|
296
302
|
enabled?: boolean | undefined;
|
|
297
|
-
api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
303
|
+
api?: "anthropic-messages" | "azure-openai-responses" | "bedrock-converse-stream" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
298
304
|
endpoint?: string | undefined;
|
|
299
305
|
model?: string | undefined;
|
|
300
306
|
v2StreamingEnabled?: boolean | undefined;
|
|
@@ -433,12 +439,15 @@ export declare const ModelsConfigFile: ConfigFile<{
|
|
|
433
439
|
requiresToolResultId?: boolean | undefined;
|
|
434
440
|
replayUnsignedThinking?: boolean | undefined;
|
|
435
441
|
} | undefined;
|
|
442
|
+
promptCacheMode?: "automatic" | "explicit" | "none" | undefined;
|
|
443
|
+
promptCacheMinimumTokens?: number | undefined;
|
|
444
|
+
promptCacheMaximumCheckpoints?: number | undefined;
|
|
436
445
|
} | undefined;
|
|
437
446
|
contextPromotionTarget?: string | undefined;
|
|
438
447
|
compactionModel?: string | undefined;
|
|
439
448
|
remoteCompaction?: {
|
|
440
449
|
enabled?: boolean | undefined;
|
|
441
|
-
api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
450
|
+
api?: "anthropic-messages" | "azure-openai-responses" | "bedrock-converse-stream" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
|
|
442
451
|
endpoint?: string | undefined;
|
|
443
452
|
model?: string | undefined;
|
|
444
453
|
v2StreamingEnabled?: boolean | undefined;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
interface ProviderGlobalSettings {
|
|
2
|
+
get(path: "providers.webSearchOrder"): unknown;
|
|
2
3
|
get(path: "providers.webSearchExclude"): unknown;
|
|
3
|
-
get(path: "providers.
|
|
4
|
-
get(path: "providers.image"): unknown;
|
|
4
|
+
get(path: "providers.imageOrder"): unknown;
|
|
5
5
|
}
|
|
6
6
|
export declare function applyProviderGlobalsFromSettings(settings: ProviderGlobalSettings): void;
|
|
7
7
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ServiceTier, ServiceTierByFamily } from "@oh-my-pi/pi-ai";
|
|
1
|
+
import type { ServiceTier, ServiceTierByFamily, ServiceTierFamily } from "@oh-my-pi/pi-ai";
|
|
2
2
|
import type { SubmenuOption } from "./settings-schema.js";
|
|
3
3
|
/**
|
|
4
4
|
* Per-family service-tier setting values. `"none"` is the omit-the-parameter
|
|
@@ -13,6 +13,10 @@ export declare const SERVICE_TIER_GOOGLE_VALUES: readonly ["none", "flex", "prio
|
|
|
13
13
|
export type ServiceTierOpenAISettingValue = (typeof SERVICE_TIER_OPENAI_VALUES)[number];
|
|
14
14
|
export type ServiceTierAnthropicSettingValue = (typeof SERVICE_TIER_ANTHROPIC_VALUES)[number];
|
|
15
15
|
export type ServiceTierGoogleSettingValue = (typeof SERVICE_TIER_GOOGLE_VALUES)[number];
|
|
16
|
+
/** Whether a runtime value names a provider family with an independent service-tier knob. */
|
|
17
|
+
export declare function isServiceTierFamily(value: unknown): value is ServiceTierFamily;
|
|
18
|
+
/** Whether a runtime value is a supported service tier for one provider family. */
|
|
19
|
+
export declare function isServiceTierForFamily(family: string, tier: unknown): tier is ServiceTier;
|
|
16
20
|
/**
|
|
17
21
|
* Inherit-capable single value for the subagent/advisor tiers. The chosen tier
|
|
18
22
|
* is broadcast across families and applied to whichever family the spawned
|