@ponythewhite/base-context 1.0.0 → 1.0.2

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.
Files changed (285) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/NOTICE +0 -5
  3. package/README.md +44 -27
  4. package/dist/NOTICE +0 -5
  5. package/dist/base-context-runtime/pyproject.toml +1 -1
  6. package/dist/base-context-runtime/src/rlm/__init__.py +7 -5
  7. package/dist/base-context-runtime/test/test_subagent_registry.py +28 -1
  8. package/dist/base-context-runtime/uv.lock +1 -1
  9. package/dist/build-info.json +1 -1
  10. package/dist/bundle/amazon-bedrock.js +21 -0
  11. package/dist/bundle/{anthropic-YY4S534V.js → anthropic-UV5GZDGU.js} +5 -5
  12. package/dist/bundle/{azure-openai-responses-JRP6MIM3.js → azure-openai-responses-WSNPXLYC.js} +6 -6
  13. package/dist/bundle/{bundled-modules-P5HARVZA.js → bundled-modules-PWOGKUQQ.js} +71 -16
  14. package/dist/bundle/chunk-27QCJ2AZ.js +2578 -0
  15. package/dist/bundle/{chunk-BYVP7LWV.js → chunk-44PEHPOG.js} +1916 -4689
  16. package/dist/bundle/{chunk-MZHTNNVA.js → chunk-4GXPNXOJ.js} +8 -0
  17. package/dist/bundle/{chunk-SC5KG5R4.js → chunk-DGNX7HQ3.js} +1 -7
  18. package/dist/bundle/{chunk-A53O363M.js → chunk-GRJFXLBM.js} +0 -1
  19. package/dist/bundle/chunk-HKINIBP4.js +29 -0
  20. package/dist/bundle/{chunk-73DCPU3D.js → chunk-IADCPVEI.js} +1019 -3427
  21. package/dist/bundle/{chunk-UDSW6FNG.js → chunk-KTNETTHI.js} +1 -1
  22. package/dist/bundle/{chunk-U7AUVG3B.js → chunk-VSIYFWYI.js} +24 -6
  23. package/dist/bundle/{chunk-IW77OXFS.js → chunk-W46VZFI6.js} +0 -2099
  24. package/dist/bundle/{cli-main-O4X7GFGY.js → cli-main-4DS7Y3PI.js} +8 -6
  25. package/dist/bundle/cli.js +2 -2
  26. package/dist/bundle/{google-AUTVGDGZ.js → google-T32FMD4G.js} +6 -6
  27. package/dist/bundle/{google-vertex-Q75D7RKS.js → google-vertex-56KP6I3B.js} +3 -3
  28. package/dist/bundle/{main-XKOW2BV6.js → main-SV7JLVEB.js} +7 -5
  29. package/dist/bundle/{mistral-7ESB7QUD.js → mistral-WGBMYIVU.js} +5 -5
  30. package/dist/bundle/{openai-codex-responses-LV3QRPN4.js → openai-codex-responses-PIV2RQ3G.js} +6 -6
  31. package/dist/bundle/{openai-completions-OJECLPXJ.js → openai-completions-64C3JPR4.js} +11 -22
  32. package/dist/bundle/{openai-responses-FN6HZMBC.js → openai-responses-UI7RSTDV.js} +6 -6
  33. package/dist/cli/args.d.ts.map +1 -1
  34. package/dist/cli/args.js +108 -59
  35. package/dist/cli/args.js.map +1 -1
  36. package/dist/cli/daemon-ps.d.ts +4 -3
  37. package/dist/cli/daemon-ps.d.ts.map +1 -1
  38. package/dist/cli/daemon-ps.js +6 -1
  39. package/dist/cli/daemon-ps.js.map +1 -1
  40. package/dist/cli/product-doctor.d.ts +0 -1
  41. package/dist/cli/product-doctor.d.ts.map +1 -1
  42. package/dist/cli/product-doctor.js +6 -3
  43. package/dist/cli/product-doctor.js.map +1 -1
  44. package/dist/config.d.ts +0 -3
  45. package/dist/config.d.ts.map +1 -1
  46. package/dist/config.js +0 -8
  47. package/dist/config.js.map +1 -1
  48. package/dist/core/agent-session-config.d.ts +1 -2
  49. package/dist/core/agent-session-config.d.ts.map +1 -1
  50. package/dist/core/agent-session-config.js +0 -3
  51. package/dist/core/agent-session-config.js.map +1 -1
  52. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  53. package/dist/core/agent-session-runtime.js +5 -4
  54. package/dist/core/agent-session-runtime.js.map +1 -1
  55. package/dist/core/agent-session-services.d.ts +5 -3
  56. package/dist/core/agent-session-services.d.ts.map +1 -1
  57. package/dist/core/agent-session-services.js +2 -27
  58. package/dist/core/agent-session-services.js.map +1 -1
  59. package/dist/core/agent-session.d.ts +10 -6
  60. package/dist/core/agent-session.d.ts.map +1 -1
  61. package/dist/core/agent-session.js +107 -107
  62. package/dist/core/agent-session.js.map +1 -1
  63. package/dist/core/auth-storage.d.ts +8 -35
  64. package/dist/core/auth-storage.d.ts.map +1 -1
  65. package/dist/core/auth-storage.js +33 -243
  66. package/dist/core/auth-storage.js.map +1 -1
  67. package/dist/core/cron-jobs.d.ts.map +1 -1
  68. package/dist/core/cron-jobs.js +7 -1
  69. package/dist/core/cron-jobs.js.map +1 -1
  70. package/dist/core/inference-coordinator.d.ts +6 -1
  71. package/dist/core/inference-coordinator.d.ts.map +1 -1
  72. package/dist/core/inference-coordinator.js +18 -2
  73. package/dist/core/inference-coordinator.js.map +1 -1
  74. package/dist/core/kernel/bootstrap.d.ts.map +1 -1
  75. package/dist/core/kernel/bootstrap.js +2 -2
  76. package/dist/core/kernel/bootstrap.js.map +1 -1
  77. package/dist/core/kernel/repl-manager.d.ts +2 -0
  78. package/dist/core/kernel/repl-manager.d.ts.map +1 -1
  79. package/dist/core/kernel/repl-manager.js +44 -1
  80. package/dist/core/kernel/repl-manager.js.map +1 -1
  81. package/dist/core/logging.d.ts +4 -3
  82. package/dist/core/logging.d.ts.map +1 -1
  83. package/dist/core/logging.js +6 -6
  84. package/dist/core/logging.js.map +1 -1
  85. package/dist/core/mcp/mcp-manager.d.ts.map +1 -1
  86. package/dist/core/mcp/mcp-manager.js +3 -3
  87. package/dist/core/mcp/mcp-manager.js.map +1 -1
  88. package/dist/core/model-registry.d.ts +1 -16
  89. package/dist/core/model-registry.d.ts.map +1 -1
  90. package/dist/core/model-registry.js +88 -196
  91. package/dist/core/model-registry.js.map +1 -1
  92. package/dist/core/model-resolver.d.ts +2 -19
  93. package/dist/core/model-resolver.d.ts.map +1 -1
  94. package/dist/core/model-resolver.js +36 -266
  95. package/dist/core/model-resolver.js.map +1 -1
  96. package/dist/core/provider-contracts.d.ts +5 -6
  97. package/dist/core/provider-contracts.d.ts.map +1 -1
  98. package/dist/core/provider-contracts.js +25 -36
  99. package/dist/core/provider-contracts.js.map +1 -1
  100. package/dist/core/provider-display-names.d.ts.map +1 -1
  101. package/dist/core/provider-display-names.js +0 -2
  102. package/dist/core/provider-display-names.js.map +1 -1
  103. package/dist/core/rlm-max-subagents.d.ts +32 -0
  104. package/dist/core/rlm-max-subagents.d.ts.map +1 -0
  105. package/dist/core/rlm-max-subagents.js +50 -0
  106. package/dist/core/rlm-max-subagents.js.map +1 -0
  107. package/dist/core/rlm-runtime.d.ts +3 -3
  108. package/dist/core/rlm-runtime.d.ts.map +1 -1
  109. package/dist/core/rlm-runtime.js.map +1 -1
  110. package/dist/core/sdk.d.ts +4 -3
  111. package/dist/core/sdk.d.ts.map +1 -1
  112. package/dist/core/sdk.js +27 -14
  113. package/dist/core/sdk.js.map +1 -1
  114. package/dist/core/settings-manager.d.ts +3 -16
  115. package/dist/core/settings-manager.d.ts.map +1 -1
  116. package/dist/core/settings-manager.js +12 -44
  117. package/dist/core/settings-manager.js.map +1 -1
  118. package/dist/core/slash-commands.d.ts.map +1 -1
  119. package/dist/core/slash-commands.js +6 -6
  120. package/dist/core/slash-commands.js.map +1 -1
  121. package/dist/index.d.ts +1 -1
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js.map +1 -1
  124. package/dist/installer.mjs +2 -3
  125. package/dist/main.d.ts.map +1 -1
  126. package/dist/main.js +39 -34
  127. package/dist/main.js.map +1 -1
  128. package/dist/modes/acp/acp-mode.d.ts.map +1 -1
  129. package/dist/modes/acp/acp-mode.js +1 -1
  130. package/dist/modes/acp/acp-mode.js.map +1 -1
  131. package/dist/modes/agent-connection/daemon-agent-connection.d.ts +6 -2
  132. package/dist/modes/agent-connection/daemon-agent-connection.d.ts.map +1 -1
  133. package/dist/modes/agent-connection/daemon-agent-connection.js +13 -2
  134. package/dist/modes/agent-connection/daemon-agent-connection.js.map +1 -1
  135. package/dist/modes/agent-connection/in-process-agent-connection.d.ts +2 -0
  136. package/dist/modes/agent-connection/in-process-agent-connection.d.ts.map +1 -1
  137. package/dist/modes/agent-connection/in-process-agent-connection.js +6 -0
  138. package/dist/modes/agent-connection/in-process-agent-connection.js.map +1 -1
  139. package/dist/modes/agent-connection/types.d.ts +3 -0
  140. package/dist/modes/agent-connection/types.d.ts.map +1 -1
  141. package/dist/modes/agent-connection/types.js.map +1 -1
  142. package/dist/modes/agents-view/agents-view-mode.d.ts.map +1 -1
  143. package/dist/modes/agents-view/agents-view-mode.js +2 -19
  144. package/dist/modes/agents-view/agents-view-mode.js.map +1 -1
  145. package/dist/modes/daemon/daemon-mode.d.ts +5 -0
  146. package/dist/modes/daemon/daemon-mode.d.ts.map +1 -1
  147. package/dist/modes/daemon/daemon-mode.js +107 -12
  148. package/dist/modes/daemon/daemon-mode.js.map +1 -1
  149. package/dist/modes/daemon/daemon-protocol.d.ts +194 -165
  150. package/dist/modes/daemon/daemon-protocol.d.ts.map +1 -1
  151. package/dist/modes/daemon/daemon-protocol.js +16 -11
  152. package/dist/modes/daemon/daemon-protocol.js.map +1 -1
  153. package/dist/modes/daemon/daemon-rlm-capacity-coordinator.d.ts +19 -0
  154. package/dist/modes/daemon/daemon-rlm-capacity-coordinator.d.ts.map +1 -0
  155. package/dist/modes/daemon/daemon-rlm-capacity-coordinator.js +74 -0
  156. package/dist/modes/daemon/daemon-rlm-capacity-coordinator.js.map +1 -0
  157. package/dist/modes/daemon/daemon-rlm-capacity.d.ts +19 -0
  158. package/dist/modes/daemon/daemon-rlm-capacity.d.ts.map +1 -0
  159. package/dist/modes/daemon/daemon-rlm-capacity.js +85 -0
  160. package/dist/modes/daemon/daemon-rlm-capacity.js.map +1 -0
  161. package/dist/modes/daemon/daemon-session-summarizer.d.ts +2 -3
  162. package/dist/modes/daemon/daemon-session-summarizer.d.ts.map +1 -1
  163. package/dist/modes/daemon/daemon-session-summarizer.js +32 -23
  164. package/dist/modes/daemon/daemon-session-summarizer.js.map +1 -1
  165. package/dist/modes/daemon/daemon-state-root.d.ts +15 -0
  166. package/dist/modes/daemon/daemon-state-root.d.ts.map +1 -0
  167. package/dist/modes/daemon/daemon-state-root.js +40 -0
  168. package/dist/modes/daemon/daemon-state-root.js.map +1 -0
  169. package/dist/modes/daemon/daemon-supervisor-ownership.d.ts +2 -0
  170. package/dist/modes/daemon/daemon-supervisor-ownership.d.ts.map +1 -1
  171. package/dist/modes/daemon/daemon-supervisor-ownership.js +27 -0
  172. package/dist/modes/daemon/daemon-supervisor-ownership.js.map +1 -1
  173. package/dist/modes/daemon/daemon-supervisor.d.ts +10 -1
  174. package/dist/modes/daemon/daemon-supervisor.d.ts.map +1 -1
  175. package/dist/modes/daemon/daemon-supervisor.js +213 -20
  176. package/dist/modes/daemon/daemon-supervisor.js.map +1 -1
  177. package/dist/modes/daemon/daemon-worker-protocol.d.ts +28 -1
  178. package/dist/modes/daemon/daemon-worker-protocol.d.ts.map +1 -1
  179. package/dist/modes/daemon/daemon-worker-protocol.js +16 -2
  180. package/dist/modes/daemon/daemon-worker-protocol.js.map +1 -1
  181. package/dist/modes/daemon/saved-session-catalog.d.ts.map +1 -1
  182. package/dist/modes/daemon/saved-session-catalog.js +2 -0
  183. package/dist/modes/daemon/saved-session-catalog.js.map +1 -1
  184. package/dist/modes/interactive/auth-flows.d.ts +0 -6
  185. package/dist/modes/interactive/auth-flows.d.ts.map +1 -1
  186. package/dist/modes/interactive/auth-flows.js +6 -126
  187. package/dist/modes/interactive/auth-flows.js.map +1 -1
  188. package/dist/modes/interactive/components/configuration-menu.d.ts +3 -0
  189. package/dist/modes/interactive/components/configuration-menu.d.ts.map +1 -1
  190. package/dist/modes/interactive/components/configuration-menu.js +13 -2
  191. package/dist/modes/interactive/components/configuration-menu.js.map +1 -1
  192. package/dist/modes/interactive/components/footer.d.ts +1 -1
  193. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  194. package/dist/modes/interactive/components/footer.js +2 -2
  195. package/dist/modes/interactive/components/footer.js.map +1 -1
  196. package/dist/modes/interactive/components/index.d.ts +0 -1
  197. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  198. package/dist/modes/interactive/components/index.js +0 -1
  199. package/dist/modes/interactive/components/index.js.map +1 -1
  200. package/dist/modes/interactive/components/login-dialog.d.ts +0 -1
  201. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  202. package/dist/modes/interactive/components/login-dialog.js +3 -40
  203. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  204. package/dist/modes/interactive/components/model-selector.d.ts +2 -0
  205. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  206. package/dist/modes/interactive/components/model-selector.js +13 -2
  207. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  208. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  209. package/dist/modes/interactive/components/oauth-selector.js +2 -11
  210. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  211. package/dist/modes/interactive/feature-hints.d.ts.map +1 -1
  212. package/dist/modes/interactive/feature-hints.js +0 -4
  213. package/dist/modes/interactive/feature-hints.js.map +1 -1
  214. package/dist/modes/interactive/interactive-mode.d.ts +3 -12
  215. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  216. package/dist/modes/interactive/interactive-mode.js +81 -507
  217. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  218. package/dist/modes/interactive/onboarding.d.ts +0 -3
  219. package/dist/modes/interactive/onboarding.d.ts.map +1 -1
  220. package/dist/modes/interactive/onboarding.js +0 -17
  221. package/dist/modes/interactive/onboarding.js.map +1 -1
  222. package/dist/modes/rpc/rpc-client.d.ts +4 -1
  223. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  224. package/dist/modes/rpc/rpc-client.js +82 -42
  225. package/dist/modes/rpc/rpc-client.js.map +1 -1
  226. package/dist/node/amazon-bedrock.d.ts +2 -0
  227. package/dist/node/amazon-bedrock.d.ts.map +1 -0
  228. package/dist/node/amazon-bedrock.js +6 -0
  229. package/dist/node/amazon-bedrock.js.map +1 -0
  230. package/dist/product-identity.d.ts +0 -1
  231. package/dist/product-identity.d.ts.map +1 -1
  232. package/dist/product-identity.js +0 -1
  233. package/dist/product-identity.js.map +1 -1
  234. package/docs/development.md +1 -1
  235. package/docs/fork-philosophy.md +4 -8
  236. package/docs/installation.md +83 -62
  237. package/docs/providers.md +23 -25
  238. package/docs/quickstart.md +19 -10
  239. package/docs/rlm-runtime.md +13 -5
  240. package/docs/rpc.md +4 -4
  241. package/docs/sdk.md +20 -11
  242. package/docs/sessions.md +0 -1
  243. package/docs/settings.md +9 -42
  244. package/docs/skills.md +0 -1
  245. package/docs/upstream-0.9.5.md +171 -0
  246. package/docs/usage.md +14 -10
  247. package/package.json +4 -4
  248. package/dist/core/agent-traces.d.ts +0 -149
  249. package/dist/core/agent-traces.d.ts.map +0 -1
  250. package/dist/core/agent-traces.js +0 -904
  251. package/dist/core/agent-traces.js.map +0 -1
  252. package/dist/core/prime-inference-auth.d.ts +0 -70
  253. package/dist/core/prime-inference-auth.d.ts.map +0 -1
  254. package/dist/core/prime-inference-auth.js +0 -352
  255. package/dist/core/prime-inference-auth.js.map +0 -1
  256. package/dist/core/prime-inference-model-selection.d.ts +0 -16
  257. package/dist/core/prime-inference-model-selection.d.ts.map +0 -1
  258. package/dist/core/prime-inference-model-selection.js +0 -16
  259. package/dist/core/prime-inference-model-selection.js.map +0 -1
  260. package/dist/core/prime-inference-models.d.ts +0 -6
  261. package/dist/core/prime-inference-models.d.ts.map +0 -1
  262. package/dist/core/prime-inference-models.js +0 -62
  263. package/dist/core/prime-inference-models.js.map +0 -1
  264. package/dist/core/telemetry.d.ts +0 -95
  265. package/dist/core/telemetry.d.ts.map +0 -1
  266. package/dist/core/telemetry.js +0 -637
  267. package/dist/core/telemetry.js.map +0 -1
  268. package/dist/modes/interactive/components/prime-onboarding-splash.d.ts +0 -39
  269. package/dist/modes/interactive/components/prime-onboarding-splash.d.ts.map +0 -1
  270. package/dist/modes/interactive/components/prime-onboarding-splash.js +0 -286
  271. package/dist/modes/interactive/components/prime-onboarding-splash.js.map +0 -1
  272. package/dist/modes/interactive/components/prime-team-selector.d.ts +0 -30
  273. package/dist/modes/interactive/components/prime-team-selector.d.ts.map +0 -1
  274. package/dist/modes/interactive/components/prime-team-selector.js +0 -166
  275. package/dist/modes/interactive/components/prime-team-selector.js.map +0 -1
  276. package/dist/skills/prime-intellect/SKILL.md +0 -87
  277. package/dist/skills/prime-intellect/references/compute.md +0 -45
  278. package/dist/skills/prime-intellect/references/environments.md +0 -73
  279. package/dist/skills/prime-intellect/references/inference.md +0 -47
  280. package/dist/skills/prime-intellect/references/sandboxes.md +0 -75
  281. package/skills/prime-intellect/SKILL.md +0 -87
  282. package/skills/prime-intellect/references/compute.md +0 -45
  283. package/skills/prime-intellect/references/environments.md +0 -73
  284. package/skills/prime-intellect/references/inference.md +0 -47
  285. 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-73DCPU3D.js";
