@astrale-os/cli 1.0.0-beta.8 → 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 (599) 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 -93172
  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/instance/model.d.ts +0 -39
  11. package/dist/types/connect-core.d.ts +0 -22
  12. package/dist/types/connection/auth.d.ts +0 -36
  13. package/dist/types/errors.d.ts +0 -23
  14. package/dist/types/identity/registry.d.ts +0 -25
  15. package/dist/types/keys/algorithm.d.ts +0 -6
  16. package/dist/types/keys/credential.d.ts +0 -21
  17. package/dist/types/keys/index.d.ts +0 -4
  18. package/dist/types/keys/pair.d.ts +0 -34
  19. package/dist/types/lib/admin-target.d.ts +0 -78
  20. package/dist/types/lib/ca-fetch.d.ts +0 -2
  21. package/dist/types/lib/config.d.ts +0 -71
  22. package/dist/types/lib/failure-debug.d.ts +0 -1
  23. package/dist/types/lib/format.d.ts +0 -1
  24. package/dist/types/lib/idp-session.d.ts +0 -33
  25. package/dist/types/lib/idp.d.ts +0 -404
  26. package/dist/types/lib/instance-target.d.ts +0 -38
  27. package/dist/types/lib/instance.d.ts +0 -196
  28. package/dist/types/lib/invocation.d.ts +0 -3
  29. package/dist/types/lib/log.d.ts +0 -33
  30. package/dist/types/lib/login-flow.d.ts +0 -49
  31. package/dist/types/lib/meta.d.ts +0 -36
  32. package/dist/types/lib/output.d.ts +0 -87
  33. package/dist/types/lib/proc.d.ts +0 -43
  34. package/dist/types/lib/table.d.ts +0 -18
  35. package/dist/types/lib/update.d.ts +0 -131
  36. package/dist/types/lib/validation.d.ts +0 -11
  37. package/dist/types/paths/index.d.ts +0 -2
  38. package/dist/types/state/exchange-credentials.d.ts +0 -25
  39. package/dist/types/state/files.d.ts +0 -9
  40. package/dist/types/state/identities.d.ts +0 -42
  41. package/dist/types/state/index.d.ts +0 -8
  42. package/dist/types/state/paths.d.ts +0 -32
  43. package/src/__tests__/fixtures/publication.ts +0 -20
  44. package/src/admin/.spec/api.d.ts +0 -3
  45. package/src/admin/.spec/architecture.md +0 -15
  46. package/src/admin/.spec/icon.svg +0 -3
  47. package/src/admin/.spec/layout.ts +0 -6
  48. package/src/admin/__tests__/binding.test.ts +0 -31
  49. package/src/admin/__tests__/fixture.ts +0 -101
  50. package/src/admin/binding.ts +0 -98
  51. package/src/admin/catalog/.spec/api.d.ts +0 -65
  52. package/src/admin/catalog/.spec/architecture.md +0 -6
  53. package/src/admin/catalog/.spec/icon.svg +0 -3
  54. package/src/admin/catalog/.spec/layout.ts +0 -6
  55. package/src/admin/catalog/__tests__/client.test.ts +0 -142
  56. package/src/admin/catalog/client.ts +0 -218
  57. package/src/admin/catalog/index.ts +0 -13
  58. package/src/admin/catalog/model.ts +0 -41
  59. package/src/admin/catalog/tsconfig.json +0 -8
  60. package/src/admin/graph/.spec/api.d.ts +0 -22
  61. package/src/admin/graph/.spec/architecture.md +0 -5
  62. package/src/admin/graph/.spec/icon.svg +0 -3
  63. package/src/admin/graph/.spec/layout.ts +0 -3
  64. package/src/admin/graph/index.ts +0 -6
  65. package/src/admin/graph/nodes.ts +0 -56
  66. package/src/admin/index.ts +0 -2
  67. package/src/admin/instance/.spec/api.d.ts +0 -66
  68. package/src/admin/instance/.spec/architecture.md +0 -10
  69. package/src/admin/instance/.spec/icon.svg +0 -3
  70. package/src/admin/instance/.spec/layout.ts +0 -6
  71. package/src/admin/instance/__tests__/client.test.ts +0 -266
  72. package/src/admin/instance/client.ts +0 -290
  73. package/src/admin/instance/index.ts +0 -16
  74. package/src/admin/instance/model.ts +0 -66
  75. package/src/admin/instance/tsconfig.json +0 -8
  76. package/src/commands/__tests__/admin-instance.test.ts +0 -88
  77. package/src/commands/__tests__/auth-login.test.ts +0 -231
  78. package/src/commands/__tests__/auth-token.test.ts +0 -223
  79. package/src/commands/__tests__/call-describe.test.ts +0 -80
  80. package/src/commands/__tests__/call.test.ts +0 -29
  81. package/src/commands/__tests__/domain-install-operation.test.ts +0 -126
  82. package/src/commands/__tests__/domain-install-owned.test.ts +0 -191
  83. package/src/commands/__tests__/domain-list.test.ts +0 -133
  84. package/src/commands/__tests__/domain-uninstall.test.ts +0 -53
  85. package/src/commands/__tests__/install-direct.test.ts +0 -21
  86. package/src/commands/__tests__/install-identity-override.test.ts +0 -76
  87. package/src/commands/__tests__/instance-bookmark.test.ts +0 -166
  88. package/src/commands/__tests__/instance-create-hosts.test.ts +0 -29
  89. package/src/commands/__tests__/instance-list-admin.test.ts +0 -26
  90. package/src/commands/__tests__/instance-list-rows.test.ts +0 -64
  91. package/src/commands/__tests__/instance-use.test.ts +0 -67
  92. package/src/commands/__tests__/introspect-parse.test.ts +0 -21
  93. package/src/commands/__tests__/logs.test.ts +0 -97
  94. package/src/commands/__tests__/read-commands.test.ts +0 -294
  95. package/src/commands/__tests__/setup-plan.test.ts +0 -61
  96. package/src/commands/__tests__/studio-descriptor.test.ts +0 -22
  97. package/src/commands/__tests__/token-ttl.test.ts +0 -21
  98. package/src/commands/__tests__/update.test.ts +0 -95
  99. package/src/commands/__tests__/view-build.test.ts +0 -58
  100. package/src/commands/__tests__/view.test.ts +0 -149
  101. package/src/commands/admin/status.ts +0 -61
  102. package/src/commands/admin/use.ts +0 -100
  103. package/src/commands/auth/login.ts +0 -82
  104. package/src/commands/auth/logout.ts +0 -52
  105. package/src/commands/auth/status.ts +0 -86
  106. package/src/commands/auth/token.ts +0 -174
  107. package/src/commands/browser.ts +0 -207
  108. package/src/commands/call-describe.ts +0 -123
  109. package/src/commands/call.ts +0 -205
  110. package/src/commands/domain/install.ts +0 -548
  111. package/src/commands/domain/list.ts +0 -155
  112. package/src/commands/domain/publish.ts +0 -133
  113. package/src/commands/domain/uninstall.ts +0 -128
  114. package/src/commands/get.ts +0 -69
  115. package/src/commands/identity/__tests__/register.test.ts +0 -93
  116. package/src/commands/identity/create.ts +0 -35
  117. package/src/commands/identity/delete.ts +0 -24
  118. package/src/commands/identity/export.ts +0 -46
  119. package/src/commands/identity/import.ts +0 -61
  120. package/src/commands/identity/list.ts +0 -56
  121. package/src/commands/identity/register.ts +0 -196
  122. package/src/commands/identity/sync.ts +0 -38
  123. package/src/commands/identity/unsync.ts +0 -34
  124. package/src/commands/identity/use.ts +0 -24
  125. package/src/commands/identity/whoami.ts +0 -34
  126. package/src/commands/idp/add.ts +0 -150
  127. package/src/commands/idp/list.ts +0 -57
  128. package/src/commands/idp/refresh.ts +0 -38
  129. package/src/commands/idp/remove.ts +0 -36
  130. package/src/commands/idp/show.ts +0 -29
  131. package/src/commands/instance/active.ts +0 -73
  132. package/src/commands/instance/bookmark.ts +0 -101
  133. package/src/commands/instance/create.ts +0 -69
  134. package/src/commands/instance/delete.ts +0 -68
  135. package/src/commands/instance/forget.ts +0 -26
  136. package/src/commands/instance/list.ts +0 -197
  137. package/src/commands/instance/status.ts +0 -38
  138. package/src/commands/instance/use.ts +0 -259
  139. package/src/commands/introspect.ts +0 -110
  140. package/src/commands/logs.ts +0 -283
  141. package/src/commands/mutate.ts +0 -122
  142. package/src/commands/query.ts +0 -136
  143. package/src/commands/session/analyze.ts +0 -50
  144. package/src/commands/session/list.ts +0 -36
  145. package/src/commands/setup.ts +0 -54
  146. package/src/commands/status.ts +0 -60
  147. package/src/commands/studio.ts +0 -434
  148. package/src/commands/token.ts +0 -107
  149. package/src/commands/update.ts +0 -334
  150. package/src/commands/use.ts +0 -86
  151. package/src/commands/view-serve.ts +0 -26
  152. package/src/commands/view.ts +0 -614
  153. package/src/connect-core.test.ts +0 -38
  154. package/src/connect-core.ts +0 -42
  155. package/src/connection/.spec/api.d.ts +0 -110
  156. package/src/connection/.spec/architecture.md +0 -47
  157. package/src/connection/.spec/capabilities/connection.ts +0 -13
  158. package/src/connection/.spec/examples/call.ts +0 -7
  159. package/src/connection/.spec/flows/command.ts +0 -20
  160. package/src/connection/.spec/flows/session.ts +0 -61
  161. package/src/connection/.spec/laws/connection.ts +0 -205
  162. package/src/connection/.spec/layout.ts +0 -21
  163. package/src/connection/__tests__/auth.test.ts +0 -128
  164. package/src/connection/__tests__/ca-fetch.test.ts +0 -60
  165. package/src/connection/__tests__/call.test.ts +0 -17
  166. package/src/connection/__tests__/credential.test.ts +0 -119
  167. package/src/connection/__tests__/errors.test.ts +0 -577
  168. package/src/connection/__tests__/exchange.test.ts +0 -295
  169. package/src/connection/__tests__/failure-fixtures.ts +0 -39
  170. package/src/connection/__tests__/failure-safety.test.ts +0 -75
  171. package/src/connection/__tests__/fixtures/localhost-cert.pem +0 -19
  172. package/src/connection/__tests__/fixtures/localhost-key.base64 +0 -1
  173. package/src/connection/__tests__/managed.test.ts +0 -39
  174. package/src/connection/__tests__/reasons.test.ts +0 -78
  175. package/src/connection/__tests__/self.test.ts +0 -71
  176. package/src/connection/__tests__/session.test.ts +0 -140
  177. package/src/connection/__tests__/target.test.ts +0 -93
  178. package/src/connection/auth.ts +0 -236
  179. package/src/connection/call.ts +0 -7
  180. package/src/connection/command.ts +0 -67
  181. package/src/connection/credential.ts +0 -117
  182. package/src/connection/errors.ts +0 -1
  183. package/src/connection/exchange.ts +0 -311
  184. package/src/connection/failure/classify.ts +0 -110
  185. package/src/connection/failure/index.ts +0 -18
  186. package/src/connection/failure/model.ts +0 -28
  187. package/src/connection/failure/render.ts +0 -116
  188. package/src/connection/index.ts +0 -8
  189. package/src/connection/reasons.ts +0 -209
  190. package/src/connection/self.ts +0 -138
  191. package/src/connection/session.ts +0 -185
  192. package/src/connection/target.ts +0 -112
  193. package/src/connection/tsconfig.json +0 -6
  194. package/src/errors.ts +0 -66
  195. package/src/graph/.spec/api.d.ts +0 -41
  196. package/src/graph/.spec/laws/documents.ts +0 -24
  197. package/src/graph/.spec/laws/projection.ts +0 -13
  198. package/src/graph/.spec/layout.ts +0 -14
  199. package/src/graph/__tests__/mutation.test.ts +0 -51
  200. package/src/graph/__tests__/projection.test.ts +0 -22
  201. package/src/graph/__tests__/query.test.ts +0 -173
  202. package/src/graph/class.ts +0 -30
  203. package/src/graph/index.ts +0 -4
  204. package/src/graph/mutation.ts +0 -46
  205. package/src/graph/projection.ts +0 -21
  206. package/src/graph/query.ts +0 -97
  207. package/src/graph/tsconfig.json +0 -6
  208. package/src/identity/.history/ard/bootstrap-root-transfer.md +0 -57
  209. package/src/identity/.history/ard/domain-mediated-registration.md +0 -36
  210. package/src/identity/.spec/api.d.ts +0 -124
  211. package/src/identity/.spec/architecture.md +0 -33
  212. package/src/identity/.spec/capabilities/identity.ts +0 -7
  213. package/src/identity/.spec/flows/bootstrap-root.ts +0 -79
  214. package/src/identity/.spec/flows/domain-mediated-registration.ts +0 -51
  215. package/src/identity/.spec/flows/import.ts +0 -29
  216. package/src/identity/.spec/laws/identity.ts +0 -56
  217. package/src/identity/.spec/layout.ts +0 -13
  218. package/src/identity/.spec/schemas/identity-export-v1.schema.json +0 -25
  219. package/src/identity/__tests__/fixtures/registry-journey.ts +0 -53
  220. package/src/identity/__tests__/registration.test.ts +0 -64
  221. package/src/identity/__tests__/registry.test.ts +0 -70
  222. package/src/identity/__tests__/transfer.test.ts +0 -198
  223. package/src/identity/index.ts +0 -23
  224. package/src/identity/registration.ts +0 -72
  225. package/src/identity/registry.ts +0 -179
  226. package/src/identity/transfer.ts +0 -187
  227. package/src/identity/tsconfig.json +0 -6
  228. package/src/index.ts +0 -1
  229. package/src/keys/.spec/api.d.ts +0 -74
  230. package/src/keys/.spec/architecture.md +0 -13
  231. package/src/keys/.spec/laws/keys.ts +0 -43
  232. package/src/keys/.spec/layout.ts +0 -6
  233. package/src/keys/__tests__/algorithm.test.ts +0 -39
  234. package/src/keys/__tests__/keys.test.ts +0 -168
  235. package/src/keys/algorithm.ts +0 -33
  236. package/src/keys/credential.ts +0 -112
  237. package/src/keys/index.ts +0 -14
  238. package/src/keys/pair.ts +0 -219
  239. package/src/keys/tsconfig.json +0 -6
  240. package/src/lib/__tests__/admin-target.test.ts +0 -184
  241. package/src/lib/__tests__/binary.test.ts +0 -55
  242. package/src/lib/__tests__/command-dx.test.ts +0 -102
  243. package/src/lib/__tests__/concurrency.test.ts +0 -62
  244. package/src/lib/__tests__/config.test.ts +0 -54
  245. package/src/lib/__tests__/design.test.ts +0 -99
  246. package/src/lib/__tests__/domain-publication.test.ts +0 -133
  247. package/src/lib/__tests__/format.test.ts +0 -22
  248. package/src/lib/__tests__/idp-session.driver.ts +0 -53
  249. package/src/lib/__tests__/idp-session.test.ts +0 -379
  250. package/src/lib/__tests__/idp.test.ts +0 -415
  251. package/src/lib/__tests__/instance-candidates.test.ts +0 -148
  252. package/src/lib/__tests__/instance-target.test.ts +0 -212
  253. package/src/lib/__tests__/instance.test.ts +0 -192
  254. package/src/lib/__tests__/local-status.test.ts +0 -202
  255. package/src/lib/__tests__/log-errors.test.ts +0 -64
  256. package/src/lib/__tests__/log.test.ts +0 -31
  257. package/src/lib/__tests__/meta.test.ts +0 -55
  258. package/src/lib/__tests__/output.test.ts +0 -162
  259. package/src/lib/__tests__/panel.test.ts +0 -40
  260. package/src/lib/__tests__/port.test.ts +0 -44
  261. package/src/lib/__tests__/prompt.test.ts +0 -25
  262. package/src/lib/__tests__/sdk-deps.test.ts +0 -68
  263. package/src/lib/__tests__/self.test.ts +0 -50
  264. package/src/lib/__tests__/studio-server-deps.test.ts +0 -111
  265. package/src/lib/__tests__/table.test.ts +0 -53
  266. package/src/lib/__tests__/update.test.ts +0 -351
  267. package/src/lib/__tests__/use-target.test.ts +0 -56
  268. package/src/lib/__tests__/validation.test.ts +0 -34
  269. package/src/lib/__tests__/view-assets.test.ts +0 -146
  270. package/src/lib/__tests__/view-open-intent.test.ts +0 -280
  271. package/src/lib/__tests__/view-port-allocation.test.ts +0 -82
  272. package/src/lib/__tests__/view-server.test.ts +0 -68
  273. package/src/lib/__tests__/view-session.test.ts +0 -99
  274. package/src/lib/__tests__/view-snapshot.test.ts +0 -77
  275. package/src/lib/admin-domain.ts +0 -43
  276. package/src/lib/admin-instance.ts +0 -50
  277. package/src/lib/admin-target.ts +0 -290
  278. package/src/lib/binary.ts +0 -110
  279. package/src/lib/browser.ts +0 -150
  280. package/src/lib/ca-fetch.ts +0 -133
  281. package/src/lib/command-dx.ts +0 -188
  282. package/src/lib/concurrency.ts +0 -31
  283. package/src/lib/config.ts +0 -46
  284. package/src/lib/domain-publication.ts +0 -102
  285. package/src/lib/failure-debug.ts +0 -26
  286. package/src/lib/format.ts +0 -4
  287. package/src/lib/idp-session.ts +0 -134
  288. package/src/lib/idp.ts +0 -906
  289. package/src/lib/instance-candidates.ts +0 -49
  290. package/src/lib/instance-target.ts +0 -197
  291. package/src/lib/instance.ts +0 -463
  292. package/src/lib/invocation.ts +0 -11
  293. package/src/lib/local-status.ts +0 -152
  294. package/src/lib/log.ts +0 -143
  295. package/src/lib/login-flow.ts +0 -201
  296. package/src/lib/meta.ts +0 -90
  297. package/src/lib/output.ts +0 -238
  298. package/src/lib/panel.ts +0 -61
  299. package/src/lib/port.ts +0 -41
  300. package/src/lib/proc.ts +0 -82
  301. package/src/lib/prompt.ts +0 -136
  302. package/src/lib/provision-instance.ts +0 -162
  303. package/src/lib/sdk-deps.ts +0 -104
  304. package/src/lib/self.ts +0 -22
  305. package/src/lib/skills.ts +0 -171
  306. package/src/lib/table.ts +0 -62
  307. package/src/lib/update.ts +0 -409
  308. package/src/lib/use-target.ts +0 -24
  309. package/src/lib/validation.ts +0 -59
  310. package/src/lib/view/assets.ts +0 -78
  311. package/src/lib/view/open-intent.ts +0 -67
  312. package/src/lib/view/port-allocation.ts +0 -19
  313. package/src/lib/view/resolve.ts +0 -111
  314. package/src/lib/view/server.ts +0 -244
  315. package/src/lib/view/session.ts +0 -152
  316. package/src/lib/view/snapshot.ts +0 -101
  317. package/src/paths/.spec/api.d.ts +0 -13
  318. package/src/paths/.spec/architecture.md +0 -5
  319. package/src/paths/.spec/layout.ts +0 -3
  320. package/src/paths/index.ts +0 -13
  321. package/src/program/.spec/api.d.ts +0 -42
  322. package/src/program/.spec/architecture.md +0 -18
  323. package/src/program/.spec/laws/program.ts +0 -29
  324. package/src/program/.spec/layout.ts +0 -14
  325. package/src/program/__tests__/program.test.ts +0 -362
  326. package/src/program/build.ts +0 -183
  327. package/src/program/command.ts +0 -42
  328. package/src/program/index.ts +0 -2
  329. package/src/program/options.ts +0 -41
  330. package/src/program/registry.ts +0 -63
  331. package/src/program/tsconfig.json +0 -6
  332. package/src/setup/__tests__/instance-step.test.ts +0 -239
  333. package/src/setup/__tests__/util.test.ts +0 -29
  334. package/src/setup/engine.ts +0 -83
  335. package/src/setup/render.ts +0 -107
  336. package/src/setup/steps/admin.ts +0 -93
  337. package/src/setup/steps/agent-browser.ts +0 -81
  338. package/src/setup/steps/auth.ts +0 -54
  339. package/src/setup/steps/domain.ts +0 -68
  340. package/src/setup/steps/index.ts +0 -18
  341. package/src/setup/steps/instance.ts +0 -199
  342. package/src/setup/steps/skills-bridge.ts +0 -70
  343. package/src/setup/steps/skills.ts +0 -59
  344. package/src/setup/types.ts +0 -61
  345. package/src/setup/util.ts +0 -34
  346. package/src/state/.spec/api.d.ts +0 -133
  347. package/src/state/.spec/architecture.md +0 -31
  348. package/src/state/.spec/capabilities/state.ts +0 -7
  349. package/src/state/.spec/flows/identity-update.ts +0 -22
  350. package/src/state/.spec/laws/state.ts +0 -73
  351. package/src/state/.spec/layout.ts +0 -14
  352. package/src/state/__tests__/exchange-credentials.test.ts +0 -188
  353. package/src/state/__tests__/files.test.ts +0 -113
  354. package/src/state/__tests__/fixtures/identity-transition.ts +0 -37
  355. package/src/state/__tests__/identities.test.ts +0 -142
  356. package/src/state/__tests__/paths.test.ts +0 -27
  357. package/src/state/exchange-credentials.ts +0 -219
  358. package/src/state/files.ts +0 -129
  359. package/src/state/identities.ts +0 -229
  360. package/src/state/index.ts +0 -29
  361. package/src/state/paths.ts +0 -61
  362. package/src/state/tsconfig.json +0 -6
  363. package/src/telemetry/__tests__/gate.test.ts +0 -63
  364. package/src/telemetry/__tests__/recorder.test.ts +0 -110
  365. package/src/telemetry/__tests__/redact.test.ts +0 -79
  366. package/src/telemetry/__tests__/session.test.ts +0 -166
  367. package/src/telemetry/__tests__/trigger.test.ts +0 -49
  368. package/src/telemetry/adapters/__tests__/claude-code.test.ts +0 -89
  369. package/src/telemetry/adapters/__tests__/codex.test.ts +0 -138
  370. package/src/telemetry/adapters/__tests__/index.test.ts +0 -88
  371. package/src/telemetry/adapters/claude-code.ts +0 -90
  372. package/src/telemetry/adapters/codex.ts +0 -160
  373. package/src/telemetry/adapters/index.ts +0 -45
  374. package/src/telemetry/adapters/types.ts +0 -21
  375. package/src/telemetry/analyze.ts +0 -227
  376. package/src/telemetry/gate.ts +0 -79
  377. package/src/telemetry/recorder.ts +0 -57
  378. package/src/telemetry/redact.ts +0 -53
  379. package/src/telemetry/session.ts +0 -88
  380. package/src/telemetry/settings.ts +0 -26
  381. package/src/telemetry/store.ts +0 -91
  382. package/src/telemetry/trigger.ts +0 -119
  383. package/src/telemetry/types.ts +0 -64
  384. package/src/test-utils.ts +0 -18
  385. package/studio/client/dist/assets/elk-api-Di4OXGNH.js +0 -1
  386. package/studio/client/dist/assets/elk-worker.min-C9JGDOE-.js +0 -6312
  387. package/studio/client/dist/assets/index-BLm6J11H.js +0 -81
  388. package/studio/client/dist/assets/index-BiGR8Oo9.css +0 -1
  389. package/studio/client/dist/assets/index-ChOr3yP0.css +0 -1
  390. package/studio/client/dist/assets/index-DTjvkOUX.js +0 -8
  391. package/studio/client/dist/index.html +0 -13
  392. package/studio/package.json +0 -65
  393. package/studio/server/agent/ask.test.ts +0 -74
  394. package/studio/server/agent/ask.ts +0 -71
  395. package/studio/server/agent/bridge/client.test.ts +0 -49
  396. package/studio/server/agent/bridge/client.ts +0 -37
  397. package/studio/server/agent/bridge/grant.test.ts +0 -62
  398. package/studio/server/agent/bridge/grant.ts +0 -84
  399. package/studio/server/agent/bridge/routes.test.ts +0 -151
  400. package/studio/server/agent/bridge/routes.ts +0 -148
  401. package/studio/server/agent/bridge/stdio.ts +0 -195
  402. package/studio/server/agent/conversation.test.ts +0 -89
  403. package/studio/server/agent/conversation.ts +0 -158
  404. package/studio/server/agent/harness/adapter.ts +0 -171
  405. package/studio/server/agent/harness/claude/adapter.test.ts +0 -348
  406. package/studio/server/agent/harness/claude/adapter.ts +0 -71
  407. package/studio/server/agent/harness/claude/ask.ts +0 -114
  408. package/studio/server/agent/harness/claude/capabilities.ts +0 -27
  409. package/studio/server/agent/harness/claude/command.ts +0 -63
  410. package/studio/server/agent/harness/claude/events.ts +0 -215
  411. package/studio/server/agent/harness/claude/loadout.ts +0 -132
  412. package/studio/server/agent/harness/claude/mcp.test.ts +0 -36
  413. package/studio/server/agent/harness/claude/mcp.ts +0 -41
  414. package/studio/server/agent/harness/claude/skills.ts +0 -43
  415. package/studio/server/agent/harness/codex/adapter.test.ts +0 -269
  416. package/studio/server/agent/harness/codex/adapter.ts +0 -116
  417. package/studio/server/agent/harness/codex/ask.test.ts +0 -176
  418. package/studio/server/agent/harness/codex/ask.ts +0 -181
  419. package/studio/server/agent/harness/codex/command.test.ts +0 -69
  420. package/studio/server/agent/harness/codex/command.ts +0 -43
  421. package/studio/server/agent/harness/codex/events.test.ts +0 -94
  422. package/studio/server/agent/harness/codex/events.ts +0 -132
  423. package/studio/server/agent/harness/codex/exec.ts +0 -113
  424. package/studio/server/agent/harness/codex/loadout.ts +0 -60
  425. package/studio/server/agent/harness/codex/mcp.test.ts +0 -32
  426. package/studio/server/agent/harness/codex/mcp.ts +0 -27
  427. package/studio/server/agent/harness/codex/models.test.ts +0 -167
  428. package/studio/server/agent/harness/codex/models.ts +0 -211
  429. package/studio/server/agent/harness/codex/skills.ts +0 -33
  430. package/studio/server/agent/harness/gateway/config.test.ts +0 -98
  431. package/studio/server/agent/harness/gateway/config.ts +0 -214
  432. package/studio/server/agent/harness/gateway/token.test.ts +0 -133
  433. package/studio/server/agent/harness/gateway/token.ts +0 -166
  434. package/studio/server/agent/harness/mock/adapter.ts +0 -190
  435. package/studio/server/agent/harness/mock/domain-edit.ts +0 -41
  436. package/studio/server/agent/harness/process.test.ts +0 -46
  437. package/studio/server/agent/harness/process.ts +0 -104
  438. package/studio/server/agent/harness/registry.ts +0 -37
  439. package/studio/server/agent/harness/selection.test.ts +0 -75
  440. package/studio/server/agent/harness/selection.ts +0 -85
  441. package/studio/server/agent/harness/skills.test.ts +0 -95
  442. package/studio/server/agent/harness/skills.ts +0 -100
  443. package/studio/server/agent/layout.test.ts +0 -95
  444. package/studio/server/agent/notify.ts +0 -12
  445. package/studio/server/agent/prompts/anchors.test.ts +0 -70
  446. package/studio/server/agent/prompts/anchors.ts +0 -153
  447. package/studio/server/agent/prompts/ask.ts +0 -34
  448. package/studio/server/agent/prompts/system.test.ts +0 -13
  449. package/studio/server/agent/prompts/system.ts +0 -99
  450. package/studio/server/agent/prompts/turn.ts +0 -66
  451. package/studio/server/agent/routes.test.ts +0 -176
  452. package/studio/server/agent/routes.ts +0 -214
  453. package/studio/server/agent/run/completion.ts +0 -193
  454. package/studio/server/agent/run/coordinator.test.ts +0 -337
  455. package/studio/server/agent/run/coordinator.ts +0 -104
  456. package/studio/server/agent/run/live-state.ts +0 -73
  457. package/studio/server/agent/run/preparation.ts +0 -163
  458. package/studio/server/agent/run/transcript.test.ts +0 -81
  459. package/studio/server/agent/run/transcript.ts +0 -196
  460. package/studio/server/agent/run/usage.test.ts +0 -70
  461. package/studio/server/agent/run/usage.ts +0 -62
  462. package/studio/server/agent/stream.ts +0 -37
  463. package/studio/server/agent/telemetry.ts +0 -13
  464. package/studio/server/api/canvas.ts +0 -43
  465. package/studio/server/api/comments.ts +0 -85
  466. package/studio/server/api/context.ts +0 -61
  467. package/studio/server/api/deployment.ts +0 -39
  468. package/studio/server/api/documents.ts +0 -55
  469. package/studio/server/api/domain.ts +0 -59
  470. package/studio/server/api/http.ts +0 -45
  471. package/studio/server/api/project.ts +0 -57
  472. package/studio/server/api/schema.ts +0 -12
  473. package/studio/server/api/views.ts +0 -57
  474. package/studio/server/api/workspace.ts +0 -60
  475. package/studio/server/api-agent-loadout.test.ts +0 -69
  476. package/studio/server/api.test.ts +0 -147
  477. package/studio/server/api.ts +0 -34
  478. package/studio/server/cache.test.ts +0 -122
  479. package/studio/server/cache.ts +0 -303
  480. package/studio/server/cli-consumers.test.ts +0 -494
  481. package/studio/server/cli.test.ts +0 -88
  482. package/studio/server/cli.ts +0 -240
  483. package/studio/server/client-package.test.ts +0 -147
  484. package/studio/server/client-package.ts +0 -266
  485. package/studio/server/detect.ts +0 -81
  486. package/studio/server/domain.test.ts +0 -77
  487. package/studio/server/domain.ts +0 -124
  488. package/studio/server/environment/dotenv-preview.test.ts +0 -39
  489. package/studio/server/environment/dotenv-preview.ts +0 -27
  490. package/studio/server/environment/files.test.ts +0 -53
  491. package/studio/server/environment/files.ts +0 -120
  492. package/studio/server/handoff/copy.ts +0 -171
  493. package/studio/server/handoff/service.test.ts +0 -22
  494. package/studio/server/handoff/service.ts +0 -62
  495. package/studio/server/index.ts +0 -148
  496. package/studio/server/instances/active.ts +0 -72
  497. package/studio/server/instances/deploy-record.test.ts +0 -31
  498. package/studio/server/instances/deploy-record.ts +0 -37
  499. package/studio/server/instances/deploy.ts +0 -56
  500. package/studio/server/instances/probe.test.ts +0 -67
  501. package/studio/server/instances/probe.ts +0 -67
  502. package/studio/server/instances/status.test.ts +0 -12
  503. package/studio/server/instances/status.ts +0 -49
  504. package/studio/server/introspect/anatomy/client-tree.ts +0 -57
  505. package/studio/server/introspect/anatomy/env-fields.ts +0 -66
  506. package/studio/server/introspect/anatomy/schema-definition.ts +0 -53
  507. package/studio/server/introspect/anatomy/source.ts +0 -181
  508. package/studio/server/introspect/anatomy/views/routes.ts +0 -114
  509. package/studio/server/introspect/anatomy/views.ts +0 -53
  510. package/studio/server/introspect/anatomy-extras.test.ts +0 -265
  511. package/studio/server/introspect/anatomy-extras.ts +0 -10
  512. package/studio/server/introspect/anatomy.test.ts +0 -41
  513. package/studio/server/introspect/anatomy.ts +0 -147
  514. package/studio/server/introspect/bundle.ts +0 -69
  515. package/studio/server/introspect/canonical-schema.test.ts +0 -179
  516. package/studio/server/introspect/canonical-schema.ts +0 -583
  517. package/studio/server/introspect/config-preview.test.ts +0 -32
  518. package/studio/server/introspect/config-preview.ts +0 -119
  519. package/studio/server/introspect/core-extractor.ts +0 -30
  520. package/studio/server/introspect/core.ts +0 -45
  521. package/studio/server/introspect/diff.test.ts +0 -124
  522. package/studio/server/introspect/diff.ts +0 -316
  523. package/studio/server/introspect/extractor.ts +0 -41
  524. package/studio/server/introspect/hash.ts +0 -24
  525. package/studio/server/introspect/overlay-tsmorph.test.ts +0 -146
  526. package/studio/server/introspect/overlay-tsmorph.ts +0 -9
  527. package/studio/server/introspect/overlay.test.ts +0 -44
  528. package/studio/server/introspect/overlay.ts +0 -40
  529. package/studio/server/introspect/revision.test.ts +0 -54
  530. package/studio/server/introspect/revision.ts +0 -49
  531. package/studio/server/introspect/runtime.test.ts +0 -157
  532. package/studio/server/introspect/runtime.ts +0 -140
  533. package/studio/server/introspect/schema-ir-json.test.ts +0 -70
  534. package/studio/server/introspect/schema-ir-json.ts +0 -151
  535. package/studio/server/introspect/schema-refs.test.ts +0 -55
  536. package/studio/server/introspect/schema-refs.ts +0 -32
  537. package/studio/server/introspect/source-overlay/annotations.ts +0 -14
  538. package/studio/server/introspect/source-overlay/handlers.ts +0 -161
  539. package/studio/server/introspect/source-overlay/kernel-calls.ts +0 -46
  540. package/studio/server/introspect/source-overlay/project.ts +0 -248
  541. package/studio/server/introspect/source-overlay/spans.ts +0 -330
  542. package/studio/server/json.ts +0 -46
  543. package/studio/server/lifecycle.ts +0 -42
  544. package/studio/server/sse.test.ts +0 -26
  545. package/studio/server/sse.ts +0 -60
  546. package/studio/server/state/baseline.test.ts +0 -267
  547. package/studio/server/state/baseline.ts +0 -354
  548. package/studio/server/state/comments.test.ts +0 -94
  549. package/studio/server/state/comments.ts +0 -484
  550. package/studio/server/state/context.ts +0 -199
  551. package/studio/server/state/documents.ts +0 -111
  552. package/studio/server/state/integrations.ts +0 -81
  553. package/studio/server/state/layout.test.ts +0 -34
  554. package/studio/server/state/layout.ts +0 -82
  555. package/studio/server/state/settings.test.ts +0 -78
  556. package/studio/server/state/settings.ts +0 -73
  557. package/studio/server/state/store.test.ts +0 -122
  558. package/studio/server/state/store.ts +0 -146
  559. package/studio/server/state/visibility.ts +0 -48
  560. package/studio/server/views/model.test.ts +0 -57
  561. package/studio/server/views/model.ts +0 -66
  562. package/studio/server/views/runtime.ts +0 -40
  563. package/studio/server/views/selection-repository.test.ts +0 -31
  564. package/studio/server/views/selection-repository.ts +0 -60
  565. package/studio/server/views/session.test.ts +0 -73
  566. package/studio/server/views/session.ts +0 -166
  567. package/studio/server/views/target.test.ts +0 -78
  568. package/studio/server/views/target.ts +0 -222
  569. package/studio/server/watch.test.ts +0 -36
  570. package/studio/server/watch.ts +0 -93
  571. package/studio/server/workspace/catalog.test.ts +0 -17
  572. package/studio/server/workspace/catalog.ts +0 -43
  573. package/studio/server/workspace/create.test.ts +0 -37
  574. package/studio/server/workspace/create.ts +0 -162
  575. package/studio/server/workspace/git.ts +0 -75
  576. package/studio/server/workspace/updates.ts +0 -83
  577. package/studio/server/workspace-state.ts +0 -26
  578. package/studio/server/workspace-watch.ts +0 -106
  579. package/studio/shared/agent-effort.test.ts +0 -12
  580. package/studio/shared/agent-effort.ts +0 -15
  581. package/studio/shared/agent-models.test.ts +0 -9
  582. package/studio/shared/agent-models.ts +0 -14
  583. package/studio/shared/contracts/README.md +0 -16
  584. package/studio/shared/contracts/agent.ts +0 -270
  585. package/studio/shared/contracts/runtime.ts +0 -50
  586. package/studio/shared/contracts/schema.ts +0 -393
  587. package/studio/shared/contracts/surface.test.ts +0 -317
  588. package/studio/shared/contracts/workspace.ts +0 -265
  589. package/studio/shared/layout.test.ts +0 -116
  590. package/studio/shared/schema/identity.test.ts +0 -34
  591. package/studio/shared/schema/identity.ts +0 -68
  592. package/studio/shared/settings-values.test.ts +0 -18
  593. package/studio/shared/settings-values.ts +0 -20
  594. package/studio/shared/types.ts +0 -14
  595. package/studio/tsconfig.json +0 -23
  596. package/tsconfig.json +0 -14
  597. package/viewer/dist/index.html +0 -93
  598. package/viewer/dist/main.js +0 -76
  599. package/viewer/tsconfig.json +0 -13
