@abot-ai/runtime 1.1.0 → 1.2.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 (268) hide show
  1. package/README.md +6 -3
  2. package/dist/src/capabilities/tool-types.d.ts +1 -1
  3. package/dist/src/model-gateway/providers/ollama/generation-options.d.ts +1 -3
  4. package/dist/src/model-gateway/providers/ollama/generation-options.js +1 -5
  5. package/dist/src/model-gateway/providers/ollama/payload.js +0 -8
  6. package/dist/src/model-gateway/server/request-body.js +1 -0
  7. package/dist/src/plugin-sdk/index.d.ts +2 -0
  8. package/dist/src/plugin-sdk/index.js +2 -0
  9. package/dist/src/plugin-sdk/tool-availability-brief.d.ts +9 -0
  10. package/dist/src/plugin-sdk/tool-availability-brief.js +48 -0
  11. package/dist/src/plugin-sdk/tool-availability-overview.d.ts +9 -0
  12. package/dist/src/plugin-sdk/tool-availability-overview.js +62 -0
  13. package/dist/src/runtime/adapters/registered-tool-payload-plan.d.ts +0 -9
  14. package/dist/src/runtime/adapters/registered-tool-payload-plan.js +0 -67
  15. package/dist/src/runtime/adapters/registered-tool-payload-related-artifacts.d.ts +13 -0
  16. package/dist/src/runtime/adapters/registered-tool-payload-related-artifacts.js +84 -0
  17. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/catalog.js +4 -0
  18. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/execution.js +3 -0
  19. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.d.ts +1 -0
  20. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.js +11 -1
  21. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.d.ts +1 -0
  22. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.js +9 -1
  23. package/dist/src/runtime/capabilities/request-bound-tool-registry.js +1 -24
  24. package/dist/src/runtime/capabilities/tool-availability.d.ts +6 -0
  25. package/dist/src/runtime/capabilities/tool-availability.js +28 -0
  26. package/dist/src/runtime/context/capability-brief.d.ts +25 -0
  27. package/dist/src/runtime/context/capability-brief.js +106 -0
  28. package/dist/src/runtime/context/request-tool-results-message-binding.d.ts +6 -0
  29. package/dist/src/runtime/context/request-tool-results-message-binding.js +30 -0
  30. package/dist/src/runtime/context/request-tool-results-scope.d.ts +3 -0
  31. package/dist/src/runtime/context/request-tool-results-scope.js +8 -0
  32. package/dist/src/runtime/context/request-tool-results.d.ts +8 -4
  33. package/dist/src/runtime/context/request-tool-results.js +49 -38
  34. package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +8 -1
  35. package/dist/src/runtime/orchestration/role-calls/child-return.d.ts +4 -0
  36. package/dist/src/runtime/orchestration/role-calls/child-return.js +25 -5
  37. package/dist/src/runtime/orchestration/role-calls/command-decoder.js +8 -3
  38. package/dist/src/runtime/orchestration/role-calls/command-dispatch/child-transitions.d.ts +1 -1
  39. package/dist/src/runtime/orchestration/role-calls/command-dispatch/child-transitions.js +17 -2
  40. package/dist/src/runtime/orchestration/role-calls/command-dispatch.d.ts +1 -1
  41. package/dist/src/runtime/orchestration/role-calls/command-dispatch.js +2 -2
  42. package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +5 -2
  43. package/dist/src/runtime/orchestration/role-calls/contracts.js +4 -4
  44. package/dist/src/runtime/orchestration/role-calls/dependency-results.d.ts +1 -1
  45. package/dist/src/runtime/orchestration/role-calls/dependency-results.js +1 -0
  46. package/dist/src/runtime/orchestration/role-calls/index.d.ts +5 -1
  47. package/dist/src/runtime/orchestration/role-calls/index.js +5 -1
  48. package/dist/src/runtime/orchestration/role-calls/ledger.d.ts +3 -1
  49. package/dist/src/runtime/orchestration/role-calls/ledger.js +9 -2
  50. package/dist/src/runtime/orchestration/role-calls/reducer.d.ts +1 -1
  51. package/dist/src/runtime/orchestration/role-calls/reducer.js +2 -2
  52. package/dist/src/runtime/orchestration/role-calls/result-receipt.d.ts +49 -0
  53. package/dist/src/runtime/orchestration/role-calls/result-receipt.js +188 -0
  54. package/dist/src/runtime/orchestration/role-calls/return-result-receipt.d.ts +19 -0
  55. package/dist/src/runtime/orchestration/role-calls/return-result-receipt.js +52 -0
  56. package/dist/src/runtime/orchestration/role-calls/transactions.js +1 -0
  57. package/dist/src/runtime/orchestration/role-calls/work-result-lineage.d.ts +34 -0
  58. package/dist/src/runtime/orchestration/role-calls/work-result-lineage.js +185 -0
  59. package/dist/src/runtime/orchestration/role-calls/work-result-receipt.d.ts +36 -0
  60. package/dist/src/runtime/orchestration/role-calls/work-result-receipt.js +187 -0
  61. package/dist/src/runtime/orchestration/role-executors/activation/result-normalization.js +6 -3
  62. package/dist/src/runtime/orchestration/role-executors/child-invocation/transaction.js +1 -0
  63. package/dist/src/runtime/orchestration/role-executors/contracts.d.ts +2 -1
  64. package/dist/src/runtime/orchestration/worker-capabilities/assignment-provenance.d.ts +36 -0
  65. package/dist/src/runtime/orchestration/worker-capabilities/assignment-provenance.js +171 -0
  66. package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +32 -1
  67. package/dist/src/runtime/orchestration/worker-capabilities/execution/invocation-preparation.d.ts +2 -1
  68. package/dist/src/runtime/orchestration/worker-capabilities/execution/invocation-preparation.js +3 -0
  69. package/dist/src/runtime/orchestration/worker-capabilities/execution.js +42 -19
  70. package/dist/src/runtime/orchestration/worker-capabilities/index.d.ts +2 -0
  71. package/dist/src/runtime/orchestration/worker-capabilities/index.js +2 -0
  72. package/dist/src/runtime/orchestration/worker-capabilities/payload-assignment-validation.d.ts +3 -0
  73. package/dist/src/runtime/orchestration/worker-capabilities/payload-assignment-validation.js +30 -0
  74. package/dist/src/runtime/orchestration/worker-capabilities/payload-author.js +8 -19
  75. package/dist/src/runtime/orchestration/worker-capabilities/payload-contracts.d.ts +5 -1
  76. package/dist/src/runtime/orchestration/worker-capabilities/payload-instructions.js +1 -1
  77. package/dist/src/runtime/orchestration/worker-capabilities/payload-source-provenance.d.ts +14 -0
  78. package/dist/src/runtime/orchestration/worker-capabilities/payload-source-provenance.js +132 -0
  79. package/dist/src/runtime/request/capability-brief.d.ts +5 -0
  80. package/dist/src/runtime/request/capability-brief.js +24 -0
  81. package/dist/src/runtime/request/execution-scope.d.ts +2 -1
  82. package/dist/src/runtime/request/role-executor-composition.js +1 -1
  83. package/dist/src/runtime/request/worker-capability-composition.d.ts +2 -1
  84. package/dist/src/runtime/request/worker-capability-composition.js +6 -1
  85. package/dist/src/runtime/request/worker-capability-payload.js +11 -8
  86. package/dist/src/runtime/steps/execution-agent/prompt.js +4 -3
  87. package/dist/src/runtime/steps/planner-decision/capability-catalog-context.d.ts +14 -0
  88. package/dist/src/runtime/steps/planner-decision/capability-catalog-context.js +87 -0
  89. package/dist/src/runtime/steps/planner-decision/contracts.d.ts +3 -5
  90. package/dist/src/runtime/steps/planner-decision/contracts.js +3 -3
  91. package/dist/src/runtime/steps/planner-decision/format.d.ts +3 -2
  92. package/dist/src/runtime/steps/planner-decision/format.js +73 -76
  93. package/dist/src/runtime/steps/planner-decision/input.d.ts +4 -3
  94. package/dist/src/runtime/steps/planner-decision/input.js +10 -7
  95. package/dist/src/runtime/steps/planner-decision/parser.d.ts +3 -2
  96. package/dist/src/runtime/steps/planner-decision/parser.js +10 -19
  97. package/dist/src/runtime/steps/planner-decision/plan-parser.js +18 -12
  98. package/dist/src/runtime/steps/planner-decision/prompt.js +33 -28
  99. package/dist/src/runtime/steps/planner-decision/resume.d.ts +1 -1
  100. package/dist/src/runtime/steps/planner-decision/resume.js +38 -1
  101. package/dist/src/runtime/steps/planner-decision/run.d.ts +3 -2
  102. package/dist/src/runtime/steps/reviewer-decision/audit-coverage.d.ts +10 -0
  103. package/dist/src/runtime/steps/reviewer-decision/audit-coverage.js +186 -0
  104. package/dist/src/runtime/steps/reviewer-decision/contracts.d.ts +3 -8
  105. package/dist/src/runtime/steps/reviewer-decision/contracts.js +12 -6
  106. package/dist/src/runtime/steps/reviewer-decision/delegated-context.d.ts +24 -0
  107. package/dist/src/runtime/steps/reviewer-decision/delegated-context.js +70 -0
  108. package/dist/src/runtime/steps/reviewer-decision/diagnostics.js +1 -1
  109. package/dist/src/runtime/steps/reviewer-decision/format.js +37 -24
  110. package/dist/src/runtime/steps/reviewer-decision/input.js +1 -1
  111. package/dist/src/runtime/steps/reviewer-decision/model-context.d.ts +4 -3
  112. package/dist/src/runtime/steps/reviewer-decision/model-context.js +92 -10
  113. package/dist/src/runtime/steps/reviewer-decision/parser.js +19 -1
  114. package/dist/src/runtime/steps/reviewer-decision/projection.js +42 -68
  115. package/dist/src/runtime/steps/reviewer-decision/prompt.js +10 -5
  116. package/dist/src/runtime/steps/reviewer-decision/run.js +12 -3
  117. package/dist/src/runtime/steps/reviewer-decision/verification-coverage.d.ts +14 -0
  118. package/dist/src/runtime/steps/reviewer-decision/verification-coverage.js +52 -0
  119. package/dist/src/runtime/steps/supervisor-decision/capability-brief.d.ts +14 -0
  120. package/dist/src/runtime/steps/supervisor-decision/capability-brief.js +38 -0
  121. package/dist/src/runtime/steps/supervisor-decision/contracts.d.ts +7 -3
  122. package/dist/src/runtime/steps/supervisor-decision/diagnostics.d.ts +2 -0
  123. package/dist/src/runtime/steps/supervisor-decision/diagnostics.js +8 -2
  124. package/dist/src/runtime/steps/supervisor-decision/format.js +32 -20
  125. package/dist/src/runtime/steps/supervisor-decision/input.d.ts +4 -1
  126. package/dist/src/runtime/steps/supervisor-decision/input.js +19 -1
  127. package/dist/src/runtime/steps/supervisor-decision/parser.js +62 -59
  128. package/dist/src/runtime/steps/supervisor-decision/prompt.js +6 -7
  129. package/dist/src/runtime/steps/supervisor-decision/resume.js +47 -1
  130. package/dist/src/runtime/steps/supervisor-decision/run.js +10 -0
  131. package/dist/src/runtime/steps/supervisor-decision/working-directory.js +2 -1
  132. package/dist/src/runtime/steps/worker-decision/contracts.d.ts +2 -1
  133. package/dist/src/runtime/steps/worker-decision/input/canonical-state.js +8 -1
  134. package/dist/src/runtime/steps/worker-decision/input/diagnostic-projection.js +2 -2
  135. package/dist/src/runtime/steps/worker-decision/input/prompt-context.d.ts +1 -0
  136. package/dist/src/runtime/steps/worker-decision/input/prompt-context.js +4 -1
  137. package/dist/src/runtime/steps/worker-decision/input/reference-context.js +34 -14
  138. package/dist/src/runtime/steps/worker-decision/input/types.d.ts +2 -1
  139. package/dist/src/runtime/steps/worker-decision/input.d.ts +1 -0
  140. package/dist/src/runtime/steps/worker-decision/input.js +1 -0
  141. package/dist/src/runtime/steps/worker-decision/payload-dependency-results.d.ts +8 -0
  142. package/dist/src/runtime/steps/worker-decision/payload-dependency-results.js +19 -0
  143. package/dist/src/runtime/steps/worker-decision/prompt.js +8 -8
  144. package/dist/src/runtime/steps/worker-decision/result-author.js +18 -11
  145. package/dist/src/runtime/steps/worker-decision/run.js +2 -2
  146. package/dist/src/web-ui/app/ARCHITECTURE.md +19 -6
  147. package/dist/src/web-ui/app/app.js +6 -7
  148. package/dist/src/web-ui/app/components/composer-context-window.d.ts +25 -0
  149. package/dist/src/web-ui/app/components/composer-context-window.js +155 -0
  150. package/dist/src/web-ui/app/components/composer-plan.d.ts +9 -0
  151. package/dist/src/web-ui/app/components/composer-plan.js +128 -0
  152. package/dist/src/web-ui/app/components/conversation-activity.d.ts +5 -6
  153. package/dist/src/web-ui/app/components/conversation-activity.js +64 -157
  154. package/dist/src/web-ui/app/components/conversation-role-cards.d.ts +23 -0
  155. package/dist/src/web-ui/app/components/conversation-role-cards.js +181 -0
  156. package/dist/src/web-ui/app/components/conversation-sidebar-layout.js +12 -0
  157. package/dist/src/web-ui/app/components/conversation-sources.d.ts +7 -0
  158. package/dist/src/web-ui/app/components/conversation-sources.js +182 -0
  159. package/dist/src/web-ui/app/components/conversation-view.js +34 -6
  160. package/dist/src/web-ui/app/components/model-selector.js +4 -1
  161. package/dist/src/web-ui/app/components/operations-section.js +46 -0
  162. package/dist/src/web-ui/app/components/workspace-shell.js +86 -78
  163. package/dist/src/web-ui/app/controllers/realtime-event-controller.d.ts +1 -0
  164. package/dist/src/web-ui/app/controllers/realtime-event-controller.js +55 -90
  165. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +2 -0
  166. package/dist/src/web-ui/app/controllers/session-controller.js +17 -12
  167. package/dist/src/web-ui/app/index.html +209 -210
  168. package/dist/src/web-ui/app/lib/composer-plan-model.d.ts +32 -0
  169. package/dist/src/web-ui/app/lib/composer-plan-model.js +108 -0
  170. package/dist/src/web-ui/app/lib/conversation-role-model.d.ts +19 -0
  171. package/dist/src/web-ui/app/lib/conversation-role-model.js +193 -0
  172. package/dist/src/web-ui/app/lib/event-presentation.js +30 -9
  173. package/dist/src/web-ui/app/lib/source-url-policy.d.ts +2 -0
  174. package/dist/src/web-ui/app/lib/source-url-policy.js +31 -0
  175. package/dist/src/web-ui/app/lib/task-progress.d.ts +53 -0
  176. package/dist/src/web-ui/app/lib/task-progress.js +233 -0
  177. package/dist/src/web-ui/app/lib/tool-invocation-count.d.ts +5 -0
  178. package/dist/src/web-ui/app/lib/tool-invocation-count.js +21 -0
  179. package/dist/src/web-ui/app/lib/web-source-event.d.ts +8 -0
  180. package/dist/src/web-ui/app/lib/web-source-event.js +21 -0
  181. package/dist/src/web-ui/app/lib/web-sources.d.ts +36 -0
  182. package/dist/src/web-ui/app/lib/web-sources.js +177 -0
  183. package/dist/src/web-ui/app/styles/00-tokens-base.css +15 -3
  184. package/dist/src/web-ui/app/styles/10-shell-sessions.css +24 -34
  185. package/dist/src/web-ui/app/styles/12-conversation-sidebar.css +93 -0
  186. package/dist/src/web-ui/app/styles/20-chat-composer.css +55 -472
  187. package/dist/src/web-ui/app/styles/21-composer-controls.css +368 -0
  188. package/dist/src/web-ui/app/styles/22-composer-context-window.css +90 -0
  189. package/dist/src/web-ui/app/styles/23-composer-plan.css +171 -0
  190. package/dist/src/web-ui/app/styles/24-conversation-role-cards.css +205 -0
  191. package/dist/src/web-ui/app/styles/25-conversation-sources.css +141 -0
  192. package/dist/src/web-ui/app/styles/30-inspector-config.css +21 -209
  193. package/dist/src/web-ui/app/styles/35-memory-onboarding.css +8 -8
  194. package/dist/src/web-ui/app/styles/36-memory-management.css +13 -13
  195. package/dist/src/web-ui/app/styles/37-config-operations.css +197 -0
  196. package/dist/src/web-ui/app/styles/40-config-workspace.css +36 -36
  197. package/dist/src/web-ui/app/styles/90-responsive.css +14 -77
  198. package/dist/src/web-ui/app/styles/foundation.css +2 -2
  199. package/dist/src/web-ui/app/styles.css +7 -0
  200. package/dist/src/web-ui/app/ui-behavior.d.ts +1 -1
  201. package/dist/src/web-ui/app/ui-behavior.js +1 -1
  202. package/docs/configuration.md +15 -8
  203. package/docs/installation.md +7 -4
  204. package/docs/known-limitations.md +21 -0
  205. package/docs/plugins.md +28 -13
  206. package/docs/runtime-invariant-coverage.md +18 -17
  207. package/docs/runtime-prompt-policy-contracts.md +27 -17
  208. package/package.json +4 -3
  209. package/plugins/capability-brief/source/index.ts +5 -48
  210. package/plugins/capability-brief/src/index.cjs +46 -33
  211. package/plugins/system-probe/plugin.json +1 -0
  212. package/plugins/web/README.md +125 -0
  213. package/plugins/web/plugin.json +1 -1
  214. package/plugins/web/skills/web_fetch_skill/SKILL.md +2 -2
  215. package/plugins/web/skills/web_search_skill/SKILL.md +8 -4
  216. package/plugins/web/source/errors.ts +5 -1
  217. package/plugins/web/source/fetch-presentation.ts +61 -0
  218. package/plugins/web/source/fetch-service.ts +2 -31
  219. package/plugins/web/source/light/config.ts +196 -0
  220. package/plugins/web/source/light/crawl/origin-gate.ts +134 -0
  221. package/plugins/web/source/light/crawl/robots-cache.ts +71 -0
  222. package/plugins/web/source/light/crawl/robots-parser.ts +132 -0
  223. package/plugins/web/source/light/crawl/robots-policy.ts +154 -0
  224. package/plugins/web/source/light/crawl/session-budget.ts +141 -0
  225. package/plugins/web/source/light/crawl/transport.ts +216 -0
  226. package/plugins/web/source/light/discovery/candidate-values.ts +63 -0
  227. package/plugins/web/source/light/discovery/feed-document.ts +127 -0
  228. package/plugins/web/source/light/discovery/html-links.ts +80 -0
  229. package/plugins/web/source/light/discovery/html-robots-directives.ts +29 -0
  230. package/plugins/web/source/light/discovery/markup-tree.ts +145 -0
  231. package/plugins/web/source/light/discovery/origin-dates.ts +71 -0
  232. package/plugins/web/source/light/discovery/sitemap-document.ts +63 -0
  233. package/plugins/web/source/light/documents/cache-policy.ts +28 -0
  234. package/plugins/web/source/light/documents/document-cache.ts +99 -0
  235. package/plugins/web/source/light/documents/document-charset.ts +89 -0
  236. package/plugins/web/source/light/documents/document-contract.ts +20 -0
  237. package/plugins/web/source/light/documents/document-reader.ts +75 -0
  238. package/plugins/web/source/light/documents/extract-document.ts +124 -0
  239. package/plugins/web/source/light/documents/http-cache-freshness.ts +68 -0
  240. package/plugins/web/source/light/documents/response-decoding.ts +120 -0
  241. package/plugins/web/source/light/ranking/document-ranking.ts +114 -0
  242. package/plugins/web/source/light/ranking/query-normalization.ts +69 -0
  243. package/plugins/web/source/light/search-collection.ts +136 -0
  244. package/plugins/web/source/light/search-frontier.ts +246 -0
  245. package/plugins/web/source/light/search-metadata.ts +84 -0
  246. package/plugins/web/source/light/search-service.ts +154 -0
  247. package/plugins/web/source/light/search-unavailable.ts +33 -0
  248. package/plugins/web/source/light/sources/catalog.ts +312 -0
  249. package/plugins/web/source/light/sources/source-definition.ts +9 -0
  250. package/plugins/web/source/light/sources/source-selection.ts +35 -0
  251. package/plugins/web/source/plugin.ts +70 -56
  252. package/plugins/web/source/public-http.ts +10 -1
  253. package/plugins/web/source/search-presentation.ts +63 -63
  254. package/plugins/web/source/search-service-selector.ts +31 -0
  255. package/plugins/web/source/search-service.ts +6 -0
  256. package/plugins/web/source/search-source-presentation.ts +76 -0
  257. package/plugins/web/source/search-types.ts +4 -0
  258. package/plugins/web/source/source-output-receipts.ts +267 -0
  259. package/plugins/web/source/source-receipt-budget.ts +51 -0
  260. package/plugins/web/source/source-receipt-contract.ts +18 -0
  261. package/plugins/web/src/index.cjs +3214 -288
  262. package/src/runtime/README.md +30 -9
  263. package/dist/src/model-gateway/structured-output/budget.d.ts +0 -7
  264. package/dist/src/model-gateway/structured-output/budget.js +0 -20
  265. package/dist/src/model-gateway/structured-output/schema-character-estimator.d.ts +0 -1
  266. package/dist/src/model-gateway/structured-output/schema-character-estimator.js +0 -211
  267. package/dist/src/model-gateway/structured-output-budget.d.ts +0 -1
  268. package/dist/src/model-gateway/structured-output-budget.js +0 -1
