@abot-ai/runtime 1.9.0 → 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 (506) 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 +19 -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/contracts.d.ts +3 -0
  15. package/dist/src/model-gateway/client/input-token-count.js +36 -16
  16. package/dist/src/model-gateway/client/message-projection.d.ts +2 -0
  17. package/dist/src/model-gateway/client/message-projection.js +1 -0
  18. package/dist/src/model-gateway/client/options.js +1 -1
  19. package/dist/src/model-gateway/client/raw.js +1 -0
  20. package/dist/src/model-gateway/index.d.ts +1 -1
  21. package/dist/src/model-gateway/observability/input-token-count-diagnostics.d.ts +26 -0
  22. package/dist/src/model-gateway/observability/input-token-count-diagnostics.js +178 -0
  23. package/dist/src/model-gateway/policy/invocation-policy.d.ts +1 -3
  24. package/dist/src/model-gateway/policy/invocation-policy.js +3 -30
  25. package/dist/src/model-gateway/policy/reasoning-mode-budget.d.ts +5 -0
  26. package/dist/src/model-gateway/policy/reasoning-mode-budget.js +13 -0
  27. package/dist/src/model-gateway/policy/reasoning-policy.d.ts +10 -0
  28. package/dist/src/model-gateway/policy/reasoning-policy.js +124 -0
  29. package/dist/src/model-gateway/protocol/openai-embedding-response.d.ts +1 -0
  30. package/dist/src/model-gateway/protocol/openai-embedding-response.js +28 -0
  31. package/dist/src/model-gateway/protocol/sse-data.d.ts +9 -0
  32. package/dist/src/model-gateway/protocol/sse-data.js +67 -0
  33. package/dist/src/model-gateway/providers/envelope-budget.js +10 -1
  34. package/dist/src/model-gateway/providers/llamacpp/adapter.d.ts +2 -0
  35. package/dist/src/model-gateway/providers/llamacpp/adapter.js +79 -0
  36. package/dist/src/model-gateway/providers/llamacpp/connection.d.ts +9 -0
  37. package/dist/src/model-gateway/providers/llamacpp/connection.js +73 -0
  38. package/dist/src/model-gateway/providers/llamacpp/diagnostics.d.ts +2 -0
  39. package/dist/src/model-gateway/providers/llamacpp/diagnostics.js +17 -0
  40. package/dist/src/model-gateway/providers/llamacpp/embeddings.d.ts +2 -0
  41. package/dist/src/model-gateway/providers/llamacpp/embeddings.js +56 -0
  42. package/dist/src/model-gateway/providers/llamacpp/input-token-count.d.ts +3 -0
  43. package/dist/src/model-gateway/providers/llamacpp/input-token-count.js +59 -0
  44. package/dist/src/model-gateway/providers/llamacpp/message-projection.d.ts +2 -0
  45. package/dist/src/model-gateway/providers/llamacpp/message-projection.js +33 -0
  46. package/dist/src/model-gateway/providers/llamacpp/payload.d.ts +2 -0
  47. package/dist/src/model-gateway/providers/llamacpp/payload.js +44 -0
  48. package/dist/src/model-gateway/providers/llamacpp/response-lifetime.d.ts +1 -0
  49. package/dist/src/model-gateway/providers/llamacpp/response-lifetime.js +56 -0
  50. package/dist/src/model-gateway/providers/llamacpp/schema-format.d.ts +2 -0
  51. package/dist/src/model-gateway/providers/llamacpp/schema-format.js +29 -0
  52. package/dist/src/model-gateway/providers/llamacpp/settings.d.ts +9 -0
  53. package/dist/src/model-gateway/providers/llamacpp/settings.js +25 -0
  54. package/dist/src/model-gateway/providers/llamacpp/stream-normalizer.d.ts +10 -0
  55. package/dist/src/model-gateway/providers/llamacpp/stream-normalizer.js +85 -0
  56. package/dist/src/model-gateway/providers/llamacpp/stream.d.ts +9 -0
  57. package/dist/src/model-gateway/providers/llamacpp/stream.js +33 -0
  58. package/dist/src/model-gateway/providers/openai/embeddings.js +2 -29
  59. package/dist/src/model-gateway/providers/openai/sse-data.d.ts +1 -9
  60. package/dist/src/model-gateway/providers/openai/sse-data.js +1 -67
  61. package/dist/src/model-gateway/providers/registry.js +2 -0
  62. package/dist/src/model-gateway/server/input-token-count-handler.js +10 -1
  63. package/dist/src/model-gateway/types.d.ts +11 -1
  64. package/dist/src/runtime/adapters/long-term-memory/onboarding-provider-availability.d.ts +4 -0
  65. package/dist/src/runtime/adapters/long-term-memory/onboarding-provider-availability.js +11 -0
  66. package/dist/src/runtime/adapters/long-term-memory/onboarding-service.js +28 -1
  67. package/dist/src/runtime/adapters/registered-tool-payload-related-artifacts.d.ts +1 -0
  68. package/dist/src/runtime/adapters/registered-tool-payload-related-artifacts.js +6 -1
  69. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/contracts.d.ts +1 -0
  70. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/execution.d.ts +1 -0
  71. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/execution.js +2 -0
  72. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.d.ts +1 -0
  73. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.js +2 -0
  74. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.d.ts +1 -0
  75. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.js +1 -0
  76. package/dist/src/runtime/adapters/registered-tool-worker-capabilities.js +1 -0
  77. package/dist/src/runtime/adapters/scheduler-runtime.js +2 -0
  78. package/dist/src/runtime/automations/agent-step-executor.js +1 -0
  79. package/dist/src/runtime/automations/catalog.d.ts +3 -0
  80. package/dist/src/runtime/automations/catalog.js +2 -0
  81. package/dist/src/runtime/automations/definition-contracts.d.ts +2 -0
  82. package/dist/src/runtime/automations/definition-input.js +3 -1
  83. package/dist/src/runtime/automations/draft-mutations.js +5 -1
  84. package/dist/src/runtime/automations/model-dependency-projection.d.ts +3 -1
  85. package/dist/src/runtime/automations/model-dependency-projection.js +4 -2
  86. package/dist/src/runtime/automations/publication-validation.js +7 -0
  87. package/dist/src/runtime/automations/saved-agent-management.js +1 -0
  88. package/dist/src/runtime/automations/service.d.ts +3 -0
  89. package/dist/src/runtime/capabilities/automation-builder/payload-schema.js +7 -5
  90. package/dist/src/runtime/capabilities/automations/authoring-catalog.d.ts +9 -0
  91. package/dist/src/runtime/capabilities/automations/authoring-catalog.js +1 -0
  92. package/dist/src/runtime/capabilities/automations/authoring-preparation.d.ts +3 -0
  93. package/dist/src/runtime/capabilities/automations/tool-contract.js +3 -2
  94. package/dist/src/runtime/capabilities/automations/tool-module.js +16 -7
  95. package/dist/src/runtime/capabilities/model-reasoning-controls.d.ts +23 -0
  96. package/dist/src/runtime/capabilities/model-reasoning-controls.js +56 -0
  97. package/dist/src/runtime/capabilities/scheduling/create-operations.js +2 -0
  98. package/dist/src/runtime/capabilities/scheduling/job-list-page.d.ts +1 -0
  99. package/dist/src/runtime/capabilities/scheduling/tool-module.js +5 -2
  100. package/dist/src/runtime/capabilities/scheduling/update-operations.js +2 -0
  101. package/dist/src/runtime/config/builders.js +6 -0
  102. package/dist/src/runtime/config/effective-model-config-validation.js +4 -0
  103. package/dist/src/runtime/config/llamacpp-profile-validation.d.ts +3 -0
  104. package/dist/src/runtime/config/llamacpp-profile-validation.js +15 -0
  105. package/dist/src/runtime/config/model-reasoning-schema.d.ts +40 -0
  106. package/dist/src/runtime/config/model-reasoning-schema.js +38 -0
  107. package/dist/src/runtime/config/model-reasoning-validation.d.ts +3 -0
  108. package/dist/src/runtime/config/model-reasoning-validation.js +37 -0
  109. package/dist/src/runtime/config/runner/step-instructions.d.ts +4 -0
  110. package/dist/src/runtime/config/runner/step-instructions.js +10 -6
  111. package/dist/src/runtime/config/schema.js +3 -0
  112. package/dist/src/runtime/config/validation/model-invocation-config-validation.js +14 -0
  113. package/dist/src/runtime/context/compacted-capability-result-receipt.d.ts +2 -0
  114. package/dist/src/runtime/context/compacted-capability-result-receipt.js +8 -7
  115. package/dist/src/runtime/context/execution-compacted-evidence.d.ts +4 -0
  116. package/dist/src/runtime/context/execution-compacted-evidence.js +2 -23
  117. package/dist/src/runtime/context/execution-compaction-checkpoint-selection.d.ts +19 -0
  118. package/dist/src/runtime/context/execution-compaction-checkpoint-selection.js +104 -0
  119. package/dist/src/runtime/context/model-step-compaction-inheritance.d.ts +12 -0
  120. package/dist/src/runtime/context/model-step-compaction-inheritance.js +28 -0
  121. package/dist/src/runtime/context/model-step-compaction-projection.d.ts +12 -0
  122. package/dist/src/runtime/context/model-step-compaction-projection.js +322 -0
  123. package/dist/src/runtime/context/model-step-compaction.d.ts +2 -1
  124. package/dist/src/runtime/context/model-step-compaction.js +25 -316
  125. package/dist/src/runtime/context/operation-supervision-compacted-evidence.js +7 -1
  126. package/dist/src/runtime/context/request-context.d.ts +2 -0
  127. package/dist/src/runtime/context/request-context.js +16 -0
  128. package/dist/src/runtime/context/request-tool-results-checkpoint.d.ts +2 -1
  129. package/dist/src/runtime/context/request-tool-results-checkpoint.js +35 -6
  130. package/dist/src/runtime/context/request-tool-results.js +3 -1
  131. package/dist/src/runtime/context/semantic-compaction/checkpoint-message.d.ts +5 -1
  132. package/dist/src/runtime/context/semantic-compaction/checkpoint-message.js +10 -4
  133. package/dist/src/runtime/context/semantic-compaction/execution-evidence-instructions.d.ts +4 -0
  134. package/dist/src/runtime/context/semantic-compaction/execution-evidence-instructions.js +38 -0
  135. package/dist/src/runtime/context/semantic-compaction/generation-contracts.d.ts +3 -1
  136. package/dist/src/runtime/context/semantic-compaction/generation-input.js +15 -10
  137. package/dist/src/runtime/context/semantic-compaction/inherited-source-digests.d.ts +8 -0
  138. package/dist/src/runtime/context/semantic-compaction/inherited-source-digests.js +76 -0
  139. package/dist/src/runtime/context/semantic-compaction/replacement-budget.js +3 -1
  140. package/dist/src/runtime/context/semantic-compaction/run.js +6 -12
  141. package/dist/src/runtime/knowledge-skills/builtins/computer-use.js +1 -1
  142. package/dist/src/runtime/knowledge-skills/builtins/technical-work.js +20 -2
  143. package/dist/src/runtime/knowledge-skills/builtins/what-can-i-do.d.ts +2 -0
  144. package/dist/src/runtime/knowledge-skills/builtins/what-can-i-do.js +27 -0
  145. package/dist/src/runtime/knowledge-skills/catalog.js +2 -0
  146. package/dist/src/runtime/local-application.d.ts +5 -0
  147. package/dist/src/runtime/local-host/app-service-dispatch.d.ts +1 -1
  148. package/dist/src/runtime/local-host/app-service-dispatch.js +2 -0
  149. package/dist/src/runtime/local-host/client-services.d.ts +5 -0
  150. package/dist/src/runtime/local-host/saved-approvals.js +1 -0
  151. package/dist/src/runtime/long-term-memory/onboarding/configuration.js +5 -7
  152. package/dist/src/runtime/long-term-memory/onboarding/contracts.d.ts +26 -0
  153. package/dist/src/runtime/long-term-memory/onboarding/embedding-profile-id.d.ts +1 -0
  154. package/dist/src/runtime/long-term-memory/onboarding/embedding-profile-id.js +8 -0
  155. package/dist/src/runtime/long-term-memory/onboarding/saved-profiles.d.ts +17 -0
  156. package/dist/src/runtime/long-term-memory/onboarding/saved-profiles.js +77 -0
  157. package/dist/src/runtime/long-term-memory/onboarding/service.js +40 -10
  158. package/dist/src/runtime/model/input-token-count.js +1 -0
  159. package/dist/src/runtime/model/invoke-step.js +12 -0
  160. package/dist/src/runtime/model/invoke-structured-step.d.ts +4 -1
  161. package/dist/src/runtime/model/invoke-structured-step.js +4 -0
  162. package/dist/src/runtime/model/model-catalog.d.ts +3 -0
  163. package/dist/src/runtime/model/model-catalog.js +2 -0
  164. package/dist/src/runtime/model/model-context-budget.d.ts +5 -0
  165. package/dist/src/runtime/model/model-context-budget.js +2 -0
  166. package/dist/src/runtime/model/model-step-port.d.ts +7 -0
  167. package/dist/src/runtime/model/optional-context-admission.d.ts +18 -0
  168. package/dist/src/runtime/model/optional-context-admission.js +23 -0
  169. package/dist/src/runtime/ports.d.ts +3 -1
  170. package/dist/src/runtime/projects/contracts.d.ts +6 -0
  171. package/dist/src/runtime/projects/registry-format.d.ts +3 -0
  172. package/dist/src/runtime/projects/registry-format.js +50 -0
  173. package/dist/src/runtime/projects/repository.d.ts +6 -3
  174. package/dist/src/runtime/projects/repository.js +26 -19
  175. package/dist/src/runtime/projects/service.js +11 -0
  176. package/dist/src/runtime/request/approval-wait/preflight.js +1 -0
  177. package/dist/src/runtime/request/approval-wait/snapshot.d.ts +1 -1
  178. package/dist/src/runtime/request/approval-wait/snapshot.js +1 -0
  179. package/dist/src/runtime/request/contracts.d.ts +5 -1
  180. package/dist/src/runtime/request/execution-facets.js +2 -0
  181. package/dist/src/runtime/request/execution-payload-artifact-policy.d.ts +3 -0
  182. package/dist/src/runtime/request/execution-payload-artifact-policy.js +6 -0
  183. package/dist/src/runtime/request/execution-payload-compacted-evidence.js +1 -0
  184. package/dist/src/runtime/request/execution-scope-surfaces.d.ts +2 -0
  185. package/dist/src/runtime/request/execution-scope-surfaces.js +3 -0
  186. package/dist/src/runtime/request/execution-scope.d.ts +2 -0
  187. package/dist/src/runtime/request/execution-scope.js +2 -0
  188. package/dist/src/runtime/request/input.d.ts +1 -0
  189. package/dist/src/runtime/request/input.js +1 -0
  190. package/dist/src/runtime/request/prepared-execution.d.ts +1 -0
  191. package/dist/src/runtime/request/prepared-execution.js +3 -0
  192. package/dist/src/runtime/request/reasoning-preference.d.ts +10 -0
  193. package/dist/src/runtime/request/reasoning-preference.js +29 -0
  194. package/dist/src/runtime/request/root-reference-action.js +3 -3
  195. package/dist/src/runtime/request/root-skill-read-admission.d.ts +4 -0
  196. package/dist/src/runtime/request/root-skill-read-admission.js +14 -0
  197. package/dist/src/runtime/request/root-skill-read.js +13 -5
  198. package/dist/src/runtime/request/supervisor-skill-selection-window.d.ts +16 -0
  199. package/dist/src/runtime/request/supervisor-skill-selection-window.js +17 -0
  200. package/dist/src/runtime/request/worker-capability-composition.js +2 -0
  201. package/dist/src/runtime/scheduler/contracts.d.ts +7 -1
  202. package/dist/src/runtime/scheduler/job-management.js +7 -1
  203. package/dist/src/runtime/scheduler/run-records.js +2 -0
  204. package/dist/src/runtime/scheduler/schedule-validation.js +2 -0
  205. package/dist/src/runtime/scheduler/scheduler-engine.js +1 -0
  206. package/dist/src/runtime/scheduler/snapshot-validation.js +2 -0
  207. package/dist/src/runtime/steps/auditor-decision/projection.js +2 -0
  208. package/dist/src/runtime/steps/execution-agent/capability-controls-partition.d.ts +9 -0
  209. package/dist/src/runtime/steps/execution-agent/capability-controls-partition.js +29 -0
  210. package/dist/src/runtime/steps/execution-agent/capability-scope.d.ts +17 -0
  211. package/dist/src/runtime/steps/execution-agent/capability-scope.js +54 -0
  212. package/dist/src/runtime/steps/execution-agent/compaction.js +22 -6
  213. package/dist/src/runtime/steps/execution-agent/controls-compacted-evidence.js +2 -0
  214. package/dist/src/runtime/steps/execution-agent/evidence-reuse-instructions.d.ts +6 -0
  215. package/dist/src/runtime/steps/execution-agent/evidence-reuse-instructions.js +13 -0
  216. package/dist/src/runtime/steps/execution-agent/format.js +3 -6
  217. package/dist/src/runtime/steps/execution-agent/input.d.ts +5 -1
  218. package/dist/src/runtime/steps/execution-agent/input.js +10 -36
  219. package/dist/src/runtime/steps/execution-agent/observation-guidance.d.ts +11 -0
  220. package/dist/src/runtime/steps/execution-agent/observation-guidance.js +33 -0
  221. package/dist/src/runtime/steps/execution-agent/prompt.js +2 -0
  222. package/dist/src/runtime/steps/execution-agent/refinement.d.ts +3 -2
  223. package/dist/src/runtime/steps/execution-agent/refinement.js +17 -6
  224. package/dist/src/runtime/steps/execution-agent/run.js +7 -1
  225. package/dist/src/runtime/steps/skill-read-decision.d.ts +1 -0
  226. package/dist/src/runtime/steps/skill-read-decision.js +9 -4
  227. package/dist/src/runtime/steps/supervisor-decision/artifact-paths.d.ts +6 -1
  228. package/dist/src/runtime/steps/supervisor-decision/artifact-paths.js +15 -0
  229. package/dist/src/runtime/steps/supervisor-decision/contracts.d.ts +1 -1
  230. package/dist/src/runtime/steps/supervisor-decision/contracts.js +2 -0
  231. package/dist/src/runtime/steps/supervisor-decision/decision-phases.d.ts +3 -0
  232. package/dist/src/runtime/steps/supervisor-decision/decision-phases.js +22 -3
  233. package/dist/src/runtime/steps/supervisor-decision/delegation-contract.d.ts +9 -0
  234. package/dist/src/runtime/steps/supervisor-decision/delegation-contract.js +82 -0
  235. package/dist/src/runtime/steps/supervisor-decision/delegation-input.d.ts +7 -0
  236. package/dist/src/runtime/steps/supervisor-decision/delegation-input.js +105 -0
  237. package/dist/src/runtime/steps/supervisor-decision/delegation-prompt.d.ts +7 -0
  238. package/dist/src/runtime/steps/supervisor-decision/delegation-prompt.js +13 -0
  239. package/dist/src/runtime/steps/supervisor-decision/input.d.ts +1 -0
  240. package/dist/src/runtime/steps/supervisor-decision/preparation-input.d.ts +3 -5
  241. package/dist/src/runtime/steps/supervisor-decision/preparation-input.js +5 -21
  242. package/dist/src/runtime/steps/supervisor-decision/preparation.d.ts +4 -1
  243. package/dist/src/runtime/steps/supervisor-decision/preparation.js +58 -6
  244. package/dist/src/runtime/steps/supervisor-decision/procedure-entry.d.ts +22 -0
  245. package/dist/src/runtime/steps/supervisor-decision/procedure-entry.js +61 -0
  246. package/dist/src/runtime/steps/supervisor-decision/procedure-gate.d.ts +39 -0
  247. package/dist/src/runtime/steps/supervisor-decision/procedure-gate.js +146 -0
  248. package/dist/src/runtime/steps/supervisor-decision/procedure-memory.d.ts +9 -0
  249. package/dist/src/runtime/steps/supervisor-decision/procedure-memory.js +100 -0
  250. package/dist/src/runtime/steps/supervisor-decision/procedure-recall.d.ts +10 -0
  251. package/dist/src/runtime/steps/supervisor-decision/procedure-recall.js +52 -0
  252. package/dist/src/runtime/steps/supervisor-decision/prompt.js +3 -16
  253. package/dist/src/runtime/steps/supervisor-decision/response-recommendation.js +2 -2
  254. package/dist/src/runtime/steps/supervisor-decision/role-guidance.d.ts +3 -0
  255. package/dist/src/runtime/steps/supervisor-decision/role-guidance.js +20 -0
  256. package/dist/src/runtime/steps/supervisor-decision/run.js +50 -7
  257. package/dist/src/runtime/steps/supervisor-decision/skill-read-state.d.ts +10 -0
  258. package/dist/src/runtime/steps/supervisor-decision/skill-read-state.js +45 -0
  259. package/dist/src/runtime/steps/supervisor-decision/skill-selection-candidates.d.ts +15 -0
  260. package/dist/src/runtime/steps/supervisor-decision/skill-selection-candidates.js +25 -0
  261. package/dist/src/runtime/steps/supervisor-decision/skill-selection-catalog.d.ts +3 -0
  262. package/dist/src/runtime/steps/supervisor-decision/skill-selection-catalog.js +15 -0
  263. package/dist/src/runtime/steps/supervisor-decision/skill-selection-continuation.d.ts +10 -0
  264. package/dist/src/runtime/steps/supervisor-decision/skill-selection-continuation.js +65 -0
  265. package/dist/src/runtime/steps/supervisor-decision/skill-selection-input.d.ts +3 -1
  266. package/dist/src/runtime/steps/supervisor-decision/skill-selection-input.js +20 -22
  267. package/dist/src/runtime/steps/supervisor-decision/skill-selection.d.ts +3 -2
  268. package/dist/src/runtime/steps/supervisor-decision/skill-selection.js +62 -15
  269. package/dist/src/runtime/steps/supervisor-response/prompt.js +18 -4
  270. package/dist/src/shared/model-reasoning-modes.d.ts +5 -0
  271. package/dist/src/shared/model-reasoning-modes.js +20 -0
  272. package/dist/src/shared/model-reasoning-schema.d.ts +38 -0
  273. package/dist/src/shared/model-reasoning-schema.js +29 -0
  274. package/dist/src/shared/model-reasoning.d.ts +35 -0
  275. package/dist/src/shared/model-reasoning.js +100 -0
  276. package/dist/src/web-ui/app/ARCHITECTURE.md +13 -0
  277. package/dist/src/web-ui/app/app-bootstrap.js +9 -12
  278. package/dist/src/web-ui/app/app-dom.js +6 -1
  279. package/dist/src/web-ui/app/app-state.js +1 -0
  280. package/dist/src/web-ui/app/app.js +8 -3
  281. package/dist/src/web-ui/app/appearance-feature.js +28 -0
  282. package/dist/src/web-ui/app/automations-feature.js +20 -11
  283. package/dist/src/web-ui/app/components/appearance-dialog.js +79 -0
  284. package/dist/src/web-ui/app/components/automations/archive-actions.js +5 -3
  285. package/dist/src/web-ui/app/components/automations/authoring-entry.js +26 -7
  286. package/dist/src/web-ui/app/components/automations/confirmation-actions.js +78 -0
  287. package/dist/src/web-ui/app/components/automations/draft-recovery-actions.js +1 -0
  288. package/dist/src/web-ui/app/components/automations/node-inspector.js +5 -1
  289. package/dist/src/web-ui/app/components/automations/step-editor-dialog.js +4 -2
  290. package/dist/src/web-ui/app/components/automations/timeline.js +2 -2
  291. package/dist/src/web-ui/app/components/automations/workspace-navigation.js +37 -0
  292. package/dist/src/web-ui/app/components/automations/workspace.js +31 -46
  293. package/dist/src/web-ui/app/components/config-workspace/config-model.js +6 -0
  294. package/dist/src/web-ui/app/components/config-workspace/model-removal.js +4 -2
  295. package/dist/src/web-ui/app/components/config-workspace/model-rendering.js +8 -16
  296. package/dist/src/web-ui/app/components/config-workspace/reasoning-budget-edit.js +113 -0
  297. package/dist/src/web-ui/app/components/config-workspace/reasoning-budget.d.ts +16 -0
  298. package/dist/src/web-ui/app/components/config-workspace/reasoning-budget.js +67 -0
  299. package/dist/src/web-ui/app/components/config-workspace/reasoning-mode-budgets.d.ts +7 -0
  300. package/dist/src/web-ui/app/components/config-workspace/reasoning-mode-budgets.js +25 -0
  301. package/dist/src/web-ui/app/components/config-workspace/workspace-events.js +15 -7
  302. package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +32 -12
  303. package/dist/src/web-ui/app/components/config-workspace/workspace-persistence.js +1 -1
  304. package/dist/src/web-ui/app/components/config-workspace.js +2 -1
  305. package/dist/src/web-ui/app/components/confirmation-dialog.js +88 -0
  306. package/dist/src/web-ui/app/components/conversation-activity.d.ts +2 -0
  307. package/dist/src/web-ui/app/components/conversation-activity.js +32 -3
  308. package/dist/src/web-ui/app/components/conversation-memory-activity.js +31 -0
  309. package/dist/src/web-ui/app/components/conversation-role-cards.d.ts +2 -0
  310. package/dist/src/web-ui/app/components/conversation-role-cards.js +14 -11
  311. package/dist/src/web-ui/app/components/conversation-skill-activity.js +67 -0
  312. package/dist/src/web-ui/app/components/conversation-tools.js +5 -5
  313. package/dist/src/web-ui/app/components/conversation-view.js +6 -0
  314. package/dist/src/web-ui/app/components/dashboard/approvals.js +13 -1
  315. package/dist/src/web-ui/app/components/long-term-memory/embedding-connection-dialog.d.ts +38 -0
  316. package/dist/src/web-ui/app/components/long-term-memory/embedding-connection-dialog.js +289 -0
  317. package/dist/src/web-ui/app/components/long-term-memory/embedding-connection-feature.js +75 -0
  318. package/dist/src/web-ui/app/components/long-term-memory/embedding-connection-rendering.js +31 -0
  319. package/dist/src/web-ui/app/components/long-term-memory/manager.js +15 -5
  320. package/dist/src/web-ui/app/components/long-term-memory/saved-embedding-profiles.js +114 -0
  321. package/dist/src/web-ui/app/components/long-term-memory/setup-rendering.js +55 -0
  322. package/dist/src/web-ui/app/components/long-term-memory-setup.js +141 -76
  323. package/dist/src/web-ui/app/components/model-setup/rendering.js +3 -2
  324. package/dist/src/web-ui/app/components/model-setup/validation.js +6 -2
  325. package/dist/src/web-ui/app/components/model-setup/wizard.d.ts +1 -0
  326. package/dist/src/web-ui/app/components/model-setup/wizard.js +28 -5
  327. package/dist/src/web-ui/app/components/passive-learning/memory.js +12 -5
  328. package/dist/src/web-ui/app/components/plugins/manager.js +14 -0
  329. package/dist/src/web-ui/app/components/plugins/removal.js +10 -2
  330. package/dist/src/web-ui/app/components/project-group-actions.js +35 -0
  331. package/dist/src/web-ui/app/components/project-session-groups.js +17 -31
  332. package/dist/src/web-ui/app/components/runtime-setup/commands.js +1 -1
  333. package/dist/src/web-ui/app/components/runtime-setup/connection-form.d.ts +15 -0
  334. package/dist/src/web-ui/app/components/runtime-setup/connection-form.js +32 -9
  335. package/dist/src/web-ui/app/components/runtime-setup/connection-input.js +23 -0
  336. package/dist/src/web-ui/app/components/runtime-setup/connection-inspection.js +57 -0
  337. package/dist/src/web-ui/app/components/runtime-setup/connection-state.js +18 -4
  338. package/dist/src/web-ui/app/components/runtime-setup/embedding-credential-status.js +3 -0
  339. package/dist/src/web-ui/app/components/runtime-setup/embedding-provider-options.js +54 -0
  340. package/dist/src/web-ui/app/components/runtime-setup/embedding-provider-receipt.js +3 -0
  341. package/dist/src/web-ui/app/components/runtime-setup/embedding-rendering.js +22 -22
  342. package/dist/src/web-ui/app/components/runtime-setup/embedding.js +60 -16
  343. package/dist/src/web-ui/app/components/runtime-setup/reasoning-fields.d.ts +17 -0
  344. package/dist/src/web-ui/app/components/runtime-setup/reasoning-fields.js +54 -0
  345. package/dist/src/web-ui/app/components/runtime-setup/validation.js +5 -1
  346. package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +9 -3
  347. package/dist/src/web-ui/app/components/runtime-setup-guide.js +20 -29
  348. package/dist/src/web-ui/app/components/schedules/details.js +2 -2
  349. package/dist/src/web-ui/app/components/schedules/form.js +12 -5
  350. package/dist/src/web-ui/app/components/schedules/workspace.js +30 -18
  351. package/dist/src/web-ui/app/components/session-list-viewport.js +49 -0
  352. package/dist/src/web-ui/app/components/session-search-disclosure.js +27 -0
  353. package/dist/src/web-ui/app/components/skills/workspace.js +7 -3
  354. package/dist/src/web-ui/app/components/spark-chat/panel.js +7 -3
  355. package/dist/src/web-ui/app/components/spark-chat/settings.js +57 -15
  356. package/dist/src/web-ui/app/components/tool-approval-card.d.ts +2 -1
  357. package/dist/src/web-ui/app/components/tool-approval-card.js +10 -2
  358. package/dist/src/web-ui/app/components/tool-approval-rejection-input.js +116 -0
  359. package/dist/src/web-ui/app/components/workspace-shell.js +30 -38
  360. package/dist/src/web-ui/app/components/workspace-transitions.js +42 -0
  361. package/dist/src/web-ui/app/configuration-feature.js +34 -4
  362. package/dist/src/web-ui/app/controllers/app-event-bindings.js +45 -29
  363. package/dist/src/web-ui/app/controllers/appearance-controller.js +105 -0
  364. package/dist/src/web-ui/app/controllers/automations-controller.js +9 -1
  365. package/dist/src/web-ui/app/controllers/composer-feature.d.ts +1 -1
  366. package/dist/src/web-ui/app/controllers/composer-feature.js +10 -3
  367. package/dist/src/web-ui/app/controllers/composer-queue-controller.d.ts +1 -1
  368. package/dist/src/web-ui/app/controllers/composer-queue-controller.js +9 -3
  369. package/dist/src/web-ui/app/controllers/composer-submission-lifecycle.d.ts +1 -1
  370. package/dist/src/web-ui/app/controllers/conversation-workspace-activation.js +8 -2
  371. package/dist/src/web-ui/app/controllers/dashboard-approvals-controller.js +10 -9
  372. package/dist/src/web-ui/app/controllers/environment-transition.js +2 -2
  373. package/dist/src/web-ui/app/controllers/environment-workspace-preparation.js +9 -7
  374. package/dist/src/web-ui/app/controllers/preference-view-sync.js +35 -0
  375. package/dist/src/web-ui/app/controllers/projects-controller.d.ts +4 -0
  376. package/dist/src/web-ui/app/controllers/projects-controller.js +64 -3
  377. package/dist/src/web-ui/app/controllers/reasoning-budget-controller.d.ts +17 -0
  378. package/dist/src/web-ui/app/controllers/reasoning-budget-controller.js +80 -0
  379. package/dist/src/web-ui/app/controllers/reasoning-budget-menu-events.js +45 -0
  380. package/dist/src/web-ui/app/controllers/reasoning-mode-controller.js +35 -40
  381. package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +6 -1
  382. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +16 -3
  383. package/dist/src/web-ui/app/controllers/session-controller.js +34 -9
  384. package/dist/src/web-ui/app/controllers/session-sidebar-controller.js +4 -3
  385. package/dist/src/web-ui/app/controllers/skills-controller.js +33 -16
  386. package/dist/src/web-ui/app/controllers/spark-chat-sync.js +1 -1
  387. package/dist/src/web-ui/app/controllers/spark-handoff-navigation.js +7 -1
  388. package/dist/src/web-ui/app/controllers/tool-approval-controller.d.ts +2 -1
  389. package/dist/src/web-ui/app/controllers/tool-approval-controller.js +36 -3
  390. package/dist/src/web-ui/app/controllers/workspace-conversation-opener.js +8 -2
  391. package/dist/src/web-ui/app/controllers/workspace-route-controller.js +41 -10
  392. package/dist/src/web-ui/app/index.html +38 -32
  393. package/dist/src/web-ui/app/lib/color-palettes.d.ts +17 -0
  394. package/dist/src/web-ui/app/lib/color-palettes.js +20 -0
  395. package/dist/src/web-ui/app/lib/memory-activity-model.d.ts +12 -0
  396. package/dist/src/web-ui/app/lib/memory-activity-model.js +61 -0
  397. package/dist/src/web-ui/app/lib/navigation-display.d.ts +8 -0
  398. package/dist/src/web-ui/app/lib/navigation-display.js +12 -0
  399. package/dist/src/web-ui/app/lib/reasoning-controls.js +47 -6
  400. package/dist/src/web-ui/app/lib/reasoning-preference.d.ts +9 -0
  401. package/dist/src/web-ui/app/lib/reasoning-preference.js +75 -0
  402. package/dist/src/web-ui/app/lib/session-composer-queue.d.ts +4 -0
  403. package/dist/src/web-ui/app/lib/session-composer-queue.js +4 -0
  404. package/dist/src/web-ui/app/lib/session-project-groups.js +28 -0
  405. package/dist/src/web-ui/app/lib/session-sidebar-order.js +7 -5
  406. package/dist/src/web-ui/app/lib/tool-activity-event.d.ts +1 -0
  407. package/dist/src/web-ui/app/lib/tool-activity-event.js +1 -0
  408. package/dist/src/web-ui/app/lib/tool-activity-model.d.ts +1 -0
  409. package/dist/src/web-ui/app/lib/tool-activity-model.js +1 -0
  410. package/dist/src/web-ui/app/lib/tool-approval-rejection-drafts.js +45 -0
  411. package/dist/src/web-ui/app/lib/tool-skill-activity-fields.js +1 -1
  412. package/dist/src/web-ui/app/notifications-feature.js +10 -2
  413. package/dist/src/web-ui/app/passive-learning-feature.js +2 -2
  414. package/dist/src/web-ui/app/projects-feature.js +40 -10
  415. package/dist/src/web-ui/app/runtime-onboarding-feature.js +1 -0
  416. package/dist/src/web-ui/app/schedules-feature.js +28 -5
  417. package/dist/src/web-ui/app/services/client-preferences.d.ts +4 -1
  418. package/dist/src/web-ui/app/services/client-preferences.js +2 -0
  419. package/dist/src/web-ui/app/services/conversation-reasoning-preferences.d.ts +11 -0
  420. package/dist/src/web-ui/app/services/conversation-reasoning-preferences.js +30 -0
  421. package/dist/src/web-ui/app/services/runtime-web-client/automations.js +6 -4
  422. package/dist/src/web-ui/app/services/runtime-web-client/configuration.js +5 -0
  423. package/dist/src/web-ui/app/services/runtime-web-client/memory.js +21 -0
  424. package/dist/src/web-ui/app/services/runtime-web-client/projects.d.ts +2 -1
  425. package/dist/src/web-ui/app/services/runtime-web-client/projects.js +4 -0
  426. package/dist/src/web-ui/app/services/runtime-web-client/tool-approvals.js +2 -0
  427. package/dist/src/web-ui/app/services/runtime-web-client.d.ts +16 -0
  428. package/dist/src/web-ui/app/services/runtime-web-client.js +2 -0
  429. package/dist/src/web-ui/app/services/session-sidebar-preferences.js +33 -13
  430. package/dist/src/web-ui/app/skills-feature.js +2 -3
  431. package/dist/src/web-ui/app/spark-chat-conversation.js +29 -3
  432. package/dist/src/web-ui/app/spark-chat-feature.js +13 -7
  433. package/dist/src/web-ui/app/styles/01-color-palettes.css +90 -0
  434. package/dist/src/web-ui/app/styles/11-product-links.css +6 -2
  435. package/dist/src/web-ui/app/styles/11-workspace-header-width.css +37 -25
  436. package/dist/src/web-ui/app/styles/12-conversation-sidebar.css +56 -22
  437. package/dist/src/web-ui/app/styles/13-projects.css +56 -19
  438. package/dist/src/web-ui/app/styles/19-runtime-setup.css +16 -0
  439. package/dist/src/web-ui/app/styles/22-reasoning-budget.css +39 -0
  440. package/dist/src/web-ui/app/styles/27-conversation-memory.css +45 -0
  441. package/dist/src/web-ui/app/styles/27-conversation-skills.css +96 -0
  442. package/dist/src/web-ui/app/styles/28-tool-approval-card.css +38 -1
  443. package/dist/src/web-ui/app/styles/35-embedding-profiles.css +159 -0
  444. package/dist/src/web-ui/app/styles/54-spark-chat.css +62 -46
  445. package/dist/src/web-ui/app/styles/65-appearance.css +60 -0
  446. package/dist/src/web-ui/app/styles/66-navigation-display.css +30 -0
  447. package/dist/src/web-ui/app/styles/67-confirmation-dialog.css +32 -0
  448. package/dist/src/web-ui/app/styles.css +8 -0
  449. package/dist/src/web-ui/client-state/preference-shapes.js +6 -1
  450. package/dist/src/web-ui/client-state/preferences.js +8 -2
  451. package/dist/src/web-ui/client-state/reasoning-preference-shape.d.ts +1 -0
  452. package/dist/src/web-ui/client-state/reasoning-preference-shape.js +18 -0
  453. package/dist/src/web-ui/local-runtime/api-router.d.ts +1 -0
  454. package/dist/src/web-ui/local-runtime/api-router.js +11 -0
  455. package/dist/src/web-ui/local-runtime/memory-embedding-connection-input.d.ts +7 -0
  456. package/dist/src/web-ui/local-runtime/memory-embedding-connection-input.js +22 -0
  457. package/dist/src/web-ui/local-runtime/memory-embedding-connection-service.d.ts +20 -0
  458. package/dist/src/web-ui/local-runtime/memory-embedding-connection-service.js +47 -0
  459. package/dist/src/web-ui/local-runtime/memory-onboarding-routes.js +32 -0
  460. package/dist/src/web-ui/local-runtime/model-connection-inspection.d.ts +7 -0
  461. package/dist/src/web-ui/local-runtime/model-connection-inspection.js +48 -0
  462. package/dist/src/web-ui/local-runtime/model-setup-catalog.d.ts +2 -1
  463. package/dist/src/web-ui/local-runtime/model-setup-catalog.js +3 -1
  464. package/dist/src/web-ui/local-runtime/model-setup-identity.js +1 -1
  465. package/dist/src/web-ui/local-runtime/model-setup-input.d.ts +5 -2
  466. package/dist/src/web-ui/local-runtime/model-setup-input.js +29 -6
  467. package/dist/src/web-ui/local-runtime/model-setup-provider.d.ts +1 -1
  468. package/dist/src/web-ui/local-runtime/model-setup-provider.js +9 -6
  469. package/dist/src/web-ui/local-runtime/model-setup-retry.js +4 -1
  470. package/dist/src/web-ui/local-runtime/model-setup-service.d.ts +2 -1
  471. package/dist/src/web-ui/local-runtime/pending-tool-approvals.js +4 -1
  472. package/dist/src/web-ui/local-runtime/project-routes.js +10 -2
  473. package/dist/src/web-ui/local-runtime/request-execution.js +1 -0
  474. package/dist/src/web-ui/local-runtime/runtime-setup-auth.d.ts +2 -0
  475. package/dist/src/web-ui/local-runtime/runtime-setup-auth.js +20 -0
  476. package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.js +3 -2
  477. package/dist/src/web-ui/local-runtime/runtime-setup-credential-completion.js +6 -1
  478. package/dist/src/web-ui/local-runtime/runtime-setup-input.d.ts +3 -2
  479. package/dist/src/web-ui/local-runtime/runtime-setup-input.js +17 -5
  480. package/dist/src/web-ui/local-runtime/runtime-setup-provider.d.ts +4 -1
  481. package/dist/src/web-ui/local-runtime/runtime-setup-provider.js +6 -2
  482. package/dist/src/web-ui/local-runtime/runtime-setup-routes.d.ts +11 -2
  483. package/dist/src/web-ui/local-runtime/runtime-setup-routes.js +11 -2
  484. package/dist/src/web-ui/local-runtime/runtime-setup-scaffold.js +3 -2
  485. package/dist/src/web-ui/local-runtime/runtime-setup-service.d.ts +25 -4
  486. package/dist/src/web-ui/local-runtime/runtime-setup-service.js +19 -9
  487. package/dist/src/web-ui/local-runtime/setup-embedding-input.d.ts +3 -1
  488. package/dist/src/web-ui/local-runtime/setup-embedding-input.js +38 -6
  489. package/dist/src/web-ui/local-runtime/setup-embedding-llamacpp.d.ts +11 -0
  490. package/dist/src/web-ui/local-runtime/setup-embedding-llamacpp.js +53 -0
  491. package/dist/src/web-ui/local-runtime/setup-embedding-provider.js +23 -9
  492. package/dist/src/web-ui/local-runtime/setup-embedding-routes.d.ts +7 -2
  493. package/dist/src/web-ui/local-runtime/setup-embedding-routes.js +5 -3
  494. package/dist/src/web-ui/local-runtime/setup-embedding-service.d.ts +1 -0
  495. package/docs/configuration.md +10 -8
  496. package/docs/installation.md +11 -5
  497. package/docs/llamacpp.md +248 -0
  498. package/docs/long-term-memory.md +12 -0
  499. package/docs/running-locally.md +7 -1
  500. package/package.json +2 -1
  501. package/plugins/project-orientation/source/index.ts +2 -3
  502. package/plugins/project-orientation/source/inspection-failure.ts +1 -1
  503. package/plugins/project-orientation/source/project-target.ts +29 -0
  504. package/plugins/project-orientation/src/index.cjs +21 -2
  505. package/runtime.config.schema.json +140 -0
  506. package/src/runtime/README.md +50 -4
