@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
@@ -0,0 +1,205 @@
1
+ .conversation-role-view,
2
+ .conversation-role-panel,
3
+ .conversation-role-content {
4
+ min-width: 0;
5
+ }
6
+
7
+ .conversation-role-view {
8
+ display: grid;
9
+ grid-template-columns: minmax(0, 1fr);
10
+ gap: 6px;
11
+ }
12
+
13
+ .conversation-role-toolbar {
14
+ display: flex;
15
+ flex-wrap: wrap;
16
+ align-items: center;
17
+ justify-content: space-between;
18
+ gap: 8px;
19
+ }
20
+
21
+ .conversation-role-label {
22
+ color: var(--muted);
23
+ font-size: var(--font-size-xs);
24
+ }
25
+
26
+ .conversation-role-toggle {
27
+ min-height: 32px;
28
+ padding: 4px 8px;
29
+ border-color: transparent;
30
+ background: transparent;
31
+ font-size: var(--font-size-xs);
32
+ line-height: 1.4;
33
+ cursor: pointer;
34
+ }
35
+
36
+ .conversation-role-list {
37
+ margin: 0;
38
+ padding: 0;
39
+ list-style: none;
40
+ }
41
+
42
+ .conversation-role-card,
43
+ .conversation-role-summary-item {
44
+ --role-accent: #58b9a8;
45
+ }
46
+
47
+ .conversation-role-card {
48
+ display: grid;
49
+ grid-template-columns: 30px minmax(0, 1fr);
50
+ align-items: start;
51
+ gap: 10px;
52
+ min-width: 0;
53
+ padding: 8px 2px;
54
+ color: var(--text);
55
+ }
56
+
57
+ .conversation-role-card:not(:last-child) {
58
+ border-block-end: 1px solid var(--line);
59
+ }
60
+
61
+ .conversation-role-card[data-role="planner"],
62
+ .conversation-role-summary-item[data-role="planner"] {
63
+ --role-accent: #a99af2;
64
+ }
65
+
66
+ .conversation-role-card[data-role="worker"],
67
+ .conversation-role-summary-item[data-role="worker"] {
68
+ --role-accent: #55a7e8;
69
+ }
70
+
71
+ .conversation-role-card[data-role="reviewer"],
72
+ .conversation-role-summary-item[data-role="reviewer"] {
73
+ --role-accent: #e0ac4f;
74
+ }
75
+
76
+ .conversation-role-card.is-failed,
77
+ .conversation-role-summary-item.is-failed {
78
+ --role-accent: #ffb4ab;
79
+ }
80
+
81
+ .conversation-role-avatar {
82
+ display: grid;
83
+ place-items: center;
84
+ width: 30px;
85
+ height: 30px;
86
+ margin-block-start: 2px;
87
+ border: 1px solid color-mix(in srgb, var(--role-accent) 22%, transparent);
88
+ border-radius: 50%;
89
+ background: color-mix(in srgb, var(--role-accent) 8%, transparent);
90
+ color: var(--role-accent);
91
+ font-size: var(--font-size-xs);
92
+ font-weight: 650;
93
+ }
94
+
95
+ .conversation-role-summary-strip {
96
+ display: inline-flex;
97
+ align-items: center;
98
+ flex: none;
99
+ gap: 4px;
100
+ white-space: nowrap;
101
+ }
102
+
103
+ .conversation-role-summary-strip .conversation-role-avatar {
104
+ margin-block-start: 0;
105
+ }
106
+
107
+ .conversation-activity[open] .conversation-role-summary-strip,
108
+ .conversation-activity.has-role-summary:not([open])
109
+ .conversation-activity-current {
110
+ display: none;
111
+ }
112
+
113
+ .conversation-activity.has-role-summary:not([open])
114
+ > .conversation-activity-summary {
115
+ flex-wrap: wrap;
116
+ justify-content: flex-start;
117
+ gap: 6px 10px;
118
+ }
119
+
120
+ .conversation-activity.has-role-summary:not([open])
121
+ .conversation-activity-heading {
122
+ max-width: 100%;
123
+ }
124
+
125
+ .conversation-activity.has-role-summary:not([open])
126
+ .conversation-activity-facts {
127
+ max-width: 100%;
128
+ margin-inline-start: auto;
129
+ overflow-wrap: anywhere;
130
+ }
131
+
132
+ .conversation-role-header {
133
+ display: flex;
134
+ flex-wrap: wrap;
135
+ align-items: baseline;
136
+ gap: 2px 8px;
137
+ line-height: 1.4;
138
+ }
139
+
140
+ .conversation-role-title {
141
+ color: var(--text-strong);
142
+ font-size: var(--font-size-md);
143
+ font-weight: 650;
144
+ }
145
+
146
+ .conversation-role-responsibility {
147
+ min-width: 0;
148
+ color: var(--muted);
149
+ font-size: var(--font-size-xs);
150
+ overflow-wrap: anywhere;
151
+ }
152
+
153
+ .conversation-role-active {
154
+ align-self: center;
155
+ flex: none;
156
+ width: 6px;
157
+ height: 6px;
158
+ border-radius: 50%;
159
+ background: var(--text);
160
+ animation: conversation-role-pulse 1600ms ease-in-out infinite;
161
+ }
162
+
163
+ .conversation-role-summary {
164
+ display: -webkit-box;
165
+ overflow: hidden;
166
+ -webkit-box-orient: vertical;
167
+ -webkit-line-clamp: 2;
168
+ margin: 2px 0 0;
169
+ font-size: var(--font-size-md);
170
+ line-height: 1.4;
171
+ overflow-wrap: anywhere;
172
+ }
173
+
174
+ .conversation-role-action-label,
175
+ .conversation-role-error {
176
+ color: var(--muted);
177
+ font-size: var(--font-size-xs);
178
+ }
179
+
180
+ .conversation-role-facts {
181
+ display: flex;
182
+ flex-wrap: wrap;
183
+ gap: 2px 8px;
184
+ margin: 0;
185
+ padding: 0;
186
+ color: var(--muted-2);
187
+ font-size: var(--font-size-xs);
188
+ list-style: none;
189
+ }
190
+
191
+ .conversation-role-fact {
192
+ overflow-wrap: anywhere;
193
+ }
194
+
195
+ @keyframes conversation-role-pulse {
196
+ 50% {
197
+ opacity: 0.35;
198
+ }
199
+ }
200
+
201
+ @media (prefers-reduced-motion: reduce) {
202
+ .conversation-role-active {
203
+ animation: none;
204
+ }
205
+ }
@@ -0,0 +1,141 @@
1
+ .conversation-sources {
2
+ min-width: 0;
3
+ margin-block-start: 8px;
4
+ padding-block-start: 8px;
5
+ border-block-start: 1px solid var(--line);
6
+ }
7
+
8
+ .conversation-sources-heading,
9
+ .conversation-sources-group-header {
10
+ display: flex;
11
+ flex-wrap: wrap;
12
+ align-items: baseline;
13
+ gap: 4px 6px;
14
+ }
15
+
16
+ .conversation-sources-title,
17
+ .conversation-sources-operation {
18
+ margin: 0;
19
+ font-size: var(--font-size-xs);
20
+ line-height: 1.4;
21
+ }
22
+
23
+ .conversation-sources-title {
24
+ color: var(--text-strong);
25
+ font-weight: 650;
26
+ }
27
+
28
+ .conversation-sources-operation,
29
+ .conversation-sources-provider {
30
+ color: var(--muted);
31
+ font-size: var(--font-size-xs);
32
+ font-weight: 400;
33
+ }
34
+
35
+ .conversation-sources-group {
36
+ margin-block-start: 5px;
37
+ }
38
+
39
+ .conversation-sources-list {
40
+ display: grid;
41
+ grid-template-columns: repeat(3, minmax(0, 1fr));
42
+ gap: 5px;
43
+ margin: 4px 0 0;
44
+ padding: 0;
45
+ list-style: none;
46
+ }
47
+
48
+ .conversation-source-card {
49
+ min-width: 0;
50
+ }
51
+
52
+ .conversation-source-link {
53
+ display: grid;
54
+ grid-template-columns: 16px minmax(0, 1fr) auto;
55
+ align-items: center;
56
+ gap: 6px;
57
+ box-sizing: border-box;
58
+ height: 32px;
59
+ min-width: 0;
60
+ padding: 6px 8px;
61
+ border: 1px solid var(--line);
62
+ border-radius: 6px;
63
+ background: color-mix(in srgb, var(--text) 2%, transparent);
64
+ color: inherit;
65
+ text-decoration: none;
66
+ }
67
+
68
+ .conversation-source-link:hover {
69
+ background: color-mix(in srgb, var(--text) 5%, transparent);
70
+ }
71
+
72
+ .conversation-source-link:focus-visible {
73
+ outline: 2px solid var(--text);
74
+ outline-offset: 2px;
75
+ }
76
+
77
+ .conversation-source-icon {
78
+ position: relative;
79
+ display: grid;
80
+ place-items: center;
81
+ width: 16px;
82
+ height: 16px;
83
+ color: var(--muted);
84
+ font-size: 10px;
85
+ }
86
+
87
+ .conversation-source-favicon {
88
+ position: absolute;
89
+ inset: 0;
90
+ width: 16px;
91
+ height: 16px;
92
+ object-fit: contain;
93
+ }
94
+
95
+ .conversation-source-favicon[hidden],
96
+ .conversation-source-initial[hidden] {
97
+ display: none;
98
+ }
99
+
100
+ .conversation-source-domain,
101
+ .conversation-source-status {
102
+ overflow: hidden;
103
+ text-overflow: ellipsis;
104
+ white-space: nowrap;
105
+ font-size: var(--font-size-xs);
106
+ line-height: 1.4;
107
+ }
108
+
109
+ .conversation-source-domain {
110
+ min-width: 0;
111
+ color: var(--text);
112
+ text-align: start;
113
+ }
114
+
115
+ .conversation-source-status {
116
+ color: var(--muted);
117
+ font-size: 10px;
118
+ }
119
+
120
+ .conversation-source-status.is-failed {
121
+ color: #ffb4ab;
122
+ }
123
+
124
+ .conversation-sources-omitted {
125
+ margin: 4px 0 0;
126
+ color: var(--muted);
127
+ font-size: var(--font-size-xs);
128
+ line-height: 1.4;
129
+ }
130
+
131
+ @media (max-width: 1000px) {
132
+ .conversation-sources-list {
133
+ grid-template-columns: repeat(2, minmax(0, 1fr));
134
+ }
135
+ }
136
+
137
+ @media (max-width: 540px) {
138
+ .conversation-sources-list {
139
+ grid-template-columns: minmax(0, 1fr);
140
+ }
141
+ }
@@ -1,8 +1,4 @@
1
- /* Inspector, operations, health, and logs ---------------------------------- */
2
-
3
- .logs-view {
4
- font-family: var(--font-mono);
5
- }
1
+ /* Inspector and shared workspace foundations ------------------------------ */
6
2
 