8
+ } from "./chunk-IADCPVEI.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-A53O363M.js";
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-SC5KG5R4.js";
17
- import "./chunk-IW77OXFS.js";
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-XKOW2BV6.js")
42
+ import("./main-SV7JLVEB.js")
41
43
  ]);
42
44
  setGlobalDispatcher(new EnvHttpProxyAgent({ bodyTimeout: 0, headersTimeout: 0 }));
43
45
  try {
@@ -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-A53O363M.js";
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-O4X7GFGY.js");
55
+ const { runCli } = await import("./cli-main-4DS7Y3PI.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-UDSW6FNG.js";
13
+ } from "./chunk-KTNETTHI.js";
17
14
  import {
18
15
  buildBaseOptions,
19
16
  sanitizeSurrogates
20
- } from "./chunk-MZHTNNVA.js";
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-IW77OXFS.js";
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-UDSW6FNG.js";
15
+ } from "./chunk-KTNETTHI.js";
16
16
  import {
17
17
  buildBaseOptions,
18
18
  sanitizeSurrogates
19
- } from "./chunk-MZHTNNVA.js";
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-IW77OXFS.js";
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-BYVP7LWV.js";
21
- import "./chunk-73DCPU3D.js";
20
+ } from "./chunk-44PEHPOG.js";
21
+ import "./chunk-IADCPVEI.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-A53O363M.js";
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-SC5KG5R4.js";
30
- import "./chunk-IW77OXFS.js";
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-MZHTNNVA.js";
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-IW77OXFS.js";
48
+ } from "./chunk-W46VZFI6.js";
49
49
  import "./chunk-BAWSWWEU.js";
50
50
 
51
51
  // ../../node_modules/@mistralai/mistralai/esm/lib/url.js
@@ -8,18 +8,18 @@ import {
8
8
  convertResponsesTools,
9
9
  observeResponsesEvent,
10
10
  processResponsesStream
11
- } from "./chunk-U7AUVG3B.js";
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-MZHTNNVA.js";
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-IW77OXFS.js";
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-MZHTNNVA.js";
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-IW77OXFS.js";
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
- if (!process.env.OPENAI_API_KEY) {
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 isPrimeInference = provider === "prime-inference" || baseUrl.includes("api.pinference.ai");
1100
- 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 || isPrimeInference;
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 && (provider === "openrouter" || isPrimeInference) ? "anthropic" : void 0;
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 && !isPrimeInference,
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-U7AUVG3B.js";
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-MZHTNNVA.js";
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-IW77OXFS.js";
35
+ } from "./chunk-W46VZFI6.js";
36
36
  import "./chunk-BAWSWWEU.js";
37
37
 
38
38
  // ../ai/src/providers/openai-responses.ts
@@ -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":"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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/** 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"]}