@@ -5,24 +5,6 @@
5
5
  padding-inline: 18px;
6
6
  }
7
7
 
8
- .header-controls {
9
- max-width: 64%;
10
- }
11
-
12
- .control-label {
13
- display: none;
14
- }
15
-
16
- .agent-mode-control {
17
- width: 116px;
18
- min-width: 116px;
19
- }
20
-
21
- .model-control {
22
- width: 170px;
23
- min-width: 0;
24
- }
25
-
26
8
  .workspace-page-body {
27
9
  padding-inline: 28px;
28
10
  }
@@ -38,25 +20,6 @@
38
20
  padding-block: 12px;
39
21
  }
40
22
 
41
- .header-controls {
42
- display: grid;
43
- grid-template-columns: minmax(112px, 0.8fr) minmax(150px, 1.2fr);
44
- width: 100%;
45
- max-width: 520px;
46
- }
47
-
48
- .agent-mode-control,
49
- .model-control,
50
- .agent-mode-button,
51
- #modelSelect {
52
- width: 100%;
53
- min-width: 0;
54
- }
55
-
56
- .chat-header h2 {
57
- max-width: min(72vw, 620px);
58
- }
59
-
60
23
  .workspace-page-header {
61
24
  padding-inline: 28px;
62
25
  }
@@ -99,7 +62,6 @@
99
62
  }