7
3
  .inspector-tabs {
8
4
  display: grid;
@@ -27,7 +23,7 @@
27
23
  color: var(--muted);
28
24
  text-overflow: ellipsis;
29
25
  white-space: nowrap;
30
- font-size: 11.5px;
26
+ font-size: var(--font-size-sm);
31
27
  font-weight: 650;
32
28
  box-shadow: none;
33
29
  }
@@ -82,19 +78,19 @@
82
78
  justify-content: space-between;
83
79
  gap: 10px;
84
80
  color: var(--muted);
85
- font-size: 11px;
81
+ font-size: var(--font-size-sm);
86
82
  font-weight: 780;
87
83
  text-transform: uppercase;
88
84
  }
89
85
 
90
86
  .task-progress-topline strong {
91
87
  color: var(--accent-strong);
92
- font-size: 11px;
88
+ font-size: var(--font-size-sm);
93
89
  }
94
90
 
95
91
  .task-progress-summary {
96
92
  color: var(--text-strong);
97
- font-size: 13px;
93
+ font-size: var(--font-size-lg);
98
94
  font-weight: 710;
99
95
  line-height: 1.35;
100
96
  }
@@ -115,7 +111,7 @@
115
111
 
116
112
  .task-progress-count {
117
113
  color: var(--muted);
118
- font-size: 11.5px;
114
+ font-size: var(--font-size-sm);
119
115
  font-weight: 650;
120
116
  }