@@ -1,583 +0,0 @@
1
- /**
2
- * Pure projection from an SDK-admitted portable DomainSchema into Studio's
3
- * intentionally lossy render model. The extractor calls the authored Domain's
4
- * own installed SDK for admission before this module interprets the document.
5
- */
6
- import type {
7
- IrCallableAuth,
8
- IrCallableOutput,
9
- IrClass,
10
- IrClassKey,
11
- IrClassRef,
12
- IrEndpoint,
13
- IrFunction,
14
- IrImportDescriptor,
15
- IrMethod,
16
- IrSchemaRef,
17
- IrView,
18
- JsonSchema,
19
- SchemaIR,
20
- StudioCore,
21
- } from '../../shared/types'
22
-
23
- import { classRefKey, isIrClassRef, schemaRefKey } from '../../shared/schema/identity'
24
- import { isSchemaRevision } from '../../shared/types'
25
-
26
- type AnyRecord = Record<string, unknown>
27
-
28
- export type CanonicalDomainSchemaV1 = AnyRecord & {
29
- readonly format: 'astrale.dsl'
30
- readonly version: 'v1'
31
- readonly origin: string
32
- }
33
-
34
- export interface CanonicalSchemaProjection {
35
- readonly ir: SchemaIR
36
- }
37
-
38
- export type CanonicalSchemaAdmission =
39
- | {
40
- readonly status: 'admitted'
41
- readonly root: CanonicalDomainSchemaV1
42
- readonly closure: CanonicalDomainSchemaV1[]
43
- readonly revision: `sha256:${string}`
44
- }
45
- | {
46
- readonly status: 'preview'
47
- readonly root: CanonicalDomainSchemaV1
48
- readonly closure: CanonicalDomainSchemaV1[]
49
- readonly revision: null
50
- }
51
-
52
- export function isCanonicalDomainSchemaV1(value: unknown): value is CanonicalDomainSchemaV1 {
53
- const candidate = asRecord(value)
54
- return (
55
- candidate?.format === 'astrale.dsl' &&
56
- candidate.version === 'v1' &&
57
- typeof candidate.origin === 'string' &&
58
- candidate.origin.length > 0
59
- )
60
- }
61
-
62
- /** Find a directly exported V1 root, preferring the conventional `schema`. */
63
- export function findCanonicalDomainSchemaExport(
64
- moduleExports: Record<string, unknown>,
65
- ): CanonicalDomainSchemaV1 | null {
66
- if (isCanonicalDomainSchemaV1(moduleExports.schema)) return moduleExports.schema
67
- if (isCanonicalDomainSchemaV1(moduleExports.default)) return moduleExports.default
68
- return (
69
- Object.entries(moduleExports)
70
- .filter((entry): entry is [string, CanonicalDomainSchemaV1] =>
71
- isCanonicalDomainSchemaV1(entry[1]),
72
- )
73
- .sort(([left], [right]) => left.localeCompare(right))[0]?.[1] ?? null
74
- )
75
- }
76
-
77
- /** Read the exact retained dependency closure through the authored SDK. */
78
- export function closureFromSdk(
79
- sdkModule: Record<string, unknown>,
80
- root: CanonicalDomainSchemaV1,
81
- ): CanonicalDomainSchemaV1[] {
82
- const create = asRecord(sdkModule.bundle)?.create
83
- if (typeof create !== 'function') return []
84
- try {
85
- const candidate = asRecord(Reflect.apply(create, undefined, [root]))
86
- if (candidate?.root !== root) return []
87
- return admitClosure(candidate.closure, root) ?? []
88
- } catch {
89
- return []
90
- }
91
- }
92
-
93
- /** Re-admit one portable root and prove its revision through the authored SDK. */
94
- export function admitCanonicalSchemaFromSdk(
95
- sdkModule: Record<string, unknown>,
96
- candidate: CanonicalDomainSchemaV1,
97
- ): CanonicalSchemaAdmission {
98
- const retainedClosure = closureFromSdk(sdkModule, candidate)
99
- const schemaApi = asRecord(sdkModule.schema)
100
- const accept = schemaApi?.accept
101
- const revision = schemaApi?.revision
102
- const resolve = schemaApi?.resolve
103
- if (
104
- typeof accept !== 'function' ||
105
- typeof revision !== 'function' ||
106
- typeof resolve !== 'function'
107
- ) {
108
- return { status: 'preview', root: candidate, closure: retainedClosure, revision: null }
109
- }
110
-
111
- try {
112
- const revisions = new Map<string, string>()
113
- for (const dependency of retainedClosure) {
114
- const value = Reflect.apply(revision, schemaApi, [dependency])
115
- if (!isSchemaRevision(value)) throw new TypeError('SDK returned an invalid revision.')
116
- revisions.set(dependency.origin, value)
117
- }
118
- const lookup = {
119
- get(origin: string, expected: string): CanonicalDomainSchemaV1 | undefined {
120
- const dependency = retainedClosure.find((entry) => entry.origin === origin)
121
- return dependency && revisions.get(origin) === expected ? dependency : undefined
122
- },
123
- }
124
- const accepted = Reflect.apply(accept, schemaApi, [candidate, lookup])
125
- if (!isCanonicalDomainSchemaV1(accepted) || accepted.origin !== candidate.origin) {
126
- throw new TypeError('SDK admission returned another root.')
127
- }
128
- const acceptedRevision = Reflect.apply(revision, schemaApi, [accepted])
129
- if (!isSchemaRevision(acceptedRevision))
130
- throw new TypeError('SDK returned an invalid revision.')
131
- const domain = asRecord(Reflect.apply(resolve, schemaApi, [accepted]))
132
- if (domain?.source !== accepted || domain.origin !== accepted.origin) {
133
- throw new TypeError('SDK resolution did not retain the admitted root.')
134
- }
135
- const closure = closureFromSdk(sdkModule, accepted)
136
- return { status: 'admitted', root: accepted, closure, revision: acceptedRevision }
137
- } catch {
138
- return { status: 'preview', root: candidate, closure: retainedClosure, revision: null }
139
- }
140
- }
141
-
142
- export function projectCanonicalSchema(
143
- root: CanonicalDomainSchemaV1,
144
- closure: readonly CanonicalDomainSchemaV1[] = [],
145
- ): CanonicalSchemaProjection {
146
- const origin = root.origin
147
- const classes = Object.fromEntries(
148
- entriesOf(root.classes).map(([name, declaration]) => [
149
- name,
150
- projectClass(origin, name, declaration),
151
- ]),
152
- )
153
- const functions = Object.fromEntries(
154
- entriesOf(root.functions).map(([name, declaration]) => [
155
- name,
156
- projectFunction(name, declaration),
157
- ]),
158
- )
159
- const views = Object.fromEntries(
160
- entriesOf(root.views).map(([name, declaration]) => [name, projectView(name, declaration)]),
161
- )
162
- const schemas = new Map(
163
- closure.filter(isCanonicalDomainSchemaV1).map((value) => [value.origin, value]),
164
- )
165
- const importsByKey = {} as Record<IrClassKey, IrImportDescriptor>
166
- const importedClassesByKey = {} as Record<IrClassKey, IrClass>
167
- const pending = collectClassRefs(root)
168
- const visited = new Set<string>()
169
-
170
- for (let index = 0; index < pending.length; index += 1) {
171
- const ref = pending[index]
172
- if (ref.origin === origin) continue
173
- const key = classRefKey(ref)
174
- if (visited.has(key)) continue
175
- visited.add(key)
176
- importsByKey[key] = { origin: ref.origin, ref, key }
177
- const owner = schemas.get(ref.origin)
178
- const declaration = asRecord(asRecord(owner?.classes)?.[ref.name])
179
- if (owner === undefined || declaration === null) continue
180
- importedClassesByKey[key] = projectClass(owner.origin, ref.name, declaration)
181
- pending.push(...collectClassRefsFromClass(declaration))
182
- }
183
-
184
- const dependencies = arrayOf(root.dependencies).flatMap((value) => {
185
- const dependency = asRecord(value)
186
- return typeof dependency?.origin === 'string' && typeof dependency.revision === 'string'
187
- ? [{ origin: dependency.origin, revision: dependency.revision }]
188
- : []
189
- })
190
-
191
- return {
192
- ir: {
193
- format: 'astrale.dsl',
194
- version: 'v1',
195
- domain: origin,
196
- classes,
197
- importsByKey,
198
- importedClassesByKey,
199
- functions,
200
- views,
201
- policies: recordCopy(root.policies),
202
- dependencies,
203
- core: jsonCopy(root.core),
204
- },
205
- }
206
- }
207
-
208
- /** Project canonical Core data without importing Application or Runtime modules. */
209
- export function projectCanonicalCore(
210
- root: CanonicalDomainSchemaV1,
211
- ): Pick<StudioCore, 'domain' | 'nodes' | 'edges'> {
212
- const core = asRecord(root.core) ?? {}
213
- const nodes = entriesOf(core.nodes).map(([slug, raw]) => {
214
- const node = asRecord(raw) ?? {}
215
- const selectedClass = classRef(node.class)
216
- return {
217
- path: corePath({ origin: root.origin, name: slug }),
218
- className: selectedClass?.name ?? '?',
219
- data: recordCopy(node.properties),
220
- }
221
- })
222
- const edges = arrayOf(core.edges).map((raw) => {
223
- const edge = asRecord(raw) ?? {}
224
- return {
225
- from: coreEndpoint(edge.source, root.origin),
226
- to: coreEndpoint(edge.target, root.origin),
227
- edgeName: classRef(edge.class)?.name ?? '?',
228
- ...(edge.properties === undefined ? {} : { data: recordCopy(edge.properties) }),
229
- }
230
- })
231
- return { domain: root.origin, nodes, edges }
232
- }
233
-
234
- function projectClass(origin: string, name: string, value: unknown): IrClass {
235
- const declaration = asRecord(value) ?? {}
236
- const kind = declaration.kind === 'edge' ? 'edge' : 'node'
237
- const extendsRefs = refsOf(declaration.extends)
238
- const propertyEntries = entriesOf(declaration.properties)
239
- const properties = Object.fromEntries(
240
- propertyEntries.map(([propertyName, raw]) => [
241
- propertyName,
242
- studioSchema(asRecord(raw)?.schema),
243
- ]),
244
- )
245
- const required = propertyEntries.flatMap(([propertyName, raw]) =>
246
- asRecord(raw)?.required === true ? [propertyName] : [],
247
- )
248
- const propertyMetadata = Object.fromEntries(
249
- propertyEntries.map(([propertyName, raw]) => {
250
- const member = { ...(asRecord(raw) ?? {}) }
251
- delete member.schema
252
- return [propertyName, jsonCopy(member)]
253
- }),
254
- )
255
- const policies = Object.fromEntries(
256
- entriesOf(declaration.policies).flatMap(([policyName, raw]) => {
257
- const ref = definitionRefOf(raw)
258
- return ref ? [[policyName, ref]] : []
259
- }),
260
- )
261
- return {
262
- type: kind,
263
- name,
264
- origin,
265
- ref: { origin, kind: 'class', name },
266
- extends: extendsRefs.map((ref) => ref.name),
267
- extendsRefs,
268
- properties,
269
- required,
270
- methods: projectMethods(declaration.methods),
271
- ...(kind === 'edge' ? edgeFields(declaration) : {}),
272
- ...(typeof declaration.description === 'string'
273
- ? { description: declaration.description }
274
- : {}),
275
- ...(Object.keys(propertyMetadata).length === 0 ? {} : { propertyMetadata }),
276
- ...(dataDeclaration(declaration.data) ? { data: dataDeclaration(declaration.data) } : {}),
277
- ...(Object.keys(policies).length === 0 ? {} : { policies }),
278
- }
279
- }
280
-
281
- function projectMethods(value: unknown): Record<string, IrMethod> {
282
- return Object.fromEntries(
283
- entriesOf(value).map(([name, raw]) => {
284
- const declaration = asRecord(raw) ?? {}
285
- const inheritance =
286
- declaration.inheritance === 'abstract' || declaration.inheritance === 'sealed'
287
- ? declaration.inheritance
288
- : 'default'
289
- return [
290
- name,
291
- {
292
- ...projectCallable(name, declaration),
293
- static: declaration.static === true,
294
- inheritance,
295
- } satisfies IrMethod,
296
- ]
297
- }),
298
- )
299
- }
300
-
301
- function projectFunction(name: string, value: unknown): IrFunction {
302
- return projectCallable(name, value)
303
- }
304
-
305
- function projectCallable(name: string, value: unknown): IrFunction {
306
- const declaration = asRecord(value) ?? {}
307
- const input = studioSchema(declaration.input)
308
- const output = callableOutput(declaration.output)
309
- const auth = callableAuth(declaration.auth)
310
- return {
311
- name,
312
- input,
313
- output,
314
- ...(typeof declaration.description === 'string'
315
- ? { description: declaration.description }
316
- : {}),
317
- ...(auth === undefined ? {} : { auth }),
318
- ...(declaration.policy === undefined ? {} : { policy: jsonCopy(declaration.policy) }),
319
- }
320
- }
321
-
322
- function projectView(name: string, value: unknown): IrView {
323
- const declaration = asRecord(value) ?? {}
324
- const target = asRecord(declaration.target)
325
- return {
326
- name,
327
- target:
328
- target?.kind === 'definition'
329
- ? { kind: 'definition', definitions: refsOf(target.definitions) }
330
- : { kind: 'domain' },
331
- auth:
332
- declaration.auth === 'optional' || declaration.auth === 'public'
333
- ? declaration.auth
334
- : 'required',
335
- ...(typeof declaration.description === 'string'
336
- ? { description: declaration.description }
337
- : {}),
338
- }
339
- }
340
-
341
- function edgeFields(
342
- declaration: AnyRecord,
343
- ): Pick<IrClass, 'endpoints' | 'orientation' | 'constraints'> {
344
- const orientation = declaration.orientation === 'undirected' ? 'undirected' : 'directed'
345
- const endpoints = asRecord(declaration.endpoints)
346
- const projected =
347
- orientation === 'undirected'
348
- ? arrayOf(declaration.endpoints).map((endpoint) => projectEndpoint(endpoint, 'incident'))
349
- : [
350
- projectEndpoint(endpoints?.source, 'outgoing'),
351
- projectEndpoint(endpoints?.target, 'incoming'),
352
- ]
353
- const constraints = asRecord(declaration.constraints)
354
- return {
355
- endpoints: projected,
356
- orientation,
357
- constraints: {
358
- ...(constraints?.noSelf === true ? { noSelf: true } : {}),
359
- ...(constraints?.acyclic === true ? { acyclic: true } : {}),
360
- },
361
- }
362
- }
363
-
364
- function projectEndpoint(
365
- value: unknown,
366
- cardinality: 'outgoing' | 'incoming' | 'incident',
367
- ): IrEndpoint {
368
- const endpoint = asRecord(value) ?? {}
369
- const refs = refsOf(endpoint.accepts)
370
- const count = edgeCount(endpoint[cardinality])
371
- return {
372
- name: typeof endpoint.role === 'string' ? endpoint.role : '',
373
- types: refs.map((ref) => ref.name),
374
- refs,
375
- ...(count === undefined ? {} : { cardinality: count }),
376
- }
377
- }
378
-
379
- function edgeCount(value: unknown): IrEndpoint['cardinality'] | undefined {
380
- if (value === '0..*') return { min: 0, max: null }
381
- if (value === '1..*') return { min: 1, max: null }
382
- if (value === '0..1') return { min: 0, max: 1 }
383
- if (value === '1') return { min: 1, max: 1 }
384
- return undefined
385
- }
386
-
387
- function collectClassRefs(root: CanonicalDomainSchemaV1): IrClassRef[] {
388
- const refs: IrClassRef[] = []
389
- for (const [, declaration] of entriesOf(root.classes)) {
390
- refs.push(...collectClassRefsFromClass(declaration))
391
- }
392
- for (const [, callable] of entriesOf(root.functions)) collectCallableRefs(callable, refs)
393
- for (const [, view] of entriesOf(root.views)) {
394
- refs.push(...refsOf(asRecord(asRecord(view)?.target)?.definitions))
395
- }
396
- const core = asRecord(root.core)
397
- for (const [, node] of entriesOf(core?.nodes)) addClassRef(asRecord(node)?.class, refs)
398
- for (const edge of arrayOf(core?.edges)) {
399
- const declaration = asRecord(edge)
400
- addClassRef(declaration?.class, refs)
401
- }
402
- for (const [, policy] of entriesOf(root.policies)) collectPolicyRefs(policy, refs)
403
- return uniqueClassRefs(refs)
404
- }
405
-
406
- function collectClassRefsFromClass(value: unknown): IrClassRef[] {
407
- const declaration = asRecord(value) ?? {}
408
- const refs = [...refsOf(declaration.extends)]
409
- const endpoints = asRecord(declaration.endpoints)
410
- for (const endpoint of [
411
- endpoints?.source,
412
- endpoints?.target,
413
- ...arrayOf(declaration.endpoints),
414
- ]) {
415
- refs.push(...refsOf(asRecord(endpoint)?.accepts))
416
- }
417
- for (const [, property] of entriesOf(declaration.properties)) {
418
- collectPathSchemaRefs(asRecord(property)?.schema, refs)
419
- }
420
- for (const [, callable] of entriesOf(declaration.methods)) collectCallableRefs(callable, refs)
421
- for (const [, policy] of entriesOf(declaration.policies)) collectPolicyRefs(policy, refs)
422
- return uniqueClassRefs(refs)
423
- }
424
-
425
- function collectCallableRefs(value: unknown, refs: IrClassRef[]): void {
426
- const callable = asRecord(value)
427
- if (callable === null) return
428
- collectPathSchemaRefs(callable.input, refs)
429
- const output = asRecord(callable.output)
430
- collectPathSchemaRefs(output?.schema ?? output?.item, refs)
431
- collectPolicyRefs(callable.policy, refs)
432
- }
433
-
434
- function collectPathSchemaRefs(value: unknown, refs: IrClassRef[]): void {
435
- if (Array.isArray(value)) {
436
- for (const item of value) collectPathSchemaRefs(item, refs)
437
- return
438
- }
439
- const object = asRecord(value)
440
- if (object === null) return
441
- const annotation = asRecord(object['x-astrale-path'])
442
- refs.push(...refsOf(annotation?.accepts))
443
- for (const [key, child] of Object.entries(object)) {
444
- if (key === 'const' || key === 'enum' || key === 'default' || key === 'examples') continue
445
- collectPathSchemaRefs(child, refs)
446
- }
447
- }
448
-
449
- function collectPolicyRefs(value: unknown, refs: IrClassRef[]): void {
450
- if (Array.isArray(value)) {
451
- for (const item of value) collectPolicyRefs(item, refs)
452
- return
453
- }
454
- const object = asRecord(value)
455
- if (object === null) return
456
- addClassRef(object.class, refs)
457
- for (const child of Object.values(object)) collectPolicyRefs(child, refs)
458
- }
459
-
460
- function addClassRef(value: unknown, refs: IrClassRef[]): void {
461
- const ref = classRef(value)
462
- if (ref !== null) refs.push(ref)
463
- }
464
-
465
- function refsOf(value: unknown): IrClassRef[] {
466
- return arrayOf(value)
467
- .map(classRef)
468
- .filter((ref): ref is IrClassRef => ref !== null)
469
- }
470
-
471
- function classRef(value: unknown): IrClassRef | null {
472
- const ref = definitionRefOf(value)
473
- return ref !== null && isIrClassRef(ref) ? ref : null
474
- }
475
-
476
- function definitionRefOf(value: unknown): IrSchemaRef | null {
477
- const ref = asRecord(value)
478
- if (typeof ref?.origin !== 'string' || typeof ref.name !== 'string') return null
479
- if (
480
- ref.kind !== 'class' &&
481
- ref.kind !== 'function' &&
482
- ref.kind !== 'policy' &&
483
- ref.kind !== 'view' &&
484
- ref.kind !== 'core'
485
- ) {
486
- return null
487
- }
488
- return { origin: ref.origin, kind: ref.kind, name: ref.name }
489
- }
490
-
491
- function uniqueClassRefs(refs: readonly IrClassRef[]): IrClassRef[] {
492
- const seen = new Set<string>()
493
- return refs.filter((ref) => {
494
- const key = classRefKey(ref)
495
- if (seen.has(key)) return false
496
- seen.add(key)
497
- return true
498
- })
499
- }
500
-
501
- function callableOutput(value: unknown): IrCallableOutput {
502
- const output = asRecord(value)
503
- if (output?.mode === 'stream') return { mode: 'stream', item: studioSchema(output.item) }
504
- if (output?.mode === 'binary') return { mode: 'binary' }
505
- return { mode: 'value', schema: studioSchema(output?.schema) }
506
- }
507
-
508
- function callableAuth(value: unknown): IrCallableAuth | undefined {
509
- return value === 'anonymous' || value === 'authenticated' || value === 'authorized'
510
- ? value
511
- : undefined
512
- }
513
-
514
- function dataDeclaration(
515
- value: unknown,
516
- ): { mediaType: string; [key: string]: unknown } | undefined {
517
- const data = asRecord(value)
518
- return typeof data?.mediaType === 'string'
519
- ? (jsonCopy(data) as { mediaType: string; [key: string]: unknown })
520
- : undefined
521
- }
522
-
523
- function coreEndpoint(value: unknown, rootOrigin: string): string {
524
- const endpoint = asRecord(value)
525
- if (endpoint?.kind === 'domain' && typeof endpoint.origin === 'string') {
526
- return `/:${endpoint.origin}`
527
- }
528
- const ref = definitionRefOf(value)
529
- return ref?.kind === 'core' ? corePath(ref) : `/:${rootOrigin}`
530
- }
531
-
532
- function corePath(ref: Pick<IrSchemaRef, 'origin' | 'name'>): string {
533
- return `/:${ref.origin}:core.${ref.name}`
534
- }
535
-
536
- function admitClosure(
537
- value: unknown,
538
- root: CanonicalDomainSchemaV1,
539
- ): CanonicalDomainSchemaV1[] | null {
540
- if (!Array.isArray(value)) return null
541
- const closure: CanonicalDomainSchemaV1[] = []
542
- const origins = new Set<string>()
543
- for (const candidate of value) {
544
- if (!isCanonicalDomainSchemaV1(candidate) || candidate.origin === root.origin) return null
545
- if (origins.has(candidate.origin)) return null
546
- origins.add(candidate.origin)
547
- closure.push(candidate)
548
- }
549
- return closure
550
- }
551
-
552
- function studioSchema(value: unknown): JsonSchema {
553
- if (value === true) return {}
554
- if (value === false) return { not: {} }
555
- return (jsonCopy(asRecord(value) ?? {}) ?? {}) as JsonSchema
556
- }
557
-
558
- function recordCopy(value: unknown): Record<string, unknown> {
559
- const record = asRecord(value)
560
- return record === null ? {} : (jsonCopy(record) as Record<string, unknown>)
561
- }
562
-
563
- function jsonCopy(value: unknown): any {
564
- if (Array.isArray(value)) return value.map(jsonCopy)
565
- const record = asRecord(value)
566
- return record === null
567
- ? value
568
- : Object.fromEntries(Object.entries(record).map(([key, item]) => [key, jsonCopy(item)]))
569
- }
570
-
571
- function entriesOf(value: unknown): [string, unknown][] {
572
- return Object.entries(asRecord(value) ?? {})
573
- }
574
-
575
- function arrayOf(value: unknown): unknown[] {
576
- return Array.isArray(value) ? value : []
577
- }
578
-
579
- function asRecord(value: unknown): AnyRecord | null {
580
- return value !== null && typeof value === 'object' && !Array.isArray(value)
581
- ? (value as AnyRecord)
582
- : null
583
- }
@@ -1,32 +0,0 @@
1
- import { expect, test } from 'bun:test'
2
-
3
- import { parseConfigPreview } from './config-preview'
4
-
5
- test('config preview ignores examples in comments and preserves URL literals', () => {
6
- const preview = parseConfigPreview(`
7
- // cloudflare({ prod: { route: 'commented.invalid', secrets: '.env.fake' } })
8
- /* astrale({ prod: { instance: 'commented-instance' } }) */
9
- export default deploy(domain, cloudflare({
10
- dev: { client: { dir: 'client' }, secrets: '.env.dev' },
11
- prod: {
12
- client: { dir: 'client' },
13
- route: 'https://services.example.dev/path',
14
- secrets: '.env.prod',
15
- },
16
- }))
17
- `)
18
-
19
- expect(preview).toEqual({
20
- adapter: 'cloudflare',
21
- prodTarget: 'route: https://services.example.dev/path',
22
- devSecrets: '.env.dev',
23
- configuredSecretFiles: ['.env.dev', '.env.prod'],
24
- })
25
- })
26
-
27
- test('config preview reports dynamic configuration as unknown instead of inventing authority', () => {
28
- expect(parseConfigPreview(`export default makeDeployment(domain)`)).toEqual({
29
- adapter: 'unknown',
30
- configuredSecretFiles: [],
31
- })
32
- })