@intentic/sandbox-contract 1.247.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 (883) 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 +13 -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 +39 -4
  69. package/dist/contracts/personas.contract.d.ts.map +1 -1
  70. package/dist/contracts/personas.contract.js +10 -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 +6 -80
  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 +10 -10
  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 +464 -447
  146. package/dist/index.d.ts.map +1 -1
  147. package/dist/index.js +54 -47
  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} +2 -4
  160. package/dist/models/model-pins.d.ts.map +1 -0
  161. package/dist/models/model-pins.js +22 -0
  162. package/dist/models/model-pins.js.map +1 -0
  163. package/dist/{model-roles.d.ts → models/model-roles.d.ts} +25 -30
  164. package/dist/models/model-roles.d.ts.map +1 -0
  165. package/dist/{model-roles.js → models/model-roles.js} +30 -27
  166. package/dist/models/model-roles.js.map +1 -0
  167. package/dist/{plan-pools.d.ts → models/plan-pools.d.ts} +1 -1
  168. package/dist/models/plan-pools.d.ts.map +1 -0
  169. package/dist/models/plan-pools.js.map +1 -0
  170. package/dist/models/prompt-complexity.d.ts.map +1 -0
  171. package/dist/models/prompt-complexity.js.map +1 -0
  172. package/dist/models/provider-specs.d.ts.map +1 -0
  173. package/dist/models/provider-specs.js.map +1 -0
  174. package/dist/policy/approvals-execution.d.ts.map +1 -0
  175. package/dist/policy/approvals-execution.js.map +1 -0
  176. package/dist/{batch-runs.d.ts → policy/batch-runs.d.ts} +5 -1
  177. package/dist/policy/batch-runs.d.ts.map +1 -0
  178. package/dist/{batch-runs.js → policy/batch-runs.js} +10 -7
  179. package/dist/policy/batch-runs.js.map +1 -0
  180. package/dist/policy/capability-env.d.ts.map +1 -0
  181. package/dist/policy/capability-env.js.map +1 -0
  182. package/dist/policy/capability-secrets.d.ts.map +1 -0
  183. package/dist/policy/capability-secrets.js.map +1 -0
  184. package/dist/{card-status.d.ts → policy/card-status.d.ts} +2 -2
  185. package/dist/policy/card-status.d.ts.map +1 -0
  186. package/dist/{card-status.js → policy/card-status.js} +1 -5
  187. package/dist/policy/card-status.js.map +1 -0
  188. package/dist/{command-classes.d.ts → policy/command-classes.d.ts} +6 -2
  189. package/dist/policy/command-classes.d.ts.map +1 -0
  190. package/dist/{command-classes.js → policy/command-classes.js} +48 -11
  191. package/dist/policy/command-classes.js.map +1 -0
  192. package/dist/{command-run.d.ts → policy/command-run.d.ts} +1 -1
  193. package/dist/policy/command-run.d.ts.map +1 -0
  194. package/dist/policy/command-run.js.map +1 -0
  195. package/dist/policy/control-scopes.d.ts +16 -0
  196. package/dist/policy/control-scopes.d.ts.map +1 -0
  197. package/dist/policy/control-scopes.js +26 -0
  198. package/dist/policy/control-scopes.js.map +1 -0
  199. package/dist/policy/credential-material.d.ts.map +1 -0
  200. package/dist/policy/credential-material.js.map +1 -0
  201. package/dist/policy/needs-action.d.ts.map +1 -0
  202. package/dist/policy/needs-action.js.map +1 -0
  203. package/dist/policy/output-fields.d.ts.map +1 -0
  204. package/dist/policy/output-fields.js.map +1 -0
  205. package/dist/policy/overlay-lint.d.ts.map +1 -0
  206. package/dist/policy/overlay-lint.js.map +1 -0
  207. package/dist/policy/owner-ticket.d.ts.map +1 -0
  208. package/dist/{owner-ticket.js → policy/owner-ticket.js} +1 -1
  209. package/dist/policy/owner-ticket.js.map +1 -0
  210. package/dist/{safety-policy.d.ts → policy/safety-policy.d.ts} +6 -5
  211. package/dist/policy/safety-policy.d.ts.map +1 -0
  212. package/dist/{safety-policy.js → policy/safety-policy.js} +12 -12
  213. package/dist/policy/safety-policy.js.map +1 -0
  214. package/dist/policy/search-globs.d.ts.map +1 -0
  215. package/dist/policy/search-globs.js.map +1 -0
  216. package/dist/protocol/container-requirements.d.ts +20 -0
  217. package/dist/protocol/container-requirements.d.ts.map +1 -0
  218. package/dist/protocol/container-requirements.js +23 -0
  219. package/dist/protocol/container-requirements.js.map +1 -0
  220. package/dist/{host-protocol.d.ts → protocol/host-protocol.d.ts} +1 -0
  221. package/dist/protocol/host-protocol.d.ts.map +1 -0
  222. package/dist/{host-protocol.js → protocol/host-protocol.js} +1 -0
  223. package/dist/protocol/host-protocol.js.map +1 -0
  224. package/dist/protocol/ingress-contract.d.ts.map +1 -0
  225. package/dist/{ingress-contract.js → protocol/ingress-contract.js} +1 -1
  226. package/dist/protocol/ingress-contract.js.map +1 -0
  227. package/dist/protocol/ingress-protocol.d.ts.map +1 -0
  228. package/dist/protocol/ingress-protocol.js.map +1 -0
  229. package/dist/protocol/listener-protocol.d.ts.map +1 -0
  230. package/dist/{listener-protocol.js → protocol/listener-protocol.js} +1 -1
  231. package/dist/protocol/listener-protocol.js.map +1 -0
  232. package/dist/{peer-dial.d.ts → protocol/peer-dial.d.ts} +4 -1
  233. package/dist/protocol/peer-dial.d.ts.map +1 -0
  234. package/dist/{peer-dial.js → protocol/peer-dial.js} +51 -10
  235. package/dist/protocol/peer-dial.js.map +1 -0
  236. package/dist/protocol/peer-mcp-server.d.ts.map +1 -0
  237. package/dist/protocol/peer-mcp-server.js.map +1 -0
  238. package/dist/protocol/request-id.d.ts.map +1 -0
  239. package/dist/protocol/request-id.js.map +1 -0
  240. package/dist/protocol/routes.d.ts.map +1 -0
  241. package/dist/protocol/routes.js.map +1 -0
  242. package/dist/{runner-protocol.d.ts → protocol/runner-protocol.d.ts} +1 -0
  243. package/dist/protocol/runner-protocol.d.ts.map +1 -0
  244. package/dist/{runner-protocol.js → protocol/runner-protocol.js} +2 -1
  245. package/dist/protocol/runner-protocol.js.map +1 -0
  246. package/dist/protocol/sse.d.ts.map +1 -0
  247. package/dist/protocol/sse.js.map +1 -0
  248. package/dist/{terminal-protocol.d.ts → protocol/terminal-protocol.d.ts} +1 -3
  249. package/dist/protocol/terminal-protocol.d.ts.map +1 -0
  250. package/dist/protocol/terminal-protocol.js.map +1 -0
  251. package/dist/protocol/webext-links.d.ts.map +1 -0
  252. package/dist/protocol/webext-links.js.map +1 -0
  253. package/dist/{webext-protocol.d.ts → protocol/webext-protocol.d.ts} +1 -0
  254. package/dist/protocol/webext-protocol.d.ts.map +1 -0
  255. package/dist/{webext-protocol.js → protocol/webext-protocol.js} +1 -0
  256. package/dist/protocol/webext-protocol.js.map +1 -0
  257. package/dist/schemas/activity.d.ts +2 -0
  258. package/dist/schemas/activity.d.ts.map +1 -1
  259. package/dist/schemas/activity.js +4 -0
  260. package/dist/schemas/activity.js.map +1 -1
  261. package/dist/schemas/agent.d.ts +17 -4
  262. package/dist/schemas/agent.d.ts.map +1 -1
  263. package/dist/schemas/agent.js +21 -4
  264. package/dist/schemas/agent.js.map +1 -1
  265. package/dist/schemas/agents.d.ts +17 -4
  266. package/dist/schemas/agents.d.ts.map +1 -1
  267. package/dist/schemas/agents.js +15 -4
  268. package/dist/schemas/agents.js.map +1 -1
  269. package/dist/schemas/approvals.d.ts.map +1 -1
  270. package/dist/schemas/approvals.js.map +1 -1
  271. package/dist/schemas/automations.d.ts +54 -28
  272. package/dist/schemas/automations.d.ts.map +1 -1
  273. package/dist/schemas/automations.js +26 -8
  274. package/dist/schemas/automations.js.map +1 -1
  275. package/dist/schemas/capabilities.d.ts +0 -8
  276. package/dist/schemas/capabilities.d.ts.map +1 -1
  277. package/dist/schemas/capabilities.js +0 -4
  278. package/dist/schemas/capabilities.js.map +1 -1
  279. package/dist/schemas/ci.d.ts +10 -0
  280. package/dist/schemas/ci.d.ts.map +1 -1
  281. package/dist/schemas/ci.js +9 -1
  282. package/dist/schemas/ci.js.map +1 -1
  283. package/dist/schemas/codebase-health.d.ts.map +1 -1
  284. package/dist/schemas/codebase-health.js.map +1 -1
  285. package/dist/schemas/devices.d.ts +90 -0
  286. package/dist/schemas/devices.d.ts.map +1 -1
  287. package/dist/schemas/devices.js +10 -1
  288. package/dist/schemas/devices.js.map +1 -1
  289. package/dist/schemas/engines.d.ts.map +1 -1
  290. package/dist/schemas/engines.js.map +1 -1
  291. package/dist/schemas/environment.d.ts.map +1 -1
  292. package/dist/schemas/environment.js.map +1 -1
  293. package/dist/schemas/exit.d.ts.map +1 -1
  294. package/dist/schemas/exit.js.map +1 -1
  295. package/dist/schemas/extension-updates.d.ts.map +1 -1
  296. package/dist/schemas/extension-updates.js.map +1 -1
  297. package/dist/schemas/git-history.d.ts.map +1 -1
  298. package/dist/schemas/git-history.js.map +1 -1
  299. package/dist/schemas/git.d.ts +80 -16
  300. package/dist/schemas/git.d.ts.map +1 -1
  301. package/dist/schemas/git.js +37 -25
  302. package/dist/schemas/git.js.map +1 -1
  303. package/dist/schemas/history.d.ts.map +1 -1
  304. package/dist/schemas/history.js.map +1 -1
  305. package/dist/schemas/hosts.d.ts.map +1 -1
  306. package/dist/schemas/hosts.js.map +1 -1
  307. package/dist/schemas/inventory.d.ts.map +1 -1
  308. package/dist/schemas/inventory.js.map +1 -1
  309. package/dist/schemas/issues.d.ts +0 -1
  310. package/dist/schemas/issues.d.ts.map +1 -1
  311. package/dist/schemas/issues.js +0 -1
  312. package/dist/schemas/issues.js.map +1 -1
  313. package/dist/schemas/logs.d.ts.map +1 -1
  314. package/dist/schemas/logs.js.map +1 -1
  315. package/dist/schemas/loops.d.ts.map +1 -1
  316. package/dist/schemas/loops.js +1 -1
  317. package/dist/schemas/loops.js.map +1 -1
  318. package/dist/schemas/maintenance.d.ts.map +1 -1
  319. package/dist/schemas/maintenance.js.map +1 -1
  320. package/dist/schemas/marketplace.d.ts +0 -4
  321. package/dist/schemas/marketplace.d.ts.map +1 -1
  322. package/dist/schemas/panels.d.ts.map +1 -1
  323. package/dist/schemas/panels.js.map +1 -1
  324. package/dist/schemas/personas.d.ts +49 -4
  325. package/dist/schemas/personas.d.ts.map +1 -1
  326. package/dist/schemas/personas.js +32 -5
  327. package/dist/schemas/personas.js.map +1 -1
  328. package/dist/schemas/plan-limits.d.ts +2 -4
  329. package/dist/schemas/plan-limits.d.ts.map +1 -1
  330. package/dist/schemas/plan-limits.js +5 -8
  331. package/dist/schemas/plan-limits.js.map +1 -1
  332. package/dist/schemas/ports.d.ts.map +1 -1
  333. package/dist/schemas/ports.js.map +1 -1
  334. package/dist/schemas/provider-oauth.d.ts.map +1 -1
  335. package/dist/schemas/provider-oauth.js.map +1 -1
  336. package/dist/schemas/provider-subscriptions.d.ts +1 -1
  337. package/dist/schemas/provider-subscriptions.d.ts.map +1 -1
  338. package/dist/schemas/provider-subscriptions.js +1 -1
  339. package/dist/schemas/provider-subscriptions.js.map +1 -1
  340. package/dist/schemas/public.d.ts.map +1 -1
  341. package/dist/schemas/public.js.map +1 -1
  342. package/dist/schemas/push.d.ts.map +1 -1
  343. package/dist/schemas/push.js.map +1 -1
  344. package/dist/schemas/secrets.d.ts.map +1 -1
  345. package/dist/schemas/secrets.js.map +1 -1
  346. package/dist/schemas/settings.d.ts +7 -5
  347. package/dist/schemas/settings.d.ts.map +1 -1
  348. package/dist/schemas/settings.js +18 -8
  349. package/dist/schemas/settings.js.map +1 -1
  350. package/dist/schemas/share.d.ts.map +1 -1
  351. package/dist/schemas/share.js.map +1 -1
  352. package/dist/schemas/shared.d.ts +4 -0
  353. package/dist/schemas/shared.d.ts.map +1 -1
  354. package/dist/schemas/shared.js +3 -0
  355. package/dist/schemas/shared.js.map +1 -1
  356. package/dist/schemas/system.d.ts +6 -0
  357. package/dist/schemas/system.d.ts.map +1 -1
  358. package/dist/schemas/system.js +10 -0
  359. package/dist/schemas/system.js.map +1 -1
  360. package/dist/schemas/terminal.d.ts.map +1 -1
  361. package/dist/schemas/terminal.js.map +1 -1
  362. package/dist/schemas/usage.d.ts.map +1 -1
  363. package/dist/schemas/usage.js.map +1 -1
  364. package/dist/schemas/vpn.d.ts.map +1 -1
  365. package/dist/schemas/vpn.js.map +1 -1
  366. package/dist/schemas/webext.d.ts.map +1 -1
  367. package/dist/schemas/webext.js.map +1 -1
  368. package/dist/schemas/workflows.d.ts +66 -9
  369. package/dist/schemas/workflows.d.ts.map +1 -1
  370. package/dist/schemas/workflows.js +6 -5
  371. package/dist/schemas/workflows.js.map +1 -1
  372. package/dist/schemas/workspace-repos.d.ts.map +1 -1
  373. package/dist/schemas/workspace-repos.js.map +1 -1
  374. package/dist/schemas/workspace-search.d.ts.map +1 -1
  375. package/dist/schemas/workspace-search.js.map +1 -1
  376. package/dist/schemas/workspace-setup.d.ts.map +1 -1
  377. package/dist/schemas/workspace-setup.js.map +1 -1
  378. package/dist/schemas/workspace-tree.d.ts.map +1 -1
  379. package/dist/schemas/workspace-tree.js.map +1 -1
  380. package/dist/state/arrival.d.ts.map +1 -0
  381. package/dist/{arrival.js → state/arrival.js} +1 -1
  382. package/dist/state/arrival.js.map +1 -0
  383. package/dist/state/contract-lock.d.ts.map +1 -0
  384. package/dist/{contract-lock.js → state/contract-lock.js} +1 -1
  385. package/dist/state/contract-lock.js.map +1 -0
  386. package/dist/{definition.d.ts → state/definition.d.ts} +21 -17
  387. package/dist/state/definition.d.ts.map +1 -0
  388. package/dist/{definition.js → state/definition.js} +4 -4
  389. package/dist/state/definition.js.map +1 -0
  390. package/dist/state/history-state.d.ts.map +1 -0
  391. package/dist/{history-state.js → state/history-state.js} +1 -0
  392. package/dist/state/history-state.js.map +1 -0
  393. package/dist/state/runtime-state.d.ts.map +1 -0
  394. package/dist/state/runtime-state.js.map +1 -0
  395. package/dist/state/starter.d.ts.map +1 -0
  396. package/dist/state/starter.js.map +1 -0
  397. package/dist/state/state-portability.d.ts.map +1 -0
  398. package/dist/state/state-portability.js.map +1 -0
  399. package/dist/state/versions.d.ts.map +1 -0
  400. package/dist/state/versions.js.map +1 -0
  401. package/dist/{workspace-state.d.ts → state/workspace-state.d.ts} +8 -5
  402. package/dist/state/workspace-state.d.ts.map +1 -0
  403. package/dist/{workspace-state.js → state/workspace-state.js} +25 -1
  404. package/dist/state/workspace-state.js.map +1 -0
  405. package/dist/{documents.d.ts → text/documents.d.ts} +1 -1
  406. package/dist/text/documents.d.ts.map +1 -0
  407. package/dist/{documents.js → text/documents.js} +1 -1
  408. package/dist/text/documents.js.map +1 -0
  409. package/dist/text/embed.d.ts.map +1 -0
  410. package/dist/text/embed.js.map +1 -0
  411. package/dist/text/mentions.d.ts.map +1 -0
  412. package/dist/text/mentions.js.map +1 -0
  413. package/dist/text/model-answer.d.ts +3 -0
  414. package/dist/text/model-answer.d.ts.map +1 -0
  415. package/dist/text/model-answer.js +3 -0
  416. package/dist/text/model-answer.js.map +1 -0
  417. package/dist/text/path-refs.d.ts.map +1 -0
  418. package/dist/text/path-refs.js.map +1 -0
  419. package/dist/{shell-regions.d.ts → text/shell-regions.d.ts} +1 -1
  420. package/dist/text/shell-regions.d.ts.map +1 -0
  421. package/dist/text/shell-regions.js.map +1 -0
  422. package/dist/text/title.d.ts.map +1 -0
  423. package/dist/text/title.js.map +1 -0
  424. package/dist/{transcript-fold.d.ts → text/transcript-fold.d.ts} +2 -1
  425. package/dist/text/transcript-fold.d.ts.map +1 -0
  426. package/dist/{transcript-fold.js → text/transcript-fold.js} +2 -16
  427. package/dist/text/transcript-fold.js.map +1 -0
  428. package/dist/text/whisper.d.ts +3 -0
  429. package/dist/text/whisper.d.ts.map +1 -0
  430. package/dist/text/whisper.js +11 -0
  431. package/dist/text/whisper.js.map +1 -0
  432. package/dist/{workflow-faults.d.ts → text/workflow-faults.d.ts} +1 -1
  433. package/dist/text/workflow-faults.d.ts.map +1 -0
  434. package/dist/{workflow-faults.js → text/workflow-faults.js} +1 -1
  435. package/dist/text/workflow-faults.js.map +1 -0
  436. package/package.json +70 -70
  437. package/src/chores/chores.test.ts +4 -10
  438. package/src/chores/chores.ts +148 -392
  439. package/src/chores/digest.ts +8 -28
  440. package/src/chores/extension-update.ts +3 -8
  441. package/src/chores/fix-deps.ts +4 -18
  442. package/src/chores/index.ts +2 -2
  443. package/src/chores/probes.test.ts +7 -43
  444. package/src/chores/probes.ts +62 -167
  445. package/src/chores/prompt.ts +10 -34
  446. package/src/chores/stack.test.ts +6 -45
  447. package/src/chores/stack.ts +27 -118
  448. package/src/chores/verdict.test.ts +101 -80
  449. package/src/chores/verdict.ts +54 -99
  450. package/src/contracts/accounts.contract.ts +4 -19
  451. package/src/contracts/agent.contract.ts +7 -22
  452. package/src/contracts/agents.contract.ts +25 -71
  453. package/src/contracts/automations.contract.ts +14 -30
  454. package/src/contracts/capabilities.contract.ts +8 -35
  455. package/src/contracts/chores.contract.ts +4 -15
  456. package/src/contracts/endpoints.contract.ts +5 -22
  457. package/src/contracts/exit.contract.ts +7 -30
  458. package/src/contracts/extensions.contract.ts +8 -30
  459. package/src/contracts/git.contract.ts +25 -49
  460. package/src/contracts/host.contract.ts +9 -44
  461. package/src/contracts/intentic.contract.ts +1 -1
  462. package/src/contracts/logs.contract.ts +3 -13
  463. package/src/contracts/loops.contract.ts +9 -40
  464. package/src/contracts/personas.contract.ts +22 -30
  465. package/src/contracts/providers.contract.ts +4 -17
  466. package/src/contracts/runner.contract.ts +12 -39
  467. package/src/contracts/safety.contract.ts +5 -14
  468. package/src/contracts/secrets.contract.ts +4 -22
  469. package/src/contracts/sessions.contract.ts +1 -1
  470. package/src/contracts/settings.contract.ts +4 -10
  471. package/src/contracts/share.contract.ts +3 -9
  472. package/src/contracts/skills.contract.ts +4 -15
  473. package/src/contracts/system.contract.ts +26 -52
  474. package/src/contracts/usage.contract.ts +7 -21
  475. package/src/contracts/vpn.contract.ts +9 -16
  476. package/src/contracts/webext.contract.ts +9 -25
  477. package/src/contracts/workflows.contract.ts +34 -58
  478. package/src/contracts/workspace.contract.ts +19 -50
  479. package/src/events/agent-events.ts +345 -0
  480. package/src/events/cards.ts +286 -0
  481. package/src/{events.test.ts → events/resume.test.ts} +4 -19
  482. package/src/events/resume.ts +60 -0
  483. package/src/events/system-events.ts +139 -0
  484. package/src/events/transcript.ts +320 -0
  485. package/src/{conversation-ids.test.ts → ids/conversation-ids.test.ts} +25 -13
  486. package/src/ids/conversation-ids.ts +178 -0
  487. package/src/ids/hostnames.ts +129 -0
  488. package/src/ids/session-names.ts +29 -0
  489. package/src/ids/share-paths.ts +43 -0
  490. package/src/{tunnel-ids.test.ts → ids/tunnel-ids.test.ts} +1 -14
  491. package/src/ids/tunnel-ids.ts +29 -0
  492. package/src/index.ts +71 -88
  493. package/src/{agent-catalog.test.ts → models/agent-catalog.test.ts} +19 -93
  494. package/src/models/agent-catalog.ts +174 -0
  495. package/src/models/agent-runtimes.ts +201 -0
  496. package/src/models/capability-ledger.test.ts +84 -0
  497. package/src/{fast-tier.test.ts → models/fast-tier.test.ts} +7 -18
  498. package/src/models/fast-tier.ts +36 -0
  499. package/src/{model-order.test.ts → models/model-order.test.ts} +19 -40
  500. package/src/models/model-order.ts +163 -0
  501. package/src/models/model-pins.test.ts +87 -0
  502. package/src/models/model-pins.ts +57 -0
  503. package/src/models/model-roles.test.ts +38 -0
  504. package/src/models/model-roles.ts +180 -0
  505. package/src/{plan-pools.test.ts → models/plan-pools.test.ts} +6 -11
  506. package/src/models/plan-pools.ts +65 -0
  507. package/src/{prompt-complexity.test.ts → models/prompt-complexity.test.ts} +8 -60
  508. package/src/models/prompt-complexity.ts +215 -0
  509. package/src/{provider-specs.test.ts → models/provider-specs.test.ts} +18 -47
  510. package/src/models/provider-specs.ts +272 -0
  511. package/src/policy/approvals-execution.ts +58 -0
  512. package/src/{batch-runs.test.ts → policy/batch-runs.test.ts} +4 -20
  513. package/src/policy/batch-runs.ts +137 -0
  514. package/src/policy/capability-secrets.ts +5 -0
  515. package/src/{card-status.ts → policy/card-status.ts} +11 -26
  516. package/src/{command-classes.test.ts → policy/command-classes.test.ts} +11 -118
  517. package/src/policy/command-classes.ts +395 -0
  518. package/src/policy/command-run.ts +65 -0
  519. package/src/policy/control-scopes.ts +38 -0
  520. package/src/{credential-material.test.ts → policy/credential-material.test.ts} +4 -26
  521. package/src/policy/credential-material.ts +91 -0
  522. package/src/policy/needs-action.ts +5 -0
  523. package/src/policy/output-fields.ts +86 -0
  524. package/src/policy/overlay-lint.ts +100 -0
  525. package/src/{owner-ticket.test.ts → policy/owner-ticket.test.ts} +1 -1
  526. package/src/{owner-ticket.ts → policy/owner-ticket.ts} +9 -31
  527. package/src/policy/safety-policy.test.ts +84 -0
  528. package/src/policy/safety-policy.ts +142 -0
  529. package/src/policy/search-globs.ts +60 -0
  530. package/src/protocol/container-requirements.test.ts +72 -0
  531. package/src/protocol/container-requirements.ts +58 -0
  532. package/src/protocol/host-protocol.ts +29 -0
  533. package/src/protocol/ingress-contract.ts +103 -0
  534. package/src/{ingress-protocol.test.ts → protocol/ingress-protocol.test.ts} +25 -90
  535. package/src/protocol/ingress-protocol.ts +441 -0
  536. package/src/protocol/listener-protocol.ts +75 -0
  537. package/src/{peer-dial.test.ts → protocol/peer-dial.test.ts} +52 -1
  538. package/src/protocol/peer-dial.ts +207 -0
  539. package/src/{peer-mcp-server.ts → protocol/peer-mcp-server.ts} +16 -41
  540. package/src/protocol/request-id.ts +5 -0
  541. package/src/{routes.test.ts → protocol/routes.test.ts} +14 -22
  542. package/src/protocol/routes.ts +159 -0
  543. package/src/protocol/runner-protocol.ts +197 -0
  544. package/src/protocol/terminal-protocol.ts +13 -0
  545. package/src/protocol/webext-links.ts +50 -0
  546. package/src/protocol/webext-protocol.ts +24 -0
  547. package/src/schemas/activity.ts +22 -30
  548. package/src/schemas/agent.ts +130 -238
  549. package/src/schemas/agents.ts +165 -483
  550. package/src/schemas/approvals.ts +23 -71
  551. package/src/schemas/automations.ts +145 -249
  552. package/src/schemas/capabilities.ts +127 -414
  553. package/src/schemas/ci.ts +56 -108
  554. package/src/schemas/codebase-health.ts +7 -11
  555. package/src/schemas/devices.ts +98 -321
  556. package/src/schemas/engines.ts +16 -44
  557. package/src/schemas/environment.ts +41 -91
  558. package/src/schemas/exit.ts +24 -81
  559. package/src/schemas/extension-updates.ts +42 -87
  560. package/src/schemas/git-history.ts +30 -84
  561. package/src/schemas/git.ts +141 -256
  562. package/src/schemas/history.ts +14 -40
  563. package/src/schemas/hosts.ts +9 -15
  564. package/src/schemas/inventory.ts +8 -10
  565. package/src/schemas/issues.ts +66 -134
  566. package/src/schemas/logs.ts +15 -34
  567. package/src/schemas/loops.ts +46 -163
  568. package/src/schemas/maintenance.ts +47 -172
  569. package/src/schemas/panels.ts +20 -45
  570. package/src/schemas/personas.ts +85 -168
  571. package/src/schemas/plan-limits.ts +58 -197
  572. package/src/schemas/ports.ts +14 -32
  573. package/src/schemas/provider-oauth.ts +23 -76
  574. package/src/schemas/provider-subscriptions.ts +4 -13
  575. package/src/schemas/public.ts +4 -15
  576. package/src/schemas/push.ts +8 -36
  577. package/src/schemas/secrets.ts +20 -64
  578. package/src/schemas/settings.ts +177 -597
  579. package/src/schemas/share.ts +14 -32
  580. package/src/schemas/shared.ts +14 -13
  581. package/src/schemas/system.ts +46 -78
  582. package/src/schemas/terminal.ts +41 -120
  583. package/src/schemas/usage.ts +44 -233
  584. package/src/schemas/version-seam.test.ts +9 -26
  585. package/src/schemas/vpn.ts +27 -64
  586. package/src/schemas/webext.ts +22 -53
  587. package/src/schemas/workflows.ts +57 -183
  588. package/src/schemas/workspace-repos.ts +12 -24
  589. package/src/schemas/workspace-search.ts +17 -35
  590. package/src/schemas/workspace-setup.ts +4 -11
  591. package/src/schemas/workspace-tree.ts +32 -91
  592. package/src/state/arrival.ts +109 -0
  593. package/src/state/contract-lock.test.ts +17 -0
  594. package/src/state/contract-lock.ts +49 -0
  595. package/src/state/definition.ts +143 -0
  596. package/src/state/history-state.ts +103 -0
  597. package/src/{runtime-state.test.ts → state/runtime-state.test.ts} +3 -10
  598. package/src/state/runtime-state.ts +62 -0
  599. package/src/state/starter.ts +5 -0
  600. package/src/state/state-portability.ts +27 -0
  601. package/src/state/versions.ts +26 -0
  602. package/src/{workspace-state.test.ts → state/workspace-state.test.ts} +65 -173
  603. package/src/state/workspace-state.ts +669 -0
  604. package/src/{documents.test.ts → text/documents.test.ts} +1 -1
  605. package/src/text/documents.ts +42 -0
  606. package/src/text/embed.ts +132 -0
  607. package/src/text/mentions.ts +21 -0
  608. package/src/text/model-answer.ts +9 -0
  609. package/src/text/path-refs.ts +39 -0
  610. package/src/text/shell-regions.ts +224 -0
  611. package/src/{title.test.ts → text/title.test.ts} +13 -32
  612. package/src/text/title.ts +202 -0
  613. package/src/{transcript-fold.test.ts → text/transcript-fold.test.ts} +5 -83
  614. package/src/{transcript-fold.ts → text/transcript-fold.ts} +65 -170
  615. package/src/text/whisper.test.ts +19 -0
  616. package/src/text/whisper.ts +17 -0
  617. package/src/{workflow-faults.test.ts → text/workflow-faults.test.ts} +6 -24
  618. package/src/{workflow-faults.ts → text/workflow-faults.ts} +20 -60
  619. package/dist/agent-catalog.d.ts.map +0 -1
  620. package/dist/agent-catalog.js.map +0 -1
  621. package/dist/agent-runtimes.d.ts.map +0 -1
  622. package/dist/agent-runtimes.js.map +0 -1
  623. package/dist/approvals-execution.d.ts.map +0 -1
  624. package/dist/approvals-execution.js.map +0 -1
  625. package/dist/arrival.d.ts.map +0 -1
  626. package/dist/arrival.js.map +0 -1
  627. package/dist/batch-runs.d.ts.map +0 -1
  628. package/dist/batch-runs.js.map +0 -1
  629. package/dist/capability-env.d.ts.map +0 -1
  630. package/dist/capability-env.js.map +0 -1
  631. package/dist/capability-secrets.d.ts.map +0 -1
  632. package/dist/capability-secrets.js.map +0 -1
  633. package/dist/card-status.d.ts.map +0 -1
  634. package/dist/card-status.js.map +0 -1
  635. package/dist/command-classes.d.ts.map +0 -1
  636. package/dist/command-classes.js.map +0 -1
  637. package/dist/command-run.d.ts.map +0 -1
  638. package/dist/command-run.js.map +0 -1
  639. package/dist/contract-lock.d.ts.map +0 -1
  640. package/dist/contract-lock.js.map +0 -1
  641. package/dist/conversation-ids.d.ts +0 -4
  642. package/dist/conversation-ids.d.ts.map +0 -1
  643. package/dist/conversation-ids.js.map +0 -1
  644. package/dist/credential-material.d.ts.map +0 -1
  645. package/dist/credential-material.js.map +0 -1
  646. package/dist/definition.d.ts.map +0 -1
  647. package/dist/definition.js.map +0 -1
  648. package/dist/documents.d.ts.map +0 -1
  649. package/dist/documents.js.map +0 -1
  650. package/dist/embed.d.ts.map +0 -1
  651. package/dist/embed.js.map +0 -1
  652. package/dist/events.d.ts +0 -4336
  653. package/dist/events.d.ts.map +0 -1
  654. package/dist/events.js +0 -725
  655. package/dist/events.js.map +0 -1
  656. package/dist/fast-tier.d.ts.map +0 -1
  657. package/dist/fast-tier.js.map +0 -1
  658. package/dist/history-state.d.ts.map +0 -1
  659. package/dist/history-state.js.map +0 -1
  660. package/dist/host-protocol.d.ts.map +0 -1
  661. package/dist/host-protocol.js.map +0 -1
  662. package/dist/hostnames.d.ts.map +0 -1
  663. package/dist/hostnames.js.map +0 -1
  664. package/dist/ingress-contract.d.ts.map +0 -1
  665. package/dist/ingress-contract.js.map +0 -1
  666. package/dist/ingress-protocol.d.ts.map +0 -1
  667. package/dist/ingress-protocol.js.map +0 -1
  668. package/dist/listener-protocol.d.ts.map +0 -1
  669. package/dist/listener-protocol.js.map +0 -1
  670. package/dist/mentions.d.ts.map +0 -1
  671. package/dist/mentions.js.map +0 -1
  672. package/dist/model-order.d.ts.map +0 -1
  673. package/dist/model-order.js.map +0 -1
  674. package/dist/model-pins.d.ts.map +0 -1
  675. package/dist/model-pins.js +0 -45
  676. package/dist/model-pins.js.map +0 -1
  677. package/dist/model-roles.d.ts.map +0 -1
  678. package/dist/model-roles.js.map +0 -1
  679. package/dist/needs-action.d.ts.map +0 -1
  680. package/dist/needs-action.js.map +0 -1
  681. package/dist/output-fields.d.ts.map +0 -1
  682. package/dist/output-fields.js.map +0 -1
  683. package/dist/overlay-lint.d.ts.map +0 -1
  684. package/dist/overlay-lint.js.map +0 -1
  685. package/dist/owner-ticket.d.ts.map +0 -1
  686. package/dist/owner-ticket.js.map +0 -1
  687. package/dist/path-refs.d.ts.map +0 -1
  688. package/dist/path-refs.js.map +0 -1
  689. package/dist/peer-dial.d.ts.map +0 -1
  690. package/dist/peer-dial.js.map +0 -1
  691. package/dist/peer-mcp-server.d.ts.map +0 -1
  692. package/dist/peer-mcp-server.js.map +0 -1
  693. package/dist/plan-pools.d.ts.map +0 -1
  694. package/dist/plan-pools.js.map +0 -1
  695. package/dist/prompt-complexity.d.ts.map +0 -1
  696. package/dist/prompt-complexity.js.map +0 -1
  697. package/dist/provider-specs.d.ts.map +0 -1
  698. package/dist/provider-specs.js.map +0 -1
  699. package/dist/request-id.d.ts.map +0 -1
  700. package/dist/request-id.js.map +0 -1
  701. package/dist/routes.d.ts.map +0 -1
  702. package/dist/routes.js.map +0 -1
  703. package/dist/runner-protocol.d.ts.map +0 -1
  704. package/dist/runner-protocol.js.map +0 -1
  705. package/dist/runtime-state.d.ts.map +0 -1
  706. package/dist/runtime-state.js.map +0 -1
  707. package/dist/safety-policy.d.ts.map +0 -1
  708. package/dist/safety-policy.js.map +0 -1
  709. package/dist/schemas/context.d.ts +0 -30
  710. package/dist/schemas/context.d.ts.map +0 -1
  711. package/dist/schemas/context.js +0 -34
  712. package/dist/schemas/context.js.map +0 -1
  713. package/dist/search-globs.d.ts.map +0 -1
  714. package/dist/search-globs.js.map +0 -1
  715. package/dist/session-names.d.ts.map +0 -1
  716. package/dist/session-names.js.map +0 -1
  717. package/dist/share-paths.d.ts.map +0 -1
  718. package/dist/share-paths.js.map +0 -1
  719. package/dist/shell-regions.d.ts.map +0 -1
  720. package/dist/shell-regions.js.map +0 -1
  721. package/dist/sse.d.ts.map +0 -1
  722. package/dist/sse.js.map +0 -1
  723. package/dist/starter.d.ts.map +0 -1
  724. package/dist/starter.js.map +0 -1
  725. package/dist/state-portability.d.ts.map +0 -1
  726. package/dist/state-portability.js.map +0 -1
  727. package/dist/terminal-protocol.d.ts.map +0 -1
  728. package/dist/terminal-protocol.js.map +0 -1
  729. package/dist/title.d.ts.map +0 -1
  730. package/dist/title.js.map +0 -1
  731. package/dist/transcript-fold.d.ts.map +0 -1
  732. package/dist/transcript-fold.js.map +0 -1
  733. package/dist/tunnel-ids.d.ts.map +0 -1
  734. package/dist/tunnel-ids.js.map +0 -1
  735. package/dist/versions.d.ts.map +0 -1
  736. package/dist/versions.js.map +0 -1
  737. package/dist/webext-links.d.ts.map +0 -1
  738. package/dist/webext-links.js.map +0 -1
  739. package/dist/webext-protocol.d.ts.map +0 -1
  740. package/dist/webext-protocol.js.map +0 -1
  741. package/dist/workflow-faults.d.ts.map +0 -1
  742. package/dist/workflow-faults.js.map +0 -1
  743. package/dist/workspace-state.d.ts.map +0 -1
  744. package/dist/workspace-state.js.map +0 -1
  745. package/src/agent-catalog.ts +0 -316
  746. package/src/agent-runtimes.ts +0 -419
  747. package/src/approvals-execution.ts +0 -96
  748. package/src/arrival.ts +0 -160
  749. package/src/batch-runs.ts +0 -188
  750. package/src/capability-ledger.test.ts +0 -140
  751. package/src/capability-secrets.ts +0 -20
  752. package/src/command-classes.ts +0 -617
  753. package/src/command-run.ts +0 -78
  754. package/src/contract-lock.test.ts +0 -23
  755. package/src/contract-lock.ts +0 -66
  756. package/src/conversation-ids.ts +0 -207
  757. package/src/credential-material.ts +0 -181
  758. package/src/definition.ts +0 -207
  759. package/src/documents.ts +0 -67
  760. package/src/embed.ts +0 -164
  761. package/src/events.ts +0 -1870
  762. package/src/fast-tier.ts +0 -72
  763. package/src/history-state.ts +0 -174
  764. package/src/host-protocol.ts +0 -36
  765. package/src/hostnames.ts +0 -180
  766. package/src/ingress-contract.ts +0 -157
  767. package/src/ingress-protocol.ts +0 -625
  768. package/src/listener-protocol.ts +0 -96
  769. package/src/mentions.ts +0 -25
  770. package/src/model-order.ts +0 -262
  771. package/src/model-pins.test.ts +0 -202
  772. package/src/model-pins.ts +0 -183
  773. package/src/model-roles.ts +0 -224
  774. package/src/needs-action.ts +0 -14
  775. package/src/output-fields.ts +0 -111
  776. package/src/overlay-lint.ts +0 -116
  777. package/src/path-refs.ts +0 -59
  778. package/src/peer-dial.ts +0 -163
  779. package/src/plan-pools.ts +0 -92
  780. package/src/prompt-complexity.ts +0 -334
  781. package/src/provider-specs.ts +0 -432
  782. package/src/request-id.ts +0 -41
  783. package/src/routes.ts +0 -219
  784. package/src/runner-protocol.ts +0 -239
  785. package/src/runtime-state.ts +0 -140
  786. package/src/safety-policy.test.ts +0 -88
  787. package/src/safety-policy.ts +0 -258
  788. package/src/schemas/context.ts +0 -87
  789. package/src/search-globs.ts +0 -76
  790. package/src/session-names.ts +0 -44
  791. package/src/share-paths.ts +0 -68
  792. package/src/shell-regions.ts +0 -289
  793. package/src/starter.ts +0 -13
  794. package/src/state-portability.ts +0 -56
  795. package/src/terminal-protocol.ts +0 -16
  796. package/src/title.ts +0 -267
  797. package/src/tunnel-ids.ts +0 -57
  798. package/src/versions.ts +0 -48
  799. package/src/webext-links.ts +0 -90
  800. package/src/webext-protocol.ts +0 -27
  801. package/src/workspace-state.ts +0 -1096
  802. /package/dist/{hostnames.d.ts → ids/hostnames.d.ts} +0 -0
  803. /package/dist/{hostnames.js → ids/hostnames.js} +0 -0
  804. /package/dist/{session-names.d.ts → ids/session-names.d.ts} +0 -0
  805. /package/dist/{session-names.js → ids/session-names.js} +0 -0
  806. /package/dist/{share-paths.d.ts → ids/share-paths.d.ts} +0 -0
  807. /package/dist/{share-paths.js → ids/share-paths.js} +0 -0
  808. /package/dist/{agent-catalog.js → models/agent-catalog.js} +0 -0
  809. /package/dist/{agent-runtimes.d.ts → models/agent-runtimes.d.ts} +0 -0
  810. /package/dist/{agent-runtimes.js → models/agent-runtimes.js} +0 -0
  811. /package/dist/{fast-tier.js → models/fast-tier.js} +0 -0
  812. /package/dist/{model-order.d.ts → models/model-order.d.ts} +0 -0
  813. /package/dist/{model-order.js → models/model-order.js} +0 -0
  814. /package/dist/{plan-pools.js → models/plan-pools.js} +0 -0
  815. /package/dist/{prompt-complexity.d.ts → models/prompt-complexity.d.ts} +0 -0
  816. /package/dist/{prompt-complexity.js → models/prompt-complexity.js} +0 -0
  817. /package/dist/{provider-specs.d.ts → models/provider-specs.d.ts} +0 -0
  818. /package/dist/{provider-specs.js → models/provider-specs.js} +0 -0
  819. /package/dist/{approvals-execution.d.ts → policy/approvals-execution.d.ts} +0 -0
  820. /package/dist/{approvals-execution.js → policy/approvals-execution.js} +0 -0
  821. /package/dist/{capability-env.d.ts → policy/capability-env.d.ts} +0 -0
  822. /package/dist/{capability-env.js → policy/capability-env.js} +0 -0
  823. /package/dist/{capability-secrets.d.ts → policy/capability-secrets.d.ts} +0 -0
  824. /package/dist/{capability-secrets.js → policy/capability-secrets.js} +0 -0
  825. /package/dist/{command-run.js → policy/command-run.js} +0 -0
  826. /package/dist/{credential-material.d.ts → policy/credential-material.d.ts} +0 -0
  827. /package/dist/{credential-material.js → policy/credential-material.js} +0 -0
  828. /package/dist/{needs-action.d.ts → policy/needs-action.d.ts} +0 -0
  829. /package/dist/{needs-action.js → policy/needs-action.js} +0 -0
  830. /package/dist/{output-fields.d.ts → policy/output-fields.d.ts} +0 -0
  831. /package/dist/{output-fields.js → policy/output-fields.js} +0 -0
  832. /package/dist/{overlay-lint.d.ts → policy/overlay-lint.d.ts} +0 -0
  833. /package/dist/{overlay-lint.js → policy/overlay-lint.js} +0 -0
  834. /package/dist/{owner-ticket.d.ts → policy/owner-ticket.d.ts} +0 -0
  835. /package/dist/{search-globs.d.ts → policy/search-globs.d.ts} +0 -0
  836. /package/dist/{search-globs.js → policy/search-globs.js} +0 -0
  837. /package/dist/{ingress-contract.d.ts → protocol/ingress-contract.d.ts} +0 -0
  838. /package/dist/{ingress-protocol.d.ts → protocol/ingress-protocol.d.ts} +0 -0
  839. /package/dist/{ingress-protocol.js → protocol/ingress-protocol.js} +0 -0
  840. /package/dist/{listener-protocol.d.ts → protocol/listener-protocol.d.ts} +0 -0
  841. /package/dist/{peer-mcp-server.d.ts → protocol/peer-mcp-server.d.ts} +0 -0
  842. /package/dist/{peer-mcp-server.js → protocol/peer-mcp-server.js} +0 -0
  843. /package/dist/{request-id.d.ts → protocol/request-id.d.ts} +0 -0
  844. /package/dist/{request-id.js → protocol/request-id.js} +0 -0
  845. /package/dist/{routes.d.ts → protocol/routes.d.ts} +0 -0
  846. /package/dist/{routes.js → protocol/routes.js} +0 -0
  847. /package/dist/{sse.d.ts → protocol/sse.d.ts} +0 -0
  848. /package/dist/{sse.js → protocol/sse.js} +0 -0
  849. /package/dist/{terminal-protocol.js → protocol/terminal-protocol.js} +0 -0
  850. /package/dist/{webext-links.d.ts → protocol/webext-links.d.ts} +0 -0
  851. /package/dist/{webext-links.js → protocol/webext-links.js} +0 -0
  852. /package/dist/{arrival.d.ts → state/arrival.d.ts} +0 -0
  853. /package/dist/{contract-lock.d.ts → state/contract-lock.d.ts} +0 -0
  854. /package/dist/{history-state.d.ts → state/history-state.d.ts} +0 -0
  855. /package/dist/{runtime-state.d.ts → state/runtime-state.d.ts} +0 -0
  856. /package/dist/{runtime-state.js → state/runtime-state.js} +0 -0
  857. /package/dist/{starter.d.ts → state/starter.d.ts} +0 -0
  858. /package/dist/{starter.js → state/starter.js} +0 -0
  859. /package/dist/{state-portability.d.ts → state/state-portability.d.ts} +0 -0
  860. /package/dist/{state-portability.js → state/state-portability.js} +0 -0
  861. /package/dist/{versions.d.ts → state/versions.d.ts} +0 -0
  862. /package/dist/{versions.js → state/versions.js} +0 -0
  863. /package/dist/{embed.d.ts → text/embed.d.ts} +0 -0
  864. /package/dist/{embed.js → text/embed.js} +0 -0
  865. /package/dist/{mentions.d.ts → text/mentions.d.ts} +0 -0
  866. /package/dist/{mentions.js → text/mentions.js} +0 -0
  867. /package/dist/{path-refs.d.ts → text/path-refs.d.ts} +0 -0
  868. /package/dist/{path-refs.js → text/path-refs.js} +0 -0
  869. /package/dist/{shell-regions.js → text/shell-regions.js} +0 -0
  870. /package/dist/{title.d.ts → text/title.d.ts} +0 -0
  871. /package/dist/{title.js → text/title.js} +0 -0
  872. /package/src/{hostnames.test.ts → ids/hostnames.test.ts} +0 -0
  873. /package/src/{share-paths.test.ts → ids/share-paths.test.ts} +0 -0
  874. /package/src/{capability-env.ts → policy/capability-env.ts} +0 -0
  875. /package/src/{overlay-lint.test.ts → policy/overlay-lint.test.ts} +0 -0
  876. /package/src/{search-globs.test.ts → policy/search-globs.test.ts} +0 -0
  877. /package/src/{ingress-contract.test.ts → protocol/ingress-contract.test.ts} +0 -0
  878. /package/src/{peer-mcp-server.test.ts → protocol/peer-mcp-server.test.ts} +0 -0
  879. /package/src/{sse.ts → protocol/sse.ts} +0 -0
  880. /package/src/{versions.test.ts → state/versions.test.ts} +0 -0
  881. /package/src/{embed.test.ts → text/embed.test.ts} +0 -0
  882. /package/src/{mentions.test.ts → text/mentions.test.ts} +0 -0
  883. /package/src/{path-refs.test.ts → text/path-refs.test.ts} +0 -0
