@the-open-engine/zeroshot 6.38.0 → 6.39.0
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/cli/event-copy.js +8 -7
- package/cli/event-copy.ts +12 -0
- package/cli/index.js +7 -31
- package/cli/json-export.js +61 -64
- package/cli/json-export.ts +112 -0
- package/cli/message-formatter-utils.js +68 -56
- package/cli/message-formatter-utils.ts +121 -0
- package/cli/message-formatters-normal.js +124 -259
- package/cli/message-formatters-normal.ts +250 -0
- package/cli/message-formatters-watch.js +81 -84
- package/cli/message-formatters-watch.ts +189 -0
- package/lib/agent-cli-provider/adapters/codex.d.ts.map +1 -1
- package/lib/agent-cli-provider/adapters/codex.js +3 -1
- package/lib/agent-cli-provider/adapters/codex.js.map +1 -1
- package/lib/cluster/generated/protocol-schema.cjs +1 -1
- package/lib/cluster/generated/protocol-schema.mjs +1 -1
- package/lib/cluster/generated/protocol.d.cts +8 -0
- package/lib/cluster/generated/protocol.d.mts +8 -0
- package/lib/cluster/generated/protocol.d.ts +8 -0
- package/lib/clusters-registry.d.ts +23 -0
- package/lib/clusters-registry.js +17 -29
- package/lib/completion.d.ts +12 -0
- package/lib/completion.js +84 -94
- package/lib/compose-utils.d.ts +32 -0
- package/lib/compose-utils.js +57 -72
- package/lib/detached-startup.d.ts +83 -0
- package/lib/detached-startup.js +231 -302
- package/lib/docker-config.d.ts +43 -0
- package/lib/docker-config.js +150 -325
- package/lib/docker-env-auth.d.ts +17 -0
- package/lib/docker-env-auth.js +75 -0
- package/lib/git-remote-utils.d.ts +48 -0
- package/lib/git-remote-utils.js +147 -213
- package/lib/id-detector.d.ts +15 -0
- package/lib/id-detector.js +37 -41
- package/lib/path-check.d.ts +30 -0
- package/lib/path-check.js +42 -45
- package/lib/process-liveness.d.ts +16 -0
- package/lib/process-liveness.js +19 -12
- package/lib/provider-credential-path.d.ts +16 -0
- package/lib/provider-credential-path.js +31 -29
- package/lib/provider-defaults.d.ts +30 -0
- package/lib/provider-defaults.js +47 -42
- package/lib/provider-detection.d.ts +11 -0
- package/lib/provider-detection.js +91 -54
- package/lib/provider-names.d.ts +38 -0
- package/lib/provider-names.js +56 -64
- package/lib/repo-settings.d.ts +28 -0
- package/lib/repo-settings.js +83 -59
- package/lib/run-mode.d.ts +21 -0
- package/lib/run-mode.js +21 -20
- package/lib/run-plan.d.ts +28 -0
- package/lib/run-plan.js +17 -16
- package/lib/settings/claude-auth.d.ts +35 -0
- package/lib/settings/claude-auth.js +30 -47
- package/lib/settings-defaults.d.ts +20 -0
- package/lib/settings-defaults.js +149 -0
- package/lib/settings-error.d.ts +7 -0
- package/lib/settings-error.js +8 -0
- package/lib/settings-issue-providers.d.ts +10 -0
- package/lib/settings-issue-providers.js +12 -0
- package/lib/settings-models.d.ts +22 -0
- package/lib/settings-models.js +93 -0
- package/lib/settings-storage.d.ts +23 -0
- package/lib/settings-storage.js +205 -0
- package/lib/settings-validation.d.ts +7 -0
- package/lib/settings-validation.js +182 -0
- package/lib/settings.d.ts +29 -0
- package/lib/settings.js +41 -736
- package/lib/setup-apply-types.d.ts +66 -0
- package/lib/setup-apply-types.js +2 -0
- package/lib/setup-apply.d.ts +39 -0
- package/lib/setup-apply.js +267 -264
- package/lib/setup-journal.d.ts +41 -0
- package/lib/setup-journal.js +119 -76
- package/lib/setup-plan-types.d.ts +102 -0
- package/lib/setup-plan-types.js +2 -0
- package/lib/setup-plan.d.ts +30 -0
- package/lib/setup-plan.js +300 -324
- package/lib/setup-undo.d.ts +44 -0
- package/lib/setup-undo.js +61 -74
- package/lib/start-cluster-config.d.ts +26 -0
- package/lib/start-cluster-config.js +56 -0
- package/lib/start-cluster-environment.d.ts +40 -0
- package/lib/start-cluster-environment.js +134 -0
- package/lib/start-cluster-run-options.d.ts +53 -0
- package/lib/start-cluster-run-options.js +147 -0
- package/lib/start-cluster.d.ts +64 -0
- package/lib/start-cluster.js +98 -454
- package/lib/stream-json-parser.d.ts +17 -0
- package/lib/stream-json-parser.js +51 -52
- package/npm-shrinkwrap.json +2 -2
- package/package.json +12 -6
- package/scripts/postinstall.js +27 -0
- package/scripts/rust-distribution.js +23 -14
- package/src/agent/agent-command-proofs-context.js +35 -45
- package/src/agent/agent-command-proofs-context.ts +87 -0
- package/src/agent/agent-config-settings.js +19 -0
- package/src/agent/agent-config-settings.ts +41 -0
- package/src/agent/agent-config.js +122 -231
- package/src/agent/agent-config.ts +285 -0
- package/src/agent/agent-context-builder.js +38 -273
- package/src/agent/agent-context-builder.ts +51 -0
- package/src/agent/agent-context-environment-sections.js +105 -0
- package/src/agent/agent-context-environment-sections.ts +134 -0
- package/src/agent/agent-context-packs.js +165 -0
- package/src/agent/agent-context-packs.ts +296 -0
- package/src/agent/agent-context-prompt-sections.js +100 -0
- package/src/agent/agent-context-prompt-sections.ts +148 -0
- package/src/agent/agent-context-sections.js +25 -334
- package/src/agent/agent-context-sections.ts +36 -0
- package/src/agent/agent-context-sources.js +96 -149
- package/src/agent/agent-context-sources.ts +253 -0
- package/src/agent/agent-context-types.js +2 -0
- package/src/agent/agent-context-types.ts +132 -0
- package/src/agent/agent-context-validation-sections.js +73 -0
- package/src/agent/agent-context-validation-sections.ts +129 -0
- package/src/agent/agent-input-injector.js +99 -118
- package/src/agent/agent-input-injector.ts +195 -0
- package/src/agent/agent-liveness-poll.js +74 -78
- package/src/agent/agent-liveness-poll.ts +163 -0
- package/src/agent/agent-quality-gate-schema.js +77 -86
- package/src/agent/agent-quality-gate-schema.ts +135 -0
- package/src/agent/agent-quality-gates-context.js +44 -50
- package/src/agent/agent-quality-gates-context.ts +91 -0
- package/src/agent/agent-stuck-detector.js +171 -239
- package/src/agent/agent-stuck-detector.ts +288 -0
- package/src/agent/agent-trigger-evaluator.js +29 -46
- package/src/agent/agent-trigger-evaluator.ts +98 -0
- package/src/agent/context-metrics.js +110 -141
- package/src/agent/context-metrics.ts +261 -0
- package/src/agent/context-pack-builder.js +72 -358
- package/src/agent/context-pack-builder.ts +105 -0
- package/src/agent/context-pack-core.js +70 -0
- package/src/agent/context-pack-core.ts +96 -0
- package/src/agent/context-pack-selection.js +119 -0
- package/src/agent/context-pack-selection.ts +187 -0
- package/src/agent/context-pack-truncation.js +139 -0
- package/src/agent/context-pack-truncation.ts +208 -0
- package/src/agent/context-pack-types.js +2 -0
- package/src/agent/context-pack-types.ts +98 -0
- package/src/agent/context-replay-policy.js +30 -39
- package/src/agent/context-replay-policy.ts +71 -0
- package/src/agent/critical-agent-policy.js +6 -10
- package/src/agent/critical-agent-policy.ts +20 -0
- package/src/agent/guidance-queue.js +74 -87
- package/src/agent/guidance-queue.ts +166 -0
- package/src/agent/output-extraction-error-detail.js +45 -0
- package/src/agent/output-extraction-error-detail.ts +49 -0
- package/src/agent/output-extraction-failures.js +125 -0
- package/src/agent/output-extraction-failures.ts +149 -0
- package/src/agent/output-extraction-json.js +234 -0
- package/src/agent/output-extraction-json.ts +235 -0
- package/src/agent/output-extraction-pi.js +124 -0
- package/src/agent/output-extraction-pi.ts +137 -0
- package/src/agent/output-extraction-types.js +2 -0
- package/src/agent/output-extraction-types.ts +49 -0
- package/src/agent/output-extraction.js +17 -617
- package/src/agent/output-extraction.ts +30 -0
- package/src/agent/output-reformatter-errors.js +83 -0
- package/src/agent/output-reformatter-errors.ts +106 -0
- package/src/agent/output-reformatter-types.js +2 -0
- package/src/agent/output-reformatter-types.ts +86 -0
- package/src/agent/output-reformatter.js +140 -185
- package/src/agent/output-reformatter.ts +238 -0
- package/src/agent/pi-terminal-lifecycle-types.js +2 -0
- package/src/agent/pi-terminal-lifecycle-types.ts +41 -0
- package/src/agent/pi-terminal-lifecycle.js +186 -206
- package/src/agent/pi-terminal-lifecycle.ts +297 -0
- package/src/agent/provider-control-plane.js +22 -21
- package/src/agent/provider-control-plane.ts +52 -0
- package/src/agent/provider-terminal-failure-types.js +2 -0
- package/src/agent/provider-terminal-failure-types.ts +60 -0
- package/src/agent/provider-terminal-failure.js +194 -191
- package/src/agent/provider-terminal-failure.ts +262 -0
- package/src/agent/rate-limit-backoff.js +31 -74
- package/src/agent/rate-limit-backoff.ts +71 -0
- package/src/agent/schema-utils.js +85 -125
- package/src/agent/schema-utils.ts +148 -0
- package/src/agent/structured-output-error.js +34 -33
- package/src/agent/structured-output-error.ts +105 -0
- package/src/agent/validation-platform.js +27 -27
- package/src/agent/validation-platform.ts +49 -0
- package/src/agent-cli-provider/adapters/codex.ts +3 -1
- package/src/attach/attach-client.js +232 -405
- package/src/attach/attach-client.ts +300 -0
- package/src/attach/attach-server-cleanup.js +43 -0
- package/src/attach/attach-server-cleanup.ts +39 -0
- package/src/attach/attach-server-clients.js +117 -0
- package/src/attach/attach-server-clients.ts +122 -0
- package/src/attach/attach-server-events.js +38 -0
- package/src/attach/attach-server-events.ts +36 -0
- package/src/attach/attach-server-pty.js +45 -0
- package/src/attach/attach-server-pty.ts +64 -0
- package/src/attach/attach-server-runtime.js +73 -0
- package/src/attach/attach-server-runtime.ts +62 -0
- package/src/attach/attach-server-socket.js +28 -0
- package/src/attach/attach-server-socket.ts +23 -0
- package/src/attach/attach-server-types.js +2 -0
- package/src/attach/attach-server-types.ts +82 -0
- package/src/attach/attach-server.js +106 -523
- package/src/attach/attach-server.ts +158 -0
- package/src/attach/index.js +18 -35
- package/src/attach/index.ts +18 -0
- package/src/attach/protocol.js +95 -184
- package/src/attach/protocol.ts +181 -0
- package/src/attach/ring-buffer.js +76 -102
- package/src/attach/ring-buffer.ts +109 -0
- package/src/attach/send-input.js +64 -75
- package/src/attach/send-input.ts +94 -0
- package/src/attach/socket-discovery.js +164 -218
- package/src/attach/socket-discovery.ts +230 -0
- package/src/attach/socket-paths.js +42 -61
- package/src/attach/socket-paths.ts +81 -0
- package/src/claude-credentials.js +51 -54
- package/src/claude-credentials.ts +89 -0
- package/src/cluster/generated/protocol-schema.ts +1 -1
- package/src/cluster/generated/protocol.ts +2 -1
- package/src/command-proofs.js +110 -141
- package/src/command-proofs.ts +216 -0
- package/src/config-router.js +81 -73
- package/src/config-router.ts +131 -0
- package/src/copy-worker.js +53 -29
- package/src/copy-worker.ts +75 -0
- package/src/darwin-keychain-boundary.js +80 -111
- package/src/darwin-keychain-boundary.ts +148 -0
- package/src/guidance-topics.js +4 -5
- package/src/guidance-topics.ts +10 -0
- package/src/input-helpers.js +33 -54
- package/src/input-helpers.ts +58 -0
- package/src/ledger-sequence.js +45 -48
- package/src/ledger-sequence.ts +63 -0
- package/src/legacy-lib/clusters-registry.ts +40 -0
- package/src/legacy-lib/completion.ts +148 -0
- package/src/legacy-lib/compose-utils.ts +102 -0
- package/src/legacy-lib/detached-startup.ts +449 -0
- package/src/legacy-lib/docker-config.ts +282 -0
- package/src/legacy-lib/docker-env-auth.ts +116 -0
- package/src/legacy-lib/git-remote-utils.ts +244 -0
- package/src/legacy-lib/id-detector.ts +57 -0
- package/src/legacy-lib/js-yaml.d.ts +3 -0
- package/src/legacy-lib/omelette.d.ts +15 -0
- package/src/legacy-lib/path-check.ts +89 -0
- package/src/legacy-lib/process-liveness.ts +36 -0
- package/src/legacy-lib/provider-credential-path.ts +57 -0
- package/src/legacy-lib/provider-defaults.ts +114 -0
- package/src/legacy-lib/provider-detection.ts +67 -0
- package/src/legacy-lib/provider-names.ts +126 -0
- package/src/legacy-lib/repo-settings.ts +88 -0
- package/src/legacy-lib/run-mode.ts +58 -0
- package/src/legacy-lib/run-plan.ts +49 -0
- package/src/legacy-lib/settings/claude-auth.ts +80 -0
- package/src/legacy-lib/settings-defaults.ts +212 -0
- package/src/legacy-lib/settings-error.ts +8 -0
- package/src/legacy-lib/settings-issue-providers.ts +18 -0
- package/src/legacy-lib/settings-models.ts +124 -0
- package/src/legacy-lib/settings-storage.ts +277 -0
- package/src/legacy-lib/settings-validation.ts +220 -0
- package/src/legacy-lib/settings.ts +87 -0
- package/src/legacy-lib/setup-apply-types.ts +70 -0
- package/src/legacy-lib/setup-apply.ts +456 -0
- package/src/legacy-lib/setup-journal.ts +185 -0
- package/src/legacy-lib/setup-plan-types.ts +96 -0
- package/src/legacy-lib/setup-plan.ts +500 -0
- package/src/legacy-lib/setup-undo.ts +142 -0
- package/src/legacy-lib/start-cluster-config.ts +124 -0
- package/src/legacy-lib/start-cluster-environment.ts +165 -0
- package/src/legacy-lib/start-cluster-run-options.ts +279 -0
- package/src/legacy-lib/start-cluster.ts +237 -0
- package/src/legacy-lib/stream-json-parser.ts +88 -0
- package/src/message-buffer.js +55 -71
- package/src/message-buffer.ts +107 -0
- package/src/message-bus-bridge.js +92 -133
- package/src/message-bus-bridge.ts +149 -0
- package/src/name-generator-shared.js +220 -0
- package/src/name-generator-shared.ts +231 -0
- package/src/name-generator.js +8 -217
- package/src/name-generator.ts +27 -0
- package/src/omp-blob-root.js +83 -64
- package/src/omp-blob-root.ts +116 -0
- package/src/omp-config-overlay.js +65 -38
- package/src/omp-config-overlay.ts +110 -0
- package/src/omp-execution-fingerprint.js +38 -43
- package/src/omp-execution-fingerprint.ts +92 -0
- package/src/omp-session-limits.js +10 -15
- package/src/omp-session-limits.ts +53 -0
- package/src/omp-session-partition.js +2 -2
- package/src/omp-session-verifier.js +1 -1
- package/src/orchestrator.js +19 -4
- package/src/providers/anthropic/index.js +3 -1
- package/src/providers/anthropic/index.ts +13 -0
- package/src/providers/capabilities.js +19 -27
- package/src/providers/capabilities.ts +44 -0
- package/src/providers/google/index.js +3 -1
- package/src/providers/google/index.ts +13 -0
- package/src/providers/openai/index.js +3 -1
- package/src/providers/openai/index.ts +13 -0
- package/src/providers/opencode/index.js +3 -1
- package/src/providers/opencode/index.ts +13 -0
- package/src/quality-gates.js +67 -127
- package/src/quality-gates.ts +149 -0
- package/src/repo-settings-access.js +40 -0
- package/src/repo-settings-access.ts +64 -0
- package/src/schemas/sub-cluster.js +127 -183
- package/src/schemas/sub-cluster.ts +238 -0
- package/src/state-snapshot-normalization.js +224 -0
- package/src/state-snapshot-normalization.ts +222 -0
- package/src/state-snapshot.js +192 -359
- package/src/state-snapshot.ts +291 -0
- package/src/state-snapshotter.js +118 -130
- package/src/state-snapshotter.ts +167 -0
- package/src/sub-cluster-wrapper.js +4 -13
- package/src/task-run-model-args.js +87 -124
- package/src/task-run-model-args.ts +204 -0
- package/src/task-runner.js +5 -25
- package/src/task-runner.ts +28 -0
- package/src/task-startup-error.js +73 -58
- package/src/task-startup-error.ts +126 -0
- package/src/template-validation/consensus-gate-contracts.js +2 -0
- package/src/template-validation/consensus-gate-contracts.ts +70 -0
- package/src/template-validation/consensus-gate-scenarios.js +76 -0
- package/src/template-validation/consensus-gate-scenarios.ts +130 -0
- package/src/template-validation/consensus-gate-stage.js +34 -0
- package/src/template-validation/consensus-gate-stage.ts +56 -0
- package/src/template-validation/random-topology-contracts.js +2 -0
- package/src/template-validation/random-topology-contracts.ts +54 -0
- package/src/template-validation/random-topology-dispatch.js +25 -0
- package/src/template-validation/random-topology-dispatch.ts +33 -0
- package/src/template-validation/random-topology-message-loop.js +53 -0
- package/src/template-validation/random-topology-message-loop.ts +73 -0
- package/src/template-validation/random-topology-operations.js +79 -0
- package/src/template-validation/random-topology-operations.ts +101 -0
- package/src/template-validation/random-topology-runtime.js +25 -0
- package/src/template-validation/random-topology-runtime.ts +43 -0
- package/src/template-validation/random-topology-scenario.js +52 -0
- package/src/template-validation/random-topology-scenario.ts +57 -0
- package/src/template-validation/random-topology-schema.js +159 -0
- package/src/template-validation/random-topology-schema.ts +190 -0
- package/src/template-validation/random-topology-state.js +28 -0
- package/src/template-validation/random-topology-state.ts +30 -0
- package/src/template-validation/random-topology-trigger-evaluation.js +45 -0
- package/src/template-validation/random-topology-trigger-evaluation.ts +65 -0
- package/src/template-validation/random-topology-trigger.js +75 -0
- package/src/template-validation/random-topology-trigger.ts +88 -0
- package/src/template-validation/report-formatter.js +40 -46
- package/src/template-validation/report-formatter.ts +101 -0
- package/src/template-validation/simulate-consensus-gates.js +111 -302
- package/src/template-validation/simulate-consensus-gates.ts +196 -0
- package/src/template-validation/simulate-random-topology.js +26 -519
- package/src/template-validation/simulate-random-topology.ts +57 -0
- package/src/template-validation/simulate-two-stage-validation.js +41 -265
- package/src/template-validation/simulate-two-stage-validation.ts +55 -0
- package/src/template-validation/simulation-agent-runtime.js +25 -0
- package/src/template-validation/simulation-agent-runtime.ts +40 -0
- package/src/template-validation/simulation-agent.js +29 -0
- package/src/template-validation/simulation-agent.ts +73 -0
- package/src/template-validation/simulation-runtime.js +34 -0
- package/src/template-validation/simulation-runtime.ts +72 -0
- package/src/template-validation/two-stage-contracts.js +2 -0
- package/src/template-validation/two-stage-contracts.ts +41 -0
- package/src/template-validation/two-stage-inputs.js +21 -0
- package/src/template-validation/two-stage-inputs.ts +29 -0
- package/src/template-validation/two-stage-results.js +30 -0
- package/src/template-validation/two-stage-results.ts +40 -0
- package/src/template-validation/two-stage-scenario.js +86 -0
- package/src/template-validation/two-stage-scenario.ts +120 -0
- package/src/worktree-claude-config.js +182 -220
- package/src/worktree-claude-config.ts +272 -0
- package/src/worktree-tooling-env.js +103 -125
- package/src/worktree-tooling-env.ts +142 -0
- package/task-lib/completion.js +2 -3
- package/task-lib/completion.ts +9 -0
- package/task-lib/config.js +1 -4
- package/task-lib/config.ts +11 -0
- package/task-lib/name-generator.js +4 -226
- package/task-lib/name-generator.ts +11 -0
- package/task-lib/omp-session-cleanup.js +1 -1
- package/task-lib/omp-storage-root.js +8 -12
- package/task-lib/omp-storage-root.ts +62 -0
- package/task-lib/process-termination.js +143 -166
- package/task-lib/process-termination.ts +268 -0
package/lib/process-liveness.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Single source of truth for "is this PID actually alive?"
|
|
3
4
|
*
|
|
@@ -9,18 +10,24 @@
|
|
|
9
10
|
* simultaneously reported as "zombie" by status and "still running" by
|
|
10
11
|
* resume. Consolidating avoids a sixth call site reintroducing that split.
|
|
11
12
|
*/
|
|
13
|
+
function hasErrorCode(error, code) {
|
|
14
|
+
return (typeof error === 'object' &&
|
|
15
|
+
error !== null &&
|
|
16
|
+
'code' in error &&
|
|
17
|
+
error.code === code);
|
|
18
|
+
}
|
|
12
19
|
function isProcessRunning(pid) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
if (!pid || typeof pid !== 'number' || !Number.isInteger(pid) || pid <= 0) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
// Signal 0 doesn't kill, just checks if the process exists.
|
|
25
|
+
process.kill(pid, 0);
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
// ESRCH = no such process, EPERM = process exists but we lack permission.
|
|
30
|
+
return hasErrorCode(error, 'EPERM');
|
|
31
|
+
}
|
|
24
32
|
}
|
|
25
|
-
|
|
26
33
|
module.exports = { isProcessRunning };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
type Environment = Readonly<Record<string, string | undefined>>;
|
|
2
|
+
interface ProviderCredentialMetadata {
|
|
3
|
+
readonly credentialPaths: readonly string[];
|
|
4
|
+
readonly docker?: {
|
|
5
|
+
readonly mount?: {
|
|
6
|
+
readonly hostEnv?: unknown;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
declare function expandProviderCredentialPath(value: string, env?: Environment): string | null;
|
|
11
|
+
declare function resolveProviderCredentialPaths(metadata: ProviderCredentialMetadata, env?: Environment): string[];
|
|
12
|
+
declare const _default: {
|
|
13
|
+
expandProviderCredentialPath: typeof expandProviderCredentialPath;
|
|
14
|
+
resolveProviderCredentialPaths: typeof resolveProviderCredentialPaths;
|
|
15
|
+
};
|
|
16
|
+
export = _default;
|
|
@@ -1,36 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
const
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
const os = require("node:os");
|
|
3
|
+
const path = require("node:path");
|
|
4
4
|
function expandHome(value) {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
if (value === '~')
|
|
6
|
+
return os.homedir();
|
|
7
|
+
return value.startsWith('~/') ? path.join(os.homedir(), value.slice(2)) : value;
|
|
7
8
|
}
|
|
8
|
-
|
|
9
9
|
function expandProviderCredentialPath(value, env = process.env) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
const homeExpanded = expandHome(value);
|
|
11
|
+
if (homeExpanded !== value)
|
|
12
|
+
return homeExpanded;
|
|
13
|
+
const variable = /^\$([A-Z_][A-Z0-9_]*)(\/.*)?$/.exec(value);
|
|
14
|
+
if (!variable)
|
|
15
|
+
return value;
|
|
16
|
+
const variableName = variable[1];
|
|
17
|
+
if (!variableName)
|
|
18
|
+
return value;
|
|
19
|
+
const root = env[variableName];
|
|
20
|
+
return typeof root === 'string' && root.trim()
|
|
21
|
+
? path.resolve(expandHome(root), `.${variable[2] || ''}`)
|
|
22
|
+
: null;
|
|
18
23
|
}
|
|
19
|
-
|
|
20
24
|
function resolveProviderCredentialPaths(metadata, env = process.env) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
.filter((value) => value !== null);
|
|
25
|
+
const overrideName = metadata.docker?.mount?.hostEnv;
|
|
26
|
+
const overrideSet = typeof overrideName === 'string' &&
|
|
27
|
+
typeof env[overrideName] === 'string' &&
|
|
28
|
+
env[overrideName].trim();
|
|
29
|
+
const candidates = overrideName
|
|
30
|
+
? metadata.credentialPaths.filter((value) => overrideSet
|
|
31
|
+
? value.startsWith(`$${overrideName}/`)
|
|
32
|
+
: !value.startsWith(`$${overrideName}/`))
|
|
33
|
+
: metadata.credentialPaths;
|
|
34
|
+
return candidates
|
|
35
|
+
.map((value) => expandProviderCredentialPath(value, env))
|
|
36
|
+
.filter((value) => value !== null);
|
|
34
37
|
}
|
|
35
|
-
|
|
36
38
|
module.exports = { expandProviderCredentialPath, resolveProviderCredentialPaths };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider defaults module
|
|
3
|
+
*
|
|
4
|
+
* Separated from settings.js to break circular dependency:
|
|
5
|
+
* - settings.js requires provider defaults
|
|
6
|
+
* - providers require settings.js (for loadSettings, getClaudeCommand, etc.)
|
|
7
|
+
*
|
|
8
|
+
* CRITICAL: This module should NOT import from settings.js
|
|
9
|
+
*/
|
|
10
|
+
interface ProviderDefaultSettings {
|
|
11
|
+
defaultLevel?: string;
|
|
12
|
+
levelOverrides?: Record<string, string>;
|
|
13
|
+
maxLevel?: string;
|
|
14
|
+
minLevel?: string;
|
|
15
|
+
[key: string]: unknown;
|
|
16
|
+
}
|
|
17
|
+
type ProviderDefaults = Record<string, ProviderDefaultSettings>;
|
|
18
|
+
/**
|
|
19
|
+
* Get or build cached provider defaults
|
|
20
|
+
*/
|
|
21
|
+
declare function getProviderDefaults(): ProviderDefaults;
|
|
22
|
+
/**
|
|
23
|
+
* Clear the provider defaults cache (primarily for testing)
|
|
24
|
+
*/
|
|
25
|
+
declare function clearProviderDefaultsCache(): void;
|
|
26
|
+
declare const _default: {
|
|
27
|
+
getProviderDefaults: typeof getProviderDefaults;
|
|
28
|
+
clearProviderDefaultsCache: typeof clearProviderDefaultsCache;
|
|
29
|
+
};
|
|
30
|
+
export = _default;
|
package/lib/provider-defaults.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Provider defaults module
|
|
3
4
|
*
|
|
@@ -7,67 +8,71 @@
|
|
|
7
8
|
*
|
|
8
9
|
* CRITICAL: This module should NOT import from settings.js
|
|
9
10
|
*/
|
|
10
|
-
|
|
11
11
|
// Cache provider defaults to avoid repeated instantiation
|
|
12
12
|
let _providerDefaultsCache = null;
|
|
13
|
+
// The emitted CommonJS module resolves this maintained JavaScript facade from lib/.
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
13
15
|
const { VALID_PROVIDERS, getProviderMetadata } = require('./provider-names');
|
|
14
|
-
|
|
16
|
+
function errorMessage(error) {
|
|
17
|
+
if (typeof error !== 'object' || error === null || !('message' in error)) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
return typeof error.message === 'string' ? error.message : String(error.message);
|
|
21
|
+
}
|
|
15
22
|
/**
|
|
16
23
|
* Build provider default settings by instantiating each provider
|
|
17
24
|
* and calling getDefaultSettings()
|
|
18
|
-
* @returns {Object} Map of provider name to default settings
|
|
19
25
|
*/
|
|
20
26
|
function buildProviderDefaults() {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
27
|
+
// Keep this require lazy to preserve the settings/provider circular-dependency boundary.
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
29
|
+
const { listProviders, getProvider } = require('../src/providers');
|
|
30
|
+
const defaults = {};
|
|
31
|
+
for (const providerName of listProviders()) {
|
|
32
|
+
try {
|
|
33
|
+
const provider = getProvider(providerName);
|
|
34
|
+
defaults[providerName] = provider.getDefaultSettings();
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
const metadata = getProviderMetadata(providerName);
|
|
38
|
+
console.warn(`Warning: Could not get defaults for ${providerName}: ${errorMessage(error)}`);
|
|
39
|
+
defaults[providerName] = {
|
|
40
|
+
maxLevel: metadata.defaultLevels.max,
|
|
41
|
+
minLevel: metadata.defaultLevels.min,
|
|
42
|
+
defaultLevel: metadata.defaultLevels.default,
|
|
43
|
+
levelOverrides: {},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
37
46
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
for (const providerName of VALID_PROVIDERS) {
|
|
48
|
+
if (defaults[providerName])
|
|
49
|
+
continue;
|
|
50
|
+
const metadata = getProviderMetadata(providerName);
|
|
51
|
+
defaults[providerName] = {
|
|
52
|
+
maxLevel: metadata.defaultLevels.max,
|
|
53
|
+
minLevel: metadata.defaultLevels.min,
|
|
54
|
+
defaultLevel: metadata.defaultLevels.default,
|
|
55
|
+
levelOverrides: {},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
return defaults;
|
|
50
59
|
}
|
|
51
|
-
|
|
52
60
|
/**
|
|
53
61
|
* Get or build cached provider defaults
|
|
54
|
-
* @returns {Object} Provider defaults
|
|
55
62
|
*/
|
|
56
63
|
function getProviderDefaults() {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
64
|
+
if (!_providerDefaultsCache) {
|
|
65
|
+
_providerDefaultsCache = buildProviderDefaults();
|
|
66
|
+
}
|
|
67
|
+
return _providerDefaultsCache;
|
|
61
68
|
}
|
|
62
|
-
|
|
63
69
|
/**
|
|
64
70
|
* Clear the provider defaults cache (primarily for testing)
|
|
65
71
|
*/
|
|
66
72
|
function clearProviderDefaultsCache() {
|
|
67
|
-
|
|
73
|
+
_providerDefaultsCache = null;
|
|
68
74
|
}
|
|
69
|
-
|
|
70
75
|
module.exports = {
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
getProviderDefaults,
|
|
77
|
+
clearProviderDefaultsCache,
|
|
73
78
|
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare function commandExists(command: string): boolean;
|
|
2
|
+
declare function getCommandPath(command: string): string | null;
|
|
3
|
+
declare function getHelpOutput(command: string, args?: string[]): string;
|
|
4
|
+
declare function getVersionOutput(command: string, args?: string[]): string;
|
|
5
|
+
declare const _default: {
|
|
6
|
+
commandExists: typeof commandExists;
|
|
7
|
+
getCommandPath: typeof getCommandPath;
|
|
8
|
+
getHelpOutput: typeof getHelpOutput;
|
|
9
|
+
getVersionOutput: typeof getVersionOutput;
|
|
10
|
+
};
|
|
11
|
+
export = _default;
|
|
@@ -1,64 +1,101 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
const childProcess = __importStar(require("child_process"));
|
|
36
|
+
const fs = __importStar(require("fs"));
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const { execSync, spawnSync } = childProcess;
|
|
5
39
|
function commandExists(command) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
40
|
+
if (!command)
|
|
41
|
+
return false;
|
|
42
|
+
if (command.includes(path.sep)) {
|
|
43
|
+
return fs.existsSync(command);
|
|
44
|
+
}
|
|
45
|
+
const probe = process.platform === 'win32' ? `where ${command}` : `command -v ${command}`;
|
|
46
|
+
try {
|
|
47
|
+
execSync(probe, { stdio: 'pipe' });
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
17
53
|
}
|
|
18
|
-
|
|
19
54
|
function getCommandPath(command) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
55
|
+
if (!command)
|
|
56
|
+
return null;
|
|
57
|
+
if (command.includes(path.sep)) {
|
|
58
|
+
return fs.existsSync(command) ? command : null;
|
|
59
|
+
}
|
|
60
|
+
const probe = process.platform === 'win32' ? `where ${command}` : `command -v ${command}`;
|
|
61
|
+
try {
|
|
62
|
+
const output = execSync(probe, { encoding: 'utf8', stdio: 'pipe' });
|
|
63
|
+
// `where` can return multiple matches (one per line); take the first.
|
|
64
|
+
const [firstMatch = ''] = output.split(/\r?\n/);
|
|
65
|
+
return firstMatch.trim() || null;
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
32
70
|
}
|
|
33
|
-
|
|
34
71
|
function getHelpOutput(command, args = []) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
72
|
+
if (!commandExists(command))
|
|
73
|
+
return '';
|
|
74
|
+
const attempt = (flag) => {
|
|
75
|
+
const result = spawnSync(command, [...args, flag], { encoding: 'utf8' });
|
|
76
|
+
if (result.status !== 0)
|
|
77
|
+
return '';
|
|
78
|
+
const output = `${result.stdout || ''}${result.stderr || ''}`;
|
|
79
|
+
return output.trim();
|
|
80
|
+
};
|
|
81
|
+
const help = attempt('--help');
|
|
82
|
+
if (help)
|
|
83
|
+
return help;
|
|
84
|
+
const alt = attempt('-h');
|
|
85
|
+
return alt || '';
|
|
49
86
|
}
|
|
50
|
-
|
|
51
87
|
function getVersionOutput(command, args = []) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
88
|
+
if (!commandExists(command))
|
|
89
|
+
return '';
|
|
90
|
+
const result = spawnSync(command, [...args, '--version'], { encoding: 'utf8' });
|
|
91
|
+
if (result.status !== 0)
|
|
92
|
+
return '';
|
|
93
|
+
const output = `${result.stdout || ''}${result.stderr || ''}`;
|
|
94
|
+
return output.trim();
|
|
57
95
|
}
|
|
58
|
-
|
|
59
96
|
module.exports = {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
97
|
+
commandExists,
|
|
98
|
+
getCommandPath,
|
|
99
|
+
getHelpOutput,
|
|
100
|
+
getVersionOutput,
|
|
64
101
|
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
type ProviderCapabilityState = boolean | 'experimental';
|
|
2
|
+
type ProviderCapabilities = Readonly<Record<string, ProviderCapabilityState>>;
|
|
3
|
+
interface ProviderRegistryEntry {
|
|
4
|
+
readonly capabilities: ProviderCapabilities;
|
|
5
|
+
readonly docker: {
|
|
6
|
+
readonly envPassthrough: readonly string[];
|
|
7
|
+
};
|
|
8
|
+
readonly id: string;
|
|
9
|
+
readonly [key: string]: unknown;
|
|
10
|
+
}
|
|
11
|
+
declare function normalizeProviderName<T>(name: T): T | string;
|
|
12
|
+
declare function normalizeProviderSettings<T>(providerSettings: T): T | Record<string, unknown>;
|
|
13
|
+
declare function getProviderMetadata(name: string): ProviderRegistryEntry;
|
|
14
|
+
declare function listProviderMetadata(): readonly ProviderRegistryEntry[];
|
|
15
|
+
declare function resolveProviderCommand(name: string): {
|
|
16
|
+
readonly args: readonly string[];
|
|
17
|
+
readonly command: string;
|
|
18
|
+
};
|
|
19
|
+
declare function providerSupportsCapability(name: string, capability: string): boolean;
|
|
20
|
+
declare function providerSupportsOutputReformatting(name: string): boolean;
|
|
21
|
+
declare function getDefaultProviderId(): string;
|
|
22
|
+
declare const _default: {
|
|
23
|
+
KNOWN_PROVIDER_NAMES: string[];
|
|
24
|
+
PROVIDER_ALIASES: Readonly<{
|
|
25
|
+
[x: string]: string;
|
|
26
|
+
}>;
|
|
27
|
+
PROVIDER_CAPABILITIES: Readonly<Record<string, Readonly<Record<string, ProviderCapabilityState>>>>;
|
|
28
|
+
VALID_PROVIDERS: string[];
|
|
29
|
+
getDefaultProviderId: typeof getDefaultProviderId;
|
|
30
|
+
getProviderMetadata: typeof getProviderMetadata;
|
|
31
|
+
listProviderMetadata: typeof listProviderMetadata;
|
|
32
|
+
normalizeProviderName: typeof normalizeProviderName;
|
|
33
|
+
normalizeProviderSettings: typeof normalizeProviderSettings;
|
|
34
|
+
providerSupportsCapability: typeof providerSupportsCapability;
|
|
35
|
+
providerSupportsOutputReformatting: typeof providerSupportsOutputReformatting;
|
|
36
|
+
resolveProviderCommand: typeof resolveProviderCommand;
|
|
37
|
+
};
|
|
38
|
+
export = _default;
|
package/lib/provider-names.js
CHANGED
|
@@ -1,87 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// The emitted CommonJS facade resolves the built registry beside this module.
|
|
3
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
1
4
|
const registry = require('./agent-cli-provider/provider-registry');
|
|
2
|
-
|
|
3
5
|
const VALID_PROVIDERS = [...registry.providerIds];
|
|
4
6
|
const KNOWN_PROVIDER_NAMES = [...registry.knownProviderNames];
|
|
5
7
|
const PROVIDER_ALIASES = Object.freeze({ ...registry.providerAliasMap });
|
|
6
|
-
const PROVIDER_CAPABILITIES = Object.freeze(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
)
|
|
10
|
-
);
|
|
11
|
-
|
|
8
|
+
const PROVIDER_CAPABILITIES = Object.freeze(Object.fromEntries(registry.listProviderRegistryEntries().map((entry) => [entry.id, entry.capabilities])));
|
|
9
|
+
// Non-string legacy inputs intentionally pass through unchanged.
|
|
10
|
+
// eslint-disable-next-line sonarjs/function-return-type
|
|
12
11
|
function normalizeProviderName(name) {
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
if (!name || typeof name !== 'string')
|
|
13
|
+
return name;
|
|
14
|
+
return registry.normalizeProviderName(name);
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
// Non-record legacy settings intentionally pass through unchanged.
|
|
17
|
+
// eslint-disable-next-line sonarjs/function-return-type
|
|
17
18
|
function normalizeProviderSettings(providerSettings) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
) {
|
|
23
|
-
return providerSettings;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const normalized = {};
|
|
27
|
-
const entries = Object.entries(providerSettings);
|
|
28
|
-
const aliasFirst = entries.sort(([left], [right]) => {
|
|
29
|
-
const leftIsCanonical = normalizeProviderName(left) === left;
|
|
30
|
-
const rightIsCanonical = normalizeProviderName(right) === right;
|
|
31
|
-
if (leftIsCanonical === rightIsCanonical) return 0;
|
|
32
|
-
return leftIsCanonical ? 1 : -1;
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
for (const [key, value] of aliasFirst) {
|
|
36
|
-
const canonical = normalizeProviderName(key);
|
|
37
|
-
if (!VALID_PROVIDERS.includes(canonical)) {
|
|
38
|
-
normalized[key] = value;
|
|
39
|
-
continue;
|
|
19
|
+
if (!providerSettings ||
|
|
20
|
+
typeof providerSettings !== 'object' ||
|
|
21
|
+
Array.isArray(providerSettings)) {
|
|
22
|
+
return providerSettings;
|
|
40
23
|
}
|
|
41
|
-
normalized
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
24
|
+
const normalized = {};
|
|
25
|
+
const entries = Object.entries(providerSettings);
|
|
26
|
+
entries.sort(([left], [right]) => {
|
|
27
|
+
const leftIsCanonical = normalizeProviderName(left) === left;
|
|
28
|
+
const rightIsCanonical = normalizeProviderName(right) === right;
|
|
29
|
+
if (leftIsCanonical === rightIsCanonical)
|
|
30
|
+
return 0;
|
|
31
|
+
return leftIsCanonical ? 1 : -1;
|
|
32
|
+
});
|
|
33
|
+
const aliasFirst = entries;
|
|
34
|
+
for (const [key, value] of aliasFirst) {
|
|
35
|
+
const canonical = normalizeProviderName(key);
|
|
36
|
+
if (!VALID_PROVIDERS.includes(canonical)) {
|
|
37
|
+
normalized[key] = value;
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
// Preserve JavaScript object-spread coercion for malformed legacy values.
|
|
41
|
+
normalized[canonical] = {
|
|
42
|
+
...Object(normalized[canonical] || {}),
|
|
43
|
+
...Object(value || {}),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return normalized;
|
|
48
47
|
}
|
|
49
|
-
|
|
50
48
|
function getProviderMetadata(name) {
|
|
51
|
-
|
|
49
|
+
return registry.getProviderRegistryEntry(name);
|
|
52
50
|
}
|
|
53
|
-
|
|
54
51
|
function listProviderMetadata() {
|
|
55
|
-
|
|
52
|
+
return registry.listProviderRegistryEntries();
|
|
56
53
|
}
|
|
57
|
-
|
|
58
54
|
function resolveProviderCommand(name) {
|
|
59
|
-
|
|
55
|
+
return registry.resolveProviderCommand(name);
|
|
60
56
|
}
|
|
61
|
-
|
|
62
57
|
function providerSupportsCapability(name, capability) {
|
|
63
|
-
|
|
58
|
+
return registry.supportsProviderCapability(name, capability);
|
|
64
59
|
}
|
|
65
|
-
|
|
66
60
|
function providerSupportsOutputReformatting(name) {
|
|
67
|
-
|
|
61
|
+
return registry.supportsProviderOutputReformatting(name);
|
|
68
62
|
}
|
|
69
|
-
|
|
70
63
|
function getDefaultProviderId() {
|
|
71
|
-
|
|
64
|
+
return registry.getDefaultProviderId();
|
|
72
65
|
}
|
|
73
|
-
|
|
74
66
|
module.exports = {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
67
|
+
KNOWN_PROVIDER_NAMES,
|
|
68
|
+
PROVIDER_ALIASES,
|
|
69
|
+
PROVIDER_CAPABILITIES,
|
|
70
|
+
VALID_PROVIDERS,
|
|
71
|
+
getDefaultProviderId,
|
|
72
|
+
getProviderMetadata,
|
|
73
|
+
listProviderMetadata,
|
|
74
|
+
normalizeProviderName,
|
|
75
|
+
normalizeProviderSettings,
|
|
76
|
+
providerSupportsCapability,
|
|
77
|
+
providerSupportsOutputReformatting,
|
|
78
|
+
resolveProviderCommand,
|
|
87
79
|
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repo-local settings for zeroshot
|
|
3
|
+
*
|
|
4
|
+
* Optional per-repository config file:
|
|
5
|
+
* <repoRoot>/.zeroshot/settings.json
|
|
6
|
+
*
|
|
7
|
+
* This complements the global user settings at:
|
|
8
|
+
* ~/.zeroshot/settings.json
|
|
9
|
+
*/
|
|
10
|
+
type RepoSettings = object;
|
|
11
|
+
interface RepoSettingsResult {
|
|
12
|
+
repoRoot: string | null;
|
|
13
|
+
settings: RepoSettings | null;
|
|
14
|
+
settingsPath: string | null;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Read repo-local settings if present.
|
|
18
|
+
*/
|
|
19
|
+
declare function readRepoSettings(startDir: string): RepoSettingsResult;
|
|
20
|
+
/**
|
|
21
|
+
* Write repo-local settings.
|
|
22
|
+
*/
|
|
23
|
+
declare function writeRepoSettings(repoRoot: string, settings: object): string;
|
|
24
|
+
declare const _default: {
|
|
25
|
+
readRepoSettings: typeof readRepoSettings;
|
|
26
|
+
writeRepoSettings: typeof writeRepoSettings;
|
|
27
|
+
};
|
|
28
|
+
export = _default;
|