@ponythewhite/base-context 1.0.0 → 1.0.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 +33 -0
- package/NOTICE +0 -5
- package/README.md +44 -27
- package/dist/NOTICE +0 -5
- package/dist/base-context-runtime/pyproject.toml +1 -1
- package/dist/base-context-runtime/src/rlm/__init__.py +7 -5
- package/dist/base-context-runtime/test/test_subagent_registry.py +28 -1
- package/dist/base-context-runtime/uv.lock +1 -1
- package/dist/build-info.json +1 -1
- package/dist/bundle/amazon-bedrock.js +21 -0
- package/dist/bundle/{anthropic-YY4S534V.js → anthropic-UV5GZDGU.js} +5 -5
- package/dist/bundle/{azure-openai-responses-JRP6MIM3.js → azure-openai-responses-WSNPXLYC.js} +6 -6
- package/dist/bundle/{bundled-modules-P5HARVZA.js → bundled-modules-TXUMJ2XQ.js} +71 -16
- package/dist/bundle/chunk-27QCJ2AZ.js +2578 -0
- package/dist/bundle/{chunk-MZHTNNVA.js → chunk-4GXPNXOJ.js} +8 -0
- package/dist/bundle/{chunk-SC5KG5R4.js → chunk-DGNX7HQ3.js} +1 -7
- package/dist/bundle/{chunk-A53O363M.js → chunk-GRJFXLBM.js} +0 -1
- package/dist/bundle/chunk-HKINIBP4.js +29 -0
- package/dist/bundle/{chunk-UDSW6FNG.js → chunk-KTNETTHI.js} +1 -1
- package/dist/bundle/{chunk-BYVP7LWV.js → chunk-S3INFPZZ.js} +1861 -4662
- package/dist/bundle/{chunk-73DCPU3D.js → chunk-V3L54UD6.js} +1019 -3427
- package/dist/bundle/{chunk-U7AUVG3B.js → chunk-VSIYFWYI.js} +24 -6
- package/dist/bundle/{chunk-IW77OXFS.js → chunk-W46VZFI6.js} +0 -2099
- package/dist/bundle/{cli-main-O4X7GFGY.js → cli-main-BYMSRPH6.js} +8 -6
- package/dist/bundle/cli.js +2 -2
- package/dist/bundle/{google-AUTVGDGZ.js → google-T32FMD4G.js} +6 -6
- package/dist/bundle/{google-vertex-Q75D7RKS.js → google-vertex-56KP6I3B.js} +3 -3
- package/dist/bundle/{main-XKOW2BV6.js → main-ODOYCEQC.js} +7 -5
- package/dist/bundle/{mistral-7ESB7QUD.js → mistral-WGBMYIVU.js} +5 -5
- package/dist/bundle/{openai-codex-responses-LV3QRPN4.js → openai-codex-responses-PIV2RQ3G.js} +6 -6
- package/dist/bundle/{openai-completions-OJECLPXJ.js → openai-completions-64C3JPR4.js} +11 -22
- package/dist/bundle/{openai-responses-FN6HZMBC.js → openai-responses-UI7RSTDV.js} +6 -6
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +108 -59
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/daemon-ps.d.ts +4 -3
- package/dist/cli/daemon-ps.d.ts.map +1 -1
- package/dist/cli/daemon-ps.js +6 -1
- package/dist/cli/daemon-ps.js.map +1 -1
- package/dist/cli/product-doctor.d.ts +0 -1
- package/dist/cli/product-doctor.d.ts.map +1 -1
- package/dist/cli/product-doctor.js +6 -3
- package/dist/cli/product-doctor.js.map +1 -1
- package/dist/config.d.ts +0 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +0 -8
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-config.d.ts +1 -2
- package/dist/core/agent-session-config.d.ts.map +1 -1
- package/dist/core/agent-session-config.js +0 -3
- package/dist/core/agent-session-config.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +5 -4
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +5 -3
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +2 -27
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +10 -6
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +107 -107
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts +8 -35
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +33 -243
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/cron-jobs.d.ts.map +1 -1
- package/dist/core/cron-jobs.js +7 -1
- package/dist/core/cron-jobs.js.map +1 -1
- package/dist/core/inference-coordinator.d.ts +6 -1
- package/dist/core/inference-coordinator.d.ts.map +1 -1
- package/dist/core/inference-coordinator.js +18 -2
- package/dist/core/inference-coordinator.js.map +1 -1
- package/dist/core/kernel/bootstrap.d.ts.map +1 -1
- package/dist/core/kernel/bootstrap.js +2 -2
- package/dist/core/kernel/bootstrap.js.map +1 -1
- package/dist/core/kernel/repl-manager.d.ts +2 -0
- package/dist/core/kernel/repl-manager.d.ts.map +1 -1
- package/dist/core/kernel/repl-manager.js +44 -1
- package/dist/core/kernel/repl-manager.js.map +1 -1
- package/dist/core/logging.d.ts +4 -3
- package/dist/core/logging.d.ts.map +1 -1
- package/dist/core/logging.js +6 -6
- package/dist/core/logging.js.map +1 -1
- package/dist/core/mcp/mcp-manager.d.ts.map +1 -1
- package/dist/core/mcp/mcp-manager.js +3 -3
- package/dist/core/mcp/mcp-manager.js.map +1 -1
- package/dist/core/model-registry.d.ts +1 -16
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +88 -196
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +2 -19
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +36 -266
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/provider-contracts.d.ts +5 -6
- package/dist/core/provider-contracts.d.ts.map +1 -1
- package/dist/core/provider-contracts.js +25 -36
- package/dist/core/provider-contracts.js.map +1 -1
- package/dist/core/provider-display-names.d.ts.map +1 -1
- package/dist/core/provider-display-names.js +0 -2
- package/dist/core/provider-display-names.js.map +1 -1
- package/dist/core/rlm-max-subagents.d.ts +32 -0
- package/dist/core/rlm-max-subagents.d.ts.map +1 -0
- package/dist/core/rlm-max-subagents.js +50 -0
- package/dist/core/rlm-max-subagents.js.map +1 -0
- package/dist/core/rlm-runtime.d.ts +3 -3
- package/dist/core/rlm-runtime.d.ts.map +1 -1
- package/dist/core/rlm-runtime.js.map +1 -1
- package/dist/core/sdk.d.ts +4 -3
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +27 -14
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/settings-manager.d.ts +3 -16
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +12 -44
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +6 -6
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/installer.mjs +2 -3
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +39 -34
- package/dist/main.js.map +1 -1
- package/dist/modes/acp/acp-mode.d.ts.map +1 -1
- package/dist/modes/acp/acp-mode.js +1 -1
- package/dist/modes/acp/acp-mode.js.map +1 -1
- package/dist/modes/agent-connection/daemon-agent-connection.d.ts +6 -2
- package/dist/modes/agent-connection/daemon-agent-connection.d.ts.map +1 -1
- package/dist/modes/agent-connection/daemon-agent-connection.js +13 -2
- package/dist/modes/agent-connection/daemon-agent-connection.js.map +1 -1
- package/dist/modes/agent-connection/in-process-agent-connection.d.ts +2 -0
- package/dist/modes/agent-connection/in-process-agent-connection.d.ts.map +1 -1
- package/dist/modes/agent-connection/in-process-agent-connection.js +6 -0
- package/dist/modes/agent-connection/in-process-agent-connection.js.map +1 -1
- package/dist/modes/agent-connection/types.d.ts +3 -0
- package/dist/modes/agent-connection/types.d.ts.map +1 -1
- package/dist/modes/agent-connection/types.js.map +1 -1
- package/dist/modes/agents-view/agents-view-mode.d.ts.map +1 -1
- package/dist/modes/agents-view/agents-view-mode.js +2 -19
- package/dist/modes/agents-view/agents-view-mode.js.map +1 -1
- package/dist/modes/daemon/daemon-mode.d.ts +5 -0
- package/dist/modes/daemon/daemon-mode.d.ts.map +1 -1
- package/dist/modes/daemon/daemon-mode.js +107 -12
- package/dist/modes/daemon/daemon-mode.js.map +1 -1
- package/dist/modes/daemon/daemon-protocol.d.ts +194 -165
- package/dist/modes/daemon/daemon-protocol.d.ts.map +1 -1
- package/dist/modes/daemon/daemon-protocol.js +16 -11
- package/dist/modes/daemon/daemon-protocol.js.map +1 -1
- package/dist/modes/daemon/daemon-rlm-capacity-coordinator.d.ts +19 -0
- package/dist/modes/daemon/daemon-rlm-capacity-coordinator.d.ts.map +1 -0
- package/dist/modes/daemon/daemon-rlm-capacity-coordinator.js +74 -0
- package/dist/modes/daemon/daemon-rlm-capacity-coordinator.js.map +1 -0
- package/dist/modes/daemon/daemon-rlm-capacity.d.ts +19 -0
- package/dist/modes/daemon/daemon-rlm-capacity.d.ts.map +1 -0
- package/dist/modes/daemon/daemon-rlm-capacity.js +85 -0
- package/dist/modes/daemon/daemon-rlm-capacity.js.map +1 -0
- package/dist/modes/daemon/daemon-session-summarizer.d.ts +2 -3
- package/dist/modes/daemon/daemon-session-summarizer.d.ts.map +1 -1
- package/dist/modes/daemon/daemon-session-summarizer.js +32 -23
- package/dist/modes/daemon/daemon-session-summarizer.js.map +1 -1
- package/dist/modes/daemon/daemon-state-root.d.ts +15 -0
- package/dist/modes/daemon/daemon-state-root.d.ts.map +1 -0
- package/dist/modes/daemon/daemon-state-root.js +40 -0
- package/dist/modes/daemon/daemon-state-root.js.map +1 -0
- package/dist/modes/daemon/daemon-supervisor-ownership.d.ts +2 -0
- package/dist/modes/daemon/daemon-supervisor-ownership.d.ts.map +1 -1
- package/dist/modes/daemon/daemon-supervisor-ownership.js +27 -0
- package/dist/modes/daemon/daemon-supervisor-ownership.js.map +1 -1
- package/dist/modes/daemon/daemon-supervisor.d.ts +10 -1
- package/dist/modes/daemon/daemon-supervisor.d.ts.map +1 -1
- package/dist/modes/daemon/daemon-supervisor.js +213 -20
- package/dist/modes/daemon/daemon-supervisor.js.map +1 -1
- package/dist/modes/daemon/daemon-worker-protocol.d.ts +28 -1
- package/dist/modes/daemon/daemon-worker-protocol.d.ts.map +1 -1
- package/dist/modes/daemon/daemon-worker-protocol.js +16 -2
- package/dist/modes/daemon/daemon-worker-protocol.js.map +1 -1
- package/dist/modes/daemon/saved-session-catalog.d.ts.map +1 -1
- package/dist/modes/daemon/saved-session-catalog.js +2 -0
- package/dist/modes/daemon/saved-session-catalog.js.map +1 -1
- package/dist/modes/interactive/auth-flows.d.ts +0 -6
- package/dist/modes/interactive/auth-flows.d.ts.map +1 -1
- package/dist/modes/interactive/auth-flows.js +6 -126
- package/dist/modes/interactive/auth-flows.js.map +1 -1
- package/dist/modes/interactive/components/configuration-menu.d.ts +3 -0
- package/dist/modes/interactive/components/configuration-menu.d.ts.map +1 -1
- package/dist/modes/interactive/components/configuration-menu.js +13 -2
- package/dist/modes/interactive/components/configuration-menu.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +2 -2
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +0 -1
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +0 -1
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +0 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +3 -40
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +2 -0
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +13 -2
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +2 -11
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/feature-hints.d.ts.map +1 -1
- package/dist/modes/interactive/feature-hints.js +0 -4
- package/dist/modes/interactive/feature-hints.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +3 -12
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +81 -507
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/onboarding.d.ts +0 -3
- package/dist/modes/interactive/onboarding.d.ts.map +1 -1
- package/dist/modes/interactive/onboarding.js +0 -17
- package/dist/modes/interactive/onboarding.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +2 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +24 -11
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/node/amazon-bedrock.d.ts +2 -0
- package/dist/node/amazon-bedrock.d.ts.map +1 -0
- package/dist/node/amazon-bedrock.js +6 -0
- package/dist/node/amazon-bedrock.js.map +1 -0
- package/dist/product-identity.d.ts +0 -1
- package/dist/product-identity.d.ts.map +1 -1
- package/dist/product-identity.js +0 -1
- package/dist/product-identity.js.map +1 -1
- package/docs/development.md +1 -1
- package/docs/fork-philosophy.md +4 -8
- package/docs/installation.md +83 -62
- package/docs/providers.md +23 -25
- package/docs/quickstart.md +19 -10
- package/docs/rlm-runtime.md +13 -5
- package/docs/rpc.md +4 -4
- package/docs/sdk.md +20 -11
- package/docs/sessions.md +0 -1
- package/docs/settings.md +9 -42
- package/docs/skills.md +0 -1
- package/docs/upstream-0.9.5.md +171 -0
- package/docs/usage.md +14 -10
- package/package.json +4 -4
- package/dist/core/agent-traces.d.ts +0 -149
- package/dist/core/agent-traces.d.ts.map +0 -1
- package/dist/core/agent-traces.js +0 -904
- package/dist/core/agent-traces.js.map +0 -1
- package/dist/core/prime-inference-auth.d.ts +0 -70
- package/dist/core/prime-inference-auth.d.ts.map +0 -1
- package/dist/core/prime-inference-auth.js +0 -352
- package/dist/core/prime-inference-auth.js.map +0 -1
- package/dist/core/prime-inference-model-selection.d.ts +0 -16
- package/dist/core/prime-inference-model-selection.d.ts.map +0 -1
- package/dist/core/prime-inference-model-selection.js +0 -16
- package/dist/core/prime-inference-model-selection.js.map +0 -1
- package/dist/core/prime-inference-models.d.ts +0 -6
- package/dist/core/prime-inference-models.d.ts.map +0 -1
- package/dist/core/prime-inference-models.js +0 -62
- package/dist/core/prime-inference-models.js.map +0 -1
- package/dist/core/telemetry.d.ts +0 -95
- package/dist/core/telemetry.d.ts.map +0 -1
- package/dist/core/telemetry.js +0 -637
- package/dist/core/telemetry.js.map +0 -1
- package/dist/modes/interactive/components/prime-onboarding-splash.d.ts +0 -39
- package/dist/modes/interactive/components/prime-onboarding-splash.d.ts.map +0 -1
- package/dist/modes/interactive/components/prime-onboarding-splash.js +0 -286
- package/dist/modes/interactive/components/prime-onboarding-splash.js.map +0 -1
- package/dist/modes/interactive/components/prime-team-selector.d.ts +0 -30
- package/dist/modes/interactive/components/prime-team-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/prime-team-selector.js +0 -166
- package/dist/modes/interactive/components/prime-team-selector.js.map +0 -1
- package/dist/skills/prime-intellect/SKILL.md +0 -87
- package/dist/skills/prime-intellect/references/compute.md +0 -45
- package/dist/skills/prime-intellect/references/environments.md +0 -73
- package/dist/skills/prime-intellect/references/inference.md +0 -47
- package/dist/skills/prime-intellect/references/sandboxes.md +0 -75
- package/skills/prime-intellect/SKILL.md +0 -87
- package/skills/prime-intellect/references/compute.md +0 -45
- package/skills/prime-intellect/references/environments.md +0 -73
- package/skills/prime-intellect/references/inference.md +0 -47
- package/skills/prime-intellect/references/sandboxes.md +0 -75
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import { createRequire as __piBundleCreateRequire } from 'node:module'; const require = __piBundleCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
|
-
APP_NAME,
|
|
4
3
|
closeOwnedSessionWorkerOwnerWatch,
|
|
5
4
|
installOwnedSessionWorkerOwnerWatch,
|
|
6
5
|
isOwnedSessionWorkerProcess,
|
|
7
6
|
maybeRunOwnedSessionWorkerFrontend,
|
|
8
7
|
maybeStartDaemonEarly
|
|
9
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-V3L54UD6.js";
|
|
9
|
+
import {
|
|
10
|
+
APP_NAME
|
|
11
|
+
} from "./chunk-27QCJ2AZ.js";
|
|
10
12
|
import "./chunk-5QCJ5DQU.js";
|
|
11
13
|
import "./chunk-CRBVRZBV.js";
|
|
12
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-GRJFXLBM.js";
|
|
13
15
|
import "./chunk-2T7M7VJ4.js";
|
|
14
16
|
import "./chunk-UIRUOAIQ.js";
|
|
15
17
|
import "./chunk-HXOBFFJX.js";
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-DGNX7HQ3.js";
|
|
19
|
+
import "./chunk-W46VZFI6.js";
|
|
18
20
|
import "./chunk-BAWSWWEU.js";
|
|
19
21
|
|
|
20
22
|
// dist/cli-main.js
|
|
@@ -37,7 +39,7 @@ async function runCli() {
|
|
|
37
39
|
}
|
|
38
40
|
const [{ EnvHttpProxyAgent, setGlobalDispatcher }, { main }] = await Promise.all([
|
|
39
41
|
import("undici"),
|
|
40
|
-
import("./main-
|
|
42
|
+
import("./main-ODOYCEQC.js")
|
|
41
43
|
]);
|
|
42
44
|
setGlobalDispatcher(new EnvHttpProxyAgent({ bodyTimeout: 0, headersTimeout: 0 }));
|
|
43
45
|
try {
|
package/dist/bundle/cli.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { createRequire as __piBundleCreateRequire } from 'node:module'; const require = __piBundleCreateRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
PRODUCT
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-GRJFXLBM.js";
|
|
6
6
|
import "./chunk-BAWSWWEU.js";
|
|
7
7
|
|
|
8
8
|
// dist/cli/node-version-check.js
|
|
@@ -52,6 +52,6 @@ var supported = assertNodeVersion({
|
|
|
52
52
|
exit: (code) => process.exit(code)
|
|
53
53
|
});
|
|
54
54
|
if (supported) {
|
|
55
|
-
const { runCli } = await import("./cli-main-
|
|
55
|
+
const { runCli } = await import("./cli-main-BYMSRPH6.js");
|
|
56
56
|
await runCli();
|
|
57
57
|
}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import { createRequire as __piBundleCreateRequire } from 'node:module'; const require = __piBundleCreateRequire(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
getEnvApiKey
|
|
4
|
-
} from "./chunk-SC5KG5R4.js";
|
|
5
2
|
import {
|
|
6
3
|
GoogleGenAI,
|
|
7
4
|
convertMessages,
|
|
@@ -13,11 +10,14 @@ import {
|
|
|
13
10
|
mapToolChoice,
|
|
14
11
|
observeGoogleUsage,
|
|
15
12
|
retainThoughtSignature
|
|
16
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-KTNETTHI.js";
|
|
17
14
|
import {
|
|
18
15
|
buildBaseOptions,
|
|
19
16
|
sanitizeSurrogates
|
|
20
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-4GXPNXOJ.js";
|
|
18
|
+
import {
|
|
19
|
+
getEnvApiKey
|
|
20
|
+
} from "./chunk-DGNX7HQ3.js";
|
|
21
21
|
import {
|
|
22
22
|
AssistantMessageEventStream,
|
|
23
23
|
ProviderAttemptTracker,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
formatStreamFailureMessage,
|
|
27
27
|
recordStreamFailure,
|
|
28
28
|
streamFailureFromStopReason
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-W46VZFI6.js";
|
|
30
30
|
import "./chunk-BAWSWWEU.js";
|
|
31
31
|
|
|
32
32
|
// ../ai/src/providers/google.ts
|
|
@@ -12,11 +12,11 @@ import {
|
|
|
12
12
|
mapToolChoice,
|
|
13
13
|
observeGoogleUsage,
|
|
14
14
|
retainThoughtSignature
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-KTNETTHI.js";
|
|
16
16
|
import {
|
|
17
17
|
buildBaseOptions,
|
|
18
18
|
sanitizeSurrogates
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-4GXPNXOJ.js";
|
|
20
20
|
import {
|
|
21
21
|
AssistantMessageEventStream,
|
|
22
22
|
ProviderAttemptTracker,
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
formatStreamFailureMessage,
|
|
26
26
|
recordStreamFailure,
|
|
27
27
|
streamFailureFromStopReason
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-W46VZFI6.js";
|
|
29
29
|
import "./chunk-BAWSWWEU.js";
|
|
30
30
|
|
|
31
31
|
// ../ai/src/providers/google-vertex.ts
|
|
@@ -17,17 +17,19 @@ import {
|
|
|
17
17
|
shouldUseDaemonClientRuntime,
|
|
18
18
|
shouldUseDaemonInteractive,
|
|
19
19
|
shouldUseEphemeralSessionManagerForDaemonInteractive
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-S3INFPZZ.js";
|
|
21
|
+
import "./chunk-V3L54UD6.js";
|
|
22
22
|
import "./chunk-CFNASUYO.js";
|
|
23
|
+
import "./chunk-HKINIBP4.js";
|
|
24
|
+
import "./chunk-27QCJ2AZ.js";
|
|
23
25
|
import "./chunk-5QCJ5DQU.js";
|
|
24
26
|
import "./chunk-CRBVRZBV.js";
|
|
25
|
-
import "./chunk-
|
|
27
|
+
import "./chunk-GRJFXLBM.js";
|
|
26
28
|
import "./chunk-2T7M7VJ4.js";
|
|
27
29
|
import "./chunk-UIRUOAIQ.js";
|
|
28
30
|
import "./chunk-HXOBFFJX.js";
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
31
|
+
import "./chunk-DGNX7HQ3.js";
|
|
32
|
+
import "./chunk-W46VZFI6.js";
|
|
31
33
|
import "./chunk-BAWSWWEU.js";
|
|
32
34
|
export {
|
|
33
35
|
createDefaultRuntimeFactory,
|
|
@@ -30,14 +30,14 @@ import {
|
|
|
30
30
|
import {
|
|
31
31
|
parseStreamingJson
|
|
32
32
|
} from "./chunk-2T7M7VJ4.js";
|
|
33
|
-
import {
|
|
34
|
-
getEnvApiKey
|
|
35
|
-
} from "./chunk-SC5KG5R4.js";
|
|
36
33
|
import {
|
|
37
34
|
buildBaseOptions,
|
|
38
35
|
sanitizeSurrogates,
|
|
39
36
|
transformMessages
|
|
40
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-4GXPNXOJ.js";
|
|
38
|
+
import {
|
|
39
|
+
getEnvApiKey
|
|
40
|
+
} from "./chunk-DGNX7HQ3.js";
|
|
41
41
|
import {
|
|
42
42
|
AssistantMessageEventStream,
|
|
43
43
|
ProviderAttemptTracker,
|
|
@@ -45,7 +45,7 @@ import {
|
|
|
45
45
|
clampThinkingLevel,
|
|
46
46
|
recordStreamFailure,
|
|
47
47
|
streamFailureFromStopReason
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-W46VZFI6.js";
|
|
49
49
|
import "./chunk-BAWSWWEU.js";
|
|
50
50
|
|
|
51
51
|
// ../../node_modules/@mistralai/mistralai/esm/lib/url.js
|
package/dist/bundle/{openai-codex-responses-LV3QRPN4.js → openai-codex-responses-PIV2RQ3G.js}
RENAMED
|
@@ -8,18 +8,18 @@ import {
|
|
|
8
8
|
convertResponsesTools,
|
|
9
9
|
observeResponsesEvent,
|
|
10
10
|
processResponsesStream
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-VSIYFWYI.js";
|
|
12
12
|
import "./chunk-NQB5DCFC.js";
|
|
13
13
|
import {
|
|
14
14
|
headersToRecord
|
|
15
15
|
} from "./chunk-CL7XFWST.js";
|
|
16
16
|
import "./chunk-2T7M7VJ4.js";
|
|
17
|
-
import {
|
|
18
|
-
getEnvApiKey
|
|
19
|
-
} from "./chunk-SC5KG5R4.js";
|
|
20
17
|
import {
|
|
21
18
|
buildBaseOptions
|
|
22
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-4GXPNXOJ.js";
|
|
20
|
+
import {
|
|
21
|
+
getEnvApiKey
|
|
22
|
+
} from "./chunk-DGNX7HQ3.js";
|
|
23
23
|
import {
|
|
24
24
|
AssistantMessageEventStream,
|
|
25
25
|
ProviderAttemptTracker,
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
formatThrownValue,
|
|
34
34
|
isLocalRequestPreparationError,
|
|
35
35
|
recordStreamFailure
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-W46VZFI6.js";
|
|
37
37
|
import "./chunk-BAWSWWEU.js";
|
|
38
38
|
|
|
39
39
|
// ../ai/src/providers/openai-codex-responses.ts
|
|
@@ -18,15 +18,14 @@ import {
|
|
|
18
18
|
import {
|
|
19
19
|
parseStreamingJson
|
|
20
20
|
} from "./chunk-2T7M7VJ4.js";
|
|
21
|
-
import {
|
|
22
|
-
getEnvApiKey,
|
|
23
|
-
getPrimeTeamId
|
|
24
|
-
} from "./chunk-SC5KG5R4.js";
|
|
25
21
|
import {
|
|
26
22
|
buildBaseOptions,
|
|
27
23
|
sanitizeSurrogates,
|
|
28
24
|
transformMessages
|
|
29
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-4GXPNXOJ.js";
|
|
26
|
+
import {
|
|
27
|
+
getEnvApiKey
|
|
28
|
+
} from "./chunk-DGNX7HQ3.js";
|
|
30
29
|
import {
|
|
31
30
|
AssistantMessageEventStream,
|
|
32
31
|
ProviderAttemptTracker,
|
|
@@ -37,7 +36,7 @@ import {
|
|
|
37
36
|
formatStreamFailureMessage,
|
|
38
37
|
recordStreamFailure,
|
|
39
38
|
withRequestBody
|
|
40
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-W46VZFI6.js";
|
|
41
40
|
import "./chunk-BAWSWWEU.js";
|
|
42
41
|
|
|
43
42
|
// ../ai/src/providers/openai-completions.ts
|
|
@@ -479,12 +478,7 @@ var streamSimpleOpenAICompletions = (model, context, options) => {
|
|
|
479
478
|
};
|
|
480
479
|
function createClient(model, context, apiKey, optionsHeaders, sessionId, compat = getCompat(model)) {
|
|
481
480
|
if (!apiKey) {
|
|
482
|
-
|
|
483
|
-
throw new Error(
|
|
484
|
-
"OpenAI API key is required. Set OPENAI_API_KEY environment variable or pass it as an argument."
|
|
485
|
-
);
|
|
486
|
-
}
|
|
487
|
-
apiKey = process.env.OPENAI_API_KEY;
|
|
481
|
+
throw new Error(`No API key for provider: ${model.provider}`);
|
|
488
482
|
}
|
|
489
483
|
const headers = { ...model.headers };
|
|
490
484
|
if (model.provider === "github-copilot") {
|
|
@@ -495,10 +489,6 @@ function createClient(model, context, apiKey, optionsHeaders, sessionId, compat
|
|
|
495
489
|
});
|
|
496
490
|
Object.assign(headers, copilotHeaders);
|
|
497
491
|
}
|
|
498
|
-
if (model.provider === "prime-inference") {
|
|
499
|
-
const teamId = getPrimeTeamId();
|
|
500
|
-
if (teamId) headers["X-Prime-Team-ID"] = teamId;
|
|
501
|
-
}
|
|
502
492
|
if (sessionId && compat.sendSessionAffinityHeaders) {
|
|
503
493
|
headers.session_id = sessionId;
|
|
504
494
|
headers["x-client-request-id"] = sessionId;
|
|
@@ -564,7 +554,7 @@ function captureDeepSeekProjection(model, context, transformed, messages, messag
|
|
|
564
554
|
if ((message.role === "assistant" || message.role === "user") && !closeCalls()) return;
|
|
565
555
|
const calls = requiredGroup?.calls ?? pending;
|
|
566
556
|
if (message.role === "assistant") {
|
|
567
|
-
if (message.api !== model.api || message.provider !== model.provider || message.model !== model.id || message.stopReason !== "stop" && message.stopReason !== "toolUse" || item.role !== "assistant" || item.content !== null && typeof item.content !== "string" || typeof item.reasoning_content !== "string" || "reasoning_details" in item)
|
|
557
|
+
if (message.api !== model.api || message.provider !== model.provider || message.model !== model.id || message.stopReason !== "stop" && message.stopReason !== "toolUse" && message.stopReason !== "length" || item.role !== "assistant" || item.content !== null && typeof item.content !== "string" || typeof item.reasoning_content !== "string" || "reasoning_details" in item)
|
|
568
558
|
return;
|
|
569
559
|
const toolCalls = message.content.filter(isToolCallBlock);
|
|
570
560
|
if ((item.tool_calls?.length ?? 0) !== toolCalls.length) return;
|
|
@@ -1096,13 +1086,12 @@ function detectCompat(model) {
|
|
|
1096
1086
|
const isMoonshot = provider === "moonshotai" || provider === "moonshotai-cn" || baseUrl.includes("api.moonshot.");
|
|
1097
1087
|
const isCloudflareWorkersAI = provider === "cloudflare-workers-ai" || baseUrl.includes("api.cloudflare.com");
|
|
1098
1088
|
const isCloudflareAiGateway = provider === "cloudflare-ai-gateway" || baseUrl.includes("gateway.ai.cloudflare.com");
|
|
1099
|
-
const
|
|
1100
|
-
const
|
|
1101
|
-
const useMaxTokens = baseUrl.includes("chutes.ai") || isMoonshot || isCloudflareAiGateway || isPrimeInference;
|
|
1089
|
+
const isNonStandard = provider === "cerebras" || baseUrl.includes("cerebras.ai") || provider === "xai" || baseUrl.includes("api.x.ai") || baseUrl.includes("chutes.ai") || baseUrl.includes("deepseek.com") || isZai || isMoonshot || provider === "opencode" || baseUrl.includes("opencode.ai") || isCloudflareWorkersAI || isCloudflareAiGateway;
|
|
1090
|
+
const useMaxTokens = baseUrl.includes("chutes.ai") || isMoonshot || isCloudflareAiGateway;
|
|
1102
1091
|
const isGrok = provider === "xai" || baseUrl.includes("api.x.ai");
|
|
1103
1092
|
const isDeepSeek = provider === "deepseek" || baseUrl.includes("deepseek.com");
|
|
1104
1093
|
const isAnthropicModel = model.id.startsWith("anthropic/");
|
|
1105
|
-
const cacheControlFormat = isAnthropicModel &&
|
|
1094
|
+
const cacheControlFormat = isAnthropicModel && provider === "openrouter" ? "anthropic" : void 0;
|
|
1106
1095
|
return {
|
|
1107
1096
|
supportsStore: !isNonStandard,
|
|
1108
1097
|
supportsDeveloperRole: !isNonStandard,
|
|
@@ -1117,7 +1106,7 @@ function detectCompat(model) {
|
|
|
1117
1106
|
openRouterRouting: {},
|
|
1118
1107
|
vercelGatewayRouting: {},
|
|
1119
1108
|
zaiToolStream: false,
|
|
1120
|
-
supportsStrictMode: !isMoonshot && !isCloudflareAiGateway
|
|
1109
|
+
supportsStrictMode: !isMoonshot && !isCloudflareAiGateway,
|
|
1121
1110
|
cacheControlFormat,
|
|
1122
1111
|
sendSessionAffinityHeaders: false,
|
|
1123
1112
|
supportsLongCacheRetention: !(isCloudflareWorkersAI || isCloudflareAiGateway)
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
convertResponsesMessages,
|
|
11
11
|
convertResponsesTools,
|
|
12
12
|
processResponsesStream
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-VSIYFWYI.js";
|
|
14
14
|
import "./chunk-NQB5DCFC.js";
|
|
15
15
|
import {
|
|
16
16
|
OpenAI
|
|
@@ -19,12 +19,12 @@ import {
|
|
|
19
19
|
headersToRecord
|
|
20
20
|
} from "./chunk-CL7XFWST.js";
|
|
21
21
|
import "./chunk-2T7M7VJ4.js";
|
|
22
|
-
import {
|
|
23
|
-
getEnvApiKey
|
|
24
|
-
} from "./chunk-SC5KG5R4.js";
|
|
25
22
|
import {
|
|
26
23
|
buildBaseOptions
|
|
27
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-4GXPNXOJ.js";
|
|
25
|
+
import {
|
|
26
|
+
getEnvApiKey
|
|
27
|
+
} from "./chunk-DGNX7HQ3.js";
|
|
28
28
|
import {
|
|
29
29
|
AssistantMessageEventStream,
|
|
30
30
|
ProviderAttemptTracker,
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
formatStreamFailureMessage,
|
|
33
33
|
recordStreamFailure,
|
|
34
34
|
streamFailureFromStopReason
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-W46VZFI6.js";
|
|
36
36
|
import "./chunk-BAWSWWEU.js";
|
|
37
37
|
|
|
38
38
|
// ../ai/src/providers/openai-responses.ts
|
package/dist/cli/args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * CLI argument parsing and help display\n */\n\nimport type { ThinkingLevel } from \"@ponythewhite/base-context-agent\";\nimport { APP_NAME } from \"../config.js\";\nimport { THINKING_LEVELS } from \"../core/thinking-levels.js\";\nimport { DAEMON_PROTOCOL_VERSION } from \"../modes/daemon/daemon-protocol.js\";\n\nexport type Mode = \"text\" | \"json\" | \"rpc\" | \"acp\" | \"daemon\";\n\nexport interface Args {\n\tprovider?: string;\n\tmodel?: string;\n\tapiKey?: string;\n\tcwd?: string;\n\tsystemPrompt?: string;\n\tappendSystemPrompt?: string[];\n\tthinking?: ThinkingLevel;\n\tcontinue?: boolean;\n\tresume?: true | string;\n\thelp?: boolean;\n\tversion?: boolean;\n\tmode?: Mode;\n\t/** RPC clients must understand this event protocol, including refusal-only agent_end. */\n\trpcProtocolVersion?: number;\n\tdaemonSocket?: string;\n\tnoSession?: boolean;\n\tfork?: string;\n\tsessionDir?: string;\n\tmodels?: string[];\n\ttools?: string[];\n\tnoTools?: boolean;\n\tnoBuiltinTools?: boolean;\n\textensions?: string[];\n\tnoExtensions?: boolean;\n\tprint?: boolean;\n\texport?: string;\n\tnoSkills?: boolean;\n\tskills?: string[];\n\tpromptTemplates?: string[];\n\tnoPromptTemplates?: boolean;\n\tthemes?: string[];\n\tnoThemes?: boolean;\n\tnoContextFiles?: boolean;\n\tautonomous?: boolean;\n\tautonomousGates?: string[];\n\tautonomousGateRetries?: number;\n\tautonomousGateTimeoutMs?: number;\n\tautonomousMaxContinuations?: number;\n\tautonomousMaxTurns?: number;\n\tautonomousMaxTokens?: number;\n\tautonomousTimeoutMs?: number;\n\tgoal?: string;\n\tgoalTokenBudget?: number;\n\tlistModels?: string | true;\n\toffline?: boolean;\n\tverbose?: boolean;\n\tmessages: string[];\n\tfileArgs: string[];\n\t/** Unknown flags (potentially extension flags) - map of flag name to value */\n\tunknownFlags: Map<string, boolean | string>;\n\tdiagnostics: Array<{ type: \"warning\" | \"error\"; message: string }>;\n}\n\nconst REMOVED_BUILTIN_TOOL_NAMES = new Set([\"read\", \"write\", \"grep\", \"find\", \"ls\"]);\nconst BUILTIN_TOOL_NAMES = [\"ipython\", \"prime_context\"];\n\nexport const INTERNAL_RUNTIME_COMMAND_MARKER = \"\\0prime-agent-runtime-command\";\n\nexport function isValidThinkingLevel(level: string): level is ThinkingLevel {\n\treturn THINKING_LEVELS.includes(level as ThinkingLevel);\n}\n\nexport function parseArgs(args: string[]): Args {\n\tconst result: Args = {\n\t\tmessages: [],\n\t\tfileArgs: [],\n\t\tunknownFlags: new Map(),\n\t\tdiagnostics: [],\n\t};\n\n\tlet endOfOptions = false;\n\tconst internalRuntimeCommand = args[0] === INTERNAL_RUNTIME_COMMAND_MARKER;\n\tconst firstArgIndex = internalRuntimeCommand ? 1 : 0;\n\n\tfor (let i = firstArgIndex; i < args.length; i++) {\n\t\tconst arg = args[i];\n\n\t\t// POSIX end-of-options: everything after a standalone \"--\" is a positional\n\t\t// message, even if it starts with a dash (e.g. a Markdown-bullet prompt).\n\t\tif (endOfOptions) {\n\t\t\tresult.messages.push(arg);\n\t\t\tcontinue;\n\t\t}\n\t\tif (arg === \"--\") {\n\t\t\tendOfOptions = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--help\" || arg === \"-h\") {\n\t\t\tresult.help = true;\n\t\t} else if (arg === \"--version\" || arg === \"-v\") {\n\t\t\tresult.version = true;\n\t\t} else if (arg === \"--mode\" && i + 1 < args.length) {\n\t\t\tconst mode = args[++i];\n\t\t\tif (mode === \"text\" || mode === \"json\" || mode === \"rpc\" || mode === \"acp\" || mode === \"daemon\") {\n\t\t\t\tresult.mode = mode;\n\t\t\t}\n\t\t} else if (arg === \"--rpc-protocol-version\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) result.rpcProtocolVersion = Number(args[++i]);\n\t\t} else if (arg === \"--daemon-socket\" && i + 1 < args.length) {\n\t\t\tresult.daemonSocket = args[++i];\n\t\t} else if (arg === \"--continue\" || arg === \"-c\") {\n\t\t\tresult.continue = true;\n\t\t} else if (arg === \"--resume\" || arg === \"-r\") {\n\t\t\tconst next = args[i + 1];\n\t\t\tif (next !== undefined && !next.startsWith(\"-\") && !next.startsWith(\"@\")) {\n\t\t\t\tif (next === \"\") {\n\t\t\t\t\tresult.resume = true;\n\t\t\t\t\ti++;\n\t\t\t\t} else {\n\t\t\t\t\tresult.resume = next;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresult.resume = true;\n\t\t\t}\n\t\t} else if (arg.startsWith(\"--resume=\")) {\n\t\t\tconst value = arg.slice(\"--resume=\".length);\n\t\t\tif (!value) {\n\t\t\t\tresult.resume = true;\n\t\t\t} else {\n\t\t\t\tresult.resume = value;\n\t\t\t}\n\t\t} else if (arg === \"--provider\" && i + 1 < args.length) {\n\t\t\tresult.provider = args[++i];\n\t\t} else if (arg === \"--model\" && i + 1 < args.length) {\n\t\t\tresult.model = args[++i];\n\t\t} else if (arg === \"--api-key\" && i + 1 < args.length) {\n\t\t\tresult.apiKey = args[++i];\n\t\t} else if (arg === \"--cwd\" && i + 1 < args.length) {\n\t\t\tresult.cwd = args[++i];\n\t\t} else if (arg === \"--system-prompt\" && i + 1 < args.length) {\n\t\t\tresult.systemPrompt = args[++i];\n\t\t} else if (arg === \"--append-system-prompt\" && i + 1 < args.length) {\n\t\t\tresult.appendSystemPrompt = result.appendSystemPrompt ?? [];\n\t\t\tresult.appendSystemPrompt.push(args[++i]);\n\t\t} else if (arg === \"--no-session\") {\n\t\t\tresult.noSession = true;\n\t\t} else if (arg === \"--fork\" && i + 1 < args.length) {\n\t\t\tresult.fork = args[++i];\n\t\t} else if (arg === \"--session-dir\" && i + 1 < args.length) {\n\t\t\tresult.sessionDir = args[++i];\n\t\t} else if (arg === \"--models\" && i + 1 < args.length) {\n\t\t\tresult.models = args[++i].split(\",\").map((s) => s.trim());\n\t\t} else if (arg === \"--no-tools\" || arg === \"-nt\") {\n\t\t\tresult.noTools = true;\n\t\t} else if (arg === \"--no-builtin-tools\" || arg === \"-nbt\") {\n\t\t\tresult.noBuiltinTools = true;\n\t\t} else if ((arg === \"--tools\" || arg === \"-t\") && i + 1 < args.length) {\n\t\t\tresult.tools = args[++i]\n\t\t\t\t.split(\",\")\n\t\t\t\t.map((s) => s.trim())\n\t\t\t\t.filter((name) => name.length > 0);\n\t\t\tconst removedTools = result.tools.filter((name) => REMOVED_BUILTIN_TOOL_NAMES.has(name));\n\t\t\tif (removedTools.length > 0) {\n\t\t\t\tresult.diagnostics.push({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: `Unknown built-in tool(s): ${removedTools.join(\", \")}. Available built-in tools: ${BUILTIN_TOOL_NAMES.join(\", \")}`,\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (arg === \"--thinking\" && i + 1 < args.length) {\n\t\t\tconst level = args[++i];\n\t\t\tif (isValidThinkingLevel(level)) {\n\t\t\t\tresult.thinking = level;\n\t\t\t} else {\n\t\t\t\tresult.diagnostics.push({\n\t\t\t\t\ttype: \"warning\",\n\t\t\t\t\tmessage: `Invalid thinking level \"${level}\". Valid values: ${THINKING_LEVELS.join(\", \")}`,\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (arg === \"--print\" || arg === \"-p\") {\n\t\t\tresult.print = true;\n\t\t\tconst next = args[i + 1];\n\t\t\tif (next !== undefined && !next.startsWith(\"@\") && (!next.startsWith(\"-\") || next.startsWith(\"---\"))) {\n\t\t\t\tresult.messages.push(next);\n\t\t\t\ti++;\n\t\t\t}\n\t\t} else if (arg === \"--export\") {\n\t\t\tif (!internalRuntimeCommand) {\n\t\t\t\tresult.diagnostics.push({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: `--export was removed. Use \"${APP_NAME} session export <file> [output]\".`,\n\t\t\t\t});\n\t\t\t\tif (i + 1 < args.length && !args[i + 1].startsWith(\"-\")) i++;\n\t\t\t} else if (i + 1 < args.length) {\n\t\t\t\tresult.export = args[++i];\n\t\t\t} else {\n\t\t\t\tresult.diagnostics.push({ type: \"error\", message: \"--export requires a value\" });\n\t\t\t}\n\t\t} else if (arg.startsWith(\"--export=\")) {\n\t\t\tresult.diagnostics.push({\n\t\t\t\ttype: \"error\",\n\t\t\t\tmessage: `--export was removed. Use \"${APP_NAME} session export <file> [output]\".`,\n\t\t\t});\n\t\t} else if ((arg === \"--extension\" || arg === \"-e\") && i + 1 < args.length) {\n\t\t\tresult.extensions = result.extensions ?? [];\n\t\t\tresult.extensions.push(args[++i]);\n\t\t} else if (arg === \"--no-extensions\" || arg === \"-ne\") {\n\t\t\tresult.noExtensions = true;\n\t\t} else if (arg === \"--skill\" && i + 1 < args.length) {\n\t\t\tresult.skills = result.skills ?? [];\n\t\t\tresult.skills.push(args[++i]);\n\t\t} else if (arg === \"--prompt-template\" && i + 1 < args.length) {\n\t\t\tresult.promptTemplates = result.promptTemplates ?? [];\n\t\t\tresult.promptTemplates.push(args[++i]);\n\t\t} else if (arg === \"--theme\" && i + 1 < args.length) {\n\t\t\tresult.themes = result.themes ?? [];\n\t\t\tresult.themes.push(args[++i]);\n\t\t} else if (arg === \"--no-skills\" || arg === \"-ns\") {\n\t\t\tresult.noSkills = true;\n\t\t} else if (arg === \"--no-prompt-templates\" || arg === \"-np\") {\n\t\t\tresult.noPromptTemplates = true;\n\t\t} else if (arg === \"--no-themes\") {\n\t\t\tresult.noThemes = true;\n\t\t} else if (arg === \"--no-context-files\" || arg === \"-nc\") {\n\t\t\tresult.noContextFiles = true;\n\t\t} else if (arg === \"--autonomous\") {\n\t\t\tresult.autonomous = true;\n\t\t} else if (arg === \"--autonomous-gate\") {\n\t\t\tresult.autonomous = true;\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.autonomousGates = result.autonomousGates ?? [];\n\t\t\t\tresult.autonomousGates.push(args[++i]);\n\t\t\t}\n\t\t} else if (arg === \"--autonomous-gate-retries\") {\n\t\t\tresult.autonomous = true;\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.autonomousGateRetries = parsePositiveInt(args[++i], \"--autonomous-gate-retries\", result);\n\t\t\t}\n\t\t} else if (arg === \"--autonomous-gate-timeout-ms\") {\n\t\t\tresult.autonomous = true;\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.autonomousGateTimeoutMs = parsePositiveInt(args[++i], \"--autonomous-gate-timeout-ms\", result);\n\t\t\t}\n\t\t} else if (arg === \"--autonomous-max-continuations\") {\n\t\t\tresult.autonomous = true;\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.autonomousMaxContinuations = parsePositiveInt(args[++i], \"--autonomous-max-continuations\", result);\n\t\t\t}\n\t\t} else if (arg === \"--autonomous-max-turns\") {\n\t\t\tresult.autonomous = true;\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.autonomousMaxTurns = parsePositiveInt(args[++i], \"--autonomous-max-turns\", result);\n\t\t\t}\n\t\t} else if (arg === \"--autonomous-max-tokens\") {\n\t\t\tresult.autonomous = true;\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.autonomousMaxTokens = parsePositiveInt(args[++i], \"--autonomous-max-tokens\", result);\n\t\t\t}\n\t\t} else if (arg === \"--autonomous-timeout-ms\") {\n\t\t\tresult.autonomous = true;\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.autonomousTimeoutMs = parsePositiveInt(args[++i], \"--autonomous-timeout-ms\", result);\n\t\t\t}\n\t\t} else if (arg === \"--goal\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tconst value = args[++i];\n\t\t\t\tif (!value.trim()) {\n\t\t\t\t\tresult.diagnostics.push({ type: \"error\", message: \"--goal requires a non-empty objective\" });\n\t\t\t\t} else {\n\t\t\t\t\tresult.goal = value;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arg === \"--goal-token-budget\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.goalTokenBudget = parsePositiveInt(args[++i], \"--goal-token-budget\", result);\n\t\t\t}\n\t\t} else if (arg === \"--list-models\") {\n\t\t\tconst hasSearch = i + 1 < args.length && !args[i + 1].startsWith(\"-\") && !args[i + 1].startsWith(\"@\");\n\t\t\tif (!internalRuntimeCommand) {\n\t\t\t\tresult.diagnostics.push({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: `--list-models was removed. Use \"${APP_NAME} model list [search]\".`,\n\t\t\t\t});\n\t\t\t\tif (hasSearch) i++;\n\t\t\t} else if (hasSearch) {\n\t\t\t\tresult.listModels = args[++i];\n\t\t\t} else {\n\t\t\t\tresult.listModels = true;\n\t\t\t}\n\t\t} else if (arg.startsWith(\"--list-models=\")) {\n\t\t\tresult.diagnostics.push({\n\t\t\t\ttype: \"error\",\n\t\t\t\tmessage: `--list-models was removed. Use \"${APP_NAME} model list [search]\".`,\n\t\t\t});\n\t\t} else if (arg === \"--verbose\") {\n\t\t\tresult.verbose = true;\n\t\t} else if (arg === \"--offline\") {\n\t\t\tresult.offline = true;\n\t\t} else if (arg.startsWith(\"@\")) {\n\t\t\tresult.fileArgs.push(arg.slice(1)); // Remove @ prefix\n\t\t} else if (arg.startsWith(\"--\")) {\n\t\t\tconst eqIndex = arg.indexOf(\"=\");\n\t\t\tif (eqIndex !== -1) {\n\t\t\t\tresult.unknownFlags.set(arg.slice(2, eqIndex), arg.slice(eqIndex + 1));\n\t\t\t} else {\n\t\t\t\tconst flagName = arg.slice(2);\n\t\t\t\tconst next = args[i + 1];\n\t\t\t\tif (next !== undefined && !next.startsWith(\"-\") && !next.startsWith(\"@\")) {\n\t\t\t\t\tresult.unknownFlags.set(flagName, next);\n\t\t\t\t\ti++;\n\t\t\t\t} else {\n\t\t\t\t\tresult.unknownFlags.set(flagName, true);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arg.startsWith(\"-\") && !arg.startsWith(\"--\")) {\n\t\t\tresult.diagnostics.push({ type: \"error\", message: `Unknown option: ${arg}` });\n\t\t} else if (!arg.startsWith(\"-\")) {\n\t\t\tresult.messages.push(arg);\n\t\t}\n\t}\n\n\tif (result.goalTokenBudget !== undefined && !result.goal) {\n\t\tresult.diagnostics.push({\n\t\t\ttype: \"error\",\n\t\t\tmessage: \"--goal-token-budget requires --goal\",\n\t\t});\n\t}\n\n\tif (\n\t\tresult.mode === \"rpc\" &&\n\t\t!result.help &&\n\t\t!result.version &&\n\t\tresult.rpcProtocolVersion !== DAEMON_PROTOCOL_VERSION\n\t) {\n\t\tresult.diagnostics.push({\n\t\t\ttype: \"error\",\n\t\t\tmessage: `RPC mode requires --rpc-protocol-version ${DAEMON_PROTOCOL_VERSION}; the client must handle refusal-only agent_end as failed completion`,\n\t\t});\n\t}\n\n\treturn result;\n}\n\nfunction hasRequiredOptionValue(args: string[], index: number, flag: string, result: Args): boolean {\n\tconst next = args[index + 1];\n\tif (next === undefined || next.startsWith(\"--\")) {\n\t\tresult.diagnostics.push({ type: \"error\", message: `${flag} requires a value` });\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nfunction parsePositiveInt(value: string, flag: string, result: Args): number | undefined {\n\tconst parsed = Number(value);\n\tif (!Number.isInteger(parsed) || parsed <= 0) {\n\t\tresult.diagnostics.push({ type: \"error\", message: `${flag} must be a positive integer` });\n\t\treturn undefined;\n\t}\n\treturn parsed;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAKtE,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE9D,MAAM,WAAW,IAAI;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,yFAAyF;IACzF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8EAA8E;IAC9E,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;IAC5C,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnE;AASD,eAAO,MAAM,+BAA+B,kCAAkC,CAAC;AAE/E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAE1E;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAqT9C","sourcesContent":["/**\n * CLI argument parsing and help display\n */\n\nimport type { ThinkingLevel } from \"@ponythewhite/base-context-agent\";\nimport { APP_NAME } from \"../config.js\";\nimport { THINKING_LEVELS } from \"../core/thinking-levels.js\";\nimport { DAEMON_PROTOCOL_VERSION } from \"../modes/daemon/daemon-protocol.js\";\n\nexport type Mode = \"text\" | \"json\" | \"rpc\" | \"acp\" | \"daemon\";\n\nexport interface Args {\n\tprovider?: string;\n\tmodel?: string;\n\tapiKey?: string;\n\tcwd?: string;\n\tsystemPrompt?: string;\n\tappendSystemPrompt?: string[];\n\tthinking?: ThinkingLevel;\n\tcontinue?: boolean;\n\tresume?: true | string;\n\thelp?: boolean;\n\tversion?: boolean;\n\tmode?: Mode;\n\t/** RPC clients must understand this event protocol, including refusal-only agent_end. */\n\trpcProtocolVersion?: number;\n\tdaemonSocket?: string;\n\tnoSession?: boolean;\n\tfork?: string;\n\tsessionDir?: string;\n\tmodels?: string[];\n\ttools?: string[];\n\tnoTools?: boolean;\n\tnoBuiltinTools?: boolean;\n\textensions?: string[];\n\tnoExtensions?: boolean;\n\tprint?: boolean;\n\texport?: string;\n\tnoSkills?: boolean;\n\tskills?: string[];\n\tpromptTemplates?: string[];\n\tnoPromptTemplates?: boolean;\n\tthemes?: string[];\n\tnoThemes?: boolean;\n\tnoContextFiles?: boolean;\n\tautonomous?: boolean;\n\tautonomousGates?: string[];\n\tautonomousGateRetries?: number;\n\tautonomousGateTimeoutMs?: number;\n\tautonomousMaxContinuations?: number;\n\tautonomousMaxTurns?: number;\n\tautonomousMaxTokens?: number;\n\tautonomousTimeoutMs?: number;\n\tgoal?: string;\n\tgoalTokenBudget?: number;\n\tlistModels?: string | true;\n\toffline?: boolean;\n\tverbose?: boolean;\n\tmessages: string[];\n\tfileArgs: string[];\n\t/** Unknown flags (potentially extension flags) - map of flag name to value */\n\tunknownFlags: Map<string, boolean | string>;\n\tdiagnostics: Array<{ type: \"warning\" | \"error\"; message: string }>;\n}\n\nconst REMOVED_BUILTIN_TOOL_NAMES = new Set([\"read\", \"write\", \"grep\", \"find\", \"ls\"]);\nconst BUILTIN_TOOL_NAMES = [\"ipython\", \"prime_context\"];\n/** Free-form objectives and commands may start with a short-option-looking token. */\nconst FREEFORM_VALUE_FLAGS = new Set([\"--goal\", \"--autonomous-gate\"]);\n/** Prompt text may start with long-option-looking text, such as YAML frontmatter. */\nconst PROMPT_VALUE_FLAGS = new Set([\"--system-prompt\", \"--append-system-prompt\"]);\n\nexport const INTERNAL_RUNTIME_COMMAND_MARKER = \"\\0prime-agent-runtime-command\";\n\nexport function isValidThinkingLevel(level: string): level is ThinkingLevel {\n\treturn THINKING_LEVELS.includes(level as ThinkingLevel);\n}\n\nexport function parseArgs(args: string[]): Args {\n\tconst result: Args = {\n\t\tmessages: [],\n\t\tfileArgs: [],\n\t\tunknownFlags: new Map(),\n\t\tdiagnostics: [],\n\t};\n\n\tlet endOfOptions = false;\n\tconst internalRuntimeCommand = args[0] === INTERNAL_RUNTIME_COMMAND_MARKER;\n\tconst firstArgIndex = internalRuntimeCommand ? 1 : 0;\n\n\tfor (let i = firstArgIndex; i < args.length; i++) {\n\t\tconst arg = args[i];\n\n\t\t// POSIX end-of-options: everything after a standalone \"--\" is a positional\n\t\t// message, even if it starts with a dash (e.g. a Markdown-bullet prompt).\n\t\tif (endOfOptions) {\n\t\t\tresult.messages.push(arg);\n\t\t\tcontinue;\n\t\t}\n\t\tif (arg === \"--\") {\n\t\t\tendOfOptions = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--help\" || arg === \"-h\") {\n\t\t\tresult.help = true;\n\t\t} else if (arg === \"--version\" || arg === \"-v\") {\n\t\t\tresult.version = true;\n\t\t} else if (arg === \"--mode\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tconst mode = args[++i];\n\t\t\t\tif (mode === \"text\" || mode === \"json\" || mode === \"rpc\" || mode === \"acp\" || mode === \"daemon\") {\n\t\t\t\t\tresult.mode = mode;\n\t\t\t\t} else {\n\t\t\t\t\tresult.diagnostics.push({\n\t\t\t\t\t\ttype: \"error\",\n\t\t\t\t\t\tmessage: `Invalid --mode \"${mode}\". Valid values: text, json, rpc, acp, daemon`,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arg === \"--rpc-protocol-version\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) result.rpcProtocolVersion = Number(args[++i]);\n\t\t} else if (arg === \"--daemon-socket\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.daemonSocket = args[++i];\n\t\t\t}\n\t\t} else if (arg === \"--continue\" || arg === \"-c\") {\n\t\t\tresult.continue = true;\n\t\t} else if (arg === \"--resume\" || arg === \"-r\") {\n\t\t\tconst next = args[i + 1];\n\t\t\tif (next !== undefined && !next.startsWith(\"-\") && !next.startsWith(\"@\")) {\n\t\t\t\tif (next === \"\") {\n\t\t\t\t\tresult.resume = true;\n\t\t\t\t\ti++;\n\t\t\t\t} else {\n\t\t\t\t\tresult.resume = next;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresult.resume = true;\n\t\t\t}\n\t\t} else if (arg.startsWith(\"--resume=\")) {\n\t\t\tconst value = arg.slice(\"--resume=\".length);\n\t\t\tif (!value) {\n\t\t\t\tresult.resume = true;\n\t\t\t} else {\n\t\t\t\tresult.resume = value;\n\t\t\t}\n\t\t} else if (arg === \"--provider\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.provider = args[++i];\n\t\t\t}\n\t\t} else if (arg === \"--model\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.model = args[++i];\n\t\t\t}\n\t\t} else if (arg === \"--api-key\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.apiKey = args[++i];\n\t\t\t}\n\t\t} else if (arg === \"--cwd\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.cwd = args[++i];\n\t\t\t}\n\t\t} else if (arg === \"--system-prompt\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.systemPrompt = args[++i];\n\t\t\t}\n\t\t} else if (arg === \"--append-system-prompt\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.appendSystemPrompt = result.appendSystemPrompt ?? [];\n\t\t\t\tresult.appendSystemPrompt.push(args[++i]);\n\t\t\t}\n\t\t} else if (arg === \"--no-session\") {\n\t\t\tresult.noSession = true;\n\t\t} else if (arg === \"--fork\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.fork = args[++i];\n\t\t\t}\n\t\t} else if (arg === \"--session-dir\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.sessionDir = args[++i];\n\t\t\t}\n\t\t} else if (arg === \"--models\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.models = args[++i].split(\",\").map((s) => s.trim());\n\t\t\t}\n\t\t} else if (arg === \"--no-tools\" || arg === \"-nt\") {\n\t\t\tresult.noTools = true;\n\t\t} else if (arg === \"--no-builtin-tools\" || arg === \"-nbt\") {\n\t\t\tresult.noBuiltinTools = true;\n\t\t} else if (arg === \"--tools\" || arg === \"-t\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.tools = args[++i]\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.map((s) => s.trim())\n\t\t\t\t\t.filter((name) => name.length > 0);\n\t\t\t\tconst removedTools = result.tools.filter((name) => REMOVED_BUILTIN_TOOL_NAMES.has(name));\n\t\t\t\tif (removedTools.length > 0) {\n\t\t\t\t\tresult.diagnostics.push({\n\t\t\t\t\t\ttype: \"error\",\n\t\t\t\t\t\tmessage: `Unknown built-in tool(s): ${removedTools.join(\", \")}. Available built-in tools: ${BUILTIN_TOOL_NAMES.join(\", \")}`,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arg === \"--thinking\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tconst level = args[++i];\n\t\t\t\tif (isValidThinkingLevel(level)) {\n\t\t\t\t\tresult.thinking = level;\n\t\t\t\t} else {\n\t\t\t\t\tresult.diagnostics.push({\n\t\t\t\t\t\ttype: \"error\",\n\t\t\t\t\t\tmessage: `Invalid thinking level \"${level}\". Valid values: ${THINKING_LEVELS.join(\", \")}`,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arg === \"--print\" || arg === \"-p\") {\n\t\t\tresult.print = true;\n\t\t\tconst next = args[i + 1];\n\t\t\tif (next !== undefined && !next.startsWith(\"@\") && (!next.startsWith(\"-\") || next.startsWith(\"---\"))) {\n\t\t\t\tresult.messages.push(next);\n\t\t\t\ti++;\n\t\t\t}\n\t\t} else if (arg === \"--export\") {\n\t\t\tif (!internalRuntimeCommand) {\n\t\t\t\tresult.diagnostics.push({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: `--export was removed. Use \"${APP_NAME} session export <file> [output]\".`,\n\t\t\t\t});\n\t\t\t\tif (i + 1 < args.length && !args[i + 1].startsWith(\"-\")) i++;\n\t\t\t} else if (i + 1 < args.length) {\n\t\t\t\tresult.export = args[++i];\n\t\t\t} else {\n\t\t\t\tresult.diagnostics.push({ type: \"error\", message: \"--export requires a value\" });\n\t\t\t}\n\t\t} else if (arg.startsWith(\"--export=\")) {\n\t\t\tresult.diagnostics.push({\n\t\t\t\ttype: \"error\",\n\t\t\t\tmessage: `--export was removed. Use \"${APP_NAME} session export <file> [output]\".`,\n\t\t\t});\n\t\t} else if (arg === \"--extension\" || arg === \"-e\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.extensions = result.extensions ?? [];\n\t\t\t\tresult.extensions.push(args[++i]);\n\t\t\t}\n\t\t} else if (arg === \"--no-extensions\" || arg === \"-ne\") {\n\t\t\tresult.noExtensions = true;\n\t\t} else if (arg === \"--skill\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.skills = result.skills ?? [];\n\t\t\t\tresult.skills.push(args[++i]);\n\t\t\t}\n\t\t} else if (arg === \"--prompt-template\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.promptTemplates = result.promptTemplates ?? [];\n\t\t\t\tresult.promptTemplates.push(args[++i]);\n\t\t\t}\n\t\t} else if (arg === \"--theme\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.themes = result.themes ?? [];\n\t\t\t\tresult.themes.push(args[++i]);\n\t\t\t}\n\t\t} else if (arg === \"--no-skills\" || arg === \"-ns\") {\n\t\t\tresult.noSkills = true;\n\t\t} else if (arg === \"--no-prompt-templates\" || arg === \"-np\") {\n\t\t\tresult.noPromptTemplates = true;\n\t\t} else if (arg === \"--no-themes\") {\n\t\t\tresult.noThemes = true;\n\t\t} else if (arg === \"--no-context-files\" || arg === \"-nc\") {\n\t\t\tresult.noContextFiles = true;\n\t\t} else if (arg === \"--autonomous\") {\n\t\t\tresult.autonomous = true;\n\t\t} else if (arg === \"--autonomous-gate\") {\n\t\t\tresult.autonomous = true;\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.autonomousGates = result.autonomousGates ?? [];\n\t\t\t\tresult.autonomousGates.push(args[++i]);\n\t\t\t}\n\t\t} else if (arg === \"--autonomous-gate-retries\") {\n\t\t\tresult.autonomous = true;\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.autonomousGateRetries = parsePositiveInt(args[++i], \"--autonomous-gate-retries\", result);\n\t\t\t}\n\t\t} else if (arg === \"--autonomous-gate-timeout-ms\") {\n\t\t\tresult.autonomous = true;\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.autonomousGateTimeoutMs = parsePositiveInt(args[++i], \"--autonomous-gate-timeout-ms\", result);\n\t\t\t}\n\t\t} else if (arg === \"--autonomous-max-continuations\") {\n\t\t\tresult.autonomous = true;\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.autonomousMaxContinuations = parsePositiveInt(args[++i], \"--autonomous-max-continuations\", result);\n\t\t\t}\n\t\t} else if (arg === \"--autonomous-max-turns\") {\n\t\t\tresult.autonomous = true;\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.autonomousMaxTurns = parsePositiveInt(args[++i], \"--autonomous-max-turns\", result);\n\t\t\t}\n\t\t} else if (arg === \"--autonomous-max-tokens\") {\n\t\t\tresult.autonomous = true;\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.autonomousMaxTokens = parsePositiveInt(args[++i], \"--autonomous-max-tokens\", result);\n\t\t\t}\n\t\t} else if (arg === \"--autonomous-timeout-ms\") {\n\t\t\tresult.autonomous = true;\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.autonomousTimeoutMs = parsePositiveInt(args[++i], \"--autonomous-timeout-ms\", result);\n\t\t\t}\n\t\t} else if (arg === \"--goal\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tconst value = args[++i];\n\t\t\t\tif (!value.trim()) {\n\t\t\t\t\tresult.diagnostics.push({ type: \"error\", message: \"--goal requires a non-empty objective\" });\n\t\t\t\t} else {\n\t\t\t\t\tresult.goal = value;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arg === \"--goal-token-budget\") {\n\t\t\tif (hasRequiredOptionValue(args, i, arg, result)) {\n\t\t\t\tresult.goalTokenBudget = parsePositiveInt(args[++i], \"--goal-token-budget\", result);\n\t\t\t}\n\t\t} else if (arg === \"--list-models\") {\n\t\t\tconst hasSearch = i + 1 < args.length && !args[i + 1].startsWith(\"-\") && !args[i + 1].startsWith(\"@\");\n\t\t\tif (!internalRuntimeCommand) {\n\t\t\t\tresult.diagnostics.push({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: `--list-models was removed. Use \"${APP_NAME} model list [search]\".`,\n\t\t\t\t});\n\t\t\t\tif (hasSearch) i++;\n\t\t\t} else if (hasSearch) {\n\t\t\t\tresult.listModels = args[++i];\n\t\t\t} else {\n\t\t\t\tresult.listModels = true;\n\t\t\t}\n\t\t} else if (arg.startsWith(\"--list-models=\")) {\n\t\t\tresult.diagnostics.push({\n\t\t\t\ttype: \"error\",\n\t\t\t\tmessage: `--list-models was removed. Use \"${APP_NAME} model list [search]\".`,\n\t\t\t});\n\t\t} else if (arg === \"--verbose\") {\n\t\t\tresult.verbose = true;\n\t\t} else if (arg === \"--offline\") {\n\t\t\tresult.offline = true;\n\t\t} else if (arg.startsWith(\"@\")) {\n\t\t\tresult.fileArgs.push(arg.slice(1)); // Remove @ prefix\n\t\t} else if (arg.startsWith(\"--\")) {\n\t\t\tconst eqIndex = arg.indexOf(\"=\");\n\t\t\tif (eqIndex !== -1) {\n\t\t\t\tresult.unknownFlags.set(arg.slice(2, eqIndex), arg.slice(eqIndex + 1));\n\t\t\t} else {\n\t\t\t\tconst flagName = arg.slice(2);\n\t\t\t\tconst next = args[i + 1];\n\t\t\t\tif (next !== undefined && !next.startsWith(\"-\") && !next.startsWith(\"@\")) {\n\t\t\t\t\tresult.unknownFlags.set(flagName, next);\n\t\t\t\t\ti++;\n\t\t\t\t} else {\n\t\t\t\t\tresult.unknownFlags.set(flagName, true);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arg.startsWith(\"-\") && !arg.startsWith(\"--\")) {\n\t\t\tresult.diagnostics.push({ type: \"error\", message: `Unknown option: ${arg}` });\n\t\t} else if (!arg.startsWith(\"-\")) {\n\t\t\tresult.messages.push(arg);\n\t\t}\n\t}\n\n\tif (result.goalTokenBudget !== undefined && !result.goal) {\n\t\tresult.diagnostics.push({\n\t\t\ttype: \"error\",\n\t\t\tmessage: \"--goal-token-budget requires --goal\",\n\t\t});\n\t}\n\n\tif (\n\t\tresult.mode === \"rpc\" &&\n\t\t!result.help &&\n\t\t!result.version &&\n\t\tresult.rpcProtocolVersion !== DAEMON_PROTOCOL_VERSION\n\t) {\n\t\tresult.diagnostics.push({\n\t\t\ttype: \"error\",\n\t\t\tmessage: `RPC mode requires --rpc-protocol-version ${DAEMON_PROTOCOL_VERSION}; the client must handle refusal-only agent_end as failed completion`,\n\t\t});\n\t}\n\n\treturn result;\n}\n\nfunction hasRequiredOptionValue(args: string[], index: number, flag: string, result: Args): boolean {\n\tconst next = args[index + 1];\n\t// Keep the standalone end-of-options delimiter for the main loop in every case.\n\tconst valueMayStartWithDash = FREEFORM_VALUE_FLAGS.has(flag);\n\tconst valueIsArbitraryPromptText = PROMPT_VALUE_FLAGS.has(flag);\n\tif (\n\t\tnext === undefined ||\n\t\tnext === \"--\" ||\n\t\t(!valueIsArbitraryPromptText && next.startsWith(valueMayStartWithDash ? \"--\" : \"-\"))\n\t) {\n\t\tresult.diagnostics.push({ type: \"error\", message: `${flag} requires a value` });\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nfunction parsePositiveInt(value: string, flag: string, result: Args): number | undefined {\n\tconst parsed = Number(value);\n\tif (!Number.isInteger(parsed) || parsed <= 0) {\n\t\tresult.diagnostics.push({ type: \"error\", message: `${flag} must be a positive integer` });\n\t\treturn undefined;\n\t}\n\treturn parsed;\n}\n"]}
|