@abot-ai/runtime 1.8.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (769) hide show
  1. package/README.md +5 -1
  2. package/dist/scripts/add-runtime-model.js +11 -5
  3. package/dist/scripts/init-runtime.js +15 -10
  4. package/dist/scripts/runtime-model-addition.js +6 -1
  5. package/dist/scripts/runtime-setup-command-options.d.ts +11 -0
  6. package/dist/scripts/runtime-setup-command-options.js +41 -0
  7. package/dist/scripts/runtime-setup-files.d.ts +3 -2
  8. package/dist/scripts/runtime-setup-files.js +63 -4
  9. package/dist/scripts/runtime-setup-model-options.d.ts +8 -0
  10. package/dist/scripts/runtime-setup-model-options.js +40 -0
  11. package/dist/scripts/runtime-setup-presentation.js +2 -2
  12. package/dist/scripts/runtime-setup-provider-options.d.ts +4 -0
  13. package/dist/scripts/runtime-setup-provider-options.js +20 -0
  14. package/dist/src/model-gateway/client/chat.js +9 -5
  15. package/dist/src/model-gateway/client/contracts.d.ts +3 -0
  16. package/dist/src/model-gateway/client/input-token-count.js +36 -16
  17. package/dist/src/model-gateway/client/invocation-error.d.ts +9 -0
  18. package/dist/src/model-gateway/client/invocation-error.js +30 -0
  19. package/dist/src/model-gateway/client/message-projection.d.ts +2 -0
  20. package/dist/src/model-gateway/client/message-projection.js +1 -0
  21. package/dist/src/model-gateway/client/options.js +1 -1
  22. package/dist/src/model-gateway/client/raw.js +1 -0
  23. package/dist/src/model-gateway/client/stream-consumer.js +9 -2
  24. package/dist/src/model-gateway/client/stream-parser.js +2 -1
  25. package/dist/src/model-gateway/index.d.ts +1 -1
  26. package/dist/src/model-gateway/observability/input-token-count-diagnostics.d.ts +26 -0
  27. package/dist/src/model-gateway/observability/input-token-count-diagnostics.js +178 -0
  28. package/dist/src/model-gateway/policy/invocation-policy.d.ts +1 -3
  29. package/dist/src/model-gateway/policy/invocation-policy.js +3 -30
  30. package/dist/src/model-gateway/policy/reasoning-mode-budget.d.ts +5 -0
  31. package/dist/src/model-gateway/policy/reasoning-mode-budget.js +13 -0
  32. package/dist/src/model-gateway/policy/reasoning-policy.d.ts +10 -0
  33. package/dist/src/model-gateway/policy/reasoning-policy.js +124 -0
  34. package/dist/src/model-gateway/protocol/openai-embedding-response.d.ts +1 -0
  35. package/dist/src/model-gateway/protocol/openai-embedding-response.js +28 -0
  36. package/dist/src/model-gateway/protocol/sse-data.d.ts +9 -0
  37. package/dist/src/model-gateway/protocol/sse-data.js +67 -0
  38. package/dist/src/model-gateway/providers/envelope-budget.js +10 -1
  39. package/dist/src/model-gateway/providers/llamacpp/adapter.d.ts +2 -0
  40. package/dist/src/model-gateway/providers/llamacpp/adapter.js +79 -0
  41. package/dist/src/model-gateway/providers/llamacpp/connection.d.ts +9 -0
  42. package/dist/src/model-gateway/providers/llamacpp/connection.js +73 -0
  43. package/dist/src/model-gateway/providers/llamacpp/diagnostics.d.ts +2 -0
  44. package/dist/src/model-gateway/providers/llamacpp/diagnostics.js +17 -0
  45. package/dist/src/model-gateway/providers/llamacpp/embeddings.d.ts +2 -0
  46. package/dist/src/model-gateway/providers/llamacpp/embeddings.js +56 -0
  47. package/dist/src/model-gateway/providers/llamacpp/input-token-count.d.ts +3 -0
  48. package/dist/src/model-gateway/providers/llamacpp/input-token-count.js +59 -0
  49. package/dist/src/model-gateway/providers/llamacpp/message-projection.d.ts +2 -0
  50. package/dist/src/model-gateway/providers/llamacpp/message-projection.js +33 -0
  51. package/dist/src/model-gateway/providers/llamacpp/payload.d.ts +2 -0
  52. package/dist/src/model-gateway/providers/llamacpp/payload.js +44 -0
  53. package/dist/src/model-gateway/providers/llamacpp/response-lifetime.d.ts +1 -0
  54. package/dist/src/model-gateway/providers/llamacpp/response-lifetime.js +56 -0
  55. package/dist/src/model-gateway/providers/llamacpp/schema-format.d.ts +2 -0
  56. package/dist/src/model-gateway/providers/llamacpp/schema-format.js +29 -0
  57. package/dist/src/model-gateway/providers/llamacpp/settings.d.ts +9 -0
  58. package/dist/src/model-gateway/providers/llamacpp/settings.js +25 -0
  59. package/dist/src/model-gateway/providers/llamacpp/stream-normalizer.d.ts +10 -0
  60. package/dist/src/model-gateway/providers/llamacpp/stream-normalizer.js +85 -0
  61. package/dist/src/model-gateway/providers/llamacpp/stream.d.ts +9 -0
  62. package/dist/src/model-gateway/providers/llamacpp/stream.js +33 -0
  63. package/dist/src/model-gateway/providers/openai/embeddings.js +2 -29
  64. package/dist/src/model-gateway/providers/openai/sse-data.d.ts +1 -9
  65. package/dist/src/model-gateway/providers/openai/sse-data.js +1 -67
  66. package/dist/src/model-gateway/providers/registry.js +2 -0
  67. package/dist/src/model-gateway/server/input-token-count-handler.js +10 -1
  68. package/dist/src/model-gateway/types.d.ts +11 -1
  69. package/dist/src/runtime/adapters/long-term-memory/onboarding-provider-availability.d.ts +4 -0
  70. package/dist/src/runtime/adapters/long-term-memory/onboarding-provider-availability.js +11 -0
  71. package/dist/src/runtime/adapters/long-term-memory/onboarding-service.js +28 -1
  72. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.d.ts +5 -1
  73. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.js +15 -1
  74. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-execution.js +7 -5
  75. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-snapshot.js +9 -2
  76. package/dist/src/runtime/adapters/registered-tool-payload-related-artifacts.d.ts +1 -0
  77. package/dist/src/runtime/adapters/registered-tool-payload-related-artifacts.js +6 -1
  78. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/contracts.d.ts +1 -0
  79. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/execution.d.ts +1 -0
  80. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/execution.js +2 -0
  81. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.d.ts +1 -0
  82. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.js +2 -0
  83. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.d.ts +1 -0
  84. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.js +1 -0
  85. package/dist/src/runtime/adapters/registered-tool-worker-capabilities.js +1 -0
  86. package/dist/src/runtime/adapters/scheduler-runtime.js +2 -0
  87. package/dist/src/runtime/automations/agent-step-executor.js +1 -0
  88. package/dist/src/runtime/automations/catalog.d.ts +3 -0
  89. package/dist/src/runtime/automations/catalog.js +2 -0
  90. package/dist/src/runtime/automations/definition-contracts.d.ts +2 -0
  91. package/dist/src/runtime/automations/definition-input.js +3 -1
  92. package/dist/src/runtime/automations/draft-mutations.js +5 -1
  93. package/dist/src/runtime/automations/model-dependency-projection.d.ts +3 -1
  94. package/dist/src/runtime/automations/model-dependency-projection.js +4 -2
  95. package/dist/src/runtime/automations/publication-validation.js +7 -0
  96. package/dist/src/runtime/automations/saved-agent-management.js +1 -0
  97. package/dist/src/runtime/automations/service.d.ts +4 -1
  98. package/dist/src/runtime/capabilities/automation-builder/payload-schema.js +7 -5
  99. package/dist/src/runtime/capabilities/automation-builder/tool-module.js +4 -4
  100. package/dist/src/runtime/capabilities/automations/authoring-catalog.d.ts +9 -0
  101. package/dist/src/runtime/capabilities/automations/authoring-catalog.js +1 -0
  102. package/dist/src/runtime/capabilities/automations/authoring-preparation.d.ts +3 -0
  103. package/dist/src/runtime/capabilities/automations/draft-index.d.ts +1 -1
  104. package/dist/src/runtime/capabilities/automations/tool-contract.js +3 -2
  105. package/dist/src/runtime/capabilities/automations/tool-module.js +20 -11
  106. package/dist/src/runtime/capabilities/core-tool-contracts.d.ts +29 -0
  107. package/dist/src/runtime/capabilities/core-tool-contracts.js +38 -0
  108. package/dist/src/runtime/capabilities/knowledge-skills/read-many.d.ts +4 -0
  109. package/dist/src/runtime/capabilities/knowledge-skills/read-many.js +21 -0
  110. package/dist/src/runtime/capabilities/knowledge-skills/read-targets.d.ts +13 -0
  111. package/dist/src/runtime/capabilities/knowledge-skills/read-targets.js +44 -0
  112. package/dist/src/runtime/capabilities/knowledge-skills/tool-contract.d.ts +141 -0
  113. package/dist/src/runtime/capabilities/knowledge-skills/tool-contract.js +58 -0
  114. package/dist/src/runtime/capabilities/knowledge-skills/tool-module.d.ts +4 -0
  115. package/dist/src/runtime/capabilities/knowledge-skills/tool-module.js +78 -0
  116. package/dist/src/runtime/capabilities/knowledge-skills/tool-output.d.ts +12 -0
  117. package/dist/src/runtime/capabilities/knowledge-skills/tool-output.js +21 -0
  118. package/dist/src/runtime/capabilities/knowledge-skills/write-contract.d.ts +77 -0
  119. package/dist/src/runtime/capabilities/knowledge-skills/write-contract.js +28 -0
  120. package/dist/src/runtime/capabilities/knowledge-skills/write-operations.d.ts +3 -0
  121. package/dist/src/runtime/capabilities/knowledge-skills/write-operations.js +34 -0
  122. package/dist/src/runtime/capabilities/model-reasoning-controls.d.ts +23 -0
  123. package/dist/src/runtime/capabilities/model-reasoning-controls.js +56 -0
  124. package/dist/src/runtime/capabilities/scheduling/create-operations.js +2 -0
  125. package/dist/src/runtime/capabilities/scheduling/job-list-page.d.ts +1 -0
  126. package/dist/src/runtime/capabilities/scheduling/tool-module.js +8 -5
  127. package/dist/src/runtime/capabilities/scheduling/update-operations.js +2 -0
  128. package/dist/src/runtime/composition.d.ts +5 -0
  129. package/dist/src/runtime/config/builders.js +6 -0
  130. package/dist/src/runtime/config/effective-model-config-validation.js +4 -0
  131. package/dist/src/runtime/config/llamacpp-profile-validation.d.ts +3 -0
  132. package/dist/src/runtime/config/llamacpp-profile-validation.js +15 -0
  133. package/dist/src/runtime/config/model-reasoning-schema.d.ts +40 -0
  134. package/dist/src/runtime/config/model-reasoning-schema.js +38 -0
  135. package/dist/src/runtime/config/model-reasoning-validation.d.ts +3 -0
  136. package/dist/src/runtime/config/model-reasoning-validation.js +37 -0
  137. package/dist/src/runtime/config/runner/step-instructions.d.ts +4 -0
  138. package/dist/src/runtime/config/runner/step-instructions.js +10 -6
  139. package/dist/src/runtime/config/schema.js +3 -0
  140. package/dist/src/runtime/config/validation/model-invocation-config-validation.js +14 -0
  141. package/dist/src/runtime/context/capability-result-compaction-source.d.ts +3 -1
  142. package/dist/src/runtime/context/capability-result-compaction-source.js +13 -1
  143. package/dist/src/runtime/context/compacted-capability-result-receipt.d.ts +2 -0
  144. package/dist/src/runtime/context/compacted-capability-result-receipt.js +8 -7
  145. package/dist/src/runtime/context/core-skill-read-context.d.ts +16 -0
  146. package/dist/src/runtime/context/core-skill-read-context.js +76 -0
  147. package/dist/src/runtime/context/exact-evidence-match.d.ts +3 -0
  148. package/dist/src/runtime/context/exact-evidence-match.js +34 -0
  149. package/dist/src/runtime/context/execution-compacted-evidence.d.ts +4 -0
  150. package/dist/src/runtime/context/execution-compacted-evidence.js +2 -23
  151. package/dist/src/runtime/context/execution-compaction-checkpoint-selection.d.ts +19 -0
  152. package/dist/src/runtime/context/execution-compaction-checkpoint-selection.js +104 -0
  153. package/dist/src/runtime/context/model-step-compaction-inheritance.d.ts +12 -0
  154. package/dist/src/runtime/context/model-step-compaction-inheritance.js +28 -0
  155. package/dist/src/runtime/context/model-step-compaction-projection.d.ts +12 -0
  156. package/dist/src/runtime/context/model-step-compaction-projection.js +322 -0
  157. package/dist/src/runtime/context/model-step-compaction.d.ts +2 -1
  158. package/dist/src/runtime/context/model-step-compaction.js +27 -304
  159. package/dist/src/runtime/context/operation-supervision-compacted-evidence.js +7 -1
  160. package/dist/src/runtime/context/request-context.d.ts +2 -0
  161. package/dist/src/runtime/context/request-context.js +16 -0
  162. package/dist/src/runtime/context/request-tool-results-checkpoint.d.ts +2 -1
  163. package/dist/src/runtime/context/request-tool-results-checkpoint.js +35 -6
  164. package/dist/src/runtime/context/request-tool-results.js +3 -1
  165. package/dist/src/runtime/context/semantic-compaction/checkpoint-message.d.ts +5 -1
  166. package/dist/src/runtime/context/semantic-compaction/checkpoint-message.js +10 -4
  167. package/dist/src/runtime/context/semantic-compaction/core-skill-read-source.d.ts +9 -0
  168. package/dist/src/runtime/context/semantic-compaction/core-skill-read-source.js +38 -0
  169. package/dist/src/runtime/context/semantic-compaction/execution-evidence-instructions.d.ts +4 -0
  170. package/dist/src/runtime/context/semantic-compaction/execution-evidence-instructions.js +38 -0
  171. package/dist/src/runtime/context/semantic-compaction/generation-contracts.d.ts +5 -1
  172. package/dist/src/runtime/context/semantic-compaction/generation-input.js +15 -10
  173. package/dist/src/runtime/context/semantic-compaction/inherited-source-digests.d.ts +8 -0
  174. package/dist/src/runtime/context/semantic-compaction/inherited-source-digests.js +76 -0
  175. package/dist/src/runtime/context/semantic-compaction/prompt.js +7 -7
  176. package/dist/src/runtime/context/semantic-compaction/replacement-budget.js +3 -1
  177. package/dist/src/runtime/context/semantic-compaction/run.js +16 -15
  178. package/dist/src/runtime/context/semantic-compaction/super-source-integrity.js +33 -3
  179. package/dist/src/runtime/context/session-artifact-paths.d.ts +2 -1
  180. package/dist/src/runtime/context/session-artifact-paths.js +2 -1
  181. package/dist/src/runtime/context/session-memory/model-step-controller.d.ts +2 -2
  182. package/dist/src/runtime/context/super-worker-compaction-failure.d.ts +1 -1
  183. package/dist/src/runtime/context/super-worker-compaction-failure.js +2 -1
  184. package/dist/src/runtime/context/super-worker-compaction-sidecar.d.ts +2 -1
  185. package/dist/src/runtime/context/super-worker-compaction-sidecar.js +9 -3
  186. package/dist/src/runtime/default-environment-adapters.d.ts +2 -1
  187. package/dist/src/runtime/default-environment-adapters.js +5 -1
  188. package/dist/src/runtime/knowledge-skills/available-skills-projection.d.ts +17 -0
  189. package/dist/src/runtime/knowledge-skills/available-skills-projection.js +66 -0
  190. package/dist/src/runtime/knowledge-skills/available-skills.d.ts +7 -0
  191. package/dist/src/runtime/knowledge-skills/available-skills.js +17 -0
  192. package/dist/src/runtime/knowledge-skills/builtins/abot-studio.d.ts +2 -0
  193. package/dist/src/runtime/knowledge-skills/builtins/abot-studio.js +27 -0
  194. package/dist/src/runtime/knowledge-skills/builtins/computer-use.d.ts +2 -0
  195. package/dist/src/runtime/knowledge-skills/builtins/computer-use.js +34 -0
  196. package/dist/src/runtime/knowledge-skills/builtins/skill-creator.d.ts +2 -0
  197. package/dist/src/runtime/knowledge-skills/builtins/skill-creator.js +29 -0
  198. package/dist/src/runtime/knowledge-skills/builtins/technical-work.d.ts +2 -0
  199. package/dist/src/runtime/knowledge-skills/builtins/technical-work.js +45 -0
  200. package/dist/src/runtime/knowledge-skills/builtins/what-can-i-do.d.ts +2 -0
  201. package/dist/src/runtime/knowledge-skills/builtins/what-can-i-do.js +27 -0
  202. package/dist/src/runtime/knowledge-skills/catalog.d.ts +2 -0
  203. package/dist/src/runtime/knowledge-skills/catalog.js +14 -0
  204. package/dist/src/runtime/knowledge-skills/personal-contracts.d.ts +48 -0
  205. package/dist/src/runtime/knowledge-skills/personal-contracts.js +29 -0
  206. package/dist/src/runtime/knowledge-skills/personal-documents.d.ts +6 -0
  207. package/dist/src/runtime/knowledge-skills/personal-documents.js +56 -0
  208. package/dist/src/runtime/knowledge-skills/personal-management.d.ts +9 -0
  209. package/dist/src/runtime/knowledge-skills/personal-management.js +64 -0
  210. package/dist/src/runtime/knowledge-skills/personal-repository.d.ts +6 -0
  211. package/dist/src/runtime/knowledge-skills/personal-repository.js +76 -0
  212. package/dist/src/runtime/knowledge-skills/personal-store.d.ts +4 -0
  213. package/dist/src/runtime/knowledge-skills/personal-store.js +33 -0
  214. package/dist/src/runtime/knowledge-skills/read-evidence.d.ts +3 -0
  215. package/dist/src/runtime/knowledge-skills/read-evidence.js +13 -0
  216. package/dist/src/runtime/knowledge-skills/store.d.ts +19 -0
  217. package/dist/src/runtime/knowledge-skills/store.js +41 -0
  218. package/dist/src/runtime/local-application.d.ts +7 -1
  219. package/dist/src/runtime/local-host/app-service-dispatch.d.ts +2 -1
  220. package/dist/src/runtime/local-host/app-service-dispatch.js +7 -0
  221. package/dist/src/runtime/local-host/client-services.d.ts +8 -1
  222. package/dist/src/runtime/local-host/client-services.js +3 -2
  223. package/dist/src/runtime/local-host/saved-approvals.js +1 -0
  224. package/dist/src/runtime/long-term-memory/conversation-authoring/context.d.ts +1 -0
  225. package/dist/src/runtime/long-term-memory/conversation-authoring/context.js +1 -1
  226. package/dist/src/runtime/long-term-memory/conversation-authoring/plain-text-context.d.ts +5 -0
  227. package/dist/src/runtime/long-term-memory/conversation-authoring/plain-text-context.js +28 -0
  228. package/dist/src/runtime/long-term-memory/initial-context.d.ts +1 -0
  229. package/dist/src/runtime/long-term-memory/onboarding/configuration.js +5 -7
  230. package/dist/src/runtime/long-term-memory/onboarding/contracts.d.ts +26 -0
  231. package/dist/src/runtime/long-term-memory/onboarding/embedding-profile-id.d.ts +1 -0
  232. package/dist/src/runtime/long-term-memory/onboarding/embedding-profile-id.js +8 -0
  233. package/dist/src/runtime/long-term-memory/onboarding/saved-profiles.d.ts +17 -0
  234. package/dist/src/runtime/long-term-memory/onboarding/saved-profiles.js +77 -0
  235. package/dist/src/runtime/long-term-memory/onboarding/service.js +40 -10
  236. package/dist/src/runtime/model/context-compaction-admission.d.ts +1 -0
  237. package/dist/src/runtime/model/context-compaction-admission.js +35 -1
  238. package/dist/src/runtime/model/context-compaction-contracts.d.ts +9 -1
  239. package/dist/src/runtime/model/input-token-count.js +1 -0
  240. package/dist/src/runtime/model/invoke-step.js +18 -2
  241. package/dist/src/runtime/model/invoke-structured-step.d.ts +4 -1
  242. package/dist/src/runtime/model/invoke-structured-step.js +4 -0
  243. package/dist/src/runtime/model/model-catalog.d.ts +3 -0
  244. package/dist/src/runtime/model/model-catalog.js +2 -0
  245. package/dist/src/runtime/model/model-context-budget.d.ts +5 -0
  246. package/dist/src/runtime/model/model-context-budget.js +2 -0
  247. package/dist/src/runtime/model/model-step-port.d.ts +7 -0
  248. package/dist/src/runtime/model/optional-context-admission.d.ts +18 -0
  249. package/dist/src/runtime/model/optional-context-admission.js +23 -0
  250. package/dist/src/runtime/model/provider-failure.d.ts +13 -0
  251. package/dist/src/runtime/model/provider-failure.js +37 -0
  252. package/dist/src/runtime/orchestration/role-calls/activation-budget.js +1 -0
  253. package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +2 -0
  254. package/dist/src/runtime/orchestration/role-calls/checkpoint-state.js +2 -1
  255. package/dist/src/runtime/orchestration/role-calls/command-decoder.js +3 -0
  256. package/dist/src/runtime/orchestration/role-calls/command-dispatch/skill-read-transition.d.ts +4 -0
  257. package/dist/src/runtime/orchestration/role-calls/command-dispatch/skill-read-transition.js +48 -0
  258. package/dist/src/runtime/orchestration/role-calls/command-dispatch.js +3 -0
  259. package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +6 -3
  260. package/dist/src/runtime/orchestration/role-calls/contracts.js +3 -3
  261. package/dist/src/runtime/orchestration/role-calls/skill-read.d.ts +47 -0
  262. package/dist/src/runtime/orchestration/role-calls/skill-read.js +196 -0
  263. package/dist/src/runtime/orchestration/role-executors/activation/model-output-failure.d.ts +1 -1
  264. package/dist/src/runtime/orchestration/role-executors/activation/model-output-failure.js +4 -2
  265. package/dist/src/runtime/orchestration/worker-capabilities/binding/create-binding.js +4 -1
  266. package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +1 -1
  267. package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +1 -1
  268. package/dist/src/runtime/orchestration/worker-capabilities/execution/approval-group.js +5 -3
  269. package/dist/src/runtime/orchestration/worker-capabilities/payload-compaction-transport.d.ts +2 -0
  270. package/dist/src/runtime/orchestration/worker-capabilities/payload-compaction-transport.js +7 -2
  271. package/dist/src/runtime/orchestration/worker-capabilities/supervisor-skill-authority.d.ts +19 -0
  272. package/dist/src/runtime/orchestration/worker-capabilities/supervisor-skill-authority.js +43 -0
  273. package/dist/src/runtime/plugins/loader.js +7 -6
  274. package/dist/src/runtime/ports.d.ts +3 -1
  275. package/dist/src/runtime/projects/contracts.d.ts +6 -0
  276. package/dist/src/runtime/projects/registry-format.d.ts +3 -0
  277. package/dist/src/runtime/projects/registry-format.js +50 -0
  278. package/dist/src/runtime/projects/repository.d.ts +6 -3
  279. package/dist/src/runtime/projects/repository.js +26 -19
  280. package/dist/src/runtime/projects/service.js +11 -0
  281. package/dist/src/runtime/request/approval-wait/preflight.js +2 -0
  282. package/dist/src/runtime/request/approval-wait/snapshot.d.ts +1 -1
  283. package/dist/src/runtime/request/approval-wait/snapshot.js +1 -0
  284. package/dist/src/runtime/request/bound-runtime-handler.js +1 -0
  285. package/dist/src/runtime/request/contracts.d.ts +7 -1
  286. package/dist/src/runtime/request/execution-facets.js +2 -0
  287. package/dist/src/runtime/request/execution-payload-artifact-policy.d.ts +3 -0
  288. package/dist/src/runtime/request/execution-payload-artifact-policy.js +6 -0
  289. package/dist/src/runtime/request/execution-payload-compacted-evidence.d.ts +2 -2
  290. package/dist/src/runtime/request/execution-payload-compacted-evidence.js +1 -0
  291. package/dist/src/runtime/request/execution-scope-surfaces.d.ts +4 -0
  292. package/dist/src/runtime/request/execution-scope-surfaces.js +10 -0
  293. package/dist/src/runtime/request/execution-scope.d.ts +8 -2
  294. package/dist/src/runtime/request/execution-scope.js +13 -0
  295. package/dist/src/runtime/request/input.d.ts +1 -0
  296. package/dist/src/runtime/request/input.js +1 -0
  297. package/dist/src/runtime/request/payload-settled-evidence.d.ts +11 -0
  298. package/dist/src/runtime/request/payload-settled-evidence.js +29 -0
  299. package/dist/src/runtime/request/prepared-execution.d.ts +1 -0
  300. package/dist/src/runtime/request/prepared-execution.js +5 -0
  301. package/dist/src/runtime/request/reasoning-preference.d.ts +10 -0
  302. package/dist/src/runtime/request/reasoning-preference.js +29 -0
  303. package/dist/src/runtime/request/role-call-delegation-events.d.ts +19 -0
  304. package/dist/src/runtime/request/role-call-delegation-events.js +52 -0
  305. package/dist/src/runtime/request/role-call-return-events.d.ts +19 -0
  306. package/dist/src/runtime/request/role-call-return-events.js +63 -0
  307. package/dist/src/runtime/request/role-executor-composition.js +2 -2
  308. package/dist/src/runtime/request/root-capability-binding.d.ts +24 -0
  309. package/dist/src/runtime/request/root-capability-binding.js +57 -0
  310. package/dist/src/runtime/request/root-capability-catalog.d.ts +16 -0
  311. package/dist/src/runtime/request/root-capability-catalog.js +20 -0
  312. package/dist/src/runtime/request/root-contract.d.ts +11 -1
  313. package/dist/src/runtime/request/root-execution-kernel.js +35 -68
  314. package/dist/src/runtime/request/root-reference-action.d.ts +15 -0
  315. package/dist/src/runtime/request/root-reference-action.js +48 -0
  316. package/dist/src/runtime/request/root-skill-read-admission.d.ts +4 -0
  317. package/dist/src/runtime/request/root-skill-read-admission.js +14 -0
  318. package/dist/src/runtime/request/root-skill-read.d.ts +13 -0
  319. package/dist/src/runtime/request/root-skill-read.js +110 -0
  320. package/dist/src/runtime/request/runner.js +10 -0
  321. package/dist/src/runtime/request/super-payload-context-failure.js +13 -4
  322. package/dist/src/runtime/request/supervisor-root-execution.js +48 -1
  323. package/dist/src/runtime/request/supervisor-skill-edit-target.d.ts +9 -0
  324. package/dist/src/runtime/request/supervisor-skill-edit-target.js +25 -0
  325. package/dist/src/runtime/request/supervisor-skill-payload-context.d.ts +21 -0
  326. package/dist/src/runtime/request/supervisor-skill-payload-context.js +91 -0
  327. package/dist/src/runtime/request/supervisor-skill-selection-window.d.ts +16 -0
  328. package/dist/src/runtime/request/supervisor-skill-selection-window.js +17 -0
  329. package/dist/src/runtime/request/supervisor-skill-write-preparation.d.ts +25 -0
  330. package/dist/src/runtime/request/supervisor-skill-write-preparation.js +71 -0
  331. package/dist/src/runtime/request/worker-capability-composition.d.ts +4 -1
  332. package/dist/src/runtime/request/worker-capability-composition.js +6 -1
  333. package/dist/src/runtime/request/worker-capability-payload.d.ts +1 -1
  334. package/dist/src/runtime/request/worker-capability-payload.js +44 -37
  335. package/dist/src/runtime/runtime-environment.d.ts +2 -0
  336. package/dist/src/runtime/runtime-environment.js +12 -1
  337. package/dist/src/runtime/scheduler/contracts.d.ts +11 -1
  338. package/dist/src/runtime/scheduler/job-management.js +7 -1
  339. package/dist/src/runtime/scheduler/run-list-filter.d.ts +11 -0
  340. package/dist/src/runtime/scheduler/run-list-filter.js +56 -0
  341. package/dist/src/runtime/scheduler/run-list-query.d.ts +2 -2
  342. package/dist/src/runtime/scheduler/run-list-query.js +4 -1
  343. package/dist/src/runtime/scheduler/run-records.js +2 -0
  344. package/dist/src/runtime/scheduler/schedule-validation.js +2 -0
  345. package/dist/src/runtime/scheduler/scheduler-engine.js +1 -0
  346. package/dist/src/runtime/scheduler/snapshot-validation.js +2 -0
  347. package/dist/src/runtime/steps/auditor-decision/contracts.d.ts +2 -0
  348. package/dist/src/runtime/steps/auditor-decision/evidence-representation.d.ts +2 -2
  349. package/dist/src/runtime/steps/auditor-decision/evidence-representation.js +2 -34
  350. package/dist/src/runtime/steps/auditor-decision/input.js +21 -3
  351. package/dist/src/runtime/steps/auditor-decision/projection.js +7 -0
  352. package/dist/src/runtime/steps/auditor-decision/prompt.d.ts +1 -1
  353. package/dist/src/runtime/steps/auditor-decision/prompt.js +14 -3
  354. package/dist/src/runtime/steps/capability-execution-guidance.d.ts +7 -0
  355. package/dist/src/runtime/steps/capability-execution-guidance.js +28 -0
  356. package/dist/src/runtime/steps/capability-execution-instructions.d.ts +0 -2
  357. package/dist/src/runtime/steps/capability-execution-instructions.js +0 -2
  358. package/dist/src/runtime/steps/execution-agent/capability-controls-partition.d.ts +9 -0
  359. package/dist/src/runtime/steps/execution-agent/capability-controls-partition.js +29 -0
  360. package/dist/src/runtime/steps/execution-agent/capability-result-context.d.ts +5 -2
  361. package/dist/src/runtime/steps/execution-agent/capability-result-context.js +22 -3
  362. package/dist/src/runtime/steps/execution-agent/capability-scope.d.ts +17 -0
  363. package/dist/src/runtime/steps/execution-agent/capability-scope.js +54 -0
  364. package/dist/src/runtime/steps/execution-agent/compaction.d.ts +3 -2
  365. package/dist/src/runtime/steps/execution-agent/compaction.js +31 -7
  366. package/dist/src/runtime/steps/execution-agent/controls-compacted-evidence.js +2 -0
  367. package/dist/src/runtime/steps/execution-agent/direct-response-prompt.js +14 -14
  368. package/dist/src/runtime/steps/execution-agent/evidence-reuse-instructions.d.ts +6 -0
  369. package/dist/src/runtime/steps/execution-agent/evidence-reuse-instructions.js +13 -0
  370. package/dist/src/runtime/steps/execution-agent/format.js +3 -6
  371. package/dist/src/runtime/steps/execution-agent/input.d.ts +5 -1
  372. package/dist/src/runtime/steps/execution-agent/input.js +24 -38
  373. package/dist/src/runtime/steps/execution-agent/observation-guidance.d.ts +11 -0
  374. package/dist/src/runtime/steps/execution-agent/observation-guidance.js +33 -0
  375. package/dist/src/runtime/steps/execution-agent/prompt.js +42 -38
  376. package/dist/src/runtime/steps/execution-agent/refinement-input.d.ts +1 -0
  377. package/dist/src/runtime/steps/execution-agent/refinement-prompt.js +4 -1
  378. package/dist/src/runtime/steps/execution-agent/refinement.d.ts +3 -2
  379. package/dist/src/runtime/steps/execution-agent/refinement.js +17 -6
  380. package/dist/src/runtime/steps/execution-agent/response-prompt.js +1 -0
  381. package/dist/src/runtime/steps/execution-agent/response-run.js +1 -1
  382. package/dist/src/runtime/steps/execution-agent/run.js +8 -2
  383. package/dist/src/runtime/steps/execution-agent/state-context.js +1 -1
  384. package/dist/src/runtime/steps/knowledge-skill-instructions.d.ts +3 -0
  385. package/dist/src/runtime/steps/knowledge-skill-instructions.js +3 -0
  386. package/dist/src/runtime/steps/planner-decision/capability-brief.d.ts +2 -2
  387. package/dist/src/runtime/steps/planner-decision/capability-brief.js +5 -1
  388. package/dist/src/runtime/steps/planner-decision/input.d.ts +2 -2
  389. package/dist/src/runtime/steps/planner-decision/input.js +7 -1
  390. package/dist/src/runtime/steps/planner-decision/prompt.js +3 -0
  391. package/dist/src/runtime/steps/planner-graph/input.d.ts +2 -2
  392. package/dist/src/runtime/steps/planner-graph/input.js +9 -8
  393. package/dist/src/runtime/steps/planner-graph/prompt.js +2 -2
  394. package/dist/src/runtime/steps/planner-graph/run.d.ts +2 -2
  395. package/dist/src/runtime/steps/planner-graph/run.js +5 -5
  396. package/dist/src/runtime/steps/planner-graph/skill-guidance.d.ts +5 -0
  397. package/dist/src/runtime/steps/planner-graph/skill-guidance.js +62 -0
  398. package/dist/src/runtime/steps/reviewer-decision/final-evidence.d.ts +1 -0
  399. package/dist/src/runtime/steps/reviewer-decision/final-evidence.js +3 -1
  400. package/dist/src/runtime/steps/reviewer-decision/input.d.ts +3 -1
  401. package/dist/src/runtime/steps/reviewer-decision/input.js +2 -22
  402. package/dist/src/runtime/steps/reviewer-decision/model-context.d.ts +21 -0
  403. package/dist/src/runtime/steps/reviewer-decision/model-context.js +32 -1
  404. package/dist/src/runtime/steps/reviewer-decision/projection.js +4 -0
  405. package/dist/src/runtime/steps/reviewer-decision/prompt.d.ts +1 -1
  406. package/dist/src/runtime/steps/reviewer-decision/prompt.js +15 -4
  407. package/dist/src/runtime/steps/reviewer-decision/run.d.ts +2 -0
  408. package/dist/src/runtime/steps/reviewer-decision/run.js +6 -0
  409. package/dist/src/runtime/steps/skill-read-decision.d.ts +35 -0
  410. package/dist/src/runtime/steps/skill-read-decision.js +96 -0
  411. package/dist/src/runtime/steps/supervisor-decision/artifact-paths.d.ts +27 -0
  412. package/dist/src/runtime/steps/supervisor-decision/artifact-paths.js +147 -0
  413. package/dist/src/runtime/steps/supervisor-decision/capability-brief.d.ts +2 -0
  414. package/dist/src/runtime/steps/supervisor-decision/capability-brief.js +9 -2
  415. package/dist/src/runtime/steps/supervisor-decision/contracts.d.ts +12 -3
  416. package/dist/src/runtime/steps/supervisor-decision/contracts.js +5 -0
  417. package/dist/src/runtime/steps/supervisor-decision/decision-phases.d.ts +40 -0
  418. package/dist/src/runtime/steps/supervisor-decision/decision-phases.js +143 -0
  419. package/dist/src/runtime/steps/supervisor-decision/delegation-contract.d.ts +9 -0
  420. package/dist/src/runtime/steps/supervisor-decision/delegation-contract.js +82 -0
  421. package/dist/src/runtime/steps/supervisor-decision/delegation-input.d.ts +7 -0
  422. package/dist/src/runtime/steps/supervisor-decision/delegation-input.js +105 -0
  423. package/dist/src/runtime/steps/supervisor-decision/delegation-prompt.d.ts +7 -0
  424. package/dist/src/runtime/steps/supervisor-decision/delegation-prompt.js +13 -0
  425. package/dist/src/runtime/steps/supervisor-decision/diagnostics.d.ts +5 -1
  426. package/dist/src/runtime/steps/supervisor-decision/diagnostics.js +4 -0
  427. package/dist/src/runtime/steps/supervisor-decision/format.d.ts +1 -0
  428. package/dist/src/runtime/steps/supervisor-decision/format.js +2 -0
  429. package/dist/src/runtime/steps/supervisor-decision/input.d.ts +8 -1
  430. package/dist/src/runtime/steps/supervisor-decision/input.js +30 -11
  431. package/dist/src/runtime/steps/supervisor-decision/parser.d.ts +1 -0
  432. package/dist/src/runtime/steps/supervisor-decision/parser.js +11 -0
  433. package/dist/src/runtime/steps/supervisor-decision/preparation-input.d.ts +24 -0
  434. package/dist/src/runtime/steps/supervisor-decision/preparation-input.js +23 -0
  435. package/dist/src/runtime/steps/supervisor-decision/preparation.d.ts +20 -0
  436. package/dist/src/runtime/steps/supervisor-decision/preparation.js +117 -0
  437. package/dist/src/runtime/steps/supervisor-decision/presentation.d.ts +13 -0
  438. package/dist/src/runtime/steps/supervisor-decision/presentation.js +47 -0
  439. package/dist/src/runtime/steps/supervisor-decision/procedure-entry.d.ts +22 -0
  440. package/dist/src/runtime/steps/supervisor-decision/procedure-entry.js +61 -0
  441. package/dist/src/runtime/steps/supervisor-decision/procedure-gate.d.ts +39 -0
  442. package/dist/src/runtime/steps/supervisor-decision/procedure-gate.js +146 -0
  443. package/dist/src/runtime/steps/supervisor-decision/procedure-memory.d.ts +9 -0
  444. package/dist/src/runtime/steps/supervisor-decision/procedure-memory.js +100 -0
  445. package/dist/src/runtime/steps/supervisor-decision/procedure-recall.d.ts +10 -0
  446. package/dist/src/runtime/steps/supervisor-decision/procedure-recall.js +52 -0
  447. package/dist/src/runtime/steps/supervisor-decision/prompt.d.ts +4 -0
  448. package/dist/src/runtime/steps/supervisor-decision/prompt.js +85 -111
  449. package/dist/src/runtime/steps/supervisor-decision/response-recommendation.d.ts +2 -0
  450. package/dist/src/runtime/steps/supervisor-decision/response-recommendation.js +2 -0
  451. package/dist/src/runtime/steps/supervisor-decision/resume.d.ts +3 -0
  452. package/dist/src/runtime/steps/supervisor-decision/resume.js +20 -0
  453. package/dist/src/runtime/steps/supervisor-decision/role-guidance.d.ts +3 -0
  454. package/dist/src/runtime/steps/supervisor-decision/role-guidance.js +20 -0
  455. package/dist/src/runtime/steps/supervisor-decision/run.d.ts +6 -0
  456. package/dist/src/runtime/steps/supervisor-decision/run.js +120 -163
  457. package/dist/src/runtime/steps/supervisor-decision/skill-read-state.d.ts +10 -0
  458. package/dist/src/runtime/steps/supervisor-decision/skill-read-state.js +45 -0
  459. package/dist/src/runtime/steps/supervisor-decision/skill-selection-candidates.d.ts +15 -0
  460. package/dist/src/runtime/steps/supervisor-decision/skill-selection-candidates.js +25 -0
  461. package/dist/src/runtime/steps/supervisor-decision/skill-selection-catalog.d.ts +3 -0
  462. package/dist/src/runtime/steps/supervisor-decision/skill-selection-catalog.js +15 -0
  463. package/dist/src/runtime/steps/supervisor-decision/skill-selection-continuation.d.ts +10 -0
  464. package/dist/src/runtime/steps/supervisor-decision/skill-selection-continuation.js +65 -0
  465. package/dist/src/runtime/steps/supervisor-decision/skill-selection-input.d.ts +23 -0
  466. package/dist/src/runtime/steps/supervisor-decision/skill-selection-input.js +27 -0
  467. package/dist/src/runtime/steps/supervisor-decision/skill-selection.d.ts +17 -0
  468. package/dist/src/runtime/steps/supervisor-decision/skill-selection.js +91 -0
  469. package/dist/src/runtime/steps/supervisor-response/input.d.ts +3 -0
  470. package/dist/src/runtime/steps/supervisor-response/input.js +5 -0
  471. package/dist/src/runtime/steps/supervisor-response/prompt.js +20 -4
  472. package/dist/src/runtime/steps/supervisor-response/response-recommendation.d.ts +3 -0
  473. package/dist/src/runtime/steps/supervisor-response/response-recommendation.js +24 -4
  474. package/dist/src/runtime/steps/supervisor-response/run.d.ts +5 -0
  475. package/dist/src/runtime/steps/supervisor-skill-authoring/contract.d.ts +43 -0
  476. package/dist/src/runtime/steps/supervisor-skill-authoring/contract.js +85 -0
  477. package/dist/src/runtime/steps/supervisor-skill-authoring/input.d.ts +35 -0
  478. package/dist/src/runtime/steps/supervisor-skill-authoring/input.js +87 -0
  479. package/dist/src/runtime/steps/supervisor-skill-authoring/run.d.ts +10 -0
  480. package/dist/src/runtime/steps/supervisor-skill-authoring/run.js +35 -0
  481. package/dist/src/runtime/steps/supervisor-skill-instructions.d.ts +4 -0
  482. package/dist/src/runtime/steps/supervisor-skill-instructions.js +4 -0
  483. package/dist/src/runtime/steps/worker-capability-scope-decision.js +14 -1
  484. package/dist/src/runtime/steps/worker-decision/contracts.d.ts +1 -0
  485. package/dist/src/runtime/steps/worker-decision/input/execution-guidance.d.ts +5 -0
  486. package/dist/src/runtime/steps/worker-decision/input/execution-guidance.js +31 -0
  487. package/dist/src/runtime/steps/worker-decision/input/prompt-context.js +2 -25
  488. package/dist/src/runtime/steps/worker-decision/input/reference-context.js +4 -0
  489. package/dist/src/runtime/steps/worker-decision/prompt.js +6 -2
  490. package/dist/src/runtime/steps/worker-decision/result-author.js +6 -0
  491. package/dist/src/shared/model-reasoning-modes.d.ts +5 -0
  492. package/dist/src/shared/model-reasoning-modes.js +20 -0
  493. package/dist/src/shared/model-reasoning-schema.d.ts +38 -0
  494. package/dist/src/shared/model-reasoning-schema.js +29 -0
  495. package/dist/src/shared/model-reasoning.d.ts +35 -0
  496. package/dist/src/shared/model-reasoning.js +100 -0
  497. package/dist/src/web-ui/app/ARCHITECTURE.md +13 -0
  498. package/dist/src/web-ui/app/app-bootstrap.js +12 -12
  499. package/dist/src/web-ui/app/app-dom.js +6 -1
  500. package/dist/src/web-ui/app/app-state.js +1 -0
  501. package/dist/src/web-ui/app/app.js +14 -4
  502. package/dist/src/web-ui/app/appearance-feature.js +28 -0
  503. package/dist/src/web-ui/app/automations-feature.js +20 -11
  504. package/dist/src/web-ui/app/components/appearance-dialog.js +79 -0
  505. package/dist/src/web-ui/app/components/automations/archive-actions.js +5 -3
  506. package/dist/src/web-ui/app/components/automations/authoring-entry.js +26 -7
  507. package/dist/src/web-ui/app/components/automations/confirmation-actions.js +78 -0
  508. package/dist/src/web-ui/app/components/automations/draft-recovery-actions.js +1 -0
  509. package/dist/src/web-ui/app/components/automations/node-inspector.js +5 -1
  510. package/dist/src/web-ui/app/components/automations/run-history-controls.js +77 -0
  511. package/dist/src/web-ui/app/components/automations/run-history.js +55 -0
  512. package/dist/src/web-ui/app/components/automations/run.js +3 -8
  513. package/dist/src/web-ui/app/components/automations/step-editor-dialog.js +4 -2
  514. package/dist/src/web-ui/app/components/automations/timeline.js +2 -2
  515. package/dist/src/web-ui/app/components/automations/workspace-navigation.js +37 -0
  516. package/dist/src/web-ui/app/components/automations/workspace.js +39 -45
  517. package/dist/src/web-ui/app/components/config-workspace/config-model.js +6 -0
  518. package/dist/src/web-ui/app/components/config-workspace/model-removal.js +4 -2
  519. package/dist/src/web-ui/app/components/config-workspace/model-rendering.js +8 -16
  520. package/dist/src/web-ui/app/components/config-workspace/reasoning-budget-edit.js +113 -0
  521. package/dist/src/web-ui/app/components/config-workspace/reasoning-budget.d.ts +16 -0
  522. package/dist/src/web-ui/app/components/config-workspace/reasoning-budget.js +67 -0
  523. package/dist/src/web-ui/app/components/config-workspace/reasoning-mode-budgets.d.ts +7 -0
  524. package/dist/src/web-ui/app/components/config-workspace/reasoning-mode-budgets.js +25 -0
  525. package/dist/src/web-ui/app/components/config-workspace/workspace-events.js +15 -7
  526. package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +32 -12
  527. package/dist/src/web-ui/app/components/config-workspace/workspace-persistence.js +1 -1
  528. package/dist/src/web-ui/app/components/config-workspace.js +2 -1
  529. package/dist/src/web-ui/app/components/confirmation-dialog.js +88 -0
  530. package/dist/src/web-ui/app/components/conversation-activity.d.ts +2 -0
  531. package/dist/src/web-ui/app/components/conversation-activity.js +32 -3
  532. package/dist/src/web-ui/app/components/conversation-memory-activity.js +31 -0
  533. package/dist/src/web-ui/app/components/conversation-role-cards.d.ts +2 -0
  534. package/dist/src/web-ui/app/components/conversation-role-cards.js +32 -2
  535. package/dist/src/web-ui/app/components/conversation-role-delegations.d.ts +12 -0
  536. package/dist/src/web-ui/app/components/conversation-role-delegations.js +24 -0
  537. package/dist/src/web-ui/app/components/conversation-role-history.d.ts +13 -0
  538. package/dist/src/web-ui/app/components/conversation-role-history.js +81 -0
  539. package/dist/src/web-ui/app/components/conversation-role-returns.d.ts +12 -0
  540. package/dist/src/web-ui/app/components/conversation-role-returns.js +23 -0
  541. package/dist/src/web-ui/app/components/conversation-skill-activity.js +67 -0
  542. package/dist/src/web-ui/app/components/conversation-tools.js +5 -5
  543. package/dist/src/web-ui/app/components/conversation-view.js +6 -0
  544. package/dist/src/web-ui/app/components/dashboard/approvals.js +13 -1
  545. package/dist/src/web-ui/app/components/long-term-memory/embedding-connection-dialog.d.ts +38 -0
  546. package/dist/src/web-ui/app/components/long-term-memory/embedding-connection-dialog.js +289 -0
  547. package/dist/src/web-ui/app/components/long-term-memory/embedding-connection-feature.js +75 -0
  548. package/dist/src/web-ui/app/components/long-term-memory/embedding-connection-rendering.js +31 -0
  549. package/dist/src/web-ui/app/components/long-term-memory/manager.js +15 -5
  550. package/dist/src/web-ui/app/components/long-term-memory/saved-embedding-profiles.js +114 -0
  551. package/dist/src/web-ui/app/components/long-term-memory/setup-rendering.js +55 -0
  552. package/dist/src/web-ui/app/components/long-term-memory-setup.js +141 -76
  553. package/dist/src/web-ui/app/components/model-setup/rendering.js +3 -2
  554. package/dist/src/web-ui/app/components/model-setup/validation.js +6 -2
  555. package/dist/src/web-ui/app/components/model-setup/wizard.d.ts +1 -0
  556. package/dist/src/web-ui/app/components/model-setup/wizard.js +28 -5
  557. package/dist/src/web-ui/app/components/onboarding-workspace-access.js +1 -1
  558. package/dist/src/web-ui/app/components/passive-learning/memory.js +12 -5
  559. package/dist/src/web-ui/app/components/plugins/manager.js +14 -0
  560. package/dist/src/web-ui/app/components/plugins/removal.js +10 -2
  561. package/dist/src/web-ui/app/components/project-group-actions.js +35 -0
  562. package/dist/src/web-ui/app/components/project-session-groups.js +17 -31
  563. package/dist/src/web-ui/app/components/runtime-setup/commands.js +1 -1
  564. package/dist/src/web-ui/app/components/runtime-setup/connection-form.d.ts +15 -0
  565. package/dist/src/web-ui/app/components/runtime-setup/connection-form.js +32 -9
  566. package/dist/src/web-ui/app/components/runtime-setup/connection-input.js +23 -0
  567. package/dist/src/web-ui/app/components/runtime-setup/connection-inspection.js +57 -0
  568. package/dist/src/web-ui/app/components/runtime-setup/connection-state.js +18 -4
  569. package/dist/src/web-ui/app/components/runtime-setup/embedding-credential-status.js +3 -0
  570. package/dist/src/web-ui/app/components/runtime-setup/embedding-provider-options.js +54 -0
  571. package/dist/src/web-ui/app/components/runtime-setup/embedding-provider-receipt.js +3 -0
  572. package/dist/src/web-ui/app/components/runtime-setup/embedding-rendering.js +22 -22
  573. package/dist/src/web-ui/app/components/runtime-setup/embedding.js +60 -16
  574. package/dist/src/web-ui/app/components/runtime-setup/reasoning-fields.d.ts +17 -0
  575. package/dist/src/web-ui/app/components/runtime-setup/reasoning-fields.js +54 -0
  576. package/dist/src/web-ui/app/components/runtime-setup/validation.js +5 -1
  577. package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +9 -3
  578. package/dist/src/web-ui/app/components/runtime-setup-guide.js +20 -29
  579. package/dist/src/web-ui/app/components/schedules/details.js +2 -2
  580. package/dist/src/web-ui/app/components/schedules/form.js +12 -5
  581. package/dist/src/web-ui/app/components/schedules/workspace.js +30 -18
  582. package/dist/src/web-ui/app/components/session-list-viewport.js +49 -0
  583. package/dist/src/web-ui/app/components/session-search-disclosure.js +27 -0
  584. package/dist/src/web-ui/app/components/skills/workspace.js +123 -0
  585. package/dist/src/web-ui/app/components/spark-chat/panel.js +7 -3
  586. package/dist/src/web-ui/app/components/spark-chat/settings.js +57 -15
  587. package/dist/src/web-ui/app/components/tool-approval-card.d.ts +2 -1
  588. package/dist/src/web-ui/app/components/tool-approval-card.js +10 -2
  589. package/dist/src/web-ui/app/components/tool-approval-rejection-input.js +116 -0
  590. package/dist/src/web-ui/app/components/workspace-shell.js +41 -39
  591. package/dist/src/web-ui/app/components/workspace-transitions.js +42 -0
  592. package/dist/src/web-ui/app/configuration-feature.js +34 -4
  593. package/dist/src/web-ui/app/controllers/app-event-bindings.js +45 -29
  594. package/dist/src/web-ui/app/controllers/appearance-controller.js +105 -0
  595. package/dist/src/web-ui/app/controllers/automation-read-projection.js +8 -4
  596. package/dist/src/web-ui/app/controllers/automation-run-actions.js +3 -1
  597. package/dist/src/web-ui/app/controllers/automation-run-history.js +159 -0
  598. package/dist/src/web-ui/app/controllers/automations-controller.js +36 -12
  599. package/dist/src/web-ui/app/controllers/composer-feature.d.ts +1 -1
  600. package/dist/src/web-ui/app/controllers/composer-feature.js +10 -3
  601. package/dist/src/web-ui/app/controllers/composer-queue-controller.d.ts +1 -1
  602. package/dist/src/web-ui/app/controllers/composer-queue-controller.js +9 -3
  603. package/dist/src/web-ui/app/controllers/composer-submission-lifecycle.d.ts +1 -1
  604. package/dist/src/web-ui/app/controllers/conversation-workspace-activation.js +8 -2
  605. package/dist/src/web-ui/app/controllers/dashboard-approvals-controller.js +10 -9
  606. package/dist/src/web-ui/app/controllers/environment-transition.js +2 -2
  607. package/dist/src/web-ui/app/controllers/environment-workspace-preparation.js +12 -6
  608. package/dist/src/web-ui/app/controllers/preference-view-sync.js +35 -0
  609. package/dist/src/web-ui/app/controllers/projects-controller.d.ts +4 -0
  610. package/dist/src/web-ui/app/controllers/projects-controller.js +64 -3
  611. package/dist/src/web-ui/app/controllers/realtime-event-controller.js +22 -1
  612. package/dist/src/web-ui/app/controllers/reasoning-budget-controller.d.ts +17 -0
  613. package/dist/src/web-ui/app/controllers/reasoning-budget-controller.js +80 -0
  614. package/dist/src/web-ui/app/controllers/reasoning-budget-menu-events.js +45 -0
  615. package/dist/src/web-ui/app/controllers/reasoning-mode-controller.js +35 -40
  616. package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +6 -1
  617. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +23 -4
  618. package/dist/src/web-ui/app/controllers/session-controller.js +34 -9
  619. package/dist/src/web-ui/app/controllers/session-sidebar-controller.js +4 -3
  620. package/dist/src/web-ui/app/controllers/skills-controller.js +254 -0
  621. package/dist/src/web-ui/app/controllers/spark-chat-sync.js +1 -1
  622. package/dist/src/web-ui/app/controllers/spark-handoff-navigation.js +7 -1
  623. package/dist/src/web-ui/app/controllers/tool-approval-controller.d.ts +2 -1
  624. package/dist/src/web-ui/app/controllers/tool-approval-controller.js +36 -3
  625. package/dist/src/web-ui/app/controllers/workspace-conversation-opener.js +8 -2
  626. package/dist/src/web-ui/app/controllers/workspace-route-controller.js +41 -10
  627. package/dist/src/web-ui/app/index.html +38 -32
  628. package/dist/src/web-ui/app/lib/color-palettes.d.ts +17 -0
  629. package/dist/src/web-ui/app/lib/color-palettes.js +20 -0
  630. package/dist/src/web-ui/app/lib/conversation-role-model.d.ts +5 -0
  631. package/dist/src/web-ui/app/lib/conversation-role-model.js +63 -5
  632. package/dist/src/web-ui/app/lib/event-presentation.js +34 -0
  633. package/dist/src/web-ui/app/lib/memory-activity-model.d.ts +12 -0
  634. package/dist/src/web-ui/app/lib/memory-activity-model.js +61 -0
  635. package/dist/src/web-ui/app/lib/navigation-display.d.ts +8 -0
  636. package/dist/src/web-ui/app/lib/navigation-display.js +12 -0
  637. package/dist/src/web-ui/app/lib/reasoning-controls.js +47 -6
  638. package/dist/src/web-ui/app/lib/reasoning-preference.d.ts +9 -0
  639. package/dist/src/web-ui/app/lib/reasoning-preference.js +75 -0
  640. package/dist/src/web-ui/app/lib/role-delegation-event.d.ts +18 -0
  641. package/dist/src/web-ui/app/lib/role-delegation-event.js +47 -0
  642. package/dist/src/web-ui/app/lib/role-return-event.d.ts +19 -0
  643. package/dist/src/web-ui/app/lib/role-return-event.js +36 -0
  644. package/dist/src/web-ui/app/lib/session-composer-queue.d.ts +4 -0
  645. package/dist/src/web-ui/app/lib/session-composer-queue.js +4 -0
  646. package/dist/src/web-ui/app/lib/session-project-groups.js +28 -0
  647. package/dist/src/web-ui/app/lib/session-sidebar-order.js +7 -5
  648. package/dist/src/web-ui/app/lib/tool-activity-event.d.ts +1 -0
  649. package/dist/src/web-ui/app/lib/tool-activity-event.js +9 -6
  650. package/dist/src/web-ui/app/lib/tool-activity-model.d.ts +1 -0
  651. package/dist/src/web-ui/app/lib/tool-activity-model.js +1 -0
  652. package/dist/src/web-ui/app/lib/tool-approval-rejection-drafts.js +45 -0
  653. package/dist/src/web-ui/app/lib/tool-skill-activity-fields.js +50 -0
  654. package/dist/src/web-ui/app/lib/workspace-route.js +1 -0
  655. package/dist/src/web-ui/app/notifications-feature.js +10 -2
  656. package/dist/src/web-ui/app/passive-learning-feature.js +2 -2
  657. package/dist/src/web-ui/app/projects-feature.js +40 -10
  658. package/dist/src/web-ui/app/runtime-onboarding-feature.js +1 -0
  659. package/dist/src/web-ui/app/schedules-feature.js +28 -5
  660. package/dist/src/web-ui/app/services/client-preferences.d.ts +4 -1
  661. package/dist/src/web-ui/app/services/client-preferences.js +2 -0
  662. package/dist/src/web-ui/app/services/conversation-reasoning-preferences.d.ts +11 -0
  663. package/dist/src/web-ui/app/services/conversation-reasoning-preferences.js +30 -0
  664. package/dist/src/web-ui/app/services/runtime-web-client/automations.d.ts +9 -1
  665. package/dist/src/web-ui/app/services/runtime-web-client/automations.js +16 -6
  666. package/dist/src/web-ui/app/services/runtime-web-client/configuration.js +5 -0
  667. package/dist/src/web-ui/app/services/runtime-web-client/memory.js +21 -0
  668. package/dist/src/web-ui/app/services/runtime-web-client/projects.d.ts +2 -1
  669. package/dist/src/web-ui/app/services/runtime-web-client/projects.js +4 -0
  670. package/dist/src/web-ui/app/services/runtime-web-client/skills.js +23 -0
  671. package/dist/src/web-ui/app/services/runtime-web-client/tool-approvals.js +2 -0
  672. package/dist/src/web-ui/app/services/runtime-web-client.d.ts +16 -0
  673. package/dist/src/web-ui/app/services/runtime-web-client.js +4 -0
  674. package/dist/src/web-ui/app/services/session-sidebar-preferences.js +33 -13
  675. package/dist/src/web-ui/app/skills-feature.js +35 -0
  676. package/dist/src/web-ui/app/spark-chat-conversation.js +29 -3
  677. package/dist/src/web-ui/app/spark-chat-feature.js +13 -7
  678. package/dist/src/web-ui/app/styles/01-color-palettes.css +90 -0
  679. package/dist/src/web-ui/app/styles/11-product-links.css +6 -2
  680. package/dist/src/web-ui/app/styles/11-workspace-header-width.css +37 -25
  681. package/dist/src/web-ui/app/styles/12-conversation-sidebar.css +56 -22
  682. package/dist/src/web-ui/app/styles/13-projects.css +56 -19
  683. package/dist/src/web-ui/app/styles/19-runtime-setup.css +16 -0
  684. package/dist/src/web-ui/app/styles/22-reasoning-budget.css +39 -0
  685. package/dist/src/web-ui/app/styles/24-conversation-role-cards.css +58 -0
  686. package/dist/src/web-ui/app/styles/27-conversation-memory.css +45 -0
  687. package/dist/src/web-ui/app/styles/27-conversation-skills.css +96 -0
  688. package/dist/src/web-ui/app/styles/28-tool-approval-card.css +38 -1
  689. package/dist/src/web-ui/app/styles/35-embedding-profiles.css +159 -0
  690. package/dist/src/web-ui/app/styles/40-skills.css +34 -0
  691. package/dist/src/web-ui/app/styles/50-automations.css +24 -3
  692. package/dist/src/web-ui/app/styles/54-spark-chat.css +62 -46
  693. package/dist/src/web-ui/app/styles/65-appearance.css +60 -0
  694. package/dist/src/web-ui/app/styles/66-navigation-display.css +30 -0
  695. package/dist/src/web-ui/app/styles/67-confirmation-dialog.css +32 -0
  696. package/dist/src/web-ui/app/styles/95-home-widgets.css +2 -1
  697. package/dist/src/web-ui/app/styles.css +9 -0
  698. package/dist/src/web-ui/app/ui-behavior.d.ts +1 -1
  699. package/dist/src/web-ui/app/ui-behavior.js +1 -0
  700. package/dist/src/web-ui/client-state/preference-shapes.js +6 -1
  701. package/dist/src/web-ui/client-state/preferences.js +8 -2
  702. package/dist/src/web-ui/client-state/reasoning-preference-shape.d.ts +1 -0
  703. package/dist/src/web-ui/client-state/reasoning-preference-shape.js +18 -0
  704. package/dist/src/web-ui/client-state/store.js +3 -2
  705. package/dist/src/web-ui/client-state/transaction-order.d.ts +2 -0
  706. package/dist/src/web-ui/client-state/transaction-order.js +18 -0
  707. package/dist/src/web-ui/local-runtime/api-router.d.ts +2 -0
  708. package/dist/src/web-ui/local-runtime/api-router.js +18 -0
  709. package/dist/src/web-ui/local-runtime/automation-routes.js +2 -1
  710. package/dist/src/web-ui/local-runtime/automation-run-page.d.ts +5 -0
  711. package/dist/src/web-ui/local-runtime/automation-run-page.js +26 -0
  712. package/dist/src/web-ui/local-runtime/memory-embedding-connection-input.d.ts +7 -0
  713. package/dist/src/web-ui/local-runtime/memory-embedding-connection-input.js +22 -0
  714. package/dist/src/web-ui/local-runtime/memory-embedding-connection-service.d.ts +20 -0
  715. package/dist/src/web-ui/local-runtime/memory-embedding-connection-service.js +47 -0
  716. package/dist/src/web-ui/local-runtime/memory-onboarding-routes.js +32 -0
  717. package/dist/src/web-ui/local-runtime/model-connection-inspection.d.ts +7 -0
  718. package/dist/src/web-ui/local-runtime/model-connection-inspection.js +48 -0
  719. package/dist/src/web-ui/local-runtime/model-setup-catalog.d.ts +2 -1
  720. package/dist/src/web-ui/local-runtime/model-setup-catalog.js +3 -1
  721. package/dist/src/web-ui/local-runtime/model-setup-identity.js +1 -1
  722. package/dist/src/web-ui/local-runtime/model-setup-input.d.ts +5 -2
  723. package/dist/src/web-ui/local-runtime/model-setup-input.js +29 -6
  724. package/dist/src/web-ui/local-runtime/model-setup-provider.d.ts +1 -1
  725. package/dist/src/web-ui/local-runtime/model-setup-provider.js +9 -6
  726. package/dist/src/web-ui/local-runtime/model-setup-retry.js +4 -1
  727. package/dist/src/web-ui/local-runtime/model-setup-service.d.ts +2 -1
  728. package/dist/src/web-ui/local-runtime/pending-tool-approvals.js +4 -1
  729. package/dist/src/web-ui/local-runtime/project-routes.js +10 -2
  730. package/dist/src/web-ui/local-runtime/request-execution.js +1 -0
  731. package/dist/src/web-ui/local-runtime/runtime-setup-auth.d.ts +2 -0
  732. package/dist/src/web-ui/local-runtime/runtime-setup-auth.js +20 -0
  733. package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.js +3 -2
  734. package/dist/src/web-ui/local-runtime/runtime-setup-credential-completion.js +6 -1
  735. package/dist/src/web-ui/local-runtime/runtime-setup-input.d.ts +3 -2
  736. package/dist/src/web-ui/local-runtime/runtime-setup-input.js +17 -5
  737. package/dist/src/web-ui/local-runtime/runtime-setup-provider.d.ts +4 -1
  738. package/dist/src/web-ui/local-runtime/runtime-setup-provider.js +6 -2
  739. package/dist/src/web-ui/local-runtime/runtime-setup-routes.d.ts +11 -2
  740. package/dist/src/web-ui/local-runtime/runtime-setup-routes.js +11 -2
  741. package/dist/src/web-ui/local-runtime/runtime-setup-scaffold.js +3 -2
  742. package/dist/src/web-ui/local-runtime/runtime-setup-service.d.ts +25 -4
  743. package/dist/src/web-ui/local-runtime/runtime-setup-service.js +19 -9
  744. package/dist/src/web-ui/local-runtime/setup-embedding-input.d.ts +3 -1
  745. package/dist/src/web-ui/local-runtime/setup-embedding-input.js +38 -6
  746. package/dist/src/web-ui/local-runtime/setup-embedding-llamacpp.d.ts +11 -0
  747. package/dist/src/web-ui/local-runtime/setup-embedding-llamacpp.js +53 -0
  748. package/dist/src/web-ui/local-runtime/setup-embedding-provider.js +23 -9
  749. package/dist/src/web-ui/local-runtime/setup-embedding-routes.d.ts +7 -2
  750. package/dist/src/web-ui/local-runtime/setup-embedding-routes.js +5 -3
  751. package/dist/src/web-ui/local-runtime/setup-embedding-service.d.ts +1 -0
  752. package/dist/src/web-ui/local-runtime/skill-management-routes.d.ts +18 -0
  753. package/dist/src/web-ui/local-runtime/skill-management-routes.js +118 -0
  754. package/docs/configuration.md +11 -1
  755. package/docs/installation.md +11 -5
  756. package/docs/llamacpp.md +248 -0
  757. package/docs/long-term-memory.md +12 -0
  758. package/docs/running-locally.md +7 -1
  759. package/docs/runtime-public-contracts.md +37 -0
  760. package/examples/request-runner.config.example.json +3 -0
  761. package/package.json +2 -1
  762. package/plugins/project-orientation/source/index.ts +2 -3
  763. package/plugins/project-orientation/source/inspection-failure.ts +1 -1
  764. package/plugins/project-orientation/source/project-target.ts +29 -0
  765. package/plugins/project-orientation/src/index.cjs +21 -2
  766. package/plugins/web/skills/web_fetch_skill/SKILL.md +1 -2
  767. package/plugins/web/skills/web_search_skill/SKILL.md +3 -7
  768. package/runtime.config.schema.json +140 -0
  769. package/src/runtime/README.md +145 -4
