@abot-ai/runtime 1.0.0 → 1.1.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 (549) hide show
  1. package/README.md +17 -3
  2. package/dist/scripts/add-runtime-model.js +4 -0
  3. package/dist/scripts/configure-long-term-memory.d.ts +6 -0
  4. package/dist/scripts/configure-long-term-memory.js +139 -0
  5. package/dist/scripts/init-runtime.js +11 -1
  6. package/dist/scripts/runtime-setup-files.d.ts +1 -0
  7. package/dist/scripts/runtime-setup-files.js +4 -0
  8. package/dist/src/capabilities/normal-invocation/contracts.d.ts +1 -0
  9. package/dist/src/capabilities/normal-invocation/validator.d.ts +5 -0
  10. package/dist/src/capabilities/normal-invocation/validator.js +35 -2
  11. package/dist/src/capabilities/tool-definition-validator/definition-fields.d.ts +7 -0
  12. package/dist/src/capabilities/tool-definition-validator/definition-fields.js +156 -0
  13. package/dist/src/capabilities/tool-definition-validator/definition-parser.d.ts +2 -0
  14. package/dist/src/capabilities/tool-definition-validator/definition-parser.js +76 -0
  15. package/dist/src/capabilities/tool-definition-validator/definition-shape.d.ts +7 -0
  16. package/dist/src/capabilities/tool-definition-validator/definition-shape.js +34 -0
  17. package/dist/src/capabilities/tool-definition-validator/event-presentation.d.ts +2 -0
  18. package/dist/src/capabilities/tool-definition-validator/event-presentation.js +97 -0
  19. package/dist/src/capabilities/tool-definition-validator/module-registry.d.ts +3 -0
  20. package/dist/src/capabilities/tool-definition-validator/module-registry.js +99 -0
  21. package/dist/src/capabilities/tool-definition-validator/payload-channel-spec.d.ts +2 -0
  22. package/dist/src/capabilities/tool-definition-validator/payload-channel-spec.js +190 -0
  23. package/dist/src/capabilities/tool-definition-validator/payload-channel-stage.d.ts +11 -0
  24. package/dist/src/capabilities/tool-definition-validator/payload-channel-stage.js +155 -0
  25. package/dist/src/capabilities/tool-definition-validator/payload-stage-conditions.d.ts +24 -0
  26. package/dist/src/capabilities/tool-definition-validator/payload-stage-conditions.js +193 -0
  27. package/dist/src/capabilities/tool-definition-validator.d.ts +2 -4
  28. package/dist/src/capabilities/tool-definition-validator.js +2 -776
  29. package/dist/src/cli/abot.js +11 -2
  30. package/dist/src/model-gateway/client/embeddings.d.ts +3 -0
  31. package/dist/src/model-gateway/client/embeddings.js +48 -0
  32. package/dist/src/model-gateway/client.d.ts +3 -1
  33. package/dist/src/model-gateway/client.js +5 -0
  34. package/dist/src/model-gateway/embeddings/constants.d.ts +1 -0
  35. package/dist/src/model-gateway/embeddings/constants.js +1 -0
  36. package/dist/src/model-gateway/embeddings/discovery.d.ts +10 -0
  37. package/dist/src/model-gateway/embeddings/discovery.js +39 -0
  38. package/dist/src/model-gateway/embeddings/execution.d.ts +16 -0
  39. package/dist/src/model-gateway/embeddings/execution.js +64 -0
  40. package/dist/src/model-gateway/embeddings/fingerprint.d.ts +3 -0
  41. package/dist/src/model-gateway/embeddings/fingerprint.js +36 -0
  42. package/dist/src/model-gateway/embeddings/profile.d.ts +11 -0
  43. package/dist/src/model-gateway/embeddings/profile.js +37 -0
  44. package/dist/src/model-gateway/embeddings/server-handler.d.ts +3 -0
  45. package/dist/src/model-gateway/embeddings/server-handler.js +89 -0
  46. package/dist/src/model-gateway/embeddings/validation.d.ts +7 -0
  47. package/dist/src/model-gateway/embeddings/validation.js +69 -0
  48. package/dist/src/model-gateway/index.d.ts +5 -3
  49. package/dist/src/model-gateway/index.js +3 -1
  50. package/dist/src/model-gateway/providers/contracts.d.ts +27 -1
  51. package/dist/src/model-gateway/providers/ollama/adapter.js +4 -0
  52. package/dist/src/model-gateway/providers/ollama/base-url.d.ts +1 -0
  53. package/dist/src/model-gateway/providers/ollama/base-url.js +4 -0
  54. package/dist/src/model-gateway/providers/ollama/embedding-models.d.ts +2 -0
  55. package/dist/src/model-gateway/providers/ollama/embedding-models.js +31 -0
  56. package/dist/src/model-gateway/providers/ollama/embeddings.d.ts +2 -0
  57. package/dist/src/model-gateway/providers/ollama/embeddings.js +43 -0
  58. package/dist/src/model-gateway/providers/ollama/request-diagnostics.js +2 -1
  59. package/dist/src/model-gateway/providers/openai/adapter.js +2 -0
  60. package/dist/src/model-gateway/providers/openai/embeddings.d.ts +2 -0
  61. package/dist/src/model-gateway/providers/openai/embeddings.js +87 -0
  62. package/dist/src/model-gateway/providers/openai/payload.js +5 -8
  63. package/dist/src/model-gateway/server/contracts.d.ts +5 -3
  64. package/dist/src/model-gateway/server/create-server.js +9 -0
  65. package/dist/src/model-gateway/server/errors.js +34 -0
  66. package/dist/src/model-gateway/server/index.d.ts +2 -0
  67. package/dist/src/model-gateway/server/index.js +2 -0
  68. package/dist/src/model-gateway/server/provider-fetch.d.ts +5 -3
  69. package/dist/src/model-gateway/server/provider-fetch.js +3 -1
  70. package/dist/src/model-gateway/server/request-body.d.ts +1 -1
  71. package/dist/src/model-gateway/types.d.ts +39 -0
  72. package/dist/src/plugin-contract/manifest.d.ts +1 -0
  73. package/dist/src/runtime/adapters/index.d.ts +4 -0
  74. package/dist/src/runtime/adapters/index.js +4 -0
  75. package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.d.ts +2 -0
  76. package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.js +77 -0
  77. package/dist/src/runtime/adapters/long-term-memory/file-lock/cleanup.d.ts +4 -0
  78. package/dist/src/runtime/adapters/long-term-memory/file-lock/cleanup.js +52 -0
  79. package/dist/src/runtime/adapters/long-term-memory/file-lock/contracts.d.ts +31 -0
  80. package/dist/src/runtime/adapters/long-term-memory/file-lock/contracts.js +17 -0
  81. package/dist/src/runtime/adapters/long-term-memory/file-lock/install.d.ts +1 -0
  82. package/dist/src/runtime/adapters/long-term-memory/file-lock/install.js +36 -0
  83. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-record.d.ts +2 -0
  84. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-record.js +114 -0
  85. package/dist/src/runtime/adapters/long-term-memory/file-lock/snapshot.d.ts +2 -0
  86. package/dist/src/runtime/adapters/long-term-memory/file-lock/snapshot.js +103 -0
  87. package/dist/src/runtime/adapters/long-term-memory/file-lock.d.ts +2 -0
  88. package/dist/src/runtime/adapters/long-term-memory/file-lock.js +10 -0
  89. package/dist/src/runtime/adapters/long-term-memory/file-repository.d.ts +2 -0
  90. package/dist/src/runtime/adapters/long-term-memory/file-repository.js +57 -0
  91. package/dist/src/runtime/adapters/long-term-memory/in-memory-repository.d.ts +2 -0
  92. package/dist/src/runtime/adapters/long-term-memory/in-memory-repository.js +21 -0
  93. package/dist/src/runtime/adapters/long-term-memory/onboarding-config-repository.d.ts +5 -0
  94. package/dist/src/runtime/adapters/long-term-memory/onboarding-config-repository.js +60 -0
  95. package/dist/src/runtime/adapters/long-term-memory/onboarding-service.d.ts +8 -0
  96. package/dist/src/runtime/adapters/long-term-memory/onboarding-service.js +34 -0
  97. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/run.d.ts +7 -1
  98. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/run.js +54 -25
  99. package/dist/src/runtime/adapters/registered-tool-normal-invocations/executor.js +18 -4
  100. package/dist/src/runtime/adapters/registered-tool-normal-invocations/payload/lifecycle.d.ts +6 -1
  101. package/dist/src/runtime/adapters/registered-tool-normal-invocations/payload/lifecycle.js +25 -12
  102. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/action-fingerprint.d.ts +22 -0
  103. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/action-fingerprint.js +65 -0
  104. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/contracts.d.ts +44 -0
  105. package/dist/src/runtime/adapters/registered-tool-normal-invocations.d.ts +1 -1
  106. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/catalog.js +14 -4
  107. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/execution.js +218 -87
  108. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/failure-outcome-fingerprint.d.ts +7 -0
  109. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/failure-outcome-fingerprint.js +84 -0
  110. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.d.ts +5 -4
  111. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.js +7 -1
  112. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-observability.d.ts +35 -0
  113. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-observability.js +32 -0
  114. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-rejection.d.ts +3 -3
  115. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-rejection.js +13 -8
  116. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.d.ts +5 -4
  117. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.js +4 -2
  118. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/result-observer.js +12 -4
  119. package/dist/src/runtime/composition.d.ts +3 -0
  120. package/dist/src/runtime/composition.js +5 -2
  121. package/dist/src/runtime/config/builders.js +34 -1
  122. package/dist/src/runtime/config/effective-model-config-validation.js +9 -0
  123. package/dist/src/runtime/config/embedding-profiles.d.ts +5 -0
  124. package/dist/src/runtime/config/embedding-profiles.js +66 -0
  125. package/dist/src/runtime/config/fields.js +22 -0
  126. package/dist/src/runtime/config/long-term-memory.d.ts +9 -0
  127. package/dist/src/runtime/config/long-term-memory.js +71 -0
  128. package/dist/src/runtime/config/runner/config-normalization.d.ts +16 -0
  129. package/dist/src/runtime/config/runner/config-normalization.js +109 -0
  130. package/dist/src/runtime/config/runner/loader.d.ts +1 -1
  131. package/dist/src/runtime/config/runner/loader.js +2 -69
  132. package/dist/src/runtime/config/runner/model-policy.js +3 -0
  133. package/dist/src/runtime/config/runner/schema-version.d.ts +14 -0
  134. package/dist/src/runtime/config/runner/schema-version.js +35 -0
  135. package/dist/src/runtime/config/runner/versioned-config.d.ts +2 -0
  136. package/dist/src/runtime/config/runner/versioned-config.js +51 -0
  137. package/dist/src/runtime/config/schema.js +36 -0
  138. package/dist/src/runtime/config/types.d.ts +1 -0
  139. package/dist/src/runtime/config/validation/environment-config-validation.d.ts +1 -0
  140. package/dist/src/runtime/config/validation/environment-config-validation.js +41 -0
  141. package/dist/src/runtime/config/validation/model-invocation-config-validation.d.ts +2 -0
  142. package/dist/src/runtime/config/validation/model-invocation-config-validation.js +64 -0
  143. package/dist/src/runtime/config/validation/model-invocation-override-validation.d.ts +2 -0
  144. package/dist/src/runtime/config/validation/model-invocation-override-validation.js +72 -0
  145. package/dist/src/runtime/config/validation/model-profile-validation.d.ts +4 -0
  146. package/dist/src/runtime/config/validation/model-profile-validation.js +87 -0
  147. package/dist/src/runtime/config/validation/model-registry-validation.d.ts +2 -0
  148. package/dist/src/runtime/config/validation/model-registry-validation.js +118 -0
  149. package/dist/src/runtime/config/validation/path-config-validation.d.ts +1 -0
  150. package/dist/src/runtime/config/validation/path-config-validation.js +7 -0
  151. package/dist/src/runtime/config/validation/runtime-config-field-validation.d.ts +12 -0
  152. package/dist/src/runtime/config/validation/runtime-config-field-validation.js +158 -0
  153. package/dist/src/runtime/config/validation/runtime-config-validation-contract.d.ts +9 -0
  154. package/dist/src/runtime/config/validation/runtime-config-validation-contract.js +13 -0
  155. package/dist/src/runtime/config/validation/runtime-root-section-validation.d.ts +6 -0
  156. package/dist/src/runtime/config/validation/runtime-root-section-validation.js +82 -0
  157. package/dist/src/runtime/config/validation/web-ui-config-validation.d.ts +3 -0
  158. package/dist/src/runtime/config/validation/web-ui-config-validation.js +26 -0
  159. package/dist/src/runtime/config/validation.d.ts +4 -15
  160. package/dist/src/runtime/config/validation.js +27 -499
  161. package/dist/src/runtime/config.js +3 -0
  162. package/dist/src/runtime/context/accepted-capability-action.d.ts +11 -0
  163. package/dist/src/runtime/context/accepted-capability-action.js +29 -0
  164. package/dist/src/runtime/context/model-step-compaction.js +6 -0
  165. package/dist/src/runtime/context/operation-supervision-evidence.d.ts +37 -0
  166. package/dist/src/runtime/context/operation-supervision-evidence.js +90 -0
  167. package/dist/src/runtime/context/request-tool-results.d.ts +3 -0
  168. package/dist/src/runtime/context/request-tool-results.js +11 -2
  169. package/dist/src/runtime/default-adapters.d.ts +3 -0
  170. package/dist/src/runtime/default-adapters.js +64 -3
  171. package/dist/src/runtime/index.d.ts +1 -0
  172. package/dist/src/runtime/index.js +1 -0
  173. package/dist/src/runtime/lifecycle/request-finalizer.d.ts +3 -0
  174. package/dist/src/runtime/lifecycle/request-finalizer.js +8 -0
  175. package/dist/src/runtime/long-term-memory/background-save-queue.d.ts +17 -0
  176. package/dist/src/runtime/long-term-memory/background-save-queue.js +66 -0
  177. package/dist/src/runtime/long-term-memory/candidate-persistence.d.ts +16 -0
  178. package/dist/src/runtime/long-term-memory/candidate-persistence.js +109 -0
  179. package/dist/src/runtime/long-term-memory/candidate-preparation.d.ts +8 -0
  180. package/dist/src/runtime/long-term-memory/candidate-preparation.js +36 -0
  181. package/dist/src/runtime/long-term-memory/candidate-processing.d.ts +9 -0
  182. package/dist/src/runtime/long-term-memory/candidate-processing.js +79 -0
  183. package/dist/src/runtime/long-term-memory/contracts.d.ts +108 -0
  184. package/dist/src/runtime/long-term-memory/contracts.js +1 -0
  185. package/dist/src/runtime/long-term-memory/diagnostics.d.ts +9 -0
  186. package/dist/src/runtime/long-term-memory/diagnostics.js +42 -0
  187. package/dist/src/runtime/long-term-memory/embedding-batches.d.ts +13 -0
  188. package/dist/src/runtime/long-term-memory/embedding-batches.js +87 -0
  189. package/dist/src/runtime/long-term-memory/events.d.ts +13 -0
  190. package/dist/src/runtime/long-term-memory/events.js +15 -0
  191. package/dist/src/runtime/long-term-memory/finalization.d.ts +8 -0
  192. package/dist/src/runtime/long-term-memory/finalization.js +24 -0
  193. package/dist/src/runtime/long-term-memory/index.d.ts +6 -0
  194. package/dist/src/runtime/long-term-memory/index.js +6 -0
  195. package/dist/src/runtime/long-term-memory/management/contracts.d.ts +54 -0
  196. package/dist/src/runtime/long-term-memory/management/contracts.js +1 -0
  197. package/dist/src/runtime/long-term-memory/management/errors.d.ts +10 -0
  198. package/dist/src/runtime/long-term-memory/management/errors.js +13 -0
  199. package/dist/src/runtime/long-term-memory/management/mutations.d.ts +17 -0
  200. package/dist/src/runtime/long-term-memory/management/mutations.js +178 -0
  201. package/dist/src/runtime/long-term-memory/management/queries.d.ts +8 -0
  202. package/dist/src/runtime/long-term-memory/management/queries.js +46 -0
  203. package/dist/src/runtime/long-term-memory/management/search.d.ts +7 -0
  204. package/dist/src/runtime/long-term-memory/management/search.js +18 -0
  205. package/dist/src/runtime/long-term-memory/management/service.d.ts +13 -0
  206. package/dist/src/runtime/long-term-memory/management/service.js +61 -0
  207. package/dist/src/runtime/long-term-memory/management/validation.d.ts +24 -0
  208. package/dist/src/runtime/long-term-memory/management/validation.js +77 -0
  209. package/dist/src/runtime/long-term-memory/onboarding/configuration.d.ts +14 -0
  210. package/dist/src/runtime/long-term-memory/onboarding/configuration.js +92 -0
  211. package/dist/src/runtime/long-term-memory/onboarding/contracts.d.ts +52 -0
  212. package/dist/src/runtime/long-term-memory/onboarding/contracts.js +1 -0
  213. package/dist/src/runtime/long-term-memory/onboarding/service.d.ts +21 -0
  214. package/dist/src/runtime/long-term-memory/onboarding/service.js +88 -0
  215. package/dist/src/runtime/long-term-memory/policies/normalization.d.ts +10 -0
  216. package/dist/src/runtime/long-term-memory/policies/normalization.js +45 -0
  217. package/dist/src/runtime/long-term-memory/policies/reconciliation.d.ts +20 -0
  218. package/dist/src/runtime/long-term-memory/policies/reconciliation.js +21 -0
  219. package/dist/src/runtime/long-term-memory/policies/scoring.d.ts +13 -0
  220. package/dist/src/runtime/long-term-memory/policies/scoring.js +55 -0
  221. package/dist/src/runtime/long-term-memory/policies/sensitive-data.d.ts +5 -0
  222. package/dist/src/runtime/long-term-memory/policies/sensitive-data.js +12 -0
  223. package/dist/src/runtime/long-term-memory/projection.d.ts +4 -0
  224. package/dist/src/runtime/long-term-memory/projection.js +39 -0
  225. package/dist/src/runtime/long-term-memory/ranked-search.d.ts +11 -0
  226. package/dist/src/runtime/long-term-memory/ranked-search.js +111 -0
  227. package/dist/src/runtime/long-term-memory/repository-state.d.ts +4 -0
  228. package/dist/src/runtime/long-term-memory/repository-state.js +131 -0
  229. package/dist/src/runtime/long-term-memory/response-context.d.ts +5 -0
  230. package/dist/src/runtime/long-term-memory/response-context.js +21 -0
  231. package/dist/src/runtime/long-term-memory/retrieval.d.ts +8 -0
  232. package/dist/src/runtime/long-term-memory/retrieval.js +73 -0
  233. package/dist/src/runtime/long-term-memory/service.d.ts +10 -0
  234. package/dist/src/runtime/long-term-memory/service.js +83 -0
  235. package/dist/src/runtime/orchestration/capability-adapters/index.d.ts +2 -0
  236. package/dist/src/runtime/orchestration/capability-adapters/index.js +2 -0
  237. package/dist/src/runtime/orchestration/final-response/authoring-contract.d.ts +10 -0
  238. package/dist/src/runtime/orchestration/final-response/authoring-contract.js +94 -0
  239. package/dist/src/runtime/orchestration/final-response/finalization.d.ts +1 -0
  240. package/dist/src/runtime/orchestration/final-response/finalization.js +1 -0
  241. package/dist/src/runtime/orchestration/final-response/format.d.ts +2 -0
  242. package/dist/src/runtime/orchestration/final-response/format.js +49 -0
  243. package/dist/src/runtime/orchestration/final-response/invoke.d.ts +16 -0
  244. package/dist/src/runtime/orchestration/final-response/invoke.js +24 -0
  245. package/dist/src/runtime/orchestration/role-calls/activation-budget.d.ts +14 -0
  246. package/dist/src/runtime/orchestration/role-calls/activation-budget.js +52 -0
  247. package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +154 -0
  248. package/dist/src/runtime/orchestration/role-calls/capability-selection-reconsideration.js +1 -8
  249. package/dist/src/runtime/orchestration/role-calls/capability-selection-supervision-issuance.d.ts +17 -0
  250. package/dist/src/runtime/orchestration/role-calls/capability-selection-supervision-issuance.js +155 -0
  251. package/dist/src/runtime/orchestration/role-calls/capability-selection-supervision.d.ts +78 -0
  252. package/dist/src/runtime/orchestration/role-calls/capability-selection-supervision.js +339 -0
  253. package/dist/src/runtime/orchestration/role-calls/command-decoder.js +35 -10
  254. package/dist/src/runtime/orchestration/role-calls/command-dispatch/active-capability-caller.d.ts +6 -0
  255. package/dist/src/runtime/orchestration/role-calls/command-dispatch/active-capability-caller.js +15 -0
  256. package/dist/src/runtime/orchestration/role-calls/command-dispatch/call-frame-state.d.ts +3 -0
  257. package/dist/src/runtime/orchestration/role-calls/command-dispatch/call-frame-state.js +6 -0
  258. package/dist/src/runtime/orchestration/role-calls/command-dispatch/call-scope-transitions.d.ts +3 -0
  259. package/dist/src/runtime/orchestration/role-calls/command-dispatch/call-scope-transitions.js +86 -0
  260. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-batch-transitions.d.ts +3 -0
  261. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-batch-transitions.js +172 -0
  262. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-execution-state.d.ts +9 -0
  263. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-execution-state.js +28 -0
  264. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-execution-transitions.d.ts +3 -0
  265. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-execution-transitions.js +117 -0
  266. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-invocation.d.ts +4 -0
  267. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-invocation.js +16 -0
  268. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-selection-transition.d.ts +2 -0
  269. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-selection-transition.js +114 -0
  270. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-settlement.d.ts +6 -0
  271. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-settlement.js +54 -0
  272. package/dist/src/runtime/orchestration/role-calls/command-dispatch/child-transitions.d.ts +3 -0
  273. package/dist/src/runtime/orchestration/role-calls/command-dispatch/child-transitions.js +206 -0
  274. package/dist/src/runtime/orchestration/role-calls/command-dispatch/operation-supervision-intervention.d.ts +13 -0
  275. package/dist/src/runtime/orchestration/role-calls/command-dispatch/operation-supervision-intervention.js +25 -0
  276. package/dist/src/runtime/orchestration/role-calls/command-dispatch/root-transitions.d.ts +3 -0
  277. package/dist/src/runtime/orchestration/role-calls/command-dispatch/root-transitions.js +70 -0
  278. package/dist/src/runtime/orchestration/role-calls/command-dispatch.d.ts +1 -1
  279. package/dist/src/runtime/orchestration/role-calls/command-dispatch.js +6 -580
  280. package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +45 -5
  281. package/dist/src/runtime/orchestration/role-calls/contracts.js +2 -2
  282. package/dist/src/runtime/orchestration/role-calls/diagnostics.d.ts +4 -0
  283. package/dist/src/runtime/orchestration/role-calls/diagnostics.js +152 -1
  284. package/dist/src/runtime/orchestration/role-calls/index.d.ts +6 -0
  285. package/dist/src/runtime/orchestration/role-calls/index.js +6 -0
  286. package/dist/src/runtime/orchestration/role-calls/ledger.js +131 -7
  287. package/dist/src/runtime/orchestration/role-calls/operation-supervision-issuance.d.ts +11 -0
  288. package/dist/src/runtime/orchestration/role-calls/operation-supervision-issuance.js +66 -0
  289. package/dist/src/runtime/orchestration/role-calls/operation-supervision-projection.d.ts +16 -0
  290. package/dist/src/runtime/orchestration/role-calls/operation-supervision-projection.js +52 -0
  291. package/dist/src/runtime/orchestration/role-calls/operation-supervision-state-validation.d.ts +3 -0
  292. package/dist/src/runtime/orchestration/role-calls/operation-supervision-state-validation.js +151 -0
  293. package/dist/src/runtime/orchestration/role-calls/operation-supervision.d.ts +112 -0
  294. package/dist/src/runtime/orchestration/role-calls/operation-supervision.js +197 -0
  295. package/dist/src/runtime/orchestration/role-calls/reconsideration-cause.d.ts +26 -0
  296. package/dist/src/runtime/orchestration/role-calls/reconsideration-cause.js +127 -0
  297. package/dist/src/runtime/orchestration/role-calls/reducer-primitives.d.ts +1 -2
  298. package/dist/src/runtime/orchestration/role-calls/reducer-primitives.js +2 -12
  299. package/dist/src/runtime/orchestration/role-calls/reducer.js +19 -2
  300. package/dist/src/runtime/orchestration/role-calls/transactions.js +62 -5
  301. package/dist/src/runtime/orchestration/role-executors/activation/capability-continuation.d.ts +15 -0
  302. package/dist/src/runtime/orchestration/role-executors/activation/capability-continuation.js +73 -0
  303. package/dist/src/runtime/orchestration/role-executors/activation/loop.d.ts +0 -1
  304. package/dist/src/runtime/orchestration/role-executors/activation/loop.js +16 -54
  305. package/dist/src/runtime/orchestration/role-executors/activation/result-normalization.js +14 -0
  306. package/dist/src/runtime/orchestration/role-executors/activation/state-validation.d.ts +13 -1
  307. package/dist/src/runtime/orchestration/role-executors/activation/state-validation.js +137 -1
  308. package/dist/src/runtime/orchestration/role-executors/contracts.d.ts +7 -3
  309. package/dist/src/runtime/orchestration/role-executors/diagnostics.d.ts +2 -0
  310. package/dist/src/runtime/orchestration/role-executors/diagnostics.js +1 -6
  311. package/dist/src/runtime/orchestration/worker-capabilities/batch-selection.d.ts +10 -0
  312. package/dist/src/runtime/orchestration/worker-capabilities/batch-selection.js +8 -0
  313. package/dist/src/runtime/orchestration/worker-capabilities/binding/adapter-catalog.d.ts +14 -0
  314. package/dist/src/runtime/orchestration/worker-capabilities/binding/adapter-catalog.js +76 -0
  315. package/dist/src/runtime/orchestration/worker-capabilities/binding/adapter-normalization.d.ts +10 -0
  316. package/dist/src/runtime/orchestration/worker-capabilities/binding/adapter-normalization.js +160 -0
  317. package/dist/src/runtime/orchestration/worker-capabilities/binding/binding-rejection.d.ts +2 -0
  318. package/dist/src/runtime/orchestration/worker-capabilities/binding/binding-rejection.js +8 -0
  319. package/dist/src/runtime/orchestration/worker-capabilities/binding/bound-capability-session.d.ts +24 -0
  320. package/dist/src/runtime/orchestration/worker-capabilities/binding/bound-capability-session.js +100 -0
  321. package/dist/src/runtime/orchestration/worker-capabilities/binding/call-authority.d.ts +29 -0
  322. package/dist/src/runtime/orchestration/worker-capabilities/binding/call-authority.js +193 -0
  323. package/dist/src/runtime/orchestration/worker-capabilities/binding/create-binding.d.ts +11 -0
  324. package/dist/src/runtime/orchestration/worker-capabilities/binding/create-binding.js +109 -0
  325. package/dist/src/runtime/orchestration/worker-capabilities/binding/dependency-results.d.ts +2 -0
  326. package/dist/src/runtime/orchestration/worker-capabilities/binding/dependency-results.js +34 -0
  327. package/dist/src/runtime/orchestration/worker-capabilities/binding/invocation-preparation.d.ts +21 -0
  328. package/dist/src/runtime/orchestration/worker-capabilities/binding/invocation-preparation.js +167 -0
  329. package/dist/src/runtime/orchestration/worker-capabilities/binding.d.ts +1 -13
  330. package/dist/src/runtime/orchestration/worker-capabilities/binding.js +1 -625
  331. package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +57 -14
  332. package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +3 -1
  333. package/dist/src/runtime/orchestration/worker-capabilities/controls.d.ts +7 -0
  334. package/dist/src/runtime/orchestration/worker-capabilities/controls.js +50 -0
  335. package/dist/src/runtime/orchestration/worker-capabilities/error-fingerprint.d.ts +5 -0
  336. package/dist/src/runtime/orchestration/worker-capabilities/error-fingerprint.js +119 -0
  337. package/dist/src/runtime/orchestration/worker-capabilities/errors.d.ts +6 -0
  338. package/dist/src/runtime/orchestration/worker-capabilities/errors.js +11 -0
  339. package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-exact-result.d.ts +7 -0
  340. package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-exact-result.js +35 -0
  341. package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-execution.d.ts +9 -0
  342. package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-execution.js +28 -0
  343. package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-result-normalization.d.ts +18 -0
  344. package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-result-normalization.js +197 -0
  345. package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-result-references.d.ts +2 -0
  346. package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-result-references.js +44 -0
  347. package/dist/src/runtime/orchestration/worker-capabilities/execution/context-projection.d.ts +12 -0
  348. package/dist/src/runtime/orchestration/worker-capabilities/execution/context-projection.js +51 -0
  349. package/dist/src/runtime/orchestration/worker-capabilities/execution/invocation-preparation.d.ts +25 -0
  350. package/dist/src/runtime/orchestration/worker-capabilities/execution/invocation-preparation.js +111 -0
  351. package/dist/src/runtime/orchestration/worker-capabilities/execution/ledger-transaction.d.ts +20 -0
  352. package/dist/src/runtime/orchestration/worker-capabilities/execution/ledger-transaction.js +142 -0
  353. package/dist/src/runtime/orchestration/worker-capabilities/execution.d.ts +10 -14
  354. package/dist/src/runtime/orchestration/worker-capabilities/execution.js +84 -357
  355. package/dist/src/runtime/orchestration/worker-capabilities/index.d.ts +3 -0
  356. package/dist/src/runtime/orchestration/worker-capabilities/index.js +3 -0
  357. package/dist/src/runtime/orchestration/worker-capabilities/outcome-fingerprint.d.ts +8 -0
  358. package/dist/src/runtime/orchestration/worker-capabilities/outcome-fingerprint.js +21 -0
  359. package/dist/src/runtime/orchestration/worker-capabilities/payload-author.js +31 -9
  360. package/dist/src/runtime/orchestration/worker-capabilities/payload-contracts.d.ts +15 -6
  361. package/dist/src/runtime/orchestration/worker-capabilities/payload-contracts.js +2 -0
  362. package/dist/src/runtime/orchestration/worker-capabilities/payload-instructions.js +4 -4
  363. package/dist/src/runtime/orchestration/worker-capabilities/preparation-fingerprint.d.ts +23 -0
  364. package/dist/src/runtime/orchestration/worker-capabilities/preparation-fingerprint.js +109 -0
  365. package/dist/src/runtime/plugins/manifest-projection.js +3 -0
  366. package/dist/src/runtime/plugins/manifest-validator.js +20 -0
  367. package/dist/src/runtime/ports.d.ts +10 -1
  368. package/dist/src/runtime/request/contracts.d.ts +7 -0
  369. package/dist/src/runtime/request/dependencies.d.ts +1 -0
  370. package/dist/src/runtime/request/dependencies.js +10 -1
  371. package/dist/src/runtime/request/execution-agent-root-execution.js +5 -4
  372. package/dist/src/runtime/request/execution-facets.d.ts +2 -1
  373. package/dist/src/runtime/request/execution-facets.js +6 -0
  374. package/dist/src/runtime/request/execution-scope-surfaces.js +6 -0
  375. package/dist/src/runtime/request/execution-scope.d.ts +3 -2
  376. package/dist/src/runtime/request/handler.js +4 -1
  377. package/dist/src/runtime/request/result.d.ts +2 -0
  378. package/dist/src/runtime/request/root-contract.d.ts +4 -2
  379. package/dist/src/runtime/request/root-execution-kernel.js +100 -31
  380. package/dist/src/runtime/request/supervisor-root-execution.js +4 -2
  381. package/dist/src/runtime/request/worker-capability-payload-prompts.js +1 -1
  382. package/dist/src/runtime/steps/execution-agent/capability-invocation-contract.d.ts +24 -0
  383. package/dist/src/runtime/steps/execution-agent/capability-invocation-contract.js +52 -0
  384. package/dist/src/runtime/steps/execution-agent/contracts.d.ts +5 -2
  385. package/dist/src/runtime/steps/execution-agent/format.js +19 -6
  386. package/dist/src/runtime/steps/execution-agent/input.js +8 -12
  387. package/dist/src/runtime/steps/execution-agent/parser.js +25 -19
  388. package/dist/src/runtime/steps/execution-agent/prompt.js +3 -2
  389. package/dist/src/runtime/steps/execution-agent/reconsideration-context.d.ts +3 -0
  390. package/dist/src/runtime/steps/execution-agent/reconsideration-context.js +76 -0
  391. package/dist/src/runtime/steps/execution-agent/refinement-prompt.js +4 -4
  392. package/dist/src/runtime/steps/execution-agent/refinement-reconsideration.d.ts +3 -0
  393. package/dist/src/runtime/steps/execution-agent/refinement-reconsideration.js +25 -0
  394. package/dist/src/runtime/steps/execution-agent/refinement.d.ts +4 -7
  395. package/dist/src/runtime/steps/execution-agent/refinement.js +24 -35
  396. package/dist/src/runtime/steps/execution-agent/response-input.d.ts +2 -0
  397. package/dist/src/runtime/steps/execution-agent/response-input.js +22 -6
  398. package/dist/src/runtime/steps/execution-agent/response-prompt.d.ts +1 -1
  399. package/dist/src/runtime/steps/execution-agent/response-prompt.js +8 -3
  400. package/dist/src/runtime/steps/execution-agent/response-run.d.ts +6 -0
  401. package/dist/src/runtime/steps/execution-agent/response-run.js +40 -10
  402. package/dist/src/runtime/steps/execution-agent/run.js +6 -6
  403. package/dist/src/runtime/steps/execution-agent/state-context.d.ts +4 -1
  404. package/dist/src/runtime/steps/execution-agent/state-context.js +40 -23
  405. package/dist/src/runtime/steps/supervisor-response/index.d.ts +1 -1
  406. package/dist/src/runtime/steps/supervisor-response/index.js +1 -1
  407. package/dist/src/runtime/steps/supervisor-response/input.d.ts +13 -5
  408. package/dist/src/runtime/steps/supervisor-response/input.js +27 -8
  409. package/dist/src/runtime/steps/supervisor-response/memory-authoring.d.ts +10 -0
  410. package/dist/src/runtime/steps/supervisor-response/memory-authoring.js +125 -0
  411. package/dist/src/runtime/steps/supervisor-response/prompt.d.ts +4 -0
  412. package/dist/src/runtime/steps/supervisor-response/prompt.js +19 -0
  413. package/dist/src/runtime/steps/supervisor-response/run.d.ts +8 -0
  414. package/dist/src/runtime/steps/supervisor-response/run.js +46 -17
  415. package/dist/src/runtime/steps/worker-decision/contracts.d.ts +8 -1
  416. package/dist/src/runtime/steps/worker-decision/contracts.js +3 -0
  417. package/dist/src/runtime/steps/worker-decision/format.d.ts +4 -0
  418. package/dist/src/runtime/steps/worker-decision/format.js +97 -22
  419. package/dist/src/runtime/steps/worker-decision/input/action-policy.d.ts +9 -0
  420. package/dist/src/runtime/steps/worker-decision/input/action-policy.js +15 -0
  421. package/dist/src/runtime/steps/worker-decision/input/canonical-state.d.ts +2 -2
  422. package/dist/src/runtime/steps/worker-decision/input/canonical-state.js +19 -7
  423. package/dist/src/runtime/steps/worker-decision/input/capability-selection.js +44 -3
  424. package/dist/src/runtime/steps/worker-decision/input/contract.d.ts +1 -0
  425. package/dist/src/runtime/steps/worker-decision/input/contract.js +12 -6
  426. package/dist/src/runtime/steps/worker-decision/input/diagnostic-projection.js +14 -5
  427. package/dist/src/runtime/steps/worker-decision/input/prompt-context.js +9 -6
  428. package/dist/src/runtime/steps/worker-decision/input/reference-context.js +21 -3
  429. package/dist/src/runtime/steps/worker-decision/input/session.js +2 -1
  430. package/dist/src/runtime/steps/worker-decision/input/types.d.ts +6 -1
  431. package/dist/src/runtime/steps/worker-decision/input.d.ts +2 -2
  432. package/dist/src/runtime/steps/worker-decision/input.js +1 -2
  433. package/dist/src/runtime/steps/worker-decision/parser/accepted-decision.d.ts +3 -0
  434. package/dist/src/runtime/steps/worker-decision/parser/accepted-decision.js +70 -0
  435. package/dist/src/runtime/steps/worker-decision/parser/action-validation.d.ts +4 -0
  436. package/dist/src/runtime/steps/worker-decision/parser/action-validation.js +55 -0
  437. package/dist/src/runtime/steps/worker-decision/parser/capability-batch-validation.d.ts +3 -0
  438. package/dist/src/runtime/steps/worker-decision/parser/capability-batch-validation.js +135 -0
  439. package/dist/src/runtime/steps/worker-decision/parser/capability-controls-validation.d.ts +6 -0
  440. package/dist/src/runtime/steps/worker-decision/parser/capability-controls-validation.js +132 -0
  441. package/dist/src/runtime/steps/worker-decision/parser/capability-invocation-validation.d.ts +4 -0
  442. package/dist/src/runtime/steps/worker-decision/parser/capability-invocation-validation.js +104 -0
  443. package/dist/src/runtime/steps/worker-decision/parser/decision-shape-validation.d.ts +4 -0
  444. package/dist/src/runtime/steps/worker-decision/parser/decision-shape-validation.js +28 -0
  445. package/dist/src/runtime/steps/worker-decision/parser/pending-capability-selection-validation.d.ts +4 -0
  446. package/dist/src/runtime/steps/worker-decision/parser/pending-capability-selection-validation.js +105 -0
  447. package/dist/src/runtime/steps/worker-decision/parser/validation-contract.d.ts +50 -0
  448. package/dist/src/runtime/steps/worker-decision/parser/validation-contract.js +19 -0
  449. package/dist/src/runtime/steps/worker-decision/parser.d.ts +5 -1
  450. package/dist/src/runtime/steps/worker-decision/parser.js +32 -426
  451. package/dist/src/runtime/steps/worker-decision/prompt.d.ts +3 -0
  452. package/dist/src/runtime/steps/worker-decision/prompt.js +57 -20
  453. package/dist/src/runtime/steps/worker-decision/result-author.js +11 -1
  454. package/dist/src/runtime/steps/worker-decision/run.js +97 -19
  455. package/dist/src/runtime/validation/strict-record.d.ts +2 -0
  456. package/dist/src/runtime/validation/strict-record.js +12 -0
  457. package/dist/src/shared/model-step-registry-data.json +9 -0
  458. package/dist/src/shared/model-step-registry.d.ts +9 -0
  459. package/dist/src/shared/model-step-registry.generated.d.ts +9 -0
  460. package/dist/src/shared/model-step-registry.generated.js +9 -0
  461. package/dist/src/web-ui/app/ARCHITECTURE.md +1 -1
  462. package/dist/src/web-ui/app/app.js +56 -11
  463. package/dist/src/web-ui/app/components/config-workspace/config-model.js +320 -0
  464. package/dist/src/web-ui/app/components/config-workspace/dashboard-rendering.js +155 -0
  465. package/dist/src/web-ui/app/components/config-workspace/field-rendering.js +278 -0
  466. package/dist/src/web-ui/app/components/config-workspace/model-rendering.js +251 -0
  467. package/dist/src/web-ui/app/components/config-workspace/step-rendering.js +145 -0
  468. package/dist/src/web-ui/app/components/config-workspace/workspace-events.js +271 -0
  469. package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +195 -0
  470. package/dist/src/web-ui/app/components/config-workspace/workspace-persistence.js +247 -0
  471. package/dist/src/web-ui/app/components/config-workspace/workspace-view.js +299 -0
  472. package/dist/src/web-ui/app/components/config-workspace.js +179 -866
  473. package/dist/src/web-ui/app/components/conversation-activity.d.ts +7 -1
  474. package/dist/src/web-ui/app/components/long-term-memory/icons.js +16 -0
  475. package/dist/src/web-ui/app/components/long-term-memory/manager.js +192 -0
  476. package/dist/src/web-ui/app/components/long-term-memory/record-editor.d.ts +9 -0
  477. package/dist/src/web-ui/app/components/long-term-memory/record-editor.js +62 -0
  478. package/dist/src/web-ui/app/components/long-term-memory/record-list.d.ts +5 -0
  479. package/dist/src/web-ui/app/components/long-term-memory/record-list.js +97 -0
  480. package/dist/src/web-ui/app/components/long-term-memory/view-model.d.ts +29 -0
  481. package/dist/src/web-ui/app/components/long-term-memory/view-model.js +69 -0
  482. package/dist/src/web-ui/app/components/long-term-memory-setup.js +334 -0
  483. package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +39 -0
  484. package/dist/src/web-ui/app/components/tool-approval-card.d.ts +18 -0
  485. package/dist/src/web-ui/app/components/workspace-shell.js +48 -7
  486. package/dist/src/web-ui/app/controllers/app-event-bindings.js +43 -6
  487. package/dist/src/web-ui/app/controllers/composer-attachments-controller.d.ts +92 -0
  488. package/dist/src/web-ui/app/controllers/composer-queue-controller.d.ts +109 -0
  489. package/dist/src/web-ui/app/controllers/composer-submit-controller.d.ts +77 -0
  490. package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +149 -0
  491. package/dist/src/web-ui/app/controllers/conversation-session-controller.js +43 -3
  492. package/dist/src/web-ui/app/controllers/long-term-memory/controller.d.ts +87 -0
  493. package/dist/src/web-ui/app/controllers/long-term-memory/controller.js +302 -0
  494. package/dist/src/web-ui/app/controllers/long-term-memory/policy.d.ts +14 -0
  495. package/dist/src/web-ui/app/controllers/long-term-memory/policy.js +61 -0
  496. package/dist/src/web-ui/app/controllers/long-term-memory/state.js +85 -0
  497. package/dist/src/web-ui/app/controllers/operations-controller.d.ts +25 -0
  498. package/dist/src/web-ui/app/controllers/realtime-event-controller.d.ts +57 -0
  499. package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.d.ts +32 -0
  500. package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +177 -0
  501. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +78 -11
  502. package/dist/src/web-ui/app/controllers/tool-approval-controller.d.ts +28 -0
  503. package/dist/src/web-ui/app/index.html +13 -15
  504. package/dist/src/web-ui/app/services/runtime-web-client/memory.js +127 -0
  505. package/dist/src/web-ui/app/services/runtime-web-client.d.ts +84 -0
  506. package/dist/src/web-ui/app/services/runtime-web-client.js +27 -1
  507. package/dist/src/web-ui/app/styles/30-inspector-config.css +151 -1423
  508. package/dist/src/web-ui/app/styles/35-memory-onboarding.css +153 -0
  509. package/dist/src/web-ui/app/styles/36-memory-management.css +419 -0
  510. package/dist/src/web-ui/app/styles/40-config-workspace.css +992 -0
  511. package/dist/src/web-ui/app/styles/90-responsive.css +187 -26
  512. package/dist/src/web-ui/app/styles.css +3 -0
  513. package/dist/src/web-ui/config-dashboard-backend.js +9 -1
  514. package/dist/src/web-ui/local-runtime/api-router.d.ts +4 -2
  515. package/dist/src/web-ui/local-runtime/api-router.js +33 -0
  516. package/dist/src/web-ui/local-runtime/contracts.d.ts +5 -0
  517. package/dist/src/web-ui/local-runtime/memory-management-input.d.ts +12 -0
  518. package/dist/src/web-ui/local-runtime/memory-management-input.js +68 -0
  519. package/dist/src/web-ui/local-runtime/memory-management-response.d.ts +17 -0
  520. package/dist/src/web-ui/local-runtime/memory-management-response.js +47 -0
  521. package/dist/src/web-ui/local-runtime/memory-management-routes.d.ts +24 -0
  522. package/dist/src/web-ui/local-runtime/memory-management-routes.js +128 -0
  523. package/dist/src/web-ui/local-runtime/memory-onboarding-routes.d.ts +17 -0
  524. package/dist/src/web-ui/local-runtime/memory-onboarding-routes.js +81 -0
  525. package/dist/src/web-ui/local-runtime/request-abort.d.ts +7 -0
  526. package/dist/src/web-ui/local-runtime/request-abort.js +19 -0
  527. package/dist/src/web-ui/local-runtime-backend.js +10 -3
  528. package/dist/src/web-ui/server.d.ts +2 -0
  529. package/dist/src/web-ui/server.js +3 -0
  530. package/docs/configuration.md +128 -45
  531. package/docs/installation.md +21 -0
  532. package/docs/known-limitations.md +11 -0
  533. package/docs/long-term-memory.md +181 -0
  534. package/docs/publishing.md +52 -25
  535. package/docs/runtime-invariant-coverage.md +1 -1
  536. package/docs/runtime-library.md +16 -1
  537. package/docs/runtime-prompt-policy-contracts.md +12 -2
  538. package/docs/troubleshooting.md +21 -0
  539. package/examples/models/default.config.json +1 -0
  540. package/examples/request-runner.config.example.json +16 -22
  541. package/examples/runtime.config.example.json +4 -0
  542. package/methodologies/memory-informed-response.md +15 -0
  543. package/methodologies/response-ux.md +17 -0
  544. package/package.json +8 -2
  545. package/plugins/exec/source/handlers.ts +65 -5
  546. package/plugins/exec/src/index.cjs +39 -3
  547. package/plugins/filesystem/plugin.json +1 -0
  548. package/runtime.config.schema.json +30 -0
  549. package/src/runtime/README.md +77 -38
