@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 @@
1
+ {"version":3,"file":"provider-screen.js","sourceRoot":"","sources":["../../src/machines/provider-screen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import type { AgentSession, AgentSessionAuthState, AgentSessionProcessObservation, Machine } from "../api/contracts.js";
2
+ export type SessionBaseState = "attachable" | "starting" | "login-required" | "stale" | "failed" | "terminated" | "unsupported";
3
+ export type SessionRefreshStatus = "idle" | "pending";
4
+ export type SessionRecoveryAction = "attach" | "wait" | "authenticate" | "refresh" | "show-failure" | "none";
5
+ /**
6
+ * `runtime_lease_current` and `runtime_lease_expired` were `runtime_evidence_*`.
7
+ *
8
+ * The word was wrong in a way that mattered. What this classifier tests at the
9
+ * end is the runtime LEASE window, and a lease renewal that carries no fresh
10
+ * observation moves it on its own. Calling the result "evidence current" told a
11
+ * reader that something had recently observed the process, which the row does
12
+ * not say, and the timestamps beside it now let a caller see the difference
13
+ * instead of inferring it from a name.
14
+ *
15
+ * `runtime_evidence_missing` and `runtime_evidence_invalid` keep their names:
16
+ * they really are about the evidence fields, not about the window.
17
+ */
18
+ export type SessionActionReasonCode = "runtime_lease_current"
19
+ /**
20
+ * The lease is open AND the producer says nobody established the process
21
+ * state for this epoch. Two codes rather than one, because the producer
22
+ * distinguishes the causes: a lease renewal that settled without observing
23
+ * the child, and no provenance recorded at all.
24
+ *
25
+ * Both keep the base state `attachable`. The lease is still what decides
26
+ * whether attaching is worth attempting, and narrowing the action here would
27
+ * withhold the one thing that can actually answer the question — a lease is
28
+ * not an observation, but neither is a refusal to try.
29
+ */
30
+ | "runtime_lease_current_observation_unproven" | "runtime_lease_current_observation_unknown" | "launch_pending" | "provider_authentication_required" | "runtime_evidence_missing" | "runtime_evidence_invalid" | "runtime_lease_expired" | "session_failed" | "termination_intended" | "machine_not_running" | "provider_unavailable" | "provider_mismatch";
31
+ export interface SessionActionability {
32
+ readonly baseState: SessionBaseState;
33
+ readonly refreshStatus: SessionRefreshStatus;
34
+ readonly recoveryAction: SessionRecoveryAction;
35
+ readonly reasonCode: SessionActionReasonCode;
36
+ readonly observationRevision: number;
37
+ readonly canAttach: boolean;
38
+ /**
39
+ * Who established `processState`, carried on every result with absence folded
40
+ * into `unknown` by `session-visibility.ts`. It travels beside the base state
41
+ * rather than inside it: a caller that renders one without the other is how
42
+ * a moving lease came to print the same word as a real observation.
43
+ */
44
+ readonly processObservation: AgentSessionProcessObservation;
45
+ /**
46
+ * When the producer last observed this process, and how old that is at `now`.
47
+ * Present only once the runtime timestamps parse. Reported so a caller can
48
+ * show "last seen 4 h ago" beside an open lease; NO threshold is applied to
49
+ * it here, because no producer contract publishes one.
50
+ */
51
+ readonly lastObservedAt?: string;
52
+ readonly observationAgeMs?: number;
53
+ /** The lease window's end. Distinct from the observation above. */
54
+ readonly leaseExpiresAt?: string;
55
+ }
56
+ export interface SessionActionabilityInput {
57
+ readonly session: AgentSession;
58
+ readonly machine?: Pick<Machine, "id" | "agent" | "state">;
59
+ readonly authState?: AgentSessionAuthState;
60
+ readonly now: number;
61
+ readonly refreshStatus?: SessionRefreshStatus;
62
+ }
63
+ export declare function classifySessionActionability(input: SessionActionabilityInput): SessionActionability;
64
+ /**
65
+ * The one line every list, tree and explorer row prints for a session.
66
+ *
67
+ * Both qualifiers are suffixes and neither can become or replace a base state:
68
+ * `checking` is presentation only, and the observation note is a fact about
69
+ * `processState`'s provenance, not a fourth lifecycle.
70
+ *
71
+ * Why the note is here at all. `attachable` was derived from the runtime lease
72
+ * alone, so a row whose lease kept moving while nothing observed the child
73
+ * printed the byte-identical line to one a supervisor had just looked at. The
74
+ * note is attached only to `attachable`, because that is the only base state
75
+ * whose word a reader takes as "this process is up"; `stale`, `starting`,
76
+ * `failed`, `terminated` and `unsupported` already say the opposite or say
77
+ * nothing, and a provenance note on them would blur three different answers.
78
+ */
79
+ export declare function displaySessionActionability(value: SessionActionability): string;
80
+ /** Missing, equal, or lower revisions cannot replace the confirmed state. */
81
+ export declare function mergeSessionActionabilityObservation(input: Readonly<{
82
+ readonly confirmed: SessionActionability;
83
+ readonly candidate?: SessionActionability;
84
+ readonly refreshStatus: SessionRefreshStatus;
85
+ }>): SessionActionability;
86
+ //# sourceMappingURL=session-actionability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-actionability.d.ts","sourceRoot":"","sources":["../../src/machines/session-actionability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,qBAAqB,EACrB,8BAA8B,EAC9B,OAAO,EACR,MAAM,qBAAqB,CAAC;AAS7B,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,UAAU,GAAG,gBAAgB,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,GAAG,aAAa,CAAC;AAChI,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAAC;AACtD,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,MAAM,GAAG,cAAc,GAAG,SAAS,GAAG,cAAc,GAAG,MAAM,CAAC;AAC7G;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,uBAAuB,GAC/B,uBAAuB;AACzB;;;;;;;;;;GAUG;GACD,4CAA4C,GAC5C,2CAA2C,GAC3C,gBAAgB,GAChB,kCAAkC,GAClC,0BAA0B,GAC1B,0BAA0B,GAC1B,uBAAuB,GACvB,gBAAgB,GAChB,sBAAsB,GACtB,qBAAqB,GACrB,sBAAsB,GACtB,mBAAmB,CAAC;AAExB,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAC7C,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAC;IAC7C,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,EAAE,8BAA8B,CAAC;IAC5D;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,mEAAmE;IACnE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAC3C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,CAAC;CAC/C;AAOD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,yBAAyB,GAAG,oBAAoB,CAgBnG;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAQ/E;AAED,6EAA6E;AAC7E,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,QAAQ,CAAC;IACnE,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,oBAAoB,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;CAC9C,CAAC,GAAG,oBAAoB,CAMxB"}
@@ -0,0 +1,125 @@
1
+ import { machineProviderAvailability } from "./provider-availability.js";
2
+ import { agentSessionProcessObservation, AGENT_SESSION_OBSERVATION_NOTE, isAgentSessionIntendedActive, readRuntimeWindow, } from "./session-visibility.js";
3
+ export function classifySessionActionability(input) {
4
+ const classified = classifyBase(input);
5
+ // Carried on every result, not only the attachable one: a `stale` row is
6
+ // exactly where "when was it last seen" is the question being asked.
7
+ const runtimeWindow = readRuntimeWindow(input.session, input.now);
8
+ return Object.freeze({
9
+ ...classified,
10
+ refreshStatus: input.refreshStatus ?? "idle",
11
+ recoveryAction: recoveryFor(classified.baseState),
12
+ observationRevision: input.session.rowVersion,
13
+ canAttach: classified.baseState === "attachable",
14
+ processObservation: agentSessionProcessObservation(input.session),
15
+ ...(runtimeWindow.lastObservedAt === undefined ? {} : { lastObservedAt: runtimeWindow.lastObservedAt }),
16
+ ...(runtimeWindow.observationAgeMs === undefined ? {} : { observationAgeMs: runtimeWindow.observationAgeMs }),
17
+ ...(runtimeWindow.leaseExpiresAt === undefined ? {} : { leaseExpiresAt: runtimeWindow.leaseExpiresAt }),
18
+ });
19
+ }
20
+ /**
21
+ * The one line every list, tree and explorer row prints for a session.
22
+ *
23
+ * Both qualifiers are suffixes and neither can become or replace a base state:
24
+ * `checking` is presentation only, and the observation note is a fact about
25
+ * `processState`'s provenance, not a fourth lifecycle.
26
+ *
27
+ * Why the note is here at all. `attachable` was derived from the runtime lease
28
+ * alone, so a row whose lease kept moving while nothing observed the child
29
+ * printed the byte-identical line to one a supervisor had just looked at. The
30
+ * note is attached only to `attachable`, because that is the only base state
31
+ * whose word a reader takes as "this process is up"; `stale`, `starting`,
32
+ * `failed`, `terminated` and `unsupported` already say the opposite or say
33
+ * nothing, and a provenance note on them would blur three different answers.
34
+ */
35
+ export function displaySessionActionability(value) {
36
+ const parts = [value.baseState];
37
+ const note = value.baseState === "attachable"
38
+ ? AGENT_SESSION_OBSERVATION_NOTE[value.processObservation]
39
+ : undefined;
40
+ if (note !== undefined)
41
+ parts.push(note);
42
+ if (value.refreshStatus === "pending")
43
+ parts.push("checking");
44
+ return parts.join(" · ");
45
+ }
46
+ /** Missing, equal, or lower revisions cannot replace the confirmed state. */
47
+ export function mergeSessionActionabilityObservation(input) {
48
+ const accepted = input.candidate !== undefined &&
49
+ input.candidate.observationRevision > input.confirmed.observationRevision
50
+ ? input.candidate
51
+ : input.confirmed;
52
+ return Object.freeze({ ...accepted, refreshStatus: input.refreshStatus });
53
+ }
54
+ function classifyBase(input) {
55
+ const { session, machine, authState, now } = input;
56
+ if (!isAgentSessionIntendedActive(session) || session.requestState === "terminal" ||
57
+ session.processState === "terminated" || session.processState === "terminating") {
58
+ return result("terminated", "termination_intended");
59
+ }
60
+ if (session.requestState === "failed" || session.processState === "failed" || session.processState === "exited") {
61
+ return result("failed", "session_failed");
62
+ }
63
+ if (machine !== undefined) {
64
+ if (machine.state !== "running")
65
+ return result("unsupported", "machine_not_running");
66
+ const provider = machineProviderAvailability(machine);
67
+ if (!provider.actionable)
68
+ return result("unsupported", "provider_unavailable");
69
+ if (provider.agent !== session.agent)
70
+ return result("unsupported", "provider_mismatch");
71
+ }
72
+ else if (session.agent !== "claude-code" && session.agent !== "codex" && session.agent !== "opencode") {
73
+ return result("unsupported", "provider_unavailable");
74
+ }
75
+ if (authState === "login_required")
76
+ return result("login-required", "provider_authentication_required");
77
+ if (authState === "unavailable")
78
+ return result("unsupported", "provider_unavailable");
79
+ if (session.requestState === "launch_pending" || session.requestState === "runtime_claimed" ||
80
+ session.processState === "unknown" || session.processState === "starting") {
81
+ return result("starting", "launch_pending");
82
+ }
83
+ if (session.processState !== "ready" && session.processState !== "running") {
84
+ return result("stale", "runtime_evidence_invalid");
85
+ }
86
+ if (session.processEpoch === undefined)
87
+ return result("stale", "runtime_evidence_missing");
88
+ // One parser for both timestamps, shared with `session-visibility.ts`.
89
+ const runtimeWindow = readRuntimeWindow(session, now);
90
+ if (runtimeWindow.kind === "missing")
91
+ return result("stale", "runtime_evidence_missing");
92
+ if (runtimeWindow.kind === "invalid")
93
+ return result("stale", "runtime_evidence_invalid");
94
+ // The lease decides whether attaching is worth attempting, exactly as before:
95
+ // the server's capability snapshot and terminal grant remain the authority
96
+ // that admits or refuses the attach, and nothing here is narrowed by the age
97
+ // of the observation carried alongside.
98
+ if (runtimeWindow.kind !== "lease_current")
99
+ return result("stale", "runtime_lease_expired");
100
+ // ...and the provenance of the state the lease covers is named rather than
101
+ // absorbed. `stale` would be wrong here: it means the lease lapsed and asks
102
+ // for a refresh, which answers nothing about a row whose lease is open and
103
+ // whose observation nobody established. So the base state, the action and the
104
+ // attach admission are untouched, and only the reason changes.
105
+ switch (agentSessionProcessObservation(session)) {
106
+ case "observed": return result("attachable", "runtime_lease_current");
107
+ case "unproven": return result("attachable", "runtime_lease_current_observation_unproven");
108
+ case "unknown": return result("attachable", "runtime_lease_current_observation_unknown");
109
+ }
110
+ }
111
+ function result(baseState, reasonCode) {
112
+ return Object.freeze({ baseState, reasonCode });
113
+ }
114
+ function recoveryFor(state) {
115
+ switch (state) {
116
+ case "attachable": return "attach";
117
+ case "starting": return "wait";
118
+ case "login-required": return "authenticate";
119
+ case "stale": return "refresh";
120
+ case "failed": return "show-failure";
121
+ case "terminated":
122
+ case "unsupported": return "none";
123
+ }
124
+ }
125
+ //# sourceMappingURL=session-actionability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-actionability.js","sourceRoot":"","sources":["../../src/machines/session-actionability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ import type { AgentSession, AgentSessionProcessObservation } from "../api/contracts.js";
2
+ /**
3
+ * Whether a supervisor ESTABLISHED this row's process state for its CURRENT
4
+ * epoch, folding "the field is absent" into the one answer it is.
5
+ *
6
+ * Absence is `unknown`, not `observed`. A deployment older than the release that
7
+ * began recording provenance sends no field at all, and the producer's own
8
+ * description of `unknown` already covers exactly that case: "every observation
9
+ * older than the release that began recording it". Defaulting the other way is
10
+ * the single mistake this field exists to make impossible, so the fold happens
11
+ * once, here, and no renderer is left to decide it.
12
+ */
13
+ export declare function agentSessionProcessObservation(session: AgentSession): AgentSessionProcessObservation;
14
+ /**
15
+ * The words a human surface puts beside a state whose provenance is not
16
+ * `observed`, defined once so the session list, the Machine tree and the
17
+ * explorer cannot drift into three vocabularies for one producer field.
18
+ *
19
+ * `observed` has no word on purpose. It is what an unqualified "running"
20
+ * already means, and a qualifier on every healthy row is noise that teaches a
21
+ * reader to skip the two that matter.
22
+ *
23
+ * The other two are kept apart rather than folded into one "unverified",
24
+ * because the producer distinguishes them and the causes differ: `unproven` is
25
+ * a supervisor that settled a runtime-lease renewal without being able to
26
+ * observe the child, and `unknown` is no provenance recorded for this epoch at
27
+ * all — including every row from a deployment older than the release that
28
+ * began recording it. Neither says the process is stale, and neither may be
29
+ * rendered as a termination.
30
+ */
31
+ export declare const AGENT_SESSION_OBSERVATION_NOTE: Readonly<Record<AgentSessionProcessObservation, string | undefined>>;
32
+ /**
33
+ * A still-running process is not an active session once termination has been
34
+ * requested. The machine overview is an operational view, not session history.
35
+ */
36
+ export declare function isAgentSessionIntendedActive(session: AgentSession): boolean;
37
+ /**
38
+ * What an AgentSession row supports about its runtime, as two separate facts.
39
+ *
40
+ * WHY THIS REPLACED `isAgentSessionRunningNow`. That predicate answered one
41
+ * boolean named "running now" from `process_state === "running"` plus
42
+ * `runtime_expires_at > now`, and it placed no bound at all on how old
43
+ * `runtime_observed_at` was. Those are two different things:
44
+ *
45
+ * `runtime_observed_at` a PAST fact — when the producer last observed this
46
+ * process. It can only ever say "was", never "is".
47
+ * `runtime_expires_at` a WINDOW — how long the runtime lease the supervisor
48
+ * renews remains valid. A renewal moves this forward
49
+ * and says nothing about the process.
50
+ *
51
+ * A lease renewal that carries no fresh observation therefore kept the old
52
+ * predicate answering `true` from an observation of any age, which is the exact
53
+ * shape of "the row asserts running while nothing observed it".
54
+ *
55
+ * WHAT THIS DELIBERATELY DOES NOT DO. It invents no freshness threshold. There
56
+ * is no interval after which this module declares an observation stale, because
57
+ * no producer contract publishes one and a number chosen here would be a
58
+ * fabricated liveness claim wearing a constant's clothes. The observation's age
59
+ * is REPORTED so a caller can show it or decide with it; it is never compared
60
+ * against anything.
61
+ *
62
+ * It also grants nothing. Attachment, control and observation authority stay
63
+ * exactly where they are — with the server's capability snapshot and the
64
+ * terminal grant — and no reading here substitutes for either.
65
+ */
66
+ export type AgentSessionRuntimeEvidence =
67
+ /** Termination is intended or requested; the runtime fields do not matter. */
68
+ "not_intended_active"
69
+ /** The producer does not report this process as running or ready. */
70
+ | "not_reported_running"
71
+ /** One of the two runtime timestamps is absent. */
72
+ | "evidence_missing"
73
+ /** A timestamp does not parse, is in the future, or the window is inverted. */
74
+ | "evidence_invalid"
75
+ /** Last observed running, and the runtime lease has since lapsed. */
76
+ | "observed_running_lease_expired"
77
+ /**
78
+ * The row reports running, and the producer says nobody established that for
79
+ * this process epoch: a lease renewal settled without observing the child, or
80
+ * no provenance is recorded at all.
81
+ *
82
+ * It is deliberately its own value rather than a qualifier on the two
83
+ * `observed_*` ones. The word "observed" is a claim, and the whole reason the
84
+ * producer publishes `process_observation` is that a moving lease was making
85
+ * that claim on nobody's behalf. The lease is still reported in
86
+ * `leaseCurrent`, because it is still true — it is just not this.
87
+ */
88
+ | "reported_running_observation_unproven"
89
+ /**
90
+ * The strongest thing an AgentSession row can support: a supervisor observed
91
+ * it running at `lastObservedAt` for this epoch, and the lease covering it is
92
+ * still open. It is NOT a statement that the process is alive at `now`.
93
+ */
94
+ | "observed_running_lease_current";
95
+ export interface AgentSessionRuntimeReading {
96
+ readonly evidence: AgentSessionRuntimeEvidence;
97
+ /** The producer's own timestamp, forwarded verbatim. Absent when unusable. */
98
+ readonly lastObservedAt?: string;
99
+ /** How old that observation is at `now`. Reported; never thresholded here. */
100
+ readonly observationAgeMs?: number;
101
+ readonly leaseExpiresAt?: string;
102
+ /** The lease window alone. True says nothing about the process. */
103
+ readonly leaseCurrent: boolean;
104
+ /**
105
+ * The producer's provenance for `processState`, with absence folded into
106
+ * `unknown`. Carried on every reading so a caller can never get a lease
107
+ * without also getting the answer to "did anybody look?".
108
+ */
109
+ readonly processObservation: AgentSessionProcessObservation;
110
+ }
111
+ /**
112
+ * The two runtime timestamps, parsed once.
113
+ *
114
+ * `session-actionability.ts` used to parse the same pair with the same skew
115
+ * constant a few lines away from the copy here, and the two could drift into
116
+ * disagreeing about one row. There is one parser now, and it never decides what
117
+ * the pair MEANS — only what it says.
118
+ */
119
+ export type RuntimeWindowKind = "missing" | "invalid" | "lease_current" | "lease_expired";
120
+ export interface RuntimeWindow {
121
+ readonly kind: RuntimeWindowKind;
122
+ readonly lastObservedAt?: string;
123
+ readonly observationAgeMs?: number;
124
+ readonly leaseExpiresAt?: string;
125
+ }
126
+ export declare function readRuntimeWindow(session: AgentSession, now: number): RuntimeWindow;
127
+ export declare function readAgentSessionRuntime(session: AgentSession, now: number): AgentSessionRuntimeReading;
128
+ /**
129
+ * The last thing a supervisor OBSERVED about the process, with no lease in it.
130
+ *
131
+ * Past tense in the name because it is past tense in the data: a caller that
132
+ * wants to say something about `now` needs more than this row. It is false when
133
+ * the producer says nobody established the state for this epoch, because then
134
+ * there is no observation to be past tense about.
135
+ */
136
+ export declare function wasAgentSessionObservedRunning(session: AgentSession, now: number): boolean;
137
+ /** The runtime lease window alone. A renewal moves this and nothing else. */
138
+ export declare function hasCurrentAgentSessionRuntimeLease(session: AgentSession, now: number): boolean;
139
+ //# sourceMappingURL=session-visibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-visibility.d.ts","sourceRoot":"","sources":["../../src/machines/session-visibility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAIxF;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,YAAY,GACpB,8BAA8B,CAEhC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,8BAA8B,EAAE,QAAQ,CACnD,MAAM,CAAC,8BAA8B,EAAE,MAAM,GAAG,SAAS,CAAC,CAK1D,CAAC;AAEH;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAE3E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,MAAM,2BAA2B;AACrC,8EAA8E;AAC5E,qBAAqB;AACvB,qEAAqE;GACnE,sBAAsB;AACxB,mDAAmD;GACjD,kBAAkB;AACpB,+EAA+E;GAC7E,kBAAkB;AACpB,qEAAqE;GACnE,gCAAgC;AAClC;;;;;;;;;;GAUG;GACD,uCAAuC;AACzC;;;;GAIG;GACD,gCAAgC,CAAC;AAErC,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;IAC/C,8EAA8E;IAC9E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,8EAA8E;IAC9E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,mEAAmE;IACnE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,EAAE,8BAA8B,CAAC;CAC7D;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,eAAe,GAAG,eAAe,CAAC;AAE1F,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAiBnF;AAUD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,0BAA0B,CA0BtG;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAG1F;AAED,6EAA6E;AAC7E,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9F"}
@@ -0,0 +1,109 @@
1
+ const MAX_FUTURE_SKEW_MS = 5_000;
2
+ /**
3
+ * Whether a supervisor ESTABLISHED this row's process state for its CURRENT
4
+ * epoch, folding "the field is absent" into the one answer it is.
5
+ *
6
+ * Absence is `unknown`, not `observed`. A deployment older than the release that
7
+ * began recording provenance sends no field at all, and the producer's own
8
+ * description of `unknown` already covers exactly that case: "every observation
9
+ * older than the release that began recording it". Defaulting the other way is
10
+ * the single mistake this field exists to make impossible, so the fold happens
11
+ * once, here, and no renderer is left to decide it.
12
+ */
13
+ export function agentSessionProcessObservation(session) {
14
+ return session.processObservation ?? "unknown";
15
+ }
16
+ /**
17
+ * The words a human surface puts beside a state whose provenance is not
18
+ * `observed`, defined once so the session list, the Machine tree and the
19
+ * explorer cannot drift into three vocabularies for one producer field.
20
+ *
21
+ * `observed` has no word on purpose. It is what an unqualified "running"
22
+ * already means, and a qualifier on every healthy row is noise that teaches a
23
+ * reader to skip the two that matter.
24
+ *
25
+ * The other two are kept apart rather than folded into one "unverified",
26
+ * because the producer distinguishes them and the causes differ: `unproven` is
27
+ * a supervisor that settled a runtime-lease renewal without being able to
28
+ * observe the child, and `unknown` is no provenance recorded for this epoch at
29
+ * all — including every row from a deployment older than the release that
30
+ * began recording it. Neither says the process is stale, and neither may be
31
+ * rendered as a termination.
32
+ */
33
+ export const AGENT_SESSION_OBSERVATION_NOTE = Object.freeze({
34
+ observed: undefined,
35
+ unproven: "not observed",
36
+ unknown: "observation unknown",
37
+ });
38
+ /**
39
+ * A still-running process is not an active session once termination has been
40
+ * requested. The machine overview is an operational view, not session history.
41
+ */
42
+ export function isAgentSessionIntendedActive(session) {
43
+ return session.desiredState === "running" && session.requestState !== "termination_pending";
44
+ }
45
+ export function readRuntimeWindow(session, now) {
46
+ if (session.runtimeObservedAt === undefined || session.runtimeExpiresAt === undefined) {
47
+ return Object.freeze({ kind: "missing" });
48
+ }
49
+ const observedAt = Date.parse(session.runtimeObservedAt);
50
+ const expiresAt = Date.parse(session.runtimeExpiresAt);
51
+ if (!Number.isFinite(observedAt) || !Number.isFinite(expiresAt) ||
52
+ observedAt > now + MAX_FUTURE_SKEW_MS || expiresAt <= observedAt) {
53
+ return Object.freeze({ kind: "invalid" });
54
+ }
55
+ const kind = expiresAt > now ? "lease_current" : "lease_expired";
56
+ return Object.freeze({
57
+ kind,
58
+ lastObservedAt: session.runtimeObservedAt,
59
+ observationAgeMs: now - observedAt,
60
+ leaseExpiresAt: session.runtimeExpiresAt,
61
+ });
62
+ }
63
+ function reading(evidence, processObservation, extra = { leaseCurrent: false }) {
64
+ return Object.freeze({ evidence, processObservation, ...extra });
65
+ }
66
+ export function readAgentSessionRuntime(session, now) {
67
+ const observation = agentSessionProcessObservation(session);
68
+ if (!isAgentSessionIntendedActive(session))
69
+ return reading("not_intended_active", observation);
70
+ if (session.processState !== "running")
71
+ return reading("not_reported_running", observation);
72
+ const runtimeWindow = readRuntimeWindow(session, now);
73
+ if (runtimeWindow.kind === "missing")
74
+ return reading("evidence_missing", observation);
75
+ if (runtimeWindow.kind === "invalid")
76
+ return reading("evidence_invalid", observation);
77
+ const leaseCurrent = runtimeWindow.kind === "lease_current";
78
+ const window = {
79
+ ...(runtimeWindow.lastObservedAt === undefined ? {} : { lastObservedAt: runtimeWindow.lastObservedAt }),
80
+ ...(runtimeWindow.observationAgeMs === undefined ? {} : { observationAgeMs: runtimeWindow.observationAgeMs }),
81
+ ...(runtimeWindow.leaseExpiresAt === undefined ? {} : { leaseExpiresAt: runtimeWindow.leaseExpiresAt }),
82
+ leaseCurrent,
83
+ };
84
+ // The ordering that answers the requirement: a current lease is checked AFTER
85
+ // provenance, never instead of it. `unproven` with an open lease is the exact
86
+ // row this field was published for -- the lease moved and nothing observed the
87
+ // child -- and it must not render as a fresh observation.
88
+ if (observation !== "observed") {
89
+ return reading("reported_running_observation_unproven", observation, window);
90
+ }
91
+ return reading(leaseCurrent ? "observed_running_lease_current" : "observed_running_lease_expired", observation, window);
92
+ }
93
+ /**
94
+ * The last thing a supervisor OBSERVED about the process, with no lease in it.
95
+ *
96
+ * Past tense in the name because it is past tense in the data: a caller that
97
+ * wants to say something about `now` needs more than this row. It is false when
98
+ * the producer says nobody established the state for this epoch, because then
99
+ * there is no observation to be past tense about.
100
+ */
101
+ export function wasAgentSessionObservedRunning(session, now) {
102
+ const value = readAgentSessionRuntime(session, now).evidence;
103
+ return value === "observed_running_lease_current" || value === "observed_running_lease_expired";
104
+ }
105
+ /** The runtime lease window alone. A renewal moves this and nothing else. */
106
+ export function hasCurrentAgentSessionRuntimeLease(session, now) {
107
+ return readAgentSessionRuntime(session, now).leaseCurrent;
108
+ }
109
+ //# sourceMappingURL=session-visibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-visibility.js","sourceRoot":"","sources":["../../src/machines/session-visibility.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ export type PlatformKind = "windows" | "macos" | "linux";
2
+ export interface PlatformPaths {
3
+ readonly configDirectory: string;
4
+ readonly stateDirectory: string;
5
+ readonly runtimeDirectory: string;
6
+ }
7
+ export interface SafeFileSnapshot {
8
+ readonly exists: boolean;
9
+ readonly text?: string;
10
+ }
11
+ export interface PlatformAdapter {
12
+ readonly kind: PlatformKind;
13
+ readonly paths: PlatformPaths;
14
+ readSafeConfig(path: string, maximumBytes: number): Promise<SafeFileSnapshot>;
15
+ /**
16
+ * Replace the configuration file's whole contents, owner-only and atomically.
17
+ *
18
+ * The read side is the standard: a file this refuses to read is a file it
19
+ * also refuses to overwrite, checked with the same ownership and permission
20
+ * predicates before the replacement begins. The write itself goes to a
21
+ * sibling temporary file, is fsynced, and is renamed over the target, so a
22
+ * crash or a concurrent reader observes either the previous bytes or the new
23
+ * ones — never a truncated file.
24
+ *
25
+ * The caller supplies the complete text. Merging belongs to the caller
26
+ * (`ensureProfileRecorded` in `config/config.ts`), which parses the current
27
+ * file and preserves every key it already holds.
28
+ */
29
+ writeSafeConfig(path: string, text: string, maximumBytes: number): Promise<void>;
30
+ /**
31
+ * Create the file only if the name is free, and answer which happened.
32
+ *
33
+ * `writeSafeConfig` is an atomic REPLACE: it opens a unique temporary sibling
34
+ * with `O_EXCL` and renames it over the target, so it never fails because the
35
+ * target exists. That is the right primitive for configuration, and the wrong
36
+ * one for a slot two processes contend for — a caller that reads, finds the
37
+ * slot free, and then writes is performing check-then-act, and two processes
38
+ * interleaved that way both believe they hold it. Measured: two real OS
39
+ * processes, one state directory, both reserved.
40
+ *
41
+ * This is the compare-and-swap that shape needs. The TARGET itself is opened
42
+ * with `O_CREAT|O_EXCL|O_NOFOLLOW`, which the kernel resolves atomically, so
43
+ * exactly one caller can win however the two are scheduled.
44
+ *
45
+ * Returns `true` when this call created the file and `false` when the name was
46
+ * already taken. `false` is an ordinary answer, not a fault: the caller owns
47
+ * the product sentence for "someone else holds this", and an errno is not it.
48
+ * Every other failure is the same typed configuration-file refusal
49
+ * `writeSafeConfig` raises.
50
+ */
51
+ createExclusiveConfig(path: string, text: string, maximumBytes: number): Promise<boolean>;
52
+ }
53
+ export interface PlatformEnvironment {
54
+ readonly platform: NodeJS.Platform;
55
+ readonly env: NodeJS.ProcessEnv;
56
+ readonly homeDirectory: string;
57
+ readonly userId?: number;
58
+ }
59
+ export declare function resolvePlatformKind(platform: NodeJS.Platform): PlatformKind;
60
+ export declare function resolvePlatformPaths(input: PlatformEnvironment): PlatformPaths;
61
+ export declare function createPlatformAdapter(input?: Partial<PlatformEnvironment>): PlatformAdapter;
62
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/platform/adapter.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC9E;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3F;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,YAAY,CAW3E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,aAAa,CA0B9E;AAoKD,wBAAgB,qBAAqB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,eAAe,CAwB3F"}