@intentic/sandbox-contract 1.248.0 → 1.249.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 (877) hide show
  1. package/README.md +18 -15
  2. package/dist/chores/chores.d.ts.map +1 -1
  3. package/dist/chores/chores.js.map +1 -1
  4. package/dist/chores/digest.d.ts.map +1 -1
  5. package/dist/chores/digest.js.map +1 -1
  6. package/dist/chores/extension-update.d.ts.map +1 -1
  7. package/dist/chores/extension-update.js.map +1 -1
  8. package/dist/chores/fix-deps.d.ts.map +1 -1
  9. package/dist/chores/fix-deps.js.map +1 -1
  10. package/dist/chores/index.d.ts +2 -2
  11. package/dist/chores/index.d.ts.map +1 -1
  12. package/dist/chores/index.js +1 -1
  13. package/dist/chores/index.js.map +1 -1
  14. package/dist/chores/probes.d.ts.map +1 -1
  15. package/dist/chores/probes.js.map +1 -1
  16. package/dist/chores/prompt.d.ts.map +1 -1
  17. package/dist/chores/prompt.js.map +1 -1
  18. package/dist/chores/stack.d.ts.map +1 -1
  19. package/dist/chores/stack.js.map +1 -1
  20. package/dist/chores/verdict.d.ts +7 -1
  21. package/dist/chores/verdict.d.ts.map +1 -1
  22. package/dist/chores/verdict.js +8 -0
  23. package/dist/chores/verdict.js.map +1 -1
  24. package/dist/contracts/accounts.contract.d.ts.map +1 -1
  25. package/dist/contracts/accounts.contract.js.map +1 -1
  26. package/dist/contracts/activity.contract.d.ts +1 -0
  27. package/dist/contracts/activity.contract.d.ts.map +1 -1
  28. package/dist/contracts/agent.contract.d.ts +12 -205
  29. package/dist/contracts/agent.contract.d.ts.map +1 -1
  30. package/dist/contracts/agent.contract.js +2 -1
  31. package/dist/contracts/agent.contract.js.map +1 -1
  32. package/dist/contracts/agents.contract.d.ts +228 -54
  33. package/dist/contracts/agents.contract.d.ts.map +1 -1
  34. package/dist/contracts/agents.contract.js +11 -2
  35. package/dist/contracts/agents.contract.js.map +1 -1
  36. package/dist/contracts/automations.contract.d.ts +35 -17
  37. package/dist/contracts/automations.contract.d.ts.map +1 -1
  38. package/dist/contracts/automations.contract.js +10 -1
  39. package/dist/contracts/automations.contract.js.map +1 -1
  40. package/dist/contracts/capabilities.contract.d.ts +0 -12
  41. package/dist/contracts/capabilities.contract.d.ts.map +1 -1
  42. package/dist/contracts/capabilities.contract.js +1 -1
  43. package/dist/contracts/capabilities.contract.js.map +1 -1
  44. package/dist/contracts/chores.contract.d.ts.map +1 -1
  45. package/dist/contracts/chores.contract.js.map +1 -1
  46. package/dist/contracts/ci.contract.d.ts +9 -0
  47. package/dist/contracts/ci.contract.d.ts.map +1 -1
  48. package/dist/contracts/endpoints.contract.d.ts.map +1 -1
  49. package/dist/contracts/endpoints.contract.js.map +1 -1
  50. package/dist/contracts/exit.contract.d.ts.map +1 -1
  51. package/dist/contracts/exit.contract.js +1 -1
  52. package/dist/contracts/exit.contract.js.map +1 -1
  53. package/dist/contracts/extensions.contract.d.ts.map +1 -1
  54. package/dist/contracts/extensions.contract.js.map +1 -1
  55. package/dist/contracts/git.contract.d.ts +45 -6
  56. package/dist/contracts/git.contract.d.ts.map +1 -1
  57. package/dist/contracts/git.contract.js +9 -9
  58. package/dist/contracts/git.contract.js.map +1 -1
  59. package/dist/contracts/host.contract.d.ts +2 -0
  60. package/dist/contracts/host.contract.d.ts.map +1 -1
  61. package/dist/contracts/host.contract.js.map +1 -1
  62. package/dist/contracts/intentic.contract.js +1 -1
  63. package/dist/contracts/intentic.contract.js.map +1 -1
  64. package/dist/contracts/logs.contract.d.ts.map +1 -1
  65. package/dist/contracts/logs.contract.js.map +1 -1
  66. package/dist/contracts/loops.contract.d.ts.map +1 -1
  67. package/dist/contracts/loops.contract.js.map +1 -1
  68. package/dist/contracts/personas.contract.d.ts +1 -0
  69. package/dist/contracts/personas.contract.d.ts.map +1 -1
  70. package/dist/contracts/personas.contract.js +1 -1
  71. package/dist/contracts/personas.contract.js.map +1 -1
  72. package/dist/contracts/providers.contract.d.ts.map +1 -1
  73. package/dist/contracts/providers.contract.js.map +1 -1
  74. package/dist/contracts/runner.contract.d.ts +97 -171
  75. package/dist/contracts/runner.contract.d.ts.map +1 -1
  76. package/dist/contracts/runner.contract.js +2 -2
  77. package/dist/contracts/runner.contract.js.map +1 -1
  78. package/dist/contracts/safety.contract.d.ts.map +1 -1
  79. package/dist/contracts/safety.contract.js +1 -1
  80. package/dist/contracts/safety.contract.js.map +1 -1
  81. package/dist/contracts/secrets.contract.d.ts.map +1 -1
  82. package/dist/contracts/secrets.contract.js.map +1 -1
  83. package/dist/contracts/sessions.contract.d.ts +2 -41
  84. package/dist/contracts/sessions.contract.d.ts.map +1 -1
  85. package/dist/contracts/sessions.contract.js +1 -1
  86. package/dist/contracts/sessions.contract.js.map +1 -1
  87. package/dist/contracts/settings.contract.d.ts +8 -18
  88. package/dist/contracts/settings.contract.d.ts.map +1 -1
  89. package/dist/contracts/settings.contract.js.map +1 -1
  90. package/dist/contracts/share.contract.d.ts.map +1 -1
  91. package/dist/contracts/share.contract.js.map +1 -1
  92. package/dist/contracts/skills.contract.d.ts.map +1 -1
  93. package/dist/contracts/skills.contract.js.map +1 -1
  94. package/dist/contracts/system.contract.d.ts +49 -73
  95. package/dist/contracts/system.contract.d.ts.map +1 -1
  96. package/dist/contracts/system.contract.js +12 -2
  97. package/dist/contracts/system.contract.js.map +1 -1
  98. package/dist/contracts/usage.contract.d.ts.map +1 -1
  99. package/dist/contracts/usage.contract.js.map +1 -1
  100. package/dist/contracts/vpn.contract.d.ts.map +1 -1
  101. package/dist/contracts/vpn.contract.js +1 -1
  102. package/dist/contracts/vpn.contract.js.map +1 -1
  103. package/dist/contracts/webext.contract.d.ts.map +1 -1
  104. package/dist/contracts/webext.contract.js.map +1 -1
  105. package/dist/contracts/workflows.contract.d.ts +7 -6
  106. package/dist/contracts/workflows.contract.d.ts.map +1 -1
  107. package/dist/contracts/workflows.contract.js +12 -3
  108. package/dist/contracts/workflows.contract.js.map +1 -1
  109. package/dist/contracts/workspace.contract.d.ts.map +1 -1
  110. package/dist/contracts/workspace.contract.js.map +1 -1
  111. package/dist/events/agent-events.d.ts +1237 -0
  112. package/dist/events/agent-events.d.ts.map +1 -0
  113. package/dist/events/agent-events.js +226 -0
  114. package/dist/events/agent-events.js.map +1 -0
  115. package/dist/events/cards.d.ts +404 -0
  116. package/dist/events/cards.d.ts.map +1 -0
  117. package/dist/events/cards.js +179 -0
  118. package/dist/events/cards.js.map +1 -0
  119. package/dist/events/resume.d.ts +23 -0
  120. package/dist/events/resume.d.ts.map +1 -0
  121. package/dist/events/resume.js +31 -0
  122. package/dist/events/resume.js.map +1 -0
  123. package/dist/events/system-events.d.ts +615 -0
  124. package/dist/events/system-events.d.ts.map +1 -0
  125. package/dist/events/system-events.js +64 -0
  126. package/dist/events/system-events.js.map +1 -0
  127. package/dist/events/transcript.d.ts +1755 -0
  128. package/dist/events/transcript.d.ts.map +1 -0
  129. package/dist/events/transcript.js +205 -0
  130. package/dist/events/transcript.js.map +1 -0
  131. package/dist/ids/conversation-ids.d.ts +8 -0
  132. package/dist/ids/conversation-ids.d.ts.map +1 -0
  133. package/dist/{conversation-ids.js → ids/conversation-ids.js} +13 -0
  134. package/dist/ids/conversation-ids.js.map +1 -0
  135. package/dist/ids/hostnames.d.ts.map +1 -0
  136. package/dist/ids/hostnames.js.map +1 -0
  137. package/dist/ids/session-names.d.ts.map +1 -0
  138. package/dist/ids/session-names.js.map +1 -0
  139. package/dist/ids/share-paths.d.ts.map +1 -0
  140. package/dist/ids/share-paths.js.map +1 -0
  141. package/dist/{tunnel-ids.d.ts → ids/tunnel-ids.d.ts} +1 -0
  142. package/dist/ids/tunnel-ids.d.ts.map +1 -0
  143. package/dist/{tunnel-ids.js → ids/tunnel-ids.js} +1 -0
  144. package/dist/ids/tunnel-ids.js.map +1 -0
  145. package/dist/index.d.ts +423 -450
  146. package/dist/index.d.ts.map +1 -1
  147. package/dist/index.js +54 -46
  148. package/dist/index.js.map +1 -1
  149. package/dist/{agent-catalog.d.ts → models/agent-catalog.d.ts} +2 -2
  150. package/dist/models/agent-catalog.d.ts.map +1 -0
  151. package/dist/models/agent-catalog.js.map +1 -0
  152. package/dist/models/agent-runtimes.d.ts.map +1 -0
  153. package/dist/models/agent-runtimes.js.map +1 -0
  154. package/dist/{fast-tier.d.ts → models/fast-tier.d.ts} +1 -1
  155. package/dist/models/fast-tier.d.ts.map +1 -0
  156. package/dist/models/fast-tier.js.map +1 -0
  157. package/dist/models/model-order.d.ts.map +1 -0
  158. package/dist/models/model-order.js.map +1 -0
  159. package/dist/{model-pins.d.ts → models/model-pins.d.ts} +1 -1
  160. package/dist/models/model-pins.d.ts.map +1 -0
  161. package/dist/models/model-pins.js.map +1 -0
  162. package/dist/{model-roles.d.ts → models/model-roles.d.ts} +0 -33
  163. package/dist/models/model-roles.d.ts.map +1 -0
  164. package/dist/{model-roles.js → models/model-roles.js} +0 -35
  165. package/dist/models/model-roles.js.map +1 -0
  166. package/dist/{plan-pools.d.ts → models/plan-pools.d.ts} +1 -1
  167. package/dist/models/plan-pools.d.ts.map +1 -0
  168. package/dist/models/plan-pools.js.map +1 -0
  169. package/dist/models/prompt-complexity.d.ts.map +1 -0
  170. package/dist/models/prompt-complexity.js.map +1 -0
  171. package/dist/models/provider-specs.d.ts.map +1 -0
  172. package/dist/models/provider-specs.js.map +1 -0
  173. package/dist/policy/approvals-execution.d.ts.map +1 -0
  174. package/dist/policy/approvals-execution.js.map +1 -0
  175. package/dist/{batch-runs.d.ts → policy/batch-runs.d.ts} +5 -1
  176. package/dist/policy/batch-runs.d.ts.map +1 -0
  177. package/dist/{batch-runs.js → policy/batch-runs.js} +10 -7
  178. package/dist/policy/batch-runs.js.map +1 -0
  179. package/dist/policy/capability-env.d.ts.map +1 -0
  180. package/dist/policy/capability-env.js.map +1 -0
  181. package/dist/policy/capability-secrets.d.ts.map +1 -0
  182. package/dist/policy/capability-secrets.js.map +1 -0
  183. package/dist/{card-status.d.ts → policy/card-status.d.ts} +2 -2
  184. package/dist/policy/card-status.d.ts.map +1 -0
  185. package/dist/{card-status.js → policy/card-status.js} +1 -5
  186. package/dist/policy/card-status.js.map +1 -0
  187. package/dist/{command-classes.d.ts → policy/command-classes.d.ts} +6 -2
  188. package/dist/policy/command-classes.d.ts.map +1 -0
  189. package/dist/{command-classes.js → policy/command-classes.js} +48 -11
  190. package/dist/policy/command-classes.js.map +1 -0
  191. package/dist/{command-run.d.ts → policy/command-run.d.ts} +1 -1
  192. package/dist/policy/command-run.d.ts.map +1 -0
  193. package/dist/policy/command-run.js.map +1 -0
  194. package/dist/policy/control-scopes.d.ts +16 -0
  195. package/dist/policy/control-scopes.d.ts.map +1 -0
  196. package/dist/policy/control-scopes.js +26 -0
  197. package/dist/policy/control-scopes.js.map +1 -0
  198. package/dist/policy/credential-material.d.ts.map +1 -0
  199. package/dist/policy/credential-material.js.map +1 -0
  200. package/dist/policy/needs-action.d.ts.map +1 -0
  201. package/dist/policy/needs-action.js.map +1 -0
  202. package/dist/policy/output-fields.d.ts.map +1 -0
  203. package/dist/policy/output-fields.js.map +1 -0
  204. package/dist/policy/overlay-lint.d.ts.map +1 -0
  205. package/dist/policy/overlay-lint.js.map +1 -0
  206. package/dist/policy/owner-ticket.d.ts.map +1 -0
  207. package/dist/{owner-ticket.js → policy/owner-ticket.js} +1 -1
  208. package/dist/policy/owner-ticket.js.map +1 -0
  209. package/dist/{safety-policy.d.ts → policy/safety-policy.d.ts} +6 -5
  210. package/dist/policy/safety-policy.d.ts.map +1 -0
  211. package/dist/{safety-policy.js → policy/safety-policy.js} +12 -12
  212. package/dist/policy/safety-policy.js.map +1 -0
  213. package/dist/policy/search-globs.d.ts.map +1 -0
  214. package/dist/policy/search-globs.js.map +1 -0
  215. package/dist/protocol/container-requirements.d.ts +20 -0
  216. package/dist/protocol/container-requirements.d.ts.map +1 -0
  217. package/dist/protocol/container-requirements.js +23 -0
  218. package/dist/protocol/container-requirements.js.map +1 -0
  219. package/dist/{host-protocol.d.ts → protocol/host-protocol.d.ts} +1 -0
  220. package/dist/protocol/host-protocol.d.ts.map +1 -0
  221. package/dist/{host-protocol.js → protocol/host-protocol.js} +1 -0
  222. package/dist/protocol/host-protocol.js.map +1 -0
  223. package/dist/protocol/ingress-contract.d.ts.map +1 -0
  224. package/dist/{ingress-contract.js → protocol/ingress-contract.js} +1 -1
  225. package/dist/protocol/ingress-contract.js.map +1 -0
  226. package/dist/protocol/ingress-protocol.d.ts.map +1 -0
  227. package/dist/protocol/ingress-protocol.js.map +1 -0
  228. package/dist/protocol/listener-protocol.d.ts.map +1 -0
  229. package/dist/{listener-protocol.js → protocol/listener-protocol.js} +1 -1
  230. package/dist/protocol/listener-protocol.js.map +1 -0
  231. package/dist/{peer-dial.d.ts → protocol/peer-dial.d.ts} +4 -1
  232. package/dist/protocol/peer-dial.d.ts.map +1 -0
  233. package/dist/{peer-dial.js → protocol/peer-dial.js} +51 -10
  234. package/dist/protocol/peer-dial.js.map +1 -0
  235. package/dist/protocol/peer-mcp-server.d.ts.map +1 -0
  236. package/dist/protocol/peer-mcp-server.js.map +1 -0
  237. package/dist/protocol/request-id.d.ts.map +1 -0
  238. package/dist/protocol/request-id.js.map +1 -0
  239. package/dist/protocol/routes.d.ts.map +1 -0
  240. package/dist/protocol/routes.js.map +1 -0
  241. package/dist/{runner-protocol.d.ts → protocol/runner-protocol.d.ts} +1 -0
  242. package/dist/protocol/runner-protocol.d.ts.map +1 -0
  243. package/dist/{runner-protocol.js → protocol/runner-protocol.js} +2 -1
  244. package/dist/protocol/runner-protocol.js.map +1 -0
  245. package/dist/protocol/sse.d.ts.map +1 -0
  246. package/dist/protocol/sse.js.map +1 -0
  247. package/dist/{terminal-protocol.d.ts → protocol/terminal-protocol.d.ts} +1 -3
  248. package/dist/protocol/terminal-protocol.d.ts.map +1 -0
  249. package/dist/protocol/terminal-protocol.js.map +1 -0
  250. package/dist/protocol/webext-links.d.ts.map +1 -0
  251. package/dist/protocol/webext-links.js.map +1 -0
  252. package/dist/{webext-protocol.d.ts → protocol/webext-protocol.d.ts} +1 -0
  253. package/dist/protocol/webext-protocol.d.ts.map +1 -0
  254. package/dist/{webext-protocol.js → protocol/webext-protocol.js} +1 -0
  255. package/dist/protocol/webext-protocol.js.map +1 -0
  256. package/dist/schemas/activity.d.ts +2 -0
  257. package/dist/schemas/activity.d.ts.map +1 -1
  258. package/dist/schemas/activity.js +4 -0
  259. package/dist/schemas/activity.js.map +1 -1
  260. package/dist/schemas/agent.d.ts +16 -4
  261. package/dist/schemas/agent.d.ts.map +1 -1
  262. package/dist/schemas/agent.js +21 -4
  263. package/dist/schemas/agent.js.map +1 -1
  264. package/dist/schemas/agents.d.ts +17 -4
  265. package/dist/schemas/agents.d.ts.map +1 -1
  266. package/dist/schemas/agents.js +15 -4
  267. package/dist/schemas/agents.js.map +1 -1
  268. package/dist/schemas/approvals.d.ts.map +1 -1
  269. package/dist/schemas/approvals.js.map +1 -1
  270. package/dist/schemas/automations.d.ts +54 -28
  271. package/dist/schemas/automations.d.ts.map +1 -1
  272. package/dist/schemas/automations.js +26 -8
  273. package/dist/schemas/automations.js.map +1 -1
  274. package/dist/schemas/capabilities.d.ts +0 -8
  275. package/dist/schemas/capabilities.d.ts.map +1 -1
  276. package/dist/schemas/capabilities.js +0 -4
  277. package/dist/schemas/capabilities.js.map +1 -1
  278. package/dist/schemas/ci.d.ts +10 -0
  279. package/dist/schemas/ci.d.ts.map +1 -1
  280. package/dist/schemas/ci.js +9 -1
  281. package/dist/schemas/ci.js.map +1 -1
  282. package/dist/schemas/codebase-health.d.ts.map +1 -1
  283. package/dist/schemas/codebase-health.js.map +1 -1
  284. package/dist/schemas/devices.d.ts +90 -0
  285. package/dist/schemas/devices.d.ts.map +1 -1
  286. package/dist/schemas/devices.js +10 -1
  287. package/dist/schemas/devices.js.map +1 -1
  288. package/dist/schemas/engines.d.ts.map +1 -1
  289. package/dist/schemas/engines.js.map +1 -1
  290. package/dist/schemas/environment.d.ts.map +1 -1
  291. package/dist/schemas/environment.js.map +1 -1
  292. package/dist/schemas/exit.d.ts.map +1 -1
  293. package/dist/schemas/exit.js.map +1 -1
  294. package/dist/schemas/extension-updates.d.ts.map +1 -1
  295. package/dist/schemas/extension-updates.js.map +1 -1
  296. package/dist/schemas/git-history.d.ts.map +1 -1
  297. package/dist/schemas/git-history.js.map +1 -1
  298. package/dist/schemas/git.d.ts +80 -16
  299. package/dist/schemas/git.d.ts.map +1 -1
  300. package/dist/schemas/git.js +37 -25
  301. package/dist/schemas/git.js.map +1 -1
  302. package/dist/schemas/history.d.ts.map +1 -1
  303. package/dist/schemas/history.js.map +1 -1
  304. package/dist/schemas/hosts.d.ts.map +1 -1
  305. package/dist/schemas/hosts.js.map +1 -1
  306. package/dist/schemas/inventory.d.ts.map +1 -1
  307. package/dist/schemas/inventory.js.map +1 -1
  308. package/dist/schemas/issues.d.ts +0 -1
  309. package/dist/schemas/issues.d.ts.map +1 -1
  310. package/dist/schemas/issues.js +0 -1
  311. package/dist/schemas/issues.js.map +1 -1
  312. package/dist/schemas/logs.d.ts.map +1 -1
  313. package/dist/schemas/logs.js.map +1 -1
  314. package/dist/schemas/loops.d.ts.map +1 -1
  315. package/dist/schemas/loops.js +1 -1
  316. package/dist/schemas/loops.js.map +1 -1
  317. package/dist/schemas/maintenance.d.ts.map +1 -1
  318. package/dist/schemas/maintenance.js.map +1 -1
  319. package/dist/schemas/marketplace.d.ts +0 -4
  320. package/dist/schemas/marketplace.d.ts.map +1 -1
  321. package/dist/schemas/panels.d.ts.map +1 -1
  322. package/dist/schemas/panels.js.map +1 -1
  323. package/dist/schemas/personas.d.ts +2 -1
  324. package/dist/schemas/personas.d.ts.map +1 -1
  325. package/dist/schemas/personas.js +6 -2
  326. package/dist/schemas/personas.js.map +1 -1
  327. package/dist/schemas/plan-limits.d.ts +2 -4
  328. package/dist/schemas/plan-limits.d.ts.map +1 -1
  329. package/dist/schemas/plan-limits.js +5 -8
  330. package/dist/schemas/plan-limits.js.map +1 -1
  331. package/dist/schemas/ports.d.ts.map +1 -1
  332. package/dist/schemas/ports.js.map +1 -1
  333. package/dist/schemas/provider-oauth.d.ts.map +1 -1
  334. package/dist/schemas/provider-oauth.js.map +1 -1
  335. package/dist/schemas/provider-subscriptions.d.ts +1 -1
  336. package/dist/schemas/provider-subscriptions.d.ts.map +1 -1
  337. package/dist/schemas/provider-subscriptions.js +1 -1
  338. package/dist/schemas/provider-subscriptions.js.map +1 -1
  339. package/dist/schemas/public.d.ts.map +1 -1
  340. package/dist/schemas/public.js.map +1 -1
  341. package/dist/schemas/push.d.ts.map +1 -1
  342. package/dist/schemas/push.js.map +1 -1
  343. package/dist/schemas/secrets.d.ts.map +1 -1
  344. package/dist/schemas/secrets.js.map +1 -1
  345. package/dist/schemas/settings.d.ts +6 -9
  346. package/dist/schemas/settings.d.ts.map +1 -1
  347. package/dist/schemas/settings.js +16 -5
  348. package/dist/schemas/settings.js.map +1 -1
  349. package/dist/schemas/share.d.ts.map +1 -1
  350. package/dist/schemas/share.js.map +1 -1
  351. package/dist/schemas/shared.d.ts +4 -0
  352. package/dist/schemas/shared.d.ts.map +1 -1
  353. package/dist/schemas/shared.js +3 -0
  354. package/dist/schemas/shared.js.map +1 -1
  355. package/dist/schemas/system.d.ts +6 -0
  356. package/dist/schemas/system.d.ts.map +1 -1
  357. package/dist/schemas/system.js +10 -0
  358. package/dist/schemas/system.js.map +1 -1
  359. package/dist/schemas/terminal.d.ts.map +1 -1
  360. package/dist/schemas/terminal.js.map +1 -1
  361. package/dist/schemas/usage.d.ts.map +1 -1
  362. package/dist/schemas/usage.js.map +1 -1
  363. package/dist/schemas/vpn.d.ts.map +1 -1
  364. package/dist/schemas/vpn.js.map +1 -1
  365. package/dist/schemas/webext.d.ts.map +1 -1
  366. package/dist/schemas/webext.js.map +1 -1
  367. package/dist/schemas/workflows.d.ts +66 -9
  368. package/dist/schemas/workflows.d.ts.map +1 -1
  369. package/dist/schemas/workflows.js +6 -5
  370. package/dist/schemas/workflows.js.map +1 -1
  371. package/dist/schemas/workspace-repos.d.ts.map +1 -1
  372. package/dist/schemas/workspace-repos.js.map +1 -1
  373. package/dist/schemas/workspace-search.d.ts.map +1 -1
  374. package/dist/schemas/workspace-search.js.map +1 -1
  375. package/dist/schemas/workspace-setup.d.ts.map +1 -1
  376. package/dist/schemas/workspace-setup.js.map +1 -1
  377. package/dist/schemas/workspace-tree.d.ts.map +1 -1
  378. package/dist/schemas/workspace-tree.js.map +1 -1
  379. package/dist/state/arrival.d.ts.map +1 -0
  380. package/dist/{arrival.js → state/arrival.js} +1 -1
  381. package/dist/state/arrival.js.map +1 -0
  382. package/dist/state/contract-lock.d.ts.map +1 -0
  383. package/dist/{contract-lock.js → state/contract-lock.js} +1 -1
  384. package/dist/state/contract-lock.js.map +1 -0
  385. package/dist/{definition.d.ts → state/definition.d.ts} +21 -17
  386. package/dist/state/definition.d.ts.map +1 -0
  387. package/dist/{definition.js → state/definition.js} +4 -4
  388. package/dist/state/definition.js.map +1 -0
  389. package/dist/state/history-state.d.ts.map +1 -0
  390. package/dist/{history-state.js → state/history-state.js} +1 -0
  391. package/dist/state/history-state.js.map +1 -0
  392. package/dist/state/runtime-state.d.ts.map +1 -0
  393. package/dist/state/runtime-state.js.map +1 -0
  394. package/dist/state/starter.d.ts.map +1 -0
  395. package/dist/state/starter.js.map +1 -0
  396. package/dist/state/state-portability.d.ts.map +1 -0
  397. package/dist/state/state-portability.js.map +1 -0
  398. package/dist/state/versions.d.ts.map +1 -0
  399. package/dist/state/versions.js.map +1 -0
  400. package/dist/{workspace-state.d.ts → state/workspace-state.d.ts} +8 -0
  401. package/dist/state/workspace-state.d.ts.map +1 -0
  402. package/dist/{workspace-state.js → state/workspace-state.js} +25 -0
  403. package/dist/state/workspace-state.js.map +1 -0
  404. package/dist/{documents.d.ts → text/documents.d.ts} +1 -1
  405. package/dist/text/documents.d.ts.map +1 -0
  406. package/dist/{documents.js → text/documents.js} +1 -1
  407. package/dist/text/documents.js.map +1 -0
  408. package/dist/text/embed.d.ts.map +1 -0
  409. package/dist/text/embed.js.map +1 -0
  410. package/dist/text/mentions.d.ts.map +1 -0
  411. package/dist/text/mentions.js.map +1 -0
  412. package/dist/text/model-answer.d.ts +3 -0
  413. package/dist/text/model-answer.d.ts.map +1 -0
  414. package/dist/text/model-answer.js +3 -0
  415. package/dist/text/model-answer.js.map +1 -0
  416. package/dist/text/path-refs.d.ts.map +1 -0
  417. package/dist/text/path-refs.js.map +1 -0
  418. package/dist/{shell-regions.d.ts → text/shell-regions.d.ts} +1 -1
  419. package/dist/text/shell-regions.d.ts.map +1 -0
  420. package/dist/text/shell-regions.js.map +1 -0
  421. package/dist/text/title.d.ts.map +1 -0
  422. package/dist/text/title.js.map +1 -0
  423. package/dist/{transcript-fold.d.ts → text/transcript-fold.d.ts} +2 -1
  424. package/dist/text/transcript-fold.d.ts.map +1 -0
  425. package/dist/{transcript-fold.js → text/transcript-fold.js} +2 -16
  426. package/dist/text/transcript-fold.js.map +1 -0
  427. package/dist/text/whisper.d.ts +3 -0
  428. package/dist/text/whisper.d.ts.map +1 -0
  429. package/dist/text/whisper.js +11 -0
  430. package/dist/text/whisper.js.map +1 -0
  431. package/dist/{workflow-faults.d.ts → text/workflow-faults.d.ts} +1 -1
  432. package/dist/text/workflow-faults.d.ts.map +1 -0
  433. package/dist/{workflow-faults.js → text/workflow-faults.js} +1 -1
  434. package/dist/text/workflow-faults.js.map +1 -0
  435. package/package.json +70 -70
  436. package/src/chores/chores.test.ts +4 -10
  437. package/src/chores/chores.ts +148 -392
  438. package/src/chores/digest.ts +8 -28
  439. package/src/chores/extension-update.ts +3 -8
  440. package/src/chores/fix-deps.ts +4 -18
  441. package/src/chores/index.ts +2 -2
  442. package/src/chores/probes.test.ts +7 -43
  443. package/src/chores/probes.ts +62 -167
  444. package/src/chores/prompt.ts +10 -34
  445. package/src/chores/stack.test.ts +6 -45
  446. package/src/chores/stack.ts +27 -118
  447. package/src/chores/verdict.test.ts +101 -80
  448. package/src/chores/verdict.ts +54 -99
  449. package/src/contracts/accounts.contract.ts +4 -19
  450. package/src/contracts/agent.contract.ts +7 -22
  451. package/src/contracts/agents.contract.ts +25 -71
  452. package/src/contracts/automations.contract.ts +14 -30
  453. package/src/contracts/capabilities.contract.ts +8 -35
  454. package/src/contracts/chores.contract.ts +4 -15
  455. package/src/contracts/endpoints.contract.ts +5 -22
  456. package/src/contracts/exit.contract.ts +7 -30
  457. package/src/contracts/extensions.contract.ts +8 -30
  458. package/src/contracts/git.contract.ts +25 -49
  459. package/src/contracts/host.contract.ts +9 -44
  460. package/src/contracts/intentic.contract.ts +1 -1
  461. package/src/contracts/logs.contract.ts +3 -13
  462. package/src/contracts/loops.contract.ts +9 -40
  463. package/src/contracts/personas.contract.ts +10 -35
  464. package/src/contracts/providers.contract.ts +4 -17
  465. package/src/contracts/runner.contract.ts +12 -39
  466. package/src/contracts/safety.contract.ts +5 -14
  467. package/src/contracts/secrets.contract.ts +4 -22
  468. package/src/contracts/sessions.contract.ts +1 -1
  469. package/src/contracts/settings.contract.ts +4 -10
  470. package/src/contracts/share.contract.ts +3 -9
  471. package/src/contracts/skills.contract.ts +4 -15
  472. package/src/contracts/system.contract.ts +26 -52
  473. package/src/contracts/usage.contract.ts +7 -21
  474. package/src/contracts/vpn.contract.ts +9 -16
  475. package/src/contracts/webext.contract.ts +9 -25
  476. package/src/contracts/workflows.contract.ts +34 -58
  477. package/src/contracts/workspace.contract.ts +19 -50
  478. package/src/events/agent-events.ts +345 -0
  479. package/src/events/cards.ts +286 -0
  480. package/src/{events.test.ts → events/resume.test.ts} +4 -19
  481. package/src/events/resume.ts +60 -0
  482. package/src/events/system-events.ts +139 -0
  483. package/src/events/transcript.ts +320 -0
  484. package/src/{conversation-ids.test.ts → ids/conversation-ids.test.ts} +25 -13
  485. package/src/ids/conversation-ids.ts +178 -0
  486. package/src/ids/hostnames.ts +129 -0
  487. package/src/ids/session-names.ts +29 -0
  488. package/src/ids/share-paths.ts +43 -0
  489. package/src/{tunnel-ids.test.ts → ids/tunnel-ids.test.ts} +1 -14
  490. package/src/ids/tunnel-ids.ts +29 -0
  491. package/src/index.ts +71 -87
  492. package/src/{agent-catalog.test.ts → models/agent-catalog.test.ts} +19 -93
  493. package/src/models/agent-catalog.ts +174 -0
  494. package/src/models/agent-runtimes.ts +201 -0
  495. package/src/models/capability-ledger.test.ts +84 -0
  496. package/src/{fast-tier.test.ts → models/fast-tier.test.ts} +7 -18
  497. package/src/models/fast-tier.ts +36 -0
  498. package/src/{model-order.test.ts → models/model-order.test.ts} +19 -40
  499. package/src/models/model-order.ts +163 -0
  500. package/src/{model-pins.test.ts → models/model-pins.test.ts} +12 -46
  501. package/src/models/model-pins.ts +57 -0
  502. package/src/models/model-roles.test.ts +38 -0
  503. package/src/models/model-roles.ts +180 -0
  504. package/src/{plan-pools.test.ts → models/plan-pools.test.ts} +6 -11
  505. package/src/models/plan-pools.ts +65 -0
  506. package/src/{prompt-complexity.test.ts → models/prompt-complexity.test.ts} +8 -60
  507. package/src/models/prompt-complexity.ts +215 -0
  508. package/src/{provider-specs.test.ts → models/provider-specs.test.ts} +18 -47
  509. package/src/models/provider-specs.ts +272 -0
  510. package/src/policy/approvals-execution.ts +58 -0
  511. package/src/{batch-runs.test.ts → policy/batch-runs.test.ts} +4 -20
  512. package/src/policy/batch-runs.ts +137 -0
  513. package/src/policy/capability-secrets.ts +5 -0
  514. package/src/{card-status.ts → policy/card-status.ts} +11 -26
  515. package/src/{command-classes.test.ts → policy/command-classes.test.ts} +11 -118
  516. package/src/policy/command-classes.ts +395 -0
  517. package/src/policy/command-run.ts +65 -0
  518. package/src/policy/control-scopes.ts +38 -0
  519. package/src/{credential-material.test.ts → policy/credential-material.test.ts} +4 -26
  520. package/src/policy/credential-material.ts +91 -0
  521. package/src/policy/needs-action.ts +5 -0
  522. package/src/policy/output-fields.ts +86 -0
  523. package/src/policy/overlay-lint.ts +100 -0
  524. package/src/{owner-ticket.test.ts → policy/owner-ticket.test.ts} +1 -1
  525. package/src/{owner-ticket.ts → policy/owner-ticket.ts} +9 -31
  526. package/src/policy/safety-policy.test.ts +84 -0
  527. package/src/policy/safety-policy.ts +142 -0
  528. package/src/policy/search-globs.ts +60 -0
  529. package/src/protocol/container-requirements.test.ts +72 -0
  530. package/src/protocol/container-requirements.ts +58 -0
  531. package/src/protocol/host-protocol.ts +29 -0
  532. package/src/protocol/ingress-contract.ts +103 -0
  533. package/src/{ingress-protocol.test.ts → protocol/ingress-protocol.test.ts} +25 -90
  534. package/src/protocol/ingress-protocol.ts +441 -0
  535. package/src/protocol/listener-protocol.ts +75 -0
  536. package/src/{peer-dial.test.ts → protocol/peer-dial.test.ts} +52 -1
  537. package/src/protocol/peer-dial.ts +207 -0
  538. package/src/{peer-mcp-server.ts → protocol/peer-mcp-server.ts} +16 -41
  539. package/src/protocol/request-id.ts +5 -0
  540. package/src/{routes.test.ts → protocol/routes.test.ts} +14 -22
  541. package/src/protocol/routes.ts +159 -0
  542. package/src/protocol/runner-protocol.ts +197 -0
  543. package/src/protocol/terminal-protocol.ts +13 -0
  544. package/src/protocol/webext-links.ts +50 -0
  545. package/src/protocol/webext-protocol.ts +24 -0
  546. package/src/schemas/activity.ts +22 -30
  547. package/src/schemas/agent.ts +130 -238
  548. package/src/schemas/agents.ts +165 -483
  549. package/src/schemas/approvals.ts +23 -71
  550. package/src/schemas/automations.ts +142 -250
  551. package/src/schemas/capabilities.ts +127 -414
  552. package/src/schemas/ci.ts +56 -108
  553. package/src/schemas/codebase-health.ts +7 -11
  554. package/src/schemas/devices.ts +98 -321
  555. package/src/schemas/engines.ts +16 -44
  556. package/src/schemas/environment.ts +41 -91
  557. package/src/schemas/exit.ts +24 -81
  558. package/src/schemas/extension-updates.ts +42 -87
  559. package/src/schemas/git-history.ts +30 -84
  560. package/src/schemas/git.ts +141 -256
  561. package/src/schemas/history.ts +14 -40
  562. package/src/schemas/hosts.ts +9 -15
  563. package/src/schemas/inventory.ts +8 -10
  564. package/src/schemas/issues.ts +66 -134
  565. package/src/schemas/logs.ts +15 -34
  566. package/src/schemas/loops.ts +46 -163
  567. package/src/schemas/maintenance.ts +47 -172
  568. package/src/schemas/panels.ts +20 -45
  569. package/src/schemas/personas.ts +50 -200
  570. package/src/schemas/plan-limits.ts +58 -197
  571. package/src/schemas/ports.ts +14 -32
  572. package/src/schemas/provider-oauth.ts +23 -76
  573. package/src/schemas/provider-subscriptions.ts +4 -13
  574. package/src/schemas/public.ts +4 -15
  575. package/src/schemas/push.ts +8 -36
  576. package/src/schemas/secrets.ts +20 -64
  577. package/src/schemas/settings.ts +175 -600
  578. package/src/schemas/share.ts +14 -32
  579. package/src/schemas/shared.ts +14 -13
  580. package/src/schemas/system.ts +46 -78
  581. package/src/schemas/terminal.ts +41 -120
  582. package/src/schemas/usage.ts +44 -233
  583. package/src/schemas/version-seam.test.ts +9 -26
  584. package/src/schemas/vpn.ts +27 -64
  585. package/src/schemas/webext.ts +22 -53
  586. package/src/schemas/workflows.ts +57 -183
  587. package/src/schemas/workspace-repos.ts +12 -24
  588. package/src/schemas/workspace-search.ts +17 -35
  589. package/src/schemas/workspace-setup.ts +4 -11
  590. package/src/schemas/workspace-tree.ts +32 -91
  591. package/src/state/arrival.ts +109 -0
  592. package/src/state/contract-lock.test.ts +17 -0
  593. package/src/state/contract-lock.ts +49 -0
  594. package/src/state/definition.ts +143 -0
  595. package/src/state/history-state.ts +103 -0
  596. package/src/{runtime-state.test.ts → state/runtime-state.test.ts} +3 -10
  597. package/src/state/runtime-state.ts +62 -0
  598. package/src/state/starter.ts +5 -0
  599. package/src/state/state-portability.ts +27 -0
  600. package/src/state/versions.ts +26 -0
  601. package/src/{workspace-state.test.ts → state/workspace-state.test.ts} +65 -172
  602. package/src/state/workspace-state.ts +669 -0
  603. package/src/{documents.test.ts → text/documents.test.ts} +1 -1
  604. package/src/text/documents.ts +42 -0
  605. package/src/text/embed.ts +132 -0
  606. package/src/text/mentions.ts +21 -0
  607. package/src/text/model-answer.ts +9 -0
  608. package/src/text/path-refs.ts +39 -0
  609. package/src/text/shell-regions.ts +224 -0
  610. package/src/{title.test.ts → text/title.test.ts} +13 -32
  611. package/src/text/title.ts +202 -0
  612. package/src/{transcript-fold.test.ts → text/transcript-fold.test.ts} +5 -83
  613. package/src/{transcript-fold.ts → text/transcript-fold.ts} +65 -170
  614. package/src/text/whisper.test.ts +19 -0
  615. package/src/text/whisper.ts +17 -0
  616. package/src/{workflow-faults.test.ts → text/workflow-faults.test.ts} +6 -24
  617. package/src/{workflow-faults.ts → text/workflow-faults.ts} +20 -60
  618. package/dist/agent-catalog.d.ts.map +0 -1
  619. package/dist/agent-catalog.js.map +0 -1
  620. package/dist/agent-runtimes.d.ts.map +0 -1
  621. package/dist/agent-runtimes.js.map +0 -1
  622. package/dist/approvals-execution.d.ts.map +0 -1
  623. package/dist/approvals-execution.js.map +0 -1
  624. package/dist/arrival.d.ts.map +0 -1
  625. package/dist/arrival.js.map +0 -1
  626. package/dist/batch-runs.d.ts.map +0 -1
  627. package/dist/batch-runs.js.map +0 -1
  628. package/dist/capability-env.d.ts.map +0 -1
  629. package/dist/capability-env.js.map +0 -1
  630. package/dist/capability-secrets.d.ts.map +0 -1
  631. package/dist/capability-secrets.js.map +0 -1
  632. package/dist/card-status.d.ts.map +0 -1
  633. package/dist/card-status.js.map +0 -1
  634. package/dist/command-classes.d.ts.map +0 -1
  635. package/dist/command-classes.js.map +0 -1
  636. package/dist/command-run.d.ts.map +0 -1
  637. package/dist/command-run.js.map +0 -1
  638. package/dist/contract-lock.d.ts.map +0 -1
  639. package/dist/contract-lock.js.map +0 -1
  640. package/dist/conversation-ids.d.ts +0 -4
  641. package/dist/conversation-ids.d.ts.map +0 -1
  642. package/dist/conversation-ids.js.map +0 -1
  643. package/dist/credential-material.d.ts.map +0 -1
  644. package/dist/credential-material.js.map +0 -1
  645. package/dist/definition.d.ts.map +0 -1
  646. package/dist/definition.js.map +0 -1
  647. package/dist/documents.d.ts.map +0 -1
  648. package/dist/documents.js.map +0 -1
  649. package/dist/embed.d.ts.map +0 -1
  650. package/dist/embed.js.map +0 -1
  651. package/dist/events.d.ts +0 -4336
  652. package/dist/events.d.ts.map +0 -1
  653. package/dist/events.js +0 -725
  654. package/dist/events.js.map +0 -1
  655. package/dist/fast-tier.d.ts.map +0 -1
  656. package/dist/fast-tier.js.map +0 -1
  657. package/dist/history-state.d.ts.map +0 -1
  658. package/dist/history-state.js.map +0 -1
  659. package/dist/host-protocol.d.ts.map +0 -1
  660. package/dist/host-protocol.js.map +0 -1
  661. package/dist/hostnames.d.ts.map +0 -1
  662. package/dist/hostnames.js.map +0 -1
  663. package/dist/ingress-contract.d.ts.map +0 -1
  664. package/dist/ingress-contract.js.map +0 -1
  665. package/dist/ingress-protocol.d.ts.map +0 -1
  666. package/dist/ingress-protocol.js.map +0 -1
  667. package/dist/listener-protocol.d.ts.map +0 -1
  668. package/dist/listener-protocol.js.map +0 -1
  669. package/dist/mentions.d.ts.map +0 -1
  670. package/dist/mentions.js.map +0 -1
  671. package/dist/model-order.d.ts.map +0 -1
  672. package/dist/model-order.js.map +0 -1
  673. package/dist/model-pins.d.ts.map +0 -1
  674. package/dist/model-pins.js.map +0 -1
  675. package/dist/model-roles.d.ts.map +0 -1
  676. package/dist/model-roles.js.map +0 -1
  677. package/dist/needs-action.d.ts.map +0 -1
  678. package/dist/needs-action.js.map +0 -1
  679. package/dist/output-fields.d.ts.map +0 -1
  680. package/dist/output-fields.js.map +0 -1
  681. package/dist/overlay-lint.d.ts.map +0 -1
  682. package/dist/overlay-lint.js.map +0 -1
  683. package/dist/owner-ticket.d.ts.map +0 -1
  684. package/dist/owner-ticket.js.map +0 -1
  685. package/dist/path-refs.d.ts.map +0 -1
  686. package/dist/path-refs.js.map +0 -1
  687. package/dist/peer-dial.d.ts.map +0 -1
  688. package/dist/peer-dial.js.map +0 -1
  689. package/dist/peer-mcp-server.d.ts.map +0 -1
  690. package/dist/peer-mcp-server.js.map +0 -1
  691. package/dist/plan-pools.d.ts.map +0 -1
  692. package/dist/plan-pools.js.map +0 -1
  693. package/dist/prompt-complexity.d.ts.map +0 -1
  694. package/dist/prompt-complexity.js.map +0 -1
  695. package/dist/provider-specs.d.ts.map +0 -1
  696. package/dist/provider-specs.js.map +0 -1
  697. package/dist/request-id.d.ts.map +0 -1
  698. package/dist/request-id.js.map +0 -1
  699. package/dist/routes.d.ts.map +0 -1
  700. package/dist/routes.js.map +0 -1
  701. package/dist/runner-protocol.d.ts.map +0 -1
  702. package/dist/runner-protocol.js.map +0 -1
  703. package/dist/runtime-state.d.ts.map +0 -1
  704. package/dist/runtime-state.js.map +0 -1
  705. package/dist/safety-policy.d.ts.map +0 -1
  706. package/dist/safety-policy.js.map +0 -1
  707. package/dist/search-globs.d.ts.map +0 -1
  708. package/dist/search-globs.js.map +0 -1
  709. package/dist/session-names.d.ts.map +0 -1
  710. package/dist/session-names.js.map +0 -1
  711. package/dist/share-paths.d.ts.map +0 -1
  712. package/dist/share-paths.js.map +0 -1
  713. package/dist/shell-regions.d.ts.map +0 -1
  714. package/dist/shell-regions.js.map +0 -1
  715. package/dist/sse.d.ts.map +0 -1
  716. package/dist/sse.js.map +0 -1
  717. package/dist/starter.d.ts.map +0 -1
  718. package/dist/starter.js.map +0 -1
  719. package/dist/state-portability.d.ts.map +0 -1
  720. package/dist/state-portability.js.map +0 -1
  721. package/dist/terminal-protocol.d.ts.map +0 -1
  722. package/dist/terminal-protocol.js.map +0 -1
  723. package/dist/title.d.ts.map +0 -1
  724. package/dist/title.js.map +0 -1
  725. package/dist/transcript-fold.d.ts.map +0 -1
  726. package/dist/transcript-fold.js.map +0 -1
  727. package/dist/tunnel-ids.d.ts.map +0 -1
  728. package/dist/tunnel-ids.js.map +0 -1
  729. package/dist/versions.d.ts.map +0 -1
  730. package/dist/versions.js.map +0 -1
  731. package/dist/webext-links.d.ts.map +0 -1
  732. package/dist/webext-links.js.map +0 -1
  733. package/dist/webext-protocol.d.ts.map +0 -1
  734. package/dist/webext-protocol.js.map +0 -1
  735. package/dist/workflow-faults.d.ts.map +0 -1
  736. package/dist/workflow-faults.js.map +0 -1
  737. package/dist/workspace-state.d.ts.map +0 -1
  738. package/dist/workspace-state.js.map +0 -1
  739. package/src/agent-catalog.ts +0 -316
  740. package/src/agent-runtimes.ts +0 -419
  741. package/src/approvals-execution.ts +0 -96
  742. package/src/arrival.ts +0 -160
  743. package/src/batch-runs.ts +0 -188
  744. package/src/capability-ledger.test.ts +0 -140
  745. package/src/capability-secrets.ts +0 -20
  746. package/src/command-classes.ts +0 -617
  747. package/src/command-run.ts +0 -78
  748. package/src/contract-lock.test.ts +0 -23
  749. package/src/contract-lock.ts +0 -66
  750. package/src/conversation-ids.ts +0 -207
  751. package/src/credential-material.ts +0 -181
  752. package/src/definition.ts +0 -207
  753. package/src/documents.ts +0 -67
  754. package/src/embed.ts +0 -164
  755. package/src/events.ts +0 -1870
  756. package/src/fast-tier.ts +0 -72
  757. package/src/history-state.ts +0 -174
  758. package/src/host-protocol.ts +0 -36
  759. package/src/hostnames.ts +0 -180
  760. package/src/ingress-contract.ts +0 -157
  761. package/src/ingress-protocol.ts +0 -625
  762. package/src/listener-protocol.ts +0 -96
  763. package/src/mentions.ts +0 -25
  764. package/src/model-order.ts +0 -262
  765. package/src/model-pins.ts +0 -132
  766. package/src/model-roles.test.ts +0 -52
  767. package/src/model-roles.ts +0 -320
  768. package/src/needs-action.ts +0 -14
  769. package/src/output-fields.ts +0 -111
  770. package/src/overlay-lint.ts +0 -116
  771. package/src/path-refs.ts +0 -59
  772. package/src/peer-dial.ts +0 -163
  773. package/src/plan-pools.ts +0 -92
  774. package/src/prompt-complexity.ts +0 -334
  775. package/src/provider-specs.ts +0 -432
  776. package/src/request-id.ts +0 -41
  777. package/src/routes.ts +0 -219
  778. package/src/runner-protocol.ts +0 -239
  779. package/src/runtime-state.ts +0 -140
  780. package/src/safety-policy.test.ts +0 -88
  781. package/src/safety-policy.ts +0 -258
  782. package/src/search-globs.ts +0 -76
  783. package/src/session-names.ts +0 -44
  784. package/src/share-paths.ts +0 -68
  785. package/src/shell-regions.ts +0 -289
  786. package/src/starter.ts +0 -13
  787. package/src/state-portability.ts +0 -56
  788. package/src/terminal-protocol.ts +0 -16
  789. package/src/title.ts +0 -267
  790. package/src/tunnel-ids.ts +0 -57
  791. package/src/versions.ts +0 -48
  792. package/src/webext-links.ts +0 -90
  793. package/src/webext-protocol.ts +0 -27
  794. package/src/workspace-state.ts +0 -1090
  795. /package/dist/{hostnames.d.ts → ids/hostnames.d.ts} +0 -0
  796. /package/dist/{hostnames.js → ids/hostnames.js} +0 -0
  797. /package/dist/{session-names.d.ts → ids/session-names.d.ts} +0 -0
  798. /package/dist/{session-names.js → ids/session-names.js} +0 -0
  799. /package/dist/{share-paths.d.ts → ids/share-paths.d.ts} +0 -0
  800. /package/dist/{share-paths.js → ids/share-paths.js} +0 -0
  801. /package/dist/{agent-catalog.js → models/agent-catalog.js} +0 -0
  802. /package/dist/{agent-runtimes.d.ts → models/agent-runtimes.d.ts} +0 -0
  803. /package/dist/{agent-runtimes.js → models/agent-runtimes.js} +0 -0
  804. /package/dist/{fast-tier.js → models/fast-tier.js} +0 -0
  805. /package/dist/{model-order.d.ts → models/model-order.d.ts} +0 -0
  806. /package/dist/{model-order.js → models/model-order.js} +0 -0
  807. /package/dist/{model-pins.js → models/model-pins.js} +0 -0
  808. /package/dist/{plan-pools.js → models/plan-pools.js} +0 -0
  809. /package/dist/{prompt-complexity.d.ts → models/prompt-complexity.d.ts} +0 -0
  810. /package/dist/{prompt-complexity.js → models/prompt-complexity.js} +0 -0
  811. /package/dist/{provider-specs.d.ts → models/provider-specs.d.ts} +0 -0
  812. /package/dist/{provider-specs.js → models/provider-specs.js} +0 -0
  813. /package/dist/{approvals-execution.d.ts → policy/approvals-execution.d.ts} +0 -0
  814. /package/dist/{approvals-execution.js → policy/approvals-execution.js} +0 -0
  815. /package/dist/{capability-env.d.ts → policy/capability-env.d.ts} +0 -0
  816. /package/dist/{capability-env.js → policy/capability-env.js} +0 -0
  817. /package/dist/{capability-secrets.d.ts → policy/capability-secrets.d.ts} +0 -0
  818. /package/dist/{capability-secrets.js → policy/capability-secrets.js} +0 -0
  819. /package/dist/{command-run.js → policy/command-run.js} +0 -0
  820. /package/dist/{credential-material.d.ts → policy/credential-material.d.ts} +0 -0
  821. /package/dist/{credential-material.js → policy/credential-material.js} +0 -0
  822. /package/dist/{needs-action.d.ts → policy/needs-action.d.ts} +0 -0
  823. /package/dist/{needs-action.js → policy/needs-action.js} +0 -0
  824. /package/dist/{output-fields.d.ts → policy/output-fields.d.ts} +0 -0
  825. /package/dist/{output-fields.js → policy/output-fields.js} +0 -0
  826. /package/dist/{overlay-lint.d.ts → policy/overlay-lint.d.ts} +0 -0
  827. /package/dist/{overlay-lint.js → policy/overlay-lint.js} +0 -0
  828. /package/dist/{owner-ticket.d.ts → policy/owner-ticket.d.ts} +0 -0
  829. /package/dist/{search-globs.d.ts → policy/search-globs.d.ts} +0 -0
  830. /package/dist/{search-globs.js → policy/search-globs.js} +0 -0
  831. /package/dist/{ingress-contract.d.ts → protocol/ingress-contract.d.ts} +0 -0
  832. /package/dist/{ingress-protocol.d.ts → protocol/ingress-protocol.d.ts} +0 -0
  833. /package/dist/{ingress-protocol.js → protocol/ingress-protocol.js} +0 -0
  834. /package/dist/{listener-protocol.d.ts → protocol/listener-protocol.d.ts} +0 -0
  835. /package/dist/{peer-mcp-server.d.ts → protocol/peer-mcp-server.d.ts} +0 -0
  836. /package/dist/{peer-mcp-server.js → protocol/peer-mcp-server.js} +0 -0
  837. /package/dist/{request-id.d.ts → protocol/request-id.d.ts} +0 -0
  838. /package/dist/{request-id.js → protocol/request-id.js} +0 -0
  839. /package/dist/{routes.d.ts → protocol/routes.d.ts} +0 -0
  840. /package/dist/{routes.js → protocol/routes.js} +0 -0
  841. /package/dist/{sse.d.ts → protocol/sse.d.ts} +0 -0
  842. /package/dist/{sse.js → protocol/sse.js} +0 -0
  843. /package/dist/{terminal-protocol.js → protocol/terminal-protocol.js} +0 -0
  844. /package/dist/{webext-links.d.ts → protocol/webext-links.d.ts} +0 -0
  845. /package/dist/{webext-links.js → protocol/webext-links.js} +0 -0
  846. /package/dist/{arrival.d.ts → state/arrival.d.ts} +0 -0
  847. /package/dist/{contract-lock.d.ts → state/contract-lock.d.ts} +0 -0
  848. /package/dist/{history-state.d.ts → state/history-state.d.ts} +0 -0
  849. /package/dist/{runtime-state.d.ts → state/runtime-state.d.ts} +0 -0
  850. /package/dist/{runtime-state.js → state/runtime-state.js} +0 -0
  851. /package/dist/{starter.d.ts → state/starter.d.ts} +0 -0
  852. /package/dist/{starter.js → state/starter.js} +0 -0
  853. /package/dist/{state-portability.d.ts → state/state-portability.d.ts} +0 -0
  854. /package/dist/{state-portability.js → state/state-portability.js} +0 -0
  855. /package/dist/{versions.d.ts → state/versions.d.ts} +0 -0
  856. /package/dist/{versions.js → state/versions.js} +0 -0
  857. /package/dist/{embed.d.ts → text/embed.d.ts} +0 -0
  858. /package/dist/{embed.js → text/embed.js} +0 -0
  859. /package/dist/{mentions.d.ts → text/mentions.d.ts} +0 -0
  860. /package/dist/{mentions.js → text/mentions.js} +0 -0
  861. /package/dist/{path-refs.d.ts → text/path-refs.d.ts} +0 -0
  862. /package/dist/{path-refs.js → text/path-refs.js} +0 -0
  863. /package/dist/{shell-regions.js → text/shell-regions.js} +0 -0
  864. /package/dist/{title.d.ts → text/title.d.ts} +0 -0
  865. /package/dist/{title.js → text/title.js} +0 -0
  866. /package/src/{hostnames.test.ts → ids/hostnames.test.ts} +0 -0
  867. /package/src/{share-paths.test.ts → ids/share-paths.test.ts} +0 -0
  868. /package/src/{capability-env.ts → policy/capability-env.ts} +0 -0
  869. /package/src/{overlay-lint.test.ts → policy/overlay-lint.test.ts} +0 -0
  870. /package/src/{search-globs.test.ts → policy/search-globs.test.ts} +0 -0
  871. /package/src/{ingress-contract.test.ts → protocol/ingress-contract.test.ts} +0 -0
  872. /package/src/{peer-mcp-server.test.ts → protocol/peer-mcp-server.test.ts} +0 -0
  873. /package/src/{sse.ts → protocol/sse.ts} +0 -0
  874. /package/src/{versions.test.ts → state/versions.test.ts} +0 -0
  875. /package/src/{embed.test.ts → text/embed.test.ts} +0 -0
  876. /package/src/{mentions.test.ts → text/mentions.test.ts} +0 -0
  877. /package/src/{path-refs.test.ts → text/path-refs.test.ts} +0 -0