121
117
 
@@ -130,7 +126,7 @@
130
126
  gap: 8px;
131
127
  align-items: start;
132
128
  color: var(--muted);
133
- font-size: 12px;
129
+ font-size: var(--font-size-md);
134
130
  line-height: 1.3;
135
131
  }
136
132
 
@@ -230,7 +226,7 @@
230
226
  color: var(--text-strong);
231
227
  text-overflow: ellipsis;
232
228
  white-space: nowrap;
233
- font-size: 12.5px;
229
+ font-size: var(--font-size-md);
234
230
  font-weight: 700;
235
231
  }
236
232
 
@@ -249,7 +245,7 @@
249
245
  background: rgba(255, 255, 255, 0.075);
250
246
  color: var(--muted);
251
247
  text-align: center;
252
- font-size: 10.5px;
248
+ font-size: var(--font-size-xs);
253
249
  font-weight: 760;
254
250
  line-height: 1.35;
255
251
  }
@@ -257,37 +253,10 @@
257
253
  .event-meta {
258
254
  margin-top: 4px;
259
255
  color: var(--muted);
260
- font-size: 10.5px;
256
+ font-size: var(--font-size-xs);
261
257
  line-height: 1.35;
262
258
  }
263
259
 
264
- .runtime-card {
265
- padding: 12px;
266
- overflow: hidden;
267
- line-height: 1.5;
268
- }
269
-
270
- .runtime-grid {
271
- display: grid;
272
- gap: 10px;
273
- }
274
-
275
- .runtime-row {
276
- display: grid;
277
- grid-template-columns: 88px minmax(0, 1fr);
278
- gap: 10px;
279
- min-width: 0;
280
- }
281
-
282
- .runtime-row span:first-child {
283
- color: var(--muted);
284
- }
285
-
286
- .runtime-row strong {
287
- min-width: 0;
288
- overflow-wrap: anywhere;
289
- }
290
-
291
260
  .logs-view,
