@astrale-os/cli 1.0.0-beta.3 → 1.0.0-beta.30

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 (343) hide show
  1. package/README.md +80 -6
  2. package/dist/astrale.js +55471 -58674
  3. package/dist/public/connect-core.js +2158 -30706
  4. package/dist/public/keys/index.js +1016 -29541
  5. package/dist/public/paths/index.js +370 -28654
  6. package/dist/types/admin/contract.d.ts +26 -0
  7. package/dist/types/admin/instance/client.d.ts +20 -0
  8. package/dist/types/admin/instance/index.d.ts +2 -0
  9. package/dist/types/admin/instance/model.d.ts +6 -10
  10. package/dist/types/connection/auth.d.ts +3 -0
  11. package/dist/types/connection/call.d.ts +3 -0
  12. package/dist/types/connection/command.d.ts +27 -0
  13. package/dist/types/connection/credential.d.ts +14 -0
  14. package/dist/types/connection/errors.d.ts +1 -0
  15. package/dist/types/connection/exchange.d.ts +9 -0
  16. package/dist/types/connection/failure/classify.d.ts +2 -0
  17. package/dist/types/connection/failure/index.d.ts +5 -0
  18. package/dist/types/connection/failure/model.d.ts +25 -0
  19. package/dist/types/connection/failure/render.d.ts +3 -0
  20. package/dist/types/connection/index.d.ts +8 -0
  21. package/dist/types/connection/reasons.d.ts +37 -0
  22. package/dist/types/connection/self.d.ts +37 -0
  23. package/dist/types/connection/session.d.ts +31 -0
  24. package/dist/types/connection/target.d.ts +38 -0
  25. package/dist/types/errors.d.ts +1 -1
  26. package/dist/types/lib/admin-instance.d.ts +17 -0
  27. package/dist/types/lib/admin-target.d.ts +11 -36
  28. package/dist/types/lib/config.d.ts +13 -59
  29. package/dist/types/lib/failure-debug.d.ts +1 -0
  30. package/dist/types/lib/idp.d.ts +25 -173
  31. package/dist/types/lib/instance-target.d.ts +1 -1
  32. package/dist/types/lib/instance.d.ts +30 -88
  33. package/dist/types/lib/log.d.ts +5 -3
  34. package/dist/types/lib/output.d.ts +1 -1
  35. package/dist/types/lib/proc.d.ts +43 -0
  36. package/dist/types/lib/self.d.ts +9 -0
  37. package/dist/types/lib/update.d.ts +109 -0
  38. package/dist/types/lib/validation.d.ts +4 -1
  39. package/dist/types/state/exchange-credentials.d.ts +6 -2
  40. package/dist/types/state/files.d.ts +2 -0
  41. package/dist/types/state/index.d.ts +3 -2
  42. package/dist/types/state/paths.d.ts +2 -0
  43. package/dist/types/state/session-routes.d.ts +10 -0
  44. package/package.json +16 -19
  45. package/src/__tests__/fixtures/publication.ts +20 -0
  46. package/src/admin/.spec/architecture.md +12 -5
  47. package/src/admin/__tests__/fixture.ts +25 -0
  48. package/src/admin/catalog/.spec/api.d.ts +1 -3
  49. package/src/admin/catalog/.spec/architecture.md +5 -4
  50. package/src/admin/catalog/__tests__/client.test.ts +143 -69
  51. package/src/admin/catalog/client.ts +40 -54
  52. package/src/admin/catalog/model.ts +3 -4
  53. package/src/admin/contract.ts +47 -0
  54. package/src/admin/graph/.spec/api.d.ts +4 -10
  55. package/src/admin/graph/nodes.ts +1 -1
  56. package/src/admin/instance/.spec/api.d.ts +5 -9
  57. package/src/admin/instance/.spec/architecture.md +7 -7
  58. package/src/admin/instance/__tests__/client.test.ts +157 -175
  59. package/src/admin/instance/client.ts +39 -128
  60. package/src/admin/instance/index.ts +1 -2
  61. package/src/admin/instance/model.ts +12 -18
  62. package/src/commands/__tests__/admin-instance.test.ts +11 -8
  63. package/src/commands/__tests__/call-describe.test.ts +46 -33
  64. package/src/commands/__tests__/call.test.ts +34 -0
  65. package/src/commands/__tests__/domain-install-operation.test.ts +30 -22
  66. package/src/commands/__tests__/domain-install-owned.test.ts +1 -1
  67. package/src/commands/__tests__/domain-list.test.ts +5 -25
  68. package/src/commands/__tests__/install-direct.test.ts +115 -8
  69. package/src/commands/__tests__/install-identity-override.test.ts +6 -17
  70. package/src/commands/__tests__/instance-list-rows.test.ts +1 -1
  71. package/src/commands/__tests__/instance-status.test.ts +139 -0
  72. package/src/commands/__tests__/introspect-parse.test.ts +80 -1
  73. package/src/commands/__tests__/logs.test.ts +250 -2
  74. package/src/commands/__tests__/read-commands.test.ts +118 -10
  75. package/src/commands/__tests__/token-ttl.test.ts +49 -4
  76. package/src/commands/__tests__/update.test.ts +25 -3
  77. package/src/commands/__tests__/view.test.ts +50 -2
  78. package/src/commands/auth/logout.ts +2 -1
  79. package/src/commands/browser.ts +29 -0
  80. package/src/commands/call-describe.ts +60 -68
  81. package/src/commands/call.ts +71 -59
  82. package/src/commands/domain/install.ts +73 -46
  83. package/src/commands/domain/list.ts +1 -1
  84. package/src/commands/domain/publish.ts +14 -11
  85. package/src/commands/domain/uninstall.ts +2 -2
  86. package/src/commands/get.ts +15 -16
  87. package/src/commands/identity/__tests__/register.test.ts +3 -3
  88. package/src/commands/identity/register.ts +8 -8
  89. package/src/commands/instance/create.ts +8 -16
  90. package/src/commands/instance/delete.ts +12 -9
  91. package/src/commands/instance/list.ts +2 -2
  92. package/src/commands/instance/status.ts +66 -20
  93. package/src/commands/instance/use.ts +16 -12
  94. package/src/commands/introspect.ts +53 -41
  95. package/src/commands/logs.ts +123 -36
  96. package/src/commands/mutate.ts +6 -5
  97. package/src/commands/query.ts +35 -32
  98. package/src/commands/session/analyze.ts +26 -4
  99. package/src/commands/token.ts +42 -27
  100. package/src/commands/ui/__tests__/commands.test.ts +152 -0
  101. package/src/commands/ui/add.ts +51 -0
  102. package/src/commands/ui/doctor.ts +21 -0
  103. package/src/commands/ui/init.ts +38 -0
  104. package/src/commands/ui/list.ts +26 -0
  105. package/src/commands/ui/preset-apply.ts +19 -0
  106. package/src/commands/ui/preset-list.ts +12 -0
  107. package/src/commands/ui/shared.ts +25 -0
  108. package/src/commands/update.ts +89 -48
  109. package/src/commands/view.ts +82 -37
  110. package/src/connection/.spec/api.d.ts +7 -8
  111. package/src/connection/.spec/architecture.md +14 -5
  112. package/src/connection/.spec/flows/session.ts +2 -2
  113. package/src/connection/.spec/laws/connection.ts +6 -2
  114. package/src/connection/.spec/layout.ts +1 -0
  115. package/src/connection/__tests__/auth.test.ts +1 -0
  116. package/src/connection/__tests__/credential.test.ts +21 -1
  117. package/src/connection/__tests__/errors.test.ts +27 -20
  118. package/src/connection/__tests__/exchange.test.ts +64 -11
  119. package/src/connection/__tests__/failure-fixtures.ts +39 -0
  120. package/src/connection/__tests__/failure-safety.test.ts +75 -0
  121. package/src/connection/__tests__/self.test.ts +31 -11
  122. package/src/connection/__tests__/session.test.ts +8 -4
  123. package/src/connection/__tests__/target.test.ts +2 -0
  124. package/src/connection/auth.ts +13 -0
  125. package/src/connection/call.ts +1 -1
  126. package/src/connection/credential.ts +2 -2
  127. package/src/connection/errors.ts +1 -355
  128. package/src/connection/exchange.ts +110 -61
  129. package/src/connection/failure/classify.ts +110 -0
  130. package/src/connection/failure/index.ts +18 -0
  131. package/src/connection/failure/model.ts +28 -0
  132. package/src/connection/failure/render.ts +116 -0
  133. package/src/connection/reasons.ts +16 -0
  134. package/src/connection/self.ts +39 -21
  135. package/src/connection/session.ts +27 -9
  136. package/src/errors.ts +3 -2
  137. package/src/graph/.spec/api.d.ts +12 -5
  138. package/src/graph/.spec/layout.ts +9 -1
  139. package/src/graph/__tests__/mutation.test.ts +2 -2
  140. package/src/graph/__tests__/query.test.ts +25 -6
  141. package/src/graph/class.ts +30 -0
  142. package/src/graph/index.ts +1 -0
  143. package/src/graph/query.ts +21 -32
  144. package/src/identity/.spec/api.d.ts +2 -2
  145. package/src/identity/__tests__/fixtures/registry-journey.ts +13 -1
  146. package/src/identity/__tests__/registration.test.ts +1 -1
  147. package/src/identity/__tests__/registry.test.ts +4 -0
  148. package/src/identity/registration.ts +3 -3
  149. package/src/identity/registry.ts +2 -0
  150. package/src/keys/__tests__/keys.test.ts +4 -0
  151. package/src/keys/credential.ts +1 -0
  152. package/src/lib/__tests__/admin-target.test.ts +12 -0
  153. package/src/lib/__tests__/binary.test.ts +16 -1
  154. package/src/lib/__tests__/browser-retention.test.ts +212 -0
  155. package/src/lib/__tests__/command-dx.test.ts +1 -1
  156. package/src/lib/__tests__/config.test.ts +27 -0
  157. package/src/lib/__tests__/domain-publication.test.ts +10 -16
  158. package/src/lib/__tests__/idp.test.ts +34 -4
  159. package/src/lib/__tests__/instance-candidates.test.ts +1 -3
  160. package/src/lib/__tests__/instance-target.test.ts +7 -39
  161. package/src/lib/__tests__/log-errors.test.ts +64 -0
  162. package/src/lib/__tests__/skills.test.ts +809 -0
  163. package/src/lib/__tests__/studio-server-deps.test.ts +1 -1
  164. package/src/lib/__tests__/update.test.ts +264 -11
  165. package/src/lib/__tests__/view-assets.test.ts +25 -0
  166. package/src/lib/__tests__/view-external-open-intent.test.ts +150 -0
  167. package/src/lib/__tests__/view-external-open-origins.test.ts +27 -0
  168. package/src/lib/__tests__/view-open-intent.test.ts +0 -2
  169. package/src/lib/__tests__/view-server.test.ts +26 -3
  170. package/src/lib/__tests__/view-session.test.ts +2 -1
  171. package/src/lib/admin-instance.ts +14 -8
  172. package/src/lib/admin-target.ts +21 -2
  173. package/src/lib/binary.ts +22 -5
  174. package/src/lib/browser-retention.ts +210 -0
  175. package/src/lib/command-dx.ts +9 -9
  176. package/src/lib/config.ts +12 -1
  177. package/src/lib/domain-publication.ts +9 -7
  178. package/src/lib/failure-debug.ts +26 -0
  179. package/src/lib/idp.ts +34 -3
  180. package/src/lib/instance-candidates.ts +2 -2
  181. package/src/lib/instance-target.ts +3 -14
  182. package/src/lib/instance.ts +16 -11
  183. package/src/lib/log.ts +16 -9
  184. package/src/lib/output.ts +1 -1
  185. package/src/lib/proc.ts +7 -2
  186. package/src/lib/provision-instance.ts +34 -57
  187. package/src/lib/skills/lock.ts +117 -0
  188. package/src/lib/skills/sync.ts +814 -0
  189. package/src/lib/skills.ts +1 -52
  190. package/src/lib/update.ts +298 -45
  191. package/src/lib/validation.ts +2 -2
  192. package/src/lib/view/assets.ts +11 -2
  193. package/src/lib/view/external-open-intent.ts +41 -0
  194. package/src/lib/view/external-open-origins.ts +37 -0
  195. package/src/lib/view/host-capabilities.ts +17 -0
  196. package/src/lib/view/resolve.ts +1 -1
  197. package/src/lib/view/server.ts +18 -3
  198. package/src/lib/view/session.ts +2 -0
  199. package/src/program/.spec/api.d.ts +1 -0
  200. package/src/program/__tests__/program.test.ts +163 -6
  201. package/src/program/argv.ts +14 -0
  202. package/src/program/build.ts +26 -4
  203. package/src/program/command.ts +1 -0
  204. package/src/program/index.ts +1 -0
  205. package/src/program/registry.ts +2 -1
  206. package/src/setup/__tests__/instance-step.test.ts +27 -10
  207. package/src/setup/steps/instance.ts +22 -15
  208. package/src/setup/steps/skills.ts +40 -38
  209. package/src/state/.spec/api.d.ts +21 -2
  210. package/src/state/.spec/architecture.md +18 -4
  211. package/src/state/.spec/layout.ts +1 -0
  212. package/src/state/__tests__/exchange-credentials.test.ts +88 -42
  213. package/src/state/__tests__/files.test.ts +24 -1
  214. package/src/state/__tests__/fixtures/session-route-process.ts +93 -0
  215. package/src/state/__tests__/paths.test.ts +1 -0
  216. package/src/state/__tests__/session-routes.test.ts +138 -0
  217. package/src/state/exchange-credentials.ts +22 -9
  218. package/src/state/files.ts +41 -0
  219. package/src/state/index.ts +3 -1
  220. package/src/state/paths.ts +3 -0
  221. package/src/state/session-routes.ts +34 -0
  222. package/src/telemetry/__tests__/analyze-log.test.ts +38 -0
  223. package/src/telemetry/__tests__/recorder.test.ts +1 -0
  224. package/src/telemetry/__tests__/retention.test.ts +267 -0
  225. package/src/telemetry/__tests__/settings.test.ts +102 -0
  226. package/src/telemetry/__tests__/store-scan.test.ts +128 -0
  227. package/src/telemetry/__tests__/trigger.test.ts +33 -4
  228. package/src/telemetry/analyze.ts +24 -2
  229. package/src/telemetry/recorder.ts +15 -4
  230. package/src/telemetry/retention.ts +176 -0
  231. package/src/telemetry/session.ts +18 -12
  232. package/src/telemetry/settings.ts +64 -11
  233. package/src/telemetry/store.ts +92 -9
  234. package/src/telemetry/trigger.ts +16 -28
  235. package/src/ui/.spec/api.d.ts +14 -0
  236. package/src/ui/.spec/architecture.md +14 -0
  237. package/src/ui/.spec/laws.ts +50 -0
  238. package/src/ui/.spec/layout.ts +16 -0
  239. package/src/ui/__tests__/ui.test.ts +1742 -0
  240. package/src/ui/index.ts +13 -0
  241. package/src/ui/lock.ts +89 -0
  242. package/src/ui/model.ts +83 -0
  243. package/src/ui/operations.ts +1044 -0
  244. package/src/ui/project.ts +333 -0
  245. package/src/ui/release.ts +398 -0
  246. package/src/ui/runner.ts +18 -0
  247. package/studio/client/dist/assets/elk-api-DjmKsHXc.js +1 -0
  248. package/studio/client/dist/assets/index-BFVFs_8x.js +81 -0
  249. package/studio/client/dist/assets/index-DuB9iUdu.css +2 -0
  250. package/studio/client/dist/assets/rolldown-runtime-Dd_uD5pT.js +1 -0
  251. package/studio/client/dist/assets/schema-studio--a0kX3QU.css +1 -0
  252. package/studio/client/dist/assets/schema-studio-DH6oEWME.js +8 -0
  253. package/studio/client/dist/index.html +4 -3
  254. package/studio/package.json +8 -14
  255. package/studio/server/agent/ask.test.ts +1 -1
  256. package/studio/server/agent/bridge/grant.test.ts +1 -1
  257. package/studio/server/agent/bridge/routes.test.ts +1 -1
  258. package/studio/server/agent/harness/claude/adapter.test.ts +15 -5
  259. package/studio/server/agent/harness/gateway/token.test.ts +1 -1
  260. package/studio/server/agent/harness/gateway/token.ts +3 -3
  261. package/studio/server/agent/prompts/anchors.test.ts +41 -32
  262. package/studio/server/agent/prompts/anchors.ts +23 -51
  263. package/studio/server/agent/prompts/system.test.ts +4 -4
  264. package/studio/server/agent/prompts/system.ts +5 -5
  265. package/studio/server/agent/routes.test.ts +1 -1
  266. package/studio/server/agent/run/coordinator.test.ts +1 -1
  267. package/studio/server/agent/run/preparation.ts +1 -1
  268. package/studio/server/api/canvas.ts +0 -1
  269. package/studio/server/api/context.ts +1 -1
  270. package/studio/server/api/deployment.ts +1 -1
  271. package/studio/server/api/views.ts +2 -2
  272. package/studio/server/api/workspace.ts +1 -1
  273. package/studio/server/api-agent-loadout.test.ts +1 -1
  274. package/studio/server/api.test.ts +1 -1
  275. package/studio/server/cache.test.ts +24 -18
  276. package/studio/server/cache.ts +10 -54
  277. package/studio/server/cli-consumers.test.ts +31 -3
  278. package/studio/server/domain.test.ts +50 -68
  279. package/studio/server/domain.ts +82 -63
  280. package/studio/server/handoff/copy.ts +2 -2
  281. package/studio/server/index.ts +1 -1
  282. package/studio/server/instances/probe.test.ts +1 -1
  283. package/studio/server/introspect/anatomy/views/routes.ts +46 -37
  284. package/studio/server/introspect/anatomy/views.ts +10 -16
  285. package/studio/server/introspect/anatomy-extras.test.ts +29 -56
  286. package/studio/server/introspect/anatomy.test.ts +22 -14
  287. package/studio/server/introspect/anatomy.ts +6 -9
  288. package/studio/server/introspect/bundle.ts +0 -3
  289. package/studio/server/introspect/canonical-schema.test.ts +155 -424
  290. package/studio/server/introspect/canonical-schema.ts +248 -601
  291. package/studio/server/introspect/core.ts +14 -22
  292. package/studio/server/introspect/diff.test.ts +21 -9
  293. package/studio/server/introspect/diff.ts +19 -64
  294. package/studio/server/introspect/extractor.ts +23 -122
  295. package/studio/server/introspect/overlay-tsmorph.test.ts +116 -241
  296. package/studio/server/introspect/overlay-tsmorph.ts +0 -1
  297. package/studio/server/introspect/overlay.ts +3 -51
  298. package/studio/server/introspect/revision.test.ts +24 -28
  299. package/studio/server/introspect/revision.ts +11 -22
  300. package/studio/server/introspect/runtime.test.ts +77 -195
  301. package/studio/server/introspect/runtime.ts +5 -67
  302. package/studio/server/introspect/schema-ir-json.test.ts +81 -0
  303. package/studio/server/introspect/schema-ir-json.ts +39 -69
  304. package/studio/server/introspect/schema-refs.test.ts +43 -88
  305. package/studio/server/introspect/schema-refs.ts +14 -49
  306. package/studio/server/introspect/source-overlay/handlers.ts +116 -636
  307. package/studio/server/introspect/source-overlay/kernel-calls.ts +0 -3
  308. package/studio/server/introspect/source-overlay/spans.ts +15 -45
  309. package/studio/server/lifecycle.ts +4 -1
  310. package/studio/server/state/baseline.test.ts +14 -9
  311. package/studio/server/state/baseline.ts +3 -5
  312. package/studio/server/state/documents.test.ts +69 -0
  313. package/studio/server/state/documents.ts +57 -10
  314. package/studio/server/state/visibility.ts +1 -5
  315. package/studio/server/views/model.ts +3 -3
  316. package/studio/server/views/target.test.ts +18 -76
  317. package/studio/server/views/target.ts +24 -50
  318. package/studio/server/watch.test.ts +11 -11
  319. package/studio/server/watch.ts +8 -4
  320. package/studio/server/workspace/updates.ts +23 -1
  321. package/studio/server/workspace-watch.ts +2 -2
  322. package/studio/shared/contracts/runtime.ts +4 -0
  323. package/studio/shared/contracts/schema.ts +44 -131
  324. package/studio/shared/contracts/surface.test.ts +15 -17
  325. package/studio/shared/contracts/workspace.ts +5 -11
  326. package/studio/shared/schema/identity.test.ts +20 -44
  327. package/studio/shared/schema/identity.ts +9 -24
  328. package/studio/tsconfig.json +2 -1
  329. package/tsconfig.json +1 -1
  330. package/viewer/dist/index.html +21 -0
  331. package/viewer/dist/main.js +41 -62
  332. package/.check-workspace.cjs +0 -40
  333. package/src/admin/binding.ts +0 -168
  334. package/src/commands/__tests__/instance-create-hosts.test.ts +0 -29
  335. package/studio/client/dist/assets/elk-api-lwhFo7vB.js +0 -1
  336. package/studio/client/dist/assets/index-B-c-smo9.js +0 -8
  337. package/studio/client/dist/assets/index-BckHuAWk.js +0 -81
  338. package/studio/client/dist/assets/index-C4aNQ6dz.css +0 -1
  339. package/studio/client/dist/assets/index-ChOr3yP0.css +0 -1
  340. package/studio/server/introspect/anatomy/views/legacy.ts +0 -232
  341. package/studio/server/introspect/core-extractor.ts +0 -139
  342. package/studio/server/introspect/overlay.test.ts +0 -72
  343. package/studio/server/introspect/source-overlay/annotations.ts +0 -14