100
63
 
101
64
  .app-shell,
102
- .app-shell.operations-workspace,
103
65
  .app-shell.config-workspace {
104
66
  display: grid;
105
67
  grid-template-columns: minmax(0, 1fr);
@@ -115,7 +77,7 @@
115
77
  inset: auto;
116
78
  z-index: 80;
117
79
  display: grid;
118
- grid-template-columns: repeat(5, minmax(0, 1fr));
80
+ grid-template-columns: repeat(4, minmax(0, 1fr));
119
81
  gap: 4px;
120
82
  grid-column: 1;
121
83
  grid-row: 2;
@@ -131,6 +93,10 @@
131
93
  backdrop-filter: blur(20px);
132
94
  }
133
95
 
96
+ .app-shell.config-workspace .workspace-rail {
97
+ grid-template-columns: repeat(3, minmax(0, 1fr));
98
+ }
99
+
134
100
  .rail-spacer,
135
101
  .rail-runtime {
136
102
  display: none;
@@ -153,17 +119,13 @@
153
119
  order: 2;
154
120
  }
155
121
 
156
- #operationsWorkspaceButton {
157
- order: 4;
158
- }
159
-
160
122
  #configWorkspaceButton {
161
- order: 5;
123
+ order: 4;
162
124
  }
163
125
 