292
261
  .config-view {
293
262
  flex: 1;
@@ -296,7 +265,7 @@
296
265
  padding: 12px;
297
266
  overflow: auto;
298
267
  color: #dce3ee;
299
- font-size: 12px;
268
+ font-size: var(--font-size-md);
300
269
  line-height: 1.45;
301
270
  white-space: pre-wrap;
302
271
  }
@@ -307,87 +276,6 @@
307
276
  resize: vertical;
308
277
  }
309
278
 
310
- .health-topline {
311
- display: flex;
312
- align-items: center;
313
- justify-content: space-between;
314
- gap: 10px;
315
- margin-bottom: 12px;
316
- color: var(--muted);
317
- font-size: 11px;
318
- font-weight: 720;
319
- }
320
-
321
- .health-pill {
322
- min-width: 48px;
323
- padding: 3px 8px;
324
- border: 1px solid rgba(255, 255, 255, 0.12);
325
- border-radius: 7px;
326
- background: rgba(255, 255, 255, 0.07);
327
- text-align: center;
328
- color: var(--text);
329
- font-size: 11px;
330
- font-weight: 780;
331
- text-transform: uppercase;
332
- }
333
-
334
- .health-pill.healthy {
335
- border-color: rgba(50, 215, 75, 0.2);
336
- background: rgba(50, 215, 75, 0.12);
337
- color: #9ef0aa;
338
- }
339
-
340
- .health-pill.failed {
341
- border-color: rgba(255, 69, 58, 0.24);
342
- background: rgba(255, 69, 58, 0.13);
343
- color: #ffb0ab;
344
- }
345
-
346
- .health-requests {
347
- display: grid;
348
- gap: 8px;
349
- margin-top: 13px;
350
- padding-top: 13px;
351
- border-top: 1px solid var(--line);
352
- }
353
-
354
- .health-request {
355
- display: grid;
356
- grid-template-columns: minmax(0, 1fr) auto;
357
- gap: 12px;
358
- align-items: center;
359
- padding: 8px 9px;
360
- border: 1px solid rgba(255, 255, 255, 0.08);
361
- border-radius: 8px;
362
- background: rgba(255, 255, 255, 0.045);
363
- }
364
-
365
- .health-request div {
366
- display: grid;
367
- min-width: 0;
368
- gap: 3px;
369
- }
370
-
371
- .health-request div:last-child {
372
- justify-items: end;
373
- }
374
-
375
- .health-request strong {
376
- overflow: hidden;
377
- color: var(--text-strong);
378
- text-overflow: ellipsis;
379
- white-space: nowrap;
380
- font-size: 12px;
381
- }
382
-
383
- .health-request span {
384
- overflow: hidden;
385
- color: var(--muted);
386
- text-overflow: ellipsis;
387
- white-space: nowrap;
388
- font-size: 11px;
389
- }
390
-
391
279
  .empty-state {
392
280
  margin: auto;
393
281
  color: var(--muted);
@@ -397,7 +285,7 @@
397
285
  .empty-state.compact {
398
286
  margin: 14px 0 0;
399
287
  text-align: left;
400
- font-size: 12px;
288
+ font-size: var(--font-size-md);
401
289
  }
402
290
 
403
291
  .error-text {
@@ -411,7 +299,7 @@
411
299
  }
412
300
 
413
301
  .inspector-heading h2 {
414
- font-size: 17px;
302
+ font-size: var(--font-size-3xl);
415
303
  }
416
304
 
417
305
  .inspector-heading .icon-button {
@@ -441,7 +329,7 @@
441
329
  padding: 0 9px;
442
330
  border-radius: 8px;
443
331
  color: var(--muted);
444
- font-size: 11.5px;
332
+ font-size: var(--font-size-sm);
445
333
  font-weight: 620;
446
334
  }
447
335
 
@@ -465,7 +353,7 @@
465
353
  justify-content: space-between;
466
354
  gap: 10px;
467
355
  color: var(--muted);
468
- font-size: 11px;
356
+ font-size: var(--font-size-sm);
469
357
  font-weight: 760;
470
358
  letter-spacing: 0.02em;
471
359
  text-transform: uppercase;
@@ -477,7 +365,7 @@
477
365
  border-color: transparent;
478
366
  background: rgba(255, 255, 255, 0.06);
479
367
  color: var(--text);
480
- font-size: 11.5px;
368
+ font-size: var(--font-size-sm);
481
369
  font-weight: 650;
482
370
  text-transform: none;
483
371
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06);
@@ -496,7 +384,7 @@
496
384
  .panel-toolbar {
497
385
  min-height: 30px;
498
386
  color: var(--muted);
499
- font-size: 10px;
387
+ font-size: var(--font-size-xs);
500
388
  letter-spacing: 0.06em;
501
389
  }