@@ -6,10 +6,9 @@ import ts from 'typescript'
6
6
  const SHARED_ROOT = resolve(import.meta.dir, '..')
7
7
  const STUDIO_ROOT = resolve(SHARED_ROOT, '..')
8
8
 
9
- // Frozen from HEAD's former monolithic shared/types.ts before it was split.
10
- // Keeping this manifest in the test makes the compatibility proof independent
11
- // of Git and catches any historical symbol silently dropped by a future move.
12
- const HISTORICAL_BARREL_EXPORTS = [
9
+ // Closed Studio V1 shared surface. Keeping this manifest independent of Git
10
+ // catches accidental aliases and shadow contracts.
11
+ const TARGET_BARREL_EXPORTS = [
13
12
  'AGENT_ACCESS_LEVELS',
14
13
  'AGENT_EFFORT_LEVELS',
15
14
  'AgentAccess',
@@ -34,9 +33,9 @@ const HISTORICAL_BARREL_EXPORTS = [
34
33
  'ContextStore',
35
34
  'ConversationInfo',
36
35
  'CopyPayload',
37
- 'CrossDomainImport',
38
36
  'DeployRecord',
39
37
  'DeployResult',
38
+ 'DOCUMENTS_DIR',
40
39
  'DocMeta',
41
40
  'DomainAnatomy',
42
41
  'DomainCatalogEntry',
@@ -61,15 +60,15 @@ const HISTORICAL_BARREL_EXPORTS = [
61
60
  'InstancesState',
62
61
  'Integration',
63
62
  'IntegrationsState',
63
+ 'IrCallable',
64
64
  'IrCallableAuth',
65
65
  'IrCallableOutput',
66
66
  'IrClass',
67
- 'IrDefinitionKey',
68
- 'IrDefinitionRef',
67
+ 'IrClassKey',
68
+ 'IrClassRef',
69
69
  'IrEndpoint',
70
70
  'IrFunction',
71
71
  'IrImportDescriptor',
72
- 'IrInterface',
73
72
  'IrMethod',
74
73
  'IrSchemaKey',
75
74
  'IrSchemaRef',
@@ -83,7 +82,6 @@ const HISTORICAL_BARREL_EXPORTS = [
83
82
  'MethodInheritance',
84
83
  'NodePosition',
85
84
  'RememberedViewTarget',
86
- 'SchemaAnnotation',
87
85
  'SchemaChange',
88
86
  'SchemaChangeKind',
89
87
  'SchemaIR',
@@ -108,24 +106,24 @@ const HISTORICAL_BARREL_EXPORTS = [
108
106
  'VisibilityState',
109
107
  ] as const
110
108
 
111
- // Deliberate canonical identity/revision helpers added alongside the split.
112
- const INTENTIONAL_BARREL_ADDITIONS = [
109
+ const TARGET_BARREL_HELPERS = [
113
110
  'IR_SCHEMA_REF_KINDS',
114
111
  'IrSchemaRefKind',
115
112
  'STUDIO_SCHEMA_PROJECTION_VERSION',
116
113
  'SchemaRevision',
117
- 'definitionRefKey',
118
- 'isIrDefinitionRef',
119
- 'isIrInterfaceRef',
114
+ 'classRefKey',
115
+ 'isIrClassRef',
120
116
  'isIrSchemaRef',
117
+ 'isNodePathSchema',
121
118
  'isSchemaRevision',
122
- 'parseDefinitionRefKey',
119
+ 'parseClassRefKey',
123
120
  'parseSchemaRefKey',
124
121
  'schemaRefKey',
125
122
  ] as const
126
123
 
127
124
  function productionFiles(dir: string): string[] {
128
125
  return readdirSync(dir).flatMap((entry) => {
126
+ if (entry === 'node_modules') return []
129
127
  const path = join(dir, entry)
130
128
  if (statSync(path).isDirectory()) return productionFiles(path)
131
129
  return /\.(?:ts|tsx)$/.test(path) && !/\.test\.(?:ts|tsx)$/.test(path) ? [path] : []
@@ -277,10 +275,10 @@ test('types.ts remains a re-export-only compatibility facade', () => {
277
275
  expect(source.statements.every(ts.isExportDeclaration)).toBe(true)
278
276
  })
279
277
 
280
- test('types.ts exhaustively preserves its historical named export surface', () => {
278
+ test('types.ts exposes exactly the Studio V1 shared surface', () => {
281
279
  const exports = namedExports(join(SHARED_ROOT, 'types.ts'))
282
280
  const duplicates = exports.filter((name, index) => exports.indexOf(name) !== index)
283
- const expected = [...HISTORICAL_BARREL_EXPORTS, ...INTENTIONAL_BARREL_ADDITIONS].sort()
281
+ const expected = [...TARGET_BARREL_EXPORTS, ...TARGET_BARREL_HELPERS].sort()
284
282
 
285
283
  expect(duplicates).toEqual([])
286
284
  expect(exports.sort()).toEqual(expected)
@@ -113,18 +113,12 @@ export interface MergeResult {
113
113
 
114
114
  export type SchemaChangeKind =
115
115
  | 'schema-metadata-changed'
116
- | 'type-added'
117
- | 'type-removed'
118
- | 'type-changed'
119
116
  | 'import-added'
120
117
  | 'import-removed'
121
118
  | 'import-changed'
122
119
  | 'class-added'
123
120
  | 'class-removed'
124
121
  | 'class-contract-changed'
125
- | 'interface-added'
126
- | 'interface-removed'
127
- | 'interface-contract-changed'
128
122
  | 'edge-added'
129
123
  | 'edge-removed'
130
124
  | 'edge-contract-changed'
@@ -208,6 +202,9 @@ export interface DocMeta {
208
202
  stored: string
209
203
  }
210
204
 
205
+ /** Where context documents live inside a domain — shown in the UI, read by the agent. */
206
+ export const DOCUMENTS_DIR = '.domain-studio/context/docs'
207
+
211
208
  export interface Integration {
212
209
  id: string
213
210
  name: string
@@ -264,11 +261,8 @@ export interface LayoutState {
264
261
 
265
262
  /** Persisted per-domain canvas visibility. This is the sole authority for its JSON shape. */
266
263
  export interface VisibilityState {
267
- /** refs hidden on the canvas: `class.X` | `edge.X` | `domain.<origin>` (interfaces use
268
- * `materializedInterfaces`, not this set — see below) */
264
+ /** Refs hidden on the canvas: `class.X` | `edge.X` | `domain.<origin>`. */
269
265
  hidden: Record<string, true>
266
+ /** Whether local Class inheritance edges are rendered. */
270
267
  showInheritedEdges: boolean
271
- /** Local interfaces MATERIALIZED as canvas NODES (default = badge). Keyed by BARE interface
272
- * name (e.g. `Fulfillable`) — a set distinct from `hidden`, so no ref namespace collision. */
273
- materializedInterfaces: Record<string, true>
274
268
  }
@@ -1,58 +1,34 @@
1
1
  import { describe, expect, test } from 'bun:test'
2
2
 
3
3
  import {
4
- IR_SCHEMA_REF_KINDS,
5
- definitionRefKey,
6
- isIrDefinitionRef,
7
- isIrInterfaceRef,
4
+ classRefKey,
5
+ isIrClassRef,
8
6
  isIrSchemaRef,
9
- parseDefinitionRefKey,
7
+ parseClassRefKey,
10
8
  parseSchemaRefKey,
11
9
  schemaRefKey,
12
- type IrSchemaRef,
13
10
  } from './identity'
14
11
 
15
- describe('canonical schema identity', () => {
16
- test('round-trips every structural reference kind without short-name aliases', () => {
17
- for (const kind of IR_SCHEMA_REF_KINDS) {
18
- const ref = {
19
- origin: 'directory.example.dev',
20
- kind,
21
- name: '$Named_member',
22
- } satisfies IrSchemaRef
23
- expect(parseSchemaRefKey(schemaRefKey(ref))).toEqual(ref)
24
- }
12
+ describe('schema identity', () => {
13
+ test('round-trips exact Class identity', () => {
14
+ const ref = { origin: 'docs.example.dev', kind: 'class' as const, name: 'Document' }
15
+ expect(classRefKey(ref)).toBe('docs.example.dev:class.Document')
16
+ expect(parseClassRefKey(classRefKey(ref))).toEqual(ref)
17
+ expect(isIrClassRef(ref)).toBe(true)
25
18
  })
26
19
 
27
- test('keeps class and interface identities distinct', () => {
28
- const classRef = { origin: 'contracts.example.dev', kind: 'class', name: 'Shared' } as const
29
- const interfaceRef = {
30
- origin: 'contracts.example.dev',
31
- kind: 'interface',
32
- name: 'Shared',
33
- } as const
34
-
35
- expect(definitionRefKey(classRef)).toBe('contracts.example.dev:class.Shared')
36
- expect(definitionRefKey(interfaceRef)).toBe('contracts.example.dev:interface.Shared')
37
- expect(parseDefinitionRefKey(definitionRefKey(classRef))).toEqual(classRef)
38
- expect(parseDefinitionRefKey(definitionRefKey(interfaceRef))).toEqual(interfaceRef)
39
- })
40
-
41
- test('guards structural refs without claiming SDK admission', () => {
42
- expect(isIrSchemaRef({ origin: 'a.dev', kind: 'policy', name: 'may_read' })).toBe(true)
43
- expect(isIrDefinitionRef({ origin: 'a.dev', kind: 'class', name: 'Thing' })).toBe(true)
44
- expect(isIrDefinitionRef({ origin: 'a.dev', kind: 'policy', name: 'may_read' })).toBe(false)
45
- expect(isIrInterfaceRef({ origin: 'a.dev', kind: 'interface', name: 'Named' })).toBe(true)
46
- expect(isIrInterfaceRef({ origin: 'a.dev', kind: 'class', name: 'Named' })).toBe(false)
47
- expect(isIrSchemaRef({ origin: 'a.dev', kind: 'unknown', name: 'Thing' })).toBe(false)
48
- expect(isIrSchemaRef({ origin: 'a.dev', kind: 'class' })).toBe(false)
20
+ test('preserves all supported schema reference kinds', () => {
21
+ const ref = { origin: 'docs.example.dev', kind: 'function' as const, name: 'search' }
22
+ expect(schemaRefKey(ref)).toBe('docs.example.dev:function.search')
23
+ expect(parseSchemaRefKey(schemaRefKey(ref))).toEqual(ref)
24
+ expect(isIrSchemaRef(ref)).toBe(true)
49
25
  })
50
26
 
51
- test('rejects malformed and non-definition keys', () => {
52
- expect(parseSchemaRefKey('a.dev:unknown.Thing')).toBeUndefined()
53
- expect(parseSchemaRefKey('a.dev:class.')).toBeUndefined()
54
- expect(parseSchemaRefKey(':class.Thing')).toBeUndefined()
55
- expect(parseSchemaRefKey(null)).toBeUndefined()
56
- expect(parseDefinitionRefKey('a.dev:type.Payload')).toBeUndefined()
27
+ test('rejects removed Interface coordinates and malformed keys', () => {
28
+ expect(isIrSchemaRef({ origin: 'docs.example.dev', kind: 'interface', name: 'Named' })).toBe(
29
+ false,
30
+ )
31
+ expect(parseSchemaRefKey('docs.example.dev:interface.Named')).toBeUndefined()
32
+ expect(parseClassRefKey('docs.example.dev:function.search')).toBeUndefined()
57
33
  })
58
34
  })
@@ -4,16 +4,7 @@
4
4
  * These helpers validate and encode only the structural wire coordinate. SDK
5
5
  * admission remains the authority for whether a reference is semantically valid.
6
6
  */
7
-
8
- export const IR_SCHEMA_REF_KINDS = [
9
- 'type',
10
- 'interface',
11
- 'class',
12
- 'function',
13
- 'policy',
14
- 'view',
15
- 'core',
16
- ] as const
7
+ export const IR_SCHEMA_REF_KINDS = ['class', 'function', 'policy', 'view', 'core'] as const
17
8
 
18
9
  export type IrSchemaRefKind = (typeof IR_SCHEMA_REF_KINDS)[number]
19
10
 
@@ -27,14 +18,12 @@ export interface IrSchemaRef {
27
18
  /** Canonical DSL key for a schema member: `origin:kind.name`. */
28
19
  export type IrSchemaKey = `${string}:${IrSchemaRefKind}.${string}`
29
20
 
30
- export type IrDefinitionRef = Omit<IrSchemaRef, 'kind'> & {
31
- kind: 'class' | 'interface'
32
- }
21
+ export type IrClassRef = Omit<IrSchemaRef, 'kind'> & { kind: 'class' }
33
22
 
34
- export type IrDefinitionKey = `${string}:${IrDefinitionRef['kind']}.${string}`
23
+ export type IrClassKey = `${string}:class.${string}`
35
24
 
36
25
  const schemaKinds = new Set<string>(IR_SCHEMA_REF_KINDS)
37
- const schemaKeyPattern = /^(.+):(type|interface|class|function|policy|view|core)\.(.+)$/
26
+ const schemaKeyPattern = /^(.+):(class|function|policy|view|core)\.(.+)$/
38
27
 
39
28
  /** Structural guard only; it deliberately does not perform SDK admission. */
40
29
  export function isIrSchemaRef(value: unknown): value is IrSchemaRef {
@@ -48,19 +37,15 @@ export function isIrSchemaRef(value: unknown): value is IrSchemaRef {
48
37
  )
49
38
  }
50
39
 
51
- export function isIrDefinitionRef(value: unknown): value is IrDefinitionRef {
52
- return isIrSchemaRef(value) && (value.kind === 'class' || value.kind === 'interface')
53
- }
54
-
55
- export function isIrInterfaceRef(value: unknown): value is IrDefinitionRef & { kind: 'interface' } {
56
- return isIrSchemaRef(value) && value.kind === 'interface'
40
+ export function isIrClassRef(value: unknown): value is IrClassRef {
41
+ return isIrSchemaRef(value) && value.kind === 'class'
57
42
  }
58
43
 
59
44
  export function schemaRefKey(ref: IrSchemaRef): IrSchemaKey {
60
45
  return `${ref.origin}:${ref.kind}.${ref.name}`
61
46
  }
62
47
 
63
- export function definitionRefKey(ref: IrDefinitionRef): IrDefinitionKey {
48
+ export function classRefKey(ref: IrClassRef): IrClassKey {
64
49
  return `${ref.origin}:${ref.kind}.${ref.name}`
65
50
  }
66
51
 
@@ -76,7 +61,7 @@ export function parseSchemaRefKey(value: unknown): IrSchemaRef | undefined {
76
61
  }
77
62
  }
78
63
 
79
- export function parseDefinitionRefKey(value: unknown): IrDefinitionRef | undefined {
64
+ export function parseClassRefKey(value: unknown): IrClassRef | undefined {
80
65
  const ref = parseSchemaRefKey(value)
81
- return ref && isIrDefinitionRef(ref) ? ref : undefined
66
+ return ref && isIrClassRef(ref) ? ref : undefined
82
67
  }
@@ -19,5 +19,6 @@
19
19
  "@shared/*": ["./shared/*"]
20
20
  }
21
21
  },
22
- "include": ["server", "shared", "client/src", "e2e", "playwright.config.ts", "vite.config.ts"]
22
+ "include": ["server", "shared", "client/src", "e2e", "playwright.config.ts", "vite.config.ts"],
23
+ "exclude": ["e2e/fixture"]
23
24
  }
package/tsconfig.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "strict": true,
8
8
  "skipLibCheck": true,
9
9
  "noEmit": true,
10
- "types": ["@types/bun", "@types/node"]
10
+ "types": ["bun-types", "@types/node"]
11
11
  },
12
12
  "include": ["bin", "src"],
13
13
  "exclude": ["templates", "**/__tests__/**", "src/lib/view/open-intent.ts"]
@@ -32,6 +32,8 @@
32
32
  display: flex;
33
33
  gap: 12px;
34
34
  align-items: center;
35
+ min-width: 0;
36
+ overflow: hidden;
35
37
  padding: 6px 10px;
36
38
  border-bottom: 1px solid #26262e;
37
39
  flex: none;
@@ -56,6 +58,23 @@
56
58
  font-weight: 600;
57
59
  color: #e8e8f0;
58
60
  }
61
+ #view-label,
62
+ #target-label,
63
+ #identity-label {
64
+ min-width: 0;
65
+ overflow: hidden;
66
+ text-overflow: ellipsis;
67
+ white-space: nowrap;
68
+ }
69
+ #view-label {
70
+ flex-shrink: 1;
71
+ }
72
+ #target-label {
73
+ flex-shrink: 2;
74
+ }
75
+ #identity-label {
76
+ flex-shrink: 3;
77
+ }
59
78
  .dim {
60
79
  color: #7a7a86;
61
80
  }
@@ -68,6 +87,8 @@
68
87
  }
69
88
  #frame {
70
89
  flex: 1;
90
+ min-width: 0;
91
+ min-height: 0;
71
92
  position: relative;
72
93
  }
73
94
  #frame iframe {