@@ -0,0 +1,17 @@
1
+ import type { IncomingMessage, ServerResponse } from "node:http";
2
+ import type { LongTermMemoryOnboardingService } from "../../runtime/long-term-memory/onboarding/contracts.js";
3
+ type JsonBody = Record<string, unknown> | null;
4
+ export declare class LongTermMemoryOnboardingRoutes {
5
+ private readonly service;
6
+ constructor(service: LongTermMemoryOnboardingService);
7
+ handle(params: {
8
+ method: string;
9
+ route: string;
10
+ url: URL;
11
+ body: JsonBody;
12
+ request: IncomingMessage;
13
+ response: ServerResponse;
14
+ }): Promise<boolean>;
15
+ private handleKnownRoute;
16
+ }
17
+ export {};
@@ -0,0 +1,81 @@
1
+ import { getString, sendJson } from "./http.js";
2
+ import { withHttpRequestAbortSignal } from "./request-abort.js";
3
+ export class LongTermMemoryOnboardingRoutes {
4
+ service;
5
+ constructor(service) {
6
+ this.service = service;
7
+ }
8
+ async handle(params) {
9
+ try {
10
+ return await this.handleKnownRoute(params);
11
+ }
12
+ catch (error) {
13
+ sendJson(params.response, readErrorStatus(error), {
14
+ ok: false,
15
+ error: "long_term_memory_onboarding_failed",
16
+ message: error instanceof Error ? error.message : String(error),
17
+ });
18
+ return true;
19
+ }
20
+ }
21
+ async handleKnownRoute(params) {
22
+ if (params.method === "GET" && params.route === "runtime/memory") {
23
+ sendJson(params.response, 200, {
24
+ ok: true,
25
+ status: await this.service.status(),
26
+ });
27
+ return true;
28
+ }
29
+ if (params.method === "GET" &&
30
+ params.route === "runtime/memory/models") {
31
+ const providerId = params.url.searchParams.get("provider") ?? "";
32
+ sendJson(params.response, 200, {
33
+ ok: true,
34
+ catalog: await withHttpRequestAbortSignal({
35
+ request: params.request,
36
+ response: params.response,
37
+ reason: "memory_onboarding_discovery_request_aborted",
38
+ run: (abortSignal) => this.service.discover({ providerId, abortSignal }),
39
+ }),
40
+ });
41
+ return true;
42
+ }
43
+ if (params.method === "POST" &&
44
+ params.route === "runtime/memory/enable") {
45
+ const result = await withHttpRequestAbortSignal({
46
+ request: params.request,
47
+ response: params.response,
48
+ reason: "memory_onboarding_enable_request_aborted",
49
+ run: (abortSignal) => this.service.enable({
50
+ providerId: getString(params.body?.providerId),
51
+ model: getString(params.body?.model),
52
+ ...(getString(params.body?.profileId)
53
+ ? { profileId: getString(params.body?.profileId) }
54
+ : {}),
55
+ emitClientEvents: params.body?.emitClientEvents === true,
56
+ abortSignal,
57
+ }),
58
+ });
59
+ sendJson(params.response, 200, { ok: true, ...result });
60
+ return true;
61
+ }
62
+ if (params.method === "POST" &&
63
+ params.route === "runtime/memory/disable") {
64
+ sendJson(params.response, 200, {
65
+ ok: true,
66
+ ...(await this.service.disable()),
67
+ });
68
+ return true;
69
+ }
70
+ return false;
71
+ }
72
+ }
73
+ function readErrorStatus(error) {
74
+ if (!error || typeof error !== "object" || !("statusCode" in error)) {
75
+ return 400;
76
+ }
77
+ const statusCode = Number(error.statusCode);
78
+ return Number.isInteger(statusCode) && statusCode >= 400 && statusCode <= 599
79
+ ? statusCode
80
+ : 400;
81
+ }
@@ -0,0 +1,7 @@
1
+ import type { IncomingMessage, ServerResponse } from "node:http";
2
+ export declare function withHttpRequestAbortSignal<T>(params: {
3
+ request: IncomingMessage;
4
+ response: ServerResponse;
5
+ reason: string;
6
+ run: (abortSignal: AbortSignal) => Promise<T>;
7
+ }): Promise<T>;
@@ -0,0 +1,19 @@
1
+ export async function withHttpRequestAbortSignal(params) {
2
+ const controller = new AbortController();
3
+ const abort = () => controller.abort(new Error(params.reason));
4
+ const abortOnResponseClose = () => {
5
+ if (!params.response.writableEnded)
6
+ abort();
7
+ };
8
+ params.request.once("aborted", abort);
9
+ params.response.once("close", abortOnResponseClose);
10
+ if (params.request.aborted || params.response.destroyed)
11
+ abort();
12
+ try {
13
+ return await params.run(controller.signal);
14
+ }
15
+ finally {
16
+ params.request.removeListener("aborted", abort);
17
+ params.response.removeListener("close", abortOnResponseClose);
18
+ }
19
+ }
@@ -1,3 +1,4 @@
1
+ import { resolveProviderAdapters } from "../model-gateway/server/index.js";
1
2
  import { LocalRuntimeApiRouter } from "./local-runtime/api-router.js";
