@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,419 +0,0 @@
1
- /* WHAT EACH AGENTIC LOOP CAN DO, one record per runtime, and nothing about WHICH PROVIDER runs on it.
2
- *
3
- * Seven runtimes serve turns behind one seam (AgentRequest in, AgentEvent frames out): the Claude Code Agent SDK
4
- * loop, Codex app-server, OpenCode (twice, once per channel), Cursor's own loop run in-process, any ACP agent,
5
- * and Pi's RPC surface. They do NOT do the same things, and for a long time the only thing that said so was a
6
- * comment inside each adapter, "Ignores the Claude-only request fields", which no surface above it could read.
7
- * So the composer offered "Ask before each file edit" on a runtime whose every tool call is pre-approved, and
8
- * offered a reasoning-effort scale to a runtime that drops the field.
9
- *
10
- * A capability is listed here only if something READS it: the daemon gates a seam on it, the composer hides or
11
- * clamps a control by it, or `limitationsOf` tells the user about it. That is the whole point, an ability the
12
- * matrix claims and nothing consults is how the drift started.
13
- *
14
- * THIS FILE IS THE BOTTOM OF THE PROVIDER GRAPH and imports nothing from the rest of the contract, which is
15
- * what lets provider-specs.ts name these records while schemas/agent.ts reads its provider vocabulary back out
16
- * of that table. A runtime knows nothing about providers; a provider names two runtimes. Keeping the arrow
17
- * pointing one way is the whole reason the records live apart from the catalog that reads them.
18
- *
19
- * Adding a provider is a row in provider-specs.ts pointing at two of these, not a hunt for literals;
20
- * agent-catalog.test.ts walks PROVIDERS × HARNESSES and demands one, so a pair can never be silently absent. */
21
-
22
- // An execution backend: one way a turn runs work of its own, named for the AgentCapabilities.execution axis
23
- // and for the persona switch that grants it. Adding a language is a member here and a backend in the daemon's
24
- // execution/ module, never a new one-off tool wired where nothing else can see it.
25
- export type ExecutionBackend = "shell" | "js";
26
-
27
- export interface AgentCapabilities {
28
- // Which agentic loop actually serves the turn, the question "is the harness `claude-code`" only looks like.
29
- // Claude is always its own Claude Code loop and Kimi has no native runtime, so both run it whatever harness
30
- // the client sent; codex/grok/gemini each have a native runtime to switch away from. Names the session store
31
- // a finished conversation's transcript is backfilled from, too.
32
- //
33
- // `opencode-gemini` is the OpenCode loop pointed at Gemini rather than at xAI, and it is a SEPARATE runtime
34
- // id from `opencode` on purpose: adapter health is keyed by this field (adapter-health.ts), so sharing one
35
- // would make Grok's xAI credential decide whether the picker greys out Gemini, and the reverse.
36
- readonly runtime: "claude-code" | "codex" | "opencode" | "opencode-gemini" | "acp" | "pi" | "cursor";
37
- // Mid-turn injection (the SteeringQueue behind /agent/steer). Needs the SDK's streaming-input mode.
38
- readonly steering: boolean;
39
- // How much of the permission-mode axis the runtime honours. "modes" = every PermissionMode, with per-tool
40
- // permission cards and `mode` frames when the agent moves itself; "plan" = propose-then-approve or run, and
41
- // nothing in between, the container is the isolation boundary and every tool call is pre-approved.
42
- readonly permissions: "modes" | "plan";
43
- // Can stop mid-turn and ask the user a multiple-choice question (`question` frames).
44
- readonly questions: boolean;
45
- /* Which of the turn's tools reach the agent. "full" = http MCP tools + in-process SDK servers + plugin
46
- * checkouts + the browser servers; "tools" = all of that EXCEPT plugin checkouts; "browser" = the
47
- * process-backed browser servers alone; "http" = the http MCP tools alone, and only if the agent advertises
48
- * http MCP support; "none" = the runtime has no seam for them at all. Keeping the partial answers distinct
49
- * matters: a runtime that can drive a connected account must not be described as tool-less, and one that
50
- * cannot host daemon-side SDK servers must not claim full.
51
- *
52
- * "tools" exists for the Cursor runtime and would have been a lie either way without it. Cursor's SDK takes
53
- * stdio AND http/sse MCP servers, and its `customTools` run host callbacks in this process, which is the
54
- * seam an in-process SDK server needs, so calling it "browser" would understate it by three whole
55
- * categories. What it genuinely cannot host is a Claude Code PLUGIN checkout: that is a directory layout the
56
- * Agent SDK loads, not a protocol, and no other runtime will ever read one. So the gap is real, permanent
57
- * and worth its own word rather than being rounded to "full". */
58
- readonly mcp: "full" | "tools" | "browser" | "http" | "none";
59
- /* WHICH EXECUTION BACKENDS THE RUNTIME HOSTS, the ways a turn RUNS things, as opposed to the tools it is
60
- * handed. "shell" is the runtime's own command tool (Bash on the Claude Code loop, each foreign loop's
61
- * equivalent); "js" is the sandbox's JavaScript backend (execution/ in the daemon): the model writes a
62
- * script instead of a command line, and the daemon runs it in a permission-fenced Node subprocess.
63
- *
64
- * A first-class axis rather than a corollary of `mcp`, because the two answer different questions: `mcp`
65
- * says which TOOLS reach the model's context, this says which ways of EXECUTING the daemon can stand
66
- * behind for this runtime, with the same guard, secret and persona seams the shell gets. A runtime that
67
- * cannot host a backend simply never shows it, and the persona switch for it (PersonaPowersSchema.code)
68
- * then has nothing to grant there. */
69
- readonly execution: readonly ExecutionBackend[];
70
- // Reasoning-effort selection is forwarded to the model.
71
- readonly effort: boolean;
72
- /* The runtime can serve a turn at fast speed when asked (AgentTurn.fast). A statement about the LOOP, not
73
- * about the route: the Claude Code loop knows how to ask for it, which is why every provider this record
74
- * hands the loop to reads true here, including the ones served through the translator, whose turns the
75
- * harness will then refuse fast mode for because a translator endpoint is not first-party. That second
76
- * question is answered where the endpoint is decided (planHarnessTurn), because it is a fact about the
77
- * CREDENTIAL rather than about the runtime, and this record is a pure function of (provider, harness). */
78
- readonly fastMode: boolean;
79
- // How an isolated conversation's worktree is enforced. "namespace" = the worktree IS /work inside the turn's
80
- // mount namespace (with the tool-input rewrite as the fallback when the container can't build one); "cwd" =
81
- // the turn is merely cwd'd into the worktree, so an absolute /work path still reaches the shared checkout,
82
- // which is why those turns are told where their tree is (turn-preamble.ts).
83
- readonly isolation: "namespace" | "cwd";
84
- // Publishes its slash commands (`commands` frames) for the composer's `/` popover.
85
- readonly commands: boolean;
86
- // Runs its shell in a tmux session the terminal panel can attach to (`terminal` frames).
87
- readonly terminals: boolean;
88
- // Fails with the coded frames the daemon's auto-resume keys off (rate_limit, provider-outage), so a turn the
89
- // provider killed is re-run once the breaker says the provider is back (turn-resume.ts).
90
- readonly recovery: boolean;
91
- /* HOW MUCH OF ITS STANDING INSTRUCTIONS THIS RUNTIME WILL TAKE FROM US, the axis behind the sandbox's
92
- * system-prompt setting (SandboxSettings.systemPromptMode) and the persona's own override.
93
- *
94
- * It exists because that setting was silently a Claude Code setting. The composer offers Codex, Grok and
95
- * Gemini on their own runtimes, and a turn on any of them ignored the prompt the owner had written without
96
- * saying so anywhere, the one failure mode a settings page cannot recover from, because nothing on screen
97
- * is wrong. Naming it here means every surface reads the same answer and the daemon composes to it
98
- * (agent/system-prompt.ts), rather than each learning the exception separately.
99
- *
100
- * "replace", the whole base prompt can be swapped for the owner's text, and extra guidance appended on
101
- * top of whichever base is in force. The Claude Code loop (SDK `systemPrompt`) and native
102
- * Codex (`model_instructions_file` replaces its base; `developer_instructions` adds a
103
- * developer message, both verified on the wire against codex-cli 0.147).
104
- * "append" , extra system text only; the runtime's own base prompt stands. OpenCode takes one per
105
- * message (`system` on the prompt body), and there is no seam for replacing its base.
106
- * "none" , no system seam at all. What must still reach the model (the persona note) rides the user
107
- * message instead, which is the door the delegation note already uses.
108
- *
109
- * The BASE CHOICE. Intentic's prompt or Claude Code's, is a "replace" runtime's question and, of those,
110
- * only the Claude Code loop's: Codex's own base describes Codex's own tools, so swapping it for a prompt
111
- * written about another harness is the owner's deliberate act (their custom text), never ours. */
112
- readonly instructions: "replace" | "append" | "none";
113
- /* HOW THIS RUNTIME DISCOVERS THE WORKSPACE'S LOADED SKILLS.
114
- *
115
- * "native", the runtime scans one of the filesystem projections itself: `.agents/skills/` for Codex,
116
- * `.claude/skills/` for the Claude Code loop. Its own loader injects the catalogue and reads
117
- * the matching SKILL.md on demand, so adding our own note would duplicate it.
118
- * "prompt", the runtime has no loader the daemon can rely on. turn-plan.ts puts the same name,
119
- * description and absolute SKILL.md path into the opening user-message preamble. This is a
120
- * separate axis from `instructions`: Pi and ACP take no system prompt at all, while OpenCode
121
- * and Cursor take an append, but all four still need skill discovery. */
122
- readonly skillDiscovery: "native" | "prompt";
123
- /* WHETHER THE OWNER'S SAFETY POLICY REACHES THIS RUNTIME (the document at .intentic/config/safety.md, read
124
- * by the judge in agent/command-judge.ts, delivered by guard/command-gate.ts).
125
- *
126
- * It exists because the policy is silently a Claude Code policy without it. The gate is a PreToolUse hook,
127
- * which is an Agent SDK seam, so an owner whose policy says "ask before force-pushing" was asked on a Claude
128
- * turn and never on a Codex, Grok, Gemini, Pi or ACP one, with nothing on screen saying so. Same failure
129
- * mode as the `instructions` axis above, and the same fix: name it once, let every surface read it.
130
- *
131
- * "hooks" , the runtime's own pre-execution hook carries the verdict and an ASK can park the call.
132
- * The Claude Code loop, whose PreToolUse hook fires even under bypassPermissions.
133
- * "approval" , the vendor publishes a per-call approval channel the daemon answers from the same
134
- * policy, and an ask parks on a card because the vendor is blocked on the answer
135
- * (Codex's `item/commandExecution/requestApproval`, ACP's `session/request_permission`).
136
- * Weaker than "hooks" in one stated way: the vendor decides WHICH calls it asks about, so a
137
- * command it never raises is one the policy cannot see. What it does raise is judged by
138
- * the same judge.
139
- * "refuse-only", the same channel, but the vendor puts a CLOCK on the wait, so a hold cannot park and
140
- * arrives as a refusal instead. OpenCode's turn has an inactivity watchdog that reads a
141
- * paused approval as a stalled turn; a card there would break the turn rather than gate it.
142
- * `refuse` verdicts work fully; an `ask` stops the command and says it could not ask.
143
- * "none" , the runtime publishes no seam before it runs a command, so no policy can apply. Pi runs
144
- * its bash in-process with no approval channel at all.
145
- *
146
- * The taint bit rides this axis too: a runtime with no consult has no place to hand the judge its facts,
147
- * which is why `conversationTainted` must read a "none" runtime as tainted rather than as clean
148
- * (guard/turn-taint.ts). */
149
- readonly rulebook: "hooks" | "approval" | "refuse-only" | "none";
150
- /* WHETHER A STORED CREDENTIAL IS MASKED IN WHAT THIS RUNTIME'S MODEL READS (secrets/secret-registry.ts and
151
- * the two seams around it).
152
- *
153
- * "masked" is the full round trip: every stored value is replaced by its `{{secret:name}}` reference on the
154
- * way into the model's context, and the same reference resolves back to the value at the two exits that
155
- * spend it (a shell command, a script). The Claude Code loop, via PostToolUse and PreToolUse.
156
- *
157
- * "none" is a STRUCTURAL limit, not an unfinished wire, and it is the reason this axis is honest rather
158
- * than aspirational. On every other runtime the tool runs inside the VENDOR'S own loop: the model has read
159
- * the result before the daemon sees any frame about it, so there is no seam left to rewrite. A PostToolUse
160
- * hook is the only thing that can edit what a model reads, and only the Claude Code loop has one. Nothing
161
- * about wiring more transports changes that, which is why the answer here is a disclosure and the real fix
162
- * is to stop putting credentials where a vendor's tool can read them at all.
163
- *
164
- * Read by limitationsOf, and by agent/system-prompt.ts, which must not teach the reference language to a
165
- * runtime that has no exit for it. */
166
- readonly secrets: "masked" | "none";
167
- }
168
-
169
- // The Claude Code Agent SDK loop, the ceiling every other runtime is measured against, and the only one that
170
- // owns the whole request: permission callbacks, the ask tool, plugins, hooks, and the spawn seam a mount
171
- // namespace needs.
172
- export const CLAUDE_CODE: AgentCapabilities = {
173
- runtime: "claude-code",
174
- steering: true,
175
- permissions: "modes",
176
- questions: true,
177
- mcp: "full",
178
- // The one loop with a seam the daemon can put its own backend through, so it hosts the JS backend beside
179
- // its Bash. Every other runtime below hosts only its own shell.
180
- execution: ["shell", "js"],
181
- effort: true,
182
- fastMode: true,
183
- isolation: "namespace",
184
- commands: true,
185
- terminals: true,
186
- recovery: true,
187
- instructions: "replace",
188
- skillDiscovery: "native",
189
- // The only runtime with a pre-execution hook of its own, which is why it is the only one where a HOLD can
190
- // park the call and wait for a card rather than having to refuse it.
191
- rulebook: "hooks",
192
- secrets: "masked",
193
- };
194
-
195
- /* Codex app-server: item-level events, process-backed MCP servers, and the four interactive seams its protocol
196
- * actually publishes, `turn/steer` for mid-turn injection, the experimental `item/tool/requestUserInput` server
197
- * request behind a question card, `skills/list` for the `/` popover (a picked command rides back as a structured
198
- * skill input), and the same mount namespace the Claude Code loop gets, because app-server is a child process
199
- * the adapter spawns and nsenter can put it in the turn's namespace like any other.
200
- *
201
- * Browser servers ride the per-thread config; daemon-side SDK servers, plugins and server-initiated APPROVALS
202
- * stay unwired, the container is the isolation boundary, so approvals are declined by design rather than
203
- * missing (codex-app-server.ts refuses every server request but the question one). */
204
- export const CODEX: AgentCapabilities = {
205
- runtime: "codex",
206
- steering: true,
207
- permissions: "plan",
208
- questions: true,
209
- mcp: "browser",
210
- execution: ["shell"],
211
- effort: true,
212
- fastMode: false,
213
- isolation: "namespace",
214
- commands: true,
215
- terminals: false,
216
- recovery: false,
217
- /* Both halves, through the per-thread `config` block the adapter already sends: `model_instructions_file`
218
- * takes the place of Codex's own base prompt, `developer_instructions` arrives as an extra developer
219
- * message ahead of its skills and team blocks. Verified against codex-cli 0.147 by reading what actually
220
- * reached the wire, the keys are undocumented, and a strings dump proves only that they parse. */
221
- instructions: "replace",
222
- skillDiscovery: "native",
223
- /* App-server publishes `item/commandExecution/requestApproval`, whose params carry the command text, and
224
- * takes `accept`/`decline` back (codex-cli 0.147's own generated JSON Schema, read with
225
- * `codex app-server generate-json-schema`). The daemon only asks Codex to raise those requests when the
226
- * owner has written command rules, so an unconfigured workspace keeps `approvalPolicy: "never"` and pays
227
- * nothing (codex/codex-agent.ts threadOptions). */
228
- rulebook: "approval",
229
- secrets: "none",
230
- };
231
-
232
- // OpenCode (the Grok runtime): its own agentic loop, its own tools, allow-all permissions. It takes a model id,
233
- // a prompt and one system message of ours, no effort scale, no tools of ours, no command list.
234
- export const OPENCODE: AgentCapabilities = {
235
- runtime: "opencode",
236
- steering: false,
237
- permissions: "plan",
238
- questions: false,
239
- mcp: "none",
240
- execution: ["shell"],
241
- effort: false,
242
- fastMode: false,
243
- isolation: "cwd",
244
- commands: false,
245
- terminals: false,
246
- recovery: false,
247
- // `system` on the prompt body, per message. It ADDS to OpenCode's own prompt, there is no seam for
248
- // replacing that, so a custom prompt lands here as extra instructions, and the settings page says so
249
- // rather than letting "replaces everything" quietly mean something else on two providers.
250
- instructions: "append",
251
- skillDiscovery: "prompt",
252
- /* OpenCode asks over its own permission channel (`permission.updated`, replied on
253
- * `/session/{id}/permissions/{permissionID}`, vocabulary once/always/reject), and the daemon judges what it
254
- * raises with the same decide fn every other runtime uses.
255
- *
256
- * REFUSE-ONLY because of its watchdog, not because of its protocol. A Grok/Gemini turn is aborted after two
257
- * minutes without an event for its session (grok/grok-agent.ts GROK_INACTIVITY_MS), and a permission paused
258
- * on a person is exactly that silence, so a parked card would turn "ask me" into a broken turn. A `deny`
259
- * rule is enforced in full; a `hold` stops the command and tells the agent it could not be asked about. */
260
- rulebook: "refuse-only",
261
- secrets: "none",
262
- };
263
-
264
- /* The same OpenCode loop, serving Gemini instead of xAI, identical abilities, which is the point of giving it
265
- * its own row rather than its own record shape.
266
- *
267
- * It exists because the alternative was Gemini's ONLY route being the Claude Code loop, and that loop announces
268
- * itself to whatever it is pointed at: the CLI prepends its own "You are a Claude agent, built on Anthropic's
269
- * Claude Agent SDK." to every request, baked into the binary with no option to suppress it. Google's Antigravity
270
- * channel matches that exact sentence and refuses the request, reported as a quota error, which sent the
271
- * translator walking all 31 connected accounts looking for one with room, ~60s per attempt, none of which could
272
- * ever have answered. Under this runtime the request carries OpenCode's own prompt, so the turn is simply not
273
- * Claude Code traffic and the block has nothing to match.
274
- *
275
- * The credential is unchanged: both harnesses reach Google through the translator and the same auth files. Only
276
- * the loop around the model differs. */
277
- export const OPENCODE_GEMINI: AgentCapabilities = {
278
- ...OPENCODE,
279
- runtime: "opencode-gemini",
280
- };
281
-
282
- // Any agent speaking the Agent Client Protocol: a documented floor rather than the native ceiling. It publishes
283
- // commands, runs its terminals in the conversation's tmux session, and takes our http MCP tools when it says it
284
- // can, but it owns its own model, effort and permission posture.
285
- export const ACP: AgentCapabilities = {
286
- runtime: "acp",
287
- steering: false,
288
- permissions: "plan",
289
- questions: false,
290
- mcp: "http",
291
- execution: ["shell"],
292
- effort: false,
293
- fastMode: false,
294
- isolation: "cwd",
295
- commands: true,
296
- terminals: true,
297
- recovery: false,
298
- // ACP's `session/new` and `session/prompt` carry no system field: the agent owns its own instructions the
299
- // same way it owns its model and its permission posture. The persona note takes the user message instead.
300
- instructions: "none",
301
- skillDiscovery: "prompt",
302
- /* `session/request_permission` is in the protocol floor, so every conforming agent has the channel and the
303
- * daemon answers it from the rulebook (acp/acp-permissions.ts). The caveat the "approval" value already
304
- * carries is at its widest here: WHICH calls an agent asks about is entirely the agent's choice, and one
305
- * that never asks is one no rule can reach. */
306
- rulebook: "approval",
307
- secrets: "none",
308
- };
309
-
310
- // Pi driven over its RPC mode (`pi --mode rpc`, strict-LF JSONL over stdio): above the ACP floor and below the
311
- // Claude Code ceiling. Its `steer` command is real mid-turn injection; `set_thinking_level` takes the effort
312
- // tiers; `get_commands` publishes its extension/skill commands. It has no MCP seam (Pi's own extensions are its
313
- // tool surface), no approval channel (plan is the shared two-phase emulation), and runs bash in-process, no
314
- // tmux session for the terminal panel to attach to.
315
- export const PI: AgentCapabilities = {
316
- runtime: "pi",
317
- steering: true,
318
- permissions: "plan",
319
- questions: false,
320
- mcp: "none",
321
- execution: ["shell"],
322
- effort: true,
323
- fastMode: false,
324
- isolation: "cwd",
325
- commands: true,
326
- terminals: false,
327
- recovery: false,
328
- // Pi's RPC opens a session with a prompt and steers it; nothing in that protocol sets standing
329
- // instructions, so like ACP it hears the persona note through the user message.
330
- instructions: "none",
331
- skillDiscovery: "prompt",
332
- /* THE ONE RUNTIME WITH NO SEAM AT ALL. Pi runs bash in-process and its RPC publishes no approval request,
333
- * so there is nothing to consult before a command runs and no rule the owner writes can apply here. Said
334
- * out loud rather than left to be discovered: limitationsOf renders it, and the taint floor treats a "none"
335
- * runtime as permanently tainted, because a bit nobody can act on is worse than no bit. */
336
- rulebook: "none",
337
- secrets: "none",
338
- };
339
-
340
- /* CURSOR'S OWN AGENT RUNTIME, driven through `@cursor/sdk`, the SDK Anysphere publishes, in this daemon's own
341
- * process. The second-richest row in this file after the Claude Code loop, and the reason is the SDK rather
342
- * than the vendor: it is an EMBEDDING surface, not a CLI wrapped in a pipe, so most of the seams the other
343
- * foreign runtimes lack are simply function arguments here.
344
- *
345
- * WHY NOT THROUGH OPENCODE, which is already in this image and already serves two providers. Every Cursor
346
- * bridge for OpenCode is a community reverse-engineering of Cursor's private agent RPC or a localhost shim
347
- * around its CLI, and the OPENCODE record above is the weakest in this file. Routing Cursor through it would
348
- * have capped a first-party SDK at Grok's ceiling and made the row depend on a third party's spare time.
349
- *
350
- * WHY THE HARNESS AXIS DOESN'T APPLY, the same way it doesn't for Gemini, and for the mirror-image reason.
351
- * Gemini has no Claude Code route because Google refuses that traffic; Cursor has none because there is no
352
- * translator route at all, CLIProxyAPI does not serve Cursor as a provider (asked for repeatedly upstream and
353
- * closed as not planned), and Cursor publishes no OpenAI-compatible endpoint on a subscription. The SDK IS the
354
- * only door, so `capabilitiesOf` answers this record whatever harness the client sent.
355
- *
356
- * The three axes below that read weaker than they could are deliberate, not unfinished: see the notes on each. */
357
- export const CURSOR: AgentCapabilities = {
358
- runtime: "cursor",
359
- // The SDK's Run can be cancelled but not written to mid-flight: a second `send` on a busy agent is an
360
- // AgentBusyError, not an injection. So the steering queue has nowhere to go and the composer hides it.
361
- steering: false,
362
- /* Cursor's OWN plan mode (`mode: "agent" | "plan"`), not this repo's two-phase emulation, which is the
363
- * better version of the same bargain: the model is put in a read-only posture by the vendor rather than
364
- * being asked to behave.
365
- *
366
- * Not "modes", and that is the honest half. The hook seam below can gate shell, MCP, file reads and file
367
- * edits, which is most of the tool surface but not all of it, and a per-tool posture with a silent gap in
368
- * it is worse than one that says where it stops. */
369
- permissions: "plan",
370
- /* TRUE BECAUSE WE SUPPLY THE TOOL, not because Cursor's own askQuestion is wired. That one is put in
371
- * `disallowedTools`: in a headless run it has been reported to answer itself with a fabricated "Questions
372
- * skipped by the user", which is the single worst failure shape available here, an agent acting on consent
373
- * nobody gave. The ask tool the daemon registers through `customTools` runs in this process, parks on a
374
- * real card, and cannot invent an answer because it is the thing that receives one. */
375
- questions: true,
376
- // stdio + http/sse MCP servers, plus host callbacks through `customTools` (which is where the browser stack
377
- // and the in-process SDK servers land). Everything but a Claude Code plugin checkout, see the axis note.
378
- mcp: "tools",
379
- execution: ["shell"],
380
- /* Cursor publishes effort as MODEL PARAMETERS rather than as one scale (`ModelListItem.parameters` /
381
- * `variants` → `ModelSelection.params`), so the shared tiers are mapped onto whatever the selected model
382
- * declares, and a model that declares none simply offers no control. True here because the axis is
383
- * forwardable at all; which tiers exist is the live catalog's answer, not this record's. */
384
- effort: true,
385
- fastMode: false,
386
- /* "cwd", and this is the one place the SDK's in-process design costs something. A namespace is built around
387
- * a CHILD the daemon spawns (that is how the Claude Code loop and Codex app-server get theirs); Cursor's
388
- * loop runs inside the daemon, whose own /work must stay the shared checkout, so an isolated conversation
389
- * gets its worktree by working directory and the turn is told where its tree is (turn-preamble.ts). */
390
- isolation: "cwd",
391
- // Cursor's commands are files on disk (`.cursor/commands`), which the SDK loads but does not publish back,
392
- // so there is no list to hand the `/` popover.
393
- commands: false,
394
- // The SDK runs its shell in-process; there is no tmux session for the terminal panel to attach to.
395
- terminals: false,
396
- // The SDK throws typed errors (RateLimitError and friends) rather than dissolving a refusal into prose, so
397
- // the adapter can file the coded frames auto-resume keys off.
398
- recovery: true,
399
- /* "append", the OpenCode answer, reached by a completely different road. There is no system-prompt argument
400
- * on `Agent.create`; what there is, is the `beforeSubmitPrompt` hook, whose reply carries
401
- * `additional_context` that is folded into the request. So the owner's prompt and the persona note DO reach
402
- * the model, on top of Cursor's own base prompt, and nothing can replace that base. */
403
- instructions: "append",
404
- skillDiscovery: "prompt",
405
- /* THE FULL HOOK TIER, the only foreign runtime that reaches it. Cursor reads `.cursor/hooks.json` in its
406
- * local runtime, and `beforeShellExecution` answers with `allow` / `deny` / `ask` plus the messages that
407
- * explain it, with `failClosed` available so a crashed gate blocks instead of waving the command through.
408
- *
409
- * What earns "hooks" rather than "approval" is that a HOLD can genuinely park: the hook is a process the
410
- * daemon wrote, so it blocks on the card and the vendor is simply waiting on a script, exactly the shape
411
- * that makes the Claude Code loop's PreToolUse hook able to stop and ask. The vendor never decides which
412
- * calls to raise, either, which is the caveat the "approval" tier carries and this one does not. */
413
- rulebook: "hooks",
414
- /* "none", and structurally so, like every other foreign runtime. Masking needs a seam that rewrites what
415
- * the model READS after a tool ran; Cursor's `afterShellExecution` fires with the output but its reply is
416
- * discarded upstream, and `beforeReadFile` sees the content only to allow or deny it. Both are gates, not
417
- * filters, so there is nothing here to substitute a reference back into. */
418
- secrets: "none",
419
- };
@@ -1,96 +0,0 @@
1
- /* HOW AN APPROVED THING GETS DONE, the shared half, written once because the daemon acts on it, the app draws
2
- * it, and the two have to agree on the same seconds.
3
- *
4
- * THERE IS NO EXECUTOR AUTOMATION, and its absence is the design. Publishing used to be a scheduled automation:
5
- * a cron waking every few minutes, running a shell guard over the queue directory, almost always finding
6
- * nothing, a job whose entire job was to ask "yet?" forever. It also made the approve button conditional on a
7
- * row in a list nobody had asked for: delete the automation and approvals silently went nowhere, with the
8
- * button still there and still saying yes. The daemon owns execution (approvals-executor.ts). It knows the
9
- * moment an item comes due because it is the process that wrote it, so it sleeps until exactly then and costs
10
- * nothing in between.
11
- *
12
- * APPROVAL IS NOT "DO IT NOW", IT IS "DO IT UNLESS I STOP YOU". A post is public and permanent the instant it
13
- * lands, a booking is charged, and the gap between realising and clicking is about two seconds, so an approved
14
- * item carrying no date of its own is dated HOLD into the future, and the queue counts it down in the open. The
15
- * hold is stored as an ordinary scheduledAt rather than as a new state, which is what keeps it honest: it
16
- * survives a restart, it reads as one number in the same place a scheduled item's date is already read, and
17
- * calling it off is the "put it back in review" click that was there before any of this.
18
- *
19
- * A MINUTE, because that is the whole width of the decision: long enough to catch the wrong word you see the
20
- * moment the row stops being a form, short enough that approving something still feels like doing it. */
21
- export const APPROVAL_HOLD_MS = 60_000;
22
-
23
- /* WHO CAN BE SENT BY CODE ALONE. A connector reached through a real API with a stored credential is a request
24
- * the daemon can make itself, no model, no browser, no turn, and it either got a 200 or it did not. A
25
- * connector that IS a logged-in browser session (reddit, x) has no such door: posting there means driving a
26
- * page whose markup moves under you, past dialogs and rate screens nobody can enumerate in advance, which is
27
- * precisely the work an agent turn exists to absorb.
28
- *
29
- * So the split follows what the platform actually offers rather than what would be cheaper, and it is stated
30
- * here rather than guessed at a call site, because being wrong in the optimistic direction means a post that
31
- * silently never goes out. A platform absent from this set is published by an agent turn, which always works
32
- * and merely costs more. */
33
- export const DIRECT_PUBLISH_PLATFORMS: ReadonlySet<string> = new Set(["discord"]);
34
-
35
- // The workspace-relative directory both prompts below name, spelled once.
36
- const APPROVALS_DIR = ".intentic/config/approvals";
37
-
38
- // The status bookkeeping every executing turn is told, identical across kinds so the file the queue reads back
39
- // is the same shape whoever wrote it.
40
- const WRITE_BACK = [
41
- `Before you act on one, set its "status" to "running" and "startedAt" to the epoch ms, so a turn that dies`,
42
- `here cannot do it twice. When it is done, set "status":"done" plus "finishedAt" (epoch ms) and, where`,
43
- `there is one, "result": the post's URL, a confirmation number, whatever a person would want to go and`,
44
- `look at. If it failed, set "status":"failed" plus an "error" saying what went wrong in plain words the`,
45
- `owner can act on, then move to the next one instead of retrying in a loop.`,
46
- ];
47
-
48
- /* WHAT THE PUBLISH TURN IS TOLD, for the posts no API can carry. It NAMES the files rather than saying "go and
49
- * look": the daemon has already decided what is due, and a turn that re-derives that decision can disagree
50
- * with it, sending something the owner pulled back a second ago, or skipping something it judged not ready.
51
- * The turn's job is the part only it can do, which is working the platform's own UI.
52
- *
53
- * It still writes the outcome back into the file, because the file is where the queue reads it, and a post
54
- * that went out without saying so is a post the owner sends twice. */
55
- export const publishTurnPrompt = (posts: readonly { readonly id: string; readonly platform: string }[]): string =>
56
- [
57
- `Publish these approved posts, which are due now. They live in ${APPROVALS_DIR}/, one JSON file each:`,
58
- ``,
59
- ...posts.map((post) => `- ${post.id}.json (${post.platform})`),
60
- ``,
61
- `Take them ONE AT A TIME, and for each:`,
62
- `1. Read the file. ${WRITE_BACK[0]}`,
63
- ` ${WRITE_BACK[1]}`,
64
- `2. Post exactly its "content": with its "title", "target" and "media", using that platform's skill.`,
65
- ` A "target" that is a URL means this post is a REPLY to whatever is at it: open that exact URL and`,
66
- ` reply where it lands. On reddit a comment permalink (.../comments/<post>/<slug>/<comment>/) has to`,
67
- ` nest under that comment rather than becoming a new top-level comment on the thread.`,
68
- `3. ${WRITE_BACK[2]} ${WRITE_BACK[3]}`,
69
- ` ${WRITE_BACK[4]}`,
70
- ``,
71
- `Never rewrite the content: the owner approved these exact words. Never touch a file not listed above.`,
72
- ].join(`\n`);
73
-
74
- /* WHAT THE ACTION TURN IS TOLD. The same discipline as a publish turn, named files, status written before and
75
- * after, with the work itself coming from the file: the agent that proposed the action wrote its own
76
- * instructions for this moment, knowing this turn would arrive with none of the conversation. The owner's yes
77
- * covered what `summary` and `details` said, so the instructions are carried out as written and nothing beyond
78
- * them is done; an action that turns out to need more than it said is failed with that sentence, not
79
- * improvised. */
80
- export const actionTurnPrompt = (actions: readonly { readonly id: string; readonly summary: string }[]): string =>
81
- [
82
- `Carry out these approved actions, which are due now. They live in ${APPROVALS_DIR}/, one JSON file each:`,
83
- ``,
84
- ...actions.map((action) => `- ${action.id}.json: ${action.summary}`),
85
- ``,
86
- `Take them ONE AT A TIME, and for each:`,
87
- `1. Read the file. ${WRITE_BACK[0]}`,
88
- ` ${WRITE_BACK[1]}`,
89
- `2. Do exactly what its "instructions" say. The owner approved what "summary" and "details" describe and`,
90
- ` nothing more: if carrying it out would need something they do not say, stop and fail it with that`,
91
- ` reason rather than improvising.`,
92
- `3. ${WRITE_BACK[2]} ${WRITE_BACK[3]}`,
93
- ` ${WRITE_BACK[4]}`,
94
- ``,
95
- `Never touch a file not listed above.`,
96
- ].join(`\n`);