502
390
 
@@ -529,7 +417,7 @@
529
417
 
530
418
  .event-name {
531
419
  color: var(--text);
532
- font-size: 12px;
420
+ font-size: var(--font-size-md);
533
421
  }
534
422
 
535
423
  .event-meta {
@@ -537,13 +425,6 @@
537
425
  line-height: 1.45;
538
426
  }
539
427
 
540
- .runtime-row,
541
- .health-request {
542
- border-color: rgba(112, 157, 201, 0.13);
543
- border-radius: 10px;
544
- background: rgba(54, 94, 133, 0.08);
545
- }
546
-
547
428
  .panel-backdrop {
548
429
  position: fixed;
549
430
  inset: 0;
@@ -675,7 +556,7 @@
675
556
  .workspace-page-heading h2 {
676
557
  margin: 0;
677
558
  color: var(--text-strong);
678
- font-size: 20px;
559
+ font-size: var(--font-size-5xl);
679
560
  font-weight: 680;
680
561
  letter-spacing: -0.025em;
681
562
  }
@@ -684,7 +565,7 @@
684
565
  max-width: 620px;
685
566
  margin: 5px 0 0;
686
567
  color: var(--muted);
687
- font-size: 12px;
568
+ font-size: var(--font-size-md);
688
569
  line-height: 1.45;
689
570
  }