package/src/arrival.ts DELETED
@@ -1,160 +0,0 @@
1
- import { z } from "zod";
2
- import { NeedsActionSchema } from "./needs-action.js";
3
-
4
- /* AN ARRIVAL: something coming INTO this sandbox, whatever it came from and whatever it is made of.
5
- *
6
- * There used to be three of these, each with its own schemas, its own routes and its own card, and the split
7
- * was by ARTIFACT: a `sandbox.toml` had one surface, an environment bundle a second, a foreign assistant's
8
- * home directory a third. That is the wrong axis. The owner's question is never "which of your three import
9
- * features is this" — it is "I have a thing, take what is safe from it" — and the three artifacts answer it
10
- * with the same four moves: read the thing, show what would land, take the ticked rows, say what is left.
11
- *
12
- * So there is ONE pipeline, and the artifact is a parser:
13
- *
14
- * source → plan (items the owner ticks, refused lines, needsAction said BEFORE anything writes)
15
- * → apply (the ticked ids, against a plan RE-DERIVED from the held bytes)
16
- * → report (what landed, what did not and why, what still needs a person)
17
- *
18
- * WHAT THE MERGE FIXED, beyond three of everything: the bundle door was the only one that WROTE ON FILE PICK.
19
- * It is also the most destructive of the three — a bundle lands over a workspace rather than beside it — so
20
- * the one arrival most deserving of a preview was the one without it. Sharing the pipeline is what gave it
21
- * one, and what makes "untick the 6 GB monorepo" a thing an owner can say to a bundle at all.
22
- *
23
- * THE OUTBOUND HALF IS NOT HERE. Deriving a definition, packing a bundle and publishing the workspace repo
24
- * live on definition.ts and schemas/environment.ts, because they answer the opposite question and share no
25
- * shape with this one. */
26
-
27
- // Which of the four things this is. The two assistants are separate members rather than one "foreign": the
28
- // checklist badges the source by name, and an owner who packed a Hermes folder should read the word Hermes.
29
- export const ArrivalSourceSchema = z.enum(["definition", "bundle", "hermes", "openclaw"]);
30
- export type ArrivalSource = z.infer<typeof ArrivalSourceSchema>;
31
-
32
- // The subset a foreign assistant's home directory can be. Narrower than ArrivalSource on purpose: a connected
33
- // device is scanned for these two and never for a bundle, which is a file, not a setup.
34
- export const AssistantSourceSchema = z.enum(["hermes", "openclaw"]);
35
- export type AssistantSource = z.infer<typeof AssistantSourceSchema>;
36
-
37
- /* WHAT AN ITEM BECOMES HERE, not what it was there. The apply loop dispatches on this and the checklist
38
- * groups by it, so an owner reads "3 skills, 2 connections" rather than a foreign directory listing or a tar
39
- * table of contents. One enum across all four sources, which is what makes the union honest: a repository is
40
- * a `repo` whether it arrived as a remote to clone (definition) or as a git dir in a tar (bundle), and the
41
- * owner ticking it means the same thing either way. */
42
- export const ArrivalGroupSchema = z.enum([
43
- // The /work tree as a whole, cloned from the remote a definition's `[workspace]` names.
44
- "workspace",
45
- // One repository: cloned from its remote, or unpacked with its real git dir from a bundle.
46
- "repo",
47
- // Loose files landing in /work: a bundle's workspace bytes, an assistant's notes folder.
48
- "files",
49
- // Transcripts, checkpoint timelines, ledgers. Bundle-only — nothing else can reference them.
50
- "history",
51
- // The overlay Dockerfile.
52
- "environment",
53
- // One connection, landing unauthenticated unless its secret travelled.
54
- "capability",
55
- // The agent settings that differ from their defaults.
56
- "settings",
57
- // A merge into CLAUDE.md / AGENTS.md.
58
- "memory",
59
- "skill",
60
- "automation",
61
- // One credential VALUE, and the only group gated behind the apply's second consent.
62
- "secret",
63
- ]);
64
- export type ArrivalGroup = z.infer<typeof ArrivalGroupSchema>;
65
-
66
- /* ONE ROW OF THE CHECKLIST. Two flags rather than one, because the four sources fail an item for two
67
- * genuinely different reasons and collapsing them would lose the one the owner can act on:
68
- *
69
- * `applicable: false` the target already holds this, so it CANNOT be ticked. A definition and a bundle
70
- * land beside what is there, never over it, so an existing repo directory or
71
- * capability id greys its row and prints the reason.
72
- * `recommended: false` it can be ticked and the reader should look first. An adapter's judgment about a
73
- * server URL pointing at the old machine, or an env key that reads as tuning.
74
- *
75
- * A source that has no use for one of them fills it constantly: a definition recommends everything it can
76
- * apply, an assistant adapter refuses inside its own walk rather than emitting inapplicable rows. */
77
- export const ArrivalItemSchema = z.object({
78
- /* Deterministic and derived from the artifact ("repo:intentic", "skill:weather", "bundle:history"), which
79
- * is the whole reason the apply may re-derive: the ids the owner ticked name the same items in the
80
- * second derivation as in the one the browser rendered. */
81
- id: z.string(),
82
- group: ArrivalGroupSchema,
83
- // The checklist line, in plain words: "Repository intentic", "Skill, weather", "Workspace files".
84
- label: z.string(),
85
- detail: z.string().optional(),
86
- applicable: z.boolean(),
87
- // Why it cannot be ticked. Present exactly when `applicable` is false.
88
- reason: z.string().optional(),
89
- recommended: z.boolean(),
90
- /* Names of the secrets this row would store — never values. Non-empty rows only move when the apply
91
- * carries `includeSecrets`; the report names what stayed behind rather than pretending it landed. */
92
- secrets: z.array(z.string()),
93
- });
94
- export type ArrivalItem = z.infer<typeof ArrivalItemSchema>;
95
-
96
- export const ArrivalPlanSchema = z.object({
97
- source: ArrivalSourceSchema,
98
- /* Names the held artifact for the apply call. Minted per plan; a new plan replaces the held one, because
99
- * an owner changing their mind is the ordinary case and not a conflict. */
100
- token: z.string(),
101
- // What the artifact calls itself: a definition's `name`, a bundle's source sandbox. For the reader only.
102
- name: z.string().optional(),
103
- items: z.array(ArrivalItemSchema),
104
- /* Whether this artifact holds credential VALUES at all, which is what decides whether the apply's second
105
- * consent is even a question. A definition is false by construction (it carries names, never values); a
106
- * bundle is whatever its owner chose at export; an assistant's home directory is true whenever any row
107
- * names a secret. The card asks with a toggle only when this is true, so the ordinary arrival is not made
108
- * to answer a question about credentials that do not exist. */
109
- carriesSecrets: z.boolean(),
110
- // What the reader saw and will not offer at all: sessions, logs, pairing state, a tar entry this daemon
111
- // refuses to write. Listed rather than silent.
112
- refused: z.array(z.string()),
113
- // What is already known not to move mechanically, surfaced at PREVIEW time so the owner ticks with open
114
- // eyes and again on the report.
115
- needsAction: z.array(NeedsActionSchema),
116
- });
117
- export type ArrivalPlan = z.infer<typeof ArrivalPlanSchema>;
118
-
119
- export const ArrivalApplySchema = z.object({
120
- token: z.string(),
121
- // The ticked ids. Ids the re-derived plan does not contain are ignored rather than erroring: the artifact
122
- // is the truth, and a stale checklist must not block the items that still exist.
123
- items: z.array(z.string()),
124
- /* The owner's explicit consent to move credential VALUES, asked once, on the inbound side, for every
125
- * source. It used to be asked at EXPORT time for a bundle and at APPLY time for an assistant, which is
126
- * the same question in two places with two different answers about who is consenting to what. */
127
- includeSecrets: z.boolean(),
128
- });
129
- export type ArrivalApply = z.infer<typeof ArrivalApplySchema>;
130
-
131
- export const ArrivalReportSchema = z.object({
132
- applied: z.array(z.object({ id: z.string(), group: ArrivalGroupSchema, label: z.string() })),
133
- // Ticked and did not land, each with its reason. Distinct from `refused` and from inapplicable rows,
134
- // which were never attempted.
135
- failed: z.array(z.object({ id: z.string(), label: z.string(), error: z.string() })),
136
- refused: z.array(z.string()),
137
- needsAction: z.array(NeedsActionSchema),
138
- });
139
- export type ArrivalReport = z.infer<typeof ArrivalReportSchema>;
140
-
141
- /* ONE OF THE OWNER'S OWN DEVICES, as an arrival source that needs no packing at all: the daemon walks the
142
- * machine's home folder over the socket it already holds. Read on the card's first render for every enrolled
143
- * machine, so the offer appears before the owner has read a single instruction.
144
- *
145
- * `found` absent means "connected, and nothing to bring in from here", which is a real answer worth rendering
146
- * quietly rather than an error: the machine may simply not be the one the assistant runs on. */
147
- export const ArrivalHostSchema = z.object({
148
- id: z.string(),
149
- online: z.boolean(),
150
- found: AssistantSourceSchema.optional(),
151
- // Why this machine cannot be read right now, when it cannot: asleep, or its own refusal, in its words.
152
- detail: z.string().optional(),
153
- });
154
- export type ArrivalHost = z.infer<typeof ArrivalHostSchema>;
155
- export const ArrivalHostsSchema = z.object({ hosts: z.array(ArrivalHostSchema) });
156
-
157
- // Read a setup off a connected device instead of an upload. Answers with a plan exactly as the upload door
158
- // does; everything after this point is identical whichever door the arrival came through.
159
- export const ArrivalScanSchema = z.object({ host: z.string().min(1) });
160
- export type ArrivalScan = z.infer<typeof ArrivalScanSchema>;
package/src/batch-runs.ts DELETED
@@ -1,188 +0,0 @@
1
- import { STATE_DIR } from "@intentic/constants";
2
- import type { ModelRole } from "./model-roles.js";
3
-
4
- /* ONE BATCH RUN ENGINE, for every surface that fans an ISOLATED AGENT TURN out over a set of items and reads
5
- * the answers back off disk.
6
- *
7
- * Three packs had written this separately — acceptance (a run per story), maintenance (a run per chore, per
8
- * repository) and documentation (a run per package) — and the three copies agreed on every decision that
9
- * matters and drifted on every detail that does not: `SCAN_RUNS` was 10 in one and 30 in another, one minted
10
- * run ids with a per-process counter and one without (the one without could collide, and did, the moment a
11
- * surface started several runs inside a millisecond), and each spelled the reporting clause its own way, so an
12
- * agent's instructions for where to leave its answer depended on which screen started it.
13
- *
14
- * WHY THE CORE OWNS IT rather than one of them exporting it. A substrate is what other packs fire into, and a
15
- * pack can be switched off: a run engine that stops existing because somebody hid a screen is not an engine.
16
- * The reverse — a substrate living in one pack — is what produced the three copies, because reaching into
17
- * `acceptance` for a run id is a dependency no other pack wants and reinventing it is one afternoon.
18
- * `_extensions/README.md` states the rule; this is the second of the four substrates named there.
19
- *
20
- * WHAT A RUN IS, and the part that is load-bearing rather than incidental:
21
- *
22
- * • IT IS BACKED BY FILES, never by a store a pack owns. `run.json` is written before the first turn starts
23
- * and each agent writes its own result beside it. So a run survives archiving the fleet agents, discarding
24
- * them, closing the browser and rebuilding the image, and a browser that was shut when a turn finished picks
25
- * the answer up the next time it opens.
26
- * • ITS CONVERSATION IDS ARE DERIVED, so joining a run to the fleet is a filter over `GET /agents` rather than
27
- * bookkeeping that can drift. This is why none of these surfaces owns session machinery: the worktree, the
28
- * live status, the cost, the transcript and the `/agents/<id>` page all already exist.
29
- * • IT LIVES UNDER `.intentic`, which is outside every repo (the root repo excludes it) and is bound back in
30
- * SHARED for isolated turns, so an agent writing its result from inside its own worktree writes into the
31
- * same tree the browser reads: nothing to land, no git noise.
32
- *
33
- * The manifest and result SHAPES stay with the packs. A chore's outcome vocabulary and a story's criteria have
34
- * nothing to say to each other, and a substrate that tried to own both would be a union that grows a field per
35
- * screen. What is here is what all three do identically: where the files go, how the ids are made, how a
36
- * half-written file is survived, and what the agent is told about where to leave its answer. */
37
-
38
- /* WHERE ONE KIND OF RUN KEEPS ITS DIRECTORIES. Taken as the tail rather than composed from a pack id, because
39
- * the three existing layouts are not uniform and rewriting them would orphan every run already on disk:
40
- * acceptance keeps runs under `records/artifacts/acceptance`, maintenance under `records/chores/runs`. A path
41
- * is a fact about a tree that exists, not a naming opportunity. */
42
- export interface BatchRunKind {
43
- /* The directory holding this kind's run directories, workspace-relative, under the state dir. */
44
- readonly runsDir: string;
45
- /* The conversation-id prefix, two or three characters. Every conversation this kind starts carries it, so a
46
- * prefix filter over `GET /agents` is the join key and not merely a naming convention. */
47
- readonly prefix: string;
48
- /* How many runs deep anything that READS RESULTS goes. A bound on the walk, not on what can be run: only
49
- * recent runs carry news, and a workspace with hundreds of run directories must not spend a request per
50
- * item to render a list or light a badge. One number per kind, shared by every reader of that kind, so a
51
- * badge's idea of "recent" and a list's can never disagree. */
52
- readonly scanRuns: number;
53
- }
54
-
55
- /* The conversation id's own regex is `^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$` — it lands in branch names and in
56
- * paths — so this is a hard ceiling rather than a style choice. */
57
- const CONVERSATION_ID_MAX = 64;
58
-
59
- /* `r` + a base-36 millisecond, zero-padded, + a per-process counter: sortable, ~10 characters, and readable
60
- * enough to match a directory to a moment. The clock is taken from the caller so this stays pure and testable.
61
- *
62
- * THE PADDING IS WHAT MAKES "SORTABLE" TRUE. Both copies this replaces claimed it and neither had it: a base-36
63
- * number is shorter when it is smaller, so a plain `toString(36)` sorts `r1a` after `rzz` the moment two ids
64
- * straddle a digit boundary. Today's milliseconds are all eight digits so nothing has gone wrong yet, and
65
- * nothing will until 2059 — which is exactly the kind of latent boundary that is cheap to remove now and
66
- * expensive to find later. Padded to the same width, the ids on disk are the length they already were.
67
- *
68
- * THE COUNTER IS NOT OPTIONAL, the other drift worth naming. A surface that fans out over items can get away
69
- * without one, because its ids differ by item; a surface where one run IS one item cannot, and "run this chore
70
- * in every repository" starts several inside the same millisecond. Both kinds share this function, so the
71
- * safe answer is the only answer, and it costs the id one character. */
72
- const TIME_DIGITS = 8;
73
- let sequence = 0;
74
- export const batchRunIdAt = (epochMs: number): string => `r${epochMs.toString(36).padStart(TIME_DIGITS, `0`)}${(sequence++).toString(36)}`;
75
-
76
- /* The fleet conversation id for one item of one run, or for a run that is a single item (omit `item`).
77
- *
78
- * THE RUN ID SURVIVES TRUNCATION and the item is what gets cut, because the run id is how a card is attributed
79
- * back to its run: lose that and a finished turn belongs to nothing. Callers that fan out must already have
80
- * made their item slugs unique by suffixing, and the suffix sits at the end — exactly where the cut lands — so
81
- * uniqueness holds only while the cut leaves it. In practice nothing is close: slugs are capped at 40 and run
82
- * ids are ~10, well inside 64. A trailing separator left by the cut is trimmed, because `xt-r5k2-` is a
83
- * conversation id the regex above would refuse. */
84
- export const batchConversationId = (kind: BatchRunKind, runId: string, item?: string): string =>
85
- `${kind.prefix}-${runId}${item === undefined ? `` : `-${item}`}`.slice(0, CONVERSATION_ID_MAX).replace(/[-_]+$/u, ``);
86
-
87
- // Every conversation one kind starts, for the prefix filter over `GET /agents` that joins a run to the fleet.
88
- export const batchRunPrefix = (kind: BatchRunKind): string => `${kind.prefix}-`;
89
-
90
- // The directory holding one kind's run directories, workspace-relative. What a listing is asked for.
91
- export const batchRunsDir = (kind: BatchRunKind): string => `${STATE_DIR}/${kind.runsDir}`;
92
- export const batchRunDir = (kind: BatchRunKind, runId: string): string => `${batchRunsDir(kind)}/${runId}`;
93
- export const batchRunManifestPath = (kind: BatchRunKind, runId: string): string => `${batchRunDir(kind, runId)}/run.json`;
94
-
95
- /* Where one item of a run leaves its files. A run whose items are the run itself (`item` omitted) writes
96
- * straight into the run directory, which is what maintenance already does and what keeps its `result.json`
97
- * beside its `run.json` rather than one pointless level down. */
98
- export const batchItemDir = (kind: BatchRunKind, runId: string, item?: string): string =>
99
- item === undefined ? batchRunDir(kind, runId) : `${batchRunDir(kind, runId)}/${item}`;
100
- export const batchResultPath = (kind: BatchRunKind, runId: string, item?: string): string => `${batchItemDir(kind, runId, item)}/result.json`;
101
-
102
- /* A FILE THAT IS HALF-WRITTEN, or written by a build whose shape has since changed, IS SKIPPED rather than
103
- * thrown on. One bad directory must not blank a whole history, and a run directory is written by an agent
104
- * mid-turn, so reading one that is not finished being written is ordinary rather than exceptional.
105
- *
106
- * The caller supplies the shape check, because the shape is the pack's. This owns only the two failure modes
107
- * every reader shares: text that is not JSON, and JSON that is not an object. */
108
- export const parseBatchFile = <T>(text: string, shape: (value: Record<string, unknown>) => T | undefined): T | undefined => {
109
- try {
110
- const parsed: unknown = JSON.parse(text);
111
- return typeof parsed !== `object` || parsed === null ? undefined : shape(parsed as Record<string, unknown>);
112
- } catch {
113
- return undefined;
114
- }
115
- };
116
-
117
- /* WHAT THE AGENT IS TOLD ABOUT WHERE TO LEAVE ITS ANSWER, appended to whatever prompt the pack composed.
118
- *
119
- * WHY THE AGENT WRITES A FILE AND NOT A ROUTE. A ledger is a daemon route, and reaching it from a turn would
120
- * mean handing the agent a token and a client it needs for nothing else. Writing one small JSON file is
121
- * something every agent can already do, and the surface promotes finished runs when it next sees them. The
122
- * promotion is idempotent and re-runs on every poll, so nothing is lost by not being watched.
123
- *
124
- * `outcomes` is the pack's vocabulary and is spelled out in full, because a closed set is what lets a surface
125
- * debounce without hiding anything: an agent that verified some findings and concluded they were false
126
- * positives has to be able to SAY so, or the next poll starts the same turn again forever. Pass the
127
- * explanations with the words — a model that reads an outcome as an admission of having done nothing useful
128
- * will avoid it and report something else, and the surface never goes quiet.
129
- *
130
- * The closing line is not decoration. A turn that concludes there was nothing to do and writes no file is
131
- * indistinguishable from a turn that died, and the surface has to show the second as an unknown. */
132
- export const batchReportingClause = (params: {
133
- readonly path: string;
134
- readonly fields: string;
135
- readonly outcomes?: string | undefined;
136
- }): string =>
137
- [
138
- `When you are finished, write your conclusion to ${params.path} as JSON:`,
139
- params.fields,
140
- ...(params.outcomes === undefined ? [] : [params.outcomes]),
141
- `Write that file even if you conclude there was nothing to do.`,
142
- ].join(`\n\n`);
143
-
144
- /* THE BODY OF THE `POST /agent` THAT STARTS ONE ITEM, so the flag combination that makes a run a run is decided
145
- * once. `isolated: true` with a conversationId is the shape (and the only shape) that registers a fleet entry,
146
- * which is why none of these packs owns session machinery; `unattended: true` is what the turn IS — started by
147
- * a row rather than by a person at a composer — and `runRole` is which of those rows, so the daemon answers
148
- * with the owner's list FOR THAT JOB (model-roles.ts) unless the caller pinned a model on the row's caret, in
149
- * which case the pick rides along and the daemon's fill step leaves it alone.
150
- *
151
- * PERMISSIONS AND ISOLATION ARE THE CALLER'S, deliberately. They are the two decisions that differ by kind and
152
- * both are about safety rather than plumbing: an acceptance test that parks on a permission card is a test that
153
- * never finishes, so that surface trades the prompt away; a maintenance chore is different in kind — nobody is
154
- * waiting on it, it may take until tomorrow, and a sweep that can answer its own permission prompts is exactly
155
- * the thing an owner would want to have been asked about. A default here would decide that for both. */
156
- export interface BatchTurnPick {
157
- readonly provider: string;
158
- readonly model?: string | undefined;
159
- readonly effort?: string | undefined;
160
- }
161
-
162
- export const batchTurnBody = (params: {
163
- readonly prompt: string;
164
- readonly title: string;
165
- readonly conversationId: string;
166
- /* WHICH JOB THIS IS, and therefore which of the owner's model lists pays for it (model-roles.ts). Required
167
- * rather than optional, because every pack that reaches this function is one of the named roles and a
168
- * default here would silently hand a new one somebody else's budget — which is exactly how one "agent runs"
169
- * tier came to cover a documentation sweep and a red production pipeline. */
170
- readonly role: ModelRole;
171
- readonly pick?: BatchTurnPick | undefined;
172
- readonly extra?: Readonly<Record<string, unknown>> | undefined;
173
- }): Record<string, unknown> => ({
174
- prompt: params.prompt,
175
- title: params.title.slice(0, 80),
176
- conversationId: params.conversationId,
177
- isolated: true,
178
- unattended: true,
179
- runRole: params.role,
180
- ...(params.pick === undefined
181
- ? {}
182
- : {
183
- agent: params.pick.provider,
184
- ...(params.pick.model === undefined ? {} : { model: params.pick.model }),
185
- ...(params.pick.effort === undefined ? {} : { effort: params.pick.effort }),
186
- }),
187
- ...params.extra,
188
- });
@@ -1,140 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { capabilitiesOf, limitationsOf } from "./agent-catalog.js";
3
- import type { AgentCapabilities } from "./agent-runtimes.js";
4
-
5
- /* THE CAPABILITY LEDGER, which claims in the record are backed by machinery, and which by prose.
6
- *
7
- * agent-catalog.test.ts asks two other questions: does every provider/harness pair HAVE a row, and does every
8
- * axis a record can lack have words for it. A row can pass both and still be a lie. The ability is declared,
9
- * the sentence renders in the picker's footer, and nothing anywhere behaves differently, so the day the
10
- * runtime gains the ability (or loses it), the declaration keeps its old value and the footer keeps telling the
11
- * user something that stopped being true. Over-promising is the direction that hurts: told a runtime can be
12
- * steered, someone types a mid-turn correction into a queue that does not exist.
13
- *
14
- * The record's header already states the rule: "a capability is listed here only if something READS it". This
15
- * is the rule with teeth. Every field is ENFORCED (a seam opens or closes on it, and the entry cites where) or
16
- * DESCRIPTIVE (it gates nothing; its whole job is that one sentence). `Record<keyof AgentCapabilities, …>`
17
- * makes the split exhaustive at COMPILE time: a field added to the interface without an entry here does not
18
- * typecheck, and neither does an entry for a field that no longer exists. There is no way to add an ability and
19
- * leave the question of what backs it unanswered.
20
- *
21
- * WHAT THIS DOES NOT DO, deliberately: prove an ENFORCED gate exists. Those gates live in the daemon and the
22
- * web, which sit ABOVE this package and must not be imported back into it. So an enforced entry's citation is a
23
- * comment a reader checks, and the honest reading is "someone verified this once", not "CI verifies it". The
24
- * descriptive half IS machine-checked below, because it can be: those claims reach the user through
25
- * `limitationsOf`, which is right here.
26
- *
27
- * Moving a field between the two sets belongs in the same change that adds or removes its gate. */
28
-
29
- type Backing = "enforced" | "descriptive";
30
-
31
- const LEDGER: Record<keyof AgentCapabilities, Backing> = {
32
- // adapter-registry.ts maps runtime → the adapter that serves the turn; getting it wrong runs the turn on
33
- // the wrong loop entirely. Also keys the daemon's per-runtime health probes (useSandboxVersion.ts).
34
- runtime: "enforced",
35
- // conversation.ts's `steerable`: the composer offers mid-turn injection only where there is a queue.
36
- steering: "enforced",
37
- // turn-plan.ts forwards `permissionMode` only under "modes" (bar plan); modesFor/clampMode build the
38
- // composer's mode list from it, so a plan-only runtime is offered two postures rather than four names.
39
- permissions: "enforced",
40
- // turn-plan.ts opens the tool seam on "full" and attaches the setup notice when it is anything less.
41
- mcp: "enforced",
42
- // turn-plan.ts drops `effort` unless the runtime takes it; ComposerEffort.vue renders no scale without it.
43
- effort: "enforced",
44
- // turn-plan.ts drops `fast` unless the loop can ask for it. The one axis with no sentence of its own: a
45
- // record alone cannot tell the truth about it (a translator-routed turn reads true and still cannot go
46
- // fast), so the user-facing answer comes from fastAllowed instead.
47
- fastMode: "enforced",
48
- // turn-plan.ts tells a "cwd" turn where its worktree is, because an absolute /work path still reaches the
49
- // shared checkout there. Under "namespace" the mount does it and the note would be noise.
50
- isolation: "enforced",
51
- /* system-prompt.ts composes a turn's standing instructions AGAINST this value: a replacement where one may
52
- * be sent, an addition where only that is possible, and the user-message door for the persona note where
53
- * there is no system seam at all, and each adapter reads the field the composition set (codex-agent.ts's
54
- * two config keys, grok-agent.ts's per-message `system`). It is also the one axis whose absence was the bug
55
- * that produced it: before the field existed, every runtime was composed for as though it were the Claude
56
- * Code loop, and five of the six silently dropped the owner's prompt. */
57
- instructions: "enforced",
58
- // turn-plan.ts reads this before an opening turn: a "prompt" runtime receives the generated catalogue as
59
- // a typed note, while a "native" runtime is left to its own loader so the same list never arrives twice.
60
- skillDiscovery: "enforced",
61
- // turn-plan.ts (honoured) plans the JS backend only where "js" is declared, so a runtime without it is
62
- // handed no `jsExecution` and mounts no Code tool: the same drop-what-you-can't-honour rule as `effort`.
63
- execution: "enforced",
64
- /* turn-plan.ts (honoured) carries this onto every request and guard/turn-gate.ts DERIVES the gate's shape
65
- * from it: "none" gets no consult and a permanently-set taint bit, "refuse-only" cannot park so a hold
66
- * refuses, the other two park on a card. So a row that lies about itself changes how its turns behave.
67
- * It also decides whether Codex is asked to raise approvals at all (codex-agent.ts threadOptions). */
68
- rulebook: "enforced",
69
-
70
- /* DESCRIPTIVE: true of the runtime, and nothing consults them. Each describes behaviour that is emergent
71
- * rather than gated: an agent that never emits `question` frames simply never asks, one that publishes no
72
- * commands leaves the `/` popover empty. Nothing has to switch off, which is why nothing does. That also
73
- * means the declaration and the behaviour are two independent facts, and only the reader below keeps them
74
- * from disagreeing in the one place a user can see. Wiring one up (hiding the terminal tab, skipping
75
- * auto-resume) moves it to ENFORCED: in the change that wires it. */
76
- questions: "descriptive",
77
- commands: "descriptive",
78
- terminals: "descriptive",
79
- recovery: "descriptive",
80
- /* DESCRIPTIVE, and the one entry here whose gap cannot be closed by wiring. Masking a stored credential in
81
- * what the model READS needs a seam that edits a tool result before the model sees it, and only the Claude
82
- * Code loop has one (a PostToolUse hook). Every other runtime runs its tools inside the VENDOR'S loop: the
83
- * model has read the result before the daemon sees any frame about it. So nothing consults this field, and
84
- * nothing can: it exists so limitationsOf can say out loud what is true, instead of letting an owner who
85
- * stored a credential assume it is hidden everywhere. Moving it to ENFORCED would take a runtime that
86
- * publishes a result-rewriting seam, not a change here. */
87
- secrets: "descriptive",
88
- };
89
-
90
- // The full ceiling: every ability real, so `limitationsOf` has nothing to say about it. Read from the catalog
91
- // rather than written out, so this is the record the product actually ships.
92
- const CEILING = capabilitiesOf("claude", "native");
93
-
94
- const fieldsWhere = (backing: Backing): (keyof AgentCapabilities)[] =>
95
- (Object.keys(LEDGER) as (keyof AgentCapabilities)[]).filter((field) => LEDGER[field] === backing);
96
-
97
- /* The compiler pins the ledger against the INTERFACE. This pins it against a live record, which is not the same
98
- * claim: an optional field, or one a record leaves off, typechecks and then is not there to gate anything. */
99
- it("classifies exactly the fields a live record carries", () => {
100
- expect(Object.keys(LEDGER).toSorted()).toEqual(Object.keys(CEILING).toSorted());
101
- });
102
-
103
- /* A DESCRIPTIVE field earns its place by reaching the user, since by definition it does nothing else. Checked
104
- * per field rather than by counting sentences: an aggregate is satisfied by one axis contributing two lines
105
- * while another contributes none, which is exactly the case worth catching. Anything that survives here without
106
- * a sentence is decoration, and the fix is to delete the field or wire it up, not to add an exemption. */
107
- describe("a descriptive claim reaches the user", () => {
108
- it("has something to disclose against: the ceiling discloses nothing", () => {
109
- expect(limitationsOf(CEILING)).toEqual([]);
110
- });
111
-
112
- /* What "lacking this axis" MEANS for a field that is not a boolean. A boolean diminishes to false; anything
113
- * else has to name its own floor here, because only the axis knows which of its values is the weak one.
114
- * Adding a non-boolean descriptive field without an entry fails below rather than silently testing nothing. */
115
- const DIMINISHED: Partial<Record<keyof AgentCapabilities, unknown>> = { secrets: "none" };
116
-
117
- it.each(fieldsWhere("descriptive"))("%s puts its own sentence in the picker when the runtime lacks it", (field) => {
118
- const boolean = typeof CEILING[field] === "boolean";
119
- // A boolean's floor is `false` and needs no entry; every other descriptive field has to name its own.
120
- // Asserted against the KEYS of DIMINISHED so the failure prints the floors that do exist, which is what
121
- // tells "this field was never added" apart from "this field was renamed and its entry left behind".
122
- expect(
123
- boolean ? [field] : Object.keys(DIMINISHED),
124
- `${field} is descriptive and not a boolean: add its weakest value to DIMINISHED above`,
125
- ).toContain(field);
126
- const floor = boolean ? false : DIMINISHED[field];
127
-
128
- const lacking: AgentCapabilities = { ...CEILING, [field]: floor };
129
-
130
- expect(limitationsOf(lacking)).toHaveLength(1);
131
- });
132
- });
133
-
134
- /* The ledger is a split, not a label: a set that swallowed everything would typecheck and prove nothing. Both
135
- * sides being occupied is what makes reading an entry informative, and if the descriptive side ever empties
136
- * because every axis got wired up, that is a real event, and deleting this file is the right response to it. */
137
- it("is a real split: neither side is empty", () => {
138
- expect(fieldsWhere("enforced").length).toBeGreaterThan(0);
139
- expect(fieldsWhere("descriptive").length).toBeGreaterThan(0);
140
- });
@@ -1,20 +0,0 @@
1
- /* THE ONE VALUE THAT MEANS "WHATEVER IS ALREADY STORED", the rule both ends of the capability wire apply.
2
- *
3
- * A capability's credentials never reach a browser: the list route echoes the shape of a connection and drops
4
- * every secret in it, and the manifest on disk holds this marker where each value used to be (the vault keeps
5
- * the value itself). That is what makes a connection EDITABLE without being re-typed: a form that wants to
6
- * change a tunnel's routed networks sends this back in place of the pre-shared key it was never shown, and both
7
- * the write path and the storage layer read it as "leave that one alone".
8
- *
9
- * Deliberately not an empty string and not a dropped key. The entry still has to satisfy CapabilitySchema, a
10
- * connector's required token, an ssh key, and a reader that somehow bypasses rehydration must fail LOUDLY: a
11
- * service refusing this string is a clear auth error, where an empty value reads as "not configured yet" and a
12
- * missing key as a shape change.
13
- *
14
- * It lives in the contract rather than in the daemon's store because it is now spoken on the wire. The browser
15
- * has to be able to say it, the add route has to resolve it before a handler ever sees it, and the store has to
16
- * refuse to write it over a real value, three places, one spelling. */
17
- export const VAULTED = "__intentic_vaulted__";
18
-
19
- /** Whether a config value is the marker rather than a credential, the check, so the string is typed once. */
20
- export const isVaulted = (value: unknown): boolean => value === VAULTED;