@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,23 +1,14 @@
1
1
  // maintenance: the standing evidence a chore is decided from
2
2
  import { z } from "zod";
3
3
  import { WorkspaceHotspotSchema, WorkspaceKeyModuleSchema } from "./codebase-health.js";
4
- /* THE DAEMON SERVES FACTS; THE BROWSER DECIDES. Everything below is measurement, what a tool reported, what the
5
- * manifests say, when a chore last ran. Not one field here says "you should do something", and that is the whole
6
- * boundary: which chore is DUE is computed by @intentic/sandbox-contract/chores, which both the Maintenance view and its rail
7
- * badge run, so the number on the tile and the reason in the panel can never disagree. Put the verdict on the wire
8
- * instead and a daemon one image behind would be quietly arguing with the browser about what needs doing.
9
- *
10
- * The split inside the evidence is by COST, not by subject:
11
- * probes subprocesses (pnpm outdated, pnpm audit, knip, jscpd), minutes, so they are cached on disk with a
12
- * TTL and refreshed by a background runner. A route hit never waits on one.
13
- * signals things the daemon already knows, the resident iq index's health ranking, the package manifests it
14
- * reads for the dependency graph, its own node version. Recomputed per request; all of it is cheap. */
4
+ // The daemon serves facts, never a verdict: which chore is due is computed by shared code
5
+ // (`@intentic/sandbox-contract/chores`) so the tile and panel can't disagree. Split by cost: probes (subprocesses,
6
+ // cached with a TTL) vs signals (cheap, recomputed per request).
15
7
 
16
8
  export const PROBE_IDS = ["outdated", "audit", "knip", "jscpd", "ui", "bundle", "mutation"] as const;
17
9
  export const ProbeIdSchema = z.enum(PROBE_IDS);
18
10
  export type ProbeId = z.infer<typeof ProbeIdSchema>;