2
3
  import { LocalRuntimeControlRoutes } from "./local-runtime/control-routes.js";
3
4
  import { RuntimeEnvironmentRegistry } from "./local-runtime/environment-registry.js";
@@ -12,11 +13,17 @@ export class LocalRuntimeWebBackend {
12
13
  realtime;
13
14
  controls;
14
15
  constructor(options) {
15
- this.environments = new RuntimeEnvironmentRegistry(options);
16
+ const resolvedOptions = {
17
+ ...options,
18
+ providerAdapters: resolveProviderAdapters({
19
+ providerAdapters: options.providerAdapters,
20
+ }),
21
+ };
22
+ this.environments = new RuntimeEnvironmentRegistry(resolvedOptions);
16
23
  const clients = new RealtimeClientHub();
17
24
  const requests = new LocalRequestExecution(clients);
18
- this.api = new LocalRuntimeApiRouter(options, this.environments, requests);
19
- this.realtime = new LocalRealtimeController(options, this.environments, requests, clients);
25
+ this.api = new LocalRuntimeApiRouter(resolvedOptions, this.environments, requests);
26
+ this.realtime = new LocalRealtimeController(resolvedOptions, this.environments, requests, clients);
20
27
  this.controls = new LocalRuntimeControlRoutes(requests);
21
28
  }
22
29
  async handleHttp(req, res, pathname) {
@@ -1,3 +1,4 @@
1
+ import type { ModelProviderAdapterRegistry } from "../model-gateway/index.js";
1
2
  export type WebUiSetupCommandMode = "source" | "package";
2
3
  export type WebUiEnvironmentOption = {
3
4
  id: string;
@@ -20,6 +21,7 @@ type WebUiServerOptions = {
20
21
  rootDir?: string;
21
22
  configPath?: string;
22
23
  setupCommandMode?: WebUiSetupCommandMode;
24
+ providerAdapters?: ModelProviderAdapterRegistry;
23
25
  };
24
26
  type WebUiServerHandle = {
25
27
  close: () => Promise<void>;
@@ -201,6 +201,9 @@ export function startWebUiServer(overrides = {}) {
201
201
  rootDir: options.rootDir,
202
202
  configPath: options.configPath,
203
203
  defaultEnvironmentId: options.defaultEnvironmentId,
204
+ ...(options.providerAdapters
205
+ ? { providerAdapters: options.providerAdapters }
206
+ : {}),
204
207
  })
205
208
  : null;
206
209
  const externalBridgeBackend = options.backend === "bridge"
@@ -85,6 +85,57 @@ and write it automatically to the generated model config:
85
85
  Use the same block when configuring an OpenAI model profile manually. Other
86
86
  providers are not implicitly assigned this policy by the initializer.
87
87
 
88
+ ## Passive Long-Term Memory
89
+
90
+ Passive cross-session memory is opt-in. The default is equivalent to:
91
+
92
+ ```json
93
+ {
94
+ "longTermMemory": {
95
+ "enabled": false,
96
+ "emitClientEvents": false
97
+ }
98
+ }
99
+ ```
100
+
101
+ Enable it through the shared Web UI or CLI onboarding flow whenever possible:
102
+
103
+ ```bash
104
+ npm run memory -- enable --provider <provider-id> --model <embedding-model-id>
105
+ ```
106
+
107
+ The flow creates a dedicated `models.embeddingProfiles` entry, performs a real
108
+ embedding probe, validates the full config, and then atomically enables
109
+ `longTermMemory`. A manual equivalent is:
110
+
111
+ ```json
112
+ {
113
+ "models": {
114
+ "embeddingProfiles": {
115
+ "memory-embedding": {
116
+ "provider": "ollama",
117
+ "model": "<embedding-model-id>"
118
+ }
119
+ }
120
+ },
121
+ "longTermMemory": {
122
+ "enabled": true,
123
+ "emitClientEvents": false,
124
+ "embeddingProfileId": "memory-embedding"
125
+ }
126
+ }
127
+ ```
128
+
129
+ The referenced provider must already exist under `models.providers`. Embedding
130
+ profiles accept `provider`, `model`, optional `label`, and optional JSON-safe
131
+ `options`. Generation, reasoning, context-window, and output-budget fields are
132
+ rejected because embedding and response-generation profiles have different
133
+ contracts.
134
+
135
+ `emitClientEvents` exposes bounded lifecycle status and counts, never memory
136
+ content or vectors. See [Passive Long-Term Memory](long-term-memory.md) for
137
+ storage, privacy, retrieval, and management behavior.
138
+
88
139
  ## Paths
89
140
 
90
141
  `environment.paths.runtimeDir` is environment-local generated runtime state.
@@ -180,27 +231,20 @@ request-runner config:
180
231
  ```
181
232
 
182
233
  `requestRunner.configRef` is resolved relative to the runtime config file, not
183
- the process working directory. The referenced file owns the complete set of
184
- runtime model-step mappings and timeouts plus the request context budget:
234
+ the process working directory. The referenced file owns model-step routing
235
+ overrides, timeout defaults and overrides, and the request context budget.
236
+ Fresh configurations use request-runner schema version 2:
185
237
 
186
238
  ```json
187
239
  {
240
+ "schemaVersion": 2,
188
241
  "models": {
189
242
  "defaults": {
190
243
  "profileId": "default",
191
244
  "steps": {
192
- "supervisor.decision": "supervisor.decision",
193
- "supervisor.response": "supervisor.response",
194
- "planner.decision": "planner.decision",
195
- "planner.graph": "planner.graph",
196
- "worker.decision": "worker.decision",
197
- "worker.result": "supervisor.response",
198
- "reviewer.decision": "reviewer.decision",
199
- "degraded.finalization": "degraded.finalization",
200
- "execution.decision": "execution.decision",
201
- "execution.response": "execution.response",
202
- "auditor.decision": "auditor.decision",
203
- "context.compact": "context.compact",
245
+ "supervisor.response": "default",
246
+ "worker.result": "default",
247
+ "execution.response": "default",
204
248
  "tool_payload.raw": "toolPayload.raw"
205
249
  }
206
250
  }
@@ -210,24 +254,54 @@ runtime model-step mappings and timeouts plus the request context budget:
210
254
  "safetyReserveTokens": 1200,
211
255
  "attachmentReserveTokens": 1024
212
256
  },
257
+ "stepDefaults": {
258
+ "timeoutMs": 90000
259
+ },
213
260
  "steps": {
214
- "supervisor.decision": { "timeoutMs": 90000 },
215
- "supervisor.response": { "timeoutMs": 90000 },
216
- "planner.decision": { "timeoutMs": 90000 },
217
- "planner.graph": { "timeoutMs": 90000 },
218
- "worker.decision": { "timeoutMs": 90000 },
219
- "worker.result": { "timeoutMs": 90000 },
220
- "reviewer.decision": { "timeoutMs": 90000 },
221
- "degraded.finalization": { "timeoutMs": 90000 },
222
- "execution.decision": { "timeoutMs": 90000 },
223
- "execution.response": { "timeoutMs": 90000 },
224
- "auditor.decision": { "timeoutMs": 90000 },
225
- "context.compact": { "timeoutMs": 90000 },
226
- "tool_payload.raw": { "timeoutMs": 90000 }
261
+ "supervisor.response": {
262
+ "instructionRefs": [
263
+ "../methodologies/response-ux.md",
264
+ "../methodologies/memory-informed-response.md"
265
+ ]
266
+ },
267
+ "execution.response": {
268
+ "instructionRefs": [
269
+ "../methodologies/response-ux.md",
270
+ "../methodologies/memory-informed-response.md"
271
+ ]
272
+ }
227
273
  }
228
274
  }
229
275
  ```
230
276
 
277
+ In schema version 2, `models.defaults.steps` is a sparse override map. A
278
+ missing model-step mapping resolves to the same id as the step, so an identity
279
+ entry such as `"capability.controls": "capability.controls"` is unnecessary.
280
+ The four entries above are the canonical non-identity overrides: three raw
281
+ response steps use the base `default` profile, while `tool_payload.raw` uses
282
+ the existing `toolPayload.raw` calibration slot. An explicit target may still
283
+ select a model profile, invocation profile, or calibration slot; an unknown
284
+ explicit target is rejected rather than replaced with a default.
285
+
286
+ `stepDefaults.timeoutMs` supplies the timeout for every step. The root `steps`
287
+ object is also sparse: add `timeoutMs` only when a step differs from the
288
+ default, and add `instructionRefs` only when that step needs additional
289
+ instructions. A missing step entry therefore uses the default timeout and has
290
+ no additional instruction references.
291
+
292
+ A request-runner config with no `schemaVersion` is the legacy v1 format
293
+ published with ABot 1.0.0. It remains supported and is normalized in memory;
294
+ the loader does not rewrite it, and adding a runtime model step does not require
295
+ the user to add a new identity mapping. `schemaVersion: 2` is the only explicit
296
+ supported version. Any other explicit value is rejected before the config is
297
+ used or written.
298
+
299
+ A fresh `abot init` creates schema version 2. Running init against an existing
300
+ project without `--force` preserves its request-runner config byte for byte,
301
+ including a legacy v1 file. Package upgrades never run a config migration or
302
+ rewrite automatically; `--force` remains an explicit request to replace the
303
+ local starter files.
304
+
231
305
  Every materialized model profile declares its physical context capacity with
232
306
  top-level `contextWindowTokens`. The selected profile supplies that capacity;
233
307
  the request-runner context block supplies only admission headroom.
@@ -241,16 +315,23 @@ The Ollama adapter still sends a finite provider-native `num_predict`, derived
241
315
  mechanically from the final provider input, the physical context remainder,
242
316
  and a strict bounded output schema when one applies.
243
317
 
244
- All three root fields and every invoked step are required. Unknown fields,
245
- missing steps, and extra step ids are rejected during configuration loading.
246
- `worker.result` is a raw-text authoring step. It may reuse a model profile's
247
- existing raw-response calibration slot, as shown above, without changing its
248
- distinct runtime identity.
318
+ The required context fields remain explicit. Unknown fields, unknown step ids,
319
+ and invalid explicit overrides are rejected during configuration loading;
320
+ omitting a mapping or step entry uses the schema version 2 defaults described
321
+ above. `instructionRefs` are resolved relative to the request-runner config.
322
+ The `abot init` command installs the two default root-response methodologies
323
+ beside the local configuration, and the same references are applied to
324
+ `supervisor.response` and `execution.response`. They are presentation guidance
325
+ only and cannot alter the available actions, output contract, or runtime
326
+ authority.
327
+ `worker.result` is a raw-text authoring step. The canonical override selects the
328
+ base `default` profile without changing the step's distinct runtime identity;
329
+ an installation may still configure a more specific explicit target.
249
330
  `planner.decision` remains the delegated MAIN Planner contract and keeps its
250
331
  configured methodology references. `planner.graph` is the separate structured
251
332
  graph proposal/decline contract used by the Execution Agent advisory Planner;
252
- it has its own mapping, timeout, output contract, and model calibration and does
253
- not inherit `planner.decision` instruction references.
333
+ it receives its own normalized mapping, timeout, output contract, and model
334
+ calibration and does not inherit `planner.decision` instruction references.
254
335
  The request runner has no configurable role hierarchy or fixed sequence. A
255
336
  model profile may select one code-owned execution policy; omission uses the
256
337
  current Supervisor/Worker behavior:
@@ -374,15 +455,15 @@ loss before a checkpoint covers those turns.
374
455
  supported. Tool observations and artifact context are projected by their
375
456
  owning runtime contracts; model profiles cannot override those boundaries.
376
457
 
377
- The request-runner config maps internal `modelStep` ids to semantic calibration
378
- slot ids:
458
+ The request-runner config maps internal `modelStep` ids only when a target
459
+ differs from the schema version 2 identity default:
379
460
 
380
461
  ```json
381
462
  {
382
463
  "models": {
383
464
  "defaults": {
384
465
  "steps": {
385
- "supervisor.decision": "supervisor.decision"
466
+ "tool_payload.raw": "toolPayload.raw"
386
467
  }
387
468
  }
388
469
  }
@@ -428,12 +509,13 @@ Use this bounded workflow:
428
509
 
429
510
  The common slots and their first tuning targets are:
430
511
 
431
- | Step family | Slots | Tune first |
432
- | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
512
+ | Step family | Slots | Tune first |
513
+ | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
433
514
  | Routing and decisions | `supervisor.decision`, `worker.decision`, `planner.decision`, `planner.graph`, `reviewer.decision`, `execution.decision`, `auditor.decision`, `degraded.finalization` | Keep the required structured `format`, then verify complete structured output and deterministic sampling. Add short model-specific instructions only when measured behavior needs them. |
434
- | User-facing or delegated output | `supervisor.response`, `worker.result`, `execution.response` | Sampling and any intentional provider-native output controls. Do not force JSON unless that step's contract requires it. |
435
- | Context compaction | `context.compact` | Structured format and preservation of facts that later steps still require; physical capacity remains profile-owned. |
436
- | Literal tool payloads | `toolPayload.raw` | Literal-payload instructions and any intentional provider-native output controls. Verify the produced payload or artifact directly, not the model's description of it. |
515
+ | Capability control authoring | `capability.controls` | Preserve the structured controls contract without applying the short decision-output ceiling. |
516
+ | User-facing or delegated output | `supervisor.response`, `worker.result`, `execution.response` | Sampling and any intentional provider-native output controls. Do not force JSON unless that step's contract requires it. |
517
+ | Context compaction | `context.compact` | Structured format and preservation of facts that later steps still require; physical capacity remains profile-owned. |
518
+ | Literal tool payloads | `toolPayload.raw` | Literal-payload instructions and any intentional provider-native output controls. Verify the produced payload or artifact directly, not the model's description of it. |
437
519
 
438
520
  `timeoutMs` addresses provider latency only; raising it does not improve model
439
521
  reasoning. Top-level `contextWindowTokens` declares the concrete model
@@ -443,9 +525,10 @@ but a provider may intentionally omit unsupported sampling fields, such as
443
525
  temperature for an enabled OpenAI reasoning mode.
444
526
 
445
527
  An omitted slot inherits the model profile's base generation and context. The
446
- packaged request-runner example already maps each semantic step to its matching
447
- calibration slot, so most users only need to edit the profile file for the
448
- model they are tuning.
528
+ packaged schema version 2 request-runner example lists only the four canonical
529
+ non-identity overrides; all other steps resolve to their matching calibration
530
+ slot automatically. Most users therefore only need to edit the profile file
531
+ for the model they are tuning.
449
532
 
450
533
  ## Schema
451
534
 
@@ -91,6 +91,24 @@ npx abot add-model --profile <profile-id> --provider openai --model <model-id>
91
91
  Add `--default` only to select that profile as the default. It does not delete
92
92
  the profiles that are already configured.
93
93
 
94
+ ### Optional Passive Long-Term Memory
95
+
96
+ Long-term memory is disabled by default. After a provider is configured, choose
97
+ an embedding model and enable it through the Web UI Config workspace or CLI:
98
+
99
+ ```bash
100
+ npx abot memory status
101
+ npx abot memory models --provider <provider-id>
102
+ npx abot memory enable --provider <provider-id> --model <embedding-model-id>
103
+ ```
104
+
105
+ ABot does not install or choose the embedding model. The enable command performs
106
+ a real probe, writes config only after it succeeds, and reports that the Runtime
107
+ must be restarted. OpenAI users enter the embedding model id manually; Ollama
108
+ users can discover model ids installed at the configured Ollama endpoint.
109
+
110
+ See [Passive Long-Term Memory](long-term-memory.md) before enabling persistence.
111
+
94
112
  ## Use As A Library
95
113
 
96
114
  After the package is published:
@@ -134,6 +152,9 @@ The package includes the public plugin catalog. Additional consumer plugins may
134
152
  be installed under `<consumer-root>/plugins`. A consumer plugin cannot replace
135
153
  a bundled plugin: duplicate plugin ids fail closed.
136
154
 
155
+ The passive long-term memory service belongs to the Runtime core and does not
156
+ depend on the bundled `memory` plugin.
157
+
137
158
  Web URL fetching is available through the bundled Web plugin without a search
138
159
  credential. Set `BRAVE_SEARCH_API_KEY` to make `web_search` operational. With
139
160
  no key, `web_fetch` remains operational and a `web_search` invocation fails
@@ -61,6 +61,17 @@ plugin entrypoints are not currently supported.
61
61
  Plugin behavior belongs inside the plugin. Runtime orchestration should only
62
62
  see the generic selected catalog and execution results.
63
63
 
64
+ ## Passive Long-Term Memory
65
+
66
+ Passive long-term memory is disabled by default and requires an embedding model
67
+ selected and operated by the consumer. ABot provides OpenAI and Ollama adapter
68
+ contracts, but it does not install, download, or choose that model.
69
+
70
+ Ollama exposes installed-model discovery. OpenAI does not expose equivalent
71
+ discovery through this integration, so its embedding model id is entered
72
+ manually. If an enabled embedding provider becomes unavailable, memory
73
+ retrieval or saving is skipped while the completed user response is preserved.
74
+
64
75
  ## Web UI
65
76
 
66
77
  The packaged Web UI is the primary local GUI. Its default backend talks directly
@@ -0,0 +1,181 @@
1
+ # Passive Long-Term Memory
2
+
3
+ ABot Runtime can retain selected user facts and preferences across sessions.
4
+ This feature is passive: the model does not invoke a memory tool, and the
5
+ Runtime core remains the only owner of retrieval, filtering, deduplication,
6
+ storage, and deletion.
7
+
8
+ Long-term memory is disabled by default. Enabling it is an explicit consumer
9
+ choice because it may persist personal information between conversations.
10
+
11
+ ## How It Works
12
+
13
+ The Supervisor path separates memory proposal from the user-facing response.
14
+ When long-term memory is enabled, `supervisor.response` first performs one
15
+ structured candidate-only call:
16
+
17
+ ```json
18
+ {
19
+ "memoryCandidates": [
20
+ {
21
+ "content": "A durable fact or preference established by the user.",
22
+ "tags": ["normalized-later-by-core"]
23
+ }
24
+ ]
25
+ }
26
+ ```
27
+
28
+ `memoryCandidates` is empty when there is nothing durable to propose. The
29
+ Supervisor then authors the complete user-facing response through its ordinary
30
+ raw-text contract, without a JSON wrapper. Invalid or unavailable candidate
31
+ authoring is isolated to an empty candidate list and cannot replace or
32
+ invalidate that raw response. This sequential split adds the candidate-call
33
+ latency before the Supervisor response is delivered.
34
+
35
+ `execution.response` retains the combined strict envelope containing both
36
+ `finalResponse` and `memoryCandidates`; its external response contract is
37
+ unchanged.
38
+
39
+ Candidate data remains internal and is processed after the final assistant
40
+ response is persisted. Persistence runs through a Runtime-owned background
41
+ queue; response completion never waits for embedding or memory-store work.
42
+
43
+ Before the next terminal response is authored, the Runtime retrieves a small
44
+ relevant set from the cross-session pool. Retrieval uses provider embeddings
45
+ plus bounded lexical, tag, and recency scoring. The projection is passive
46
+ reference context; it is never treated as a new user request or an instruction.
47
+
48
+ Retrieval, candidate policy, filtering, deduplication, and persistence are
49
+ shared by `supervisor.response` and `execution.response`; only their authoring
50
+ contracts differ. Decision, planning, Worker, Reviewer, payload, and tool
51
+ contexts do not receive the long-term memory projection.
52
+
53
+ Both response paths also share the same configured response-experience
54
+ methodology. It applies whether memory is enabled or disabled. Relevant memory
55
+ is an optional passive layer that may improve continuity and useful defaults;
56
+ it never replaces the current request, forces a personal reference, or grants
57
+ action authority.
58
+
59
+ ## Enable It
60
+
61
+ Configure an ordinary model provider first with `abot init` or `abot add-model`.
62
+ Then choose an embedding model exposed by that provider. ABot does not choose,
63
+ install, or download an embedding model.
64
+
65
+ For a packaged installation:
66
+
67
+ ```bash
68
+ npx abot memory status
69
+ npx abot memory models --provider <provider-id>
70
+ npx abot memory enable --provider <provider-id> --model <embedding-model-id>
71
+ ```
72
+
73
+ From a source checkout, use the equivalent commands:
74
+
75
+ ```bash
76
+ npm run memory -- status
77
+ npm run memory -- models --provider <provider-id>
78
+ npm run memory -- enable --provider <provider-id> --model <embedding-model-id>
79
+ ```
80
+
81
+ Add `--emit-events` to expose bounded lifecycle events to clients. Enablement
82
+ performs a real embedding probe and validates the complete candidate config
83
+ before writing it. The previous config is backed up, and a restart is required
84
+ after enablement or disablement.
85
+
86
+ The Config workspace in the packaged Web UI uses the same onboarding service.
87
+ It can list configured providers, discover models when the provider supports
88
+ discovery, probe and enable a selected model, or disable the feature. A provider
89
+ without discovery support accepts a model id entered by the user.
90
+
91
+ ## Configuration Contract
92
+
93
+ The onboarding flow writes a dedicated embedding profile and binds the feature
94
+ to it:
95
+
96
+ ```json
97
+ {
98
+ "models": {
99
+ "embeddingProfiles": {
100
+ "memory-embedding": {
101
+ "label": "Long-term memory embeddings",
102
+ "provider": "ollama",
103
+ "model": "<embedding-model-id>"
104
+ }
105
+ }
106
+ },
107
+ "longTermMemory": {
108
+ "enabled": true,
109
+ "emitClientEvents": false,
110
+ "embeddingProfileId": "memory-embedding"
111
+ }
112
+ }
113
+ ```
114
+
115
+ Embedding profiles are intentionally separate from generation profiles. They
116
+ accept `provider`, `model`, optional `label`, and provider-owned JSON-safe
117
+ `options`; generation, reasoning, context-window, and output settings are not
118
+ valid embedding-profile fields.
119
+
120
+ When disabled, no repository read, embedding request, model-output envelope,
121
+ or memory lifecycle event is added to the response path.
122
+
123
+ ## Providers
124
+
125
+ - Ollama uses its `/api/embed` contract and can discover locally installed
126
+ model ids through `/api/tags`.
127
+ - OpenAI uses `/embeddings`. Model discovery is not exposed by that provider,
128
+ so the consumer supplies the embedding model id.
129
+ - A custom model-gateway adapter may implement `embed` and optional
130
+ `listEmbeddingModels` without changing Runtime memory policy.
131
+
132
+ If the selected embedding provider becomes unavailable during a request, the
133
+ Runtime skips memory retrieval or persistence, records a bounded diagnostic,
134
+ and preserves normal response delivery.
135
+
136
+ ## Storage, Privacy, And Management
137
+
138
+ The default adapter stores canonical records and their derived vector index at:
139
+
140
+ ```text
141
+ <runtimeDir>/long-term-memory/memory.json
142
+ ```
143
+
144
+ The file is runtime-generated local state and must not be published or
145
+ committed. Canonical records contain content, normalized tags, timestamps, and
146
+ source session/request provenance. Derived vectors are versioned by model
147
+ fingerprint and are rebuilt when that fingerprint or vector dimension changes.
148
+
149
+ The core rejects obvious secrets such as private keys, labeled passwords, API
150
+ keys, and common token formats. Exact duplicates are merged mechanically;
151
+ semantic similarity alone never overwrites an existing record.
152
+
153
+ Library hosts can manage the pool through the composed service:
154
+
155
+ ```ts
156
+ const runtime = createRuntimeApplication(config);
157
+
158
+ await runtime.services.longTermMemory.status();
159
+ await runtime.services.longTermMemory.list({ limit: 50 });
160
+ await runtime.services.longTermMemory.delete({ id: memoryId });
161
+ await runtime.services.longTermMemory.clear();
162
+ ```
163
+
164
+ Management APIs return canonical records, not embedding vectors.
165
+
166
+ ## Client Events
167
+
168
+ With `emitClientEvents: true`, clients may receive bounded lifecycle events:
169
+
170
+ - `memory.retrieval.started|completed|failed`
171
+ - `memory.save.queued`
172
+
173
+ The save event confirms only that background persistence was scheduled. Its
174
+ completion or failure is diagnostic-only and cannot change the completed user
175
+ response. Client events contain lifecycle status and counts only. They never
176
+ include memory content, tags, vectors, credentials, or the model's internal
177
+ candidates.
178
+
179
+ The bundled `memory` plugin remains a separate, explicit user-invoked
180
+ capability. Passive long-term memory does not depend on that plugin and remains
181
+ operational if the plugin is disabled or removed.