@astrale-os/cli 1.0.0-beta.9 → 1.0.0-npm-deprecated.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 (617) hide show
  1. package/README.md +14 -166
  2. package/package.json +10 -102
  3. package/.check-workspace.cjs +0 -40
  4. package/LICENSE +0 -202
  5. package/THIRD-PARTY-NOTICES.md +0 -27
  6. package/dist/astrale.js +0 -93344
  7. package/dist/public/connect-core.js +0 -29187
  8. package/dist/public/keys/index.js +0 -5651
  9. package/dist/public/paths/index.js +0 -4282
  10. package/dist/types/admin/binding.d.ts +0 -19
  11. package/dist/types/admin/instance/client.d.ts +0 -22
  12. package/dist/types/admin/instance/index.d.ts +0 -2
  13. package/dist/types/admin/instance/model.d.ts +0 -33
  14. package/dist/types/connect-core.d.ts +0 -22
  15. package/dist/types/connection/auth.d.ts +0 -39
  16. package/dist/types/connection/call.d.ts +0 -3
  17. package/dist/types/connection/command.d.ts +0 -27
  18. package/dist/types/connection/credential.d.ts +0 -14
  19. package/dist/types/connection/errors.d.ts +0 -1
  20. package/dist/types/connection/exchange.d.ts +0 -9
  21. package/dist/types/connection/failure/classify.d.ts +0 -2
  22. package/dist/types/connection/failure/index.d.ts +0 -5
  23. package/dist/types/connection/failure/model.d.ts +0 -25
  24. package/dist/types/connection/failure/render.d.ts +0 -3
  25. package/dist/types/connection/index.d.ts +0 -8
  26. package/dist/types/connection/reasons.d.ts +0 -37
  27. package/dist/types/connection/self.d.ts +0 -37
  28. package/dist/types/connection/session.d.ts +0 -31
  29. package/dist/types/connection/target.d.ts +0 -38
  30. package/dist/types/errors.d.ts +0 -23
  31. package/dist/types/identity/registry.d.ts +0 -25
  32. package/dist/types/keys/algorithm.d.ts +0 -6
  33. package/dist/types/keys/credential.d.ts +0 -21
  34. package/dist/types/keys/index.d.ts +0 -4
  35. package/dist/types/keys/pair.d.ts +0 -34
  36. package/dist/types/lib/admin-instance.d.ts +0 -17
  37. package/dist/types/lib/admin-target.d.ts +0 -78
  38. package/dist/types/lib/ca-fetch.d.ts +0 -2
  39. package/dist/types/lib/config.d.ts +0 -71
  40. package/dist/types/lib/failure-debug.d.ts +0 -1
  41. package/dist/types/lib/format.d.ts +0 -1
  42. package/dist/types/lib/idp-session.d.ts +0 -33
  43. package/dist/types/lib/idp.d.ts +0 -404
  44. package/dist/types/lib/instance-target.d.ts +0 -38
  45. package/dist/types/lib/instance.d.ts +0 -202
  46. package/dist/types/lib/invocation.d.ts +0 -3
  47. package/dist/types/lib/log.d.ts +0 -33
  48. package/dist/types/lib/login-flow.d.ts +0 -49
  49. package/dist/types/lib/meta.d.ts +0 -36
  50. package/dist/types/lib/output.d.ts +0 -87
  51. package/dist/types/lib/proc.d.ts +0 -43
  52. package/dist/types/lib/self.d.ts +0 -9
  53. package/dist/types/lib/table.d.ts +0 -18
  54. package/dist/types/lib/update.d.ts +0 -131
  55. package/dist/types/lib/validation.d.ts +0 -11
  56. package/dist/types/paths/index.d.ts +0 -2
  57. package/dist/types/state/exchange-credentials.d.ts +0 -25
  58. package/dist/types/state/files.d.ts +0 -9
  59. package/dist/types/state/identities.d.ts +0 -42
  60. package/dist/types/state/index.d.ts +0 -8
  61. package/dist/types/state/paths.d.ts +0 -32
  62. package/src/__tests__/fixtures/publication.ts +0 -20
  63. package/src/admin/.spec/api.d.ts +0 -3
  64. package/src/admin/.spec/architecture.md +0 -15
  65. package/src/admin/.spec/icon.svg +0 -3
  66. package/src/admin/.spec/layout.ts +0 -6
  67. package/src/admin/__tests__/binding.test.ts +0 -31
  68. package/src/admin/__tests__/fixture.ts +0 -101
  69. package/src/admin/binding.ts +0 -98
  70. package/src/admin/catalog/.spec/api.d.ts +0 -65
  71. package/src/admin/catalog/.spec/architecture.md +0 -6
  72. package/src/admin/catalog/.spec/icon.svg +0 -3
  73. package/src/admin/catalog/.spec/layout.ts +0 -6
  74. package/src/admin/catalog/__tests__/client.test.ts +0 -142
  75. package/src/admin/catalog/client.ts +0 -218
  76. package/src/admin/catalog/index.ts +0 -13
  77. package/src/admin/catalog/model.ts +0 -41
  78. package/src/admin/catalog/tsconfig.json +0 -8
  79. package/src/admin/graph/.spec/api.d.ts +0 -22
  80. package/src/admin/graph/.spec/architecture.md +0 -5
  81. package/src/admin/graph/.spec/icon.svg +0 -3
  82. package/src/admin/graph/.spec/layout.ts +0 -3
  83. package/src/admin/graph/index.ts +0 -6
  84. package/src/admin/graph/nodes.ts +0 -56
  85. package/src/admin/index.ts +0 -2
  86. package/src/admin/instance/.spec/api.d.ts +0 -66
  87. package/src/admin/instance/.spec/architecture.md +0 -10
  88. package/src/admin/instance/.spec/icon.svg +0 -3
  89. package/src/admin/instance/.spec/layout.ts +0 -6
  90. package/src/admin/instance/__tests__/client.test.ts +0 -166
  91. package/src/admin/instance/client.ts +0 -196
  92. package/src/admin/instance/index.ts +0 -15
  93. package/src/admin/instance/model.ts +0 -56
  94. package/src/admin/instance/tsconfig.json +0 -8
  95. package/src/commands/__tests__/admin-instance.test.ts +0 -91
  96. package/src/commands/__tests__/auth-login.test.ts +0 -231
  97. package/src/commands/__tests__/auth-token.test.ts +0 -223
  98. package/src/commands/__tests__/call-describe.test.ts +0 -80
  99. package/src/commands/__tests__/call.test.ts +0 -29
  100. package/src/commands/__tests__/domain-install-operation.test.ts +0 -126
  101. package/src/commands/__tests__/domain-install-owned.test.ts +0 -191
  102. package/src/commands/__tests__/domain-list.test.ts +0 -133
  103. package/src/commands/__tests__/domain-uninstall.test.ts +0 -53
  104. package/src/commands/__tests__/install-direct.test.ts +0 -21
  105. package/src/commands/__tests__/install-identity-override.test.ts +0 -76
  106. package/src/commands/__tests__/instance-bookmark.test.ts +0 -166
  107. package/src/commands/__tests__/instance-list-admin.test.ts +0 -26
  108. package/src/commands/__tests__/instance-list-rows.test.ts +0 -64
  109. package/src/commands/__tests__/instance-use.test.ts +0 -67
  110. package/src/commands/__tests__/introspect-parse.test.ts +0 -21
  111. package/src/commands/__tests__/logs.test.ts +0 -97
  112. package/src/commands/__tests__/read-commands.test.ts +0 -294
  113. package/src/commands/__tests__/setup-plan.test.ts +0 -61
  114. package/src/commands/__tests__/studio-descriptor.test.ts +0 -22
  115. package/src/commands/__tests__/token-ttl.test.ts +0 -21
  116. package/src/commands/__tests__/update.test.ts +0 -95
  117. package/src/commands/__tests__/view-build.test.ts +0 -58
  118. package/src/commands/__tests__/view.test.ts +0 -149
  119. package/src/commands/admin/status.ts +0 -61
  120. package/src/commands/admin/use.ts +0 -100
  121. package/src/commands/auth/login.ts +0 -82
  122. package/src/commands/auth/logout.ts +0 -52
  123. package/src/commands/auth/status.ts +0 -86
  124. package/src/commands/auth/token.ts +0 -174
  125. package/src/commands/browser.ts +0 -207
  126. package/src/commands/call-describe.ts +0 -123
  127. package/src/commands/call.ts +0 -205
  128. package/src/commands/domain/install.ts +0 -548
  129. package/src/commands/domain/list.ts +0 -155
  130. package/src/commands/domain/publish.ts +0 -136
  131. package/src/commands/domain/uninstall.ts +0 -128
  132. package/src/commands/get.ts +0 -69
  133. package/src/commands/identity/__tests__/register.test.ts +0 -93
  134. package/src/commands/identity/create.ts +0 -35
  135. package/src/commands/identity/delete.ts +0 -24
  136. package/src/commands/identity/export.ts +0 -46
  137. package/src/commands/identity/import.ts +0 -61
  138. package/src/commands/identity/list.ts +0 -56
  139. package/src/commands/identity/register.ts +0 -196
  140. package/src/commands/identity/sync.ts +0 -38
  141. package/src/commands/identity/unsync.ts +0 -34
  142. package/src/commands/identity/use.ts +0 -24
  143. package/src/commands/identity/whoami.ts +0 -34
  144. package/src/commands/idp/add.ts +0 -150
  145. package/src/commands/idp/list.ts +0 -57
  146. package/src/commands/idp/refresh.ts +0 -38
  147. package/src/commands/idp/remove.ts +0 -36
  148. package/src/commands/idp/show.ts +0 -29
  149. package/src/commands/instance/active.ts +0 -73
  150. package/src/commands/instance/bookmark.ts +0 -101
  151. package/src/commands/instance/create.ts +0 -61
  152. package/src/commands/instance/delete.ts +0 -69
  153. package/src/commands/instance/forget.ts +0 -26
  154. package/src/commands/instance/list.ts +0 -197
  155. package/src/commands/instance/status.ts +0 -38
  156. package/src/commands/instance/use.ts +0 -263
  157. package/src/commands/introspect.ts +0 -110
  158. package/src/commands/logs.ts +0 -283
  159. package/src/commands/mutate.ts +0 -122
  160. package/src/commands/query.ts +0 -136
  161. package/src/commands/session/analyze.ts +0 -50
  162. package/src/commands/session/list.ts +0 -36
  163. package/src/commands/setup.ts +0 -54
  164. package/src/commands/status.ts +0 -60
  165. package/src/commands/studio.ts +0 -434
  166. package/src/commands/token.ts +0 -107
  167. package/src/commands/update.ts +0 -334
  168. package/src/commands/use.ts +0 -86
  169. package/src/commands/view-serve.ts +0 -26
  170. package/src/commands/view.ts +0 -614
  171. package/src/connect-core.test.ts +0 -38
  172. package/src/connect-core.ts +0 -42
  173. package/src/connection/.spec/api.d.ts +0 -110
  174. package/src/connection/.spec/architecture.md +0 -47
  175. package/src/connection/.spec/capabilities/connection.ts +0 -13
  176. package/src/connection/.spec/examples/call.ts +0 -7
  177. package/src/connection/.spec/flows/command.ts +0 -20
  178. package/src/connection/.spec/flows/session.ts +0 -61
  179. package/src/connection/.spec/laws/connection.ts +0 -205
  180. package/src/connection/.spec/layout.ts +0 -21
  181. package/src/connection/__tests__/auth.test.ts +0 -128
  182. package/src/connection/__tests__/ca-fetch.test.ts +0 -60
  183. package/src/connection/__tests__/call.test.ts +0 -17
  184. package/src/connection/__tests__/credential.test.ts +0 -138
  185. package/src/connection/__tests__/errors.test.ts +0 -577
  186. package/src/connection/__tests__/exchange.test.ts +0 -295
  187. package/src/connection/__tests__/failure-fixtures.ts +0 -39
  188. package/src/connection/__tests__/failure-safety.test.ts +0 -75
  189. package/src/connection/__tests__/fixtures/localhost-cert.pem +0 -19
  190. package/src/connection/__tests__/fixtures/localhost-key.base64 +0 -1
  191. package/src/connection/__tests__/managed.test.ts +0 -39
  192. package/src/connection/__tests__/reasons.test.ts +0 -78
  193. package/src/connection/__tests__/self.test.ts +0 -71
  194. package/src/connection/__tests__/session.test.ts +0 -140
  195. package/src/connection/__tests__/target.test.ts +0 -94
  196. package/src/connection/auth.ts +0 -249
  197. package/src/connection/call.ts +0 -7
  198. package/src/connection/command.ts +0 -67
  199. package/src/connection/credential.ts +0 -117
  200. package/src/connection/errors.ts +0 -1
  201. package/src/connection/exchange.ts +0 -311
  202. package/src/connection/failure/classify.ts +0 -110
  203. package/src/connection/failure/index.ts +0 -18
  204. package/src/connection/failure/model.ts +0 -28
  205. package/src/connection/failure/render.ts +0 -116
  206. package/src/connection/index.ts +0 -8
  207. package/src/connection/reasons.ts +0 -209
  208. package/src/connection/self.ts +0 -138
  209. package/src/connection/session.ts +0 -196
  210. package/src/connection/target.ts +0 -112
  211. package/src/connection/tsconfig.json +0 -6
  212. package/src/errors.ts +0 -66
  213. package/src/graph/.spec/api.d.ts +0 -41
  214. package/src/graph/.spec/laws/documents.ts +0 -24
  215. package/src/graph/.spec/laws/projection.ts +0 -13
  216. package/src/graph/.spec/layout.ts +0 -14
  217. package/src/graph/__tests__/mutation.test.ts +0 -51
  218. package/src/graph/__tests__/projection.test.ts +0 -22
  219. package/src/graph/__tests__/query.test.ts +0 -173
  220. package/src/graph/class.ts +0 -30
  221. package/src/graph/index.ts +0 -4
  222. package/src/graph/mutation.ts +0 -46
  223. package/src/graph/projection.ts +0 -21
  224. package/src/graph/query.ts +0 -97
  225. package/src/graph/tsconfig.json +0 -6
  226. package/src/identity/.history/ard/bootstrap-root-transfer.md +0 -57
  227. package/src/identity/.history/ard/domain-mediated-registration.md +0 -36
  228. package/src/identity/.spec/api.d.ts +0 -124
  229. package/src/identity/.spec/architecture.md +0 -33
  230. package/src/identity/.spec/capabilities/identity.ts +0 -7
  231. package/src/identity/.spec/flows/bootstrap-root.ts +0 -79
  232. package/src/identity/.spec/flows/domain-mediated-registration.ts +0 -51
  233. package/src/identity/.spec/flows/import.ts +0 -29
  234. package/src/identity/.spec/laws/identity.ts +0 -56
  235. package/src/identity/.spec/layout.ts +0 -13
  236. package/src/identity/.spec/schemas/identity-export-v1.schema.json +0 -25
  237. package/src/identity/__tests__/fixtures/registry-journey.ts +0 -53
  238. package/src/identity/__tests__/registration.test.ts +0 -64
  239. package/src/identity/__tests__/registry.test.ts +0 -70
  240. package/src/identity/__tests__/transfer.test.ts +0 -198
  241. package/src/identity/index.ts +0 -23
  242. package/src/identity/registration.ts +0 -72
  243. package/src/identity/registry.ts +0 -179
  244. package/src/identity/transfer.ts +0 -187
  245. package/src/identity/tsconfig.json +0 -6
  246. package/src/index.ts +0 -1
  247. package/src/keys/.spec/api.d.ts +0 -74
  248. package/src/keys/.spec/architecture.md +0 -13
  249. package/src/keys/.spec/laws/keys.ts +0 -43
  250. package/src/keys/.spec/layout.ts +0 -6
  251. package/src/keys/__tests__/algorithm.test.ts +0 -39
  252. package/src/keys/__tests__/keys.test.ts +0 -168
  253. package/src/keys/algorithm.ts +0 -33
  254. package/src/keys/credential.ts +0 -112
  255. package/src/keys/index.ts +0 -14
  256. package/src/keys/pair.ts +0 -219
  257. package/src/keys/tsconfig.json +0 -6
  258. package/src/lib/__tests__/admin-target.test.ts +0 -184
  259. package/src/lib/__tests__/binary.test.ts +0 -55
  260. package/src/lib/__tests__/command-dx.test.ts +0 -102
  261. package/src/lib/__tests__/concurrency.test.ts +0 -62
  262. package/src/lib/__tests__/config.test.ts +0 -54
  263. package/src/lib/__tests__/design.test.ts +0 -99
  264. package/src/lib/__tests__/domain-publication.test.ts +0 -138
  265. package/src/lib/__tests__/format.test.ts +0 -22
  266. package/src/lib/__tests__/idp-session.driver.ts +0 -53
  267. package/src/lib/__tests__/idp-session.test.ts +0 -379
  268. package/src/lib/__tests__/idp.test.ts +0 -415
  269. package/src/lib/__tests__/instance-candidates.test.ts +0 -146
  270. package/src/lib/__tests__/instance-target.test.ts +0 -213
  271. package/src/lib/__tests__/instance.test.ts +0 -192
  272. package/src/lib/__tests__/local-status.test.ts +0 -202
  273. package/src/lib/__tests__/log-errors.test.ts +0 -64
  274. package/src/lib/__tests__/log.test.ts +0 -31
  275. package/src/lib/__tests__/meta.test.ts +0 -55
  276. package/src/lib/__tests__/output.test.ts +0 -162
  277. package/src/lib/__tests__/panel.test.ts +0 -40
  278. package/src/lib/__tests__/port.test.ts +0 -44
  279. package/src/lib/__tests__/prompt.test.ts +0 -25
  280. package/src/lib/__tests__/sdk-deps.test.ts +0 -68
  281. package/src/lib/__tests__/self.test.ts +0 -50
  282. package/src/lib/__tests__/studio-server-deps.test.ts +0 -111
  283. package/src/lib/__tests__/table.test.ts +0 -53
  284. package/src/lib/__tests__/update.test.ts +0 -351
  285. package/src/lib/__tests__/use-target.test.ts +0 -56
  286. package/src/lib/__tests__/validation.test.ts +0 -34
  287. package/src/lib/__tests__/view-assets.test.ts +0 -146
  288. package/src/lib/__tests__/view-open-intent.test.ts +0 -280
  289. package/src/lib/__tests__/view-port-allocation.test.ts +0 -82
  290. package/src/lib/__tests__/view-server.test.ts +0 -68
  291. package/src/lib/__tests__/view-session.test.ts +0 -99
  292. package/src/lib/__tests__/view-snapshot.test.ts +0 -77
  293. package/src/lib/admin-domain.ts +0 -43
  294. package/src/lib/admin-instance.ts +0 -56
  295. package/src/lib/admin-target.ts +0 -290
  296. package/src/lib/binary.ts +0 -110
  297. package/src/lib/browser.ts +0 -150
  298. package/src/lib/ca-fetch.ts +0 -133
  299. package/src/lib/command-dx.ts +0 -191
  300. package/src/lib/concurrency.ts +0 -31
  301. package/src/lib/config.ts +0 -46
  302. package/src/lib/domain-publication.ts +0 -104
  303. package/src/lib/failure-debug.ts +0 -26
  304. package/src/lib/format.ts +0 -4
  305. package/src/lib/idp-session.ts +0 -134
  306. package/src/lib/idp.ts +0 -906
  307. package/src/lib/instance-candidates.ts +0 -49
  308. package/src/lib/instance-target.ts +0 -197
  309. package/src/lib/instance.ts +0 -467
  310. package/src/lib/invocation.ts +0 -11
  311. package/src/lib/local-status.ts +0 -152
  312. package/src/lib/log.ts +0 -143
  313. package/src/lib/login-flow.ts +0 -201
  314. package/src/lib/meta.ts +0 -90
  315. package/src/lib/output.ts +0 -238
  316. package/src/lib/panel.ts +0 -61
  317. package/src/lib/port.ts +0 -41
  318. package/src/lib/proc.ts +0 -82
  319. package/src/lib/prompt.ts +0 -136
  320. package/src/lib/provision-instance.ts +0 -139
  321. package/src/lib/sdk-deps.ts +0 -104
  322. package/src/lib/self.ts +0 -22
  323. package/src/lib/skills.ts +0 -171
  324. package/src/lib/table.ts +0 -62
  325. package/src/lib/update.ts +0 -409
  326. package/src/lib/use-target.ts +0 -24
  327. package/src/lib/validation.ts +0 -59
  328. package/src/lib/view/assets.ts +0 -78
  329. package/src/lib/view/open-intent.ts +0 -67
  330. package/src/lib/view/port-allocation.ts +0 -19
  331. package/src/lib/view/resolve.ts +0 -111
  332. package/src/lib/view/server.ts +0 -244
  333. package/src/lib/view/session.ts +0 -152
  334. package/src/lib/view/snapshot.ts +0 -101
  335. package/src/paths/.spec/api.d.ts +0 -13
  336. package/src/paths/.spec/architecture.md +0 -5
  337. package/src/paths/.spec/layout.ts +0 -3
  338. package/src/paths/index.ts +0 -13
  339. package/src/program/.spec/api.d.ts +0 -42
  340. package/src/program/.spec/architecture.md +0 -18
  341. package/src/program/.spec/laws/program.ts +0 -29
  342. package/src/program/.spec/layout.ts +0 -14
  343. package/src/program/__tests__/program.test.ts +0 -378
  344. package/src/program/build.ts +0 -183
  345. package/src/program/command.ts +0 -42
  346. package/src/program/index.ts +0 -2
  347. package/src/program/options.ts +0 -41
  348. package/src/program/registry.ts +0 -63
  349. package/src/program/tsconfig.json +0 -6
  350. package/src/setup/__tests__/instance-step.test.ts +0 -256
  351. package/src/setup/__tests__/util.test.ts +0 -29
  352. package/src/setup/engine.ts +0 -83
  353. package/src/setup/render.ts +0 -107
  354. package/src/setup/steps/admin.ts +0 -93
  355. package/src/setup/steps/agent-browser.ts +0 -81
  356. package/src/setup/steps/auth.ts +0 -54
  357. package/src/setup/steps/domain.ts +0 -68
  358. package/src/setup/steps/index.ts +0 -18
  359. package/src/setup/steps/instance.ts +0 -206
  360. package/src/setup/steps/skills-bridge.ts +0 -70
  361. package/src/setup/steps/skills.ts +0 -59
  362. package/src/setup/types.ts +0 -61
  363. package/src/setup/util.ts +0 -34
  364. package/src/state/.spec/api.d.ts +0 -133
  365. package/src/state/.spec/architecture.md +0 -31
  366. package/src/state/.spec/capabilities/state.ts +0 -7
  367. package/src/state/.spec/flows/identity-update.ts +0 -22
  368. package/src/state/.spec/laws/state.ts +0 -73
  369. package/src/state/.spec/layout.ts +0 -14
  370. package/src/state/__tests__/exchange-credentials.test.ts +0 -188
  371. package/src/state/__tests__/files.test.ts +0 -113
  372. package/src/state/__tests__/fixtures/identity-transition.ts +0 -37
  373. package/src/state/__tests__/identities.test.ts +0 -142
  374. package/src/state/__tests__/paths.test.ts +0 -27
  375. package/src/state/exchange-credentials.ts +0 -219
  376. package/src/state/files.ts +0 -129
  377. package/src/state/identities.ts +0 -229
  378. package/src/state/index.ts +0 -29
  379. package/src/state/paths.ts +0 -61
  380. package/src/state/tsconfig.json +0 -6
  381. package/src/telemetry/__tests__/gate.test.ts +0 -63
  382. package/src/telemetry/__tests__/recorder.test.ts +0 -110
  383. package/src/telemetry/__tests__/redact.test.ts +0 -79
  384. package/src/telemetry/__tests__/session.test.ts +0 -166
  385. package/src/telemetry/__tests__/trigger.test.ts +0 -49
  386. package/src/telemetry/adapters/__tests__/claude-code.test.ts +0 -89
  387. package/src/telemetry/adapters/__tests__/codex.test.ts +0 -138
  388. package/src/telemetry/adapters/__tests__/index.test.ts +0 -88
  389. package/src/telemetry/adapters/claude-code.ts +0 -90
  390. package/src/telemetry/adapters/codex.ts +0 -160
  391. package/src/telemetry/adapters/index.ts +0 -45
  392. package/src/telemetry/adapters/types.ts +0 -21
  393. package/src/telemetry/analyze.ts +0 -227
  394. package/src/telemetry/gate.ts +0 -79
  395. package/src/telemetry/recorder.ts +0 -57
  396. package/src/telemetry/redact.ts +0 -53
  397. package/src/telemetry/session.ts +0 -88
  398. package/src/telemetry/settings.ts +0 -26
  399. package/src/telemetry/store.ts +0 -91
  400. package/src/telemetry/trigger.ts +0 -119
  401. package/src/telemetry/types.ts +0 -64
  402. package/src/test-utils.ts +0 -18
  403. package/studio/client/dist/assets/elk-api-ByzoDZWH.js +0 -1
  404. package/studio/client/dist/assets/elk-worker.min-C9JGDOE-.js +0 -6312
  405. package/studio/client/dist/assets/index-B0RCgUOT.js +0 -8
  406. package/studio/client/dist/assets/index-BiGR8Oo9.css +0 -1
  407. package/studio/client/dist/assets/index-ChOr3yP0.css +0 -1
  408. package/studio/client/dist/assets/index-N8J8EKlB.js +0 -81
  409. package/studio/client/dist/index.html +0 -13
  410. package/studio/package.json +0 -65
  411. package/studio/server/agent/ask.test.ts +0 -74
  412. package/studio/server/agent/ask.ts +0 -71
  413. package/studio/server/agent/bridge/client.test.ts +0 -49
  414. package/studio/server/agent/bridge/client.ts +0 -37
  415. package/studio/server/agent/bridge/grant.test.ts +0 -62
  416. package/studio/server/agent/bridge/grant.ts +0 -84
  417. package/studio/server/agent/bridge/routes.test.ts +0 -151
  418. package/studio/server/agent/bridge/routes.ts +0 -148
  419. package/studio/server/agent/bridge/stdio.ts +0 -195
  420. package/studio/server/agent/conversation.test.ts +0 -89
  421. package/studio/server/agent/conversation.ts +0 -158
  422. package/studio/server/agent/harness/adapter.ts +0 -171
  423. package/studio/server/agent/harness/claude/adapter.test.ts +0 -348
  424. package/studio/server/agent/harness/claude/adapter.ts +0 -71
  425. package/studio/server/agent/harness/claude/ask.ts +0 -114
  426. package/studio/server/agent/harness/claude/capabilities.ts +0 -27
  427. package/studio/server/agent/harness/claude/command.ts +0 -63
  428. package/studio/server/agent/harness/claude/events.ts +0 -215
  429. package/studio/server/agent/harness/claude/loadout.ts +0 -132
  430. package/studio/server/agent/harness/claude/mcp.test.ts +0 -36
  431. package/studio/server/agent/harness/claude/mcp.ts +0 -41
  432. package/studio/server/agent/harness/claude/skills.ts +0 -43
  433. package/studio/server/agent/harness/codex/adapter.test.ts +0 -269
  434. package/studio/server/agent/harness/codex/adapter.ts +0 -116
  435. package/studio/server/agent/harness/codex/ask.test.ts +0 -176
  436. package/studio/server/agent/harness/codex/ask.ts +0 -181
  437. package/studio/server/agent/harness/codex/command.test.ts +0 -69
  438. package/studio/server/agent/harness/codex/command.ts +0 -43
  439. package/studio/server/agent/harness/codex/events.test.ts +0 -94
  440. package/studio/server/agent/harness/codex/events.ts +0 -132
  441. package/studio/server/agent/harness/codex/exec.ts +0 -113
  442. package/studio/server/agent/harness/codex/loadout.ts +0 -60
  443. package/studio/server/agent/harness/codex/mcp.test.ts +0 -32
  444. package/studio/server/agent/harness/codex/mcp.ts +0 -27
  445. package/studio/server/agent/harness/codex/models.test.ts +0 -167
  446. package/studio/server/agent/harness/codex/models.ts +0 -211
  447. package/studio/server/agent/harness/codex/skills.ts +0 -33
  448. package/studio/server/agent/harness/gateway/config.test.ts +0 -98
  449. package/studio/server/agent/harness/gateway/config.ts +0 -214
  450. package/studio/server/agent/harness/gateway/token.test.ts +0 -133
  451. package/studio/server/agent/harness/gateway/token.ts +0 -166
  452. package/studio/server/agent/harness/mock/adapter.ts +0 -190
  453. package/studio/server/agent/harness/mock/domain-edit.ts +0 -41
  454. package/studio/server/agent/harness/process.test.ts +0 -46
  455. package/studio/server/agent/harness/process.ts +0 -104
  456. package/studio/server/agent/harness/registry.ts +0 -37
  457. package/studio/server/agent/harness/selection.test.ts +0 -75
  458. package/studio/server/agent/harness/selection.ts +0 -85
  459. package/studio/server/agent/harness/skills.test.ts +0 -95
  460. package/studio/server/agent/harness/skills.ts +0 -100
  461. package/studio/server/agent/layout.test.ts +0 -95
  462. package/studio/server/agent/notify.ts +0 -12
  463. package/studio/server/agent/prompts/anchors.test.ts +0 -70
  464. package/studio/server/agent/prompts/anchors.ts +0 -153
  465. package/studio/server/agent/prompts/ask.ts +0 -34
  466. package/studio/server/agent/prompts/system.test.ts +0 -13
  467. package/studio/server/agent/prompts/system.ts +0 -99
  468. package/studio/server/agent/prompts/turn.ts +0 -66
  469. package/studio/server/agent/routes.test.ts +0 -176
  470. package/studio/server/agent/routes.ts +0 -214
  471. package/studio/server/agent/run/completion.ts +0 -193
  472. package/studio/server/agent/run/coordinator.test.ts +0 -337
  473. package/studio/server/agent/run/coordinator.ts +0 -104
  474. package/studio/server/agent/run/live-state.ts +0 -73
  475. package/studio/server/agent/run/preparation.ts +0 -163
  476. package/studio/server/agent/run/transcript.test.ts +0 -81
  477. package/studio/server/agent/run/transcript.ts +0 -196
  478. package/studio/server/agent/run/usage.test.ts +0 -70
  479. package/studio/server/agent/run/usage.ts +0 -62
  480. package/studio/server/agent/stream.ts +0 -37
  481. package/studio/server/agent/telemetry.ts +0 -13
  482. package/studio/server/api/canvas.ts +0 -43
  483. package/studio/server/api/comments.ts +0 -85
  484. package/studio/server/api/context.ts +0 -61
  485. package/studio/server/api/deployment.ts +0 -39
  486. package/studio/server/api/documents.ts +0 -55
  487. package/studio/server/api/domain.ts +0 -59
  488. package/studio/server/api/http.ts +0 -45
  489. package/studio/server/api/project.ts +0 -57
  490. package/studio/server/api/schema.ts +0 -12
  491. package/studio/server/api/views.ts +0 -57
  492. package/studio/server/api/workspace.ts +0 -60
  493. package/studio/server/api-agent-loadout.test.ts +0 -69
  494. package/studio/server/api.test.ts +0 -147
  495. package/studio/server/api.ts +0 -34
  496. package/studio/server/cache.test.ts +0 -122
  497. package/studio/server/cache.ts +0 -303
  498. package/studio/server/cli-consumers.test.ts +0 -494
  499. package/studio/server/cli.test.ts +0 -88
  500. package/studio/server/cli.ts +0 -240
  501. package/studio/server/client-package.test.ts +0 -147
  502. package/studio/server/client-package.ts +0 -266
  503. package/studio/server/detect.ts +0 -81
  504. package/studio/server/domain.test.ts +0 -77
  505. package/studio/server/domain.ts +0 -124
  506. package/studio/server/environment/dotenv-preview.test.ts +0 -39
  507. package/studio/server/environment/dotenv-preview.ts +0 -27
  508. package/studio/server/environment/files.test.ts +0 -53
  509. package/studio/server/environment/files.ts +0 -120
  510. package/studio/server/handoff/copy.ts +0 -171
  511. package/studio/server/handoff/service.test.ts +0 -22
  512. package/studio/server/handoff/service.ts +0 -62
  513. package/studio/server/index.ts +0 -148
  514. package/studio/server/instances/active.ts +0 -72
  515. package/studio/server/instances/deploy-record.test.ts +0 -31
  516. package/studio/server/instances/deploy-record.ts +0 -37
  517. package/studio/server/instances/deploy.ts +0 -56
  518. package/studio/server/instances/probe.test.ts +0 -67
  519. package/studio/server/instances/probe.ts +0 -67
  520. package/studio/server/instances/status.test.ts +0 -12
  521. package/studio/server/instances/status.ts +0 -49
  522. package/studio/server/introspect/anatomy/client-tree.ts +0 -57
  523. package/studio/server/introspect/anatomy/env-fields.ts +0 -66
  524. package/studio/server/introspect/anatomy/schema-definition.ts +0 -53
  525. package/studio/server/introspect/anatomy/source.ts +0 -181
  526. package/studio/server/introspect/anatomy/views/routes.ts +0 -114
  527. package/studio/server/introspect/anatomy/views.ts +0 -53
  528. package/studio/server/introspect/anatomy-extras.test.ts +0 -265
  529. package/studio/server/introspect/anatomy-extras.ts +0 -10
  530. package/studio/server/introspect/anatomy.test.ts +0 -41
  531. package/studio/server/introspect/anatomy.ts +0 -147
  532. package/studio/server/introspect/bundle.ts +0 -69
  533. package/studio/server/introspect/canonical-schema.test.ts +0 -179
  534. package/studio/server/introspect/canonical-schema.ts +0 -583
  535. package/studio/server/introspect/config-preview.test.ts +0 -32
  536. package/studio/server/introspect/config-preview.ts +0 -119
  537. package/studio/server/introspect/core-extractor.ts +0 -30
  538. package/studio/server/introspect/core.ts +0 -45
  539. package/studio/server/introspect/diff.test.ts +0 -124
  540. package/studio/server/introspect/diff.ts +0 -316
  541. package/studio/server/introspect/extractor.ts +0 -41
  542. package/studio/server/introspect/hash.ts +0 -24
  543. package/studio/server/introspect/overlay-tsmorph.test.ts +0 -146
  544. package/studio/server/introspect/overlay-tsmorph.ts +0 -9
  545. package/studio/server/introspect/overlay.test.ts +0 -44
  546. package/studio/server/introspect/overlay.ts +0 -40
  547. package/studio/server/introspect/revision.test.ts +0 -54
  548. package/studio/server/introspect/revision.ts +0 -49
  549. package/studio/server/introspect/runtime.test.ts +0 -157
  550. package/studio/server/introspect/runtime.ts +0 -140
  551. package/studio/server/introspect/schema-ir-json.test.ts +0 -70
  552. package/studio/server/introspect/schema-ir-json.ts +0 -151
  553. package/studio/server/introspect/schema-refs.test.ts +0 -55
  554. package/studio/server/introspect/schema-refs.ts +0 -32
  555. package/studio/server/introspect/source-overlay/annotations.ts +0 -14
  556. package/studio/server/introspect/source-overlay/handlers.ts +0 -161
  557. package/studio/server/introspect/source-overlay/kernel-calls.ts +0 -46
  558. package/studio/server/introspect/source-overlay/project.ts +0 -248
  559. package/studio/server/introspect/source-overlay/spans.ts +0 -330
  560. package/studio/server/json.ts +0 -46
  561. package/studio/server/lifecycle.ts +0 -42
  562. package/studio/server/sse.test.ts +0 -26
  563. package/studio/server/sse.ts +0 -60
  564. package/studio/server/state/baseline.test.ts +0 -267
  565. package/studio/server/state/baseline.ts +0 -354
  566. package/studio/server/state/comments.test.ts +0 -94
  567. package/studio/server/state/comments.ts +0 -484
  568. package/studio/server/state/context.ts +0 -199
  569. package/studio/server/state/documents.ts +0 -111
  570. package/studio/server/state/integrations.ts +0 -81
  571. package/studio/server/state/layout.test.ts +0 -34
  572. package/studio/server/state/layout.ts +0 -82
  573. package/studio/server/state/settings.test.ts +0 -78
  574. package/studio/server/state/settings.ts +0 -73
  575. package/studio/server/state/store.test.ts +0 -122
  576. package/studio/server/state/store.ts +0 -146
  577. package/studio/server/state/visibility.ts +0 -48
  578. package/studio/server/views/model.test.ts +0 -57
  579. package/studio/server/views/model.ts +0 -66
  580. package/studio/server/views/runtime.ts +0 -40
  581. package/studio/server/views/selection-repository.test.ts +0 -31
  582. package/studio/server/views/selection-repository.ts +0 -60
  583. package/studio/server/views/session.test.ts +0 -73
  584. package/studio/server/views/session.ts +0 -166
  585. package/studio/server/views/target.test.ts +0 -78
  586. package/studio/server/views/target.ts +0 -222
  587. package/studio/server/watch.test.ts +0 -36
  588. package/studio/server/watch.ts +0 -93
  589. package/studio/server/workspace/catalog.test.ts +0 -17
  590. package/studio/server/workspace/catalog.ts +0 -43
  591. package/studio/server/workspace/create.test.ts +0 -37
  592. package/studio/server/workspace/create.ts +0 -162
  593. package/studio/server/workspace/git.ts +0 -75
  594. package/studio/server/workspace/updates.ts +0 -83
  595. package/studio/server/workspace-state.ts +0 -26
  596. package/studio/server/workspace-watch.ts +0 -106
  597. package/studio/shared/agent-effort.test.ts +0 -12
  598. package/studio/shared/agent-effort.ts +0 -15
  599. package/studio/shared/agent-models.test.ts +0 -9
  600. package/studio/shared/agent-models.ts +0 -14
  601. package/studio/shared/contracts/README.md +0 -16
  602. package/studio/shared/contracts/agent.ts +0 -270
  603. package/studio/shared/contracts/runtime.ts +0 -50
  604. package/studio/shared/contracts/schema.ts +0 -393
  605. package/studio/shared/contracts/surface.test.ts +0 -317
  606. package/studio/shared/contracts/workspace.ts +0 -265
  607. package/studio/shared/layout.test.ts +0 -116
  608. package/studio/shared/schema/identity.test.ts +0 -34
  609. package/studio/shared/schema/identity.ts +0 -68
  610. package/studio/shared/settings-values.test.ts +0 -18
  611. package/studio/shared/settings-values.ts +0 -20
  612. package/studio/shared/types.ts +0 -14
  613. package/studio/tsconfig.json +0 -23
  614. package/tsconfig.json +0 -14
  615. package/viewer/dist/index.html +0 -93
  616. package/viewer/dist/main.js +0 -76
  617. package/viewer/tsconfig.json +0 -13
