@cuna_labs/cli 0.1.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 (624) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +9 -0
  3. package/README.md +169 -0
  4. package/THIRD_PARTY_NOTICES.md +29 -0
  5. package/dist/api/capability-evidence.d.ts +19 -0
  6. package/dist/api/capability-evidence.d.ts.map +1 -0
  7. package/dist/api/capability-evidence.js +38 -0
  8. package/dist/api/capability-evidence.js.map +1 -0
  9. package/dist/api/client.d.ts +167 -0
  10. package/dist/api/client.d.ts.map +1 -0
  11. package/dist/api/client.js +937 -0
  12. package/dist/api/client.js.map +1 -0
  13. package/dist/api/contracts.d.ts +345 -0
  14. package/dist/api/contracts.d.ts.map +1 -0
  15. package/dist/api/contracts.js +976 -0
  16. package/dist/api/contracts.js.map +1 -0
  17. package/dist/api/execution-workspaces.d.ts +17 -0
  18. package/dist/api/execution-workspaces.d.ts.map +1 -0
  19. package/dist/api/execution-workspaces.js +46 -0
  20. package/dist/api/execution-workspaces.js.map +1 -0
  21. package/dist/api/http.d.ts +76 -0
  22. package/dist/api/http.d.ts.map +1 -0
  23. package/dist/api/http.js +838 -0
  24. package/dist/api/http.js.map +1 -0
  25. package/dist/api/managed-executions.d.ts +37 -0
  26. package/dist/api/managed-executions.d.ts.map +1 -0
  27. package/dist/api/managed-executions.js +80 -0
  28. package/dist/api/managed-executions.js.map +1 -0
  29. package/dist/api/observer-v2-schema.d.ts +206 -0
  30. package/dist/api/observer-v2-schema.d.ts.map +1 -0
  31. package/dist/api/observer-v2-schema.js +264 -0
  32. package/dist/api/observer-v2-schema.js.map +1 -0
  33. package/dist/api/observer-v2.d.ts +33 -0
  34. package/dist/api/observer-v2.d.ts.map +1 -0
  35. package/dist/api/observer-v2.js +60 -0
  36. package/dist/api/observer-v2.js.map +1 -0
  37. package/dist/api/owner-observe-grants-v2-schema.d.ts +678 -0
  38. package/dist/api/owner-observe-grants-v2-schema.d.ts.map +1 -0
  39. package/dist/api/owner-observe-grants-v2-schema.js +887 -0
  40. package/dist/api/owner-observe-grants-v2-schema.js.map +1 -0
  41. package/dist/api/owner-observe-grants-v2.d.ts +268 -0
  42. package/dist/api/owner-observe-grants-v2.d.ts.map +1 -0
  43. package/dist/api/owner-observe-grants-v2.js +604 -0
  44. package/dist/api/owner-observe-grants-v2.js.map +1 -0
  45. package/dist/api/provider-v2-schema.d.ts +293 -0
  46. package/dist/api/provider-v2-schema.d.ts.map +1 -0
  47. package/dist/api/provider-v2-schema.js +381 -0
  48. package/dist/api/provider-v2-schema.js.map +1 -0
  49. package/dist/api/provider-v2.d.ts +55 -0
  50. package/dist/api/provider-v2.d.ts.map +1 -0
  51. package/dist/api/provider-v2.js +54 -0
  52. package/dist/api/provider-v2.js.map +1 -0
  53. package/dist/api/remote-workspace.d.ts +29 -0
  54. package/dist/api/remote-workspace.d.ts.map +1 -0
  55. package/dist/api/remote-workspace.js +62 -0
  56. package/dist/api/remote-workspace.js.map +1 -0
  57. package/dist/api/supervisor-live-update.d.ts +248 -0
  58. package/dist/api/supervisor-live-update.d.ts.map +1 -0
  59. package/dist/api/supervisor-live-update.js +434 -0
  60. package/dist/api/supervisor-live-update.js.map +1 -0
  61. package/dist/api/terminal-reason.d.ts +5 -0
  62. package/dist/api/terminal-reason.d.ts.map +1 -0
  63. package/dist/api/terminal-reason.js +12 -0
  64. package/dist/api/terminal-reason.js.map +1 -0
  65. package/dist/auth/browser-handoff.d.ts +59 -0
  66. package/dist/auth/browser-handoff.d.ts.map +1 -0
  67. package/dist/auth/browser-handoff.js +33 -0
  68. package/dist/auth/browser-handoff.js.map +1 -0
  69. package/dist/auth/browser.d.ts +11 -0
  70. package/dist/auth/browser.d.ts.map +1 -0
  71. package/dist/auth/browser.js +47 -0
  72. package/dist/auth/browser.js.map +1 -0
  73. package/dist/auth/human-client.d.ts +39 -0
  74. package/dist/auth/human-client.d.ts.map +1 -0
  75. package/dist/auth/human-client.js +66 -0
  76. package/dist/auth/human-client.js.map +1 -0
  77. package/dist/auth/human-contracts.d.ts +52 -0
  78. package/dist/auth/human-contracts.d.ts.map +1 -0
  79. package/dist/auth/human-contracts.js +229 -0
  80. package/dist/auth/human-contracts.js.map +1 -0
  81. package/dist/auth/human-session.d.ts +48 -0
  82. package/dist/auth/human-session.d.ts.map +1 -0
  83. package/dist/auth/human-session.js +902 -0
  84. package/dist/auth/human-session.js.map +1 -0
  85. package/dist/auth/onboarding-state.d.ts +31 -0
  86. package/dist/auth/onboarding-state.d.ts.map +1 -0
  87. package/dist/auth/onboarding-state.js +52 -0
  88. package/dist/auth/onboarding-state.js.map +1 -0
  89. package/dist/auth/pkce.d.ts +15 -0
  90. package/dist/auth/pkce.d.ts.map +1 -0
  91. package/dist/auth/pkce.js +19 -0
  92. package/dist/auth/pkce.js.map +1 -0
  93. package/dist/bin/cuna.d.ts +3 -0
  94. package/dist/bin/cuna.d.ts.map +1 -0
  95. package/dist/bin/cuna.js +4 -0
  96. package/dist/bin/cuna.js.map +1 -0
  97. package/dist/build-identity.d.ts +20 -0
  98. package/dist/build-identity.d.ts.map +1 -0
  99. package/dist/build-identity.js +77 -0
  100. package/dist/build-identity.js.map +1 -0
  101. package/dist/cli/command-help.d.ts +9 -0
  102. package/dist/cli/command-help.d.ts.map +1 -0
  103. package/dist/cli/command-help.js +324 -0
  104. package/dist/cli/command-help.js.map +1 -0
  105. package/dist/cli/help.d.ts +40 -0
  106. package/dist/cli/help.d.ts.map +1 -0
  107. package/dist/cli/help.js +256 -0
  108. package/dist/cli/help.js.map +1 -0
  109. package/dist/cli/output.d.ts +28 -0
  110. package/dist/cli/output.d.ts.map +1 -0
  111. package/dist/cli/output.js +95 -0
  112. package/dist/cli/output.js.map +1 -0
  113. package/dist/cli/parser.d.ts +65 -0
  114. package/dist/cli/parser.d.ts.map +1 -0
  115. package/dist/cli/parser.js +294 -0
  116. package/dist/cli/parser.js.map +1 -0
  117. package/dist/cli/process-entrypoint.d.ts +18 -0
  118. package/dist/cli/process-entrypoint.d.ts.map +1 -0
  119. package/dist/cli/process-entrypoint.js +26 -0
  120. package/dist/cli/process-entrypoint.js.map +1 -0
  121. package/dist/cli/run.d.ts +114 -0
  122. package/dist/cli/run.d.ts.map +1 -0
  123. package/dist/cli/run.js +1969 -0
  124. package/dist/cli/run.js.map +1 -0
  125. package/dist/commands/commands.d.ts +74 -0
  126. package/dist/commands/commands.d.ts.map +1 -0
  127. package/dist/commands/commands.js +2814 -0
  128. package/dist/commands/commands.js.map +1 -0
  129. package/dist/config/config.d.ts +86 -0
  130. package/dist/config/config.d.ts.map +1 -0
  131. package/dist/config/config.js +323 -0
  132. package/dist/config/config.js.map +1 -0
  133. package/dist/config/infra-contract-witness.d.ts +29 -0
  134. package/dist/config/infra-contract-witness.d.ts.map +1 -0
  135. package/dist/config/infra-contract-witness.js +30 -0
  136. package/dist/config/infra-contract-witness.js.map +1 -0
  137. package/dist/core/browser-url.d.ts +2 -0
  138. package/dist/core/browser-url.d.ts.map +1 -0
  139. package/dist/core/browser-url.js +20 -0
  140. package/dist/core/browser-url.js.map +1 -0
  141. package/dist/core/deployed-wire-compatibility.d.ts +15 -0
  142. package/dist/core/deployed-wire-compatibility.d.ts.map +1 -0
  143. package/dist/core/deployed-wire-compatibility.js +15 -0
  144. package/dist/core/deployed-wire-compatibility.js.map +1 -0
  145. package/dist/core/errors.d.ts +59 -0
  146. package/dist/core/errors.d.ts.map +1 -0
  147. package/dist/core/errors.js +82 -0
  148. package/dist/core/errors.js.map +1 -0
  149. package/dist/core/exit-codes.d.ts +68 -0
  150. package/dist/core/exit-codes.d.ts.map +1 -0
  151. package/dist/core/exit-codes.js +84 -0
  152. package/dist/core/exit-codes.js.map +1 -0
  153. package/dist/core/instant.d.ts +60 -0
  154. package/dist/core/instant.d.ts.map +1 -0
  155. package/dist/core/instant.js +90 -0
  156. package/dist/core/instant.js.map +1 -0
  157. package/dist/core/namespace.d.ts +171 -0
  158. package/dist/core/namespace.d.ts.map +1 -0
  159. package/dist/core/namespace.js +227 -0
  160. package/dist/core/namespace.js.map +1 -0
  161. package/dist/core/observation-budget.d.ts +185 -0
  162. package/dist/core/observation-budget.d.ts.map +1 -0
  163. package/dist/core/observation-budget.js +209 -0
  164. package/dist/core/observation-budget.js.map +1 -0
  165. package/dist/core/product-web.d.ts +81 -0
  166. package/dist/core/product-web.d.ts.map +1 -0
  167. package/dist/core/product-web.js +87 -0
  168. package/dist/core/product-web.js.map +1 -0
  169. package/dist/core/validation.d.ts +90 -0
  170. package/dist/core/validation.d.ts.map +1 -0
  171. package/dist/core/validation.js +199 -0
  172. package/dist/core/validation.js.map +1 -0
  173. package/dist/credentials/contracts.d.ts +82 -0
  174. package/dist/credentials/contracts.d.ts.map +1 -0
  175. package/dist/credentials/contracts.js +2 -0
  176. package/dist/credentials/contracts.js.map +1 -0
  177. package/dist/credentials/errors.d.ts +19 -0
  178. package/dist/credentials/errors.d.ts.map +1 -0
  179. package/dist/credentials/errors.js +16 -0
  180. package/dist/credentials/errors.js.map +1 -0
  181. package/dist/credentials/index.d.ts +6 -0
  182. package/dist/credentials/index.d.ts.map +1 -0
  183. package/dist/credentials/index.js +6 -0
  184. package/dist/credentials/index.js.map +1 -0
  185. package/dist/credentials/local-session.d.ts +101 -0
  186. package/dist/credentials/local-session.d.ts.map +1 -0
  187. package/dist/credentials/local-session.js +839 -0
  188. package/dist/credentials/local-session.js.map +1 -0
  189. package/dist/credentials/secret-material.d.ts +17 -0
  190. package/dist/credentials/secret-material.d.ts.map +1 -0
  191. package/dist/credentials/secret-material.js +49 -0
  192. package/dist/credentials/secret-material.js.map +1 -0
  193. package/dist/credentials/vault.d.ts +41 -0
  194. package/dist/credentials/vault.d.ts.map +1 -0
  195. package/dist/credentials/vault.js +719 -0
  196. package/dist/credentials/vault.js.map +1 -0
  197. package/dist/daemon/endpoint.d.ts +29 -0
  198. package/dist/daemon/endpoint.d.ts.map +1 -0
  199. package/dist/daemon/endpoint.js +66 -0
  200. package/dist/daemon/endpoint.js.map +1 -0
  201. package/dist/daemon/journal.d.ts +62 -0
  202. package/dist/daemon/journal.d.ts.map +1 -0
  203. package/dist/daemon/journal.js +299 -0
  204. package/dist/daemon/journal.js.map +1 -0
  205. package/dist/daemon/lease.d.ts +25 -0
  206. package/dist/daemon/lease.d.ts.map +1 -0
  207. package/dist/daemon/lease.js +94 -0
  208. package/dist/daemon/lease.js.map +1 -0
  209. package/dist/daemon/lifecycle.d.ts +14 -0
  210. package/dist/daemon/lifecycle.d.ts.map +1 -0
  211. package/dist/daemon/lifecycle.js +29 -0
  212. package/dist/daemon/lifecycle.js.map +1 -0
  213. package/dist/daemon/protocol.d.ts +65 -0
  214. package/dist/daemon/protocol.d.ts.map +1 -0
  215. package/dist/daemon/protocol.js +194 -0
  216. package/dist/daemon/protocol.js.map +1 -0
  217. package/dist/daemon/supervisor.d.ts +29 -0
  218. package/dist/daemon/supervisor.d.ts.map +1 -0
  219. package/dist/daemon/supervisor.js +87 -0
  220. package/dist/daemon/supervisor.js.map +1 -0
  221. package/dist/daemon/views.d.ts +31 -0
  222. package/dist/daemon/views.d.ts.map +1 -0
  223. package/dist/daemon/views.js +86 -0
  224. package/dist/daemon/views.js.map +1 -0
  225. package/dist/index.d.ts +38 -0
  226. package/dist/index.d.ts.map +1 -0
  227. package/dist/index.js +38 -0
  228. package/dist/index.js.map +1 -0
  229. package/dist/journey/api-effects.d.ts +59 -0
  230. package/dist/journey/api-effects.d.ts.map +1 -0
  231. package/dist/journey/api-effects.js +386 -0
  232. package/dist/journey/api-effects.js.map +1 -0
  233. package/dist/journey/derived-identity.d.ts +91 -0
  234. package/dist/journey/derived-identity.d.ts.map +1 -0
  235. package/dist/journey/derived-identity.js +123 -0
  236. package/dist/journey/derived-identity.js.map +1 -0
  237. package/dist/journey/index.d.ts +6 -0
  238. package/dist/journey/index.d.ts.map +1 -0
  239. package/dist/journey/index.js +6 -0
  240. package/dist/journey/index.js.map +1 -0
  241. package/dist/journey/intent.d.ts +36 -0
  242. package/dist/journey/intent.d.ts.map +1 -0
  243. package/dist/journey/intent.js +191 -0
  244. package/dist/journey/intent.js.map +1 -0
  245. package/dist/journey/orchestrator.d.ts +140 -0
  246. package/dist/journey/orchestrator.d.ts.map +1 -0
  247. package/dist/journey/orchestrator.js +415 -0
  248. package/dist/journey/orchestrator.js.map +1 -0
  249. package/dist/journey/provider-launch-intent.d.ts +12 -0
  250. package/dist/journey/provider-launch-intent.d.ts.map +1 -0
  251. package/dist/journey/provider-launch-intent.js +40 -0
  252. package/dist/journey/provider-launch-intent.js.map +1 -0
  253. package/dist/journey/remote-workspace.d.ts +34 -0
  254. package/dist/journey/remote-workspace.d.ts.map +1 -0
  255. package/dist/journey/remote-workspace.js +91 -0
  256. package/dist/journey/remote-workspace.js.map +1 -0
  257. package/dist/journey/root-entry.d.ts +56 -0
  258. package/dist/journey/root-entry.d.ts.map +1 -0
  259. package/dist/journey/root-entry.js +19 -0
  260. package/dist/journey/root-entry.js.map +1 -0
  261. package/dist/journey/selection.d.ts +165 -0
  262. package/dist/journey/selection.d.ts.map +1 -0
  263. package/dist/journey/selection.js +565 -0
  264. package/dist/journey/selection.js.map +1 -0
  265. package/dist/journey/session-failure.d.ts +4 -0
  266. package/dist/journey/session-failure.d.ts.map +1 -0
  267. package/dist/journey/session-failure.js +28 -0
  268. package/dist/journey/session-failure.js.map +1 -0
  269. package/dist/journey/workspace-effects.d.ts +30 -0
  270. package/dist/journey/workspace-effects.d.ts.map +1 -0
  271. package/dist/journey/workspace-effects.js +348 -0
  272. package/dist/journey/workspace-effects.js.map +1 -0
  273. package/dist/local-actions/broker.d.ts +32 -0
  274. package/dist/local-actions/broker.d.ts.map +1 -0
  275. package/dist/local-actions/broker.js +400 -0
  276. package/dist/local-actions/broker.js.map +1 -0
  277. package/dist/local-actions/browser-action.d.ts +78 -0
  278. package/dist/local-actions/browser-action.d.ts.map +1 -0
  279. package/dist/local-actions/browser-action.js +307 -0
  280. package/dist/local-actions/browser-action.js.map +1 -0
  281. package/dist/local-actions/callback-relay.d.ts +45 -0
  282. package/dist/local-actions/callback-relay.d.ts.map +1 -0
  283. package/dist/local-actions/callback-relay.js +265 -0
  284. package/dist/local-actions/callback-relay.js.map +1 -0
  285. package/dist/local-actions/clipboard.d.ts +3 -0
  286. package/dist/local-actions/clipboard.d.ts.map +1 -0
  287. package/dist/local-actions/clipboard.js +18 -0
  288. package/dist/local-actions/clipboard.js.map +1 -0
  289. package/dist/local-actions/contracts.d.ts +63 -0
  290. package/dist/local-actions/contracts.d.ts.map +1 -0
  291. package/dist/local-actions/contracts.js +18 -0
  292. package/dist/local-actions/contracts.js.map +1 -0
  293. package/dist/local-actions/desktop-presentation.d.ts +141 -0
  294. package/dist/local-actions/desktop-presentation.d.ts.map +1 -0
  295. package/dist/local-actions/desktop-presentation.js +253 -0
  296. package/dist/local-actions/desktop-presentation.js.map +1 -0
  297. package/dist/local-actions/device-selection.d.ts +43 -0
  298. package/dist/local-actions/device-selection.d.ts.map +1 -0
  299. package/dist/local-actions/device-selection.js +154 -0
  300. package/dist/local-actions/device-selection.js.map +1 -0
  301. package/dist/local-actions/executor.d.ts +49 -0
  302. package/dist/local-actions/executor.d.ts.map +1 -0
  303. package/dist/local-actions/executor.js +329 -0
  304. package/dist/local-actions/executor.js.map +1 -0
  305. package/dist/local-actions/file-transfers.d.ts +141 -0
  306. package/dist/local-actions/file-transfers.d.ts.map +1 -0
  307. package/dist/local-actions/file-transfers.js +446 -0
  308. package/dist/local-actions/file-transfers.js.map +1 -0
  309. package/dist/local-actions/foreground-notifications.d.ts +45 -0
  310. package/dist/local-actions/foreground-notifications.d.ts.map +1 -0
  311. package/dist/local-actions/foreground-notifications.js +163 -0
  312. package/dist/local-actions/foreground-notifications.js.map +1 -0
  313. package/dist/local-actions/git-signing.d.ts +39 -0
  314. package/dist/local-actions/git-signing.d.ts.map +1 -0
  315. package/dist/local-actions/git-signing.js +135 -0
  316. package/dist/local-actions/git-signing.js.map +1 -0
  317. package/dist/local-actions/index.d.ts +19 -0
  318. package/dist/local-actions/index.d.ts.map +1 -0
  319. package/dist/local-actions/index.js +19 -0
  320. package/dist/local-actions/index.js.map +1 -0
  321. package/dist/local-actions/local-service-actions.d.ts +87 -0
  322. package/dist/local-actions/local-service-actions.d.ts.map +1 -0
  323. package/dist/local-actions/local-service-actions.js +347 -0
  324. package/dist/local-actions/local-service-actions.js.map +1 -0
  325. package/dist/local-actions/loopback.d.ts +5 -0
  326. package/dist/local-actions/loopback.d.ts.map +1 -0
  327. package/dist/local-actions/loopback.js +15 -0
  328. package/dist/local-actions/loopback.js.map +1 -0
  329. package/dist/local-actions/policy-store.d.ts +7 -0
  330. package/dist/local-actions/policy-store.d.ts.map +1 -0
  331. package/dist/local-actions/policy-store.js +70 -0
  332. package/dist/local-actions/policy-store.js.map +1 -0
  333. package/dist/local-actions/policy.d.ts +21 -0
  334. package/dist/local-actions/policy.d.ts.map +1 -0
  335. package/dist/local-actions/policy.js +43 -0
  336. package/dist/local-actions/policy.js.map +1 -0
  337. package/dist/local-actions/private-port-forward.d.ts +36 -0
  338. package/dist/local-actions/private-port-forward.d.ts.map +1 -0
  339. package/dist/local-actions/private-port-forward.js +154 -0
  340. package/dist/local-actions/private-port-forward.js.map +1 -0
  341. package/dist/local-actions/provider-mcp-config.d.ts +101 -0
  342. package/dist/local-actions/provider-mcp-config.d.ts.map +1 -0
  343. package/dist/local-actions/provider-mcp-config.js +166 -0
  344. package/dist/local-actions/provider-mcp-config.js.map +1 -0
  345. package/dist/local-actions/providers.d.ts +12 -0
  346. package/dist/local-actions/providers.d.ts.map +1 -0
  347. package/dist/local-actions/providers.js +42 -0
  348. package/dist/local-actions/providers.js.map +1 -0
  349. package/dist/local-actions/schemas.d.ts +4 -0
  350. package/dist/local-actions/schemas.d.ts.map +1 -0
  351. package/dist/local-actions/schemas.js +314 -0
  352. package/dist/local-actions/schemas.js.map +1 -0
  353. package/dist/local-actions/sensitive-consent.d.ts +32 -0
  354. package/dist/local-actions/sensitive-consent.d.ts.map +1 -0
  355. package/dist/local-actions/sensitive-consent.js +47 -0
  356. package/dist/local-actions/sensitive-consent.js.map +1 -0
  357. package/dist/machines/command-launch.d.ts +17 -0
  358. package/dist/machines/command-launch.d.ts.map +1 -0
  359. package/dist/machines/command-launch.js +52 -0
  360. package/dist/machines/command-launch.js.map +1 -0
  361. package/dist/machines/execution-receipt.d.ts +18 -0
  362. package/dist/machines/execution-receipt.d.ts.map +1 -0
  363. package/dist/machines/execution-receipt.js +87 -0
  364. package/dist/machines/execution-receipt.js.map +1 -0
  365. package/dist/machines/executions-screen.d.ts +6 -0
  366. package/dist/machines/executions-screen.d.ts.map +1 -0
  367. package/dist/machines/executions-screen.js +410 -0
  368. package/dist/machines/executions-screen.js.map +1 -0
  369. package/dist/machines/explorer.d.ts +75 -0
  370. package/dist/machines/explorer.d.ts.map +1 -0
  371. package/dist/machines/explorer.js +1726 -0
  372. package/dist/machines/explorer.js.map +1 -0
  373. package/dist/machines/live-supervisor-update.d.ts +325 -0
  374. package/dist/machines/live-supervisor-update.d.ts.map +1 -0
  375. package/dist/machines/live-supervisor-update.js +513 -0
  376. package/dist/machines/live-supervisor-update.js.map +1 -0
  377. package/dist/machines/machine-first.d.ts +123 -0
  378. package/dist/machines/machine-first.d.ts.map +1 -0
  379. package/dist/machines/machine-first.js +119 -0
  380. package/dist/machines/machine-first.js.map +1 -0
  381. package/dist/machines/opencode-supervisor.d.ts +51 -0
  382. package/dist/machines/opencode-supervisor.d.ts.map +1 -0
  383. package/dist/machines/opencode-supervisor.js +124 -0
  384. package/dist/machines/opencode-supervisor.js.map +1 -0
  385. package/dist/machines/pagination.d.ts +4 -0
  386. package/dist/machines/pagination.d.ts.map +1 -0
  387. package/dist/machines/pagination.js +7 -0
  388. package/dist/machines/pagination.js.map +1 -0
  389. package/dist/machines/provider-availability.d.ts +42 -0
  390. package/dist/machines/provider-availability.d.ts.map +1 -0
  391. package/dist/machines/provider-availability.js +82 -0
  392. package/dist/machines/provider-availability.js.map +1 -0
  393. package/dist/machines/provider-screen.d.ts +12 -0
  394. package/dist/machines/provider-screen.d.ts.map +1 -0
  395. package/dist/machines/provider-screen.js +129 -0
  396. package/dist/machines/provider-screen.js.map +1 -0
  397. package/dist/machines/session-actionability.d.ts +86 -0
  398. package/dist/machines/session-actionability.d.ts.map +1 -0
  399. package/dist/machines/session-actionability.js +125 -0
  400. package/dist/machines/session-actionability.js.map +1 -0
  401. package/dist/machines/session-visibility.d.ts +139 -0
  402. package/dist/machines/session-visibility.d.ts.map +1 -0
  403. package/dist/machines/session-visibility.js +109 -0
  404. package/dist/machines/session-visibility.js.map +1 -0
  405. package/dist/platform/adapter.d.ts +62 -0
  406. package/dist/platform/adapter.d.ts.map +1 -0
  407. package/dist/platform/adapter.js +240 -0
  408. package/dist/platform/adapter.js.map +1 -0
  409. package/dist/platform/support.d.ts +12 -0
  410. package/dist/platform/support.d.ts.map +1 -0
  411. package/dist/platform/support.js +25 -0
  412. package/dist/platform/support.js.map +1 -0
  413. package/dist/pty/contracts.d.ts +45 -0
  414. package/dist/pty/contracts.d.ts.map +1 -0
  415. package/dist/pty/contracts.js +2 -0
  416. package/dist/pty/contracts.js.map +1 -0
  417. package/dist/pty/evidence-gate.d.ts +14 -0
  418. package/dist/pty/evidence-gate.d.ts.map +1 -0
  419. package/dist/pty/evidence-gate.js +35 -0
  420. package/dist/pty/evidence-gate.js.map +1 -0
  421. package/dist/pty/index.d.ts +5 -0
  422. package/dist/pty/index.d.ts.map +1 -0
  423. package/dist/pty/index.js +5 -0
  424. package/dist/pty/index.js.map +1 -0
  425. package/dist/pty/node-host-terminal.d.ts +14 -0
  426. package/dist/pty/node-host-terminal.d.ts.map +1 -0
  427. package/dist/pty/node-host-terminal.js +173 -0
  428. package/dist/pty/node-host-terminal.js.map +1 -0
  429. package/dist/pty/node-process.d.ts +26 -0
  430. package/dist/pty/node-process.d.ts.map +1 -0
  431. package/dist/pty/node-process.js +102 -0
  432. package/dist/pty/node-process.js.map +1 -0
  433. package/dist/runtime/api-terminal-control-plane.d.ts +7 -0
  434. package/dist/runtime/api-terminal-control-plane.d.ts.map +1 -0
  435. package/dist/runtime/api-terminal-control-plane.js +95 -0
  436. package/dist/runtime/api-terminal-control-plane.js.map +1 -0
  437. package/dist/runtime/backoff.d.ts +17 -0
  438. package/dist/runtime/backoff.d.ts.map +1 -0
  439. package/dist/runtime/backoff.js +61 -0
  440. package/dist/runtime/backoff.js.map +1 -0
  441. package/dist/runtime/boundary.d.ts +171 -0
  442. package/dist/runtime/boundary.d.ts.map +1 -0
  443. package/dist/runtime/boundary.js +1858 -0
  444. package/dist/runtime/boundary.js.map +1 -0
  445. package/dist/runtime/capability-gate.d.ts +25 -0
  446. package/dist/runtime/capability-gate.d.ts.map +1 -0
  447. package/dist/runtime/capability-gate.js +77 -0
  448. package/dist/runtime/capability-gate.js.map +1 -0
  449. package/dist/runtime/contracts.d.ts +25 -0
  450. package/dist/runtime/contracts.d.ts.map +1 -0
  451. package/dist/runtime/contracts.js +66 -0
  452. package/dist/runtime/contracts.js.map +1 -0
  453. package/dist/runtime/errors.d.ts +20 -0
  454. package/dist/runtime/errors.d.ts.map +1 -0
  455. package/dist/runtime/errors.js +22 -0
  456. package/dist/runtime/errors.js.map +1 -0
  457. package/dist/runtime/index.d.ts +9 -0
  458. package/dist/runtime/index.d.ts.map +1 -0
  459. package/dist/runtime/index.js +9 -0
  460. package/dist/runtime/index.js.map +1 -0
  461. package/dist/runtime/node-foreground-session.d.ts +50 -0
  462. package/dist/runtime/node-foreground-session.d.ts.map +1 -0
  463. package/dist/runtime/node-foreground-session.js +431 -0
  464. package/dist/runtime/node-foreground-session.js.map +1 -0
  465. package/dist/runtime/node-websocket-connector.d.ts +6 -0
  466. package/dist/runtime/node-websocket-connector.d.ts.map +1 -0
  467. package/dist/runtime/node-websocket-connector.js +344 -0
  468. package/dist/runtime/node-websocket-connector.js.map +1 -0
  469. package/dist/runtime/observer-screen.d.ts +6 -0
  470. package/dist/runtime/observer-screen.d.ts.map +1 -0
  471. package/dist/runtime/observer-screen.js +144 -0
  472. package/dist/runtime/observer-screen.js.map +1 -0
  473. package/dist/runtime/owner-grant-operations.d.ts +136 -0
  474. package/dist/runtime/owner-grant-operations.d.ts.map +1 -0
  475. package/dist/runtime/owner-grant-operations.js +216 -0
  476. package/dist/runtime/owner-grant-operations.js.map +1 -0
  477. package/dist/runtime/owner-grants-screen.d.ts +40 -0
  478. package/dist/runtime/owner-grants-screen.d.ts.map +1 -0
  479. package/dist/runtime/owner-grants-screen.js +987 -0
  480. package/dist/runtime/owner-grants-screen.js.map +1 -0
  481. package/dist/runtime/terminal-transport.d.ts +85 -0
  482. package/dist/runtime/terminal-transport.d.ts.map +1 -0
  483. package/dist/runtime/terminal-transport.js +152 -0
  484. package/dist/runtime/terminal-transport.js.map +1 -0
  485. package/dist/sync/continuous-sync-supervisor.d.ts +107 -0
  486. package/dist/sync/continuous-sync-supervisor.d.ts.map +1 -0
  487. package/dist/sync/continuous-sync-supervisor.js +1117 -0
  488. package/dist/sync/continuous-sync-supervisor.js.map +1 -0
  489. package/dist/sync/index.d.ts +9 -0
  490. package/dist/sync/index.d.ts.map +1 -0
  491. package/dist/sync/index.js +9 -0
  492. package/dist/sync/index.js.map +1 -0
  493. package/dist/sync/journal.d.ts +57 -0
  494. package/dist/sync/journal.d.ts.map +1 -0
  495. package/dist/sync/journal.js +685 -0
  496. package/dist/sync/journal.js.map +1 -0
  497. package/dist/sync/revisions.d.ts +118 -0
  498. package/dist/sync/revisions.d.ts.map +1 -0
  499. package/dist/sync/revisions.js +364 -0
  500. package/dist/sync/revisions.js.map +1 -0
  501. package/dist/sync/supervisor.d.ts +107 -0
  502. package/dist/sync/supervisor.d.ts.map +1 -0
  503. package/dist/sync/supervisor.js +246 -0
  504. package/dist/sync/supervisor.js.map +1 -0
  505. package/dist/sync/workspace-sync-client.d.ts +18 -0
  506. package/dist/sync/workspace-sync-client.d.ts.map +1 -0
  507. package/dist/sync/workspace-sync-client.js +150 -0
  508. package/dist/sync/workspace-sync-client.js.map +1 -0
  509. package/dist/sync/workspace-sync-coordinator.d.ts +76 -0
  510. package/dist/sync/workspace-sync-coordinator.d.ts.map +1 -0
  511. package/dist/sync/workspace-sync-coordinator.js +621 -0
  512. package/dist/sync/workspace-sync-coordinator.js.map +1 -0
  513. package/dist/sync/workspace-sync-product-service.d.ts +79 -0
  514. package/dist/sync/workspace-sync-product-service.d.ts.map +1 -0
  515. package/dist/sync/workspace-sync-product-service.js +398 -0
  516. package/dist/sync/workspace-sync-product-service.js.map +1 -0
  517. package/dist/sync/workspace-sync-protocol.d.ts +145 -0
  518. package/dist/sync/workspace-sync-protocol.d.ts.map +1 -0
  519. package/dist/sync/workspace-sync-protocol.js +347 -0
  520. package/dist/sync/workspace-sync-protocol.js.map +1 -0
  521. package/dist/terminal/appbar.d.ts +40 -0
  522. package/dist/terminal/appbar.d.ts.map +1 -0
  523. package/dist/terminal/appbar.js +55 -0
  524. package/dist/terminal/appbar.js.map +1 -0
  525. package/dist/terminal/cell-width.d.ts +3 -0
  526. package/dist/terminal/cell-width.d.ts.map +1 -0
  527. package/dist/terminal/cell-width.js +53 -0
  528. package/dist/terminal/cell-width.js.map +1 -0
  529. package/dist/terminal/codec.d.ts +107 -0
  530. package/dist/terminal/codec.d.ts.map +1 -0
  531. package/dist/terminal/codec.js +538 -0
  532. package/dist/terminal/codec.js.map +1 -0
  533. package/dist/terminal/foreground.d.ts +135 -0
  534. package/dist/terminal/foreground.d.ts.map +1 -0
  535. package/dist/terminal/foreground.js +2097 -0
  536. package/dist/terminal/foreground.js.map +1 -0
  537. package/dist/terminal/generated/terminal-wire-v1.d.ts +26 -0
  538. package/dist/terminal/generated/terminal-wire-v1.d.ts.map +1 -0
  539. package/dist/terminal/generated/terminal-wire-v1.js +27 -0
  540. package/dist/terminal/generated/terminal-wire-v1.js.map +1 -0
  541. package/dist/terminal/mode.d.ts +33 -0
  542. package/dist/terminal/mode.d.ts.map +1 -0
  543. package/dist/terminal/mode.js +99 -0
  544. package/dist/terminal/mode.js.map +1 -0
  545. package/dist/terminal/passthrough.d.ts +47 -0
  546. package/dist/terminal/passthrough.d.ts.map +1 -0
  547. package/dist/terminal/passthrough.js +666 -0
  548. package/dist/terminal/passthrough.js.map +1 -0
  549. package/dist/terminal/resume.d.ts +58 -0
  550. package/dist/terminal/resume.d.ts.map +1 -0
  551. package/dist/terminal/resume.js +185 -0
  552. package/dist/terminal/resume.js.map +1 -0
  553. package/dist/terminal/viewport.d.ts +93 -0
  554. package/dist/terminal/viewport.d.ts.map +1 -0
  555. package/dist/terminal/viewport.js +266 -0
  556. package/dist/terminal/viewport.js.map +1 -0
  557. package/dist/terminal/workbench.d.ts +32 -0
  558. package/dist/terminal/workbench.d.ts.map +1 -0
  559. package/dist/terminal/workbench.js +316 -0
  560. package/dist/terminal/workbench.js.map +1 -0
  561. package/dist/terminal/xterm-vte.d.ts +49 -0
  562. package/dist/terminal/xterm-vte.d.ts.map +1 -0
  563. package/dist/terminal/xterm-vte.js +602 -0
  564. package/dist/terminal/xterm-vte.js.map +1 -0
  565. package/dist/version.d.ts +3 -0
  566. package/dist/version.d.ts.map +1 -0
  567. package/dist/version.js +3 -0
  568. package/dist/version.js.map +1 -0
  569. package/dist/workspace/binding-path.d.ts +17 -0
  570. package/dist/workspace/binding-path.d.ts.map +1 -0
  571. package/dist/workspace/binding-path.js +91 -0
  572. package/dist/workspace/binding-path.js.map +1 -0
  573. package/dist/workspace/binding-store.d.ts +107 -0
  574. package/dist/workspace/binding-store.d.ts.map +1 -0
  575. package/dist/workspace/binding-store.js +783 -0
  576. package/dist/workspace/binding-store.js.map +1 -0
  577. package/dist/workspace/binding.d.ts +35 -0
  578. package/dist/workspace/binding.d.ts.map +1 -0
  579. package/dist/workspace/binding.js +70 -0
  580. package/dist/workspace/binding.js.map +1 -0
  581. package/dist/workspace/errors.d.ts +4 -0
  582. package/dist/workspace/errors.d.ts.map +1 -0
  583. package/dist/workspace/errors.js +19 -0
  584. package/dist/workspace/errors.js.map +1 -0
  585. package/dist/workspace/exclusion.d.ts +21 -0
  586. package/dist/workspace/exclusion.d.ts.map +1 -0
  587. package/dist/workspace/exclusion.js +243 -0
  588. package/dist/workspace/exclusion.js.map +1 -0
  589. package/dist/workspace/index.d.ts +8 -0
  590. package/dist/workspace/index.d.ts.map +1 -0
  591. package/dist/workspace/index.js +8 -0
  592. package/dist/workspace/index.js.map +1 -0
  593. package/dist/workspace/lifecycle.d.ts +56 -0
  594. package/dist/workspace/lifecycle.d.ts.map +1 -0
  595. package/dist/workspace/lifecycle.js +94 -0
  596. package/dist/workspace/lifecycle.js.map +1 -0
  597. package/dist/workspace/manifest.d.ts +47 -0
  598. package/dist/workspace/manifest.d.ts.map +1 -0
  599. package/dist/workspace/manifest.js +243 -0
  600. package/dist/workspace/manifest.js.map +1 -0
  601. package/dist/workspace/paths.d.ts +14 -0
  602. package/dist/workspace/paths.d.ts.map +1 -0
  603. package/dist/workspace/paths.js +67 -0
  604. package/dist/workspace/paths.js.map +1 -0
  605. package/dist/workspace/schema.d.ts +15 -0
  606. package/dist/workspace/schema.d.ts.map +1 -0
  607. package/dist/workspace/schema.js +33 -0
  608. package/dist/workspace/schema.js.map +1 -0
  609. package/dist/workspace/selection-screen.d.ts +4 -0
  610. package/dist/workspace/selection-screen.d.ts.map +1 -0
  611. package/dist/workspace/selection-screen.js +216 -0
  612. package/dist/workspace/selection-screen.js.map +1 -0
  613. package/dist/workspace/selection-service.d.ts +16 -0
  614. package/dist/workspace/selection-service.d.ts.map +1 -0
  615. package/dist/workspace/selection-service.js +65 -0
  616. package/dist/workspace/selection-service.js.map +1 -0
  617. package/node_modules/@xterm/headless/README.md +31 -0
  618. package/node_modules/@xterm/headless/lib-headless/xterm-headless.js +2 -0
  619. package/node_modules/@xterm/headless/lib-headless/xterm-headless.js.map +1 -0
  620. package/node_modules/@xterm/headless/lib-headless/xterm-headless.mjs +46 -0
  621. package/node_modules/@xterm/headless/lib-headless/xterm-headless.mjs.map +7 -0
  622. package/node_modules/@xterm/headless/package.json +29 -0
  623. package/node_modules/@xterm/headless/typings/xterm-headless.d.ts +1385 -0
  624. package/package.json +75 -0
