@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
@@ -1,320 +0,0 @@
1
- import { z } from "zod";
2
-
3
- /* EVERY JOB IN THIS SANDBOX THAT PICKS A MODEL, LISTED BY THE JOB IT IS, one row per answer the owner is
4
- * entitled to give differently.
5
- *
6
- * WHAT THIS REPLACED, and why it had to go. Model settings used to be grouped by how HARD the work was assumed
7
- * to be: a "quick model" for the small automatic jobs, an "agent runs" tier for the big ones. Both names
8
- * described an intensity rather than a job, and an intensity is a guess somebody else made about work the owner
9
- * knows better. A commit message written by a frontier model is not a mistake, it is a preference, and the
10
- * grouping made it unsayable: pinning Opus to get better commit subjects also pinned it to session titles, to
11
- * every loop verdict, and to the safety judge. One bundled row could not say the thing anyone actually wanted
12
- * to say.
13
- *
14
- * SO THE UNIT IS THE ROLE. Each entry here is one place a model gets chosen, and each gets its own ordered list
15
- * in settings.modelRoles. Seventeen rows is more than four, and that is the point rather than a cost being
16
- * absorbed: the configuration and the UI both already existed per use-case, and collapsing them was the only
17
- * thing standing between the owner and a choice the machinery could already honour. A simpler face over this
18
- * (presets: "cheap everywhere", "frontier everywhere") is a thing that can be built ON TOP of a true model, and
19
- * cannot be unpicked from a lossy one.
20
- *
21
- * EVERY LIST IS AN ORDERED LADDER, whatever the role, and for one reason: the interesting failure of a pinned
22
- * model is not that it is wrong, it is that it is CONNECTED AND WILL NOT ANSWER TODAY. The account's allowance
23
- * went on the chat this morning, and one spent provider takes the role down for hours while three others sit
24
- * idle. Written in order, the next entry catches it.
25
- *
26
- * AN EMPTY LIST IS THE JOB SWITCHED OFF, and NOTHING IS DERIVED FOR IT. A helper role used to fall to an
27
- * "Auto ladder" worked out from whatever was connected — every provider's cheapest row, best-first — so a
28
- * sandbox that had never been configured still spent somebody's account on commit messages and safety
29
- * verdicts, on a recommendation this table invented, which re-ranked itself the day another account was
30
- * connected. Not set now means not set: no auto-selection, no recommendation, and the owner names the models
31
- * for a job or the job does not happen.
32
- *
33
- * TWO KINDS, and what separates them is what the CALLER does with that empty answer. It is declared per role
34
- * because it is a property of the job:
35
- *
36
- * helper — a one-shot. One prompt, no tools, one string back, and it is over. With no list the job does not
37
- * run at all: no commit subject is drafted, no session is renamed, no command is judged. Every one
38
- * of them already had a road for "the model could not answer" (the derived title stands, the
39
- * commit box stays empty, the gate falls to its standing rule), so an owner who wants none of them
40
- * leaves the row empty and pays nothing.
41
- *
42
- * run — a whole session with tools and a worktree, started by a surface rather than by a person at a
43
- * composer. With no list the caller's own floor answers: the model the owner picked for their chat.
44
- * That is not this table recommending anything — it is a choice they already made, in front of
45
- * them, on the composer they work in.
46
- *
47
- * EVERY ENTRY IS A FULL PIN (ModelPinSchema): which model, and how it runs — effort, thinking, speed, harness.
48
- * The helper roles carry them too, which they did not use to: a one-shot ran with reasoning forcibly off, so
49
- * pinning a reasoning model to commit messages bought the price of one and the behaviour of neither. The knobs
50
- * now ride through the one-shot path (the daemon's role-model.ts), so an entry means what it says wherever it
51
- * is written.
52
- *
53
- * ADDING A ROLE IS ONE ROW HERE. The settings key, the resolver's floor, the daemon's lookup and the settings
54
- * page's row all read this table, so a job that starts picking a model tomorrow becomes configurable by saying
55
- * what it is. That is the property the old grouping cost: a new surface inherited "agent runs" by being
56
- * unattended, which is how a documentation sweep and a production incident came to share one tier. */
57
-
58
- export const ModelRoleKindSchema = z.enum(["helper", "run"]);
59
- export type ModelRoleKind = z.infer<typeof ModelRoleKindSchema>;
60
-
61
- /* WHAT STARTS A RUN, declared for the run roles alone.
62
- *
63
- * It is not a wire value and never has been: it decides which BLOCK a job is read in, and the argument for
64
- * reading them apart is the same one that separates a helper from a run — an owner holds a session nobody is
65
- * watching to a different budget from one they are sitting in front of. The settings page used to make that
66
- * argument in a comment over a thirteen-row list ("the ones somebody presses ahead of the ones that fire on
67
- * their own"), which is a claim no reader can check and no row has to honour. Declared, it draws the page.
68
- *
69
- * A HELPER DECLARES NONE, and that is the honest answer rather than a gap: nobody presses "write me a commit
70
- * subject". It happens because something else did. */
71
- export type ModelRoleTrigger = "pressed" | "unprompted";
72
-
73
- /* The shape of a row. `id` is a bare string HERE and narrowed on the exported type below, because the id union
74
- * is derived from this very table: a self-referential `satisfies` would be a type that has to know its own
75
- * answer before it can check it. */
76
- interface ModelRoleRow {
77
- readonly id: string;
78
- // What the settings row is called. A JOB, in the owner's words, never a tier.
79
- readonly label: string;
80
- // The row's one line: what this model is asked to do. Read beside the label, so it says what the label
81
- // cannot rather than restating it.
82
- readonly blurb: string;
83
- readonly kind: ModelRoleKind;
84
- /** Runs only, and required for every one of them: see `ModelRoleTrigger`. */
85
- readonly trigger?: ModelRoleTrigger;
86
- // The row's glyph, from the shared icon set. Here rather than in a web-side map because the whole value of
87
- // this table is that a role is declared ONCE; a second table keyed by the same ids is the drift this
88
- // replaced, moved one layer up.
89
- readonly icon: string;
90
- }
91
-
92
- /* THE TABLE. Ordered as the settings page draws it, and the order is an argument about reach: the one-shots
93
- * first, because nobody chose a model for them and they run constantly; then the runs somebody's click starts;
94
- * then the runs that start themselves, which are the ones an owner is least likely to be watching and most
95
- * likely to want held to a budget. Those three are BLOCKS now (see MODEL_ROLE_BLOCKS) rather than an ordering
96
- * this comment asserts and nothing holds to.
97
- *
98
- * The ids are the wire vocabulary: a turn carries one (AgentTurn.runRole), so they are kebab-case and stable,
99
- * and renaming one is a breaking change to the setting rather than a cosmetic edit. */
100
- export const MODEL_ROLES = [
101
- {
102
- id: "commit-message",
103
- label: "Commit messages",
104
- blurb: "The subject written when an agent's work lands, and the release note under it.",
105
- kind: "helper",
106
- icon: "file-edit",
107
- },
108
- {
109
- id: "session-title",
110
- label: "Session titles",
111
- blurb: "The name a conversation wears on the board, written a second into its first turn.",
112
- kind: "helper",
113
- icon: "pencil",
114
- },
115
- {
116
- /* THE ONE HELPER WHOSE INPUT IS ADVERSARIAL, and the reason the old bundling was worst here. Its prompt
117
- * contains a command the agent is about to run, which may have arrived from a stranger's web page, and a
118
- * small model can be talked round by it. Being wrong is expensive in both directions: a needless card
119
- * teaches the owner to click through the next one. */
120
- id: "safety-judge",
121
- label: "Safety judge",
122
- blurb: "Which model reads your safety policy before a flagged command runs.",
123
- kind: "helper",
124
- icon: "shield",
125
- },
126
- {
127
- id: "loop-verdict",
128
- label: "Loop verdicts",
129
- blurb: "Whether a loop's iteration met the goal, or the loop goes round again.",
130
- kind: "helper",
131
- icon: "check-square",
132
- },
133
- {
134
- /* THE ONE HELPER THAT ANSWERS A CLASSIFICATION rather than writing prose: one card id, or none, from the
135
- * owner's own short list (schemas/personas.ts `brief`). Cheap by construction, once per chat, and the
136
- * job a small model does well, which is the whole argument for routing chats onto static cards rather
137
- * than asking a model to compose a context per session. */
138
- id: "persona-router",
139
- label: "Persona routing",
140
- blurb: "Which model reads a new chat's first message and picks the persona for it.",
141
- kind: "helper",
142
- icon: "users",
143
- },
144
- {
145
- id: "pipeline-fix",
146
- label: "Pipeline fixes",
147
- blurb: "The agent started by Fix on a red pipeline.",
148
- kind: "run",
149
- trigger: "pressed",
150
- icon: "wave-pulse",
151
- },
152
- {
153
- id: "deployment-fix",
154
- label: "Deployment fixes",
155
- blurb: "The agent started by Fix on a deployment that is down.",
156
- kind: "run",
157
- trigger: "pressed",
158
- icon: "server",
159
- },
160
- {
161
- id: "maintenance-chore",
162
- label: "Maintenance chores",
163
- blurb: "A chore run started from the Maintenance board.",
164
- kind: "run",
165
- trigger: "pressed",
166
- icon: "wrench",
167
- },
168
- {
169
- id: "documentation-run",
170
- label: "Documentation runs",
171
- blurb: "A pass over a repo's own documentation.",
172
- kind: "run",
173
- trigger: "pressed",
174
- icon: "book",
175
- },
176
- {
177
- id: "acceptance-run",
178
- label: "Acceptance runs",
179
- blurb: "One session per story in an acceptance fan-out.",
180
- kind: "run",
181
- trigger: "pressed",
182
- icon: "list-check",
183
- },
184
- {
185
- id: "pre-push-fix",
186
- label: "Pre-push fixes",
187
- blurb: "The fix proposed when a check fails on the way to a push.",
188
- kind: "run",
189
- trigger: "pressed",
190
- icon: "cloud-upload",
191
- },
192
- {
193
- /* PRESSED, ON THE STRENGTH OF THE APPROVAL. Nothing here runs until somebody reads the item and says
194
- * yes, and that press is the start of this turn as much as Fix is the start of a pipeline run — the
195
- * queue between the two is machinery, not a second decision. */
196
- id: "approval-queue",
197
- label: "Approvals queue",
198
- blurb: "The turn that publishes or acts on what you approved.",
199
- kind: "run",
200
- trigger: "pressed",
201
- icon: "check-circle",
202
- },
203
- {
204
- id: "automation-wake",
205
- label: "Automation wakes",
206
- blurb: "A turn an automation fires: a schedule, a webhook, a message from outside.",
207
- kind: "run",
208
- trigger: "unprompted",
209
- icon: "clock",
210
- },
211
- {
212
- id: "extension-review",
213
- label: "Extension update reviews",
214
- blurb: "The agent that reads an extension update before it is applied.",
215
- kind: "run",
216
- trigger: "unprompted",
217
- icon: "box",
218
- },
219
- {
220
- id: "loop-iteration",
221
- label: "Loop iterations",
222
- blurb: "Each round of a loop working towards its goal.",
223
- kind: "run",
224
- trigger: "unprompted",
225
- icon: "repeat",
226
- },
227
- {
228
- id: "watch-wake",
229
- label: "Watch wakes",
230
- blurb: "The turn a watch starts when the thing it was watching happens.",
231
- kind: "run",
232
- trigger: "unprompted",
233
- icon: "eye",
234
- },
235
- {
236
- id: "verify-nudge",
237
- label: "Verify nudges",
238
- blurb: "The follow-up turn sent when work was left unverified.",
239
- kind: "run",
240
- trigger: "unprompted",
241
- icon: "search",
242
- },
243
- {
244
- /* THE ONE ROLE THAT ANSWERS A CHOICE RATHER THAN FILLING A SILENCE. A spawning agent may name its
245
- * child's provider, and when it does that wins, exactly as a caret pick wins on every other run role.
246
- * This is what answers when it names none, which used to be a hardcoded "claude". */
247
- id: "child-agent",
248
- label: "Child agents",
249
- blurb: "What an agent's own subagents run on when it names no model for them.",
250
- kind: "run",
251
- trigger: "unprompted",
252
- icon: "users",
253
- },
254
- ] as const satisfies readonly ModelRoleRow[];
255
-
256
- export type ModelRole = (typeof MODEL_ROLES)[number]["id"];
257
- export type ModelRoleSpec = ModelRoleRow & { readonly id: ModelRole };
258
-
259
- export const MODEL_ROLE_IDS = MODEL_ROLES.map((role) => role.id) as readonly ModelRole[];
260
-
261
- /* The wire form. An enum rather than a string, unlike most ids in this contract, because there is no case for
262
- * an unknown one: a role is a place in THIS codebase where a model gets chosen, so a value outside the table
263
- * names nothing, and a settings file or a turn carrying one is a typo worth a clean error rather than a list
264
- * silently ignored. */
265
- export const ModelRoleSchema = z.enum(MODEL_ROLE_IDS as [ModelRole, ...ModelRole[]]);
266
-
267
- /* ═══ THE BLOCKS THE SETTINGS PAGE READS IN ═══
268
- *
269
- * EIGHTEEN JOBS IN ONE LIST IS A TABLE, NOT A PAGE. The unit being the role is right and is not in question —
270
- * it is what lets an owner pin Opus to commit subjects without pinning it to every session title — but the cost
271
- * lands on whoever opens the page: one unbroken run of eighteen rows, each with a name, a sentence, a control
272
- * and a list under it, with no landmark to say where you are in it or which rows are like the one you came for.
273
- *
274
- * SO THE BLOCKS ARE DECLARED, AND THEY ARE THE DISTINCTIONS THE TABLE ALREADY MAKES. Nothing here is a fresh
275
- * taxonomy invented for the layout: `kind` was always the difference between a one-shot and a whole session,
276
- * and `trigger` is the sentence the old table wrote in a comment about its own ordering. A block is what those
277
- * two answers already separate, given a name and a heading.
278
- *
279
- * THE LABELS LIVE HERE, beside the role labels, for the same reason those do: a heading kept in a web-side map
280
- * keyed by the same ids is the drift a single table exists to stop. What is NOT here is anything about how the
281
- * page draws them — that is the page's, and it changes on its own schedule.
282
- *
283
- * ORDER IS REACH, and it is the order of the table itself: jobs nobody picked a model for, then sessions a
284
- * click of yours starts, then sessions that start without one. Every role belongs to exactly one block and
285
- * every block keeps the table's order, which is what makes a role added upstairs appear on the page by
286
- * existing. */
287
- export type ModelRoleBlockId = "helper" | "pressed" | "unprompted";
288
-
289
- export interface ModelRoleBlock {
290
- readonly id: ModelRoleBlockId;
291
- /** The group's heading on the settings page. */
292
- readonly label: string;
293
- /** One line beside it: what the jobs in this block have in common that the others do not. */
294
- readonly caption: string;
295
- /** Its roles, in table order. */
296
- readonly roles: readonly ModelRoleSpec[];
297
- }
298
-
299
- const rolesWhere = (match: (role: ModelRoleSpec) => boolean): readonly ModelRoleSpec[] => MODEL_ROLES.filter((role) => match(role));
300
-
301
- export const MODEL_ROLE_BLOCKS: readonly ModelRoleBlock[] = [
302
- {
303
- id: "helper",
304
- label: "Automatic helpers",
305
- caption: "One prompt, no tools, one answer back.",
306
- roles: rolesWhere((role) => role.kind === "helper"),
307
- },
308
- {
309
- id: "pressed",
310
- label: "Runs you start",
311
- caption: "Whole sessions, begun by a click of yours.",
312
- roles: rolesWhere((role) => role.kind === "run" && role.trigger === "pressed"),
313
- },
314
- {
315
- id: "unprompted",
316
- label: "Runs that start themselves",
317
- caption: "Whole sessions nobody pressed for.",
318
- roles: rolesWhere((role) => role.kind === "run" && role.trigger === "unprompted"),
319
- },
320
- ];
@@ -1,14 +0,0 @@
1
- import { z } from "zod";
2
-
3
- /* ONE "DO THIS BY HAND" LINE, the honesty unit three surfaces share: what an arrival could not do for the
4
- * owner (arrival.ts), what a derived definition could not express (definition.ts), and where a runner has
5
- * drifted from its parent (runner-protocol.ts). A subject the UI bolds, a detail written as an instruction.
6
- *
7
- * It lives in its own leaf module because runner-protocol.ts speaks it, and THAT file is imported by
8
- * schemas/agent.ts, which definition.ts imports — the schema living in definition.ts made a cycle that left
9
- * schemas half-initialized under module-eval.
10
- *
11
- * The name says the FIELD it fills (`needsAction`) rather than any one surface, because naming it for the
12
- * definition is what let the arrival surfaces drift apart in the first place. */
13
- export const NeedsActionSchema = z.object({ subject: z.string(), detail: z.string() });
14
- export type NeedsAction = z.infer<typeof NeedsActionSchema>;
@@ -1,111 +0,0 @@
1
- import { z } from "zod";
2
-
3
- /* A DECLARED OUTPUT SHAPE, the answer to "what does this session produce?", written once and used three ways.
4
- *
5
- * An agentic session's natural output is prose, and prose is unusable as an input to the next session: a step
6
- * that must hand "the three files worth changing" to the step after it cannot hand over a paragraph that
7
- * mentions them. So a session that feeds another one declares its shape here, and that one declaration
8
- * becomes: the sentence in the prompt that tells the model what to write, the validator that decides whether
9
- * it complied, and the table the run view renders. Written once because the three drift apart the moment they
10
- * are written twice, a prompt asking for `files` and a validator wanting `paths` fails on every iteration and
11
- * says nothing useful about why.
12
- *
13
- * WHY A FIELD LIST AND NOT JSON SCHEMA. JSON Schema is strictly more expressive and completely unauthorable in
14
- * a form: nobody designing a workflow is going to hand-write `{"type":"object","properties":{...}}`, and a UI
15
- * that generates it becomes a schema editor, which is a product of its own. Four scalar types plus a string
16
- * list covers what one session actually hands another, a verdict, a count, a list of paths, a summary, and
17
- * anything past that is better carried as a file the next step reads.
18
- *
19
- * `description` IS REQUIRED, and that is the field that decides whether this works at all. `{name: "risk"}`
20
- * gets you the model's guess at what risk means; `{name: "risk", description: "high | medium | low, how
21
- * likely this change is to break something at runtime"}` gets you the answer to the question you asked.
22
- */
23
-
24
- // Restricted to a JS-identifier-ish shape: these become object keys the prompt spells out literally, and a
25
- // name with a quote or a newline in it produces a prompt that cannot be complied with.
26
- const FIELD_NAME = /^[a-zA-Z_][a-zA-Z0-9_]{0,39}$/;
27
-
28
- export const OutputFieldSchema = z.object({
29
- name: z.string().regex(FIELD_NAME),
30
- type: z.enum(["string", "number", "boolean", "string[]"]),
31
- // What the field means, in the words the model is given. Not optional, see the note above.
32
- description: z.string().min(1),
33
- // An absent optional field validates; an absent required one does not, and the iteration is told which.
34
- required: z.boolean(),
35
- });
36
- export type OutputField = z.infer<typeof OutputFieldSchema>;
37
-
38
- // How many fields one output may declare. A shape past this is not a handoff, it is a report, and a report is
39
- // what the prose half of the document is for.
40
- export const OUTPUT_FIELDS_MAX = 16;
41
-
42
- /* Repeated names make the declaration internally contradictory: object validation can only keep one rule for
43
- * a key, while a consumer looking the field up sees whichever copy it happens to ask for first. Reject them at
44
- * the declaration boundary, before either interpretation gets a chance to exist. Exported because graph-level
45
- * validation uses the same fact to explain the fault in the designer before a save is attempted. */
46
- export const duplicateOutputFieldNames = (fields: readonly Pick<OutputField, "name">[]): string[] => {
47
- const seen = new Set<string>();
48
- const repeated = new Set<string>();
49
- for (const field of fields) {
50
- if (seen.has(field.name)) {
51
- repeated.add(field.name);
52
- }
53
- seen.add(field.name);
54
- }
55
- return [...repeated];
56
- };
57
-
58
- export const OutputFieldsSchema = z
59
- .array(OutputFieldSchema)
60
- .min(1)
61
- .max(OUTPUT_FIELDS_MAX)
62
- .superRefine((fields, context) => {
63
- for (const name of duplicateOutputFieldNames(fields)) {
64
- context.addIssue({ code: "custom", message: `Output field names must be unique; "${name}" is repeated.` });
65
- }
66
- });
67
-
68
- const validatorFor = (field: OutputField): z.ZodType => {
69
- if (field.type === "number") {
70
- return z.number();
71
- }
72
- if (field.type === "boolean") {
73
- return z.boolean();
74
- }
75
- if (field.type === "string[]") {
76
- return z.array(z.string());
77
- }
78
- return z.string();
79
- };
80
-
81
- /* The declared shape as a validator. Unknown keys are ALLOWED THROUGH: a model that answered everything asked
82
- * of it and then added a `notes` key has complied, and failing it there would burn an iteration teaching it to
83
- * write less. What is enforced is that every required field is present and every present field has the
84
- * declared type, the two things the reader downstream is entitled to assume.
85
- */
86
- export const fieldsValidator = (fields: readonly OutputField[]): z.ZodType =>
87
- z.looseObject(Object.fromEntries(fields.map((field) => [field.name, field.required ? validatorFor(field) : validatorFor(field).optional()])));
88
-
89
- // A worked example of the declared shape, so the prompt can show rather than describe. Values are the field's
90
- // own description, a model copying the example's structure has the description in front of it as it fills each
91
- // slot, which is where it is needed rather than in a legend three lines up.
92
- export const fieldsExample = (fields: readonly OutputField[]): Record<string, unknown> =>
93
- Object.fromEntries(
94
- fields.map((field) => {
95
- const hint = `${field.description}${field.required ? "" : " (optional, omit if it does not apply)"}`;
96
- if (field.type === "number") {
97
- return [field.name, 0];
98
- }
99
- if (field.type === "boolean") {
100
- return [field.name, false];
101
- }
102
- if (field.type === "string[]") {
103
- return [field.name, [hint]];
104
- }
105
- return [field.name, hint];
106
- }),
107
- );
108
-
109
- // One line per field, for surfaces with no room to render an example: "risk (string, required), how likely …".
110
- export const describeFields = (fields: readonly OutputField[]): string =>
111
- fields.map((field) => `- \`${field.name}\` (${field.type}${field.required ? ", required" : ", optional"}), ${field.description}`).join(`\n`);
@@ -1,116 +0,0 @@
1
- /* WHAT AN ENVIRONMENT OVERLAY MAY SAY, read the same way by everyone who handles one.
2
- *
3
- * An overlay is the Dockerfile that extends the sandbox image for one sandbox: a pinned FROM, the enabled
4
- * capabilities' fragments, and the custom section the owner approved. Three readers apply the same grammar
5
- * at three trust levels, and none of them may trust the one before:
6
- * • the daemon admits an EXTENSION's fragment only if it is RUN/ENV (capabilities/handlers/extension.ts at
7
- * install, environment/fragment-sources.ts again at compose, in case the checkout changed);
8
- * • the daemon pins the composed file's first instruction to the official image (environment.ts);
9
- * • the platform builds a HOSTED sandbox's overlay on a machine of its own, from content that reached it
10
- * through an agent-writable volume and a browser, so it re-checks all of it before any machine exists.
11
- * Text in, verdict out. No filesystem and no services, so the platform imports this the way it imports
12
- * tunnel-ids, and the ic binary's Rust twin (recreate.rs `overlay_base`, runner.rs) reads the same shape. */
13
-
14
- // The marker the rebuild executors read runtime privileges from (`# intentic:runtime --privileged`, the
15
- // docker run flag it becomes is allowlisted there). A fragment that can be written by anything but the
16
- // daemon's own code must not carry it, in a comment or anywhere else.
17
- const RUNTIME_DIRECTIVE = "intentic:runtime";
18
-
19
- const OFFICIAL_SANDBOX_IMAGE = /^ghcr\.io\/intentic\/sandbox:\S+$/;
20
-
21
- // The published sandbox image under any tag, the only base an overlay may extend.
22
- export const isOfficialSandboxImage = (ref: string): boolean => OFFICIAL_SANDBOX_IMAGE.test(ref);
23
-
24
- interface OverlayLine {
25
- readonly raw: string;
26
- // `body` is a line inside a `\`-continued instruction, which carries no keyword of its own.
27
- readonly kind: "blank" | "comment" | "instruction" | "body";
28
- }
29
-
30
- // Continuation-aware: a `\` at the end of any line, comments included, makes the next line a body line.
31
- const overlayLines = (content: string): OverlayLine[] => {
32
- let continued = false;
33
- return content.split("\n").map((raw) => {
34
- const line = raw.trim();
35
- const wasContinued = continued;
36
- continued = line.endsWith("\\");
37
- const kind = line === "" ? "blank" : line.startsWith("#") ? "comment" : wasContinued ? "body" : "instruction";
38
- return { raw, kind };
39
- });
40
- };
41
-
42
- const FROM = /^from\s+(\S+)/i;
43
- const RUN_OR_ENV = /^(run|env)\s/i;
44
-
45
- /* An extension fragment may install and set variables, and nothing else. FROM is refused because the daemon
46
- * owns the base pin; every other instruction because there is no build context to COPY from and nothing an
47
- * extension has any business doing to USER, ENTRYPOINT or EXPOSE; and the runtime directive anywhere,
48
- * because an out-of-band executor greps for it and a comment is exactly where it would hide. Answers the
49
- * offending line, or undefined when the fragment is clean. */
50
- export const invalidExtensionFragment = (content: string): string | undefined => {
51
- for (const { raw, kind } of overlayLines(content)) {
52
- if (raw.includes(RUNTIME_DIRECTIVE)) {
53
- return raw;
54
- }
55
- if (kind === "instruction" && !RUN_OR_ENV.test(raw.trim())) {
56
- return raw;
57
- }
58
- }
59
- return undefined;
60
- };
61
-
62
- // The image a composed overlay extends: the first instruction, when it is a FROM.
63
- export const overlayBase = (content: string): string | undefined => {
64
- const first = overlayLines(content).find((line) => line.kind === "instruction");
65
- return first === undefined ? undefined : FROM.exec(first.raw.trim())?.[1];
66
- };
67
-
68
- // Whether the overlay's first instruction pins it to the official sandbox image.
69
- export const hasOfficialBase = (content: string): boolean => {
70
- const base = overlayBase(content);
71
- return base !== undefined && isOfficialSandboxImage(base);
72
- };
73
-
74
- /* A whole composed overlay, as an executor that did not compose it must read it: one leading FROM on the
75
- * official image, then RUN and ENV only. Comments pass, the runtime directive included, since a composed
76
- * overlay is where the daemon's own capability fragments put it and the executor that honours it (ic) reads
77
- * it from there; an executor that cannot honour it (a VM is already privileged) ignores it. Answers the
78
- * offending line, or undefined. An overlay with no instruction at all is refused: there is nothing to build. */
79
- export const lintOverlay = (content: string): string | undefined => {
80
- let first = true;
81
- for (const { raw, kind } of overlayLines(content)) {
82
- if (kind !== "instruction") {
83
- continue;
84
- }
85
- const line = raw.trim();
86
- if (first) {
87
- first = false;
88
- const base = FROM.exec(line)?.[1];
89
- if (base === undefined || !isOfficialSandboxImage(base)) {
90
- return raw;
91
- }
92
- continue;
93
- }
94
- if (!RUN_OR_ENV.test(line)) {
95
- return raw;
96
- }
97
- }
98
- return first ? "" : undefined;
99
- };
100
-
101
- /* The same overlay on a different base: the first FROM rewritten, everything else byte-identical. An
102
- * executor applies an approved recipe on the base IT runs (a newer release than the one the daemon composed
103
- * against, a rollback pin), and hashes the content the owner approved rather than this rewrite, so the
104
- * environment hash stays the reviewed one. Content whose first instruction is not a FROM is returned as is. */
105
- export const rewriteOverlayBase = (content: string, base: string): string => {
106
- let done = false;
107
- return overlayLines(content)
108
- .map(({ raw, kind }) => {
109
- if (done || kind !== "instruction") {
110
- return raw;
111
- }
112
- done = true;
113
- return FROM.test(raw.trim()) ? raw.replace(FROM, `FROM ${base}`) : raw;
114
- })
115
- .join("\n");
116
- };
package/src/path-refs.ts DELETED
@@ -1,59 +0,0 @@
1
- /* Which file a NAMED reference means. A path written in prose is only loosely anchored to the workspace: an
2
- * agent that has been working in `_editor/web/src` writes `pages/workspace/Foo.vue`, and a turn running in an
3
- * isolated worktree prints `/history/worktrees/<id>/_editor/web/src/foo.ts`, neither is the workspace-relative
4
- * path the file routes speak, but both END in it.
5
- *
6
- * So a reference is resolved by matching progressively shorter TAILS of it against the real tree. The rules
7
- * live here, in the contract package, because both sides run them: the browser first against the workspace
8
- * tree it already has cached, then the daemon (/workspace/resolve) against the iq engine's full sweep, which
9
- * sees the files the capped tree walk left out. Two matchers that disagreed would make a link's destination
10
- * depend on which one answered. */
11
-
12
- // How many leading segments a reference may carry that the workspace doesn't (the `/history/worktrees/<id>/`
13
- // lead of a worktree path is 3; a foreign absolute root is rarely deeper).
14
- const MAX_DROPS = 6;
15
- // A tail is never cut down to a bare filename: `index.ts` names a hundred files in a monorepo and picking one
16
- // at random is worse than not linking. The link grammar never emits a slash-less reference either.
17
- const MIN_SEGMENTS = 2;
18
- // Enough candidates for a picker; a reference matching more than this is ambiguous by any measure.
19
- export const MAX_REF_CANDIDATES = 10;
20
-
21
- // The tails worth matching, longest (most specific) first. `root` is the container workspace root: a path
22
- // under it is already the answer minus that lead, and a path under any OTHER absolute root (a worktree) still
23
- // mirrors the layout below its own lead, which the successive drops strip.
24
- export const referenceTails = (raw: string, root: string): readonly string[] => {
25
- const normalized = raw.replaceAll(`\\`, `/`).replace(/^\.\//, ``);
26
- const anchored = normalized.startsWith(`${root}/`) ? normalized.slice(root.length + 1) : normalized.replace(/^\/+/, ``);
27
- const segments = anchored.split(`/`).filter((segment) => segment !== `` && segment !== `.`);
28
- const tails: string[] = [];
29
- for (let drop = 0; drop <= MAX_DROPS && segments.length - drop >= MIN_SEGMENTS; drop++) {
30
- tails.push(segments.slice(drop).join(`/`));
31
- }
32
- return tails;
33
- };
34
-
35
- // The paths that genuinely END in `tail` on a segment boundary, best first, the shared ranking both matchers
36
- // return their candidates in. Shallowest wins: `pages/Foo.vue` means the app's page, not the copy six
37
- // directories down in a fixture tree. (The daemon's glob is anchored only at the string level, `**/pages/x.vue`
38
- // also matches `mypages/x.vue`, so the boundary is enforced here rather than by the pattern.)
39
- export const rankRefCandidates = (tail: string, paths: readonly string[]): readonly string[] =>
40
- paths
41
- .filter((path) => path === tail || path.endsWith(`/${tail}`))
42
- .toSorted((a, b) => a.split(`/`).length - b.split(`/`).length || a.length - b.length || (a < b ? -1 : 1))
43
- .slice(0, MAX_REF_CANDIDATES);
44
-
45
- /* IS THIS FILE TEST CODE, the one classification rule for every surface that splits a diff into "the
46
- * change" and "the proof". The agent review header answers "how much of this is tests?" with it; anything
47
- * else that wants the split (fleet cards, commit summaries) must use this same predicate, because two
48
- * classifiers that disagree turn the readout into a lie the user can't detect.
49
- *
50
- * Convention-based, matching what this monorepo (and the ecosystems it scaffolds) actually writes: a
51
- * `.test.` / `.spec.` filename in any extension, a `__tests__` / `__fixtures__` directory anywhere on the
52
- * path, an `e2e-harness`, or a test-runner config. Deliberately NOT "anything containing 'test'": a
53
- * `testimonials/` page or a `latest.ts` is product code, and a false "tests" tag is worse than a missed one,
54
- * it tells a reviewer not to look. */
55
- const TEST_DIRS = new Set([`__tests__`, `__fixtures__`, `__mocks__`, `__snapshots__`]);
56
- const TEST_FILE =
57
- /(?:^|\/)(?:[^/]+\.(?:test|spec)\.[^/.]+|[^/]*\.e2e\.[^/]+|e2e-harness\.[^/]+|(?:vitest|jest|playwright)(?:\.[\w-]+)*\.config\.[^/]+)$/;
58
-
59
- export const isTestPath = (path: string): boolean => TEST_FILE.test(path) || path.split(`/`).some((segment) => TEST_DIRS.has(segment));