package/README.md CHANGED
@@ -68,7 +68,7 @@ You need:
68
68
 
69
69
  - Node.js `^20.19.0` or `>=22.12.0`; Node.js 21 is not supported
70
70
  - npm
71
- - An OpenAI or Ollama model connection
71
+ - An OpenAI, Ollama or llama.cpp model connection
72
72
 
73
73
  Create a directory for your ABot installation:
74
74
 
@@ -89,6 +89,10 @@ choosing tools, and optionally enabling semantic memory.
89
89
  - **Ollama:** install and start Ollama separately, download your chosen model,
90
90
  and provide an address reachable from the Runtime.
91
91
 
92
+ - **llama.cpp:** run llama-server separately and connect its model alias and
93
+ reachable origin. Thinking-capable models can use a token budget. See
94
+ [llama.cpp setup](docs/llamacpp.md).
95
+
92
96
  ABot includes the provider adapters. You supply the model and any required
93
97
  credentials. Configuration and runtime state are stored in your project.
94
98
 
@@ -1,4 +1,6 @@
1
1
  import { mergeRuntimeModelAddition, parseRuntimeModelProfileId, } from "./runtime-model-addition.js";
2
+ import { supportsProviderAddress } from "./runtime-setup-provider-options.js";
3
+ import { parseSetupCommandOptions, requireSetupCommandProviderOptions } from "./runtime-setup-command-options.js";
2
4
  import { constants } from "node:fs";