@@ -0,0 +1,129 @@
1
+ // The single source for tunnel/preview hostnames and scheme, shared by the CLI, platform API, daemon and browser; pure
2
+ // string builders, no node imports, so the browser can derive identical names. All four must agree, or a divergence
3
+ // resolves to a negative-cached NXDOMAIN.
4
+
5
+ // The sandbox daemon's subdomain + hostname: `sandbox-<id>` / `sandbox-<id>.<zone>`.
6
+ const SANDBOX_PREFIX = "sandbox-";
7
+ export const sandboxSubdomain = (id: string): string => `${SANDBOX_PREFIX}${id}`;
8
+ export const sandboxHostname = (id: string, zone: string): string => `${sandboxSubdomain(id)}.${zone}`;
9
+
10
+ // The container sshd hostname the desktop-sync (Mutagen) reaches over the sandbox tunnel: `ssh-<id>.<zone>`.
11
+ export const sshHostname = (id: string, zone: string): string => `ssh-${id}.${zone}`;
12
+
13
+ // A public HTTPS name for 127.0.0.1, needed since Safari refuses http from an https page. One label deeper than other
14
+ // names, so a single `*.local.<zone>` wildcard covers every sandbox rather than needing a record each.
15
+ export const localHostname = (id: string, zone: string): string => `${id}.${LOCAL_LABEL}.${zone}`;
16
+
17
+ // The label the loopback names live under, so the wildcard has something to be a wildcard OF.
18
+ export const LOCAL_LABEL = "local";
19
+
20
+ // The single record that answers for all of them. Never per-sandbox, never reaped.
21
+ export const localWildcardHostname = (zone: string): string => `*.${LOCAL_LABEL}.${zone}`;
22
+
23
+ // What that record points at, and the reason it is safe to publish: every resolver on earth gets 127.0.0.1.
24
+ export const LOCAL_ADDRESS = "127.0.0.1";
25
+
26
+ // A per-host SSH tunnel's Cloudflare tunnel name; its hostname reuses sshHostname with the host-ssh id.
27
+ export const hostSshTunnelName = (id: string): string => `host-ssh-${id}`;
28
+
29
+ // The proxied-CNAME target every tunnel points its DNS record at.
30
+ export const cfargotunnelCname = (tunnelId: string): string => `${tunnelId}.cfargotunnel.com`;
31
+
32
+ // The cloudflared ingress catch-all; must be the last rule.
33
+ export const CATCH_ALL = { service: "http_status:404" } as const;
34
+
35
+ // Three schemes share one shape, `<label>-<sandboxId>.<zone>`: preview, port-forward (`port-<slot>`, salted,
36
+ // unguessable from the sandbox id alone), and outbox (`public-<slot>`, one record per sandbox).
37
+ export const previewLabel = (panel: string): string => `preview-${panel}`;
38
+ export const portLabel = (slot: string): string => `port-${slot}`;
39
+ export const publicLabel = (slot: string): string => `public-${slot}`;
40
+
41
+ // The hostname a label resolves to. Nothing mints it: the edge parses the sandbox id back out of the name.
42
+ export const labelHostname = (label: string, id: string, zone: string): string => `${label}-${id}.${zone}`;
43
+ export const previewHostname = (panel: string, id: string, zone: string): string => labelHostname(previewLabel(panel), id, zone);
44
+ export const portHostname = (slot: string, id: string, zone: string): string => labelHostname(portLabel(slot), id, zone);
45
+ export const publicHostname = (slot: string, id: string, zone: string): string => labelHostname(publicLabel(slot), id, zone);
46
+
47
+ // A label's public URL, undefined unless the sandbox has both a zone and an id (headless/loopback sandboxes advertise
48
+ // nothing). One builder, three vocabularies.
49
+ const labelUrl = (label: string, zone: string | undefined, sandboxId: string | undefined): string | undefined =>
50
+ zone !== undefined && zone !== "" && sandboxId !== undefined ? `https://${labelHostname(label, sandboxId, zone)}` : undefined;
51
+ export const previewUrl = (panel: string, zone: string | undefined, sandboxId: string | undefined): string | undefined =>
52
+ labelUrl(previewLabel(panel), zone, sandboxId);
53
+ export const portUrl = (slot: string, zone: string | undefined, sandboxId: string | undefined): string | undefined =>
54
+ labelUrl(portLabel(slot), zone, sandboxId);
55
+ export const publicUrl = (slot: string, zone: string | undefined, sandboxId: string | undefined): string | undefined =>
56
+ labelUrl(publicLabel(slot), zone, sandboxId);
57
+
58
+ // The key after `<prefix>` in the Host header; with an id, the label must end in the exact `-<sandboxId>` suffix so a
59
+ // key containing `-` stays unambiguous. Without one, the bare label is the key.
60
+ const keyFromHost = (prefix: string, hostHeader: string | undefined, sandboxId: string | undefined): string | undefined => {
61
+ const label = hostHeader?.split(":")[0]?.split(".")[0] ?? "";
62
+ if (!label.startsWith(prefix)) {
63
+ return undefined;
64
+ }
65
+ const key = label.slice(prefix.length);
66
+ if (sandboxId === undefined) {
67
+ return key === "" ? undefined : key;
68
+ }
69
+ const suffix = `-${sandboxId}`;
70
+ return key.length > suffix.length && key.endsWith(suffix) ? key.slice(0, -suffix.length) : undefined;
71
+ };
72
+
73
+ export const panelFromHost = (hostHeader: string | undefined, sandboxId: string | undefined): string | undefined =>
74
+ keyFromHost("preview-", hostHeader, sandboxId);
75
+ export const portSlotFromHost = (hostHeader: string | undefined, sandboxId: string | undefined): string | undefined =>
76
+ keyFromHost("port-", hostHeader, sandboxId);
77
+ export const publicSlotFromHost = (hostHeader: string | undefined, sandboxId: string | undefined): string | undefined =>
78
+ keyFromHost("public-", hostHeader, sandboxId);
79
+
80
+ // The sandbox's identity as the user sees it: the URL's leading DNS label minus the `sandbox-` prefix. On the
81
+ // own-Cloudflare path the label is whatever subdomain the owner chose, so that is the id there.
82
+ export const sandboxIdFromUrl = (url: string | undefined): string | undefined => {
83
+ if (url === undefined || url === "") {
84
+ return undefined;
85
+ }
86
+ const withScheme = /^[a-z][a-z0-9+.-]*:\/\//i.test(url) ? url : `https://${url}`;
87
+ let label: string;
88
+ try {
89
+ label = new URL(withScheme).hostname.split(".")[0] ?? "";
90
+ } catch {
91
+ return undefined;
92
+ }
93
+ if (label === "" || label === SANDBOX_PREFIX) {
94
+ return undefined;
95
+ }
96
+ return label.startsWith(SANDBOX_PREFIX) ? label.slice(SANDBOX_PREFIX.length) : label;
97
+ };
98
+
99
+ // Where desktop sync mirrors /work to: `~/intentic/<name>-<sandboxIdFromUrl>`. Keyed on the URL, not the name alone, so
100
+ // a sandbox recreated under the same name gets a fresh folder instead of colliding with the old one's.
101
+ export const syncFolder = (name: string, url: string | undefined): string => {
102
+ const slug =
103
+ name
104
+ .replace(/[^a-zA-Z0-9]+/g, "-")
105
+ .replace(/^-+|-+$/g, "")
106
+ .toLowerCase() || "sandbox";
107
+ const id = sandboxIdFromUrl(url);
108
+ return `~/intentic/${slug}${id === undefined ? "" : `-${id}`}`;
109
+ };
110
+
111
+ // The zone from a sandbox's public URL: the hostname minus its first DNS label. Undefined when unparsable or under
112
+ // three labels, so a two-label host doesn't yield a bare TLD; accepts scheme-less input too.
113
+ export const zoneFromUrl = (url: string | undefined): string | undefined => {
114
+ if (url === undefined || url === "") {
115
+ return undefined;
116
+ }
117
+ const withScheme = /^[a-z][a-z0-9+.-]*:\/\//i.test(url) ? url : `https://${url}`;
118
+ let hostname: string;
119
+ try {
120
+ hostname = new URL(withScheme).hostname;
121
+ } catch {
122
+ return undefined;
123
+ }
124
+ const labels = hostname.split(".");
125
+ if (labels.length < 3) {
126
+ return undefined;
127
+ }
128
+ return labels.slice(1).join(".");
129
+ };
@@ -0,0 +1,29 @@
1
+ // Names of the sessions one turn opens: a tmux session for Bash, a CDP-watched Chromium for browsing, both derived from
2
+ // the SDK session id and listed together by GET /system/terminals. Three parties derive this name (daemon, web app, an
3
+ // extension) and none may guess, so the derivation lives here, not copied.
4
+
5
+ export const WEB_SESSION_PREFIX = "web-";
6
+ export const AGENT_SESSION_PREFIX = "agent-";
7
+ export const JOB_SESSION_PREFIX = "job-";
8
+ export const BROWSER_SESSION_PREFIX = "browser-";
9
+
10
+ // Eight characters of the SDK session UUID, sanitized to the name-guard charset; groups a turn's work, including its
11
+ // subagents', under one name. Undefined when it sanitizes to empty.
12
+ export const sessionSuffix = (sessionId: string): string | undefined => {
13
+ const id = sessionId.replace(/[^A-Za-z0-9_-]/g, "").slice(0, 8);
14
+ return id === "" ? undefined : id;
15
+ };
16
+
17
+ // The tmux session one SDK session's Bash commands run in, the same derivation the Bash hook routes commands through,
18
+ // so an emitted `terminal` frame and the live session can't drift.
19
+ export const agentSessionName = (sessionId: string): string | undefined => {
20
+ const suffix = sessionSuffix(sessionId);
21
+ return suffix === undefined ? undefined : `${AGENT_SESSION_PREFIX}${suffix}`;
22
+ };
23
+
24
+ // The browser session one SDK session drives. Shares the suffix with agentSessionName on purpose: a conversation's
25
+ // shell and its browser read as the pair they are.
26
+ export const browserSessionName = (sessionId: string): string | undefined => {
27
+ const suffix = sessionSuffix(sessionId);
28
+ return suffix === undefined ? undefined : `${BROWSER_SESSION_PREFIX}${suffix}`;
29
+ };
@@ -0,0 +1,43 @@
1
+ // Where a shared conversation lives inside the outbox; the viewer's build, the daemon and the outbox's dot-file rule
2
+ // all agree on it.
3
+ // public/conversations/_viewer/ - the page's built assets, shared by every share
4
+ // public/conversations/<id>/ - index.html plus a files/ directory for its pictures
5
+ // A directory per share, not a bare file, so removing one removes all of it, pictures included.
6
+
7
+ // Top-level folder inside `public/`; reads as itself in the address bar, a string people paste to each other.
8
+ export const SHARE_DIR = "conversations";
9
+
10
+ // The one copy of the page's assets; underscored to sort away from shares, reading as machinery.
11
+ export const SHARE_VIEWER_DIR = "_viewer";
12
+
13
+ // Where a share's pictures sit relative to its own page; also the prefix every rewritten image path carries.
14
+ export const SHARE_FILES_DIR = "files";
15
+
16
+ // The absolute path the built assets are served from, and the `base` the page is built with.
17
+ export const SHARE_VIEWER_BASE = `/${SHARE_DIR}/${SHARE_VIEWER_DIR}/`;
18
+
19
+ // The id a share is filed under: a readable stem from the title, plus a random tail that is the only thing standing
20
+ // between a stranger and the conversation. The stem must never be relied on for that: it's guessable by construction.
21
+ const STEM_MAX = 48;
22
+
23
+ export const shareStem = (title: string): string => {
24
+ const stem = title
25
+ .toLowerCase()
26
+ .normalize("NFKD")
27
+ // Anything not a plain letter or digit becomes a separator, dropping accents, punctuation, emoji.
28
+ .replace(/[^a-z0-9]+/g, "-")
29
+ .replace(/^-+|-+$/g, "")
30
+ .slice(0, STEM_MAX)
31
+ .replace(/-+$/, "");
32
+ // A title with nothing left after stripping (CJK, emoji) leaves an empty stem; the id is the random half alone.
33
+ return stem;
34
+ };
35
+
36
+ // `<stem>-<random>`, or the random half alone when the title had no letters to give.
37
+ export const shareId = (title: string, random: string): string => {
38
+ const stem = shareStem(title);
39
+ return stem === "" ? random : `${stem}-${random}`;
40
+ };
41
+
42
+ // The shape a share id must have before joining it onto a path, same as transcript-record.ts's FILE_ID.
43
+ export const SHARE_ID = /^[a-z0-9][a-z0-9-]{0,95}$/;
@@ -18,34 +18,21 @@ test("a host ssh id is salted per host, so two deploy targets never collide", ()
18
18
 
19
19
  test("port slots are a fixed-size pool of DNS-safe labels, stable per token", () => {
20
20
  const slots = portSlotsFromToken(TOKEN);
21
- // Fixed size: the pool is the cap on preview DNS records a sandbox costs the shared zone.
22
21
  expect(slots).toHaveLength(PORT_SLOT_COUNT);
23
- // Every label must survive as one DNS label AND pass the platform's mint filter
24
- // (/^(preview|port)-[a-z0-9][a-z0-9-]*$/, ≤50 chars), which `port-<slot>` has to satisfy.
25
22
  for (const slot of slots) {
26
23
  expect(slot).toMatch(/^[0-9a-f]{12}$/);
27
24
  expect(`port-${slot}`).toMatch(/^port-[a-z0-9][a-z0-9-]*$/);
28
25
  expect(`port-${slot}`.length).toBeLessThanOrEqual(50);
29
26
  }
30
- // Distinct, or two forwards would fight over one hostname.
31
27
  expect(new Set(slots).size).toBe(PORT_SLOT_COUNT);
32
- // Stable: the daemon and the platform derive these independently and must agree, and a restart has to
33
- // land on the records already minted rather than orphaning them.
34
28
  expect(portSlotsFromToken(TOKEN)).toEqual(slots);
35
29
  });
36
30
 
37
- /* The whole point of the salt. The sandbox id is public: it is the leading label of the sandbox's own URL and
38
- * of every preview link its owner has shared, so anything derived from the id ALONE is derivable by whoever
39
- * holds one of those links. Slots must not be: knowing a sandbox's id must not tell you where its forwarded
40
- * ports live. */
41
31
  test("slots are not derivable from the sandbox id: only from the token behind it", () => {
42
32
  expect(portSlotsFromToken(OTHER)).not.toEqual(portSlotsFromToken(TOKEN));
43
- // No slot leaks the id it will be paired with in `port-<slot>-<sandboxId>`.
44
33
  const id = sandboxIdFromToken(TOKEN);
45
- // Load-bearing, and not merely tidy: `not.toContain(undefined)` is true of every slot list ever produced,
46
- // so without a real id the leak check below would pass on a function that had stopped deriving one at all.
34
+ // Guards a false pass: `not.toContain(undefined)` holds for any slot list, even from a broken id function.
47
35
  expect(id).toEqual(expect.any(String));
48
36
  expect(portSlotsFromToken(TOKEN)).not.toContain(id);
49
- // And none of them is the old fixed alphabet, which is what made the hostnames guessable.
50
37
  expect(portSlotsFromToken(TOKEN).some((slot) => slot.length === 1)).toBe(false);
51
38
  });
@@ -0,0 +1,29 @@
1
+ import { createHash } from "node:crypto";
2
+
3
+ // The one sha256-hex digest every stable content/token identity derives from (tunnel ids, token lookups, bridge-token
4
+ // hashes, hashline anchors). node:crypto makes this subpath node-only.
5
+ export const sha256Hex = (value: string): string => createHash("sha256").update(value).digest("hex");
6
+
7
+ // Twelve lowercase hex characters, a gate applied before trusting an id off the wire (a hostname, a ticket).
8
+ export const SANDBOX_ID = /^[0-9a-f]{12}$/;
9
+
10
+ // The sandbox's stable 12-hex id, digested from the connect token; every public hostname embeds it, and the platform's
11
+ // grant mint, tunnelId lookup and the desktop agent's loopback dial all must derive the identical value.
12
+ export const sandboxIdFromToken = (connectToken: string): string | undefined =>
13
+ connectToken === "" ? undefined : sha256Hex(connectToken).slice(0, 12);
14
+
15
+ // A per-host SSH tunnel's stable 12-hex id, salted with the host name so each enrolled deploy target gets its own
16
+ // ssh-<id>.<zone>. Shared by the CLI and the platform API, which must derive the identical id.
17
+ export const hostSshIdFromToken = (connectToken: string, hostName: string): string => sha256Hex(`${connectToken}:${hostName}`).slice(0, 12);
18
+
19
+ // Eight is enough for a monorepo's dev servers, and the hard cap on preview DNS records one sandbox can cost.
20
+ export const PORT_SLOT_COUNT = 8;
21
+
22
+ // Salted with the connect token, so a port's hostname isn't a pure function of the public sandbox id; any party holding
23
+ // the token derives it with no coordination. The browser never does: it reads `previewUrl` off the daemon.
24
+ export const portSlotsFromToken = (connectToken: string): readonly string[] =>
25
+ Array.from({ length: PORT_SLOT_COUNT }, (_, index) => sha256Hex(`${connectToken}:port:${index}`).slice(0, 12));
26
+
27
+ // Salted like the port slots, and matters more here: a published file sits there indefinitely. With no directory
28
+ // listing, reaching anything needs guessing both this label and a filename.
29
+ export const publicSlotFromToken = (connectToken: string): string => sha256Hex(`${connectToken}:public`).slice(0, 12);
package/src/index.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { ContractRoute } from "./routes.js";
2
- import { contractRoutes, requestPathFor, routeForProcedure, routeNameForRequest, routeShapes } from "./routes.js";
1
+ import type { ContractRoute } from "./protocol/routes.js";
2
+ import { contractRoutes, requestPathFor, routeForProcedure, routeNameForRequest, routeShapes } from "./protocol/routes.js";
3
3
  import { accountsContract } from "./contracts/accounts.contract.js";
4
4
  import { activityContract } from "./contracts/activity.contract.js";
5
5
  import { agentContract } from "./contracts/agent.contract.js";
@@ -54,19 +54,17 @@ export { extensionsContract } from "./contracts/extensions.contract.js";
54
54
  export { personasContract } from "./contracts/personas.contract.js";
55
55
  export { gitContract } from "./contracts/git.contract.js";
56
56
  export { historyContract } from "./contracts/history.contract.js";
57
- /* Deliberately NOT part of `sandboxContract` below: that map is the daemon's own HTTP surface, and this one is
58
- * spoken the other way round, over a connected device's WebSocket, with the MACHINE implementing it. */
57
+ // Not part of `sandboxContract` below: spoken over a device's WebSocket, with the machine implementing it.
59
58
  export { hostContract } from "./contracts/host.contract.js";
60
- // The same inversion again, one layer in: spoken over the socket a BROWSER EXTENSION opened, with the
61
- // extension implementing it (contracts/webext.contract.ts).
59
+ // Same inversion, spoken over a browser extension's socket, with the extension implementing it.
62
60
  export { webextContract } from "./contracts/webext.contract.js";
63
- // Same inversion, other direction of trust: spoken over a RUNNER's WebSocket, with the runner implementing it.
61
+ // Same inversion again: spoken over a runner's WebSocket, with the runner implementing it.
64
62
  export { runnerContract } from "./contracts/runner.contract.js";
65
63
  export { intenticContract } from "./contracts/intentic.contract.js";
66
64
  export { inventoryContract } from "./contracts/inventory.contract.js";
67
65
  export { issuesContract } from "./contracts/issues.contract.js";
68
66
  export { logsContract } from "./contracts/logs.contract.js";
69
- export { REQUEST_ID_EVIDENCE_ROUTE, REQUEST_ID_HEADER } from "./request-id.js";
67
+ export { REQUEST_ID_EVIDENCE_ROUTE, REQUEST_ID_HEADER } from "./protocol/request-id.js";
70
68
  export { loopsContract } from "./contracts/loops.contract.js";
71
69
  export { panelsContract } from "./contracts/panels.contract.js";
72
70
  export { portsContract } from "./contracts/ports.contract.js";
@@ -86,64 +84,54 @@ export { usageContract } from "./contracts/usage.contract.js";
86
84
  export { vpnContract } from "./contracts/vpn.contract.js";
87
85
  export { workflowsContract } from "./contracts/workflows.contract.js";
88
86
  export { workspaceContract } from "./contracts/workspace.contract.js";
89
- export * from "./events.js";
90
- export * from "./card-status.js";
91
- export * from "./mentions.js";
92
- export * from "./sse.js";
93
- export * from "./routes.js";
94
- /* THE CONTAINER'S FIXED DIRECTORY LAYOUT, re-exported so extensions can reach it.
95
- *
96
- * The names are defined once in @intentic/constants, which sits at the bottom of the dependency graph. An
97
- * EXTENSION may not import that package, the boundary rule (.oxlintrc.json, _extensions/README.md) allows
98
- * only the SDK halves and this contract, so that an extension cannot couple itself to app or engine internals.
99
- * That rule is right, and it left extensions with no way to name the workspace root except by spelling it.
100
- *
101
- * Re-exporting here is what closes that gap without widening the boundary: the layout is exactly the kind of
102
- * thing this package already carries, shared vocabulary both sides of the wire must agree on, alongside the
103
- * state-file table below, and there is still one definition, in one place, that everything resolves to. */
87
+ export * from "./events/agent-events.js";
88
+ export * from "./events/cards.js";
89
+ export * from "./events/resume.js";
90
+ export * from "./events/system-events.js";
91
+ export * from "./events/transcript.js";
92
+ export * from "./policy/card-status.js";
93
+ export * from "./text/mentions.js";
94
+ export * from "./protocol/sse.js";
95
+ export * from "./protocol/routes.js";
96
+ export * from "./policy/control-scopes.js";
97
+ // The container's directory layout, re-exported since extensions can't import @intentic/constants directly.
104
98
  export { HISTORY_ROOT, HOST_STATE_ROOT, STATE_DIR, WORKSPACE_ROOT } from "@intentic/constants";
105
- export * from "./workspace-state.js";
106
- export * from "./runtime-state.js";
107
- export * from "./state-portability.js";
108
- export * from "./history-state.js";
109
- /* THE PROVIDER VOCABULARY, bottom-up: what each agentic loop can do (agent-runtimes), the one row-per-provider
110
- * table built on those records (provider-specs), and the shapes each surface reads that table in
111
- * (agent-catalog). Exported as three modules rather than folded into one, because the arrow between them only
112
- * points one way and saying so here is what stops it curling back. */
113
- export * from "./agent-runtimes.js";
114
- export * from "./provider-specs.js";
115
- export * from "./agent-catalog.js";
116
- export * from "./capability-env.js";
117
- export * from "./command-classes.js";
118
- export * from "./command-run.js";
119
- export * from "./safety-policy.js";
120
- export * from "./credential-material.js";
121
- export * from "./capability-secrets.js";
122
- export * from "./conversation-ids.js";
123
- export * from "./documents.js";
124
- export * from "./fast-tier.js";
125
- export * from "./host-protocol.js";
126
- export * from "./webext-protocol.js";
127
- export * from "./webext-links.js";
128
- export * from "./runner-protocol.js";
129
- export * from "./listener-protocol.js";
130
- export * from "./hostnames.js";
131
- export * from "./overlay-lint.js";
132
- export * from "./model-order.js";
133
- export * from "./model-pins.js";
134
- export * from "./model-roles.js";
135
- export * from "./plan-pools.js";
136
- export * from "./path-refs.js";
137
- export * from "./prompt-complexity.js";
138
- export * from "./output-fields.js";
139
- export * from "./approvals-execution.js";
140
- /* The wire shapes, one module per subject area, mirroring `contracts/` above: every request and response the
141
- * daemon speaks is declared in exactly one of them. Inputs that carry a `{param}` in their route path (repo /
142
- * id / name) merge the path param into the same flat object, oRPC fills the path placeholder from the matching
143
- * key and routes the rest to the body (POST/PUT) or query (GET).
144
- *
145
- * `schemas/internal.ts` is deliberately absent: it holds the id and ref primitives these modules are written
146
- * in, which are vocabulary rather than shapes either side of the wire sends. */
99
+ export * from "./state/workspace-state.js";
100
+ export * from "./state/runtime-state.js";
101
+ export * from "./state/state-portability.js";
102
+ export * from "./state/history-state.js";
103
+ // Provider vocabulary bottom-up: agent-runtimes, provider-specs, agent-catalog; three modules since the dependency
104
+ // points one way.
105
+ export * from "./models/agent-runtimes.js";
106
+ export * from "./models/provider-specs.js";
107
+ export * from "./models/agent-catalog.js";
108
+ export * from "./policy/capability-env.js";
109
+ export * from "./policy/command-classes.js";
110
+ export * from "./policy/command-run.js";
111
+ export * from "./policy/safety-policy.js";
112
+ export * from "./policy/credential-material.js";
113
+ export * from "./policy/capability-secrets.js";
114
+ export * from "./ids/conversation-ids.js";
115
+ export * from "./text/documents.js";
116
+ export * from "./models/fast-tier.js";
117
+ export * from "./protocol/host-protocol.js";
118
+ export * from "./protocol/webext-protocol.js";
119
+ export * from "./protocol/webext-links.js";
120
+ export * from "./protocol/runner-protocol.js";
121
+ export * from "./protocol/listener-protocol.js";
122
+ export * from "./protocol/container-requirements.js";
123
+ export * from "./ids/hostnames.js";
124
+ export * from "./policy/overlay-lint.js";
125
+ export * from "./models/model-order.js";
126
+ export * from "./models/model-pins.js";
127
+ export * from "./models/model-roles.js";
128
+ export * from "./models/plan-pools.js";
129
+ export * from "./text/path-refs.js";
130
+ export * from "./models/prompt-complexity.js";
131
+ export * from "./policy/output-fields.js";
132
+ export * from "./policy/approvals-execution.js";
133
+ // Wire shapes, one module per subject area, mirroring `contracts/`; a `{param}` in the route path merges into the same
134
+ // flat object, split back into path/body/query. `schemas/internal.ts` is absent: it's vocabulary, not a wire shape.
147
135
  export * from "./schemas/activity.js";
148
136
  export * from "./schemas/agent.js";
149
137
  export * from "./schemas/agents.js";
@@ -153,7 +141,6 @@ export * from "./schemas/capabilities.js";
153
141
  export * from "./schemas/ci.js";
154
142
  export * from "./schemas/claude-gate.js";
155
143
  export * from "./schemas/codebase-health.js";
156
- export * from "./schemas/context.js";
157
144
  export * from "./schemas/devices.js";
158
145
  export * from "./schemas/engines.js";
159
146
  export * from "./schemas/environment.js";
@@ -194,18 +181,19 @@ export * from "./schemas/workspace-repos.js";
194
181
  export * from "./schemas/workspace-search.js";
195
182
  export * from "./schemas/workspace-setup.js";
196
183
  export * from "./schemas/workspace-tree.js";
197
- export * from "./arrival.js";
198
- export * from "./definition.js";
199
- export * from "./search-globs.js";
200
- export * from "./starter.js";
201
- export * from "./terminal-protocol.js";
202
- export * from "./title.js";
203
- export * from "./versions.js";
204
- export * from "./workflow-faults.js";
184
+ export * from "./state/arrival.js";
185
+ export * from "./state/definition.js";
186
+ export * from "./policy/search-globs.js";
187
+ export * from "./state/starter.js";
188
+ export * from "./protocol/terminal-protocol.js";
189
+ export * from "./text/title.js";
190
+ export * from "./state/versions.js";
191
+ export * from "./text/model-answer.js";
192
+ export * from "./text/whisper.js";
193
+ export * from "./text/workflow-faults.js";
205
194
 
206
- // The aggregated contract, implemented on the server by the per-domain route factories and consumed by the
207
- // browser's typed oRPC client (ContractRouterClient<typeof sandboxContract>). The wire paths it declares are
208
- // mounted at the sandbox root, so /health and /workspace/raw (plain Hono routes) sit alongside it.
195
+ // The aggregated contract; implemented server-side by per-domain route factories, consumed by the browser's typed oRPC
196
+ // client. Mounted at the sandbox root, alongside plain Hono routes like /health and /workspace/raw.
209
197
  export const sandboxContract = {
210
198
  accounts: accountsContract,
211
199
  activity: activityContract,
@@ -247,26 +235,21 @@ export const sandboxContract = {
247
235
  workflows: workflowsContract,
248
236
  };
249
237
 
250
- // Every route in THIS build of the contract, and the names the daemon advertises on its hello frame. Bound here
251
- // rather than in routes.ts so that module stays a pure function of whatever contract it is handed, importing
252
- // `sandboxContract` from there would close a load-time cycle back through this file. See routes.ts for why a
253
- // daemon advertises its route surface at all.
238
+ // Every route in this build, and the names advertised on the hello frame; bound here, not in routes.ts, to avoid a
239
+ // load-time cycle back through this file.
254
240
  export const SANDBOX_ROUTES: readonly ContractRoute[] = contractRoutes(sandboxContract);
255
241
  export const SANDBOX_ROUTE_NAMES: readonly string[] = SANDBOX_ROUTES.map((route) => route.name);
256
242
 
257
- /* And the SHAPE of each of those routes, advertised beside the names for the failure the names cannot describe:
258
- * a route both builds have, answering a payload only one of them expects. Computed once at module load, it
259
- * walks every contract schema through `z.toJSONSchema`, which is far too much work to repeat per connection and
260
- * exactly the kind of thing that never changes for the life of a process. See routes.ts. */
243
+ // Each route's shape, for the failure names alone can't describe: a route both builds have, but whose payload only one
244
+ // expects. Computed once at load, since it's too expensive to repeat per connection.
261
245
  export const SANDBOX_ROUTE_SHAPES: Readonly<Record<string, string>> = routeShapes(sandboxContract);
262
246
 
263
247
  // The contract route a concrete browser request belongs to, bound to this build's route table.
264
248
  export const sandboxRouteName = (method: string, pathWithQuery: string): string | undefined =>
265
249
  routeNameForRequest(SANDBOX_ROUTES, method, pathWithQuery);
266
250
 
267
- // The method and concrete path a TYPED call is about to put on the wire, bound to this build's route table.
268
- // Undefined when the procedure is not one this contract declares, which a typed caller cannot reach, the host
269
- // gate treats it as a refusal rather than assuming it is harmless.
251
+ // The method and path a typed call is about to send, bound to this build's route table. Undefined for an undeclared
252
+ // procedure; the host gate then refuses it rather than assuming it's harmless.
270
253
  export const sandboxRequestFor = (procedure: readonly string[], input: unknown): { method: string; path: string } | undefined => {
271
254
  const route = routeForProcedure(SANDBOX_ROUTES, procedure);
272
255
  return route === undefined ? undefined : { method: route.method, path: requestPathFor(route, input) };