@astrale-os/cli 1.0.0-beta.32 → 1.0.0-beta.43
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.
- package/CHANGELOG.md +928 -0
- package/README.md +53 -43
- package/THIRD-PARTY-NOTICES.md +37 -1
- package/dist/astrale.js +349631 -83669
- package/dist/public/connect-core.js +16 -47
- package/dist/public/keys/index.js +1 -1
- package/dist/types/admin/contract.d.ts +11 -0
- package/dist/types/admin/graph/index.d.ts +1 -0
- package/dist/types/admin/graph/nodes.d.ts +12 -0
- package/dist/types/admin/instance/client.d.ts +2 -0
- package/dist/types/connection/lifetime.d.ts +1 -1
- package/dist/types/errors.d.ts +3 -0
- package/dist/types/lib/proc.d.ts +1 -0
- package/dist/types/lib/update.d.ts +15 -7
- package/package.json +8 -6
- package/studio/client/dist/assets/index-5C1uT6ML.css +2 -0
- package/studio/client/dist/assets/index-C4kNlvwF.js +80 -0
- package/studio/client/dist/assets/schema-studio-BR9d0faB.js +8 -0
- package/studio/client/dist/index.html +13 -2
- package/studio/package.json +2 -1
- package/studio/server/agent/ask.test.ts +7 -1
- package/studio/server/agent/bridge/grant.ts +15 -3
- package/studio/server/agent/prompts/system.test.ts +5 -0
- package/studio/server/agent/prompts/system.ts +19 -4
- package/studio/server/agent/routes.test.ts +39 -1
- package/studio/server/agent/routes.ts +3 -0
- package/studio/server/agent/run/coordinator.test.ts +7 -1
- package/studio/server/agent/run/preparation.ts +1 -0
- package/studio/server/agent/run/transcript.test.ts +47 -2
- package/studio/server/agent/run/transcript.ts +32 -3
- package/studio/server/api/documents.test.ts +31 -0
- package/studio/server/api/documents.ts +35 -1
- package/studio/server/api-agent-loadout.test.ts +7 -1
- package/studio/server/api.test.ts +7 -1
- package/studio/server/cache.ts +4 -4
- package/studio/server/detect.ts +9 -12
- package/studio/server/domain.test.ts +83 -3
- package/studio/server/domain.ts +205 -27
- package/studio/server/handoff/service.ts +1 -1
- package/studio/server/index.ts +5 -8
- package/studio/server/introspect/extractor.ts +111 -17
- package/studio/server/introspect/overlay-tsmorph.test.ts +9 -9
- package/studio/server/introspect/overlay.ts +1 -1
- package/studio/server/introspect/runtime.ts +9 -1
- package/studio/server/introspect/source-overlay/spans.ts +2 -5
- package/studio/server/lifecycle.ts +1 -1
- package/studio/server/state/baseline.test.ts +14 -0
- package/studio/server/state/baseline.ts +16 -2
- package/studio/server/watch.test.ts +2 -1
- package/studio/server/watch.ts +5 -2
- package/studio/server/workspace/create.ts +9 -8
- package/studio/server/workspace-state.ts +4 -6
- package/studio/server/workspace-watch.ts +33 -22
- package/studio/shared/contracts/agent.ts +3 -0
- package/viewer/dist/main.js +12 -12
- package/src/__tests__/fixtures/publication.ts +0 -20
- package/src/admin/.spec/api.d.ts +0 -3
- package/src/admin/.spec/architecture.md +0 -22
- package/src/admin/.spec/icon.svg +0 -3
- package/src/admin/.spec/layout.ts +0 -6
- package/src/admin/__tests__/fixture.ts +0 -25
- package/src/admin/catalog/.spec/api.d.ts +0 -63
- package/src/admin/catalog/.spec/architecture.md +0 -7
- package/src/admin/catalog/.spec/icon.svg +0 -3
- package/src/admin/catalog/.spec/layout.ts +0 -6
- package/src/admin/catalog/__tests__/client.test.ts +0 -245
- package/src/admin/catalog/client.ts +0 -195
- package/src/admin/catalog/index.ts +0 -13
- package/src/admin/catalog/model.ts +0 -41
- package/src/admin/catalog/tsconfig.json +0 -8
- package/src/admin/contract.ts +0 -47
- package/src/admin/graph/.spec/api.d.ts +0 -22
- package/src/admin/graph/.spec/architecture.md +0 -5
- package/src/admin/graph/.spec/icon.svg +0 -3
- package/src/admin/graph/.spec/layout.ts +0 -3
- package/src/admin/graph/index.ts +0 -6
- package/src/admin/graph/nodes.ts +0 -56
- package/src/admin/index.ts +0 -2
- package/src/admin/instance/.spec/api.d.ts +0 -62
- package/src/admin/instance/.spec/architecture.md +0 -10
- package/src/admin/instance/.spec/icon.svg +0 -3
- package/src/admin/instance/.spec/layout.ts +0 -6
- package/src/admin/instance/__tests__/client.test.ts +0 -273
- package/src/admin/instance/client.ts +0 -191
- package/src/admin/instance/index.ts +0 -15
- package/src/admin/instance/model.ts +0 -59
- package/src/admin/instance/tsconfig.json +0 -8
- package/src/commands/__tests__/admin-instance.test.ts +0 -91
- package/src/commands/__tests__/auth-login.test.ts +0 -231
- package/src/commands/__tests__/auth-token.test.ts +0 -223
- package/src/commands/__tests__/call-describe.test.ts +0 -80
- package/src/commands/__tests__/call.test.ts +0 -63
- package/src/commands/__tests__/domain-install-operation.test.ts +0 -145
- package/src/commands/__tests__/domain-install-owned.test.ts +0 -191
- package/src/commands/__tests__/domain-list.test.ts +0 -133
- package/src/commands/__tests__/domain-uninstall.test.ts +0 -53
- package/src/commands/__tests__/install-direct.test.ts +0 -128
- package/src/commands/__tests__/install-identity-override.test.ts +0 -76
- package/src/commands/__tests__/instance-bookmark.test.ts +0 -166
- package/src/commands/__tests__/instance-list-admin.test.ts +0 -26
- package/src/commands/__tests__/instance-list-rows.test.ts +0 -64
- package/src/commands/__tests__/instance-status.test.ts +0 -139
- package/src/commands/__tests__/instance-use.test.ts +0 -67
- package/src/commands/__tests__/introspect-parse.test.ts +0 -100
- package/src/commands/__tests__/logs.test.ts +0 -345
- package/src/commands/__tests__/read-commands.test.ts +0 -377
- package/src/commands/__tests__/setup-plan.test.ts +0 -61
- package/src/commands/__tests__/studio-descriptor.test.ts +0 -22
- package/src/commands/__tests__/token-ttl.test.ts +0 -66
- package/src/commands/__tests__/update.test.ts +0 -95
- package/src/commands/__tests__/view-build.test.ts +0 -58
- package/src/commands/__tests__/view.test.ts +0 -197
- package/src/commands/admin/status.ts +0 -61
- package/src/commands/admin/use.ts +0 -100
- package/src/commands/auth/login.ts +0 -82
- package/src/commands/auth/logout.ts +0 -53
- package/src/commands/auth/status.ts +0 -86
- package/src/commands/auth/token.ts +0 -174
- package/src/commands/browser.ts +0 -236
- package/src/commands/call-describe.ts +0 -123
- package/src/commands/call.ts +0 -230
- package/src/commands/domain/install.ts +0 -575
- package/src/commands/domain/list.ts +0 -155
- package/src/commands/domain/publish.ts +0 -136
- package/src/commands/domain/uninstall.ts +0 -128
- package/src/commands/get.ts +0 -69
- package/src/commands/identity/__tests__/register.test.ts +0 -93
- package/src/commands/identity/create.ts +0 -35
- package/src/commands/identity/delete.ts +0 -24
- package/src/commands/identity/export.ts +0 -46
- package/src/commands/identity/import.ts +0 -61
- package/src/commands/identity/list.ts +0 -56
- package/src/commands/identity/register.ts +0 -195
- package/src/commands/identity/sync.ts +0 -38
- package/src/commands/identity/unsync.ts +0 -34
- package/src/commands/identity/use.ts +0 -24
- package/src/commands/identity/whoami.ts +0 -34
- package/src/commands/idp/add.ts +0 -150
- package/src/commands/idp/list.ts +0 -57
- package/src/commands/idp/refresh.ts +0 -38
- package/src/commands/idp/remove.ts +0 -36
- package/src/commands/idp/show.ts +0 -29
- package/src/commands/instance/active.ts +0 -73
- package/src/commands/instance/bookmark.ts +0 -101
- package/src/commands/instance/create.ts +0 -61
- package/src/commands/instance/delete.ts +0 -69
- package/src/commands/instance/forget.ts +0 -26
- package/src/commands/instance/list.ts +0 -197
- package/src/commands/instance/status.ts +0 -92
- package/src/commands/instance/use.ts +0 -263
- package/src/commands/introspect.ts +0 -129
- package/src/commands/logs.ts +0 -371
- package/src/commands/mutate.ts +0 -122
- package/src/commands/query.ts +0 -142
- package/src/commands/session/analyze.ts +0 -72
- package/src/commands/session/list.ts +0 -36
- package/src/commands/setup.ts +0 -54
- package/src/commands/status.ts +0 -60
- package/src/commands/studio.ts +0 -434
- package/src/commands/token.ts +0 -121
- package/src/commands/ui/__tests__/commands.test.ts +0 -152
- package/src/commands/ui/add.ts +0 -51
- package/src/commands/ui/doctor.ts +0 -21
- package/src/commands/ui/init.ts +0 -38
- package/src/commands/ui/list.ts +0 -26
- package/src/commands/ui/preset-apply.ts +0 -19
- package/src/commands/ui/preset-list.ts +0 -12
- package/src/commands/ui/shared.ts +0 -25
- package/src/commands/update.ts +0 -356
- package/src/commands/use.ts +0 -86
- package/src/commands/view-serve.ts +0 -26
- package/src/commands/view.ts +0 -658
- package/src/connect-core.test.ts +0 -38
- package/src/connect-core.ts +0 -42
- package/src/connection/.spec/api.d.ts +0 -110
- package/src/connection/.spec/architecture.md +0 -58
- package/src/connection/.spec/capabilities/connection.ts +0 -13
- package/src/connection/.spec/examples/call.ts +0 -7
- package/src/connection/.spec/flows/command.ts +0 -20
- package/src/connection/.spec/flows/session.ts +0 -62
- package/src/connection/.spec/laws/connection.ts +0 -213
- package/src/connection/.spec/layout.ts +0 -22
- package/src/connection/__tests__/auth.test.ts +0 -129
- package/src/connection/__tests__/ca-fetch.test.ts +0 -60
- package/src/connection/__tests__/call.test.ts +0 -17
- package/src/connection/__tests__/credential.test.ts +0 -254
- package/src/connection/__tests__/errors.test.ts +0 -577
- package/src/connection/__tests__/exchange.test.ts +0 -404
- package/src/connection/__tests__/failure-fixtures.ts +0 -39
- package/src/connection/__tests__/failure-safety.test.ts +0 -75
- package/src/connection/__tests__/fixtures/localhost-cert.pem +0 -19
- package/src/connection/__tests__/fixtures/localhost-key.base64 +0 -1
- package/src/connection/__tests__/managed.test.ts +0 -39
- package/src/connection/__tests__/reasons.test.ts +0 -78
- package/src/connection/__tests__/self.test.ts +0 -71
- package/src/connection/__tests__/session.test.ts +0 -144
- package/src/connection/__tests__/target.test.ts +0 -95
- package/src/connection/auth.ts +0 -265
- package/src/connection/call.ts +0 -7
- package/src/connection/command.ts +0 -67
- package/src/connection/credential.ts +0 -138
- package/src/connection/errors.ts +0 -1
- package/src/connection/exchange.ts +0 -394
- package/src/connection/failure/classify.ts +0 -110
- package/src/connection/failure/index.ts +0 -18
- package/src/connection/failure/model.ts +0 -28
- package/src/connection/failure/render.ts +0 -116
- package/src/connection/index.ts +0 -8
- package/src/connection/lifetime.ts +0 -25
- package/src/connection/reasons.ts +0 -209
- package/src/connection/self.ts +0 -138
- package/src/connection/session.ts +0 -203
- package/src/connection/target.ts +0 -112
- package/src/connection/tsconfig.json +0 -6
- package/src/errors.ts +0 -66
- package/src/graph/.spec/api.d.ts +0 -41
- package/src/graph/.spec/laws/documents.ts +0 -24
- package/src/graph/.spec/laws/projection.ts +0 -13
- package/src/graph/.spec/layout.ts +0 -14
- package/src/graph/__tests__/mutation.test.ts +0 -51
- package/src/graph/__tests__/projection.test.ts +0 -22
- package/src/graph/__tests__/query.test.ts +0 -180
- package/src/graph/class.ts +0 -30
- package/src/graph/index.ts +0 -4
- package/src/graph/mutation.ts +0 -46
- package/src/graph/projection.ts +0 -21
- package/src/graph/query.ts +0 -95
- package/src/graph/tsconfig.json +0 -6
- package/src/identity/.history/ard/bootstrap-root-transfer.md +0 -57
- package/src/identity/.history/ard/domain-mediated-registration.md +0 -36
- package/src/identity/.spec/api.d.ts +0 -124
- package/src/identity/.spec/architecture.md +0 -33
- package/src/identity/.spec/capabilities/identity.ts +0 -7
- package/src/identity/.spec/flows/bootstrap-root.ts +0 -79
- package/src/identity/.spec/flows/domain-mediated-registration.ts +0 -51
- package/src/identity/.spec/flows/import.ts +0 -29
- package/src/identity/.spec/laws/identity.ts +0 -56
- package/src/identity/.spec/layout.ts +0 -13
- package/src/identity/__tests__/fixtures/registry-journey.ts +0 -65
- package/src/identity/__tests__/registration.test.ts +0 -64
- package/src/identity/__tests__/registry.test.ts +0 -74
- package/src/identity/__tests__/transfer.test.ts +0 -198
- package/src/identity/index.ts +0 -23
- package/src/identity/registration.ts +0 -72
- package/src/identity/registry.ts +0 -181
- package/src/identity/transfer.ts +0 -187
- package/src/identity/tsconfig.json +0 -6
- package/src/index.ts +0 -1
- package/src/keys/.spec/api.d.ts +0 -74
- package/src/keys/.spec/architecture.md +0 -13
- package/src/keys/.spec/laws/keys.ts +0 -43
- package/src/keys/.spec/layout.ts +0 -6
- package/src/keys/__tests__/algorithm.test.ts +0 -39
- package/src/keys/__tests__/keys.test.ts +0 -172
- package/src/keys/algorithm.ts +0 -33
- package/src/keys/credential.ts +0 -113
- package/src/keys/index.ts +0 -14
- package/src/keys/pair.ts +0 -219
- package/src/keys/tsconfig.json +0 -6
- package/src/lib/__tests__/admin-target.test.ts +0 -184
- package/src/lib/__tests__/binary.test.ts +0 -70
- package/src/lib/__tests__/browser-retention.test.ts +0 -212
- package/src/lib/__tests__/command-dx.test.ts +0 -102
- package/src/lib/__tests__/concurrency.test.ts +0 -62
- package/src/lib/__tests__/config.test.ts +0 -81
- package/src/lib/__tests__/design.test.ts +0 -99
- package/src/lib/__tests__/domain-publication.test.ts +0 -138
- package/src/lib/__tests__/format.test.ts +0 -22
- package/src/lib/__tests__/idp-session.driver.ts +0 -60
- package/src/lib/__tests__/idp-session.test.ts +0 -404
- package/src/lib/__tests__/idp.test.ts +0 -415
- package/src/lib/__tests__/instance-candidates.test.ts +0 -146
- package/src/lib/__tests__/instance-target.test.ts +0 -213
- package/src/lib/__tests__/instance.test.ts +0 -192
- package/src/lib/__tests__/local-status.test.ts +0 -202
- package/src/lib/__tests__/log-errors.test.ts +0 -64
- package/src/lib/__tests__/log.test.ts +0 -31
- package/src/lib/__tests__/meta.test.ts +0 -55
- package/src/lib/__tests__/output.test.ts +0 -162
- package/src/lib/__tests__/panel.test.ts +0 -40
- package/src/lib/__tests__/port.test.ts +0 -44
- package/src/lib/__tests__/prompt.test.ts +0 -25
- package/src/lib/__tests__/sdk-deps.test.ts +0 -68
- package/src/lib/__tests__/self.test.ts +0 -50
- package/src/lib/__tests__/skills.test.ts +0 -834
- package/src/lib/__tests__/studio-server-deps.test.ts +0 -111
- package/src/lib/__tests__/table.test.ts +0 -53
- package/src/lib/__tests__/update.test.ts +0 -511
- package/src/lib/__tests__/use-target.test.ts +0 -56
- package/src/lib/__tests__/validation.test.ts +0 -34
- package/src/lib/__tests__/view-assets.test.ts +0 -171
- package/src/lib/__tests__/view-external-open-intent.test.ts +0 -150
- package/src/lib/__tests__/view-external-open-origins.test.ts +0 -27
- package/src/lib/__tests__/view-open-intent.test.ts +0 -280
- package/src/lib/__tests__/view-port-allocation.test.ts +0 -82
- package/src/lib/__tests__/view-server.test.ts +0 -91
- package/src/lib/__tests__/view-session.test.ts +0 -100
- package/src/lib/__tests__/view-snapshot.test.ts +0 -77
- package/src/lib/admin-domain.ts +0 -43
- package/src/lib/admin-instance.ts +0 -56
- package/src/lib/admin-target.ts +0 -290
- package/src/lib/binary.ts +0 -127
- package/src/lib/browser-retention.ts +0 -210
- package/src/lib/browser.ts +0 -150
- package/src/lib/ca-fetch.ts +0 -133
- package/src/lib/command-dx.ts +0 -191
- package/src/lib/concurrency.ts +0 -31
- package/src/lib/config.ts +0 -57
- package/src/lib/credential-lifetime.ts +0 -24
- package/src/lib/domain-publication.ts +0 -104
- package/src/lib/failure-debug.ts +0 -26
- package/src/lib/format.ts +0 -4
- package/src/lib/idp-session.ts +0 -156
- package/src/lib/idp.ts +0 -926
- package/src/lib/instance-candidates.ts +0 -49
- package/src/lib/instance-target.ts +0 -197
- package/src/lib/instance.ts +0 -468
- package/src/lib/invocation.ts +0 -11
- package/src/lib/local-status.ts +0 -152
- package/src/lib/log.ts +0 -143
- package/src/lib/login-flow.ts +0 -201
- package/src/lib/meta.ts +0 -90
- package/src/lib/output.ts +0 -238
- package/src/lib/panel.ts +0 -61
- package/src/lib/port.ts +0 -41
- package/src/lib/proc.ts +0 -87
- package/src/lib/prompt.ts +0 -136
- package/src/lib/provision-instance.ts +0 -139
- package/src/lib/sdk-deps.ts +0 -104
- package/src/lib/self.ts +0 -22
- package/src/lib/skills/lock.ts +0 -117
- package/src/lib/skills/sync.ts +0 -878
- package/src/lib/skills.ts +0 -120
- package/src/lib/table.ts +0 -62
- package/src/lib/update.ts +0 -568
- package/src/lib/use-target.ts +0 -24
- package/src/lib/validation.ts +0 -59
- package/src/lib/view/assets.ts +0 -87
- package/src/lib/view/external-open-intent.ts +0 -41
- package/src/lib/view/external-open-origins.ts +0 -37
- package/src/lib/view/host-capabilities.ts +0 -17
- package/src/lib/view/open-intent.ts +0 -67
- package/src/lib/view/port-allocation.ts +0 -19
- package/src/lib/view/resolve.ts +0 -111
- package/src/lib/view/server.ts +0 -259
- package/src/lib/view/session.ts +0 -154
- package/src/lib/view/snapshot.ts +0 -101
- package/src/paths/.spec/api.d.ts +0 -13
- package/src/paths/.spec/architecture.md +0 -5
- package/src/paths/.spec/layout.ts +0 -3
- package/src/paths/index.ts +0 -13
- package/src/program/.spec/api.d.ts +0 -43
- package/src/program/.spec/architecture.md +0 -18
- package/src/program/.spec/laws/program.ts +0 -29
- package/src/program/.spec/layout.ts +0 -14
- package/src/program/__tests__/program.test.ts +0 -556
- package/src/program/argv.ts +0 -14
- package/src/program/build.ts +0 -205
- package/src/program/command.ts +0 -43
- package/src/program/index.ts +0 -3
- package/src/program/options.ts +0 -41
- package/src/program/registry.ts +0 -64
- package/src/program/tsconfig.json +0 -6
- package/src/setup/__tests__/instance-step.test.ts +0 -256
- package/src/setup/__tests__/util.test.ts +0 -29
- package/src/setup/engine.ts +0 -83
- package/src/setup/render.ts +0 -107
- package/src/setup/steps/admin.ts +0 -93
- package/src/setup/steps/agent-browser.ts +0 -81
- package/src/setup/steps/auth.ts +0 -54
- package/src/setup/steps/domain.ts +0 -68
- package/src/setup/steps/index.ts +0 -18
- package/src/setup/steps/instance.ts +0 -206
- package/src/setup/steps/skills-bridge.ts +0 -70
- package/src/setup/steps/skills.ts +0 -61
- package/src/setup/types.ts +0 -61
- package/src/setup/util.ts +0 -34
- package/src/state/.spec/api.d.ts +0 -152
- package/src/state/.spec/architecture.md +0 -45
- package/src/state/.spec/capabilities/state.ts +0 -7
- package/src/state/.spec/flows/identity-update.ts +0 -22
- package/src/state/.spec/laws/state.ts +0 -73
- package/src/state/.spec/layout.ts +0 -15
- package/src/state/__tests__/exchange-credentials.test.ts +0 -341
- package/src/state/__tests__/files.test.ts +0 -136
- package/src/state/__tests__/fixtures/identity-transition.ts +0 -37
- package/src/state/__tests__/fixtures/session-route-process.ts +0 -93
- package/src/state/__tests__/identities.test.ts +0 -142
- package/src/state/__tests__/paths.test.ts +0 -28
- package/src/state/__tests__/session-routes.test.ts +0 -138
- package/src/state/exchange-credentials.ts +0 -250
- package/src/state/files.ts +0 -170
- package/src/state/identities.ts +0 -229
- package/src/state/index.ts +0 -31
- package/src/state/paths.ts +0 -64
- package/src/state/session-routes.ts +0 -34
- package/src/state/tsconfig.json +0 -6
- package/src/telemetry/__tests__/analyze-log.test.ts +0 -38
- package/src/telemetry/__tests__/gate.test.ts +0 -63
- package/src/telemetry/__tests__/recorder.test.ts +0 -111
- package/src/telemetry/__tests__/redact.test.ts +0 -79
- package/src/telemetry/__tests__/retention.test.ts +0 -267
- package/src/telemetry/__tests__/session.test.ts +0 -166
- package/src/telemetry/__tests__/settings.test.ts +0 -102
- package/src/telemetry/__tests__/store-scan.test.ts +0 -128
- package/src/telemetry/__tests__/trigger.test.ts +0 -78
- package/src/telemetry/adapters/__tests__/claude-code.test.ts +0 -89
- package/src/telemetry/adapters/__tests__/codex.test.ts +0 -138
- package/src/telemetry/adapters/__tests__/index.test.ts +0 -88
- package/src/telemetry/adapters/claude-code.ts +0 -90
- package/src/telemetry/adapters/codex.ts +0 -160
- package/src/telemetry/adapters/index.ts +0 -45
- package/src/telemetry/adapters/types.ts +0 -21
- package/src/telemetry/analyze.ts +0 -249
- package/src/telemetry/gate.ts +0 -79
- package/src/telemetry/recorder.ts +0 -68
- package/src/telemetry/redact.ts +0 -53
- package/src/telemetry/retention.ts +0 -176
- package/src/telemetry/session.ts +0 -94
- package/src/telemetry/settings.ts +0 -79
- package/src/telemetry/store.ts +0 -174
- package/src/telemetry/trigger.ts +0 -107
- package/src/telemetry/types.ts +0 -64
- package/src/test-utils.ts +0 -18
- package/src/ui/.spec/api.d.ts +0 -14
- package/src/ui/.spec/architecture.md +0 -14
- package/src/ui/.spec/laws.ts +0 -50
- package/src/ui/.spec/layout.ts +0 -16
- package/src/ui/__tests__/ui.test.ts +0 -1742
- package/src/ui/index.ts +0 -13
- package/src/ui/lock.ts +0 -89
- package/src/ui/model.ts +0 -83
- package/src/ui/operations.ts +0 -1044
- package/src/ui/project.ts +0 -333
- package/src/ui/release.ts +0 -398
- package/src/ui/runner.ts +0 -18
- package/studio/client/dist/assets/index-BFVFs_8x.js +0 -81
- package/studio/client/dist/assets/index-DuB9iUdu.css +0 -2
- package/studio/client/dist/assets/schema-studio-DH6oEWME.js +0 -8
- package/studio/tsconfig.json +0 -24
- package/viewer/tsconfig.json +0 -13
package/src/lib/view/session.ts
DELETED
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import type { ResolvedView } from '@astrale-os/shell'
|
|
2
|
-
|
|
3
|
-
import { closeSync, fchmodSync, openSync } from 'node:fs'
|
|
4
|
-
import { chmod, mkdir, readdir, readFile, rm } from 'node:fs/promises'
|
|
5
|
-
import { join } from 'node:path'
|
|
6
|
-
|
|
7
|
-
import { atomicWrite, paths } from '../../state/index'
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* View-session records: one detached server process per open view, tracked as
|
|
11
|
-
* `~/.astrale/view/<id>.json` (+ `<id>.log`, `<id>.config.json`). Records are
|
|
12
|
-
* garbage-collected on every `astrale view` invocation by probing the pid.
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
export const VIEW_DIR = join(paths.home, 'view')
|
|
16
|
-
|
|
17
|
-
export type ViewSessionRecord = {
|
|
18
|
-
id: string
|
|
19
|
-
pid: number
|
|
20
|
-
port: number
|
|
21
|
-
nonce: string
|
|
22
|
-
/** Host page URL, nonce-scoped: `http://127.0.0.1:<port>/s/<nonce>/`. */
|
|
23
|
-
pageUrl: string
|
|
24
|
-
/** Exact verified View placement passed to Shell without split aliases. */
|
|
25
|
-
view: ResolvedView
|
|
26
|
-
instance?: string
|
|
27
|
-
identity?: string
|
|
28
|
-
createdAt: string
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/** Everything the detached `view __serve` process needs, written before spawn. */
|
|
32
|
-
export type ViewServeConfig = {
|
|
33
|
-
session: ViewSessionRecord
|
|
34
|
-
/** Kernel passthrough opts, re-resolved server-side for token mints. */
|
|
35
|
-
kernel: { url?: string; instance?: string; as?: string; creds?: string; timeout?: string }
|
|
36
|
-
/**
|
|
37
|
-
* Kernel the view dispatches to. `direct: true` hands the child the kernel
|
|
38
|
-
* URL itself (public https kernels — the router serves CORS, and Chrome's
|
|
39
|
-
* local-network-access rules forbid a public view origin fetching our
|
|
40
|
-
* loopback proxy). Otherwise the child gets the nonce-scoped proxy, which
|
|
41
|
-
* handles CORS and self-signed local CAs.
|
|
42
|
-
*/
|
|
43
|
-
proxy: { kernelUrl: string; issuer: string; caFile?: string; direct: boolean }
|
|
44
|
-
/** Exact HTTPS origins the operator consented to open from this View session. */
|
|
45
|
-
externalOrigins: readonly string[]
|
|
46
|
-
idleMs: number
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export const recordPath = (id: string, directory = VIEW_DIR): string =>
|
|
50
|
-
join(directory, `${id}.json`)
|
|
51
|
-
export const logPath = (id: string, directory = VIEW_DIR): string => join(directory, `${id}.log`)
|
|
52
|
-
export const configPath = (id: string, directory = VIEW_DIR): string =>
|
|
53
|
-
join(directory, `${id}.config.json`)
|
|
54
|
-
|
|
55
|
-
/** Create or repair the credential-bearing session directory as owner-only. */
|
|
56
|
-
export async function ensureViewDirectory(directory = VIEW_DIR): Promise<void> {
|
|
57
|
-
await mkdir(directory, { recursive: true, mode: 0o700 })
|
|
58
|
-
await chmod(directory, 0o700)
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
export async function saveRecord(record: ViewSessionRecord, directory = VIEW_DIR): Promise<void> {
|
|
62
|
-
await ensureViewDirectory(directory)
|
|
63
|
-
await atomicWrite(recordPath(record.id, directory), `${JSON.stringify(record, null, 2)}\n`)
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/** Atomically publish the detached process config; it may contain raw `--creds`. */
|
|
67
|
-
export async function saveServeConfig(
|
|
68
|
-
config: ViewServeConfig,
|
|
69
|
-
directory = VIEW_DIR,
|
|
70
|
-
): Promise<void> {
|
|
71
|
-
await ensureViewDirectory(directory)
|
|
72
|
-
await atomicWrite(
|
|
73
|
-
configPath(config.session.id, directory),
|
|
74
|
-
`${JSON.stringify(config, null, 2)}\n`,
|
|
75
|
-
)
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/** Open or repair a session log as owner-only and return its descriptor. */
|
|
79
|
-
export async function openSessionLog(id: string, directory = VIEW_DIR): Promise<number> {
|
|
80
|
-
await ensureViewDirectory(directory)
|
|
81
|
-
const descriptor = openSync(logPath(id, directory), 'a', 0o600)
|
|
82
|
-
try {
|
|
83
|
-
fchmodSync(descriptor, 0o600)
|
|
84
|
-
return descriptor
|
|
85
|
-
} catch (error) {
|
|
86
|
-
closeSync(descriptor)
|
|
87
|
-
throw error
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
export async function removeSessionFiles(id: string, directory = VIEW_DIR): Promise<void> {
|
|
92
|
-
await Promise.all([
|
|
93
|
-
rm(recordPath(id, directory), { force: true }),
|
|
94
|
-
rm(configPath(id, directory), { force: true }),
|
|
95
|
-
rm(logPath(id, directory), { force: true }),
|
|
96
|
-
])
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
export function isAlive(pid: number): boolean {
|
|
100
|
-
try {
|
|
101
|
-
process.kill(pid, 0)
|
|
102
|
-
return true
|
|
103
|
-
} catch {
|
|
104
|
-
return false
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/** List live sessions, removing records whose server process is gone. */
|
|
109
|
-
export async function listSessions(): Promise<ViewSessionRecord[]> {
|
|
110
|
-
let entries: string[]
|
|
111
|
-
try {
|
|
112
|
-
entries = await readdir(VIEW_DIR)
|
|
113
|
-
} catch {
|
|
114
|
-
return []
|
|
115
|
-
}
|
|
116
|
-
const live: ViewSessionRecord[] = []
|
|
117
|
-
for (const entry of entries) {
|
|
118
|
-
if (!/^v-[0-9a-f]+\.json$/.test(entry)) continue
|
|
119
|
-
let record: ViewSessionRecord
|
|
120
|
-
try {
|
|
121
|
-
record = JSON.parse(await readFile(join(VIEW_DIR, entry), 'utf8')) as ViewSessionRecord
|
|
122
|
-
} catch {
|
|
123
|
-
continue
|
|
124
|
-
}
|
|
125
|
-
if (isAlive(record.pid)) live.push(record)
|
|
126
|
-
else await removeSessionFiles(record.id)
|
|
127
|
-
}
|
|
128
|
-
return live.sort((a, b) => a.createdAt.localeCompare(b.createdAt))
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
const CLOSE_GRACE_MS = 2000
|
|
132
|
-
|
|
133
|
-
/** SIGTERM the session server (SIGKILL after a grace period), drop its files. */
|
|
134
|
-
export async function closeSession(record: ViewSessionRecord): Promise<void> {
|
|
135
|
-
if (isAlive(record.pid)) {
|
|
136
|
-
try {
|
|
137
|
-
process.kill(record.pid, 'SIGTERM')
|
|
138
|
-
} catch {
|
|
139
|
-
// already gone
|
|
140
|
-
}
|
|
141
|
-
const deadline = Date.now() + CLOSE_GRACE_MS
|
|
142
|
-
while (isAlive(record.pid) && Date.now() < deadline) {
|
|
143
|
-
await new Promise((resolve) => setTimeout(resolve, 100))
|
|
144
|
-
}
|
|
145
|
-
if (isAlive(record.pid)) {
|
|
146
|
-
try {
|
|
147
|
-
process.kill(record.pid, 'SIGKILL')
|
|
148
|
-
} catch {
|
|
149
|
-
// already gone
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
await removeSessionFiles(record.id)
|
|
154
|
-
}
|
package/src/lib/view/snapshot.ts
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import type { AbResult } from '../browser'
|
|
2
|
-
|
|
3
|
-
const SETTLE_TIMEOUT_MS = 8_000
|
|
4
|
-
const QUIET_WINDOW_MS = 750
|
|
5
|
-
const POLL_MS = 250
|
|
6
|
-
|
|
7
|
-
type SettleClock = {
|
|
8
|
-
now(): number
|
|
9
|
-
sleep(ms: number): Promise<void>
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
type SettlePolicy = {
|
|
13
|
-
timeoutMs: number
|
|
14
|
-
quietWindowMs: number
|
|
15
|
-
pollMs: number
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const realClock: SettleClock = {
|
|
19
|
-
now: Date.now,
|
|
20
|
-
sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)),
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const defaultPolicy: SettlePolicy = {
|
|
24
|
-
timeoutMs: SETTLE_TIMEOUT_MS,
|
|
25
|
-
quietWindowMs: QUIET_WINDOW_MS,
|
|
26
|
-
pollMs: POLL_MS,
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export function snapshotText(result: AbResult): string | null {
|
|
30
|
-
const data = result.data as { snapshot?: unknown } | string | null
|
|
31
|
-
if (typeof data === 'string') return data
|
|
32
|
-
return typeof data?.snapshot === 'string' ? data.snapshot : null
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
function isMeaningfulSnapshot(text: string): boolean {
|
|
36
|
-
return /"[^"\n]+"/.test(text)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function isPendingSnapshot(text: string): boolean {
|
|
40
|
-
if (/\[[^\]]*\bbusy\b[^\]]*\]/i.test(text)) return true
|
|
41
|
-
if (/^\s*-\s*progressbar\b/im.test(text)) return true
|
|
42
|
-
|
|
43
|
-
// Views often render loading text without aria-busy. The timeout still
|
|
44
|
-
// returns that snapshot when a view never leaves its loading state.
|
|
45
|
-
return /"(?:loading|opening|connecting|initializing|preparing|starting|fetching|refreshing|please wait)(?:\b[^"\n]{0,100})?"/i.test(
|
|
46
|
-
text,
|
|
47
|
-
)
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
function fingerprint(text: string): string {
|
|
51
|
-
return text
|
|
52
|
-
.replace(/\bref=e\d+\b/g, 'ref')
|
|
53
|
-
.replace(/\s+/g, ' ')
|
|
54
|
-
.trim()
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Warm the cross-origin accessibility tree, then wait for a meaningful view
|
|
59
|
-
* snapshot to remain unchanged briefly. Loading/busy states never settle
|
|
60
|
-
* early, but the timeout returns their latest snapshot for diagnosis.
|
|
61
|
-
*/
|
|
62
|
-
export async function waitForSettledSnapshot(
|
|
63
|
-
takeSnapshot: () => Promise<AbResult>,
|
|
64
|
-
clock: SettleClock = realClock,
|
|
65
|
-
policy: SettlePolicy = defaultPolicy,
|
|
66
|
-
): Promise<AbResult> {
|
|
67
|
-
let lastAttempt = await takeSnapshot()
|
|
68
|
-
let lastSuccess = lastAttempt.ok ? lastAttempt : null
|
|
69
|
-
let stableFingerprint: string | null = null
|
|
70
|
-
let stableSince = clock.now()
|
|
71
|
-
const deadline = clock.now() + policy.timeoutMs
|
|
72
|
-
|
|
73
|
-
while (true) {
|
|
74
|
-
lastAttempt = await takeSnapshot()
|
|
75
|
-
const sampledAt = clock.now()
|
|
76
|
-
|
|
77
|
-
if (lastAttempt.ok) {
|
|
78
|
-
lastSuccess = lastAttempt
|
|
79
|
-
const text = snapshotText(lastAttempt)
|
|
80
|
-
if (text && isMeaningfulSnapshot(text)) {
|
|
81
|
-
const nextFingerprint = fingerprint(text)
|
|
82
|
-
if (nextFingerprint !== stableFingerprint) {
|
|
83
|
-
stableFingerprint = nextFingerprint
|
|
84
|
-
stableSince = sampledAt
|
|
85
|
-
} else if (!isPendingSnapshot(text) && sampledAt - stableSince >= policy.quietWindowMs) {
|
|
86
|
-
return lastAttempt
|
|
87
|
-
}
|
|
88
|
-
} else {
|
|
89
|
-
stableFingerprint = null
|
|
90
|
-
stableSince = sampledAt
|
|
91
|
-
}
|
|
92
|
-
} else {
|
|
93
|
-
stableFingerprint = null
|
|
94
|
-
stableSince = sampledAt
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
const remaining = deadline - clock.now()
|
|
98
|
-
if (remaining <= 0) return lastSuccess ?? lastAttempt
|
|
99
|
-
await clock.sleep(Math.min(policy.pollMs, remaining))
|
|
100
|
-
}
|
|
101
|
-
}
|
package/src/paths/.spec/api.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export {
|
|
2
|
-
ASTRALE_HOME,
|
|
3
|
-
CONFIG_PATH,
|
|
4
|
-
DATA_DIR,
|
|
5
|
-
IDENTITIES_PATH,
|
|
6
|
-
IDPS_PATH,
|
|
7
|
-
IDP_SESSIONS_DIR,
|
|
8
|
-
INSTALL_PATH,
|
|
9
|
-
INSTANCES_PATH,
|
|
10
|
-
KEYS_DIR,
|
|
11
|
-
createPaths,
|
|
12
|
-
} from '../../state/.spec/api.js'
|
|
13
|
-
export type { PathEnvironment, Paths } from '../../state/.spec/api.js'
|
package/src/paths/index.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export {
|
|
2
|
-
ASTRALE_HOME,
|
|
3
|
-
CONFIG_PATH,
|
|
4
|
-
DATA_DIR,
|
|
5
|
-
IDENTITIES_PATH,
|
|
6
|
-
IDPS_PATH,
|
|
7
|
-
IDP_SESSIONS_DIR,
|
|
8
|
-
INSTALL_PATH,
|
|
9
|
-
INSTANCES_PATH,
|
|
10
|
-
KEYS_DIR,
|
|
11
|
-
createPaths,
|
|
12
|
-
} from '../state/index'
|
|
13
|
-
export type { PathEnvironment, Paths } from '../state/index'
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import type { Command } from 'commander'
|
|
2
|
-
|
|
3
|
-
/** One positional argument in a CLI command definition. */
|
|
4
|
-
export interface CommandArgument {
|
|
5
|
-
readonly name: string
|
|
6
|
-
readonly description: string
|
|
7
|
-
readonly required?: boolean
|
|
8
|
-
readonly variadic?: boolean
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
/** One Commander-compatible option in a CLI command definition. */
|
|
12
|
-
export interface CommandOption {
|
|
13
|
-
readonly flags: string
|
|
14
|
-
readonly description: string
|
|
15
|
-
readonly default?: string
|
|
16
|
-
readonly choices?: string[]
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/** Internal authoring shape implemented by each command module. */
|
|
20
|
-
export interface CommandDefinition {
|
|
21
|
-
readonly name: string
|
|
22
|
-
readonly description: string
|
|
23
|
-
readonly summary?: string
|
|
24
|
-
readonly hidden?: boolean
|
|
25
|
-
readonly aliases?: string[]
|
|
26
|
-
readonly arguments?: CommandArgument[]
|
|
27
|
-
readonly options?: CommandOption[]
|
|
28
|
-
readonly afterHelpText?: string
|
|
29
|
-
/** Opaque Commander callback; each command module owns its concrete argument tuple. */
|
|
30
|
-
readonly action: (...args: never[]) => Promise<void>
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/** Internal composition shape for one group of commands. */
|
|
34
|
-
export interface CommandGroup {
|
|
35
|
-
readonly name: string
|
|
36
|
-
readonly description: string
|
|
37
|
-
readonly summary?: string
|
|
38
|
-
readonly commands: CommandDefinition[]
|
|
39
|
-
readonly subgroups?: CommandGroup[]
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/** Build a fresh, complete Commander tree without parsing process arguments. */
|
|
43
|
-
export function buildProgram(): Promise<Command>
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# CLI program architecture
|
|
2
|
-
|
|
3
|
-
The program module owns Commander composition, not command effects or process lifecycle. It loads
|
|
4
|
-
the existing command definitions only when `buildProgram` runs, attaches the single shared Kernel
|
|
5
|
-
option set, and returns a fresh unparsed tree. Command modules own their actions; the binary owns
|
|
6
|
-
argv, telemetry, signal, error, and exit handling.
|
|
7
|
-
|
|
8
|
-
```mermaid
|
|
9
|
-
flowchart LR
|
|
10
|
-
B[Binary entrypoint] --> P[buildProgram]
|
|
11
|
-
D[Command definitions] --> P
|
|
12
|
-
O[Shared Kernel options] --> P
|
|
13
|
-
P --> C[Fresh Commander tree]
|
|
14
|
-
C --> B
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
The module is private to the CLI package. The exhaustive user-facing grammar remains the generated
|
|
18
|
-
Commander inventory rather than a duplicate declaration tree.
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { defineLaw } from '@astrale-os/spec/authoring'
|
|
2
|
-
|
|
3
|
-
export const CLI_PROGRAM_LEDGERED_SURFACE = defineLaw({
|
|
4
|
-
id: 'CLI-PROGRAM-LEDGERED-SURFACE',
|
|
5
|
-
statement:
|
|
6
|
-
'Program composition exposes one exact root and nested command surface; metadata, options, aliases, visibility, Commander behavior, rendered help, and package-derived version change only through a deliberate compatibility-ledger entry.',
|
|
7
|
-
tests: [
|
|
8
|
-
{
|
|
9
|
-
file: '__tests__/program.test.ts',
|
|
10
|
-
id: 'TEST-CLI-PROGRAM-MATCHES-LEDGERED-SURFACE',
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
file: '__tests__/program.test.ts',
|
|
14
|
-
id: 'TEST-CLI-PROGRAM-VERSION-SINGLE-SOURCE',
|
|
15
|
-
},
|
|
16
|
-
],
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
export const CLI_PROGRAM_FRESH_ROOT = defineLaw({
|
|
20
|
-
id: 'CLI-PROGRAM-FRESH-ROOT',
|
|
21
|
-
statement:
|
|
22
|
-
'Each build produces an independent unparsed Commander root; mutation by one consumer cannot alter a later build.',
|
|
23
|
-
tests: [
|
|
24
|
-
{
|
|
25
|
-
file: '__tests__/program.test.ts',
|
|
26
|
-
id: 'TEST-CLI-PROGRAM-BUILDS-ISOLATED-ROOTS',
|
|
27
|
-
},
|
|
28
|
-
],
|
|
29
|
-
})
|