164
126
  .workspace-rail button.rail-button {
165
127
  display: grid;
166
- grid-template-rows: 22px 14px;
128
+ grid-template-rows: 22px minmax(1.125rem, auto);
167
129
  gap: 1px;
168
130
  place-items: center;
169
131
  width: 100%;
@@ -191,8 +153,8 @@
191
153
  color: currentColor;
192
154
  text-overflow: ellipsis;
193
155
  white-space: nowrap;
194
- font-size: 9.5px;
195
- line-height: 1;
156
+ font-size: var(--font-size-xs);
157
+ line-height: 1.2;
196
158
  opacity: 1;
197
159
  pointer-events: none;
198
160
  transform: none;
@@ -259,15 +221,7 @@
259
221
  }
260
222
 
261
223
  .chat-header h2 {
262
- max-width: calc(100vw - 44px);
263
- font-size: 15px;
264
- }
265
-
266
- .header-controls {
267
- grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
268
- gap: 6px;
269
- width: 100%;
270
- max-width: none;
224
+ font-size: var(--font-size-2xl);
271
225
  }
272
226
 
273
227
  .messages-list {
@@ -316,16 +270,10 @@
316
270
  }
317
271
 
318
272
  .composer {
319
- grid-template-columns: 34px auto minmax(0, 1fr) 36px;
320
- grid-template-rows: auto auto auto;
321
273
  padding: 10px;
322
274
  border-radius: 15px;
323
275
  }
324
276
 
325
- .composer.composer-has-split-action {
326
- grid-template-columns: 34px auto minmax(0, 1fr) auto;
327
- }
328
-
329
277
  .composer-submit-control.split .send-button {
330
278
  width: 32px;
331
279
  min-width: 32px;
@@ -341,17 +289,6 @@
341
289
  min-height: 36px;
342
290
  }
343
291
 
344
- .permission-mode-control {
345
- grid-column: 2;
346
- grid-row: 3;
347
- }
348
-
349
- .permission-mode-button {
350
- width: auto;
351
- height: 31px;
352
- min-height: 31px;
353
- }
354
-
355
292
  .attachment-preview {
356
293
  grid-column: 1 / -1;
357
294
  grid-row: 2;
@@ -373,7 +310,7 @@
373
310
  }
374
311
 
375
312
  .workspace-page-heading h2 {
376
- font-size: 18px;
313
+ font-size: var(--font-size-4xl);
377
314
  }
378
315
 
379
316
  .workspace-page-body {
@@ -546,7 +483,7 @@
546
483
  }
547
484
 
548
485
  .mode-empty-title {
549
- font-size: 24px;
486
+ font-size: var(--font-size-6xl);
550
487
  }
551
488
 
552
489
  .workspace-page-heading .eyebrow {
@@ -565,7 +502,7 @@
565
502
  }
566
503
 
567
504
  .config-workspace-heading h2 {
568
- font-size: 17px;
505
+ font-size: var(--font-size-3xl);
569
506
  }
570
507
 
