@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
package/src/web/search/index.ts
CHANGED
|
@@ -135,11 +135,9 @@ async function executeSearch(
|
|
|
135
135
|
let candidates: SearchProviderCandidate[];
|
|
136
136
|
if (explicitProvider && explicitProvider !== "auto") {
|
|
137
137
|
candidates = [{ id: explicitProvider, explicit: true }];
|
|
138
|
-
} else if (explicitProvider === "auto") {
|
|
139
|
-
// Explicit `--provider auto` bypasses the configured preferred provider
|
|
140
|
-
// for this invocation; exclusions still apply.
|
|
141
|
-
candidates = resolveProviderCandidates("auto");
|
|
142
138
|
} else {
|
|
139
|
+
// `--provider auto` and the default both walk the configured chain;
|
|
140
|
+
// exclusions still apply.
|
|
143
141
|
candidates = resolveProviderCandidates();
|
|
144
142
|
}
|
|
145
143
|
|
|
@@ -216,7 +214,6 @@ async function executeSearch(
|
|
|
216
214
|
// summary error), masking the cancellation.
|
|
217
215
|
throwIfAborted(signal);
|
|
218
216
|
failures.push({ provider: provider ?? providerMeta, error });
|
|
219
|
-
if (candidate.explicit) break;
|
|
220
217
|
}
|
|
221
218
|
}
|
|
222
219
|
|
|
@@ -351,6 +348,6 @@ export function getSearchTools(): CustomTool<any, any>[] {
|
|
|
351
348
|
return [webSearchCustomTool];
|
|
352
349
|
}
|
|
353
350
|
|
|
354
|
-
export { getSearchProvider, setExcludedSearchProviders,
|
|
351
|
+
export { getSearchProvider, setExcludedSearchProviders, setSearchProviderOrder } from "./provider";
|
|
355
352
|
export type { SearchProviderId as SearchProvider, SearchResponse } from "./types";
|
|
356
353
|
export { isSearchProviderId, isSearchProviderPreference } from "./types";
|
|
@@ -189,12 +189,25 @@ export async function getSearchProvider(id: SearchProviderId): Promise<SearchPro
|
|
|
189
189
|
return provider;
|
|
190
190
|
}
|
|
191
191
|
|
|
192
|
-
/**
|
|
193
|
-
let
|
|
192
|
+
/** Provider fallback order set via settings (default: built-in order). */
|
|
193
|
+
let orderedProvIds: readonly SearchProviderId[] = SEARCH_PROVIDER_ORDER;
|
|
194
|
+
/** Providers the user explicitly listed in `providers.webSearchOrder`. */
|
|
195
|
+
let explicitProvIds = new Set<SearchProviderId>();
|
|
194
196
|
|
|
195
|
-
/**
|
|
196
|
-
|
|
197
|
-
|
|
197
|
+
/**
|
|
198
|
+
* Prioritize configured providers while retaining every unlisted provider in
|
|
199
|
+
* its built-in relative order. Invalid IDs are ignored defensively. Listed
|
|
200
|
+
* providers are treated as explicit selections: they resolve through
|
|
201
|
+
* `isExplicitlyAvailable`, so e.g. a hand-listed Perplexity may fall back to
|
|
202
|
+
* anonymous search exactly like the retired single-preference setting did.
|
|
203
|
+
*/
|
|
204
|
+
export function setSearchProviderOrder(providers: readonly SearchProviderId[]): void {
|
|
205
|
+
const prioritized = new Set(providers.filter(id => SEARCH_PROVIDER_ORDER.includes(id)));
|
|
206
|
+
explicitProvIds = prioritized;
|
|
207
|
+
orderedProvIds =
|
|
208
|
+
prioritized.size === 0
|
|
209
|
+
? SEARCH_PROVIDER_ORDER
|
|
210
|
+
: [...prioritized, ...SEARCH_PROVIDER_ORDER.filter(id => !prioritized.has(id))];
|
|
198
211
|
}
|
|
199
212
|
|
|
200
213
|
/** Providers excluded from web search resolution via settings. */
|
|
@@ -215,19 +228,21 @@ export interface SearchProviderCandidate {
|
|
|
215
228
|
explicit: boolean;
|
|
216
229
|
}
|
|
217
230
|
|
|
218
|
-
/**
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
231
|
+
/**
|
|
232
|
+
* Return provider candidates in fallback order without loading their modules.
|
|
233
|
+
* `forcedProvider` (a per-request `provider` argument) is terminal-first and
|
|
234
|
+
* bypasses exclusion; configured-order entries carry `explicit: true`.
|
|
235
|
+
*/
|
|
236
|
+
export function resolveProviderCandidates(forcedProvider?: SearchProviderId): SearchProviderCandidate[] {
|
|
222
237
|
const candidates: SearchProviderCandidate[] = [];
|
|
223
238
|
|
|
224
|
-
if (
|
|
225
|
-
candidates.push({ id:
|
|
239
|
+
if (forcedProvider !== undefined && !isSearchProviderExcluded(forcedProvider)) {
|
|
240
|
+
candidates.push({ id: forcedProvider, explicit: true });
|
|
226
241
|
}
|
|
227
242
|
|
|
228
|
-
for (const id of
|
|
229
|
-
if (id ===
|
|
230
|
-
candidates.push({ id, explicit:
|
|
243
|
+
for (const id of orderedProvIds) {
|
|
244
|
+
if (id === forcedProvider || isSearchProviderExcluded(id)) continue;
|
|
245
|
+
candidates.push({ id, explicit: explicitProvIds.has(id) });
|
|
231
246
|
}
|
|
232
247
|
|
|
233
248
|
return candidates;
|
|
@@ -241,11 +256,11 @@ export function resolveProviderCandidates(
|
|
|
241
256
|
*/
|
|
242
257
|
export async function resolveProviderChain(
|
|
243
258
|
authStorage: AuthStorage,
|
|
244
|
-
|
|
259
|
+
forcedProvider?: SearchProviderId,
|
|
245
260
|
): Promise<SearchProvider[]> {
|
|
246
261
|
const providers: SearchProvider[] = [];
|
|
247
262
|
|
|
248
|
-
for (const candidate of resolveProviderCandidates(
|
|
263
|
+
for (const candidate of resolveProviderCandidates(forcedProvider)) {
|
|
249
264
|
const provider = await getSearchProvider(candidate.id);
|
|
250
265
|
const available = candidate.explicit
|
|
251
266
|
? await provider.isExplicitlyAvailable(authStorage)
|
|
@@ -9,7 +9,12 @@ import { SearchProvider } from "./base";
|
|
|
9
9
|
import { classifyProviderHttpError, withHardTimeout } from "./utils";
|
|
10
10
|
|
|
11
11
|
const XAI_DEFAULT_BASE_URL = "https://api.x.ai/v1";
|
|
12
|
-
const XAI_WEB_SEARCH_MODEL = "grok-4.
|
|
12
|
+
const XAI_WEB_SEARCH_MODEL = "grok-4.5";
|
|
13
|
+
// grok-4.5 defaults reasoning.effort to "high"; xAI documents "low" for
|
|
14
|
+
// latency-sensitive agentic use and simple tool calling
|
|
15
|
+
// (docs.x.ai/developers/model-capabilities/text/reasoning). Web search is
|
|
16
|
+
// exactly that and runs under a 60s hard timeout, so pin the search calls low.
|
|
17
|
+
const XAI_WEB_SEARCH_REASONING_EFFORT = "low";
|
|
13
18
|
const DEFAULT_NUM_RESULTS = 10;
|
|
14
19
|
const MAX_NUM_RESULTS = 30;
|
|
15
20
|
|
|
@@ -60,6 +65,7 @@ function buildRequestBody(params: SearchParams): Record<string, unknown> {
|
|
|
60
65
|
{ role: "user", content: params.query },
|
|
61
66
|
],
|
|
62
67
|
tools: [{ type: "web_search" }],
|
|
68
|
+
reasoning: { effort: XAI_WEB_SEARCH_REASONING_EFFORT },
|
|
63
69
|
};
|
|
64
70
|
|
|
65
71
|
if (params.maxOutputTokens !== undefined) {
|
package/src/web/search/types.ts
CHANGED
|
@@ -96,6 +96,9 @@ export const SEARCH_PROVIDER_ORDER: readonly SearchProviderId[] = SEARCH_PROVIDE
|
|
|
96
96
|
option.value === "auto" ? [] : [option.value],
|
|
97
97
|
);
|
|
98
98
|
|
|
99
|
+
/** Concrete provider choices (no `auto` sentinel) — for list-valued settings like order/exclude. */
|
|
100
|
+
export const SEARCH_PROVIDER_CHOICES = SEARCH_PROVIDER_OPTIONS.filter(option => option.value !== "auto");
|
|
101
|
+
|
|
99
102
|
export const SEARCH_PROVIDER_PREFERENCES = ["auto", ...SEARCH_PROVIDER_ORDER] as const;
|
|
100
103
|
|
|
101
104
|
/** Display labels, derived from {@link SEARCH_PROVIDER_OPTIONS}. */
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
export interface RecordingHandle {
|
|
2
|
-
stop(): Promise<void>;
|
|
3
|
-
}
|
|
4
|
-
/**
|
|
5
|
-
* Returns available recording tools in priority order.
|
|
6
|
-
*/
|
|
7
|
-
export declare function detectRecordingTools(): string[];
|
|
8
|
-
export interface ResolvedRecorder {
|
|
9
|
-
tool: "sox" | "ffmpeg" | "arecord" | "powershell";
|
|
10
|
-
bin: string;
|
|
11
|
-
}
|
|
12
|
-
export declare function detectRecorder(): ResolvedRecorder | null;
|
|
13
|
-
/**
|
|
14
|
-
* Ensure a recorder is available, downloading the static ffmpeg binary when
|
|
15
|
-
* nothing is already present. Returns the resolved recorder.
|
|
16
|
-
*/
|
|
17
|
-
export declare function ensureRecorder(onProgress?: (p: {
|
|
18
|
-
stage: string;
|
|
19
|
-
percent?: number;
|
|
20
|
-
}) => void, signal?: AbortSignal): Promise<ResolvedRecorder>;
|
|
21
|
-
export declare function startRecording(outputPath: string): Promise<RecordingHandle>;
|
|
22
|
-
/**
|
|
23
|
-
* Verify a recorded audio file is usable.
|
|
24
|
-
* Returns the file size in bytes, or throws.
|
|
25
|
-
*/
|
|
26
|
-
export declare function verifyRecordingFile(filePath: string): Promise<number>;
|
|
27
|
-
export interface StreamingRecordingHandle {
|
|
28
|
-
stop(): Promise<void>;
|
|
29
|
-
}
|
|
30
|
-
export declare function startStreamingRecording(onAudio: (samples: Float32Array) => void): Promise<StreamingRecordingHandle | null>;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export interface TranscribeOptions {
|
|
2
|
-
modelName?: string;
|
|
3
|
-
language?: string;
|
|
4
|
-
signal?: AbortSignal;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Transcribe a WAV file using the local ONNX Whisper worker.
|
|
8
|
-
*
|
|
9
|
-
* Decodes the WAV to a 16 kHz mono Float32Array in-process (no Python, no
|
|
10
|
-
* ffmpeg) and routes it to the warm speech worker, which keeps the model loaded
|
|
11
|
-
* across calls. Honors `options.signal` (abort) and applies an internal timeout
|
|
12
|
-
* with the same semantics as the previous Python path.
|
|
13
|
-
*/
|
|
14
|
-
export declare function transcribe(audioPath: string, options?: TranscribeOptions): Promise<string>;
|
package/dist/types/stt/wav.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Minimal WAV (RIFF/PCM) decoder producing the Float32Array @ 16 kHz mono that
|
|
3
|
-
* transformers.js `automatic-speech-recognition` expects. Ports the decode/
|
|
4
|
-
* mono-mix/resample logic from the retired Python `transcribe.py` (which read
|
|
5
|
-
* via the stdlib `wave` module) so STT no longer shells out to Python.
|
|
6
|
-
*
|
|
7
|
-
* Supported sample formats: PCM uint8 (8-bit), int16 (16-bit), int32 (32-bit),
|
|
8
|
-
* and IEEE float32 (format tag 3). Any number of channels is mixed down to mono.
|
|
9
|
-
*/
|
|
10
|
-
/** transformers.js Whisper feature extractor operates at 16 kHz. */
|
|
11
|
-
export declare const TARGET_SAMPLE_RATE = 16000;
|
|
12
|
-
/**
|
|
13
|
-
* Resample via linear interpolation, mirroring the Python `np.interp` over
|
|
14
|
-
* `linspace(0, n-1, targetLen)` against `arange(n)`.
|
|
15
|
-
*/
|
|
16
|
-
export declare function resampleLinear(input: Float32Array, fromRate: number, toRate: number): Float32Array;
|
|
17
|
-
/**
|
|
18
|
-
* Decode a WAV byte buffer into a 16 kHz mono Float32Array suitable for the
|
|
19
|
-
* transformers.js Whisper pipeline.
|
|
20
|
-
*/
|
|
21
|
-
export declare function decodeWavToMono16k(buffer: ArrayBuffer): Float32Array;
|
|
22
|
-
/**
|
|
23
|
-
* Decode interleaved little-endian signed 16-bit PCM bytes into normalized
|
|
24
|
-
* [-1, 1] mono float samples. The live recorder streams raw s16le frames from
|
|
25
|
-
* sox/ffmpeg/arecord stdout (no RIFF container), so this is the hot-path
|
|
26
|
-
* counterpart to {@link decodeWavToMono16k}. `bytes` MUST be 2-byte aligned;
|
|
27
|
-
* callers buffer any trailing odd byte across chunk boundaries.
|
|
28
|
-
*/
|
|
29
|
-
export declare function decodePcmS16LE(bytes: Uint8Array): Float32Array;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
export interface PlayerCommand {
|
|
2
|
-
cmd: string;
|
|
3
|
-
args: string[];
|
|
4
|
-
}
|
|
5
|
-
/** Injection seam for {@link playerCommandsFor} — defaults to real PATH/tools lookups. */
|
|
6
|
-
export interface PlayerLookup {
|
|
7
|
-
which?: (bin: string) => string | null;
|
|
8
|
-
ffmpeg?: () => string | null;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Build the ordered list of playback commands to try for `filePath` on the
|
|
12
|
-
* given platform. Pure + injectable so the selection logic is testable without
|
|
13
|
-
* spawning anything.
|
|
14
|
-
*
|
|
15
|
-
* - darwin: `afplay` (always present on macOS).
|
|
16
|
-
* - win32: PowerShell `Media.SoundPlayer.PlaySync()` (no extra deps).
|
|
17
|
-
* - linux/other POSIX: `paplay` (PulseAudio) → `aplay` (ALSA) → the bundled
|
|
18
|
-
* static `ffmpeg` (`-f pulse` then `-f alsa`). Empty result means nothing is
|
|
19
|
-
* available and the caller should surface an install hint.
|
|
20
|
-
*/
|
|
21
|
-
export declare function playerCommandsFor(platform: NodeJS.Platform, filePath: string, lookup?: PlayerLookup): PlayerCommand[];
|
|
22
|
-
export interface PlayAudioOptions {
|
|
23
|
-
signal?: AbortSignal;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Play `filePath` through the speakers, trying each candidate command in order
|
|
27
|
-
* and returning on the first clean exit. Throws an actionable Error if no
|
|
28
|
-
* player exists or every candidate fails (with the collected stderr).
|
|
29
|
-
*/
|
|
30
|
-
export declare function playAudioFile(filePath: string, options?: PlayAudioOptions): Promise<void>;
|
|
31
|
-
/** Best-effort temp-file cleanup used by callers after playback. */
|
|
32
|
-
export declare function removeTempFile(filePath: string): Promise<void>;
|