3
5
  import { access, mkdir } from "node:fs/promises";
4
6
  import { dirname, join, resolve } from "node:path";
@@ -17,6 +19,8 @@ function requireValue(argv, index, flag) {
17
19
  return value;
18
20
  }
19
21
  function parseArgs(argv, commandMode) {
22
+ const shared = parseSetupCommandOptions(argv);
23
+ argv = shared.argv;
20
24
  let rootDir = process.cwd();
21
25
  let provider;
22
26
  let model;
@@ -91,10 +95,11 @@ function parseArgs(argv, commandMode) {
91
95
  throw new Error("--model is required");
92
96
  if (!profile)
93
97
  throw new Error("--profile is required");
94
- if (baseUrl && provider !== "ollama") {
95
- throw new Error("--base-url is supported only with --provider ollama");
98
+ if (baseUrl && !supportsProviderAddress(provider)) {
99
+ throw new Error("--base-url is supported only with --provider ollama or llamacpp");
96
100
  }
97
- return { rootDir, provider, model, profile, baseUrl, setDefault };
101
+ requireSetupCommandProviderOptions(provider, shared);
102
+ return { ...shared, rootDir, provider, model, profile, baseUrl, setDefault };
98
103
  }
99
104
  function printHelp(commandMode) {
100
105
  console.log([
@@ -165,14 +170,14 @@ export async function runAddRuntimeModel(argv = process.argv.slice(2), runOption
165
170
  const merged = mergeRuntimeModelAddition(runtimeConfig, {
166
171
  profileId: options.profile,
167
172
  providerId: options.provider,
168
- provider: buildProviderConfig(options.provider, options.baseUrl),
173
+ provider: buildProviderConfig(options.provider, options.baseUrl, options.apiKeyEnv),
169
174
  profile: { configRef: `./models/${options.profile}.config.json` },
170
175
  baseUrl: options.baseUrl,
171
176
  });
172
177
  const nextRunnerConfig = options.setDefault
173
178
  ? selectDefaultProfile(runnerConfig, options.profile)
174
179
  : runnerConfig;
175
- const modelConfig = buildModelConfig(modelTemplate, options.provider, options.model);
180
+ const modelConfig = buildModelConfig(modelTemplate, options.provider, options.model, options.contextWindowTokens, options.modelOptions);
176
181
  await mkdir(dirname(modelConfigPath), { recursive: true });
177
182
  await writeJsonObject(modelConfigPath, modelConfig, { exclusive: true });
178
183
  await writeJsonObject(runtimeConfigPath, merged.config);
@@ -188,6 +193,7 @@ export async function runAddRuntimeModel(argv = process.argv.slice(2), runOption
188
193
  ...(options.provider === "openai"
189
194
  ? ["credential: set OPENAI_API_KEY in .env"]
190
195
  : []),
196
+ ...(options.apiKeyEnv ? ["credential: set " + options.apiKeyEnv + " in .env"] : []),
191
197
  getRestartInstruction(commandMode),
192
198
  ].join("\n"));
193
199
  }
@@ -1,3 +1,5 @@
1
+ import { supportsProviderAddress } from "./runtime-setup-provider-options.js";
2
+ import { parseSetupCommandOptions, requireSetupCommandProviderOptions } from "./runtime-setup-command-options.js";
1
3
  import { constants } from "node:fs";
2
4
  import { access, copyFile, mkdir, readFile, writeFile } from "node:fs/promises";
3
5
  import { dirname, join, relative, resolve } from "node:path";
@@ -22,6 +24,8 @@ function requireValue(argv, index, flag) {
22
24
  return value;
23
25
  }
24
26
  function parseArgs(argv, commandMode) {
27
+ const shared = parseSetupCommandOptions(argv);
28
+ argv = shared.argv;
25
29
  let rootDir = process.cwd();
26
30
  let provider;
27
31
  let model;
@@ -88,10 +92,11 @@ function parseArgs(argv, commandMode) {
88
92
  if (!model) {
89
93
  throw new Error("--model is required");
90
94
  }
91
- if (baseUrl && provider !== "ollama") {
92
- throw new Error("--base-url is supported only with --provider ollama");
95
+ if (baseUrl && !supportsProviderAddress(provider)) {
96
+ throw new Error("--base-url is supported only with --provider ollama or llamacpp");
93
97
  }
94
- return { rootDir, provider, model, baseUrl, force };
98
+ requireSetupCommandProviderOptions(provider, shared);
99
+ return { ...shared, rootDir, provider, model, baseUrl, force };
95
100
  }
96
101
  function printHelp(commandMode) {
97
102
  console.log([
@@ -108,7 +113,7 @@ function printHelp(commandMode) {
108
113
  "- .runtime/prod and .runtime/dev",
109
114
  "",
110
115
  "Both --provider and --model are required; the runtime has no built-in model choice.",
111
- "--base-url configures the Ollama origin when Ollama runs outside the runtime host.",
116
+ "--base-url configures the Ollama or llama.cpp origin reachable from the Runtime.",
112
117
  ].join("\n"));
113
118
  }
114
119
  async function exists(path) {
@@ -147,12 +152,12 @@ async function ensureEnvLine(envPath) {
147
152
  await writeFile(envPath, next, "utf-8");
148
153
  return true;
149
154
  }
150
- async function configureRuntimeProvider(configPath, provider, baseUrl) {
155
+ async function configureRuntimeProvider(configPath, provider, baseUrl, apiKeyEnv) {
151
156
  const config = await readJsonObject(configPath);
152
157
  const models = isRecord(config.models) ? config.models : {};
153
158
  const { defaults: _ignoredDefaults, ...modelSettings } = models;
154
159
  const providers = {
155
- [provider]: buildProviderConfig(provider, baseUrl),
160
+ [provider]: buildProviderConfig(provider, baseUrl, apiKeyEnv),
156
161
  };
157
162
  config.models = {
158
163
  ...modelSettings,
@@ -165,9 +170,9 @@ async function configureRuntimeProvider(configPath, provider, baseUrl) {
165
170
  };
166
171
  await writeJsonObject(configPath, config);
167
172
  }
168
- async function configureModelProfile(configPath, provider, model) {
173
+ async function configureModelProfile(configPath, provider, model, options) {
169
174
  const config = await readJsonObject(configPath);
170
- await writeJsonObject(configPath, buildModelConfig(config, provider, model));
175
+ await writeJsonObject(configPath, buildModelConfig(config, provider, model, options.contextWindowTokens, options.modelOptions));
171
176
  }
172
177
  async function configureRunner(configPath) {
173
178
  const config = await readJsonObject(configPath);
@@ -221,13 +226,13 @@ export async function runInitRuntime(argv = process.argv.slice(2), runOptions =
221
226
  }),
222
227
  })));
223
228
  if (configStatus !== "kept") {
224
- await configureRuntimeProvider(configPath, options.provider, options.baseUrl);
229
+ await configureRuntimeProvider(configPath, options.provider, options.baseUrl, options.apiKeyEnv);
225
230
  }
226
231
  if (requestRunnerConfigStatus !== "kept") {
227
232
  await configureRunner(requestRunnerConfigPath);
228
233
  }
229
234
  if (modelConfigStatus !== "kept") {
230
- await configureModelProfile(modelConfigPath, options.provider, options.model);
235
+ await configureModelProfile(modelConfigPath, options.provider, options.model, options);
231
236
  }
232
237
  const runtimeDirectories = await initializeConfiguredRuntimeDirectories(options.rootDir, configPath);
233
238
  console.log([
@@ -1,3 +1,4 @@
1
+ import { supportsProviderAddress } from "./runtime-setup-provider-options.js";
1
2
  import { isRecord } from "./runtime-setup-files.js";
2
3
  export function parseRuntimeModelProfileId(value) {
3
4
  const profile = value.trim();
@@ -28,11 +29,15 @@ export function mergeRuntimeModelAddition(runtimeConfig, input) {
28
29
  existingProvider.type !== input.provider.type) {
29
30
  throw new Error(`provider id is already configured with a different adapter: ${input.providerId}; no files were changed`);
30
31
  }
31
- if (input.provider.type === "ollama" &&
32
+ if (supportsProviderAddress(String(input.provider.type)) &&
32
33
  input.baseUrl &&
33
34
  existingProvider.baseUrl !== input.baseUrl) {
34
35
  throw new Error(`provider ${input.providerId} already uses a different base URL; no files were changed`);
35
36
  }
37
+ const changesLlamaCredentialBinding = input.provider.type === "llamacpp" &&
38
+ input.provider.apiKeyEnv !== undefined && input.provider.apiKeyEnv !== existingProvider.apiKeyEnv;
39
+ if (changesLlamaCredentialBinding)
40
+ throw new Error("provider " + input.providerId + " already uses a different credential binding; no files were changed");
36
41
  }
37
42
  return {
38
43
  providerAdded: existingProvider === undefined,
@@ -0,0 +1,11 @@
1
+ import { type SetupModelOptions } from "./runtime-setup-model-options.js";
2
+ export type SetupCommandOptions = Readonly<{
3
+ contextWindowTokens?: number;
4
+ apiKeyEnv?: string;
5
+ modelOptions: SetupModelOptions;
6
+ }>;
7
+ /** Reads shared setup flags before the existing command-specific argument parser. */
8
+ export declare function parseSetupCommandOptions(args: string[]): SetupCommandOptions & {
9
+ argv: string[];
10
+ };
11
+ export declare function requireSetupCommandProviderOptions(provider: string, options: SetupCommandOptions): void;
@@ -0,0 +1,41 @@
1
+ import { parseContextWindowTokens } from "./runtime-setup-files.js";
2
+ import { parseProviderCredentialEnvironment } from "./runtime-setup-provider-options.js";
3
+ import { parseCliReasoningBudget, parseSetupModelOptions } from "./runtime-setup-model-options.js";
4
+ /** Reads shared setup flags before the existing command-specific argument parser. */
5
+ export function parseSetupCommandOptions(args) {
6
+ const argv = [];
7
+ const options = {};
8
+ let contextWindowTokens;
9
+ let apiKeyEnv;
10
+ const flags = ["--supports-thinking", "--reasoning-budget", "--context-window", "--api-key-env"];
11
+ for (let index = 0; index < args.length; index += 1) {
12
+ const arg = args[index];
13
+ const flag = arg.split("=")[0];
14
+ if (!flags.includes(flag)) {
15
+ argv.push(arg);
16
+ continue;
17
+ }
18
+ const hasInlineValue = arg.startsWith(flag + "=");
19
+ const value = hasInlineValue ? arg.slice(flag.length + 1) : args[++index];
20
+ if (!value || value.startsWith("--"))
21
+ throw new Error(flag + " requires a value");
22
+ if (flag === "--supports-thinking") {
23
+ if (value !== "true" && value !== "false")
24
+ throw new Error("--supports-thinking must be true or false");
25
+ options.supportsThinking = value === "true";
26
+ }
27
+ if (flag === "--reasoning-budget")
28
+ options.reasoningBudget = parseCliReasoningBudget(value);
29
+ if (flag === "--context-window")
30
+ contextWindowTokens = parseContextWindowTokens(Number(value));
31
+ if (flag === "--api-key-env")
32
+ apiKeyEnv = parseProviderCredentialEnvironment(value);
33
+ }
34
+ return { argv, contextWindowTokens, apiKeyEnv, modelOptions: parseSetupModelOptions(options) };
35
+ }
36
+ export function requireSetupCommandProviderOptions(provider, options) {
37
+ if (options.apiKeyEnv && provider !== "llamacpp")
38
+ throw new Error("--api-key-env is supported only with --provider llamacpp");
39
+ if (options.modelOptions.reasoningBudget && provider !== "llamacpp")
40
+ throw new Error("--reasoning-budget is supported only with --provider llamacpp");
41
+ }
@@ -1,3 +1,4 @@
1
+ import { type SetupModelOptions } from "./runtime-setup-model-options.js";
1
2
  export type Provider = string;
2
3
  export type JsonObject = Record<string, unknown>;
3
4
  export declare const DEFAULT_ROOT_RESPONSE_METHODOLOGY_FILES: readonly string[];
@@ -9,7 +10,7 @@ export declare function readJsonObject(path: string): Promise<JsonObject>;
9
10
  export declare function writeJsonObject(path: string, value: JsonObject, options?: Readonly<{
10
11
  exclusive?: boolean;
11
12
  }>): Promise<void>;
12
- export declare function buildProviderConfig(provider: Provider, baseUrl?: string): JsonObject;
13
- export declare function buildModelConfig(template: JsonObject, provider: Provider, model: string, contextWindowTokens?: number): JsonObject;
13
+ export declare function buildProviderConfig(provider: Provider, baseUrl?: string, apiKeyEnv?: string): JsonObject;
14
+ export declare function buildModelConfig(template: JsonObject, provider: Provider, model: string, contextWindowTokens?: number, modelOptions?: SetupModelOptions): JsonObject;
14
15
  export declare function parseContextWindowTokens(value: unknown): number | undefined;
15
16
  export declare function readDefaultContextWindowTokens(): Promise<number>;
@@ -1,6 +1,8 @@
1
1
  import { existsSync } from "node:fs";
2
2
  import { readFile, writeFile } from "node:fs/promises";
3
3
  import { dirname, join, resolve } from "node:path";
4
+ import { defaultProviderAddress, parseProviderCredentialEnvironment } from "./runtime-setup-provider-options.js";
5
+ import { buildSetupModelReasoning } from "./runtime-setup-model-options.js";
4
6
  export const DEFAULT_ROOT_RESPONSE_METHODOLOGY_FILES = Object.freeze([
5
7
  "methodologies/response-ux.md",
6
8
  "methodologies/memory-informed-response.md",
@@ -61,7 +63,7 @@ export async function writeJsonObject(path, value, options = {}) {
61
63
  ...(options.exclusive ? { flag: "wx" } : {}),
62
64
  });
63
65
  }
64
- export function buildProviderConfig(provider, baseUrl) {
66
+ export function buildProviderConfig(provider, baseUrl, apiKeyEnv) {
65
67
  if (provider === "openai") {
66
68
  return {
67
69
  type: "openai",
@@ -74,12 +76,49 @@ export function buildProviderConfig(provider, baseUrl) {
74
76
  baseUrl: baseUrl ?? "http://127.0.0.1:11434",
75
77
  };
76
78
  }
79
+ if (provider === "llamacpp") {
80
+ const credential = parseProviderCredentialEnvironment(apiKeyEnv);
81
+ return {
82
+ type: "llamacpp",
83
+ baseUrl: baseUrl ?? defaultProviderAddress(provider),
84
+ ...(credential ? { apiKeyEnv: credential } : {}),
85
+ };
86
+ }
77
87
  return { type: provider };
78
88
  }
79
- export function buildModelConfig(template, provider, model, contextWindowTokens) {
89
+ export function buildModelConfig(template, provider, model, contextWindowTokens, modelOptions = {}) {
80
90
  const context = isRecord(template.context) ? template.context : {};
81
- return {
91
+ const tokenEstimation = isRecord(context.tokenEstimation)
92
+ ? context.tokenEstimation
93
+ : {};
94
+ const calibration = isRecord(template.calibration) ? template.calibration : {};
95
+ const compaction = isRecord(calibration["context.compact"])
96
+ ? calibration["context.compact"]
97
+ : {};
98
+ const generation = isRecord(compaction.generation) ? compaction.generation : {};
99
+ const rawPayload = isRecord(calibration["toolPayload.raw"])
100
+ ? calibration["toolPayload.raw"]
101
+ : {};
102
+ const shouldApplyOllamaSetupCalibration = provider === "ollama";
103
+ const shouldApplyOpenAiStepTimeouts = provider === "openai";
104
+ const modelConfig = {
82
105
  ...template,
106
+ ...buildSetupModelReasoning(provider, isRecord(template.generation) ? template.generation : {}, modelOptions),
107
+ ...(shouldApplyOllamaSetupCalibration
108
+ ? {
109
+ calibration: {
110
+ ...calibration,
111
+ "context.compact": {
112
+ ...compaction,
113
+ generation: {
114
+ temperature: 0,
115
+ reasoningEffort: "none",
116
+ ...generation,
117
+ },
118
+ },
119
+ },
120
+ }
121
+ : {}),
83
122
  label: model,
84
123
  provider,
85
124
  model,
@@ -95,11 +134,31 @@ export function buildModelConfig(template, provider, model, contextWindowTokens)
95
134
  : {}),
96
135
  context: {
97
136
  ...context,
137
+ ...(shouldApplyOllamaSetupCalibration
138
+ ? {
139
+ tokenEstimation: {
140
+ asciiCharactersPerToken: 3,
141
+ nonAsciiBytesPerToken: 2,
142
+ messageOverheadTokens: 6,
143
+ ...tokenEstimation,
144
+ },
145
+ }
146
+ : {}),
98
147
  formatTokenAccounting: {
99
- mode: provider === "ollama" ? "none" : "estimate",
148
+ mode: shouldApplyOllamaSetupCalibration ? "none" : "estimate",
100
149
  },
101
150
  },
102
151
  };
152
+ if (!shouldApplyOpenAiStepTimeouts)
153
+ return modelConfig;
154
+ return {
155
+ ...modelConfig,
156
+ calibration: {
157
+ ...calibration,
158
+ "context.compact": { timeoutMs: 300_000, ...compaction },
159
+ "toolPayload.raw": { timeoutMs: 300_000, ...rawPayload },
160
+ },
161
+ };
103
162
  }
104
163
  export function parseContextWindowTokens(value) {
105
164
  if (value === undefined)
@@ -0,0 +1,8 @@
1
+ import { type ModelReasoningBudget } from "../src/shared/model-reasoning.js";
2
+ export type SetupModelOptions = Readonly<{
3
+ supportsThinking?: boolean;
4
+ reasoningBudget?: ModelReasoningBudget;
5
+ }>;
6
+ export declare function parseSetupModelOptions(body: Record<string, unknown>): SetupModelOptions;
7
+ export declare function parseCliReasoningBudget(value: string): ModelReasoningBudget;
8
+ export declare function buildSetupModelReasoning(provider: string, generation: Record<string, unknown>, options: SetupModelOptions): Record<string, unknown>;
@@ -0,0 +1,40 @@
1
+ import { parseModelReasoningBudget, } from "../src/shared/model-reasoning.js";
2
+ export function parseSetupModelOptions(body) {
3
+ const supportsThinking = body.supportsThinking;
4
+ if (supportsThinking !== undefined && typeof supportsThinking !== "boolean")
5
+ throw new Error("Supports reasoning must be true or false.");
6
+ const reasoningBudget = parseModelReasoningBudget(body.reasoningBudget);
7
+ if (reasoningBudget !== undefined && supportsThinking !== true)
8
+ throw new Error("Enable reasoning support before configuring its budget.");
9
+ return {
10
+ ...(supportsThinking !== undefined ? { supportsThinking } : {}),
11
+ ...(reasoningBudget !== undefined ? { reasoningBudget } : {}),
12
+ };
13
+ }
14
+ export function parseCliReasoningBudget(value) {
15
+ const hasReasoningBudgetInput = value.trim().length > 0;
16
+ if (!hasReasoningBudgetInput)
17
+ throw new Error("A reasoning budget is required.");
18
+ if (value === "server-default")
19
+ return { mode: "server-default" };
20
+ const budget = parseModelReasoningBudget({ mode: "tokens", tokens: Number(value) });
21
+ if (!budget)
22
+ throw new Error("A reasoning budget is required.");
23
+ return budget;
24
+ }
25
+ export function buildSetupModelReasoning(provider, generation, options) {
26
+ const validated = parseSetupModelOptions(options);
27
+ if (validated.reasoningBudget && provider !== "llamacpp")
28
+ throw new Error("A token reasoning budget requires a llama.cpp provider.");
29
+ if (provider !== "llamacpp")
30
+ return validated.supportsThinking === undefined
31
+ ? {}
32
+ : { supportsThinking: validated.supportsThinking };
33
+ return {
34
+ supportsThinking: validated.supportsThinking === true,
35
+ capabilities: { inputModalities: ["text"] },
36
+ ...(validated.reasoningBudget
37
+ ? { generation: { ...generation, reasoningBudget: validated.reasoningBudget } }
38
+ : {}),
39
+ };
40
+ }
@@ -3,11 +3,11 @@ function commandForMode(mode, sourceCommand, packageCommand) {
3
3
  }
4
4
  export function getInitUsage(mode) {
5
5
  const command = commandForMode(mode, "npm run init --", "npx abot init");
6
- return `Usage: ${command} --provider <provider-adapter> --model <model-id> [--base-url <provider-origin>] [--force] [--root <dir>]`;
6
+ return `Usage: ${command} --provider <provider-adapter> --model <model-id> [--base-url <provider-origin>] [--context-window <tokens>] [--supports-thinking <true|false>] [--reasoning-budget <tokens|server-default>] [--api-key-env <name>] [--force] [--root <dir>]`;
7
7
  }
8
8
  export function getAddModelUsage(mode) {
9
9
  const command = commandForMode(mode, "npm run add-model --", "npx abot add-model");
10
- return `Usage: ${command} --profile <profile-id> --provider <provider-adapter> --model <model-id> [--base-url <provider-origin>] [--default] [--root <dir>]`;
10
+ return `Usage: ${command} --profile <profile-id> --provider <provider-adapter> --model <model-id> [--base-url <provider-origin>] [--context-window <tokens>] [--supports-thinking <true|false>] [--reasoning-budget <tokens|server-default>] [--api-key-env <name>] [--default] [--root <dir>]`;
11
11
  }
12
12
  export function getMissingInitializationInstruction(mode) {
13
13
  return commandForMode(mode, "run npm run init first", "run npx abot init first");
@@ -0,0 +1,4 @@
1
+ export declare function supportsProviderAddress(provider: string): boolean;
2
+ export declare function defaultProviderAddress(provider: string): string | undefined;
3
+ export declare function supportsProviderCredential(provider: string): boolean;
4
+ export declare function parseProviderCredentialEnvironment(value: unknown): string | undefined;
@@ -0,0 +1,20 @@
1
+ export function supportsProviderAddress(provider) {
2
+ return provider === "ollama" || provider === "llamacpp";
3
+ }
4
+ export function defaultProviderAddress(provider) {
5
+ if (provider === "ollama")
6
+ return "http://127.0.0.1:11434";
7
+ if (provider === "llamacpp")
8
+ return "http://127.0.0.1:8080";
9
+ return undefined;
10
+ }
11
+ export function supportsProviderCredential(provider) {
12
+ return provider === "openai" || provider === "llamacpp";
13
+ }
14
+ export function parseProviderCredentialEnvironment(value) {
15
+ if (value === undefined)
16
+ return undefined;
17
+ if (typeof value === "string" && /^[A-Za-z_][A-Za-z0-9_]*$/u.test(value))
18
+ return value;
19
+ throw new Error("API key environment name must be a valid environment variable name.");
20
+ }
@@ -1,6 +1,7 @@
1
1
  import { traceDebug } from "../../runtime/observability/debug-logger.js";
2
2
  import { permitsModelContentTrace } from "../observability/content-trace-policy.js";
3
3
  import { buildModelInvocationMetrics } from "./invocation-metrics.js";
4
+ import { fetchModelGatewayResponse, ModelGatewayInvocationError, } from "./invocation-error.js";
4
5
  import { buildChatGatewayRequestBody, resolveMetricMessages, resolveRequestMessages, } from "./message-projection.js";
5
6
  import { resolveClientOptions } from "./options.js";
6
7
  import { ChatStreamAccumulator, classifyEmptyResponse, InactivityBoundStreamReader, } from "./stream-consumer.js";
@@ -24,14 +25,16 @@ export async function invokeModelGatewayWithOptions(params, options = {}) {
24
25
  textLength: typeof params.text === "string" ? params.text.length : 0,
25
26
  messageCount: requestMessages.length,
26
27
  });
27
- const response = await fetch(url + "/chat", {
28
+ const serializedRequestBody = JSON.stringify(requestBody);
29
+ const response = await fetchModelGatewayResponse(url + "/chat", {
28
30
  method: "POST",
29
31
  headers: {
30
32
  "Content-Type": "application/json",
31
33
  },
32
34
  signal: params.abortSignal,
33
- body: JSON.stringify(requestBody),
34
- });
35
+ body: serializedRequestBody,
36
+ }, params.abortSignal);
37
+ params.abortSignal.throwIfAborted();
35
38
  traceDebug("model-gateway.client", "chat.response.received", {
36
39
  requestId,
37
40
  status: response.status,
@@ -39,6 +42,7 @@ export async function invokeModelGatewayWithOptions(params, options = {}) {
39
42
  });
40
43
  if (!response.ok) {
41
44
  const errorText = await response.text().catch(() => "");
45
+ params.abortSignal.throwIfAborted();
42
46
  traceDebug("model-gateway.client", "chat.response.error", {
43
47
  requestId,
44
48
  status: response.status,
@@ -47,13 +51,13 @@ export async function invokeModelGatewayWithOptions(params, options = {}) {
47
51
  ? { bodyPreview: errorText.slice(0, 400) }
48
52
  : { contentOmitted: true }),
49
53
  });
50
- throw new Error(`bridge_request_failed:${response.status}:${permitsModelContentTrace(params.modelStep, params.messages) ? errorText || "empty error body" : "content omitted"}`);
54
+ throw new ModelGatewayInvocationError("http", `bridge_request_failed:${response.status}:${permitsModelContentTrace(params.modelStep, params.messages) ? errorText || "empty error body" : "content omitted"}`);
51
55
  }
52
56
  if (!response.body) {
53
57
  traceDebug("model-gateway.client", "chat.response.no_body", {
54
58
  requestId,
55
59
  });
56
- throw new Error("no stream");
60
+ throw new ModelGatewayInvocationError("missing_stream", "no stream");
57
61
  }
58
62
  const streamReader = new InactivityBoundStreamReader(response.body.getReader(), params.abortSignal, clientOptions.getStreamInactivityTimeoutMs);
59
63
  const stream = new ChatStreamAccumulator(params);
@@ -1,3 +1,4 @@
1
+ import type { ModelReasoningPreference } from "../../shared/model-reasoning.js";
1
2
  import type { AgentMode, ModelReasoningLevel, ModelStep } from "../../shared/types.js";
2
3
  import type { StreamCallbacks } from "../client-stream-parser.js";
3
4
  import type { ModelGatewayAttachment, ModelGatewayPolicyConfig, ModelPreference, ModelTokenUsage } from "../types.js";
@@ -19,6 +20,7 @@ export type InvokeModelGatewayParams = StreamCallbacks & {
19
20
  modelOverride?: string;
20
21
  reasoningOverride?: ModelReasoningLevel;
21
22
  modelPreference?: ModelPreference;
23
+ reasoningPreference?: ModelReasoningPreference;
22
24
  modelPolicy?: ModelGatewayPolicyConfig;
23
25
  abortSignal: AbortSignal;
24
26
  debugRequestId?: string;
@@ -32,6 +34,7 @@ export type InvokeRawModelGatewayParams = {
32
34
  modelOverride?: string;
33
35
  reasoningOverride?: ModelReasoningLevel;
34
36
  modelPreference?: ModelPreference;
37
+ reasoningPreference?: ModelReasoningPreference;
35
38
  modelPolicy?: ModelGatewayPolicyConfig;
36
39
  abortSignal: AbortSignal;
37
40
  debugRequestId?: string;
@@ -1,5 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { traceDebug } from "../../runtime/observability/debug-logger.js";
3
+ import { InputTokenCountDiagnostics } from "../observability/input-token-count-diagnostics.js";
3
4
  import { toolMediaSafeMessage } from "../observability/tool-media-privacy.js";
4
5
  import { buildChatGatewayRequestBody, resolveRequestMessages, } from "./message-projection.js";
5
6
  import { resolveClientOptions } from "./options.js";
@@ -61,6 +62,10 @@ function updateInputTokenCountCache(cache, cacheKey, result) {
61
62
  cache.delete(oldestKey);
62
63
  }
63
64
  }
65
+ // A local llama.cpp server can change its template/tokenizer without changing the request.
66
+ function canCacheProviderInputTokenCount(provider) {
67
+ return provider !== "llamacpp";
68
+ }
64
69
  export async function countModelGatewayInputTokensWithOptions(params, options = {}, cache) {
65
70
  const clientOptions = resolveClientOptions(options);
66
71
  const provider = params.provider.trim();
@@ -71,7 +76,8 @@ export async function countModelGatewayInputTokensWithOptions(params, options =
71
76
  const modelPolicy = params.modelPolicy ?? clientOptions.modelPolicy;
72
77
  const requestBody = buildChatGatewayRequestBody(params, requestMessages, modelPolicy);
73
78
  const cacheKey = createInputTokenCountCacheKey(provider, requestBody);
74
- const cached = cache?.get(cacheKey);
79
+ const eligibleCache = canCacheProviderInputTokenCount(provider) ? cache : undefined;
80
+ const cached = eligibleCache?.get(cacheKey);
75
81
  if (cached) {
76
82
  return cached;
77
83
  }
@@ -84,21 +90,35 @@ export async function countModelGatewayInputTokensWithOptions(params, options =
84
90
  modelStep: params.modelStep,
85
91
  messageCount: requestMessages.length,
86
92
  });
87
- const response = await fetch(`${clientOptions.baseUrl}/input-tokens`, {
88
- method: "POST",
89
- headers: {
90
- "Content-Type": "application/json",
91
- },
92
- signal: params.abortSignal,
93
- body: JSON.stringify(requestBody),
94
- });
95
- if (!response.ok) {
96
- const errorText = await response.text().catch(() => "");
97
- throw new Error(`bridge_input_token_count_failed:${response.status}:${toolMediaSafeMessage(errorText || "empty error body", requestMessages)}`);
93
+ const diagnostics = new InputTokenCountDiagnostics("model-gateway.client", requestBody);
94
+ diagnostics.setProvider(provider);
95
+ let statusCode;
96
+ let result;
97
+ try {
98
+ diagnostics.setPhase("bridge_fetch");
99
+ const response = await fetch(`${clientOptions.baseUrl}/input-tokens`, {
100
+ method: "POST",
101
+ headers: {
102
+ "Content-Type": "application/json",
103
+ },
104
+ signal: params.abortSignal,
105
+ body: JSON.stringify(requestBody),
106
+ });
107
+ statusCode = response.status;
108
+ diagnostics.setPhase("bridge_response");
109
+ if (!response.ok) {
110
+ const errorText = await response.text().catch(() => "");
111
+ throw new Error(`bridge_input_token_count_failed:${response.status}:${toolMediaSafeMessage(errorText || "empty error body", requestMessages)}`);
112
+ }
113
+ diagnostics.setPhase("bridge_parse");
114
+ result = parseInputTokenCountResult(await response.json().catch(() => undefined));
115
+ if (result.provider !== provider) {
116
+ throw new Error("model_gateway_input_token_count_provider_mismatch");
117
+ }
98
118
  }
99
- const result = parseInputTokenCountResult(await response.json().catch(() => undefined));
100
- if (result.provider !== provider) {
101
- throw new Error("model_gateway_input_token_count_provider_mismatch");
119
+ catch (error) {
120
+ diagnostics.failed({ kind: "exception", error, statusCode, aborted: params.abortSignal.aborted });
121
+ throw error;
102
122
  }
103
123
  traceDebug("model-gateway.client", "input_tokens.request.completed", {
104
124
  requestId,
@@ -108,6 +128,6 @@ export async function countModelGatewayInputTokensWithOptions(params, options =
108
128
  inputTokens: result.inputTokens,
109
129
  durationMs: Date.now() - startedAt,
110
130
  });
111
- updateInputTokenCountCache(cache, cacheKey, result);
131
+ updateInputTokenCountCache(eligibleCache, cacheKey, result);
112
132
  return result;
113
133
  }
@@ -0,0 +1,9 @@
1
+ export type ModelGatewayInvocationFailureKind = "network" | "http" | "stream" | "inactivity" | "missing_stream";
2
+ /** A failed transport attempt, distinct from local validation or callbacks. */
3
+ export declare class ModelGatewayInvocationError extends Error {
4
+ readonly kind: ModelGatewayInvocationFailureKind;
5
+ constructor(kind: ModelGatewayInvocationFailureKind, message: string, options?: ErrorOptions);
6
+ }
7
+ export declare function wrapModelGatewayTransportError(kind: "network" | "stream", cause: unknown): ModelGatewayInvocationError;
8
+ /** Only fetch rejection is classified; request construction stays with callers. */
9
+ export declare function fetchModelGatewayResponse(url: string, init: RequestInit, abortSignal: AbortSignal): Promise<Response>;
@@ -0,0 +1,30 @@
1
+ /** A failed transport attempt, distinct from local validation or callbacks. */
2
+ export class ModelGatewayInvocationError extends Error {
3
+ kind;
4
+ constructor(kind, message, options) {
5
+ super(message, options);
6
+ this.kind = kind;
7
+ this.name = "ModelGatewayInvocationError";
8
+ }
9
+ }
10
+ export function wrapModelGatewayTransportError(kind, cause) {
11
+ return new ModelGatewayInvocationError(kind, readTransportFailureMessage(kind, cause), { cause });
12
+ }
13
+ function readTransportFailureMessage(kind, cause) {
14
+ if (cause instanceof Error)
15
+ return cause.message;
16
+ if (typeof cause === "string")
17
+ return cause;
18
+ return `model_gateway_${kind}_failed`;
19
+ }
20
+ /** Only fetch rejection is classified; request construction stays with callers. */
21
+ export async function fetchModelGatewayResponse(url, init, abortSignal) {
22
+ try {
23
+ return await fetch(url, init);
24
+ }
25
+ catch (error) {
26
+ if (abortSignal.aborted)
27
+ throw error;
28
+ throw wrapModelGatewayTransportError("network", error);
29
+ }
30
+ }