@intentic/sandbox-contract 1.312.0 → 1.314.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 (352) hide show
  1. package/README.md +26 -3
  2. package/dist/chores/index.d.ts +0 -1
  3. package/dist/chores/index.d.ts.map +1 -1
  4. package/dist/chores/index.js +0 -1
  5. package/dist/chores/index.js.map +1 -1
  6. package/dist/contracts/accounts.contract.d.ts +57 -0
  7. package/dist/contracts/accounts.contract.d.ts.map +1 -1
  8. package/dist/contracts/agent.contract.d.ts +436 -0
  9. package/dist/contracts/agent.contract.d.ts.map +1 -1
  10. package/dist/contracts/agent.contract.js +11 -1
  11. package/dist/contracts/agent.contract.js.map +1 -1
  12. package/dist/contracts/agents.contract.d.ts +123 -96
  13. package/dist/contracts/agents.contract.d.ts.map +1 -1
  14. package/dist/contracts/capabilities.contract.js +1 -1
  15. package/dist/contracts/capabilities.contract.js.map +1 -1
  16. package/dist/contracts/device.contract.d.ts +20 -4
  17. package/dist/contracts/device.contract.d.ts.map +1 -1
  18. package/dist/contracts/device.contract.js +1 -1
  19. package/dist/contracts/device.contract.js.map +1 -1
  20. package/dist/contracts/extensions.contract.d.ts +11 -0
  21. package/dist/contracts/extensions.contract.d.ts.map +1 -1
  22. package/dist/contracts/git.contract.d.ts +2 -0
  23. package/dist/contracts/git.contract.d.ts.map +1 -1
  24. package/dist/contracts/personas.contract.d.ts +2 -0
  25. package/dist/contracts/personas.contract.d.ts.map +1 -1
  26. package/dist/contracts/runner.contract.d.ts +138 -0
  27. package/dist/contracts/runner.contract.d.ts.map +1 -1
  28. package/dist/contracts/secrets.contract.d.ts.map +1 -1
  29. package/dist/contracts/secrets.contract.js +1 -0
  30. package/dist/contracts/secrets.contract.js.map +1 -1
  31. package/dist/contracts/sessions.contract.d.ts +59 -0
  32. package/dist/contracts/sessions.contract.d.ts.map +1 -1
  33. package/dist/contracts/settings.contract.d.ts +12 -8
  34. package/dist/contracts/settings.contract.d.ts.map +1 -1
  35. package/dist/contracts/settings.contract.js +2 -2
  36. package/dist/contracts/settings.contract.js.map +1 -1
  37. package/dist/contracts/system.contract.d.ts +141 -19
  38. package/dist/contracts/system.contract.d.ts.map +1 -1
  39. package/dist/contracts/translator.contract.d.ts +72 -0
  40. package/dist/contracts/translator.contract.d.ts.map +1 -1
  41. package/dist/contracts/workspace.contract.d.ts +85 -14
  42. package/dist/contracts/workspace.contract.d.ts.map +1 -1
  43. package/dist/documents/index.d.ts +1 -0
  44. package/dist/documents/index.d.ts.map +1 -1
  45. package/dist/documents/index.js +1 -0
  46. package/dist/documents/index.js.map +1 -1
  47. package/dist/documents/read.d.ts +24 -0
  48. package/dist/documents/read.d.ts.map +1 -0
  49. package/dist/documents/read.js +81 -0
  50. package/dist/documents/read.js.map +1 -0
  51. package/dist/events/agent-events.d.ts +235 -0
  52. package/dist/events/agent-events.d.ts.map +1 -1
  53. package/dist/events/agent-events.js +3 -0
  54. package/dist/events/agent-events.js.map +1 -1
  55. package/dist/events/child-run.d.ts +9 -0
  56. package/dist/events/child-run.d.ts.map +1 -0
  57. package/dist/events/child-run.js +41 -0
  58. package/dist/events/child-run.js.map +1 -0
  59. package/dist/events/errands.d.ts +5 -0
  60. package/dist/events/errands.d.ts.map +1 -0
  61. package/dist/events/errands.js +19 -0
  62. package/dist/events/errands.js.map +1 -0
  63. package/dist/events/requests.d.ts +152 -0
  64. package/dist/events/requests.d.ts.map +1 -1
  65. package/dist/events/requests.js +26 -1
  66. package/dist/events/requests.js.map +1 -1
  67. package/dist/events/system-events.d.ts +8 -12
  68. package/dist/events/system-events.d.ts.map +1 -1
  69. package/dist/events/transcript.d.ts +387 -0
  70. package/dist/events/transcript.d.ts.map +1 -1
  71. package/dist/events/transcript.js +3 -0
  72. package/dist/events/transcript.js.map +1 -1
  73. package/dist/front/browser-wire.d.ts +6 -0
  74. package/dist/front/browser-wire.d.ts.map +1 -0
  75. package/dist/front/browser-wire.js +4 -0
  76. package/dist/front/browser-wire.js.map +1 -0
  77. package/dist/front/front-wire.d.ts +6 -0
  78. package/dist/front/front-wire.d.ts.map +1 -0
  79. package/dist/front/front-wire.js +5 -0
  80. package/dist/front/front-wire.js.map +1 -0
  81. package/dist/front/generated/browser-wire.d.ts +19 -0
  82. package/dist/front/generated/browser-wire.d.ts.map +1 -0
  83. package/dist/front/generated/browser-wire.js +2 -0
  84. package/dist/front/generated/browser-wire.js.map +1 -0
  85. package/dist/front/generated/wire.d.ts +36 -30
  86. package/dist/front/generated/wire.d.ts.map +1 -1
  87. package/dist/ids/conversation-ids.d.ts +1 -0
  88. package/dist/ids/conversation-ids.d.ts.map +1 -1
  89. package/dist/ids/conversation-ids.js +2 -2
  90. package/dist/ids/conversation-ids.js.map +1 -1
  91. package/dist/ids/session-names.d.ts +3 -0
  92. package/dist/ids/session-names.d.ts.map +1 -1
  93. package/dist/ids/session-names.js +3 -0
  94. package/dist/ids/session-names.js.map +1 -1
  95. package/dist/index.d.ts +1038 -168
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +8 -0
  98. package/dist/index.js.map +1 -1
  99. package/dist/models/agent-catalog.d.ts.map +1 -1
  100. package/dist/models/agent-catalog.js +4 -6
  101. package/dist/models/agent-catalog.js.map +1 -1
  102. package/dist/models/agent-runtimes.d.ts +2 -1
  103. package/dist/models/agent-runtimes.d.ts.map +1 -1
  104. package/dist/models/agent-runtimes.js +7 -1
  105. package/dist/models/agent-runtimes.js.map +1 -1
  106. package/dist/models/plan-pools.d.ts +22 -1
  107. package/dist/models/plan-pools.d.ts.map +1 -1
  108. package/dist/models/plan-pools.js +86 -0
  109. package/dist/models/plan-pools.js.map +1 -1
  110. package/dist/policy/request-status.d.ts +1 -1
  111. package/dist/policy/request-status.d.ts.map +1 -1
  112. package/dist/policy/request-status.js +4 -11
  113. package/dist/policy/request-status.js.map +1 -1
  114. package/dist/policy/reserved-servers.d.ts.map +1 -1
  115. package/dist/policy/reserved-servers.js +2 -1
  116. package/dist/policy/reserved-servers.js.map +1 -1
  117. package/dist/policy/turned-away.d.ts.map +1 -1
  118. package/dist/policy/turned-away.js +1 -0
  119. package/dist/policy/turned-away.js.map +1 -1
  120. package/dist/protocol/edge-verdict.d.ts +2 -1
  121. package/dist/protocol/edge-verdict.d.ts.map +1 -1
  122. package/dist/protocol/edge-verdict.js +1 -1
  123. package/dist/protocol/edge-verdict.js.map +1 -1
  124. package/dist/protocol/ingress-contract.d.ts +1 -1
  125. package/dist/protocol/ingress-contract.d.ts.map +1 -1
  126. package/dist/protocol/ingress-contract.js +1 -1
  127. package/dist/protocol/ingress-contract.js.map +1 -1
  128. package/dist/protocol/raw-routes.d.ts +18 -40
  129. package/dist/protocol/raw-routes.d.ts.map +1 -1
  130. package/dist/protocol/raw-routes.js +5 -16
  131. package/dist/protocol/raw-routes.js.map +1 -1
  132. package/dist/protocol/route-meta.d.ts +20 -0
  133. package/dist/protocol/route-meta.d.ts.map +1 -1
  134. package/dist/protocol/route-meta.js +16 -0
  135. package/dist/protocol/route-meta.js.map +1 -1
  136. package/dist/protocol/tunnel-bulk.d.ts +2 -0
  137. package/dist/protocol/tunnel-bulk.d.ts.map +1 -0
  138. package/dist/protocol/tunnel-bulk.js +3 -0
  139. package/dist/protocol/tunnel-bulk.js.map +1 -0
  140. package/dist/protocol/x402.d.ts +17 -0
  141. package/dist/protocol/x402.d.ts.map +1 -0
  142. package/dist/protocol/x402.js +37 -0
  143. package/dist/protocol/x402.js.map +1 -0
  144. package/dist/schemas/agent.d.ts +25 -0
  145. package/dist/schemas/agent.d.ts.map +1 -1
  146. package/dist/schemas/agent.js +14 -2
  147. package/dist/schemas/agent.js.map +1 -1
  148. package/dist/schemas/agents.d.ts +17 -18
  149. package/dist/schemas/agents.d.ts.map +1 -1
  150. package/dist/schemas/agents.js +17 -4
  151. package/dist/schemas/agents.js.map +1 -1
  152. package/dist/schemas/automations.d.ts +4 -6
  153. package/dist/schemas/automations.d.ts.map +1 -1
  154. package/dist/schemas/automations.js.map +1 -1
  155. package/dist/schemas/devices.d.ts +134 -7
  156. package/dist/schemas/devices.d.ts.map +1 -1
  157. package/dist/schemas/devices.js +43 -18
  158. package/dist/schemas/devices.js.map +1 -1
  159. package/dist/schemas/extension-updates.d.ts +22 -0
  160. package/dist/schemas/extension-updates.d.ts.map +1 -1
  161. package/dist/schemas/extension-updates.js +4 -0
  162. package/dist/schemas/extension-updates.js.map +1 -1
  163. package/dist/schemas/git/git.d.ts +3 -0
  164. package/dist/schemas/git/git.d.ts.map +1 -1
  165. package/dist/schemas/hosts.d.ts +35 -5
  166. package/dist/schemas/hosts.d.ts.map +1 -1
  167. package/dist/schemas/hosts.js +21 -7
  168. package/dist/schemas/hosts.js.map +1 -1
  169. package/dist/schemas/keep-warm.d.ts +2 -12
  170. package/dist/schemas/keep-warm.d.ts.map +1 -1
  171. package/dist/schemas/keep-warm.js +8 -10
  172. package/dist/schemas/keep-warm.js.map +1 -1
  173. package/dist/schemas/metrics.d.ts +24 -0
  174. package/dist/schemas/metrics.d.ts.map +1 -1
  175. package/dist/schemas/metrics.js +22 -3
  176. package/dist/schemas/metrics.js.map +1 -1
  177. package/dist/schemas/personas.d.ts +3 -0
  178. package/dist/schemas/personas.d.ts.map +1 -1
  179. package/dist/schemas/personas.js +9 -0
  180. package/dist/schemas/personas.js.map +1 -1
  181. package/dist/schemas/providers/plan-limits.d.ts +140 -0
  182. package/dist/schemas/providers/plan-limits.d.ts.map +1 -1
  183. package/dist/schemas/providers/plan-limits.js +47 -1
  184. package/dist/schemas/providers/plan-limits.js.map +1 -1
  185. package/dist/schemas/providers/provider-oauth.d.ts +57 -0
  186. package/dist/schemas/providers/provider-oauth.d.ts.map +1 -1
  187. package/dist/schemas/providers/provider-oauth.js +6 -1
  188. package/dist/schemas/providers/provider-oauth.js.map +1 -1
  189. package/dist/schemas/settings-history.d.ts +28 -1
  190. package/dist/schemas/settings-history.d.ts.map +1 -1
  191. package/dist/schemas/settings-history.js +35 -1
  192. package/dist/schemas/settings-history.js.map +1 -1
  193. package/dist/schemas/settings.d.ts +184 -4
  194. package/dist/schemas/settings.d.ts.map +1 -1
  195. package/dist/schemas/settings.js +31 -23
  196. package/dist/schemas/settings.js.map +1 -1
  197. package/dist/schemas/speaker.d.ts +36 -0
  198. package/dist/schemas/speaker.d.ts.map +1 -0
  199. package/dist/schemas/speaker.js +62 -0
  200. package/dist/schemas/speaker.js.map +1 -0
  201. package/dist/schemas/state-plan.d.ts +46 -0
  202. package/dist/schemas/state-plan.d.ts.map +1 -0
  203. package/dist/schemas/state-plan.js +31 -0
  204. package/dist/schemas/state-plan.js.map +1 -0
  205. package/dist/schemas/system.d.ts +48 -8
  206. package/dist/schemas/system.d.ts.map +1 -1
  207. package/dist/schemas/system.js +10 -14
  208. package/dist/schemas/system.js.map +1 -1
  209. package/dist/schemas/workspace/mainline.d.ts +206 -64
  210. package/dist/schemas/workspace/mainline.d.ts.map +1 -1
  211. package/dist/schemas/workspace/mainline.js +73 -25
  212. package/dist/schemas/workspace/mainline.js.map +1 -1
  213. package/dist/state/contract-lock.d.ts +1 -0
  214. package/dist/state/contract-lock.d.ts.map +1 -1
  215. package/dist/state/contract-lock.js +47 -1
  216. package/dist/state/contract-lock.js.map +1 -1
  217. package/dist/state/definition.d.ts +24 -16
  218. package/dist/state/definition.d.ts.map +1 -1
  219. package/dist/state/fix-stance.d.ts +1 -1
  220. package/dist/state/fix-stance.d.ts.map +1 -1
  221. package/dist/state/fix-stance.js +2 -1
  222. package/dist/state/fix-stance.js.map +1 -1
  223. package/dist/state/history-state.d.ts.map +1 -1
  224. package/dist/state/history-state.js +2 -0
  225. package/dist/state/history-state.js.map +1 -1
  226. package/dist/state/landed-commit.d.ts +1 -0
  227. package/dist/state/landed-commit.d.ts.map +1 -1
  228. package/dist/state/landed-commit.js +2 -0
  229. package/dist/state/landed-commit.js.map +1 -1
  230. package/dist/state/red-streak.d.ts +7 -0
  231. package/dist/state/red-streak.d.ts.map +1 -0
  232. package/dist/state/red-streak.js +11 -0
  233. package/dist/state/red-streak.js.map +1 -0
  234. package/dist/state/workspace-state.d.ts +1 -0
  235. package/dist/state/workspace-state.d.ts.map +1 -1
  236. package/dist/state/workspace-state.js +6 -2
  237. package/dist/state/workspace-state.js.map +1 -1
  238. package/dist/text/shell-regions.d.ts +1 -0
  239. package/dist/text/shell-regions.d.ts.map +1 -1
  240. package/dist/text/shell-regions.js +1 -1
  241. package/dist/text/shell-regions.js.map +1 -1
  242. package/dist/text/transcript-fold.d.ts.map +1 -1
  243. package/dist/text/transcript-fold.js +14 -7
  244. package/dist/text/transcript-fold.js.map +1 -1
  245. package/package.json +28 -29
  246. package/src/chores/index.ts +0 -1
  247. package/src/contracts/agent.contract.ts +14 -0
  248. package/src/contracts/capabilities.contract.ts +2 -2
  249. package/src/contracts/device.contract.ts +5 -3
  250. package/src/contracts/secrets.contract.ts +2 -0
  251. package/src/contracts/settings.contract.ts +2 -1
  252. package/src/documents/conversions.ts +3 -3
  253. package/src/documents/index.ts +3 -1
  254. package/src/documents/read.ts +114 -0
  255. package/src/events/agent-events.ts +5 -0
  256. package/src/events/child-run.test.ts +81 -0
  257. package/src/events/child-run.ts +73 -0
  258. package/src/events/errands.test.ts +22 -0
  259. package/src/events/errands.ts +27 -0
  260. package/src/events/requests.ts +40 -1
  261. package/src/events/transcript.ts +8 -0
  262. package/src/front/browser-wire.ts +20 -0
  263. package/src/front/front-wire.ts +15 -0
  264. package/src/front/generated/browser-wire.json +138 -0
  265. package/src/front/generated/browser-wire.ts +16 -0
  266. package/src/front/generated/front-wire.json +793 -0
  267. package/src/front/generated/tunnel.json +38 -0
  268. package/src/front/generated/wire.ts +21 -24
  269. package/src/front/wire-manifests.test.ts +61 -0
  270. package/src/ids/conversation-ids.ts +6 -5
  271. package/src/ids/session-names.ts +7 -0
  272. package/src/index.ts +8 -1
  273. package/src/models/agent-catalog.test.ts +6 -4
  274. package/src/models/agent-catalog.ts +4 -6
  275. package/src/models/agent-runtimes.ts +22 -7
  276. package/src/models/capability-ledger.test.ts +2 -0
  277. package/src/models/plan-pools.test.ts +121 -2
  278. package/src/models/plan-pools.ts +152 -2
  279. package/src/policy/request-status.ts +4 -12
  280. package/src/policy/reserved-servers.test.ts +6 -0
  281. package/src/policy/reserved-servers.ts +13 -10
  282. package/src/policy/turned-away.ts +3 -0
  283. package/src/protocol/edge-verdict.ts +13 -11
  284. package/src/protocol/ingress-contract.fixture.json +13 -0
  285. package/src/protocol/ingress-contract.ts +9 -5
  286. package/src/protocol/raw-routes.ts +10 -21
  287. package/src/protocol/route-meta.ts +36 -1
  288. package/src/protocol/tunnel-bulk.test.ts +37 -0
  289. package/src/protocol/tunnel-bulk.ts +7 -0
  290. package/src/protocol/x402.test.ts +29 -0
  291. package/src/protocol/x402.ts +61 -0
  292. package/src/schemas/agent.ts +28 -3
  293. package/src/schemas/agents.ts +33 -7
  294. package/src/schemas/automations.ts +4 -2
  295. package/src/schemas/devices.ts +107 -39
  296. package/src/schemas/extension-updates.ts +6 -0
  297. package/src/schemas/hosts.ts +68 -19
  298. package/src/schemas/ic-shape-args.test.ts +64 -0
  299. package/src/schemas/keep-warm.test.ts +6 -13
  300. package/src/schemas/keep-warm.ts +15 -20
  301. package/src/schemas/metrics.ts +32 -3
  302. package/src/schemas/personas.ts +15 -0
  303. package/src/schemas/providers/plan-limits.ts +71 -1
  304. package/src/schemas/providers/provider-oauth.ts +10 -1
  305. package/src/schemas/settings-history.ts +50 -3
  306. package/src/schemas/settings.test.ts +54 -1
  307. package/src/schemas/settings.ts +49 -31
  308. package/src/schemas/speaker.ts +89 -0
  309. package/src/schemas/state-plan.test.ts +69 -0
  310. package/src/schemas/state-plan.ts +47 -0
  311. package/src/schemas/system.ts +20 -16
  312. package/src/schemas/workspace/mainline.test.ts +28 -0
  313. package/src/schemas/workspace/mainline.ts +111 -44
  314. package/src/state/contract-lock.test.ts +65 -4
  315. package/src/state/contract-lock.ts +70 -2
  316. package/src/state/fix-stance.test.ts +8 -0
  317. package/src/state/fix-stance.ts +3 -3
  318. package/src/state/history-state.ts +5 -1
  319. package/src/state/landed-commit.test.ts +12 -1
  320. package/src/state/landed-commit.ts +5 -0
  321. package/src/state/red-streak.test.ts +28 -0
  322. package/src/state/red-streak.ts +28 -0
  323. package/src/state/workspace-state.test.ts +7 -1
  324. package/src/state/workspace-state.ts +10 -2
  325. package/src/text/shell-regions.test.ts +38 -0
  326. package/src/text/shell-regions.ts +3 -3
  327. package/src/text/transcript-fold.test.ts +13 -0
  328. package/src/text/transcript-fold.ts +17 -8
  329. package/dist/chores/fix-deps.d.ts +0 -10
  330. package/dist/chores/fix-deps.d.ts.map +0 -1
  331. package/dist/chores/fix-deps.js +0 -19
  332. package/dist/chores/fix-deps.js.map +0 -1
  333. package/dist/front/terminal-frames.d.ts +0 -17
  334. package/dist/front/terminal-frames.d.ts.map +0 -1
  335. package/dist/front/terminal-frames.js +0 -79
  336. package/dist/front/terminal-frames.js.map +0 -1
  337. package/dist/protocol/tunnel-lanes.d.ts +0 -10
  338. package/dist/protocol/tunnel-lanes.d.ts.map +0 -1
  339. package/dist/protocol/tunnel-lanes.js +0 -16
  340. package/dist/protocol/tunnel-lanes.js.map +0 -1
  341. package/dist/protocol/upgrade-relay.d.ts +0 -4
  342. package/dist/protocol/upgrade-relay.d.ts.map +0 -1
  343. package/dist/protocol/upgrade-relay.js +0 -25
  344. package/dist/protocol/upgrade-relay.js.map +0 -1
  345. package/src/chores/fix-deps.ts +0 -23
  346. package/src/front/terminal-frames.fixture.json +0 -55
  347. package/src/front/terminal-frames.test.ts +0 -63
  348. package/src/front/terminal-frames.ts +0 -102
  349. package/src/protocol/tunnel-lanes.json +0 -136
  350. package/src/protocol/tunnel-lanes.test.ts +0 -30
  351. package/src/protocol/tunnel-lanes.ts +0 -32
  352. package/src/protocol/upgrade-relay.ts +0 -28