@@ -1,11 +0,0 @@
1
- /** Process-wide machine mode from argv (`--json` / `--raw` / `--ci`). */
2
-
3
- let argvMachine = false
4
-
5
- export function configureInvocation(argv: readonly string[]): void {
6
- argvMachine = argv.some((token) => token === '--json' || token === '--raw' || token === '--ci')
7
- }
8
-
9
- export function invocationWantsMachine(): boolean {
10
- return argvMachine
11
- }
@@ -1,152 +0,0 @@
1
- import { decodeJwt } from 'jose'
2
-
3
- import type { AstraleConfig } from './config'
4
-
5
- import { readIdentities, type IdentityStore } from '../identity/index'
6
- import { resolveAdminTargetFromStore } from './admin-target'
7
- import { DEFAULT_CONFIG, readConfig } from './config'
8
- import { isSessionExpired, readIdpSession, type IdpSession } from './idp'
9
- import { readInstances, type InstanceStore } from './instance'
10
-
11
- export type LocalInstanceStatus = {
12
- active: string
13
- url: string
14
- issuer: string | null
15
- defaultIdentity: string | null
16
- } | null
17
-
18
- export type LocalAdminStatus =
19
- | {
20
- name: string
21
- url: string
22
- issuer: string
23
- source: string
24
- configured: boolean
25
- }
26
- | {
27
- error: string
28
- }
29
-
30
- export type LocalIdentityStatus = {
31
- name: string
32
- subject: string
33
- source: 'key' | 'idp'
34
- idp: string | null
35
- session: {
36
- cached: boolean
37
- requiresLogin?: boolean
38
- hasRefreshToken?: boolean
39
- } | null
40
- } | null
41
-
42
- export type LocalStatus = {
43
- admin: LocalAdminStatus
44
- instance: LocalInstanceStatus
45
- identity: LocalIdentityStatus
46
- }
47
-
48
- export type JwtExpiration = {
49
- expiresAt: string
50
- expired: boolean
51
- }
52
-
53
- export async function readLocalStatus(): Promise<LocalStatus> {
54
- const [instances, identities, config] = await Promise.all([
55
- // Read-only: status / `setup --plan` must never trigger a sanitize-writeback.
56
- readInstances(undefined, { persist: false }),
57
- readIdentities(),
58
- readConfig(),
59
- ])
60
- return buildLocalStatus(instances, identities, async (name) => readIdpSession(name), config)
61
- }
62
-
63
- export async function buildLocalStatus(
64
- instances: InstanceStore,
65
- identities: IdentityStore,
66
- readSession: (identityName: string) => Promise<IdpSession | null>,
67
- config: AstraleConfig = DEFAULT_CONFIG,
68
- ): Promise<LocalStatus> {
69
- const activeEntry = instances.active ? instances.instances[instances.active] : undefined
70
- const instance = instances.active
71
- ? {
72
- active: instances.active,
73
- url: activeEntry?.url ?? '',
74
- issuer: activeEntry?.issuer ?? null,
75
- defaultIdentity: activeEntry?.defaultIdentity ?? null,
76
- }
77
- : null
78
-
79
- const identityEntry = identities.identities[identities.default]
80
- const admin = buildAdminStatus(config, instances)
81
- if (!identityEntry) {
82
- return { admin, instance, identity: null }
83
- }
84
-
85
- const source = identityEntry.source ?? 'key'
86
- const session =
87
- source === 'idp'
88
- ? await readSession(identities.default)
89
- .then((value) => {
90
- if (!value) return { cached: false }
91
- const expiresAt =
92
- value.expires_at ??
93
- expClaimToIso(value.claims?.exp) ??
94
- expClaimToIso(identityEntry.claims?.exp)
95
- const hasRefreshToken = !!value.refresh_token
96
- return {
97
- cached: true,
98
- requiresLogin:
99
- !hasRefreshToken &&
100
- isSessionExpired({ expires_at: expiresAt, access_token: value.access_token }),
101
- hasRefreshToken,
102
- }
103
- })
104
- .catch(() => ({ cached: false }))
105
- : null
106
-
107
- return {
108
- admin,
109
- instance,
110
- identity: {
111
- name: identities.default,
112
- subject: identityEntry.subject,
113
- source,
114
- idp: identityEntry.idp ?? null,
115
- session,
116
- },
117
- }
118
- }
119
-
120
- function buildAdminStatus(config: AstraleConfig, instances: InstanceStore): LocalAdminStatus {
121
- try {
122
- const target = resolveAdminTargetFromStore({}, config, instances)
123
- return {
124
- name: target.name,
125
- url: target.url,
126
- issuer: target.kernelIssuer,
127
- source: target.source,
128
- configured: target.configured,
129
- }
130
- } catch (err) {
131
- return { error: err instanceof Error ? err.message : String(err) }
132
- }
133
- }
134
-
135
- function expClaimToIso(value: unknown): string | undefined {
136
- if (typeof value !== 'number') return undefined
137
- return new Date(value * 1000).toISOString()
138
- }
139
-
140
- export function decodeJwtExpiration(token: string, nowMs = Date.now()): JwtExpiration | null {
141
- try {
142
- const payload = decodeJwt(token)
143
- if (typeof payload.exp !== 'number') return null
144
- const expiresMs = payload.exp * 1000
145
- return {
146
- expiresAt: new Date(expiresMs).toISOString(),
147
- expired: expiresMs <= nowMs,
148
- }
149
- } catch {
150
- return null
151
- }
152
- }
package/src/lib/log.ts DELETED
@@ -1,143 +0,0 @@
1
- import chalk from 'chalk'
2
- import ora, { type Ora } from 'ora'
3
-
4
- import { AstraleError, NotImplementedError } from '../errors'
5
- import { printFailureDebug } from './failure-debug'
6
- import { formatElapsed } from './format'
7
- import { isMachine, type MachineOpts } from './output'
8
-
9
- export const log = {
10
- info: (msg: string) => console.log(chalk.blue('ℹ'), msg),
11
- success: (msg: string) => console.log(chalk.green('✔'), msg),
12
- // Diagnostics never share stdout with command results. In particular,
13
- // --json/--raw consumers must receive exactly one parseable value there.
14
- warn: (msg: string) => console.error(chalk.yellow('⚠'), msg),
15
- error: (msg: string) => console.error(chalk.red('✖'), msg),
16
- step: (msg: string) => console.log(chalk.cyan('→'), msg),
17
- dim: (msg: string) => console.log(chalk.dim(msg)),
18
- }
19
-
20
- /** Report an error with hint (when present) and exit. `--json` / `--ci` / a
21
- * non-TTY stdout always get one structured JSON line on stderr. */
22
- export function fatal(e: unknown, opts?: MachineOpts & { readonly debug?: boolean }): never {
23
- // Ctrl-C at an interactive (@inquirer/prompts) prompt — exit quietly with the
24
- // SIGINT convention, not a red error line.
25
- if (e instanceof Error && e.name === 'ExitPromptError') process.exit(130)
26
- const msg =
27
- e instanceof AstraleError ? e.message : 'The CLI encountered an unexpected internal failure.'
28
- const code = e instanceof AstraleError ? e.code : 'UNEXPECTED_ERROR'
29
- if (isMachine(opts)) {
30
- const payload: Record<string, unknown> = { error: code, message: msg }
31
- if (e instanceof AstraleError && e.hint) payload.hint = e.hint
32
- process.stderr.write(JSON.stringify(payload) + '\n')
33
- } else {
34
- log.error(`${code}: ${msg}`)
35
- if (e instanceof AstraleError && e.hint) log.dim(` hint: ${e.hint}`)
36
- }
37
- if (opts?.debug) printFailureDebug(e, '')
38
- process.exit(1)
39
- }
40
-
41
- /** Project only a caller-authored admission failure into the CLI input family. */
42
- export function failInput(error: unknown, opts?: MachineOpts): never {
43
- if (error instanceof AstraleError) fatal(error, opts)
44
- if (!(error instanceof TypeError)) fatal(error, opts)
45
- fatal(
46
- new AstraleError(
47
- 'INVALID_INPUT',
48
- error.message.trim() ? error.message : 'CLI input is invalid.',
49
- ),
50
- opts,
51
- )
52
- }
53
-
54
- /** Shortcut for stub commands that aren't wired in v1 (§15). */
55
- export function fatalNotImplemented(feature: string, hint?: string): never {
56
- fatal(new NotImplementedError(feature, hint))
57
- }
58
-
59
- /** Maximum time a spinner may run before being forcefully stopped. */
60
- const SPINNER_SAFETY_MS = 60_000
61
-
62
- const IS_CI = !!(process.env.CI || process.env.CONTINUOUS_INTEGRATION || process.env.NO_SPINNER)
63
-
64
- /**
65
- * Run an async operation behind a spinner. Pass `enabled: false` for
66
- * machine-readable output modes. Errors are rethrown after the spinner is
67
- * stopped (✖ label failed).
68
- *
69
- * On success the spinner line is cleared — commands print their own result.
70
- * Pass `opts.success` to instead persist a single final line
71
- * (✔ <success text> <elapsed>) so a command ends on one line, not a
72
- * spinner line + result line pair.
73
- */
74
- export async function withSpinner<T>(
75
- label: string,
76
- enabled: boolean,
77
- fn: () => Promise<T>,
78
- opts: { success?: (result: T) => string } = {},
79
- ): Promise<T> {
80
- if (!enabled) return await fn()
81
- const spin = spinner(`${label}...`)
82
- const start = performance.now()
83
- try {
84
- const result = await fn()
85
- if (opts.success) {
86
- spin.succeed(`${opts.success(result)} ${chalk.dim(formatElapsed(performance.now() - start))}`)
87
- } else {
88
- spin.stop()
89
- }
90
- return result
91
- } catch (error) {
92
- spin.fail(`${label} failed`)
93
- throw error
94
- }
95
- }
96
-
97
- export function spinner(text: string): Ora {
98
- const target = process.stderr
99
-
100
- if (!target.writable || IS_CI) {
101
- return ora({ text, isEnabled: false })
102
- }
103
-
104
- // Hand ora the bare stream: ora 9 hooks `stream.write` by assignment to
105
- // interleave external writes, so any wrapper here must survive that
106
- // mutation (a get-only Proxy recurses infinitely and kills the spinner).
107
- // Backpressure is ora's job now — it pauses rendering until 'drain'.
108
- const spin = ora({ text, color: 'cyan', stream: target }).start()
109
-
110
- const safety = setTimeout(() => {
111
- if (spin.isSpinning) spin.stop()
112
- }, SPINNER_SAFETY_MS)
113
- safety.unref()
114
-
115
- const onTargetError = () => {
116
- if (spin.isSpinning) spin.stop()
117
- }
118
- target.once('error', onTargetError)
119
-
120
- const cleanup = () => {
121
- clearTimeout(safety)
122
- target.removeListener('error', onTargetError)
123
- }
124
-
125
- const origSucceed = spin.succeed.bind(spin)
126
- const origFail = spin.fail.bind(spin)
127
- const origStop = spin.stop.bind(spin)
128
-
129
- spin.succeed = (text?: string) => {
130
- cleanup()
131
- return origSucceed(text)
132
- }
133
- spin.fail = (text?: string) => {
134
- cleanup()
135
- return origFail(text)
136
- }
137
- spin.stop = () => {
138
- cleanup()
139
- return origStop()
140
- }
141
-
142
- return spin
143
- }
@@ -1,201 +0,0 @@
1
- import { upsertIdpIdentity } from '../identity/registry'
2
- import {
3
- decodeTokenClaims,
4
- exchangeAuthorizationCode,
5
- identityNameFromClaims,
6
- issuerFromToken,
7
- normalizeTokenResponse,
8
- pollDeviceToken,
9
- readIdpConfigOrBuiltin,
10
- readIdpSession,
11
- readIdpStore,
12
- requireClientId,
13
- requestClientCredentials,
14
- requestDeviceAuthorization,
15
- saveIdpSession,
16
- subjectFromToken,
17
- tokenAudienceMatches,
18
- tokenExpiresAt,
19
- withCachedToken,
20
- workosClientIdFromEnv,
21
- type IdpSession,
22
- type TokenResponse,
23
- } from './idp'
24
- import { log } from './log'
25
-
26
- /**
27
- * The IdP login flow, lifted out of the `auth login` command so it can be
28
- * driven from anywhere (the command renders the result; `astrale setup` runs it
29
- * as one hand-held step). The side effects — saving the session cache and
30
- * upserting the IdP-backed identity — live here so every caller gets identical
31
- * behavior; presentation (the device URL is logged here; success lines are the
32
- * caller's) does not.
33
- */
34
- export type LoginFlowOpts = {
35
- idp?: string
36
- name?: string
37
- scope?: string
38
- audience?: string
39
- clientId?: string
40
- clientSecretEnv?: string
41
- clientCredentials?: boolean
42
- code?: string
43
- redirectUri?: string
44
- codeVerifier?: string
45
- /** Switch the default identity to the one we just logged in (default true). */
46
- use?: boolean
47
- /**
48
- * Optional device-flow presentation boundary. When supplied, the caller
49
- * receives the verification coordinates instead of terminal log output.
50
- */
51
- onVerification?: (event: DeviceVerification) => void
52
- }
53
-
54
- export type DeviceVerification = {
55
- verificationUri: string
56
- verificationUriComplete?: string
57
- userCode?: string
58
- expiresIn?: number
59
- message?: string
60
- }
61
-
62
- export type LoginResult = {
63
- session: IdpSession
64
- identityName: string
65
- idpName: string
66
- }
67
-
68
- /**
69
- * Authenticate against an IdP and persist the result. Throws on any failure
70
- * (no session is written) — notably BEFORE saving when an explicit `--audience`
71
- * does not match the minted access token, so a wrong-audience login never
72
- * leaves a half-written cache.
73
- */
74
- export async function loginViaIdp(opts: LoginFlowOpts): Promise<LoginResult> {
75
- const idpName = await resolveIdpName(opts.idp)
76
- const previous = opts.name && !opts.clientId ? await readIdpSession(opts.name) : null
77
- const savedClientId = previous?.idp === idpName ? previous.clientId : undefined
78
- const requestedClientId = opts.clientId ?? savedClientId
79
- const idp = await readIdpConfigOrBuiltin(idpName, {
80
- clientId: requestedClientId,
81
- persist: true,
82
- })
83
- const clientId = requireClientId(idp, requestedClientId)
84
- const scope = opts.scope ?? idp.client.scope ?? 'openid profile email offline_access'
85
-
86
- const token = normalizeTokenResponse(await obtainToken(idp, { ...opts, clientId }, scope))
87
- if (!token.access_token) throw new Error('IdP response did not include access_token')
88
- if (opts.audience && !tokenAudienceMatches(token.access_token, opts.audience)) {
89
- throw new Error(
90
- `IdP response access_token was not minted for requested audience ${opts.audience}`,
91
- )
92
- }
93
-
94
- const claims = decodeTokenClaims(token.id_token ?? token.access_token)
95
- const subject = subjectFromToken(token, clientId)
96
- const issuer = issuerFromToken(token, idp.metadata.issuer)
97
- const identityName = opts.name ?? identityNameFromClaims(claims, idpName)
98
- const session: IdpSession = {
99
- identity: identityName,
100
- idp: idpName,
101
- issuer,
102
- subject,
103
- clientId,
104
- audience: opts.audience,
105
- access_token: token.access_token,
106
- id_token: token.id_token,
107
- refresh_token: token.refresh_token,
108
- token_type: token.token_type,
109
- scope: token.scope ?? scope,
110
- expires_at: tokenExpiresAt(token),
111
- tokens: withCachedToken(undefined, token.access_token, tokenExpiresAt(token)),
112
- claims: claims ? (claims as Record<string, unknown>) : undefined,
113
- updatedAt: new Date().toISOString(),
114
- }
115
-
116
- await saveIdpSession(session)
117
- await upsertIdpIdentity(identityName, {
118
- subject,
119
- idp: idpName,
120
- issuer,
121
- audience: opts.audience,
122
- claims: session.claims,
123
- use: opts.use,
124
- })
125
-
126
- return { session, identityName, idpName }
127
- }
128
-
129
- /** Resolve which IdP to use: explicit name, the sole configured one, or WorkOS. */
130
- export async function resolveIdpName(name: string | undefined): Promise<string> {
131
- if (name) return name
132
- const store = await readIdpStore()
133
- const names = Object.keys(store.idps)
134
- if (names.length === 1) return names[0]
135
- if (names.length === 0 && workosClientIdFromEnv()) return 'workos'
136
- if (names.length === 0)
137
- throw new Error('No IdPs configured. Run: astrale idp add <name> --issuer <url>')
138
- throw new Error(`Multiple IdPs configured. Choose one with --idp: ${names.join(', ')}`)
139
- }
140
-
141
- async function obtainToken(
142
- idp: Awaited<ReturnType<typeof readIdpConfigOrBuiltin>>,
143
- opts: LoginFlowOpts,
144
- scope: string,
145
- ): Promise<TokenResponse> {
146
- if (opts.clientCredentials) {
147
- return requestClientCredentials({
148
- idp,
149
- clientId: opts.clientId,
150
- clientSecretEnv: opts.clientSecretEnv,
151
- scope,
152
- audience: opts.audience,
153
- })
154
- }
155
-
156
- if (opts.code) {
157
- if (!opts.redirectUri) throw new Error('--redirect-uri is required with --code')
158
- return exchangeAuthorizationCode({
159
- idp,
160
- code: opts.code,
161
- redirectUri: opts.redirectUri,
162
- codeVerifier: opts.codeVerifier,
163
- clientId: opts.clientId,
164
- clientSecretEnv: opts.clientSecretEnv,
165
- })
166
- }
167
-
168
- const device = await requestDeviceAuthorization({
169
- idp,
170
- clientId: opts.clientId,
171
- scope,
172
- audience: opts.audience,
173
- })
174
- const verificationUri = device.verification_uri ?? device.verification_uri_complete
175
- if (!verificationUri) {
176
- throw new Error('IdP device authorization response did not include a verification URL')
177
- }
178
- const verification: DeviceVerification = {
179
- verificationUri,
180
- verificationUriComplete: device.verification_uri_complete,
181
- userCode: device.user_code,
182
- expiresIn: device.expires_in,
183
- message: device.message,
184
- }
185
- if (opts.onVerification) opts.onVerification(verification)
186
- else {
187
- if (device.verification_uri_complete) log.info(`Open: ${device.verification_uri_complete}`)
188
- else if (device.verification_uri) log.info(`Open: ${device.verification_uri}`)
189
- if (device.user_code) log.info(`Code: ${device.user_code}`)
190
- if (device.message) log.dim(` ${device.message}`)
191
- }
192
-
193
- return pollDeviceToken({
194
- idp,
195
- deviceCode: device.device_code,
196
- clientId: opts.clientId,
197
- clientSecretEnv: opts.clientSecretEnv,
198
- intervalSec: device.interval,
199
- expiresInSec: device.expires_in,
200
- })
201
- }
package/src/lib/meta.ts DELETED
@@ -1,90 +0,0 @@
1
- /**
2
- * Issuer reachability helpers — OIDC discovery + JWKS.
3
- *
4
- * Kernels don't expose `/meta`. They expose OIDC discovery at
5
- * `/.well-known/openid-configuration` (standard, returns `issuer` and
6
- * `jwks_uri`) and JWKS at `/.well-known/jwks.json`. These helpers probe
7
- * both to verify the issuer is alive and publishes at least one key.
8
- *
9
- * Domain deployment readiness uses the canonical Domain Publication; that is
10
- * outside this issuer-connectivity helper.
11
- */
12
-
13
- import { IssuerUnreachableError } from '../errors'
14
-
15
- type FetchLike = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>
16
-
17
- export type DiscoveryDocument = {
18
- /** OIDC issuer URL. */
19
- issuer: string
20
- /** JWKS URI (defaults to `<issuer>/.well-known/jwks.json`). */
21
- jwksUri: string
22
- }
23
-
24
- export async function fetchDiscovery(
25
- url: string,
26
- timeoutMs = 5_000,
27
- fetchImpl: FetchLike = globalThis.fetch,
28
- ): Promise<DiscoveryDocument> {
29
- const discoveryUrl = url.replace(/\/+$/, '') + '/.well-known/openid-configuration'
30
- try {
31
- const r = await fetchImpl(discoveryUrl, { signal: AbortSignal.timeout(timeoutMs) })
32
- if (!r.ok) throw new Error(`HTTP ${r.status}`)
33
- const body = (await r.json()) as { issuer?: string; jwks_uri?: string }
34
- if (!body.issuer) throw new Error('discovery missing "issuer"')
35
- const issuer = body.issuer
36
- const jwksUri = body.jwks_uri ?? `${issuer.replace(/\/+$/, '')}/.well-known/jwks.json`
37
- return { issuer, jwksUri }
38
- } catch (e) {
39
- throw new IssuerUnreachableError(discoveryUrl, (e as Error).message)
40
- }
41
- }
42
-
43
- export async function fetchJwks(
44
- jwksUri: string,
45
- timeoutMs = 5_000,
46
- fetchImpl: FetchLike = globalThis.fetch,
47
- ): Promise<{ keys: Array<{ kid?: string }> }> {
48
- try {
49
- const r = await fetchImpl(jwksUri, { signal: AbortSignal.timeout(timeoutMs) })
50
- if (!r.ok) throw new Error(`HTTP ${r.status}`)
51
- return (await r.json()) as { keys: Array<{ kid?: string }> }
52
- } catch (e) {
53
- throw new IssuerUnreachableError(jwksUri, (e as Error).message)
54
- }
55
- }
56
-
57
- /**
58
- * Discover the WorkOS organization an instance host pins
59
- */
60
- export async function fetchOrgHint(url: string, timeoutMs = 5_000): Promise<string | undefined> {
61
- try {
62
- const origin = new URL(url).origin
63
- const r = await fetch(`${origin}/auth/org`, { signal: AbortSignal.timeout(timeoutMs) })
64
- if (!r.ok) return undefined
65
- const body = (await r.json()) as { organizationId?: unknown }
66
- return typeof body.organizationId === 'string' ? body.organizationId : undefined
67
- } catch {
68
- return undefined
69
- }
70
- }
71
-
72
- /** Verify the pinned issuer publishes self-consistent OIDC discovery and a non-empty JWKS. */
73
- export async function checkIssuerReachability(
74
- url: string,
75
- issuerOverride?: string,
76
- fetchImpl?: FetchLike,
77
- ): Promise<{ issuer: string; keys: Array<{ kid?: string }> }> {
78
- const discoveryBase = issuerOverride ?? url
79
- const discovery = await fetchDiscovery(discoveryBase, 5_000, fetchImpl)
80
- if (issuerOverride !== undefined && discovery.issuer !== issuerOverride) {
81
- throw new IssuerUnreachableError(
82
- `${discoveryBase.replace(/\/+$/, '')}/.well-known/openid-configuration`,
83
- `discovery declared issuer "${discovery.issuer}" instead of "${issuerOverride}"`,
84
- )
85
- }
86
- const jwks = await fetchJwks(discovery.jwksUri, 5_000, fetchImpl)
87
- if (jwks.keys.length === 0)
88
- throw new IssuerUnreachableError(discovery.jwksUri, 'no keys published')
89
- return { issuer: discovery.issuer, keys: jwks.keys }
90
- }