690
571
 
@@ -722,13 +603,6 @@
722
603
  margin-inline: auto;
723
604
  }
724
605
 
725
- .app-shell.operations-workspace {
726
- display: grid;
727
- grid-template-columns: 72px minmax(0, 1fr);
728
- grid-template-rows: minmax(0, 1fr);
729
- overflow: hidden;
730
- background: var(--bg);
731
- }
732
606
  .panel-backdrop {
733
607
  inset: 0 0 0 72px;
734
608
  z-index: 50;
@@ -742,68 +616,6 @@
742
616
  z-index: 90;
743
617
  }
744
618
 
745
- /* Operations navigation and content. */
746
-
747
- .operations-workspace-body {
748
- display: grid;
749
- grid-template-rows: auto minmax(0, 1fr);
750
- align-content: start;
751
- gap: 18px;
752
- }
753
-
754
- .operations-tabs {
755
- position: sticky;
756
- top: 0;
757
- z-index: 6;
758
- display: flex;
759
- gap: 4px;
760
- width: min(1260px, 100%);
761
- padding: 4px;
762
- border: 1px solid rgba(114, 162, 210, 0.16);
763
- border-radius: 12px;
764
- background: rgba(11, 29, 47, 0.96);
765
- box-shadow: 0 12px 32px rgba(0, 7, 18, 0.14);
766
- backdrop-filter: blur(16px);
767
- }
768
-
769
- .operations-tab-button {
770
- flex: 0 1 150px;
771
- min-height: 36px;
772
- border: 0;
773
- border-radius: 9px;
774
- color: var(--muted);
775
- font-size: 12px;
776
- font-weight: 620;
777
- }
778
-
779
- .operations-tab-button:hover {
780
- background: rgba(84, 133, 181, 0.09);
781
- color: var(--text);
782
- }
783
-
784
- .operations-tab-button.active {
785
- background: rgba(76, 136, 218, 0.16);
786
- color: #dceaff;
787
- }
788
-
789
- .operations-tab-page {
790
- display: none;
791
- width: min(1260px, 100%);
792
- min-height: 0;
793
- }
794
-
795
- .operations-tab-page.active {
796
- display: flex;
797
- flex-direction: column;
798
- gap: 16px;
799
- }
800
-
801
- .operations-tab-page .runtime-card,
802
- .operations-tab-page .logs-view {
803
- min-height: 280px;
804
- padding: clamp(18px, 3vw, 30px);
805
- }
806
-
807
619
  /* Rail state hooks shared by full workspace destinations. */
808
620
 
809
621
  .workspace-rail .rail-button[aria-current="page"] {
@@ -830,7 +642,7 @@
830
642
  color: #a8bdd2;
831
643
  text-overflow: clip;
832
644
  white-space: nowrap;
833
- font-size: 10px;
645
+ font-size: var(--font-size-xs);
834
646
  font-weight: 650;
835
647
  letter-spacing: 0.035em;
836
648
  }