@@ -1,136 +0,0 @@
1
- [
2
- {"method":"GET","path":"/health","lane":"interactive"},
3
- {"method":"GET","path":"/diff/raw","lane":"bulk"},
4
- {"method":"GET","path":"/speech/status","lane":"interactive"},
5
- {"method":"POST","path":"/speech/transcribe","lane":"interactive"},
6
- {"method":"GET","path":"/workspace/raw","lane":"bulk"},
7
- {"method":"GET","path":"/workspace/thumb","lane":"interactive"},
8
- {"method":"GET","path":"/workspace/media","lane":"bulk"},
9
- {"method":"POST","path":"/workspace/upload","lane":"bulk"},
10
- {"method":"POST","path":"/workspace/upload-diff","lane":"interactive"},
11
- {"method":"POST","path":"/workspace/upload-archive","lane":"bulk"},
12
- {"method":"POST","path":"/system/ws-ticket","lane":"interactive"},
13
- {"method":"GET","path":"/system/terminal","lane":"interactive"},
14
- {"method":"GET","path":"/system/sync/ssh","lane":"bulk"},
15
- {"method":"GET","path":"/system/browser-profile","lane":"interactive"},
16
- {"method":"GET","path":"/system/browser-view","lane":"interactive"},
17
- {"method":"POST","path":"/enroll","lane":"interactive"},
18
- {"method":"POST","path":"/automations/{id}/fire","lane":"interactive"},
19
- {"method":"POST","path":"/workflows/{id}/gate","lane":"interactive"},
20
- {"method":"GET","path":"/webchat/widget.js","lane":"interactive"},
21
- {"method":"GET","path":"/webchat/{id}/config","lane":"interactive"},
22
- {"method":"GET","path":"/webchat/{id}/challenge","lane":"interactive"},
23
- {"method":"POST","path":"/webchat/{id}/message","lane":"interactive"},
24
- {"method":"GET","path":"/webchat/{id}/messages","lane":"interactive"},
25
- {"method":"GET","path":"/webchat/{id}/installs","lane":"interactive"},
26
- {"method":"GET","path":"/intake/sdk.js","lane":"interactive"},
27
- {"method":"GET","path":"/intake/{id}/config","lane":"interactive"},
28
- {"method":"GET","path":"/intake/{id}/challenge","lane":"interactive"},
29
- {"method":"POST","path":"/intake/{id}/report","lane":"interactive"},
30
- {"method":"GET","path":"/members","lane":"interactive"},
31
- {"method":"POST","path":"/members","lane":"interactive"},
32
- {"method":"DELETE","path":"/members","lane":"interactive"},
33
- {"method":"DELETE","path":"/members/self","lane":"interactive"},
34
- {"method":"GET","path":"/environment","lane":"interactive"},
35
- {"method":"GET","path":"/environment/contents","lane":"interactive"},
36
- {"method":"POST","path":"/environment/approve","lane":"interactive"},
37
- {"method":"POST","path":"/environment/reject","lane":"interactive"},
38
- {"method":"POST","path":"/environment/runtime-install","lane":"interactive"},
39
- {"method":"GET","path":"/engines","lane":"interactive"},
40
- {"method":"POST","path":"/engines/channel","lane":"interactive"},
41
- {"method":"POST","path":"/engines/update","lane":"interactive"},
42
- {"method":"POST","path":"/engines/revert","lane":"interactive"},
43
- {"method":"GET","path":"/bundles","lane":"interactive"},
44
- {"method":"POST","path":"/bundles","lane":"interactive"},
45
- {"method":"DELETE","path":"/bundles","lane":"interactive"},
46
- {"method":"POST","path":"/bundles/ticket","lane":"interactive"},
47
- {"method":"GET","path":"/bundles/download","lane":"bulk"},
48
- {"method":"GET","path":"/definition","lane":"interactive"},
49
- {"method":"POST","path":"/definition/diff","lane":"interactive"},
50
- {"method":"GET","path":"/definition/workspace","lane":"interactive"},
51
- {"method":"POST","path":"/definition/workspace/publish","lane":"interactive"},
52
- {"method":"POST","path":"/arrivals/plan","lane":"interactive"},
53
- {"method":"GET","path":"/arrivals/hosts","lane":"interactive"},
54
- {"method":"POST","path":"/arrivals/scan","lane":"interactive"},
55
- {"method":"POST","path":"/arrivals/apply","lane":"interactive"},
56
- {"method":"DELETE","path":"/arrivals","lane":"interactive"},
57
- {"method":"GET","path":"/extensions/{id}/bundle","lane":"bulk"},
58
- {"method":"ALL","path":"/x/*","lane":"interactive"},
59
- {"method":"POST","path":"/mcp/extensions/{id}","lane":"interactive"},
60
- {"method":"GET","path":"/mcp/extensions/{id}","lane":"interactive"},
61
- {"method":"DELETE","path":"/mcp/extensions/{id}","lane":"interactive"},
62
- {"method":"GET","path":"/capabilities/connectable","lane":"interactive"},
63
- {"method":"POST","path":"/capabilities/ask","lane":"interactive"},
64
- {"method":"GET","path":"/sandboxes","lane":"interactive"},
65
- {"method":"POST","path":"/sandboxes","lane":"interactive"},
66
- {"method":"GET","path":"/wallet/status","lane":"interactive"},
67
- {"method":"POST","path":"/wallet/fetch","lane":"interactive"},
68
- {"method":"GET","path":"/wallet/history","lane":"interactive"},
69
- {"method":"POST","path":"/children/spawn","lane":"interactive"},
70
- {"method":"GET","path":"/children/providers","lane":"interactive"},
71
- {"method":"POST","path":"/children/wait","lane":"interactive"},
72
- {"method":"POST","path":"/children/send","lane":"interactive"},
73
- {"method":"POST","path":"/children/answer","lane":"interactive"},
74
- {"method":"GET","path":"/children","lane":"interactive"},
75
- {"method":"GET","path":"/fleet","lane":"interactive"},
76
- {"method":"POST","path":"/fleet/message","lane":"interactive"},
77
- {"method":"GET","path":"/fleet/{handle}","lane":"interactive"},
78
- {"method":"GET","path":"/listeners/{provider}/state","lane":"interactive"},
79
- {"method":"POST","path":"/listeners/{provider}/dispatch","lane":"interactive"},
80
- {"method":"POST","path":"/listeners/{provider}/failure","lane":"interactive"},
81
- {"method":"POST","path":"/listeners/{provider}/status","lane":"interactive"},
82
- {"method":"POST","path":"/ci/webhook/{host}","lane":"interactive"},
83
- {"method":"POST","path":"/system/sync/pair","lane":"interactive"},
84
- {"method":"POST","path":"/system/hosts/pair","lane":"interactive"},
85
- {"method":"POST","path":"/system/hosts/enroll","lane":"interactive"},
86
- {"method":"GET","path":"/system/hosts","lane":"interactive"},
87
- {"method":"DELETE","path":"/system/hosts/{id}","lane":"interactive"},
88
- {"method":"GET","path":"/system/hosts/connect","lane":"interactive"},
89
- {"method":"POST","path":"/mcp/hosts/{id}","lane":"interactive"},
90
- {"method":"GET","path":"/mcp/hosts/{id}","lane":"interactive"},
91
- {"method":"DELETE","path":"/mcp/hosts/{id}","lane":"interactive"},
92
- {"method":"POST","path":"/system/webext/pair","lane":"interactive"},
93
- {"method":"POST","path":"/system/webext/enroll","lane":"interactive"},
94
- {"method":"GET","path":"/system/webext","lane":"interactive"},
95
- {"method":"DELETE","path":"/system/webext/{id}","lane":"interactive"},
96
- {"method":"GET","path":"/system/webext/connect","lane":"interactive"},
97
- {"method":"POST","path":"/mcp/webext/{id}","lane":"interactive"},
98
- {"method":"GET","path":"/mcp/webext/{id}","lane":"interactive"},
99
- {"method":"DELETE","path":"/mcp/webext/{id}","lane":"interactive"},
100
- {"method":"POST","path":"/system/runners/pair","lane":"interactive"},
101
- {"method":"POST","path":"/system/runners/enroll","lane":"interactive"},
102
- {"method":"GET","path":"/system/runners","lane":"interactive"},
103
- {"method":"DELETE","path":"/system/runners/{id}","lane":"interactive"},
104
- {"method":"GET","path":"/system/runners/connect","lane":"interactive"},
105
- {"method":"POST","path":"/mcp/browser/{id}","lane":"interactive"},
106
- {"method":"GET","path":"/mcp/browser/{id}","lane":"interactive"},
107
- {"method":"DELETE","path":"/mcp/browser/{id}","lane":"interactive"},
108
- {"method":"POST","path":"/system/webext/session","lane":"interactive"},
109
- {"method":"POST","path":"/system/webext/lend","lane":"interactive"},
110
- {"method":"POST","path":"/system/runners/{id}/definition/sync","lane":"interactive"},
111
- {"method":"GET","path":"/system/runners/git/{repo}/info/refs","lane":"bulk"},
112
- {"method":"POST","path":"/system/runners/git/{repo}/git-upload-pack","lane":"bulk"},
113
- {"method":"POST","path":"/system/runners/git/{repo}/git-receive-pack","lane":"bulk"},
114
- {"method":"POST","path":"/system/runners/credentials","lane":"interactive"},
115
- {"method":"POST","path":"/system/runners/credentials/refresh","lane":"interactive"},
116
- {"method":"ALL","path":"/system/runners/translator/*","lane":"interactive"},
117
- {"method":"POST","path":"/system/control/tokens","lane":"interactive"},
118
- {"method":"GET","path":"/system/control/tokens","lane":"interactive"},
119
- {"method":"DELETE","path":"/system/control/tokens/{id}","lane":"interactive"},
120
- {"method":"GET","path":"/system/passkeys","lane":"interactive"},
121
- {"method":"POST","path":"/system/passkeys/register/options","lane":"interactive"},
122
- {"method":"POST","path":"/system/passkeys/register","lane":"interactive"},
123
- {"method":"POST","path":"/system/passkeys/assert/options","lane":"interactive"},
124
- {"method":"POST","path":"/system/passkeys/assert","lane":"interactive"},
125
- {"method":"POST","path":"/system/passkeys/policy","lane":"interactive"},
126
- {"method":"POST","path":"/system/passkeys/recovery","lane":"interactive"},
127
- {"method":"DELETE","path":"/system/passkeys/{id}","lane":"interactive"},
128
- {"method":"POST","path":"/system/session/recover","lane":"interactive"},
129
- {"method":"POST","path":"/system/sessions/revoke","lane":"interactive"},
130
- {"method":"POST","path":"/system/access/disable","lane":"interactive"},
131
- {"method":"POST","path":"/system/authorized-key","lane":"interactive"},
132
- {"method":"GET","path":"/system/sync","lane":"interactive"},
133
- {"method":"POST","path":"/system/sync/report","lane":"interactive"},
134
- {"method":"DELETE","path":"/system/authorized-key","lane":"interactive"},
135
- {"method":"DELETE","path":"/system/authorized-key/{machine}","lane":"interactive"}
136
- ]
@@ -1,30 +0,0 @@
1
- import { readFileSync } from "node:fs";
2
- import { type TunnelLane, tunnelLaneNamed, tunnelLaneOf, tunnelLaneTable } from "./tunnel-lanes.js";
3
-
4
- interface LaneCase {
5
- readonly host: string;
6
- readonly method: string;
7
- readonly path: string;
8
- readonly lane: TunnelLane;
9
- }
10
-
11
- const read = (name: string): unknown => JSON.parse(readFileSync(new URL(name, import.meta.url), "utf8"));
12
- const CASES = (read("./ingress-contract.fixture.json") as { lanes: LaneCase[] }).lanes;
13
-
14
- test("the table the Rust edge embeds is the raw routes' lanes as they stand (pnpm --filter @intentic/sandbox-contract lanes)", () => {
15
- expect(read("./tunnel-lanes.json")).toEqual(tunnelLaneTable());
16
- });
17
-
18
- test("every request the shared fixture names rides the lane it states", () => {
19
- expect(CASES.length).toBeGreaterThan(20);
20
- for (const { host, method, path, lane } of CASES) {
21
- expect({ host, method, path, lane: tunnelLaneOf(host, method, path) }).toEqual({ host, method, path, lane });
22
- }
23
- });
24
-
25
- test("a tunnel is interactive unless its upgrade names the bulk lane", () => {
26
- expect(tunnelLaneNamed("bulk")).toBe("bulk");
27
- expect(tunnelLaneNamed(undefined)).toBe("interactive");
28
- expect(tunnelLaneNamed("interactive")).toBe("interactive");
29
- expect(tunnelLaneNamed(["bulk", "bulk"])).toBe("interactive");
30
- });
@@ -1,32 +0,0 @@
1
- import { sandboxSubdomain } from "../ids/hostnames.js";
2
- import { hostOwnerId } from "./ingress-contract.js";
3
- import { RAW_ROUTE_LIST } from "./raw-routes.js";
4
- import { servedRoute } from "./routes.js";
5
-
6
- // Each sandbox dials two tunnels, and each browser request rides one, so a transfer never queues a keystroke, a call or
7
- // an event frame behind it on one TCP connection. The front dials both (_sandbox/front tunnel.rs); the edge
8
- // (_platform/ingress lanes.rs) picks by the table this file emits, and falls back to the other lane while the one picked
9
- // is not held.
10
-
11
- export type TunnelLane = "interactive" | "bulk";
12
-
13
- // Names a tunnel's lane on its upgrade; a tunnel that names none is the interactive one.
14
- export const INGRESS_LANE_HEADER = "x-intentic-lane";
15
-
16
- export const tunnelLaneNamed = (header: string | string[] | undefined): TunnelLane => (header === "bulk" ? "bulk" : "interactive");
17
-
18
- // A preview's dev server (every label but the daemon's own) is bulk: a page load is hundreds of requests and its assets
19
- // can be large. The daemon's routes are interactive unless their policy says otherwise (RouteMeta `lane`).
20
- export const tunnelLaneOf = (host: string, method: string, path: string): TunnelLane => {
21
- const id = hostOwnerId(host);
22
- const label = host.split(":")[0]?.split(".")[0] ?? "";
23
- if (id === undefined || label !== sandboxSubdomain(id)) {
24
- return "bulk";
25
- }
26
- return servedRoute(RAW_ROUTE_LIST, [], method, path)?.meta.lane ?? "interactive";
27
- };
28
-
29
- // The raw routes in registration order with the lane each rides: what the Rust edge matches a daemon request against,
30
- // written to tunnel-lanes.json by scripts/write-lanes.mjs since the edge cannot run this file.
31
- export const tunnelLaneTable = (): { readonly method: string; readonly path: string; readonly lane: TunnelLane }[] =>
32
- RAW_ROUTE_LIST.map(({ method, path, meta }) => ({ method, path, lane: meta.lane ?? "interactive" }));
@@ -1,28 +0,0 @@
1
- import type { ClientRequest } from "node:http";
2
- import type { Duplex } from "node:stream";
3
-
4
- // `upstream` is the client's handshake replayed; a 101 is echoed and bytes flow raw, any other answer ends the socket.
5
- export const relayUpgrade = (upstream: ClientRequest, socket: Duplex, head: Buffer): void => {
6
- upstream.on("error", () => socket.destroy());
7
- upstream.on("response", (answer) => {
8
- socket.end(`HTTP/1.1 ${answer.statusCode ?? 502} ${answer.statusMessage ?? ""}\r\n\r\n`);
9
- });
10
- upstream.on("upgrade", (answer, upstreamSocket, upstreamHead) => {
11
- const lines: string[] = [];
12
- for (let index = 0; index < answer.rawHeaders.length; index += 2) {
13
- lines.push(`${answer.rawHeaders[index]}: ${answer.rawHeaders[index + 1]}`);
14
- }
15
- socket.write(`HTTP/1.1 101 Switching Protocols\r\n${lines.join("\r\n")}\r\n\r\n`);
16
- if (upstreamHead.length > 0) {
17
- socket.write(upstreamHead);
18
- }
19
- if (head.length > 0) {
20
- upstreamSocket.write(head);
21
- }
22
- upstreamSocket.on("error", () => socket.destroy());
23
- socket.on("error", () => upstreamSocket.destroy());
24
- upstreamSocket.pipe(socket);
25
- socket.pipe(upstreamSocket);
26
- });
27
- upstream.end();
28
- };