19
- // One dependency the registry has moved past. `kind` is the SEMVER distance, which is the whole reason this is
20
- // not one number: forty patch releases behind is a morning's work and one major is a project.
11
+ // `kind` is the semver distance; that's why this isn't collapsed to one number.
21
12
  export const OutdatedPackageSchema = z.object({
22
13
  name: z.string().describe("The dependency."),
23
14
  current: z.string().describe("What you are on."),
@@ -27,14 +18,12 @@ export const OutdatedPackageSchema = z.object({
27
18
  .describe(
28
19
  "How far apart those are. This is not one number because forty patch releases behind is a morning's work and one major version is a project.",
29
20
  ),
30
- // "dependencies" / "devDependencies" / "optionalDependencies", a dev-only major is a different risk.
21
+ // "dependencies" / "devDependencies" / "optionalDependencies".
31
22
  section: z
32
23
  .string()
33
24
  .describe("Which part of the manifest declares it. A major version behind on a build-time tool is a different risk from one that ships."),
34
25
  });
35
26
  export type OutdatedPackage = z.infer<typeof OutdatedPackageSchema>;
36
- // One advisory, reduced to what a decision needs. No CVSS vector and no reference list: those are for reading on
37
- // the advisory page, and carrying them would put a kilobyte of prose per finding on every poll of this route.
38
27
  export const AdvisorySchema = z.object({
39
28
  name: z.string().describe("The dependency it concerns."),
40
29
  severity: z.enum(["critical", "high", "moderate", "low", "info"]).describe("How bad it is said to be."),
@@ -43,29 +32,22 @@ export const AdvisorySchema = z.object({
43
32
  .describe(
44
33
  "What it is, in one line. No scoring vector and no reference list: those are for reading on the advisory's own page, and carrying them would put a kilobyte of prose per finding on every poll.",
45
34
  ),
46
- // The range that fixes it, when the advisory names one. Absent ⇒ no patch published yet, which is the case
47
- // where a chore must NOT offer to bump and say so instead.
48
35
  patched: z
49
36
  .string()
50
37
  .optional()
51
38
  .describe(
52
39
  "Which versions fix it. Absent means no fix has been published, which is exactly when nothing should offer to upgrade and something should say so instead.",
53
40
  ),
54
- // Whether it reaches a production dependency path. A build-time-only tool's transitive CVE is a different
55
- // problem, and the chore's prompt says so rather than treating every advisory alike.
56
41
  dev: z.boolean().describe("Whether it only reaches build-time tooling, which is a different problem from one that reaches what you ship."),
57
42
  });
58
43
  export type Advisory = z.infer<typeof AdvisorySchema>;
59
- // knip's counts, by the kind of thing it found unreachable. Counts plus a sample rather than the full list: the
60
- // agent re-runs knip itself against the live tree (a list from a probe hours old would send it at files that are
61
- // already gone), so what travels here only has to be enough to decide whether the turn is worth starting.
44
+ // A stale sample could send the agent chasing files already gone; it re-runs knip live anyway.
62
45
  export const DeadCodeSchema = z.object({
63
46
  files: z.number().int().nonnegative().describe("Files nothing reaches."),
64
47
  exports: z.number().int().nonnegative().describe("Exported things nothing uses."),
65
48
  types: z.number().int().nonnegative().describe("Types nothing uses."),
66
49
  dependencies: z.number().int().nonnegative().describe("Declared dependencies nothing imports."),
67
50
  devDependencies: z.number().int().nonnegative().describe("The same, for build-time ones."),
68
- // A handful of the unreferenced files, for the panel to show instead of asking the reader to take "31" on faith.
69
51
  sample: z
70
52
  .array(z.string())
71
53
  .describe(
@@ -73,8 +55,6 @@ export const DeadCodeSchema = z.object({
73
55
  ),
74
56
  });
75
57
  export type DeadCode = z.infer<typeof DeadCodeSchema>;
76
- // jscpd's headline plus the biggest clones. `percentage` is of scanned lines, which is the figure a threshold is
77
- // worth setting against, a clone COUNT grows with the repo and would mean something different every quarter.
78
58
  export const DuplicationSchema = z.object({
79
59
  percentage: z
80
60
  .number()
@@ -93,18 +73,11 @@ export const DuplicationSchema = z.object({
93
73
  .describe("The largest of them."),
94
74
  });
95
75
  export type Duplication = z.infer<typeof DuplicationSchema>;
96
- /* ONE SWEEP OF THE UI SOURCE, serving three chores. Component files, Tailwind classes that hard-code a value, and
97
- * files still on a replaced framework idiom are three questions about the same tree, and asking them in three
98
- * probes would walk it three times for nothing.
99
- *
100
- * Counts per FILE rather than the matched text. A reader deciding whether to open something is served better by
101
- * "Checkout.vue · 11 hard-coded values" than by eleven class attributes, and a file path is an identity a digest
102
- * can be built from while a class string is not. */
76
+ // One sweep serving three chores (components, hard-coded values, outdated idioms) rather than three probes walking the
77
+ // same tree three times.
103
78
  export const UiScanSchema = z.object({
104
- // Framework-shaped source files, tests, stories and generated output excluded. The inventory that makes a
105
- // duplication finding a COMPONENT duplication finding rather than a generic one.
79
+ // This inventory is what makes a duplication finding a component finding, not a generic one.
106
80
  components: z.array(z.string()).describe("The interface's own source files, with tests, stories and generated output left out."),
107
- // Where the design system was routed around, and how often in each file.
108
81
  bypasses: z
109
82
  .array(
110
83
  z.object({
@@ -115,9 +88,8 @@ export const UiScanSchema = z.object({
115
88
  .describe(
116
89
  "Where the design system was routed around and a value hard-coded instead. Counted per file, because a reader deciding what to open is served by a file and a number, not by eleven snippets.",
117
90
  ),
118
- // Files still on an idiom their framework has replaced, grouped by which one. `id` is looked up in the stack
119
- // table rather than enumerated here: the rules are a product decision that ships with the browser, and a
120
- // daemon an image behind must be able to report one this schema has never heard of.
91
+ // `id` is looked up in the stack table, not enumerated here, so an older daemon can still report an idiom this
92
+ // schema predates.
121
93
  idioms: z
122
94
  .array(
123
95
  z.object({
@@ -132,15 +104,8 @@ export const UiScanSchema = z.object({
132
104
  .describe("Files still written the way their framework has since replaced."),
133
105
  });
134
106
  export type UiScan = z.infer<typeof UiScanSchema>;
135
- /* WHAT THE LAST BUILD ACTUALLY PRODUCED. Measured from the build output already on disk, never by running the
136
- * build: a maintenance probe that mutates the owner's working tree, and `dist/` appearing in their `git status`
137
- * is exactly that, is a worse surprise than a measurement that is sometimes a commit behind. It also means this
138
- * never needs the env vars, secrets or network a real production build would.
139
- *
140
- * Gzip alongside raw because gzip is what crosses the wire, and the ratio between them is the difference between
141
- * "this chunk is big" and "this chunk is big and incompressible", which are different problems. */
107
+ // Read from build output on disk, never by building (no working-tree mutation, no env vars, secrets or network needed).
142
108
  export const BundleSchema = z.object({
143
- // Which directory was measured, so the panel can say what it is talking about rather than implying it built.
144
109
  dir: z
145
110
  .string()
146
111
  .describe(
@@ -165,43 +130,21 @@ export const BundleSchema = z.object({
165
130
  .describe("What is in it, piece by piece."),
166
131
  });
167
132
  export type Bundle = z.infer<typeof BundleSchema>;
168
- /* WHAT THE SUITE WOULD NOTICE IF THE CODE BROKE. Coverage says a line ran; this says an assertion depended on it.
169
- *
170
- * The distinction is the whole reason this probe exists, and it is not theoretical here. Measured on
171
- * sandbox-contract's chore module — 109 hand-written tests, every line covered — 16 of 58 mutants survived, and
172
- * one of them flips the zero boundary in `bucketOf` that digest.ts's own comment argues is load-bearing. The test
173
- * that was supposed to hold it (`expect(bucketOf(0)).not.toBe(bucketOf(1))`) is written in the careful,
174
- * deliberately un-brittle style, and that is exactly why it cannot see the change: with the boundary moved the two
175
- * values are still different, so the assertion still passes.
176
- *
177
- * That is the failure this measures and nothing else in the repository can. A linter sees the assertion's shape,
178
- * not its power; a coverage report sees the line, not whether anything checked it. Only killing the code and
179
- * watching what the suite says distinguishes a test from a test-shaped thing.
180
- *
181
- * SURVIVORS, NOT JUST A SCORE. A percentage is a mood; `bucketOf: count <= 0 → count < 0 survives` is a morning's
182
- * work with the answer already in it. The score decides whether the chore speaks, the survivors are what makes it
183
- * worth speaking about. */
133
+ // Coverage says a line ran; this says an assertion depended on it — the only way to tell a real test from a test-shaped
134
+ // one that can't see the code change under it.
184
135
  export const MutationScoreSchema = z.object({
185
136
  score: z
186
137
  .number()
187
138
  .describe("The share of injected faults the suite caught. Not a coverage figure: coverage says a line ran, this says an assertion depended on it."),
188
139
  killed: z.number().int().nonnegative().describe("Faults the suite caught."),
189
140
  survived: z.number().int().nonnegative().describe("Faults it did not: code that can be broken with every test still green."),
190
- /* Mutants that never got a verdict: ones that would not compile, and ones the configuration ignored. Kept
191
- * apart from both counts above, and OUT of the score, because an unmeasured mutant is not evidence either
192
- * way — the same conflation `unavailable` exists to prevent one level up.
193
- *
194
- * A timeout is deliberately NOT here. Stryker counts it as detected, on the reasoning that a mutant which
195
- * hangs the suite is one the suite noticed, and this follows Stryker's arithmetic rather than inventing a
196
- * second definition of the same word: the number on the row has to mean what the tool that produced it
197
- * means, or the row is quietly arguing with its own evidence. */
141
+ // A timeout counts as detected here (Stryker's own convention), not as inconclusive.
198
142
  inconclusive: z
199
143
  .number()
200
144
  .int()
201
145
  .nonnegative()
202
146
  .describe("Faults it never got a verdict on, because they would not compile or were configured out. Left out of the score entirely, since neither answer is known."),
203
- /* The worst offenders, named. Capped, and the cap is the point: a survivor list is only useful while it is
204
- * short enough to act on, and the rest are still there on the next run. */
147
+ // Capped on purpose: useful only while short enough to act on; the rest reappear next run.
205
148
  survivors: z
206
149
  .array(
207
150
  z.object({
@@ -214,21 +157,14 @@ export const MutationScoreSchema = z.object({
214
157
  .describe("The surviving faults themselves. A percentage is a mood; a named line with the change that went unnoticed is a morning's work."),
215
158
  });
216
159
  export type MutationScore = z.infer<typeof MutationScoreSchema>;
217
- /* One probe's cached result. The three states are deliberately distinct, because a panel that collapses them
218
- * lies about the most important case:
219
- * ok the tool ran and reported. `facts` carries its findings, including "nothing found", which is
220
- * a real answer and the one that keeps a chore quiet.
221
- * unavailable the tool is not part of this repo (knip is not a devDependency, there is no lockfile to audit).
222
- * Not a failure and not evidence of health: the chore renders as unmeasured, and can never badge.
223
- * failed the tool ran and broke, a network-less audit, a jscpd that ran out of memory. Says so, with
224
- * the tail of what it printed, rather than reading as "clean".
225
- * Merging `unavailable` into `ok`-with-zeros is how a maintenance surface ends up reporting a green repository
226
- * it has never actually measured. */
160
+ // One probe's cached state; collapsing these would lie about the most important case.
161
+ // ok: the tool ran and reported (including "nothing found", a real answer).
162
+ // unavailable: not part of this repo (no lockfile, tool not a dependency) — not evidence of health, never badges.
163
+ // failed: the tool ran and broke; says so, with the tail of its output.
227
164
  export const ProbeStateSchema = z.enum(["ok", "unavailable", "failed"]);
228
165
  export type ProbeState = z.infer<typeof ProbeStateSchema>;
229
- // The findings, discriminated by which probe produced them. Absent while the probe has never completed, and on
230
- // `unavailable`/`failed`, a reader must go through `state` to reach facts, so there is no shape in which a
231
- // missing measurement can be mistaken for a zero.
166
+ // Discriminated by probe id; absent until the probe completes. On unavailable/failed a reader must go through `state`,
167
+ // so a missing measurement can never look like a zero.
232
168
  export const ProbeFactsSchema = z.discriminatedUnion("id", [
233
169
  z.object({ id: z.literal("outdated"), packages: z.array(OutdatedPackageSchema) }),
234
170
  z.object({ id: z.literal("audit"), advisories: z.array(AdvisorySchema) }),
@@ -244,18 +180,13 @@ export const ProbeResultSchema = z.object({
244
180
  state: ProbeStateSchema.describe(
245
181
  "Whether the tool ran and reported, is not part of this repository at all, or broke. The middle one is not evidence of health: the check simply cannot be made here.",
246
182
  ),
247
- // When the probe last COMPLETED, the age the panel shows, and what the runner's TTL is measured from.
183
+ // Also what the runner's TTL is measured from.
248
184
  ranAt: z.number().describe("When it last finished, in milliseconds, which is what its age is measured from."),
249
- // How long it took. Shown because a seven-minute jscpd is why the tier-2 refresh is weekly, and a reader
250
- // deciding whether to force a refresh deserves to know what they are asking for.
185
+ // Slow probes are why some tiers refresh weekly rather than on every poll.
251
186
  tookMs: z.number().int().nonnegative().describe("How long it took. Worth knowing before asking for it again: some of these run for minutes."),
252
187
  facts: ProbeFactsSchema.optional().describe(
253
188
  "What it found, including finding nothing, which is a real answer and the one that keeps a chore quiet.",
254
189
  ),
255
- // On `failed`, how it broke, a bounded quote of the tool's own output, never a summary of it. On
256
- // `unavailable`, what is missing, in the probe spec's own words ("no lockfile"): there is no tool output to
257
- // quote when the tool never ran, and the alternative, a sentence built from the probe's name, would have an
258
- // unmeasured probe claiming there is nothing to measure.
259
190
  reason: z
260
191
  .string()
261
192
  .optional()
@@ -264,70 +195,41 @@ export const ProbeResultSchema = z.object({
264
195
  ),
265
196
  });
266
197
  export type ProbeResult = z.infer<typeof ProbeResultSchema>;
267
- // One workspace package as its manifest declares it, what the daemon already reads to build the dependency
268
- // graph, carried through so chores can reason about the repo's own shape without a probe. `documented` is the
269
- // one derived field: whether <dir>/README.md exists, a stat per package. A package's architecture document IS
270
- // its README in this workspace, which is what makes that a stat on the package itself rather than a lookup.
198
+ // One workspace package as its manifest declares it, carried through so chores can reason about the repo's shape
199
+ // without a probe.
271
200
  export const ChorePackageSchema = z.object({
272
201
  dir: z.string().describe("Where the package lives."),
273
202
  name: z.string().describe("What it declares itself as."),
274
- // The manifest's `engines` map, verbatim, the runtime chore compares it against what the daemon is running.
203
+ // Compared against the daemon's own runtime by the version chore.
275
204
  engines: z.record(z.string(), z.string()).optional().describe("Which runtime versions it says it needs, verbatim."),
276
205
  dependencies: z.array(z.string()).describe("What it depends on."),
277
206
  devDependencies: z.array(z.string()).describe("What it needs only to build."),
278
207
  documented: z.boolean().describe("Whether it has a README, which in this workspace is what a package's own documentation is."),
279
208
  });
280
209
  export type ChorePackage = z.infer<typeof ChorePackageSchema>;
281
- /* The cheap half of the evidence: what the daemon knows without starting anything. `hotspots` and `keyModules`
282
- * are the same rankings GET /workspace/health serves, capped tighter, a chore only ever asks whether a file has
283
- * ENTERED the top of the ranking, so a leaderboard is enough and a full report per repo per poll is not. */
284
- /* WHAT THIS REPOSITORY IS MADE OF, the facts that decide whether a chore is a QUESTION worth asking of it at
285
- * all, as opposed to whether the answer happens to be yes.
286
- *
287
- * The distinction is the difference between a maintenance surface that reads as attentive and one that reads as
288
- * generic. "Re-read the documentation against the code" in a repository with no documentation is not a chore
289
- * that is currently clear, it is a chore that will never make sense here, and showing it teaches the owner that
290
- * this list was written by someone who had not looked. Same for a Docker chore with no Dockerfile, or a CI chore
291
- * with no pipeline.
292
- *
293
- * These are all paths, deliberately: presence of a FILE is checkable, cheap, and cannot be argued with, which is
294
- * the same evidence-over-identity rule the extension activation facts follow. Every field is a list rather than a
295
- * boolean where the paths themselves are worth showing, a chore that says "not applicable: no Dockerfile" is
296
- * useful, and one that says "3 Dockerfiles: ./Dockerfile, _editor/web/Dockerfile, …" is more so. */
210
+ // The cheap half of the evidence: what the daemon already knows without starting anything (same rankings as GET
211
+ // /workspace/health, capped tighter).
212
+ // Facts that decide whether a chore is even a sensible question to ask, not whether the answer is yes. All paths, not
213
+ // booleans: file presence is cheap and checkable, and the paths themselves are worth showing.
297
214
  export const ChoreShapeSchema = z.object({
298
- // The repository MAP, when one exists (docs/architecture/*.md), capped, the count is what matters, and the
299
- // drift survey needs to know there is something to re-read. Package pages are READMEs and are counted per
300
- // package by `ChorePackage.documented`; a repo with a map has been through the documentation flow at all,
301
- // which is the question this gate actually asks.
215
+ // Distinct from package READMEs, counted per package by `ChorePackage.documented`.
302
216
  docs: z
303
217
  .array(z.string())
304
218
  .describe(
305
219
  "The repository's own architecture documents, when it has any. Their existence is the question: a repository with none has never been through the documentation flow at all.",
306
220
  ),
307
221
  dockerfiles: z.array(z.string()).describe("Container definitions in it."),
308
- // CI pipeline definitions: .github/workflows/*.yml, .gitlab-ci.yml, and the other single-file conventions.
222
+ // e.g. .github/workflows/*.yml, .gitlab-ci.yml.
309
223
  ci: z.array(z.string()).describe("Pipeline definitions in it."),
310
- // Whether dependencies are resolved to a lockfile, what makes an audit mean anything.
311
224
  lockfile: z.boolean().describe("Whether dependencies are pinned to exact versions, which is what makes a security audit mean anything."),
312
- // A package.json at the repo root. The gate for every chore whose subject is the JavaScript dependency tree:
313
- // a Rust or Go repository has no majors to be behind on and no engines field to be pinned by, and offering it
314
- // those chores would be this surface guessing at what it is looking at.
225
+ // Also gates the engines-version chore: a Rust/Go repo has none to pin.
315
226
  packageManifest: z
316
227
  .boolean()
317
228
  .describe(
318
229
  "Whether it is a JavaScript project at all. A Rust or Go repository has no majors to be behind on, and offering it those checks would be this surface guessing at what it is looking at.",
319
230
  ),
320
- /* EVERY DEPENDENCY NAME DECLARED ANYWHERE IN THE REPO, the root manifest's blocks unioned with every
321
- * workspace package's, sorted and deduplicated.
322
- *
323
- * It is here rather than derived from `packages` because `packages` is EMPTY for a repository that is not a
324
- * pnpm workspace, and the repositories these names exist to recognise, a Vite app, a Next app, an Angular
325
- * CLI project, are overwhelmingly single-package. A framework gate built on `packages` would be dark in
326
- * exactly the repositories it was written for, silently, which is the worst way for a gate to be wrong.
327
- *
328
- * NAMES, not a `framework: "react"` verdict. Which names amount to "this is a React app" is a product
329
- * decision, and product decisions live in the chore book that ships with the browser, a daemon baked into an
330
- * image months ago must not be the thing that decides Svelte is not a UI framework. */
231
+ // Not derived from `packages`, which is empty for a non-pnpm-workspace repo — exactly the single-package repos this
232
+ // exists to recognise.
331
233
  deps: z
332
234
  .array(z.string())
333
235
  .describe(
@@ -352,21 +254,14 @@ export const ChoreSignalsSchema = z.object({
352
254
  hotspots: z.number().describe("How many files qualify as hotspots at all."),
353
255
  })
354
256
  .describe("The repository in numbers."),
355
- // Whether the index these rankings came from is current. A chore must not fire on a half-built index, and
356
- // this is how the browser knows to hold its verdict rather than act on a partial ranking.
357
257
  indexed: z.boolean().describe("Whether the index these rankings came from is finished. Nothing should act on a half-built one."),
358
258
  });
359
259
  export type ChoreSignals = z.infer<typeof ChoreSignalsSchema>;
360
- // What a finished chore turn left behind, written by the agent, read back to decide whether the chore is still
361
- // due. `clean` is the important one: an agent that looked and found the tool's findings to be false positives
362
- // must be able to say so, or the next poll starts the same turn again forever.
260
+ // `clean` is the important value: without it, a false-positive finding restarts the same turn forever.
363
261
  export const ChoreOutcomeSchema = z.enum(["acted", "reported", "clean"]);
364
262
  export type ChoreOutcome = z.infer<typeof ChoreOutcomeSchema>;
365
- /* One chore's history in one repo. The DIGEST is what makes this a debounce rather than a suppression: it is a
366
- * hash of the evidence that was standing when the turn ran, so a chore whose evidence has since changed is due
367
- * again on its own merits while one whose evidence is unchanged stays quiet, with the run still visible in the
368
- * panel, saying when it ran and what it concluded. Nothing here can hide a chore from the view; it only decides
369
- * whether the rail is allowed to speak. */
263
+ // A debounce, not a suppression: unchanged evidence keeps the rail quiet, but the run stays visible in the panel
264
+ // regardless.
370
265
  export const ChoreLedgerEntrySchema = z.object({
371
266
  repo: z.string().describe("Which repository."),
372
267
  chore: z.string().describe("Which chore."),
@@ -380,8 +275,6 @@ export const ChoreLedgerEntrySchema = z.object({
380
275
  .describe(
381
276
  "A fingerprint of the evidence standing at the time. A chore whose evidence has since changed is due again on its own merits; one whose evidence has not stays quiet.",
382
277
  ),
383
- // Set by the owner from the panel, the chore stays visible and stays out of the badge until this passes.
384
- // Distinct from opting out, which is the absence of the chore from `enabled` in the sandbox's settings.
385
278
  snoozedUntil: z
386
279
  .number()
387
280
  .optional()
@@ -390,19 +283,11 @@ export const ChoreLedgerEntrySchema = z.object({
390
283
  ),
391
284
  });
392
285
  export type ChoreLedgerEntry = z.infer<typeof ChoreLedgerEntrySchema>;
393
- /* A measurement that is HAPPENING, as opposed to one that has happened. The probe cache can only ever describe
394
- * finished work, `ranAt` is the completion stamp, so a surface reading it alone has no way to say "we are
395
- * measuring this right now", and the panel's re-measure button spent its whole life looking like it did nothing:
396
- * the request is an ack, the sweep takes minutes, and every visible fact on the row went on describing the
397
- * measurement it was replacing.
398
- *
399
- * `startedAt` is when the probe actually began, absent while it is still waiting behind another one, the runner
400
- * has ONE lane across the whole sandbox, so "queued" is a real and common state, and a reader told "measuring"
401
- * about a probe that has not started is being lied to about how long it has left. */
286
+ // A measurement in progress, distinct from the cache's `ranAt` (only ever a completion stamp) — otherwise a reader has
287
+ // no way to say "measuring now".
402
288
  export const RunningProbeSchema = z.object({
403
289
  repo: z.string().describe("Which repository."),
404
290
  id: ProbeIdSchema.describe("Which measurement."),
405
- // When this was asked for. Always present, so a waiting probe can still say how long it has been waiting.
406
291
  askedAt: z.number().describe("When it was asked for, in milliseconds, so one still waiting can say how long it has waited."),
407
292
  startedAt: z
408
293
  .number()
@@ -412,9 +297,7 @@ export const RunningProbeSchema = z.object({
412
297
  ),
413
298
  });
414
299
  export type RunningProbe = z.infer<typeof RunningProbeSchema>;
415
- // GET /chores, every discovered repo's standing evidence, plus the ledger, in one read. One route rather than
416
- // one per repo because the rail badge scans ALL of them on a timer, and N requests a minute to answer "is
417
- // anything due" is the kind of poll that shows up in a battery graph.
300
+ // GET /chores: every discovered repo's standing evidence, plus the ledger, in one read.
418
301
  export const ChoresReportSchema = z.object({
419
302
  repos: z
420
303
  .array(
@@ -430,17 +313,11 @@ export const ChoresReportSchema = z.object({
430
313
  "Every repository's standing evidence. One answer for all of them, because a badge polls this on a timer and one request per repository is the kind of poll that shows up in a battery graph.",
431
314
  ),
432
315
  ledger: z.array(ChoreLedgerEntrySchema).describe("What has already been done about all of it."),
433
- // What the runner is measuring and what is waiting behind it, right now. Part of the standing read rather
434
- // than a route of its own: it is the same question ("what does this repo currently say") asked about work in
435
- // flight, and a panel that had to ask twice would show the two halves disagreeing.
436
316
  running: z
437
317
  .array(RunningProbeSchema)
438
318
  .describe(
439
319
  "What is being measured right now and what is waiting behind it. Part of this read rather than a route of its own, because a screen that had to ask twice would show the two halves disagreeing.",
440
320
  ),
441
- // The daemon's own runtime, for the chore that asks whether this sandbox is running something end-of-life.
442
- // Read off the process rather than a manifest: what is INSTALLED is the fact that matters, and an `engines`
443
- // range is a wish.
444
321
  node: z
445
322
  .string()
446
323
  .describe(
@@ -448,18 +325,16 @@ export const ChoresReportSchema = z.object({
448
325
  ),
449
326
  });
450
327
  export type ChoresReport = z.infer<typeof ChoresReportSchema>;
451
- // POST /chores/probe, force one probe to re-run now, ahead of its TTL. Returns immediately; the runner does the
452
- // work and the next GET /chores carries the result, the same shape the panel already polls.
328
+ // POST /chores/probe: force a re-run ahead of its TTL. Returns immediately; the result arrives on the next GET /chores.
453
329
  export const ChoreProbeRequestSchema = z.object({
454
330
  repo: z.string().min(1).describe("Which repository."),
455
331
  id: ProbeIdSchema.describe("Which measurement to retake, ahead of its usual schedule."),
456
332
  });
457
- // POST /chores/ledger, record a run, or snooze. Written daemon-side rather than by the browser so a chore turn
458
- // started from anywhere (the panel, an automation, the agent itself) lands in one ledger.
333
+ // POST /chores/ledger: record a run, or snooze. Daemon-written so a turn started from anywhere (panel, automation,
334
+ // agent) lands in one ledger.
459
335
  export const ChoreLedgerWriteSchema = ChoreLedgerEntrySchema;
460
- /* One publishability check and what it found. `warn` is a real third state, not a soft failure: the permissions
461
- * check has nothing to say about an extension nobody has exercised yet, and reporting that as a pass would be
462
- * the check lying at the exact moment it matters most. */
336
+ // `warn` is a real third state, not a soft failure: reporting "pass" when nothing has been exercised yet would be the
337
+ // check lying.
463
338
  export const ReadinessCheckSchema = z.object({
464
339
  id: z.string().describe("Which check."),
465
340
  label: z.string().describe("What it is called."),
@@ -1,66 +1,43 @@
1
1
  // panels: per-repository dev servers + the content facts extensions detect on
2
2
  import { z } from "zod";
3
- // Every discovered git repo under /work is one list row: its runnable-panel runtime status (a `dev` script at
4
- // operator/ or the repo root; the daemon runs it, auto-assigns a free port, and the preview proxy routes
5
- // preview-<panelKey>-<sandboxId>.<zone> to it) PLUS content facts, evidence the web app's extensions run their
6
- // detect() over, computed daemon-side in one pass so the browser never scans /work file-by-file.
3
+ // Every discovered repo under /work is one row: runnable-panel status (a `dev` script the daemon runs and auto-assigns
4
+ // a port, proxied at preview-<panelKey>-<sandboxId>.<zone>) plus content facts extensions run detect() over, computed
5
+ // daemon-side so the browser never scans /work.
7
6
 
8
- /* WHERE A START THE SANDBOX IS RUNNING HAS GOT TO, between the click and the first byte served. The process
9
- * manager watches the pane's foreground command every couple of seconds (processes/managed-processes.ts), and
10
- * these four words are what that sampling can honestly say: the shell is still coming up; the install that
11
- * runs first when node_modules is missing is still going; the dev command is running but nothing listens yet;
12
- * or the command has already exited back to a prompt, which is the one a person needs told at once, because
13
- * the "Preparing the preview…" it would otherwise sit behind never ends. Absent once the preview proxy has
14
- * something to serve, and absent for anything the sandbox is not starting. */
7
+ // Between click and first byte; `exited` matters most, since without it "Preparing the preview…" would never end.
8
+ // Absent once something serves.
15
9
  export const PanelLaunchSchema = z.enum(["launching", "installing", "starting", "exited"]);
16
10
  export type PanelLaunch = z.infer<typeof PanelLaunchSchema>;
17
11
 
18
12
  export const PanelSummarySchema = z.object({
19
- // The repo id: its root-relative dir under /work (slashes become `--` in the preview subdomain label).
13
+ // Root-relative dir under /work; slashes become `--` in the preview subdomain label.
20
14
  repo: z.string().describe("Which repository."),
21
- // Whether the repo ships a runnable dev server (a package.json `dev` script at operator/ or the root).
15
+ // A package.json `dev` script at operator/ or the repo root.
22
16
  hasPanel: z.boolean().describe("Whether it has anything runnable at all."),
23
17
  running: z.boolean().describe("Whether the sandbox has it running."),
24
- /* Whether its dependencies are on disk, a node_modules at the directory Start runs in. What decides what a
25
- * Start COSTS: seconds when true, an install first when false, and the Start screen's copy says which
26
- * instead of promising "a few minutes" over a tree that is already installed (the starter site's is: the
27
- * image bakes it). True for a repo with nothing runnable, which has nothing to install for. */
18
+ // True for a repo with nothing runnable — nothing to install for.
28
19
  installed: z
29
20
  .boolean()
30
21
  .describe("Whether its dependencies are installed, which is what decides whether a start takes seconds or an install first."),
31
22
  launch: PanelLaunchSchema.optional().describe(
32
23
  "Where a start the sandbox is running has got to: its shell coming up, installing, its dev command running with nothing listening yet, or exited back to a prompt. Absent when nothing is starting and once it serves.",
33
24
  ),
34
- // Whether anything this repo owns is answering, see `servers`. Not the same question as `running`: a panel
35
- // whose install is still going is running and not yet healthy, and a dev server someone started in their own
36
- // terminal is healthy without the daemon running it.
37
25
  healthy: z
38
26
  .boolean()
39
27
  .describe(
40
28
  "Whether anything it owns is actually answering. A different question: a server still installing is running and not yet healthy, and one somebody started by hand is healthy without the sandbox running it.",
41
29
  ),
42
- // The dev server's OS-assigned port; absent when not running. What the daemon TOLD the repo to bind (the
43
- // preview proxy forwards it), `servers` is what the repo actually bound, which for a repo that pins its own
44
- // ports is a different number entirely.
45
30
  port: z
46
31
  .number()
47
32
  .optional()
48
33
  .describe(
49
34
  "The port the sandbox told it to use. What it actually bound is below, and for a repository that pins its own ports those are different numbers.",
50
35
  ),
51
- // Every dev server the repo is really serving, discovered from the sandbox's listening sockets and probed for
52
- // the scheme each speaks (a Vite on a committed dev cert serves https). One entry for the ordinary repo; a
53
- // monorepo whose `dev` fans out across packages has one per app, which is why `dir` is here, `_editor/web` vs
54
- // `_site/site` is the only thing that tells them apart. Empty when nothing answers.
55
- //
56
- // `session` is the terminal it is running in: the panel's own when the daemon started it, the user's when
57
- // they ran it by hand, and ABSENT when nothing in the sandbox owns it. That last case is the one worth
58
- // designing for, the repo is plainly answering, and no terminal here can show, stop or restart it.
36
+ // One entry per app for a monorepo whose `dev` fans out across packages (`dir` is what tells them apart); `session`
37
+ // absent means nothing in the sandbox owns it, worth designing for.
59
38
  servers: z
60
39
  .array(
61
40
  z.object({
62
- // The port itself, not just the URL it appears in: forwarding one is how a repo answering on
63
- // several ports becomes previewable at all, and that call takes a number.
64
41
  port: z.number().describe("The port it is listening on, which is what forwarding it takes."),
65
42
  url: z.string().describe("Where it answers, with the right scheme: a server on its own certificate is served over https."),
66
43
  dir: z
@@ -78,26 +55,24 @@ export const PanelSummarySchema = z.object({
78
55
  }),
79
56
  )
80
57
  .describe("Every server this repository is really serving, found by looking at what is listening. Empty when nothing answers."),
81
- /* https://preview-<repo>-<sandboxId>.<zone>, and ONLY where that address actually serves this repo: absent
82
- * on a sandbox with no zone or connect token (loopback/tests), and absent whenever the preview proxy has
83
- * nothing to route it to — nothing running, still starting, or (the ordinary monorepo) several dev servers
84
- * on ports of their own, none of which one hostname can stand for. Present ⇒ safe to open or frame, which
85
- * is what stops a surface from showing a 502 as if it were the app. */
58
+ // `https://preview-<repo>-<sandboxId>.<zone>`; absent whenever no single hostname could stand for what's running
59
+ // (nothing up, still starting, several servers).
86
60
  previewUrl: z
87
61
  .string()
88
62
  .optional()
89
63
  .describe("Where to open it from outside, present only while that address really serves it. Absent on a sandbox with no outside address."),
90
- // The workspace role this repo dir occupies (the three fixed dirs); absent for extra clones.
91
64
  role: z
92
65
  .enum(["intent", "desired-state", "app"])
93
66
  .optional()
94
67
  .describe("Which of the workspace's three fixed roles this repository fills. Absent for one that was simply cloned in."),
95
- // Content facts: deploy.config.ts (the intent ledger's day-one marker), desired-state.json (present after
96
- // the first resolve), .intentic/ui/index.html (a sandboxed directory UI), pnpm-workspace.yaml +
97
- // turbo.json (a pnpm+turbo monorepo), vitest evidence (a root vitest.config.ts, or "vitest" in the
98
- // root manifest / workspace catalog), docs/user-stories (a directory of stories an agent can test
99
- // against the running app, the one fact here that says nothing about the repo's language), and
100
- // docs/architecture (the repo carries generated architecture documentation).
68
+ // Detected from specific files:
69
+ // deployConfig: deploy.config.ts.
70
+ // desiredState: desired-state.json (present after the first resolve).
71
+ // directoryUi: .intentic/ui/index.html.
72
+ // monorepo: pnpm-workspace.yaml + turbo.json.
73
+ // vitest: a root vitest.config.ts, or "vitest" in the manifest/workspace catalog.
74
+ // userStories: docs/user-stories.
75
+ // docs: docs/architecture.
101
76
  deployConfig: z.boolean().describe("It declares infrastructure."),
102
77
  desiredState: z.boolean().describe("That declaration has been resolved at least once."),
103
78
  directoryUi: z.boolean().describe("It carries a small interface of its own."),