571
508
  .config-workspace-heading > p:last-child {
@@ -585,7 +522,7 @@
585
522
  .config-category-tab {
586
523
  min-height: 38px;
587
524
  padding-inline: 6px;
588
- font-size: 11px;
525
+ font-size: var(--font-size-sm);
589
526
  }
590
527
 
591
528
  .config-dashboard #configRawEditor,
@@ -81,11 +81,11 @@ button,
81
81
  input,
82
82
  select {
83
83
  min-height: 32px;
84
- font-size: 13px;
84
+ font-size: var(--font-size-lg);
85
85
  }
86
86
 
87
87
  textarea {
88
- font-size: 14px;
88
+ font-size: var(--font-size-xl);
89
89
  }
90
90
 
91
91
  button {
@@ -1,9 +1,16 @@
1
1
  @import url("./styles/foundation.css");
2
2
  @import url("./styles/00-tokens-base.css");
3
3
  @import url("./styles/10-shell-sessions.css");
4
+ @import url("./styles/12-conversation-sidebar.css");
4
5
  @import url("./styles/20-chat-composer.css");
6
+ @import url("./styles/21-composer-controls.css");
7
+ @import url("./styles/22-composer-context-window.css");
8
+ @import url("./styles/23-composer-plan.css");
9
+ @import url("./styles/24-conversation-role-cards.css");
10
+ @import url("./styles/25-conversation-sources.css");
5
11
  @import url("./styles/30-inspector-config.css");
6
12
  @import url("./styles/40-config-workspace.css");
7
13
  @import url("./styles/35-memory-onboarding.css");
8
14
  @import url("./styles/36-memory-management.css");
15
+ @import url("./styles/37-config-operations.css");
9
16
  @import url("./styles/90-responsive.css");
@@ -28,7 +28,7 @@ export declare function wrappedIndex(
28
28
 
29
29
  export declare function normalizeWorkspaceDestination(
30
30
  value: unknown,
31
- ): "chat" | "operations" | "config";
31
+ ): "chat" | "config";
32
32
 
33
33
  export declare function createInitialWorkspaceShellState(): {
34
34
  workspace: "chat";
@@ -37,7 +37,7 @@ export function normalizeWorkspaceDestination(value) {
37
37
  const destination = String(value ?? "")
38
38
  .trim()
39
39
  .toLowerCase();
40
- return ["operations", "config"].includes(destination) ? destination : "chat";
40
+ return destination === "config" ? "config" : "chat";
41
41
  }
42
42
 
43
43
  export function createInitialWorkspaceShellState() {
@@ -31,11 +31,16 @@ AGENT_BRIDGE_TOKEN=
31
31
  LLM_RUNTIME_CONFIG_FILE=local/runtime.config.json
32
32
  ```
33
33
 
34
- `BRAVE_SEARCH_API_KEY` is optional for startup and URL fetching. The bundled
35
- Web plugin always exposes `web_fetch` and `web_search`; invoking `web_search`
36
- without a non-empty key returns a clear plugin configuration error without
37
- making a search request. The key never belongs in runtime JSON or a plugin
38
- manifest.
34
+ `BRAVE_SEARCH_API_KEY` is optional. The bundled Web plugin always exposes
35
+ `web_fetch` and `web_search`. A non-empty key selects Brave Search; without one,
36
+ `web_search` uses Light search over a limited catalog of public Hebrew and
37
+ English sources. Light reads those sources directly without an external search
38
+ engine. A failing configured key does not silently switch providers. The key
39
+ never belongs in runtime JSON or a plugin manifest.
40
+
41
+ Light uses the Web plugin's defaults and an in-memory cache; no background
42
+ crawler or separate service is installed. See
43
+ [Known Limitations](known-limitations.md#web-search) for its coverage and limits.
39
44
 
40
45
  Provider configs should reference env var names:
41
46
 
@@ -310,10 +315,12 @@ the request-runner context block supplies only admission headroom.
310
315
  subtracted while projecting messages so the prompt does not consume the whole
311
316
  context window; it is never forwarded to a provider as an output limit. Model
312
317
  steps may vary their prompt contract, timeout, format, or other generation
313
- controls, but they do not receive a shared per-step output-token cap.
318
+ controls, but configuration does not define a shared per-step output-token cap.
314
319
  The Ollama adapter still sends a finite provider-native `num_predict`, derived
315
- mechanically from the final provider input, the physical context remainder,
316
- and a strict bounded output schema when one applies.
320
+ mechanically from the final provider input and the physical context remainder.
321
+ Registered core-decision steps additionally retain their internal output-token
322
+ limit. Output schema size does not impose another generation limit; schema
323
+ projection, validation, input estimation, and compaction remain unchanged.
317
324
 
318
325
  The required context fields remain explicit. Unknown fields, unknown step ids,
319
326
  and invalid explicit overrides are rejected during configuration loading;
@@ -155,10 +155,13 @@ a bundled plugin: duplicate plugin ids fail closed.
155
155
  The passive long-term memory service belongs to the Runtime core and does not
156
156
  depend on the bundled `memory` plugin.
157
157
 
158
- Web URL fetching is available through the bundled Web plugin without a search
159
- credential. Set `BRAVE_SEARCH_API_KEY` to make `web_search` operational. With
160
- no key, `web_fetch` remains operational and a `web_search` invocation fails
161
- locally with a configuration error before any search request is made.
158
+ The bundled Web plugin supports URL fetching and Light search without a search
159
+ credential. Light searches a limited catalog of public Hebrew and English
160
+ sources directly; it does not query an external search engine or provide
161
+ whole-web coverage. Set `BRAVE_SEARCH_API_KEY` to use Brave Search instead.
162
+ A configured Brave key that fails remains a Brave error. See
163
+ [Known Limitations](known-limitations.md#web-search) for Light's discovery and
164
+ cache boundaries.
162
165
 
163
166
  ## Run From Source
164
167
 
@@ -61,6 +61,27 @@ 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
+ ## Web Search
65
+
66
+ With a configured `BRAVE_SEARCH_API_KEY`, `web_search` uses Brave Search and
67
+ preserves its authentication and rate-limit errors. Without a key, Light search
68
+ discovers and ranks pages within a catalog of public Hebrew and English
69
+ sources. It contacts content sources directly, without another search engine.
70
+
71
+ Light does not maintain a whole-web index. Its source selection, crawl depth,
72
+ candidate count, response sizes, and request deadline are bounded. Results may
73
+ be partial because a source is unavailable, disallows crawling, or exceeds a
74
+ budget. Zero matches mean no matches in the inspected sources, not that the
75
+ information is absent from the web. Source coverage accompanies the results.
76
+
77
+ The document cache exists only in the plugin instance's memory, bounded to
78
+ 16 MiB of serialized content and 500 documents. Feed entries expire within
79
+ five minutes and page entries within 30 minutes; origin directives can shorten
80
+ these lifetimes. Restarting the runtime clears the cache. There is no background
81
+ crawl, browser rendering, or persistent search database. Content that requires
82
+ JavaScript may therefore be unavailable. Exact public URL fetching remains a
83
+ separate `web_fetch` capability with its existing public-network restrictions.
84
+
64
85
  ## Passive Long-Term Memory
65
86
 
66
87
  Passive long-term memory is disabled by default and requires an embedding model
package/docs/plugins.md CHANGED
@@ -127,19 +127,34 @@ must be unique bounded lowercase ids matching
127
127
  built-in conventions, not a closed enum. Manifests that omit both levels remain
128
128
  compatible and use the plugin name as their single catalog group.
129
129
 
130
- The delegated Supervisor and Planner receive only an aggregate catalog of these
131
- group ids, membership counts, descriptions, and declared effects. When either
132
- invokes a Worker against a non-empty catalog, it supplies one or more group
133
- ids; the runtime stores that scope on the Worker call and exposes the OR-union
134
- of matching capabilities. The Worker still selects the concrete capability and
135
- controls.
136
-
137
- Each group description is generated from every member capability's manifest
138
- id and summary in stable order. There is no second category-description JSON or
139
- manually maintained routing registry.
140
-
141
- Under `execution-agent-v1`, the canonical root receives the same aggregate
142
- group projection and may mechanically open or extend its own RoleCall scope.
130
+ The delegated Supervisor and Planner select group ids when invoking a Worker
131
+ against a non-empty catalog. The runtime stores that scope on the Worker call
132
+ and exposes the OR-union of matching capabilities. The Worker still selects
133
+ the concrete capability and controls.
134
+
135
+ Supervisor routing receives one optional, passive text brief from the same
136
+ request-filtered registry used by `capability-brief`. It chooses the richest
137
+ complete representation that fits: tool names with operation ids and groups,
138
+ tool names by group, group counts and effects, or no brief. The brief replaces
139
+ the previous aggregate catalog text; group ids remain in the response schema
140
+ in every mode. It includes no tool descriptions, inputs, or operating
141
+ instructions. Its 512-token estimate ceiling is further reduced by existing
142
+ context headroom, including history and instruction reserves. No subset of
143
+ tools is selected to fit, and no model call summarizes the catalog.
144
+ This admission uses the context estimate at projection time. A later provider
145
+ token count, steering update, or structured-output repair can still trigger
146
+ the existing context-compaction path; the brief is not reselected there.
147
+
148
+ The SDK exports `buildToolAvailabilityBrief` for the unchanged on-demand plugin
149
+ output and `buildToolAvailabilityOverview` for informational representations.
150
+ The runtime context helper owns token admission and the passive reference
151
+ message; another step can explicitly attach it using the existing context
152
+ reference API. Supervisor's working-directory and response phases do not
153
+ receive it. Planner retains its existing group-routing projection.
154
+
155
+ Under `execution-agent-v1`, the canonical root receives group descriptions
156
+ generated from member capability ids and summaries, and may mechanically open
157
+ or extend its own RoleCall scope.
143
158
  It then selects a concrete capability only from that active scope. Scope
144
159
  updates, capability binding, payload authoring, adapter execution, and
145
160
  settlement use the same ledger and capability engine as delegated Worker
@@ -4,23 +4,24 @@ This map records the invariants that protect the single request kernel across
4
4
  the default `supervisor-worker-v1` policy and the opt-in
5
5
  `execution-agent-v1` policy.
6
6
 
7
- | Invariant | Owner | Primary coverage |
8
- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
9
- | Every request creates one canonical root and one RoleCall ledger; only that root may commit the final response. | `src/runtime/request/handler.ts`, `src/runtime/request/runner.ts`, `src/runtime/request/root-execution-kernel.ts`, `src/runtime/orchestration/role-calls/` | `root-execution-kernel-policy-mechanics.test.ts`, `role-call-ledger.test.ts`, `request-finalization.test.ts` |
10
- | The handler resolves one compiled execution policy from the selected model profile and supplies its same authority to capability composition and the runner. Omission remains `supervisor-worker-v1`. | `src/runtime/model/model-selection.ts`, `src/runtime/request/handler.ts`, `src/runtime/request/role-executor-composition.ts` | `model-execution-policy.test.ts`, `request-execution-policy-composition.test.ts` |
11
- | `supervisor-worker-v1` retains the delegated Supervisor, Planner, Worker, and Reviewer contracts; `execution-agent-v1` changes model-facing contracts and authority without adding another runner, ledger, reducer, capability engine, or finalizer. | `src/runtime/request/root-execution-kernel.ts`, `src/runtime/request/role-executor-composition.ts` | `root-execution-kernel-policy-mechanics.test.ts`, `supervisor-request-runner.test.ts`, `execution-agent-request-runner.test.ts` |
12
- | Role choice is model-owned and limited to the exact subordinate contracts registered by the frozen policy. | `src/runtime/steps/*`, `src/runtime/orchestration/role-executors/`, `src/runtime/orchestration/role-calls/` | `role-executor-registry.test.ts`, `planner-decision.test.ts`, `execution-agent-advisory-executors.test.ts` |
13
- | Every subordinate result returns to its exact caller through an exact-head ledger commit. Planner Graph and Auditor outputs are passive terminal child results, never executable plan or completion state. | `src/runtime/orchestration/role-calls/`, `src/runtime/steps/planner-graph/`, `src/runtime/steps/auditor-decision/` | `role-call-ledger.test.ts`, `execution-agent-advisory-executors.test.ts`, `supervisor-request-runner.test.ts` |
14
- | Capability authority is validated against the frozen policy and bound to the exact authorized call and activation: Worker for the default policy, canonical root for the direct policy. Both use the same binding and adapter engine. | `src/runtime/orchestration/role-calls/`, `src/runtime/orchestration/worker-capabilities/`, `src/runtime/request/root-execution-kernel.ts` | `root-execution-kernel-policy-mechanics.test.ts`, `worker-capability-binding.test.ts`, `execution-agent-request-runner.test.ts` |
15
- | Worker and root payloads use the same `tool_payload.raw` author; the principal, accepted intent, controls, exact request source, and admitted evidence are mechanically bounded before model invocation. | `src/runtime/orchestration/worker-capabilities/payload-author.ts`, `src/runtime/request/worker-capability-payload.ts` | `worker-capability-payload-author.test.ts`, `execution-agent-request-runner.test.ts` |
16
- | Direct capability continuations use strict provider-native assistant tool calls followed by their exact linked tool results; linkage, order, names, content, and token accounting are validated. | `src/model-gateway/message-contract.ts`, `src/runtime/steps/execution-agent/state-context.ts` | `tool-interaction.test.ts`, `tool-interaction-token-estimator.test.ts`, `execution-agent-context.test.ts` |
17
- | Exhausted direct controls structured-output validation commits `reconsider_capability_selection` without executing an adapter. Its passive projection records the exact selection fingerprint but makes no semantic judgment, chooses no replacement, and suppresses no later selection. | `src/runtime/orchestration/role-calls/`, `src/runtime/orchestration/role-calls/capability-selection-reconsideration.ts`, `src/runtime/steps/execution-agent/` | `role-call-ledger.test.ts`, `execution-agent-context.test.ts`, `execution-agent-request-runner.test.ts` |
18
- | Delegated Worker control decisions remain strict JSON while its substantive result uses the existing raw authoring boundary. Only `execution-agent-v1` opts into byte-exact terminal text; default finalization remains normalized. | `src/runtime/steps/worker-decision/`, `src/runtime/steps/execution-agent/`, `src/runtime/lifecycle/request-finalizer.ts` | `worker-decision.test.ts`, `execution-agent-request-runner.test.ts`, `request-finalization.test.ts` |
19
- | Capability adapters report bounded operation outcomes and never decide semantic completion. | `src/runtime/adapters/registered-tool-worker-capabilities.ts`, `src/capabilities/tool-executor.ts` | `registered-tool-worker-capabilities.test.ts`, `tool-executor.test.ts`, `normal-invocation.test.ts` |
20
- | Every capability settlement, whether produced by a delegated Worker or the direct root, atomically persists exactly one validated canonical `CapabilityAdapterResult`. Running executions cannot carry a result; invalid, non-JSON-safe, cyclic, or oversized evidence cannot settle and is never silently truncated. | `src/runtime/orchestration/capability-adapters/result.ts`, `src/runtime/orchestration/worker-capabilities/execution.ts`, `src/runtime/orchestration/role-calls/` | `registered-tool-worker-capabilities.test.ts`, `worker-capability-binding.test.ts`, `role-call-ledger.test.ts` |
21
- | The complete canonical result is projected only to the exact producing call and its later same-call payload author. Direct native tool linkage is not duplicated; callers, siblings, unrelated requests, and other roles retain bounded receipts and ordinary child handoffs. | `src/runtime/orchestration/worker-capabilities/settled-results.ts`, `src/runtime/steps/worker-decision/`, `src/runtime/steps/execution-agent/state-context.ts` | `worker-decision.test.ts`, `worker-capability-payload-author.test.ts`, `execution-agent-context.test.ts` |
22
- | Delegated Planner client events project committed canonical plan state and never write progress. Planner Graph advisories do not create canonical plan items. | `src/runtime/request/role-call-planner-events.ts`, `src/runtime/request/planner-plan-events.ts`, `src/runtime/steps/planner-graph/` | `role-call-planner-events.test.ts`, `execution-agent-advisory-executors.test.ts` |
23
- | Final response persistence and terminal request completion remain one shared request-finalizer boundary for both policies. | `src/runtime/lifecycle/request-finalizer.ts` | `request-finalization.test.ts`, `execution-agent-request-runner.test.ts` |
7
+ | Invariant | Owner | Primary coverage |
8
+ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
9
+ | Every request creates one canonical root and one RoleCall ledger; only that root may commit the final response. | `src/runtime/request/handler.ts`, `src/runtime/request/runner.ts`, `src/runtime/request/root-execution-kernel.ts`, `src/runtime/orchestration/role-calls/` | `root-execution-kernel-policy-mechanics.test.ts`, `role-call-ledger.test.ts`, `request-finalization.test.ts` |
10
+ | The handler resolves one compiled execution policy from the selected model profile and supplies its same authority to capability composition and the runner. Omission remains `supervisor-worker-v1`. | `src/runtime/model/model-selection.ts`, `src/runtime/request/handler.ts`, `src/runtime/request/role-executor-composition.ts` | `model-execution-policy.test.ts`, `request-execution-policy-composition.test.ts` |
11
+ | `supervisor-worker-v1` retains the delegated Supervisor, Planner, Worker, and Reviewer contracts; `execution-agent-v1` changes model-facing contracts and authority without adding another runner, ledger, reducer, capability engine, or finalizer. | `src/runtime/request/root-execution-kernel.ts`, `src/runtime/request/role-executor-composition.ts` | `root-execution-kernel-policy-mechanics.test.ts`, `supervisor-request-runner.test.ts`, `execution-agent-request-runner.test.ts` |
12
+ | Role choice is model-owned and limited to the exact subordinate contracts registered by the frozen policy. | `src/runtime/steps/*`, `src/runtime/orchestration/role-executors/`, `src/runtime/orchestration/role-calls/` | `role-executor-registry.test.ts`, `planner-decision.test.ts`, `execution-agent-advisory-executors.test.ts` |
13
+ | Every subordinate result returns to its exact caller through an exact-head ledger v17 commit. Under `supervisor-worker-v1`, terminal Planner and Worker results receive a runtime-owned, constant-size `work_result_v1` receipt; supplied work receipts are rejected, lineage is derived and fingerprint-verified from that ledger, and `execution-agent-v1` receives none. Planner Graph and Auditor outputs remain passive terminal child results. | `src/runtime/orchestration/role-calls/`, `src/runtime/steps/planner-graph/`, `src/runtime/steps/auditor-decision/` | `role-call-ledger.test.ts`, `role-call-work-result-receipt-reducer.test.ts`, `role-call-planner-work-result-receipt.test.ts`, `execution-agent-advisory-executors.test.ts`, `supervisor-request-runner.test.ts` |
14
+ | Planner's semantic contract requires declaring every currently known execution outcome before the first child dispatch; schema and parser mechanically bind exactly one independently completable production item per Worker dispatch. A directly bound Worker receives that item, explicit dependencies, supervision evidence, and its own capability-result lane without the broader request, Planner objective, or sibling execution summaries. | `src/runtime/steps/planner-decision/`, `src/runtime/steps/worker-decision/`, `src/runtime/context/request-tool-results.ts` | `planner-plan-contract.test.ts`, `planner-single-item-dispatch.test.ts`, `planner-worker-context-isolation.test.ts`, `planner-worker-tool-result-scope.test.ts` |
15
+ | Capability authority is validated against the frozen policy and bound to the exact authorized call and activation: Worker for the default policy, canonical root for the direct policy. Both use the same binding and adapter engine. | `src/runtime/orchestration/role-calls/`, `src/runtime/orchestration/worker-capabilities/`, `src/runtime/request/root-execution-kernel.ts` | `root-execution-kernel-policy-mechanics.test.ts`, `worker-capability-binding.test.ts`, `execution-agent-request-runner.test.ts` |
16
+ | Worker and root payloads use the same `tool_payload.raw` author; principal, controls, runtime-issued direct-Planner-item receipt, and admitted evidence are mechanically bounded before model invocation. Root and non-Planner Worker payloads retain the exact request source; a canonically bound Planner item omits it. Work-result receipts and derived lineage are stripped before Worker raw payload and result authoring while optional semantic checkpoints remain. | `src/runtime/orchestration/worker-capabilities/payload-author.ts`, `src/runtime/request/worker-capability-payload.ts`, `src/runtime/steps/worker-decision/` | `planner-worker-context-isolation.test.ts`, `registered-tool-worker-assignment-provenance.test.ts`, `worker-capability-payload-author.test.ts`, `worker-payload-dependency-projection-pr1.test.ts`, `execution-agent-request-runner.test.ts` |
17
+ | Direct capability continuations use strict provider-native assistant tool calls followed by their exact linked tool results; linkage, order, names, content, and token accounting are validated. | `src/model-gateway/message-contract.ts`, `src/runtime/steps/execution-agent/state-context.ts` | `tool-interaction.test.ts`, `tool-interaction-token-estimator.test.ts`, `execution-agent-context.test.ts` |
18
+ | Exhausted direct controls structured-output validation commits `reconsider_capability_selection` without executing an adapter. Its passive projection records the exact selection fingerprint but makes no semantic judgment, chooses no replacement, and suppresses no later selection. | `src/runtime/orchestration/role-calls/`, `src/runtime/orchestration/role-calls/capability-selection-reconsideration.ts`, `src/runtime/steps/execution-agent/` | `role-call-ledger.test.ts`, `execution-agent-context.test.ts`, `execution-agent-request-runner.test.ts` |
19
+ | Delegated Worker control decisions remain strict JSON while its substantive result uses the existing raw authoring boundary. Only `execution-agent-v1` opts into byte-exact terminal text; default finalization remains normalized. | `src/runtime/steps/worker-decision/`, `src/runtime/steps/execution-agent/`, `src/runtime/lifecycle/request-finalizer.ts` | `worker-decision.test.ts`, `execution-agent-request-runner.test.ts`, `request-finalization.test.ts` |
20
+ | Capability adapters report bounded operation outcomes and never decide semantic completion. | `src/runtime/adapters/registered-tool-worker-capabilities.ts`, `src/capabilities/tool-executor.ts` | `registered-tool-worker-capabilities.test.ts`, `tool-executor.test.ts`, `normal-invocation.test.ts` |
21
+ | Every capability settlement, whether produced by a delegated Worker or the direct root, atomically persists exactly one validated canonical `CapabilityAdapterResult`. Running executions cannot carry a result; invalid, non-JSON-safe, cyclic, or oversized evidence cannot settle and is never silently truncated. | `src/runtime/orchestration/capability-adapters/result.ts`, `src/runtime/orchestration/worker-capabilities/execution.ts`, `src/runtime/orchestration/role-calls/` | `registered-tool-worker-capabilities.test.ts`, `worker-capability-binding.test.ts`, `role-call-ledger.test.ts` |
22
+ | The complete canonical result is projected only to the exact producing call and its later same-call payload author. Direct native tool linkage is not duplicated; cross-call provenance moves only through compact runtime-owned receipts and ledger-derived lineage on explicit dependency or supervision lanes. A Planner-item Worker receives no sibling execution summaries; callers, siblings and unrelated requests receive no implicit evidence. | `src/runtime/orchestration/worker-capabilities/settled-results.ts`, `src/runtime/context/request-tool-results.ts`, `src/runtime/orchestration/role-calls/`, `src/runtime/steps/worker-decision/`, `src/runtime/steps/execution-agent/state-context.ts` | `planner-worker-tool-result-scope.test.ts`, `role-call-dependency-work-receipt-pr1.test.ts`, `role-call-work-receipt-continuation-pr1.test.ts`, `worker-decision.test.ts`, `execution-agent-context.test.ts` |
23
+ | Delegated Planner client events project committed canonical plan state and never write progress. Planner Graph advisories do not create canonical plan items. | `src/runtime/request/role-call-planner-events.ts`, `src/runtime/request/planner-plan-events.ts`, `src/runtime/steps/planner-graph/` | `role-call-planner-events.test.ts`, `execution-agent-advisory-executors.test.ts` |
24
+ | Final response persistence and terminal request completion remain one shared request-finalizer boundary for both policies. | `src/runtime/lifecycle/request-finalizer.ts` | `request-finalization.test.ts`, `execution-agent-request-runner.test.ts` |
24
25
 
25
26
  ## Client Compatibility
26
27
 
@@ -7,20 +7,20 @@ contracts without selecting a fixed workflow.
7
7
 
8
8
  ## Structured Model Boundaries
9
9
 
10
- | Boundary | Instructions and schema | Executable validation | Primary coverage |
11
- | -------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
12
- | Supervisor decision | `src/runtime/steps/supervisor-decision/` | strict parser, default-policy child contracts, exact canonical root | `supervisor-decision.test.ts`, `supervisor-request-runner.test.ts` |
13
- | Supervisor response | `src/runtime/steps/supervisor-response/` | exact active root and bounded returned-child context; legacy normalized terminal mode | `supervisor-response.test.ts`, `supervisor-request-runner.test.ts`, `request-finalization.test.ts` |
14
- | Execution Agent decision | `src/runtime/steps/execution-agent/` | strict parser, direct-policy actions and root capability authority, exact canonical state | `execution-agent-decision.test.ts`, `execution-agent-request-runner.test.ts` |
15
- | Execution Agent response | `src/runtime/steps/execution-agent/response-*` | raw non-empty bounded text from the exact accepted response state; direct-policy exact terminal mode only | `execution-agent-request-runner.test.ts`, `request-finalization.test.ts` |
16
- | Delegated Planner decision | `src/runtime/steps/planner-decision/` | strict parser, exact Planner caller, registered delegated child contracts | `planner-decision.test.ts`, `role-call-planner-events.test.ts` |
17
- | Planner Graph advisory | `src/runtime/steps/planner-graph/` | bounded acyclic proposal or decline from the exact advisory objective; no execution authority | `execution-agent-advisory-executors.test.ts`, `execution-agent-request-runner.test.ts` |
18
- | Worker decision | `src/runtime/steps/worker-decision/` | strict parser, exact Worker activation, offered capability catalog | `worker-decision.test.ts`, `worker-capability-decision.test.ts` |
19
- | Worker result | `src/runtime/steps/worker-decision/result-author.ts` | raw text from the exact projected Worker assignment and evidence | `worker-decision.test.ts`, `supervisor-request-runner.test.ts` |
20
- | Reviewer decision | `src/runtime/steps/reviewer-decision/` | strict parser and bounded supplied-work projection | `reviewer-decision.test.ts`, `supervisor-request-runner.test.ts` |
21
- | Auditor advisory | `src/runtime/steps/auditor-decision/` | typed criteria, whole canonical evidence entries, and omission-gated pass | `execution-agent-advisory-executors.test.ts`, `execution-agent-request-runner.test.ts` |
22
- | Capability payload | `src/runtime/orchestration/worker-capabilities/payload-author.ts`, `src/runtime/request/worker-capability-payload.ts` | frozen-policy Worker or root principal, selected operation, accepted intent, immutable controls, exact request source, and payload contract | `worker-capability-payload-author.test.ts`, `execution-agent-request-runner.test.ts` |
23
- | Degraded finalization | `src/runtime/steps/degraded-finalization/` | bounded failure rendering only | `degraded-finalization.test.ts`, `request-finalization.test.ts` |
10
+ | Boundary | Instructions and schema | Executable validation | Primary coverage |
11
+ | -------------------------- | --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
12
+ | Supervisor decision | `src/runtime/steps/supervisor-decision/` | strict parser, default-policy child contracts, exact canonical root, and runtime-owned receipt plus verified lineage for returned Planner/Worker results | `supervisor-decision.test.ts`, `role-call-work-receipt-continuation-pr1.test.ts`, `supervisor-request-runner.test.ts` |
13
+ | Supervisor response | `src/runtime/steps/supervisor-response/` | exact active root and bounded returned-child context; legacy normalized terminal mode | `supervisor-response.test.ts`, `supervisor-request-runner.test.ts`, `request-finalization.test.ts` |
14
+ | Execution Agent decision | `src/runtime/steps/execution-agent/` | strict parser, direct-policy actions and root capability authority, exact canonical state | `execution-agent-decision.test.ts`, `execution-agent-request-runner.test.ts` |
15
+ | Execution Agent response | `src/runtime/steps/execution-agent/response-*` | raw non-empty bounded text from the exact accepted response state; direct-policy exact terminal mode only | `execution-agent-request-runner.test.ts`, `request-finalization.test.ts` |
16
+ | Delegated Planner decision | `src/runtime/steps/planner-decision/` | strict parser, exact Planner caller, registered delegated child contracts, complete known plan declaration, one-Worker-item dispatch, and runtime-owned receipt plus verified lineage for the returned Worker | `planner-decision.test.ts`, `planner-plan-contract.test.ts`, `role-call-work-receipt-continuation-pr1.test.ts`, `role-call-planner-events.test.ts` |
17
+ | Planner Graph advisory | `src/runtime/steps/planner-graph/` | bounded acyclic proposal or decline from the exact advisory objective; no execution authority | `execution-agent-advisory-executors.test.ts`, `execution-agent-request-runner.test.ts` |
18
+ | Worker decision | `src/runtime/steps/worker-decision/` | strict parser, exact Worker activation, offered capability catalog, and compact receipts for explicit dependency results; a directly bound Planner item excludes the broader request, Planner objective, and sibling tool-result lane | `worker-decision.test.ts`, `worker-capability-decision.test.ts`, `role-call-dependency-work-receipt-pr1.test.ts`, `planner-worker-context-isolation.test.ts`, `planner-worker-tool-result-scope.test.ts` |
19
+ | Worker result | `src/runtime/steps/worker-decision/result-author.ts` | raw text from the exact projected Worker assignment and evidence; Planner-item results retain the same narrowed boundary | `worker-decision.test.ts`, `planner-worker-context-isolation.test.ts`, `supervisor-request-runner.test.ts` |
20
+ | Reviewer decision | `src/runtime/steps/reviewer-decision/` | strict parser and bounded supplied-work projection | `reviewer-decision.test.ts`, `supervisor-request-runner.test.ts` |
21
+ | Auditor advisory | `src/runtime/steps/auditor-decision/` | typed criteria, whole canonical evidence entries, and omission-gated pass | `execution-agent-advisory-executors.test.ts`, `execution-agent-request-runner.test.ts` |
22
+ | Capability payload | `src/runtime/orchestration/worker-capabilities/payload-author.ts`, `src/runtime/request/worker-capability-payload.ts` | frozen-policy Worker or root principal, selected operation, immutable controls and payload contract; only a runtime-issued direct-Planner-item receipt can omit source; work-result receipts and lineage are removed before raw authoring | `planner-worker-context-isolation.test.ts`, `worker-capability-payload-author.test.ts`, `worker-payload-dependency-projection-pr1.test.ts`, `execution-agent-request-runner.test.ts` |
23
+ | Degraded finalization | `src/runtime/steps/degraded-finalization/` | bounded failure rendering only | `degraded-finalization.test.ts`, `request-finalization.test.ts` |
24
24
 
25
25
  Instructions explain semantic choices. Parsers validate exact output shapes.
26
26
  The RoleCall ledger and shared capability binding remain the executable
@@ -44,14 +44,24 @@ or completion authority.
44
44
  contract. A configured profile may explicitly select `execution-agent-v1`;
45
45
  there is no prompt-based selection or mid-request fallback.
46
46
  - An active role model alone chooses its next semantic action.
47
- - The delegated Planner coordinates a bounded sub-process. `planner.graph` is
48
- a distinct direct-policy advisory that only proposes or declines a bounded
49
- graph; neither gains root response authority.
47
+ - The delegated Planner coordinates a bounded sub-process. Before its first
48
+ child dispatch it declares every currently known execution outcome, then
49
+ binds exactly one independently completable production item whenever it
50
+ dispatches Worker. A later activation may select the next pending production
51
+ item after consuming the bound Worker result. Other registered child-role
52
+ contracts are unchanged. `planner.graph` is a distinct direct-policy advisory that only
53
+ proposes or declines a bounded graph; neither gains root response authority.
50
54
  - Worker owns capability selection under `supervisor-worker-v1`; the canonical
51
55
  root owns it under `execution-agent-v1`. Both use the same binding, payload
52
56
  author, adapter execution, and settlement mechanics.
53
57
  - Reviewer returns advisory findings to its exact caller. Runtime code does not
54
58
  automatically remediate or finalize from a verdict.
59
+ - Under `supervisor-worker-v1`, the runtime alone issues `work_result_v1` for a
60
+ terminal Planner or Worker result. The exact caller may receive the compact
61
+ receipt and a fingerprint-verified lineage projection derived from the
62
+ canonical ledger. They establish provenance only; the active model still
63
+ owns the semantic next action and must not treat them as proof of correctness.
64
+ Model-supplied receipts are rejected and `execution-agent-v1` is unchanged.
55
65
  - Auditor returns a passive verdict over explicitly supplied criteria and whole
56
66
  evidence entries. Missing or omitted evidence cannot produce pass.
57
67
  - `reconsider_capability_selection` is a canonical mechanical transition after
package/package.json CHANGED
@@ -10,6 +10,7 @@
10
10
  "@types/ws": "^8.18.1",
11
11
  "@vscode/ripgrep": "1.18.0",
12
12
  "dotenv": "^17.4.1",
13
+ "htmlparser2": "10.0.0",
13
14
  "jszip": "^3.10.1",
14
15
  "pdf-parse": "2.4.5",
15
16
  "postcss": "^8.5.26",
@@ -18,9 +19,9 @@
18
19
  "description": "Open runtime for local AI agents.",
19
20
  "devDependencies": {
20
21
  "@types/node": "^25.5.2",
21
- "esbuild": "^0.27.7",
22
+ "esbuild": "^0.28.2",
22
23
  "prettier": "^3.8.1",
23
- "tsx": "^4.21.0",
24
+ "tsx": "^4.23.13",
24
25
  "typescript": "^6.0.2",
25
26
  "vitest": "^4.1.11"
26
27
  },
@@ -171,5 +172,5 @@
171
172
  },
172
173
  "type": "module",
173
174
  "types": "./dist/src/runtime/index.d.ts",
174
- "version": "1.1.0"
175
+ "version": "1.2.0"
175
176
  }