@@ -0,0 +1,30 @@
1
+ import type { CunaApiClient } from "../api/client.js";
2
+ import type { ContinuousSyncSnapshot } from "../sync/continuous-sync-supervisor.js";
3
+ import { type AuthenticatedWorkspaceSyncTransport } from "../sync/workspace-sync-product-service.js";
4
+ import type { FilesystemCapabilities } from "../workspace/paths.js";
5
+ import type { AgentJourneyEffects } from "./orchestrator.js";
6
+ export interface WorkspaceJourneyEffectsInput {
7
+ readonly client: CunaApiClient;
8
+ readonly transport: AuthenticatedWorkspaceSyncTransport;
9
+ readonly profileId: string;
10
+ readonly userId: string;
11
+ readonly workspaceId: string;
12
+ readonly stateDirectory: string;
13
+ readonly filesystemCapabilities: FilesystemCapabilities;
14
+ /**
15
+ * One human-readable line about a decision the journey took on the person's
16
+ * behalf (today: the folder was rebound to another Machine). Absent in
17
+ * structured or non-interactive runs; the decision is taken either way.
18
+ */
19
+ readonly onNotice?: (line: string) => void;
20
+ }
21
+ /** Local binding facts are only hints until the complete tuple is re-read from the API. */
22
+ export interface WorkspaceJourneyEffects extends Pick<AgentJourneyEffects, "inspectWorkspace" | "synchronizeWorkspace"> {
23
+ readonly continuousSyncSnapshot: () => ContinuousSyncSnapshot | undefined;
24
+ readonly subscribeContinuousSync: (listener: (snapshot: ContinuousSyncSnapshot) => void) => () => void;
25
+ readonly stopContinuousSync: () => Promise<void>;
26
+ }
27
+ export declare function createWorkspaceJourneyEffects(input: WorkspaceJourneyEffectsInput): WorkspaceJourneyEffects;
28
+ /** Safe under-claims never become guessed remote capabilities. */
29
+ export declare function conservativeFilesystemCapabilities(platform: FilesystemCapabilities["platform"]): FilesystemCapabilities;
30
+ //# sourceMappingURL=workspace-effects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-effects.d.ts","sourceRoot":"","sources":["../../src/journey/workspace-effects.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,EAKL,KAAK,mCAAmC,EACzC,MAAM,2CAA2C,CAAC;AAEnD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,mCAAmC,CAAC;IACxD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IACxD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAwED,2FAA2F;AAC3F,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,kBAAkB,GAAG,sBAAsB,CAAC;IACrH,QAAQ,CAAC,sBAAsB,EAAE,MAAM,sBAAsB,GAAG,SAAS,CAAC;IAC1E,QAAQ,CAAC,uBAAuB,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,sBAAsB,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IACvG,QAAQ,CAAC,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,4BAA4B,GAAG,uBAAuB,CAoS1G;AAED,kEAAkE;AAClE,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,sBAAsB,CAAC,UAAU,CAAC,GAAG,sBAAsB,CAEvH"}
@@ -0,0 +1,348 @@
1
+ import { createHash } from "node:crypto";
2
+ import { mkdir } from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ import { EXIT_CODES, CunaError } from "../core/errors.js";
5
+ import { inspectWorkspaceSyncPolicy, startContinuousWorkspaceSync, computeWorkspaceManifestRoot, synchronizeLocalWorkspace, } from "../sync/workspace-sync-product-service.js";
6
+ import { loadWorkspaceBindingIntent, persistWorkspaceBinding, workspaceBindingCompareAndSwap } from "../workspace/binding-store.js";
7
+ import { stableUuid } from "./derived-identity.js";
8
+ function fail(code, message, exitCode = EXIT_CODES.conflict) {
9
+ return new CunaError({ code, message, exitCode });
10
+ }
11
+ /**
12
+ * Whether the Machine a folder is bound to still exists, read from the Machine
13
+ * authority itself rather than inferred from a listing.
14
+ *
15
+ * Two answers mean "gone": a 404 (`cuna.remote.not_found`, the row is absent)
16
+ * and a row the server still returns in state `deleted` (the list endpoint
17
+ * hides those, the read does not). Everything else is not evidence of absence:
18
+ * a transient failure stays the retryable error it already is, and a 404
19
+ * without an API body (`operation_not_served`) says this deployment lacks the
20
+ * route, not that the Machine is gone.
21
+ */
22
+ async function observeBoundMachine(client, machineId, signal) {
23
+ let machine;
24
+ try {
25
+ machine = await client.getMachine(machineId, signal);
26
+ }
27
+ catch (error) {
28
+ if (error instanceof CunaError && error.code === "cuna.remote.not_found")
29
+ return Object.freeze({ kind: "absent" });
30
+ throw error;
31
+ }
32
+ if (machine.state === "deleted")
33
+ return Object.freeze({ kind: "absent" });
34
+ return Object.freeze({ kind: "present", machine });
35
+ }
36
+ /** The Machine's name when it can be read, its id otherwise. Never throws: this only decorates a message. */
37
+ async function machineDisplayName(client, machineId, signal) {
38
+ try {
39
+ const machine = await client.getMachine(machineId, signal);
40
+ return machine.name.trim().length > 0 ? machine.name : machineId;
41
+ }
42
+ catch {
43
+ return machineId;
44
+ }
45
+ }
46
+ function bindingKey(workspaceId, userId, canonicalRoot) {
47
+ return createHash("sha256").update(`${workspaceId}\0${userId}\0${canonicalRoot}`, "utf8").digest("hex");
48
+ }
49
+ function workspaceBindingCreateKey(request) {
50
+ // Version the namespace as well as hashing the complete producer body. Old
51
+ // builds keyed only the local root, so a later machine selection could reuse
52
+ // a key already bound to another request and fail forever with
53
+ // workspace_binding_idempotency_conflict. A v2 key can adopt an existing
54
+ // canonical binding without colliding with those spent legacy keys.
55
+ const canonicalIntent = JSON.stringify({
56
+ workspace_id: request.workspaceId,
57
+ project_id: request.projectId,
58
+ local_instance_id: request.localInstanceId,
59
+ machine_id: request.machineId,
60
+ exclusion_policy_digest: request.exclusionPolicyDigest,
61
+ excluded_prefixes: request.excludedPrefixes,
62
+ });
63
+ const digest = createHash("sha256").update(canonicalIntent, "utf8").digest("hex");
64
+ return `cuna-workspace-binding-v2-${digest}`;
65
+ }
66
+ export function createWorkspaceJourneyEffects(input) {
67
+ let supervisor;
68
+ const syncListeners = new Set();
69
+ let unsubscribeSupervisor;
70
+ const inspect = async (localPath) => {
71
+ const policy = await inspectWorkspaceSyncPolicy({ localRoot: localPath, filesystemCapabilities: input.filesystemCapabilities });
72
+ const local = await loadWorkspaceBindingIntent({
73
+ startPath: policy.canonicalRoot,
74
+ profileId: input.profileId,
75
+ userId: input.userId,
76
+ workspaceId: input.workspaceId,
77
+ });
78
+ return local === undefined ? Object.freeze({ policy }) : Object.freeze({ policy, local });
79
+ };
80
+ const effects = {
81
+ continuousSyncSnapshot: () => supervisor?.snapshot,
82
+ subscribeContinuousSync(listener) {
83
+ syncListeners.add(listener);
84
+ const snapshot = supervisor?.snapshot;
85
+ if (snapshot !== undefined) {
86
+ try {
87
+ listener(snapshot);
88
+ }
89
+ catch { /* Status observers never own synchronization correctness. */ }
90
+ }
91
+ return () => syncListeners.delete(listener);
92
+ },
93
+ async stopContinuousSync() {
94
+ const current = supervisor;
95
+ supervisor = undefined;
96
+ unsubscribeSupervisor?.();
97
+ unsubscribeSupervisor = undefined;
98
+ await current?.stop();
99
+ },
100
+ async inspectWorkspace({ localPath, syncMode, signal }) {
101
+ signal.throwIfAborted();
102
+ const inspected = await inspect(localPath);
103
+ if (syncMode !== "disabled") {
104
+ // Reject local content before provisioning. This result is deliberately
105
+ // discarded: synchronization must scan again against current files.
106
+ await computeWorkspaceManifestRoot({
107
+ localRoot: inspected.policy.canonicalRoot,
108
+ filesystemCapabilities: input.filesystemCapabilities,
109
+ signal,
110
+ });
111
+ }
112
+ signal.throwIfAborted();
113
+ // The canonical root leaves this layer because the machine-create request
114
+ // identity is derived from it. Recomputing it in the orchestrator would
115
+ // make two answers to "which project is this", and the create identity
116
+ // and the binding identity would drift apart under symlinks or case.
117
+ return Object.freeze({
118
+ canonicalLocalRoot: inspected.policy.canonicalRoot,
119
+ ...(inspected.local === undefined ? {} : { projectMachineId: inspected.local.record.machineId }),
120
+ });
121
+ },
122
+ async synchronizeWorkspace({ machineId, localPath, syncMode, signal }) {
123
+ const inspected = await inspect(localPath);
124
+ // The local record this run will compare-and-swap against. A rebind
125
+ // replaces it below, so every later persist must swap against the
126
+ // rebound record, not the one that named the vanished Machine.
127
+ let localRecord = inspected.local?.record;
128
+ let authority;
129
+ if (inspected.local !== undefined) {
130
+ const record = inspected.local.record;
131
+ if (record.policyDigest !== inspected.policy.exclusionPolicyDigest) {
132
+ throw fail("cuna.journey.workspace_binding_conflict", "The local project binding does not authorize the selected exclusion policy.");
133
+ }
134
+ if (record.machineId !== machineId) {
135
+ // The folder is the project; a Machine is disposable (PRD-PM-008
136
+ // §H, E14-D1). Decide from the Machine authority, not the listing:
137
+ // gone means rebind, present means the typed refusal, anything else
138
+ // is not evidence and keeps its own error.
139
+ const bound = await observeBoundMachine(input.client, record.machineId, signal);
140
+ if (bound.kind === "present") {
141
+ const boundName = bound.machine.name.trim().length > 0 ? bound.machine.name : record.machineId;
142
+ const selectedName = await machineDisplayName(input.client, machineId, signal);
143
+ throw new CunaError({
144
+ code: "cuna.journey.workspace_binding_conflict",
145
+ message: `This folder is bound to Machine ${boundName}, not ${selectedName}.`,
146
+ exitCode: EXIT_CODES.conflict,
147
+ hint: `Run the same command with \`--machine ${boundName}\` to use the Machine this folder is bound to, or delete \`.cuna/workspace.json\` in this folder to bind it to ${selectedName} on the next run. Neither touches the Workspace on either Machine.`,
148
+ details: {
149
+ bound_machine_id: record.machineId,
150
+ bound_machine_name: boundName,
151
+ selected_machine_id: machineId,
152
+ selected_machine_name: selectedName,
153
+ },
154
+ });
155
+ }
156
+ const createRequest = Object.freeze({
157
+ workspaceId: input.workspaceId,
158
+ projectId: record.projectId,
159
+ localInstanceId: record.localInstanceId,
160
+ machineId,
161
+ exclusionPolicyDigest: inspected.policy.exclusionPolicyDigest,
162
+ excludedPrefixes: Object.freeze([]),
163
+ });
164
+ authority = await input.client.createWorkspaceBinding(createRequest, workspaceBindingCreateKey(createRequest), signal);
165
+ // Commit the rebind before any synchronization so the receipt is
166
+ // truthful even if this run stops here: the next run finds the new
167
+ // Machine, not a second vanished one.
168
+ localRecord = await persistWorkspaceBinding({
169
+ root: inspected.policy.canonicalRoot,
170
+ binding: {
171
+ profileId: input.profileId,
172
+ userId: input.userId,
173
+ workspaceId: input.workspaceId,
174
+ bindingId: authority.bindingId,
175
+ projectId: authority.projectId,
176
+ ...(authority.executionWorkspaceId == null ? {} : { executionWorkspaceId: authority.executionWorkspaceId }),
177
+ localInstanceId: authority.localInstanceId,
178
+ machineId,
179
+ remoteRoot: authority.remoteRoot,
180
+ policyDigest: authority.exclusionPolicyDigest,
181
+ generation: authority.activeGeneration,
182
+ bindingCreatedAt: authority.createdAt,
183
+ bindingUpdatedAt: authority.updatedAt,
184
+ },
185
+ expected: workspaceBindingCompareAndSwap(record),
186
+ rebind: true,
187
+ });
188
+ input.onNotice?.(`Rebound this folder to ${await machineDisplayName(input.client, machineId, signal)} · the previous Machine no longer exists`);
189
+ }
190
+ else {
191
+ authority = await input.client.getWorkspaceBinding(record.bindingId, {
192
+ ...(record.executionWorkspaceId === undefined ? {} : { executionWorkspaceId: record.executionWorkspaceId }),
193
+ workspaceId: input.workspaceId,
194
+ projectId: record.projectId,
195
+ localInstanceId: record.localInstanceId,
196
+ machineId,
197
+ exclusionPolicyDigest: inspected.policy.exclusionPolicyDigest,
198
+ }, signal);
199
+ if ((authority.executionWorkspaceId ?? null) !== (record.executionWorkspaceId ?? null) || authority.remoteRoot !== record.remoteRoot) {
200
+ throw fail("cuna.journey.workspace_binding_conflict", "The server Workspace identity differs from this folder's recorded binding.");
201
+ }
202
+ }
203
+ }
204
+ else {
205
+ if (syncMode === "disabled") {
206
+ throw fail("cuna.journey.workspace_binding_required", "--no-sync requires an existing remotely committed workspace binding.", EXIT_CODES.policy);
207
+ }
208
+ const intentDigest = bindingKey(input.workspaceId, input.userId, inspected.policy.canonicalRoot);
209
+ // These identities are stable for this owner/root and installation.
210
+ // Therefore a crash after the remote create but before local commit
211
+ // retries the identical tuple and idempotency key, never a duplicate.
212
+ const projectId = stableUuid("cuna.workspace.project.v1", intentDigest);
213
+ const localInstanceId = stableUuid("cuna.workspace.local-instance.v1", `${intentDigest}\0${input.stateDirectory}`);
214
+ const createRequest = Object.freeze({
215
+ workspaceId: input.workspaceId,
216
+ projectId,
217
+ localInstanceId,
218
+ machineId,
219
+ exclusionPolicyDigest: inspected.policy.exclusionPolicyDigest,
220
+ excludedPrefixes: Object.freeze([]),
221
+ });
222
+ authority = await input.client.createWorkspaceBinding(createRequest, workspaceBindingCreateKey(createRequest), signal);
223
+ }
224
+ if (syncMode === "disabled") {
225
+ if (authority.activeGeneration < 1) {
226
+ throw fail("cuna.journey.workspace_generation_unavailable", "--no-sync cannot attach until the binding has a committed workspace generation.", EXIT_CODES.policy);
227
+ }
228
+ return Object.freeze({ ...(authority.executionWorkspaceId == null ? {} : { executionWorkspaceId: authority.executionWorkspaceId }), bindingId: authority.bindingId, workspaceIdentity: authority.bindingId, generation: authority.activeGeneration, remoteCwd: authority.remoteRoot });
229
+ }
230
+ // A generation is a witness to workspace content. If the content has not
231
+ // changed there is nothing to witness, so do not commit one.
232
+ //
233
+ // This is not an optimisation. `workspaceGeneration` is part of the
234
+ // AgentSession identity key (`journey/selection.ts:596-604`), so a
235
+ // generation committed for identical content makes the previous session
236
+ // stop being "exact" and forces a sibling with a new process epoch.
237
+ // Measured in production 2026-08-30 on binding dab40ec9: generations 1,
238
+ // 2 and 3 all carry manifest root d4313d11…, entry_count 1,
239
+ // content_bytes 28 — three generations, one manifest, no file touched.
240
+ // Two runs against one Machine left two live OpenCode processes where the
241
+ // owner expected to reconnect to one.
242
+ //
243
+ // The manifest is recomputed inside `synchronizeLocalWorkspace` when the
244
+ // content HAS changed, which is the only case that pays for it. Skipping
245
+ // returns exactly the shape the proven `--no-sync` branch above returns.
246
+ const currentManifestRoot = await computeWorkspaceManifestRoot({
247
+ localRoot: inspected.policy.canonicalRoot,
248
+ filesystemCapabilities: input.filesystemCapabilities,
249
+ });
250
+ if (authority.activeGeneration >= 1 &&
251
+ authority.activeManifestRoot === currentManifestRoot) {
252
+ if (localRecord === undefined || localRecord.generation !== authority.activeGeneration) {
253
+ await persistWorkspaceBinding({
254
+ root: inspected.policy.canonicalRoot,
255
+ binding: {
256
+ profileId: input.profileId, userId: input.userId, workspaceId: input.workspaceId,
257
+ bindingId: authority.bindingId, projectId: authority.projectId,
258
+ ...(authority.executionWorkspaceId == null ? {} : { executionWorkspaceId: authority.executionWorkspaceId }),
259
+ localInstanceId: authority.localInstanceId, machineId, remoteRoot: authority.remoteRoot,
260
+ policyDigest: authority.exclusionPolicyDigest, generation: authority.activeGeneration,
261
+ bindingCreatedAt: authority.createdAt, bindingUpdatedAt: authority.updatedAt,
262
+ },
263
+ expected: localRecord === undefined ? null : workspaceBindingCompareAndSwap(localRecord),
264
+ });
265
+ }
266
+ return Object.freeze({
267
+ bindingId: authority.bindingId,
268
+ ...(authority.executionWorkspaceId == null ? {} : { executionWorkspaceId: authority.executionWorkspaceId }),
269
+ workspaceIdentity: authority.bindingId,
270
+ generation: authority.activeGeneration,
271
+ remoteCwd: authority.remoteRoot,
272
+ });
273
+ }
274
+ const checkpointRoot = join(input.stateDirectory, "workspace-sync");
275
+ await mkdir(checkpointRoot, { recursive: true, mode: 0o700 });
276
+ const receipt = await synchronizeLocalWorkspace({
277
+ localRoot: inspected.policy.canonicalRoot,
278
+ workspaceId: input.workspaceId,
279
+ workspaceBindingId: authority.bindingId,
280
+ machineId,
281
+ baseGeneration: authority.activeGeneration,
282
+ transport: input.transport,
283
+ checkpointRoot,
284
+ filesystemCapabilities: input.filesystemCapabilities,
285
+ signal,
286
+ });
287
+ const committedAuthority = await input.client.getWorkspaceBinding(authority.bindingId, {
288
+ ...(authority.executionWorkspaceId == null ? {} : { executionWorkspaceId: authority.executionWorkspaceId }),
289
+ workspaceId: input.workspaceId,
290
+ projectId: authority.projectId,
291
+ localInstanceId: authority.localInstanceId,
292
+ machineId,
293
+ exclusionPolicyDigest: authority.exclusionPolicyDigest,
294
+ }, signal);
295
+ if ((committedAuthority.executionWorkspaceId ?? null) !== (authority.executionWorkspaceId ?? null) ||
296
+ committedAuthority.remoteRoot !== authority.remoteRoot ||
297
+ committedAuthority.activeGeneration !== receipt.generation ||
298
+ committedAuthority.activeManifestRoot !== receipt.manifest_root) {
299
+ throw fail("cuna.journey.workspace_commit_unproven", "The WorkspaceBinding authority does not confirm the committed synchronization receipt.", EXIT_CODES.remote);
300
+ }
301
+ const persisted = await persistWorkspaceBinding({
302
+ root: inspected.policy.canonicalRoot,
303
+ binding: {
304
+ profileId: input.profileId,
305
+ userId: input.userId,
306
+ workspaceId: input.workspaceId,
307
+ bindingId: committedAuthority.bindingId,
308
+ projectId: committedAuthority.projectId,
309
+ ...(committedAuthority.executionWorkspaceId == null ? {} : { executionWorkspaceId: committedAuthority.executionWorkspaceId }),
310
+ localInstanceId: committedAuthority.localInstanceId,
311
+ machineId,
312
+ remoteRoot: committedAuthority.remoteRoot,
313
+ policyDigest: committedAuthority.exclusionPolicyDigest,
314
+ generation: receipt.generation,
315
+ bindingCreatedAt: committedAuthority.createdAt,
316
+ bindingUpdatedAt: committedAuthority.updatedAt,
317
+ },
318
+ expected: localRecord === undefined ? null : workspaceBindingCompareAndSwap(localRecord),
319
+ });
320
+ supervisor = await startContinuousWorkspaceSync({
321
+ localRoot: inspected.policy.canonicalRoot,
322
+ workspaceId: input.workspaceId,
323
+ workspaceBindingId: persisted.bindingId,
324
+ machineId,
325
+ baseGeneration: authority.activeGeneration,
326
+ transport: input.transport,
327
+ checkpointRoot,
328
+ filesystemCapabilities: input.filesystemCapabilities,
329
+ initialReceipt: receipt,
330
+ });
331
+ unsubscribeSupervisor = supervisor.subscribe((snapshot) => {
332
+ for (const listener of syncListeners) {
333
+ try {
334
+ listener(snapshot);
335
+ }
336
+ catch { /* Status observers never own synchronization correctness. */ }
337
+ }
338
+ });
339
+ return Object.freeze({ ...(persisted.executionWorkspaceId === undefined ? {} : { executionWorkspaceId: persisted.executionWorkspaceId }), bindingId: persisted.bindingId, workspaceIdentity: persisted.bindingId, generation: persisted.generation, remoteCwd: persisted.remoteRoot });
340
+ },
341
+ };
342
+ return Object.freeze(effects);
343
+ }
344
+ /** Safe under-claims never become guessed remote capabilities. */
345
+ export function conservativeFilesystemCapabilities(platform) {
346
+ return Object.freeze({ platform, caseSensitive: false, unicodeNormalization: "nfc", symlinks: false, atomicRename: false, maximumComponentBytes: 255, maximumPathBytes: 4_096 });
347
+ }
348
+ //# sourceMappingURL=workspace-effects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-effects.js","sourceRoot":"","sources":["../../src/journey/workspace-effects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { type LocalActionRequest, type LocalActionResult, type LocalActionSafeReason, type LocalActionSessionIdentity, type LocalActionSnapshot } from "./contracts.js";
2
+ import { LocalActionPolicyEvaluator } from "./policy.js";
3
+ export interface LocalActionBrokerOptions {
4
+ readonly policy?: LocalActionPolicyEvaluator;
5
+ readonly clock?: () => number;
6
+ readonly maximumQueuedRequests?: number;
7
+ readonly onChange?: (snapshot: LocalActionSnapshot) => void;
8
+ /** Synchronous authority check backed by the currently attached, fenced runtime binding. */
9
+ readonly isIdentityLive: (identity: LocalActionSessionIdentity) => boolean;
10
+ readonly onObserverError?: (error: unknown) => void;
11
+ }
12
+ export declare class LocalActionBroker {
13
+ #private;
14
+ constructor(options: LocalActionBrokerOptions);
15
+ submit(request: LocalActionRequest): LocalActionSnapshot;
16
+ current(): LocalActionSnapshot | undefined;
17
+ get(requestId: string): LocalActionSnapshot | undefined;
18
+ decide(requestId: string, allow: boolean, grantedScope?: string | null): LocalActionSnapshot;
19
+ awaitingRemoteCompletion(requestId: string): LocalActionSnapshot;
20
+ complete(requestId: string, identity: LocalActionSessionIdentity, status: LocalActionResult["status"], safeData?: LocalActionResult["safeData"], safeReason?: LocalActionSafeReason): LocalActionSnapshot;
21
+ cancelBinding(identity: LocalActionSessionIdentity, reason?: LocalActionSafeReason): readonly LocalActionSnapshot[];
22
+ cancelStaleForIdentity(identity: LocalActionSessionIdentity, reason?: LocalActionSafeReason): readonly LocalActionSnapshot[];
23
+ expire(): readonly LocalActionSnapshot[];
24
+ }
25
+ export declare class LocalActionBrokerError extends Error {
26
+ readonly code: "duplicate_request" | "replayed_nonce" | "replay_registry_full" | "queue_full" | "unknown_request" | "identity_mismatch" | "stale_identity" | "scope_widening" | "illegal_transition" | "invalid_request" | "invalid_result" | "provider_action_unavailable";
27
+ readonly requestId: string;
28
+ constructor(code: "duplicate_request" | "replayed_nonce" | "replay_registry_full" | "queue_full" | "unknown_request" | "identity_mismatch" | "stale_identity" | "scope_widening" | "illegal_transition" | "invalid_request" | "invalid_result" | "provider_action_unavailable", requestId: string);
29
+ }
30
+ export declare function digestLocalActionArguments(value: Readonly<Record<string, unknown>>): `sha256:${string}`;
31
+ export declare function validateRequest(request: LocalActionRequest, now?: number): void;
32
+ //# sourceMappingURL=broker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../../src/local-actions/broker.ts"],"names":[],"mappings":"AAEA,OAAO,EAQL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EAIzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAUzD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,0BAA0B,CAAC;IAC7C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IAC9B,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC5D,4FAA4F;IAC5F,QAAQ,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,OAAO,CAAC;IAC3E,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACrD;AAED,qBAAa,iBAAiB;;gBAahB,OAAO,EAAE,wBAAwB;IAa7C,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,mBAAmB;IAyCxD,OAAO,IAAI,mBAAmB,GAAG,SAAS;IAK1C,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIvD,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,GAAE,MAAM,GAAG,IAAW,GAAG,mBAAmB;IAoBlG,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB;IAQhE,QAAQ,CACN,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,0BAA0B,EACpC,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EACnC,QAAQ,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,EACxC,UAAU,CAAC,EAAE,qBAAqB,GACjC,mBAAmB;IAyCtB,aAAa,CAAC,QAAQ,EAAE,0BAA0B,EAAE,MAAM,GAAE,qBAAkD,GAAG,SAAS,mBAAmB,EAAE;IAU/I,sBAAsB,CAAC,QAAQ,EAAE,0BAA0B,EAAE,MAAM,GAAE,qBAAkD,GAAG,SAAS,mBAAmB,EAAE;IAaxJ,MAAM,IAAI,SAAS,mBAAmB,EAAE;CAiHzC;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAE7C,QAAQ,CAAC,IAAI,EAAE,mBAAmB,GAAG,gBAAgB,GAAG,sBAAsB,GAAG,YAAY,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,6BAA6B;IAC3Q,QAAQ,CAAC,SAAS,EAAE,MAAM;gBADjB,IAAI,EAAE,mBAAmB,GAAG,gBAAgB,GAAG,sBAAsB,GAAG,YAAY,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,6BAA6B,EAClQ,SAAS,EAAE,MAAM;CAK7B;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACvC,UAAU,MAAM,EAAE,CAEpB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,SAAa,GAAG,IAAI,CAuCnF"}