@@ -0,0 +1,248 @@
1
+ # llama.cpp model connection
2
+
3
+ ABot includes a **llamacpp** provider alongside Ollama and OpenAI. It connects to
4
+ an independently installed and running llama-server; it does not install,
5
+ start, stop, update or download that server, its models or GPU drivers.
6
+
7
+ The implementation targets the server protocol in
8
+ [llama.cpp v0.7.0, revision 620d2225](https://github.com/ggml-org/llama.cpp/tree/620d2225cc436ab0b001e3200e590e3b286ef9ab).
9
+ Protocol fixtures exercise that interface. This is a source compatibility
10
+ reference, not a claim that a real server or every model/template was tested.
11
+ Earlier builds may not support the reasoning budget fields.
12
+
13
+ ## Input token counting and compaction
14
+
15
+ ABot uses `POST /v1/chat/completions/input_tokens` before context admission.
16
+ The endpoint is available in the pinned protocol revision above and performs
17
+ template rendering and tokenization without generating a response. Counting
18
+ uses the same model, projected messages, thinking controls and structured format
19
+ as generation, including the server's chat template and special tokens.
20
+ Structured-output grammar is not charged as additional prompt prose.
21
+
22
+ Each llama.cpp context assessment requests a fresh count instead of reusing the
23
+ client's token-count cache. The existing context budget and compactor consume
24
+ that measured count, and measure replacement candidates again. The final gateway
25
+ chat guard reuses a matching recent measurement; its existing estimate behavior
26
+ for a missing or expired measurement remains unchanged. Direct public `/raw`
27
+ calls retain their existing estimate guard. OpenAI caching and Ollama estimation
28
+ retain their existing behavior.
29
+
30
+ An unavailable counting endpoint, invalid response or failed authentication
31
+ fails the count explicitly; ABot does not silently substitute an estimate for
32
+ that failed call. Cancellation aborts counting. The count measures input size,
33
+ not server capacity: `contextWindowTokens` must still match the server's effective
34
+ context allocation.
35
+
36
+ ## Prepare the server
37
+
38
+ Use the official [llama.cpp server guide](https://github.com/ggml-org/llama.cpp/blob/620d2225cc436ab0b001e3200e590e3b286ef9ab/tools/server/README.md)
39
+ to install a build suitable for your OS/GPU and start your chosen model.
40
+ Set its model alias, effective context capacity, GPU allocation and listening
41
+ address explicitly. The example ABot origin is http://127.0.0.1:8080;
42
+ your server must actually listen there. Use the exact model ID returned by
43
+ the server, not an Ollama model-library name unless it is also your server alias.
44
+
45
+ The URL is resolved from the ABot Runtime host. A Windows browser does not
46
+ make a WSL or Docker Runtime use Windows loopback. Use an address reachable
47
+ from the Runtime for WSL-to-Windows, container-to-host or remote connections.
48
+ The setup form accepts an HTTP/HTTPS origin without credentials, query or path.
49
+
50
+ ## Register the connection
51
+
52
+ On a new installation choose **llama.cpp** in setup. For an existing installation,
53
+ open **Models → Add model** and choose a new llama.cpp connection or reuse a
54
+ saved connection.
55
+
56
+ Enter the model ID, physical context capacity and server origin. The context
57
+ value must match the effective per-request capacity configured by the server;
58
+ it is not an instruction to resize the server. The API key is optional for a
59
+ server without authentication. If supplied, ABot writes a private isolated
60
+ credential binding in .env, not a key inside the model JSON or browser state.
61
+ An existing saved connection retains its authentication settings.
62
+
63
+ **Check connection** reads GET /health and GET /v1/models only.
64
+ It never generates a response or saves settings. Server readiness does not prove
65
+ thinking support, tool support, image support or context capacity.
66
+
67
+ The **This model supports thinking** checkbox is available for all providers.
68
+ It declares a model capability; enable it only when the selected model supports
69
+ reasoning. Newly created llama.cpp profiles start with text input only and
70
+ thinking support disabled. No capability is inferred from the model name.
71
+
72
+ ## Thinking budget
73
+
74
+ For a llama.cpp model with thinking support enabled, setup and the model editor
75
+ offer a default budget. Invocation calibration can override that model default.
76
+
77
+ - **Inherit (no override):** omits the budget at that configuration layer.
78
+ - **Server default:** explicitly asks llama-server to use its configured default;
79
+ this may itself be a finite budget.
80
+ - **Token limit:** a whole number from 0 through 2147483647 for each
81
+ reasoning segment. Zero disables thinking; a positive value limits its tokens.
82
+
83
+ A budget is not a wall-clock timeout or a total user-request allowance.
84
+ One user request can invoke the model several times; each invocation may contain
85
+ more than one reasoning segment. The server can need closing tokens after the
86
+ limit and the final answer still needs output/context capacity.
87
+ The model's chat template must support thinking and the server's closing-tag
88
+ mechanism. A successful health check cannot validate that behavior.
89
+
90
+ The request-level **Off** control overrides a saved budget. Numeric limits are
91
+ only offered for llama.cpp; Ollama and OpenAI retain their existing effort
92
+ controls. A finite budget does not change ABot's role policy, approval rules
93
+ or tool permissions.
94
+
95
+ ### Shared modes and optional overrides
96
+
97
+ Chat, SPARK, schedules and automation agents expose the shared **Low / Reasoning /
98
+ Deep** choices. Their default wire values remain `none / medium / high`, subject
99
+ to existing profile and invocation calibration. A model's template determines
100
+ whether positive effort levels differ. Chat exposes separate menus for reasoning
101
+ depth and thinking budget; the other forms expose separate controls. A manual
102
+ token limit or server default preserves the effective positive effort, and
103
+ choosing a mode retains that budget. For example, Deep and a 512-token limit can
104
+ be selected together. Selecting a mode clears an explicit manual Thinking Off
105
+ setting so the newly chosen mode can take effect.
106
+
107
+ Selecting a positive budget or server default when the ordinary effort is
108
+ `none` enables thinking with `medium`; a zero budget disables thinking without
109
+ rewriting the saved effort. An explicit invocation override still wins. Choosing
110
+ Profile default in the budget menu removes only the manual budget, preserving
111
+ the selected mode.
112
+
113
+ The model editor also offers **Mode token overrides**. The optional
114
+ `generation.reasoningBudgetByMode` map accepts `fast`, `reasoning` and `deep`,
115
+ each with a non-negative integer limit. Zero disables thinking for that mode.
116
+ No mode limits are supplied automatically.
117
+ For example, `"reasoningBudgetByMode": { "fast": 32, "deep": 512 }` enables
118
+ bounded thinking for Low and Deep while Reasoning keeps the ordinary settings.
119
+ These numbers are illustrative, not application defaults.
120
+
121
+ A matching mode limit replaces the ordinary `reasoningBudget`. A positive limit
122
+ enables thinking even when Low or the profile effort would otherwise disable it;
123
+ an already positive configured effort is preserved. A zero limit disables
124
+ thinking. Explicit invocation effort and request-level Off still take precedence. Per-mode maps apply only to main model
125
+ steps and direct gateway calls; utility steps such as `context.compact` retain
126
+ their own calibration and ignore conversation mode budgets.
127
+
128
+ Configuration overlays replace the entire map. Omitting the field inherits the
129
+ parent map, while `{}` explicitly clears inherited mode limits. Blank entries in
130
+ a custom map use the ordinary effort and budget settings; they do not inherit individual
131
+ entries from the replaced map.
132
+
133
+ ~~~json
134
+ {
135
+ "provider": "local-llama",
136
+ "model": "gemma",
137
+ "supportsThinking": true,
138
+ "contextWindowTokens": 32768,
139
+ "capabilities": { "inputModalities": ["text"] },
140
+ "generation": {
141
+ "reasoningBudget": { "mode": "tokens", "tokens": 512 }
142
+ },
143
+ "calibration": {
144
+ "context.compact": {
145
+ "generation": { "reasoningBudget": { "mode": "server-default" } }
146
+ }
147
+ }
148
+ }
149
+ ~~~
150
+
151
+ Provider connection in runtime.config.json:
152
+
153
+ ~~~json
154
+ {
155
+ "models": {
156
+ "providers": {
157
+ "local-llama": {
158
+ "type": "llamacpp",
159
+ "baseUrl": "http://127.0.0.1:8080"
160
+ }
161
+ },
162
+ "profiles": {
163
+ "gemma": { "configRef": "./models/gemma.config.json" }
164
+ }
165
+ }
166
+ }
167
+ ~~~
168
+
169
+ For authenticated servers add an apiKeyEnv name and supply its key privately.
170
+ The wizard creates an isolated name automatically.
171
+
172
+ ## Command-line setup
173
+
174
+ ~~~bash
175
+ npx abot init --provider llamacpp --model gemma --base-url http://127.0.0.1:8080 --context-window 32768 --supports-thinking true --reasoning-budget 512
176
+ npx abot add-model --profile gemma-llama --provider llamacpp --model gemma --base-url http://127.0.0.1:8080 --supports-thinking true --reasoning-budget server-default
177
+ ~~~
178
+
179
+ For an authenticated connection add --api-key-env MY_LLAMA_KEY and set that
180
+ environment variable privately. Do not put an API secret in command arguments.
181
+ --supports-thinking true|false is also available for Ollama/OpenAI registration;
182
+ --reasoning-budget requires llama.cpp and explicit thinking support.
183
+
184
+ The add command preserves existing profiles and the selected default unless
185
+ --default is supplied. A reused provider ID must keep its existing endpoint.
186
+ Restart the owning gateway/ABot process after CLI changes. Web UI **Save and
187
+ apply** reloads an owned gateway or reports when an external owner must restart.
188
+
189
+ ## Embeddings and semantic memory
190
+
191
+ The llama.cpp adapter supports text embeddings through `/v1/embeddings`.
192
+ Use a dedicated embedding model and run its llama-server with `--embedding`
193
+ and a pooling mode other than `none`, as required by the official server API.
194
+ A chat model with thinking support does not automatically support embeddings.
195
+
196
+ In the setup wizard's memory step, choose an existing llama.cpp connection or
197
+ create another one for the embedding server. On an existing installation, open
198
+ **Memory → Setup → Add connection** to use the same form. A separate embedding server uses
199
+ its own address and optional API key; it does not replace the chat connection.
200
+ For example, chat can use port 8080 while embeddings use port 8081. Enter the
201
+ embedding model's exact server ID manually. Model listing and a health check do
202
+ not establish embedding support. **Test and save** sends an embedding probe and
203
+ enables memory only when that probe succeeds.
204
+
205
+ Existing installations can select a configured llama.cpp connection in memory
206
+ settings. Embeddings use the existing `models.embeddingProfiles` configuration,
207
+ independently of chat profiles and reasoning budgets. A manual configuration
208
+ fragment for a separate embedding connection is:
209
+
210
+ ~~~json
211
+ {
212
+ "models": {
213
+ "providers": {
214
+ "llama-embeddings": {
215
+ "type": "llamacpp",
216
+ "baseUrl": "http://127.0.0.1:8081"
217
+ }
218
+ },
219
+ "embeddingProfiles": {
220
+ "memory-embedding": {
221
+ "provider": "llama-embeddings",
222
+ "model": "your-embedding-model-alias"
223
+ }
224
+ }
225
+ },
226
+ "longTermMemory": {
227
+ "enabled": true,
228
+ "embeddingProfileId": "memory-embedding"
229
+ }
230
+ }
231
+ ~~~
232
+
233
+ The adapter validates response indices, vector count, dimensions and finite
234
+ values, and uses the existing cancellation and model-fingerprint contracts.
235
+ Semantic memory can also continue using a separate Ollama/OpenAI connection.
236
+
237
+ ## Boundaries and validation
238
+
239
+ Image input is not advertised. Embedding support does not change memory admission,
240
+ retention, retrieval or approval policy. No embedding model is installed or
241
+ selected automatically.
242
+
243
+ Validate real model behavior separately: ordinary text, structured decisions,
244
+ tool/result continuation, generated file contents, cancellation and stream
245
+ completion. Compare timing and output quality with thinking off, a finite budget
246
+ and server default under the same model/context/server configuration. Provider
247
+ traces record resolved controls and native usage when supplied; ABot does not
248
+ invent a budget-exhaustion event or a reasoning-token count.
@@ -194,6 +194,15 @@ It can list configured providers, discover models when the provider supports
194
194
  discovery, probe and enable a selected model, or disable the feature. A provider
195
195
  without discovery support accepts a model id entered by the user.
196
196
 
197
+ Choose **Add connection** to configure an embedding server directly from this
198
+ screen. The shared setup form supports OpenAI, Ollama and llama.cpp; llama.cpp
199
+ can have a separate connection even when a chat connection already exists.
200
+ Enter its server URL, model ID and optional key, then choose **Test and save**.
201
+ The selected memory profile, lifecycle-event setting and plugin policy are
202
+ preserved. If the probe fails after the connection is saved, it remains available
203
+ for retry and the previous memory binding stays in place. After a successful
204
+ save, choose **Apply & restart** or close the dialog and apply later.
205
+
197
206
  ## Configuration Contract
198
207
 
199
208
  The onboarding flow writes a dedicated embedding profile and binds the feature
@@ -233,6 +242,9 @@ or memory lifecycle event is added to the response path.
233
242
  model ids through `/api/tags`.
234
243
  - OpenAI uses `/embeddings`. Model discovery is not exposed by that provider,
235
244
  so the consumer supplies the embedding model id.
245
+ - llama.cpp uses `/v1/embeddings` with a manually supplied embedding model id.
246
+ Use an embedding-enabled server; setup can register a separate connection
247
+ without changing the chat server. See [llama.cpp setup](llamacpp.md#embeddings-and-semantic-memory).
236
248
  - A custom model-gateway adapter may implement `embed` and optional
237
249
  `listEmbeddingModels` without changing Runtime memory policy.
238
250
 
@@ -3,7 +3,7 @@
3
3
  `abot` is a runtime library plus local service entrypoints. A complete
4
4
  source-checkout setup usually has:
5
5
 
6
- - a model provider, such as Ollama or OpenAI
6
+ - a model provider, such as Ollama, OpenAI or llama.cpp
7
7
  - the model gateway process
8
8
  - the runtime bridge client process
9
9
  - optionally the local web UI proxy
@@ -79,6 +79,12 @@ hosts may use a different address. Run the `/api/tags` check against the chosen
79
79
  URL from the runtime environment. You can also edit
80
80
  `models.providers.ollama.baseUrl` in `local/runtime.config.json` later.
81
81
 
82
+ ### llama.cpp
83
+
84
+ See [llama.cpp setup](llamacpp.md) for a separately managed server, reachable origin,
85
+ optional authentication and thinking-budget configuration. Model server lifecycle
86
+ is independent of ABot and its internal model gateway.
87
+
82
88
  ### OpenAI
83
89
 
84
90
  Set the API key in `.env`:
package/package.json CHANGED
@@ -97,6 +97,7 @@
97
97
  "docs/bridge-compatibility.md",
98
98
  "docs/configuration.md",
99
99
  "docs/installation.md",
100
+ "docs/llamacpp.md",
100
101
  "docs/windows-companion-store.md",
101
102
  "docs/known-limitations.md",
102
103
  "docs/long-term-memory.md",
@@ -183,5 +184,5 @@
183
184
  },
184
185
  "type": "module",
185
186
  "types": "./dist/src/runtime/index.d.ts",
186
- "version": "1.9.0"
187
+ "version": "2.0.0"
187
188
  }
@@ -1,5 +1,3 @@
1
- import { stat } from "node:fs/promises";
2
-
3
1
  import {
4
2
  boundText,
5
3
  defineRuntimePlugin,
@@ -16,6 +14,7 @@ import {
16
14
  } from "./inspection-failure.js";
17
15
  import { readProjectManifests } from "./manifest-summary.js";
18
16
  import { collectProjectTree } from "./tree.js";
17
+ import { readProjectTargetInfo } from "./project-target.js";
19
18
 
20
19
  const DEFAULT_DEPTH = 3;
21
20
  const DEFAULT_MAX_ENTRIES = 200;
@@ -54,7 +53,7 @@ export default defineRuntimePlugin((context) => {
54
53
  defaultPath: ".",
55
54
  allowedLocations: ["agent_work", "workspace"],
56
55
  });
57
- const info = await stat(target.absolutePath);
56
+ const info = await readProjectTargetInfo(target.absolutePath, signal);
58
57
  if (!info.isDirectory()) {
59
58
  return failureResult({
60
59
  errorCode: "project_target_not_directory",
@@ -5,7 +5,7 @@ import {
5
5
  type ToolImplementationOutput,
6
6
  } from "../../../src/plugin-sdk/index.js";
7
7
 
8
- class ProjectInspectionError extends Error {
8
+ export class ProjectInspectionError extends Error {
9
9
  constructor(
10
10
  readonly code: string,
11
11
  message: string,
@@ -0,0 +1,29 @@
1
+ import { stat } from "node:fs/promises";
2
+
3
+ import {
4
+ ProjectInspectionError,
5
+ throwIfProjectInspectionCancelled,
6
+ } from "./inspection-failure.js";
7
+
8
+ function isMissingProjectTarget(error: unknown): boolean {
9
+ return error instanceof Error && "code" in error && error.code === "ENOENT";
10
+ }
11
+
12
+ /** Classify only the requested target lookup, never a disappearing child. */
13
+ export async function readProjectTargetInfo(
14
+ absolutePath: string,
15
+ signal?: AbortSignal,
16
+ ) {
17
+ try {
18
+ return await stat(absolutePath);
19
+ } catch (error) {
20
+ throwIfProjectInspectionCancelled(signal);
21
+ if (isMissingProjectTarget(error)) {
22
+ throw new ProjectInspectionError(
23
+ "project_target_not_found",
24
+ "The requested project directory does not exist.",
25
+ );
26
+ }
27
+ throw error;
28
+ }
29
+ }
@@ -584,7 +584,6 @@ __export(index_exports, {
584
584
  default: () => index_default
585
585
  });
586
586
  module.exports = __toCommonJS(index_exports);
587
- var import_promises5 = require("node:fs/promises");
588
587
 
589
588
  // src/plugin-sdk/bounds.ts
590
589
  function boundText(value, options) {
@@ -1155,6 +1154,26 @@ async function collectProjectTree(context, root, depth, maxEntries, signal) {
1155
1154
  });
1156
1155
  }
1157
1156
 
1157
+ // plugins/project-orientation/source/project-target.ts
1158
+ var import_promises5 = require("node:fs/promises");
1159
+ function isMissingProjectTarget(error) {
1160
+ return error instanceof Error && "code" in error && error.code === "ENOENT";
1161
+ }
1162
+ async function readProjectTargetInfo(absolutePath, signal) {
1163
+ try {
1164
+ return await (0, import_promises5.stat)(absolutePath);
1165
+ } catch (error) {
1166
+ throwIfProjectInspectionCancelled(signal);
1167
+ if (isMissingProjectTarget(error)) {
1168
+ throw new ProjectInspectionError(
1169
+ "project_target_not_found",
1170
+ "The requested project directory does not exist."
1171
+ );
1172
+ }
1173
+ throw error;
1174
+ }
1175
+ }
1176
+
1158
1177
  // plugins/project-orientation/source/index.ts
1159
1178
  var DEFAULT_DEPTH = 3;
1160
1179
  var DEFAULT_MAX_ENTRIES = 200;
@@ -1189,7 +1208,7 @@ var index_default = defineRuntimePlugin((context) => {
1189
1208
  defaultPath: ".",
1190
1209
  allowedLocations: ["agent_work", "workspace"]
1191
1210
  });
1192
- const info = await (0, import_promises5.stat)(target.absolutePath);
1211
+ const info = await readProjectTargetInfo(target.absolutePath, signal);
1193
1212
  if (!info.isDirectory()) {
1194
1213
  return failureResult({
1195
1214
  errorCode: "project_target_not_directory",
@@ -463,6 +463,52 @@
463
463
  "type": "number",
464
464
  "description": "Nucleus sampling value forwarded to the model provider."
465
465
  },
466
+ "reasoningBudget": {
467
+ "description": "Reasoning-only budget for a declared budget-capable model. Zero disables thinking. Omit to inherit.",
468
+ "oneOf": [
469
+ {
470
+ "type": "object",
471
+ "additionalProperties": false,
472
+ "required": ["mode", "tokens"],
473
+ "properties": {
474
+ "mode": { "const": "tokens" },
475
+ "tokens": {
476
+ "type": "integer",
477
+ "minimum": 0,
478
+ "maximum": 2147483647
479
+ }
480
+ }
481
+ },
482
+ {
483
+ "type": "object",
484
+ "additionalProperties": false,
485
+ "required": ["mode"],
486
+ "properties": { "mode": { "const": "server-default" } }
487
+ }
488
+ ]
489
+ },
490
+ "reasoningBudgetByMode": {
491
+ "type": "object",
492
+ "description": "Optional llama.cpp token budgets for main-step Low/Reasoning/Deep presets. Omit to inherit; {} clears the inherited map. A provided map replaces the whole parent map. Zero disables thinking; positive mode budgets enable it.",
493
+ "additionalProperties": false,
494
+ "properties": {
495
+ "fast": {
496
+ "type": "integer",
497
+ "minimum": 0,
498
+ "maximum": 2147483647
499
+ },
500
+ "reasoning": {
501
+ "type": "integer",
502
+ "minimum": 0,
503
+ "maximum": 2147483647
504
+ },
505
+ "deep": {
506
+ "type": "integer",
507
+ "minimum": 0,
508
+ "maximum": 2147483647
509
+ }
510
+ }
511
+ },
466
512
  "reasoningEffort": {
467
513
  "type": "string",
468
514
  "enum": [
@@ -575,6 +621,54 @@
575
621
  "type": "number",
576
622
  "description": "Nucleus sampling value forwarded to the model provider."
577
623
  },
624
+ "reasoningBudget": {
625
+ "description": "Reasoning-only budget for a declared budget-capable model. Zero disables thinking. Omit to inherit.",
626
+ "oneOf": [
627
+ {
628
+ "type": "object",
629
+ "additionalProperties": false,
630
+ "required": ["mode", "tokens"],
631
+ "properties": {
632
+ "mode": { "const": "tokens" },
633
+ "tokens": {
634
+ "type": "integer",
635
+ "minimum": 0,
636
+ "maximum": 2147483647
637
+ }
638
+ }
639
+ },
640
+ {
641
+ "type": "object",
642
+ "additionalProperties": false,
643
+ "required": ["mode"],
644
+ "properties": {
645
+ "mode": { "const": "server-default" }
646
+ }
647
+ }
648
+ ]
649
+ },
650
+ "reasoningBudgetByMode": {
651
+ "type": "object",
652
+ "description": "Optional llama.cpp token budgets for main-step Low/Reasoning/Deep presets. Omit to inherit; {} clears the inherited map. A provided map replaces the whole parent map. Zero disables thinking; positive mode budgets enable it.",
653
+ "additionalProperties": false,
654
+ "properties": {
655
+ "fast": {
656
+ "type": "integer",
657
+ "minimum": 0,
658
+ "maximum": 2147483647
659
+ },
660
+ "reasoning": {
661
+ "type": "integer",
662
+ "minimum": 0,
663
+ "maximum": 2147483647
664
+ },
665
+ "deep": {
666
+ "type": "integer",
667
+ "minimum": 0,
668
+ "maximum": 2147483647
669
+ }
670
+ }
671
+ },
578
672
  "reasoningEffort": {
579
673
  "type": "string",
580
674
  "enum": [
@@ -690,6 +784,52 @@
690
784
  "type": "number",
691
785
  "description": "Nucleus sampling value forwarded to the model provider."
692
786
  },
787
+ "reasoningBudget": {
788
+ "description": "Reasoning-only budget for a declared budget-capable model. Zero disables thinking. Omit to inherit.",
789
+ "oneOf": [
790
+ {
791
+ "type": "object",
792
+ "additionalProperties": false,
793
+ "required": ["mode", "tokens"],
794
+ "properties": {
795
+ "mode": { "const": "tokens" },
796
+ "tokens": {
797
+ "type": "integer",
798
+ "minimum": 0,
799
+ "maximum": 2147483647
800
+ }
801
+ }
802
+ },
803
+ {
804
+ "type": "object",
805
+ "additionalProperties": false,
806
+ "required": ["mode"],
807
+ "properties": { "mode": { "const": "server-default" } }
808
+ }
809
+ ]
810
+ },
811
+ "reasoningBudgetByMode": {
812
+ "type": "object",
813
+ "description": "Optional llama.cpp token budgets for main-step Low/Reasoning/Deep presets. Omit to inherit; {} clears the inherited map. A provided map replaces the whole parent map. Zero disables thinking; positive mode budgets enable it.",
814
+ "additionalProperties": false,
815
+ "properties": {
816
+ "fast": {
817
+ "type": "integer",
818
+ "minimum": 0,
819
+ "maximum": 2147483647
820
+ },
821
+ "reasoning": {
822
+ "type": "integer",
823
+ "minimum": 0,
824
+ "maximum": 2147483647
825
+ },
826
+ "deep": {
827
+ "type": "integer",
828
+ "minimum": 0,
829
+ "maximum": 2147483647
830
+ }
831
+ }
832
+ },
693
833
  "reasoningEffort": {
694
834
  "type": "string",
695
835
  "enum": [