@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,434 @@
1
+ import { contractViolation, isObject, underIndex } from "../core/validation.js";
2
+ import { decodeMachineItem } from "./contracts.js";
3
+ /**
4
+ * `sessions.updateSupervisorInPlace` and `sessions.readSupervisorInPlaceUpdate`
5
+ * — the running-Machine supervisor update, and the read that recovers it.
6
+ *
7
+ * WHAT THE PATH ID IS. `POST /v1/sessions/{id}/supervisor/live-update` reads
8
+ * `{id}` as a MACHINE, exactly like its stopped-boundary sibling
9
+ * `sessions.replaceSupervisor`: the producer parses it with `canonicalUuid` into
10
+ * `machineId` and the `Session` schema it answers with is the Machine row. It is
11
+ * NOT an AgentSession id, and the per-session custody it reports is a separate
12
+ * array of `agent_session_id` values. Binding the response to the requested
13
+ * Machine is therefore a real check, and `api/client.ts` performs it.
14
+ *
15
+ * THE OPERATION IDENTITY, which is what makes a lost answer recoverable. The
16
+ * POST now carries a required body — one field, `operation_id`, chosen by the
17
+ * CALLER before sending. The producer records that identity durably before it
18
+ * issues any supervisor enrollment, so repeating the SAME value never rotates a
19
+ * second time: it resumes an attempt that spent nothing, reconciles one that
20
+ * may have spent something, and returns the recorded answer once the operation
21
+ * has settled. A DIFFERENT value for a Machine whose update has not settled is
22
+ * refused. `sessions.readSupervisorInPlaceUpdate` is the read of that record: it
23
+ * dispatches no installer, sends nothing to the Machine and changes no state.
24
+ *
25
+ * WHERE THE SHAPES BELOW COME FROM, exactly. The VENDORED producer contract at
26
+ * `contracts/infra/cuna-api.openapi.json`, synchronized by
27
+ * `npm run contract:sync:infra` from producer repository `Cuna-Labs/infra` at
28
+ * commit `7b1b3e425ed273986a909a68395b5272bd6a01ba` — read from a clean,
29
+ * detached, read-only reference worktree, never from a mutable one. The sync
30
+ * runs the producer's own `contracts/tools/verify-contract.mjs` and refuses
31
+ * unless the consumer's recomputed canonical digest equals the digest that
32
+ * verifier attests, so the artifact in this repository is the producer's bytes
33
+ * and is provably so. `contracts/infra/cuna-api.openapi.identity.json` carries
34
+ * the commit, tree and blob ids.
35
+ *
36
+ * WHY THE TABLE BELOW IS STILL HAND-WRITTEN. The repository's convention for a
37
+ * canonical DTO is a generated projection (`scripts/project-provider-v2.mjs`
38
+ * and its siblings). This module keeps its own declaration for one reason a
39
+ * schema projection cannot cover: the decoders enforce CROSS-FIELD invariants
40
+ * the producer states in prose and encodes nowhere — a settled phase agrees
41
+ * with `next_action: "none"` and with a non-null `settled_at`; a declared
42
+ * session carries no verdict; one AgentSession is never accounted for twice. A
43
+ * generated shape would check none of those.
44
+ *
45
+ * It is not therefore unchecked. `test/machines-live-update-supervisor.test.mjs`
46
+ * reads the vendored artifact and asserts that every key list, enum and bound
47
+ * in `SUPERVISOR_LIVE_UPDATE_WIRE` equals the producer's own, so this table is
48
+ * a VERIFIED projection rather than a copy that can drift in silence. If the
49
+ * next sync moves any of them, that test names which.
50
+ */
51
+ export const SUPERVISOR_LIVE_UPDATE_WIRE = Object.freeze({
52
+ operationId: "sessions.updateSupervisorInPlace",
53
+ method: "POST",
54
+ /** `{id}` is the Machine, not the AgentSession. */
55
+ pathTemplate: "/v1/sessions/{id}/supervisor/live-update",
56
+ pathParameterSubject: "machine",
57
+ requestSchema: "SupervisorLiveUpdateRequest",
58
+ responseSchema: "SupervisorLiveUpdateResult",
59
+ sessionSchema: "SupervisorLiveUpdateSession",
60
+ requiredPermission: "machines:update",
61
+ /**
62
+ * A required JSON body carrying the caller's chosen operation identity. There
63
+ * is still no idempotency key: this identity is the durable one, and it is the
64
+ * producer's own journal key rather than a transport-level retry token.
65
+ */
66
+ hasRequestBody: true,
67
+ requestContentType: "application/json; charset=utf-8",
68
+ requestKeys: Object.freeze(["operation_id"]),
69
+ responseKeys: Object.freeze([
70
+ "machine",
71
+ "operation_id",
72
+ "control_generation",
73
+ "artifact_sha256",
74
+ "installed_at",
75
+ "agent_sessions",
76
+ ]),
77
+ sessionKeys: Object.freeze(["agent_session_id", "process_epoch", "outcome"]),
78
+ outcomes: Object.freeze(["preserved", "exited", "ended", "unknown"]),
79
+ /** `maxItems` on `agent_sessions` in the producer schema. */
80
+ maximumSessions: 64,
81
+ /**
82
+ * The read that recovers a lost answer.
83
+ *
84
+ * `machines:read`, not `machines:update`: it is a database read scoped to the
85
+ * owner and the exact Machine. `dispatchesInstaller: false` is the producer's
86
+ * own statement about it and the reason this CLI may call it freely after an
87
+ * interruption — the thing a caller must NOT do to resolve an operation is
88
+ * send a second one, and this is not that.
89
+ */
90
+ recovery: Object.freeze({
91
+ operationId: "sessions.readSupervisorInPlaceUpdate",
92
+ method: "GET",
93
+ pathTemplate: "/v1/sessions/{id}/supervisor/live-update/{operationId}",
94
+ pathParameterSubject: "machine",
95
+ responseSchema: "SupervisorLiveUpdateOperation",
96
+ declaredSessionSchema: "SupervisorLiveUpdateDeclaredSession",
97
+ failureSchema: "SupervisorLiveUpdateFailure",
98
+ requiredPermission: "machines:read",
99
+ dispatchesInstaller: false,
100
+ operationKeys: Object.freeze([
101
+ "operation_id",
102
+ "machine_id",
103
+ "phase",
104
+ "control_rotated",
105
+ "installer_outcome",
106
+ "control_generation",
107
+ "artifact_sha256",
108
+ "installed_at",
109
+ "installation_evidence",
110
+ "declared_sessions",
111
+ "agent_sessions",
112
+ "failure",
113
+ "next_action",
114
+ "claimed_at",
115
+ "updated_at",
116
+ "settled_at",
117
+ /**
118
+ * The install fence, added at producer `7b1b3e42`. Both are required and
119
+ * both are nullable, and they are one fact in two fields: the producer's
120
+ * own column constraint is `(retired_at is null) = (retirement_receipt is
121
+ * null)`, so a reader that got one without the other would be reading a
122
+ * row the producer forbids.
123
+ */
124
+ "retired_at",
125
+ "retirement_outcome",
126
+ ]),
127
+ declaredSessionKeys: Object.freeze(["agent_session_id", "process_epoch"]),
128
+ failureKeys: Object.freeze([
129
+ "status",
130
+ "code",
131
+ "title",
132
+ "detail",
133
+ "retryable",
134
+ "action",
135
+ ]),
136
+ phases: Object.freeze(["claimed", "control_rotated", "installed", "settled"]),
137
+ installerOutcomes: Object.freeze(["not_sent", "unknown", "refused", "installed"]),
138
+ /** `null` is a declared member of the producer's own enum, not an absence. */
139
+ installationEvidence: Object.freeze(["installer_exit", "reconciled"]),
140
+ nextActions: Object.freeze(["none", "repeat_same_operation"]),
141
+ failureActions: Object.freeze(["retry", "none"]),
142
+ /**
143
+ * What the Machine's install fence had recorded for this operation's
144
+ * control generation when the fence was advanced past it. `null` is a
145
+ * declared member of the producer's enum — "not retired yet" — and is
146
+ * decoded as absence rather than listed here.
147
+ *
148
+ * NEVER a substitute for `installerOutcome`. `installed` here says the
149
+ * fence recorded an admitted installer that finished; `installerOutcome`
150
+ * says what CUNA observed, and only it may be rendered as an installation.
151
+ */
152
+ retirementOutcomes: Object.freeze(["retired", "partial", "installed"]),
153
+ }),
154
+ source: Object.freeze({
155
+ state: "vendored",
156
+ producerRepository: "Cuna-Labs/infra",
157
+ producerRevision: "7b1b3e425ed273986a909a68395b5272bd6a01ba",
158
+ /**
159
+ * The producer-side artifact is `contracts/` plus the producer's own file
160
+ * name, which still carries the earlier brand. That literal now exists in
161
+ * exactly ONE shipped place — `scripts/sync-infra-openapi.mjs`'s
162
+ * `expectedSourceName`, whose classification `test/error-namespace.test.mjs`
163
+ * pins line-exactly — and the sync refuses any other source, so restating it
164
+ * here bought no authority and minted a second unclassified copy of it.
165
+ * `contracts/infra/cuna-api.openapi.identity.json` records the commit, tree
166
+ * and blob this table is attributed to.
167
+ */
168
+ /** `sha256` of the artifact's exact bytes at that commit. */
169
+ rawDigest: "f4c2d396b94f296b22df276435dc04ecf1da48807efa1e819c4cbff9ea59a83e",
170
+ /** The producer's own published digest, under its own canonical semantics. */
171
+ canonicalDigest: "43213c2adac602676437b612b7d4153707e09155bdc4fa3029cca15a0b207ecc",
172
+ digestSemantics: "sha256(canonical-json:utf8;recursive-object-key-sort;array-order-preserved)",
173
+ operations: 101,
174
+ sdkOperations: 40,
175
+ vendoredArtifact: "contracts/infra/cuna-api.openapi.json",
176
+ /** Synchronized 2026-09-13. The declarations above are checked against it. */
177
+ vendoredCarriesOperation: true,
178
+ synchronizeWith: "npm run contract:sync:infra",
179
+ }),
180
+ });
181
+ const OUTCOMES = new Set(SUPERVISOR_LIVE_UPDATE_WIRE.outcomes);
182
+ const PHASES = new Set(SUPERVISOR_LIVE_UPDATE_WIRE.recovery.phases);
183
+ const INSTALLER_OUTCOMES = new Set(SUPERVISOR_LIVE_UPDATE_WIRE.recovery.installerOutcomes);
184
+ const INSTALLATION_EVIDENCE = new Set(SUPERVISOR_LIVE_UPDATE_WIRE.recovery.installationEvidence);
185
+ const NEXT_ACTIONS = new Set(SUPERVISOR_LIVE_UPDATE_WIRE.recovery.nextActions);
186
+ const FAILURE_ACTIONS = new Set(SUPERVISOR_LIVE_UPDATE_WIRE.recovery.failureActions);
187
+ const RETIREMENT_OUTCOMES = new Set(SUPERVISOR_LIVE_UPDATE_WIRE.recovery.retirementOutcomes);
188
+ const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/u;
189
+ const SHA256 = /^[0-9a-f]{64}$/u;
190
+ const PROBLEM_CODE = /^[a-z][a-z0-9_]{2,63}$/u;
191
+ function exactKeys(value, keys, predicate) {
192
+ const actual = Object.keys(value).sort();
193
+ const expected = [...keys].sort();
194
+ if (actual.length !== expected.length || actual.some((key, index) => key !== expected[index])) {
195
+ throw contractViolation(predicate);
196
+ }
197
+ }
198
+ function uuid(value, field) {
199
+ if (typeof value !== "string" || !UUID.test(value))
200
+ throw contractViolation("canonical_uuid", field);
201
+ return value;
202
+ }
203
+ function timestamp(value, field) {
204
+ if (typeof value !== "string" || !Number.isFinite(Date.parse(value))) {
205
+ throw contractViolation("parsable_timestamp", field);
206
+ }
207
+ return value;
208
+ }
209
+ /**
210
+ * A field the producer types as `["X", "null"]`.
211
+ *
212
+ * `null` is the producer's own way of saying "not established yet", and it is
213
+ * decoded to `undefined` — absent rather than a falsy value some later branch
214
+ * could read as zero, empty or settled.
215
+ */
216
+ function nullable(value, field, decode) {
217
+ if (value === null)
218
+ return undefined;
219
+ if (value === undefined)
220
+ throw contractViolation("explicit_null_not_absence", field);
221
+ return decode(value);
222
+ }
223
+ function decodeSession(value) {
224
+ if (!isObject(value))
225
+ throw contractViolation("object");
226
+ exactKeys(value, SUPERVISOR_LIVE_UPDATE_WIRE.sessionKeys, "exact_live_update_session_shape");
227
+ const outcome = value.outcome;
228
+ // A value this build does not know is a contract violation, never a silent
229
+ // demotion to `unknown`: an unrecognised outcome could be a NEW way to say
230
+ // "ended", and rendering it as "we could not tell" would understate it.
231
+ if (typeof outcome !== "string" || !OUTCOMES.has(outcome)) {
232
+ throw contractViolation("known_enum_value", "outcome");
233
+ }
234
+ return Object.freeze({
235
+ agentSessionId: uuid(value.agent_session_id, "agent_session_id"),
236
+ processEpoch: uuid(value.process_epoch, "process_epoch"),
237
+ outcome: outcome,
238
+ });
239
+ }
240
+ function decodeDeclaredSession(value) {
241
+ if (!isObject(value))
242
+ throw contractViolation("object");
243
+ exactKeys(value, SUPERVISOR_LIVE_UPDATE_WIRE.recovery.declaredSessionKeys, "exact_live_update_declared_session_shape");
244
+ return Object.freeze({
245
+ agentSessionId: uuid(value.agent_session_id, "agent_session_id"),
246
+ processEpoch: uuid(value.process_epoch, "process_epoch"),
247
+ });
248
+ }
249
+ function decodeSessionArray(value, field, decode) {
250
+ if (!Array.isArray(value) || value.length > SUPERVISOR_LIVE_UPDATE_WIRE.maximumSessions) {
251
+ throw contractViolation("bounded_live_update_session_array", field);
252
+ }
253
+ const items = value.map((item, index) => underIndex(field, index, () => decode(item)));
254
+ // One AgentSession may not appear twice: two rows for one id would let a
255
+ // `preserved` and an `ended` verdict coexist for the same process.
256
+ if (new Set(items.map((item) => item.agentSessionId)).size !== items.length) {
257
+ throw contractViolation("distinct_agent_sessions", field);
258
+ }
259
+ return items;
260
+ }
261
+ function decodeFailure(value) {
262
+ if (!isObject(value))
263
+ throw contractViolation("object", "failure");
264
+ exactKeys(value, SUPERVISOR_LIVE_UPDATE_WIRE.recovery.failureKeys, "exact_live_update_failure_shape");
265
+ const status = value.status;
266
+ if (!Number.isSafeInteger(status) || Number(status) < 400 || Number(status) > 599) {
267
+ throw contractViolation("problem_status", "failure.status");
268
+ }
269
+ const code = value.code;
270
+ if (typeof code !== "string" || !PROBLEM_CODE.test(code)) {
271
+ throw contractViolation("problem_code", "failure.code");
272
+ }
273
+ const title = value.title;
274
+ if (typeof title !== "string" || title.length < 1 || title.length > 120) {
275
+ throw contractViolation("bounded_title", "failure.title");
276
+ }
277
+ const detail = value.detail;
278
+ if (typeof detail !== "string" || detail.length < 1 || detail.length > 500) {
279
+ throw contractViolation("bounded_detail", "failure.detail");
280
+ }
281
+ if (typeof value.retryable !== "boolean") {
282
+ throw contractViolation("boolean", "failure.retryable");
283
+ }
284
+ const action = value.action;
285
+ if (typeof action !== "string" || !FAILURE_ACTIONS.has(action)) {
286
+ throw contractViolation("known_enum_value", "failure.action");
287
+ }
288
+ return Object.freeze({
289
+ status: Number(status),
290
+ code,
291
+ title,
292
+ detail,
293
+ retryable: value.retryable,
294
+ action: action,
295
+ });
296
+ }
297
+ /** Strict: the producer declares `additionalProperties: false` on both objects. */
298
+ export function decodeSupervisorLiveUpdate(value) {
299
+ if (!isObject(value))
300
+ throw contractViolation("object");
301
+ exactKeys(value, SUPERVISOR_LIVE_UPDATE_WIRE.responseKeys, "exact_live_update_result_shape");
302
+ const controlGeneration = value.control_generation;
303
+ if (!Number.isSafeInteger(controlGeneration) || Number(controlGeneration) < 1) {
304
+ throw contractViolation("safe_positive_integer", "control_generation");
305
+ }
306
+ const artifactSha256 = value.artifact_sha256;
307
+ if (typeof artifactSha256 !== "string" || !SHA256.test(artifactSha256)) {
308
+ throw contractViolation("sha256_digest", "artifact_sha256");
309
+ }
310
+ const sessions = decodeSessionArray(value.agent_sessions, "agent_sessions", decodeSession);
311
+ return Object.freeze({
312
+ machine: decodeMachineItem(value.machine),
313
+ operationId: uuid(value.operation_id, "operation_id"),
314
+ controlGeneration: Number(controlGeneration),
315
+ artifactSha256,
316
+ installedAt: timestamp(value.installed_at, "installed_at"),
317
+ sessions: Object.freeze(sessions),
318
+ });
319
+ }
320
+ /**
321
+ * The authoritative phase and known result of ONE owned in-place update.
322
+ *
323
+ * Everything optional here is optional because the producer types it nullable,
324
+ * and every one of those nulls means "Cuna has not established this". None of
325
+ * them is defaulted: a `control_generation` of null is not generation zero, an
326
+ * empty `agent_sessions` is not a set of `unknown` outcomes, and an
327
+ * `installed_at` with `installation_evidence: reconciled` is when Cuna LOOKED,
328
+ * not when the artifact arrived.
329
+ */
330
+ export function decodeSupervisorLiveUpdateOperation(value) {
331
+ if (!isObject(value))
332
+ throw contractViolation("object");
333
+ exactKeys(value, SUPERVISOR_LIVE_UPDATE_WIRE.recovery.operationKeys, "exact_live_update_operation_shape");
334
+ const phase = value.phase;
335
+ if (typeof phase !== "string" || !PHASES.has(phase)) {
336
+ throw contractViolation("known_enum_value", "phase");
337
+ }
338
+ if (typeof value.control_rotated !== "boolean") {
339
+ throw contractViolation("boolean", "control_rotated");
340
+ }
341
+ const installerOutcome = value.installer_outcome;
342
+ if (typeof installerOutcome !== "string" || !INSTALLER_OUTCOMES.has(installerOutcome)) {
343
+ throw contractViolation("known_enum_value", "installer_outcome");
344
+ }
345
+ const nextAction = value.next_action;
346
+ if (typeof nextAction !== "string" || !NEXT_ACTIONS.has(nextAction)) {
347
+ throw contractViolation("known_enum_value", "next_action");
348
+ }
349
+ const controlGeneration = nullable(value.control_generation, "control_generation", (raw) => {
350
+ if (!Number.isSafeInteger(raw) || Number(raw) < 1) {
351
+ throw contractViolation("safe_positive_integer", "control_generation");
352
+ }
353
+ return Number(raw);
354
+ });
355
+ const artifactSha256 = nullable(value.artifact_sha256, "artifact_sha256", (raw) => {
356
+ if (typeof raw !== "string" || !SHA256.test(raw)) {
357
+ throw contractViolation("sha256_digest", "artifact_sha256");
358
+ }
359
+ return raw;
360
+ });
361
+ const installedAt = nullable(value.installed_at, "installed_at", (raw) => timestamp(raw, "installed_at"));
362
+ const installationEvidence = nullable(value.installation_evidence, "installation_evidence", (raw) => {
363
+ if (typeof raw !== "string" || !INSTALLATION_EVIDENCE.has(raw)) {
364
+ throw contractViolation("known_enum_value", "installation_evidence");
365
+ }
366
+ return raw;
367
+ });
368
+ const failure = nullable(value.failure, "failure", decodeFailure);
369
+ const settledAt = nullable(value.settled_at, "settled_at", (raw) => timestamp(raw, "settled_at"));
370
+ const retiredAt = nullable(value.retired_at, "retired_at", (raw) => timestamp(raw, "retired_at"));
371
+ const retirementOutcome = nullable(value.retirement_outcome, "retirement_outcome", (raw) => {
372
+ if (typeof raw !== "string" || !RETIREMENT_OUTCOMES.has(raw)) {
373
+ throw contractViolation("known_enum_value", "retirement_outcome");
374
+ }
375
+ return raw;
376
+ });
377
+ // The producer's own invariant, and the one a renderer would otherwise have to
378
+ // guess at: only a settled operation is finished with, and only a settled one
379
+ // stops asking for the same identity back.
380
+ if ((phase === "settled") !== (nextAction === "none")) {
381
+ throw contractViolation("settled_phase_agrees_with_next_action", "next_action");
382
+ }
383
+ if ((phase === "settled") !== (settledAt !== undefined)) {
384
+ throw contractViolation("settled_phase_agrees_with_settled_at", "settled_at");
385
+ }
386
+ // The producer's own column constraint, `(retired_at is null) =
387
+ // (retirement_receipt is null)`. One of the two alone is a row the producer
388
+ // forbids, and accepting it would let a surface say "the installer can no
389
+ // longer act" with nothing recording what it had already done, or the reverse.
390
+ if ((retiredAt !== undefined) !== (retirementOutcome !== undefined)) {
391
+ throw contractViolation("retirement_time_agrees_with_retirement_outcome", "retirement_outcome");
392
+ }
393
+ // `supervisor_live_update_retirement_after_rotation`: nothing can be retired
394
+ // that never authorized an installer. A retirement on an operation that never
395
+ // rotated control would be a fence raised against nothing.
396
+ if (retiredAt !== undefined && !value.control_rotated) {
397
+ throw contractViolation("retirement_follows_control_rotation", "retired_at");
398
+ }
399
+ // `supervisor_live_update_unknown_settles_only_on_retirement`: the retirement
400
+ // receipt is the ONLY evidence on which an unobserved installer outcome may
401
+ // settle. This is the invariant the whole presentation rests on -- it is what
402
+ // makes "settled and unknown" mean "it never ran and can no longer run"
403
+ // rather than "nobody ever found out" -- so a row that settles `unknown`
404
+ // without it is refused here rather than rendered as either.
405
+ //
406
+ // Deliberately NOT the converse. A retired operation may still be open: a
407
+ // `partial` receipt whose Machine still reports an outstanding systemd job
408
+ // cannot settle, and the producer records the fence anyway because raising it
409
+ // is true regardless and is what stops a new effect from starting.
410
+ if (phase === "settled" && installerOutcome === "unknown" && retiredAt === undefined) {
411
+ throw contractViolation("settled_unknown_carries_retirement", "retired_at");
412
+ }
413
+ return Object.freeze({
414
+ operationId: uuid(value.operation_id, "operation_id"),
415
+ machineId: uuid(value.machine_id, "machine_id"),
416
+ phase: phase,
417
+ controlRotated: value.control_rotated,
418
+ installerOutcome: installerOutcome,
419
+ ...(controlGeneration === undefined ? {} : { controlGeneration }),
420
+ ...(artifactSha256 === undefined ? {} : { artifactSha256 }),
421
+ ...(installedAt === undefined ? {} : { installedAt }),
422
+ ...(installationEvidence === undefined ? {} : { installationEvidence }),
423
+ declaredSessions: Object.freeze(decodeSessionArray(value.declared_sessions, "declared_sessions", decodeDeclaredSession)),
424
+ sessions: Object.freeze(decodeSessionArray(value.agent_sessions, "agent_sessions", decodeSession)),
425
+ ...(failure === undefined ? {} : { failure }),
426
+ nextAction: nextAction,
427
+ claimedAt: timestamp(value.claimed_at, "claimed_at"),
428
+ updatedAt: timestamp(value.updated_at, "updated_at"),
429
+ ...(settledAt === undefined ? {} : { settledAt }),
430
+ ...(retiredAt === undefined ? {} : { retiredAt }),
431
+ ...(retirementOutcome === undefined ? {} : { retirementOutcome }),
432
+ });
433
+ }
434
+ //# sourceMappingURL=supervisor-live-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supervisor-live-update.js","sourceRoot":"","sources":["../../src/api/supervisor-live-update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Public terminal reasons are reviewed codes, never provider output. */
2
+ export declare const TERMINAL_REASONS: readonly ["process_exited", "process_not_observed", "owner_unrecoverable", "opencode_server_exited", "terminal_model_terminated_unobserved", "session_executable_allowlist", "session_executable_unavailable", "session_executable_permissions", "session_executable_owner", "session_executable_location", "canonical_launch_interrupted", "machine_restarted"];
3
+ export type TerminalReason = typeof TERMINAL_REASONS[number];
4
+ export declare function isTerminalReason(value: unknown): value is TerminalReason;
5
+ //# sourceMappingURL=terminal-reason.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-reason.d.ts","sourceRoot":"","sources":["../../src/api/terminal-reason.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,kWAMnB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAE7D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE"}
@@ -0,0 +1,12 @@
1
+ /** Public terminal reasons are reviewed codes, never provider output. */
2
+ export const TERMINAL_REASONS = [
3
+ "process_exited", "process_not_observed", "owner_unrecoverable",
4
+ "opencode_server_exited", "terminal_model_terminated_unobserved",
5
+ "session_executable_allowlist", "session_executable_unavailable",
6
+ "session_executable_permissions", "session_executable_owner",
7
+ "session_executable_location", "canonical_launch_interrupted", "machine_restarted",
8
+ ];
9
+ export function isTerminalReason(value) {
10
+ return typeof value === "string" && TERMINAL_REASONS.some(reason => reason === value);
11
+ }
12
+ //# sourceMappingURL=terminal-reason.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-reason.js","sourceRoot":"","sources":["../../src/api/terminal-reason.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,gBAAgB,EAAE,sBAAsB,EAAE,qBAAqB;IAC/D,wBAAwB,EAAE,sCAAsC;IAChE,8BAA8B,EAAE,gCAAgC;IAChE,gCAAgC,EAAE,0BAA0B;IAC5D,6BAA6B,EAAE,8BAA8B,EAAE,mBAAmB;CAC1E,CAAC;AAIX,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;AACxF,CAAC"}
@@ -0,0 +1,59 @@
1
+ import type { BrowserOpener } from "./browser.js";
2
+ /**
3
+ * How the continuation URL reached the user.
4
+ *
5
+ * `printed_only` is a success, not a degradation to report as a failure: the
6
+ * printed URL is a complete affordance on its own. Spawning a browser is the
7
+ * convenience, not the mechanism.
8
+ */
9
+ export type BrowserHandoffOutcome = "opened" | "printed_only";
10
+ /**
11
+ * The terminal side of the browser handoff.
12
+ *
13
+ * Declared here, in the auth layer, and implemented in the CLI layer: this
14
+ * module owns *when* the user is told, and the caller owns *how* it is
15
+ * rendered. Splitting it the other way is how the URL came to be produced and
16
+ * never delivered.
17
+ */
18
+ export interface BrowserHandoffReporter {
19
+ /**
20
+ * Deliver the continuation URL to the user.
21
+ *
22
+ * Called exactly once, before any open attempt, on every path. This is the
23
+ * only delivery of the URL there is: the console's `/cli/continue` page reads
24
+ * its continuation proof from the URL fragment and refuses to fall back to an
25
+ * older one, and the CLI is the only holder of that fragment. If this is not
26
+ * called, the sign-in cannot be completed by any means.
27
+ */
28
+ continuationUrl(url: string): void;
29
+ /** The open attempt succeeded. Must not restate the URL. */
30
+ browserOpened(): void;
31
+ /** The open attempt failed. Must not restate the URL. */
32
+ browserOpenFailed(): void;
33
+ }
34
+ /**
35
+ * Deliver the browser continuation to the user, then try to open it.
36
+ *
37
+ * The order is the invariant, and it is the reason this is one function rather
38
+ * than two call sites: printing and opening are one obligation with one
39
+ * failure mode. `open` spawns a detached child process, so it can fail on a
40
+ * headless host, over SSH, inside WSL, with no registered default browser, or
41
+ * under a hardened desktop policy. Announcing first makes every one of those a
42
+ * cosmetic loss instead of a dead end.
43
+ *
44
+ * An open failure is therefore contained rather than propagated. The URL has
45
+ * already reached the user by the time it can happen, so failing the sign-in
46
+ * here would discard a working flow because a convenience did not work.
47
+ *
48
+ * `url` is the server-minted `browser_url`, already validated by
49
+ * `decodeCliContinuationIssued` against the bootstrap-advertised origin, the
50
+ * `/cli/continue` path and the exact fragment binding. This function never
51
+ * constructs or edits a URL: the CLI accepts the one authority the service
52
+ * minted and forwards it unchanged.
53
+ */
54
+ export declare function handOffContinuationToBrowser(input: {
55
+ readonly url: string;
56
+ readonly opener: BrowserOpener;
57
+ readonly reporter: BrowserHandoffReporter;
58
+ }): Promise<BrowserHandoffOutcome>;
59
+ //# sourceMappingURL=browser-handoff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-handoff.d.ts","sourceRoot":"","sources":["../../src/auth/browser-handoff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,cAAc,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;;;;;OAQG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,4DAA4D;IAC5D,aAAa,IAAI,IAAI,CAAC;IACtB,yDAAyD;IACzD,iBAAiB,IAAI,IAAI,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,4BAA4B,CAAC,KAAK,EAAE;IACxD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;CAC3C,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAUjC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Deliver the browser continuation to the user, then try to open it.
3
+ *
4
+ * The order is the invariant, and it is the reason this is one function rather
5
+ * than two call sites: printing and opening are one obligation with one
6
+ * failure mode. `open` spawns a detached child process, so it can fail on a
7
+ * headless host, over SSH, inside WSL, with no registered default browser, or
8
+ * under a hardened desktop policy. Announcing first makes every one of those a
9
+ * cosmetic loss instead of a dead end.
10
+ *
11
+ * An open failure is therefore contained rather than propagated. The URL has
12
+ * already reached the user by the time it can happen, so failing the sign-in
13
+ * here would discard a working flow because a convenience did not work.
14
+ *
15
+ * `url` is the server-minted `browser_url`, already validated by
16
+ * `decodeCliContinuationIssued` against the bootstrap-advertised origin, the
17
+ * `/cli/continue` path and the exact fragment binding. This function never
18
+ * constructs or edits a URL: the CLI accepts the one authority the service
19
+ * minted and forwards it unchanged.
20
+ */
21
+ export async function handOffContinuationToBrowser(input) {
22
+ input.reporter.continuationUrl(input.url);
23
+ try {
24
+ await input.opener.open(input.url);
25
+ }
26
+ catch {
27
+ input.reporter.browserOpenFailed();
28
+ return "printed_only";
29
+ }
30
+ input.reporter.browserOpened();
31
+ return "opened";
32
+ }
33
+ //# sourceMappingURL=browser-handoff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-handoff.js","sourceRoot":"","sources":["../../src/auth/browser-handoff.ts"],"names":[],"mappings":"AAoCA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,KAIlD;IACC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QACnC,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;IAC/B,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface BrowserOpener {
2
+ open(url: string): Promise<void>;
3
+ }
4
+ export interface BrowserCommand {
5
+ readonly executable: string;
6
+ readonly args: readonly string[];
7
+ readonly cwd: string;
8
+ }
9
+ export declare function resolveBrowserCommand(platform: NodeJS.Platform, url: string, _environment?: NodeJS.ProcessEnv): BrowserCommand;
10
+ export declare function createBrowserOpener(platform?: NodeJS.Platform, environment?: NodeJS.ProcessEnv): BrowserOpener;
11
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/auth/browser.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,GAAG,EAAE,MAAM,EACX,YAAY,GAAE,MAAM,CAAC,UAAwB,GAC5C,cAAc,CAehB;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,WAAW,GAAE,MAAM,CAAC,UAAwB,GAC3C,aAAa,CAqBf"}