@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.
- package/README.md +14 -166
- package/package.json +10 -102
- package/.check-workspace.cjs +0 -40
- package/LICENSE +0 -202
- package/THIRD-PARTY-NOTICES.md +0 -27
- package/dist/astrale.js +0 -93172
- package/dist/public/connect-core.js +0 -29187
- package/dist/public/keys/index.js +0 -5651
- package/dist/public/paths/index.js +0 -4282
- package/dist/types/admin/instance/model.d.ts +0 -39
- package/dist/types/connect-core.d.ts +0 -22
- package/dist/types/connection/auth.d.ts +0 -36
- package/dist/types/errors.d.ts +0 -23
- package/dist/types/identity/registry.d.ts +0 -25
- package/dist/types/keys/algorithm.d.ts +0 -6
- package/dist/types/keys/credential.d.ts +0 -21
- package/dist/types/keys/index.d.ts +0 -4
- package/dist/types/keys/pair.d.ts +0 -34
- package/dist/types/lib/admin-target.d.ts +0 -78
- package/dist/types/lib/ca-fetch.d.ts +0 -2
- package/dist/types/lib/config.d.ts +0 -71
- package/dist/types/lib/failure-debug.d.ts +0 -1
- package/dist/types/lib/format.d.ts +0 -1
- package/dist/types/lib/idp-session.d.ts +0 -33
- package/dist/types/lib/idp.d.ts +0 -404
- package/dist/types/lib/instance-target.d.ts +0 -38
- package/dist/types/lib/instance.d.ts +0 -196
- package/dist/types/lib/invocation.d.ts +0 -3
- package/dist/types/lib/log.d.ts +0 -33
- package/dist/types/lib/login-flow.d.ts +0 -49
- package/dist/types/lib/meta.d.ts +0 -36
- package/dist/types/lib/output.d.ts +0 -87
- package/dist/types/lib/proc.d.ts +0 -43
- package/dist/types/lib/table.d.ts +0 -18
- package/dist/types/lib/update.d.ts +0 -131
- package/dist/types/lib/validation.d.ts +0 -11
- package/dist/types/paths/index.d.ts +0 -2
- package/dist/types/state/exchange-credentials.d.ts +0 -25
- package/dist/types/state/files.d.ts +0 -9
- package/dist/types/state/identities.d.ts +0 -42
- package/dist/types/state/index.d.ts +0 -8
- package/dist/types/state/paths.d.ts +0 -32
- package/src/__tests__/fixtures/publication.ts +0 -20
- package/src/admin/.spec/api.d.ts +0 -3
- package/src/admin/.spec/architecture.md +0 -15
- package/src/admin/.spec/icon.svg +0 -3
- package/src/admin/.spec/layout.ts +0 -6
- package/src/admin/__tests__/binding.test.ts +0 -31
- package/src/admin/__tests__/fixture.ts +0 -101
- package/src/admin/binding.ts +0 -98
- package/src/admin/catalog/.spec/api.d.ts +0 -65
- package/src/admin/catalog/.spec/architecture.md +0 -6
- 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 -142
- package/src/admin/catalog/client.ts +0 -218
- 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/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 -66
- 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 -266
- package/src/admin/instance/client.ts +0 -290
- package/src/admin/instance/index.ts +0 -16
- package/src/admin/instance/model.ts +0 -66
- package/src/admin/instance/tsconfig.json +0 -8
- package/src/commands/__tests__/admin-instance.test.ts +0 -88
- 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 -29
- package/src/commands/__tests__/domain-install-operation.test.ts +0 -126
- 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 -21
- 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-create-hosts.test.ts +0 -29
- 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-use.test.ts +0 -67
- package/src/commands/__tests__/introspect-parse.test.ts +0 -21
- package/src/commands/__tests__/logs.test.ts +0 -97
- package/src/commands/__tests__/read-commands.test.ts +0 -294
- 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 -21
- 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 -149
- 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 -52
- package/src/commands/auth/status.ts +0 -86
- package/src/commands/auth/token.ts +0 -174
- package/src/commands/browser.ts +0 -207
- package/src/commands/call-describe.ts +0 -123
- package/src/commands/call.ts +0 -205
- package/src/commands/domain/install.ts +0 -548
- package/src/commands/domain/list.ts +0 -155
- package/src/commands/domain/publish.ts +0 -133
- 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 -196
- 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 -69
- package/src/commands/instance/delete.ts +0 -68
- package/src/commands/instance/forget.ts +0 -26
- package/src/commands/instance/list.ts +0 -197
- package/src/commands/instance/status.ts +0 -38
- package/src/commands/instance/use.ts +0 -259
- package/src/commands/introspect.ts +0 -110
- package/src/commands/logs.ts +0 -283
- package/src/commands/mutate.ts +0 -122
- package/src/commands/query.ts +0 -136
- package/src/commands/session/analyze.ts +0 -50
- 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 -107
- package/src/commands/update.ts +0 -334
- package/src/commands/use.ts +0 -86
- package/src/commands/view-serve.ts +0 -26
- package/src/commands/view.ts +0 -614
- 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 -47
- 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 -61
- package/src/connection/.spec/laws/connection.ts +0 -205
- package/src/connection/.spec/layout.ts +0 -21
- package/src/connection/__tests__/auth.test.ts +0 -128
- 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 -119
- package/src/connection/__tests__/errors.test.ts +0 -577
- package/src/connection/__tests__/exchange.test.ts +0 -295
- 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 -140
- package/src/connection/__tests__/target.test.ts +0 -93
- package/src/connection/auth.ts +0 -236
- package/src/connection/call.ts +0 -7
- package/src/connection/command.ts +0 -67
- package/src/connection/credential.ts +0 -117
- package/src/connection/errors.ts +0 -1
- package/src/connection/exchange.ts +0 -311
- 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/reasons.ts +0 -209
- package/src/connection/self.ts +0 -138
- package/src/connection/session.ts +0 -185
- 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 -173
- 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 -97
- 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/.spec/schemas/identity-export-v1.schema.json +0 -25
- package/src/identity/__tests__/fixtures/registry-journey.ts +0 -53
- package/src/identity/__tests__/registration.test.ts +0 -64
- package/src/identity/__tests__/registry.test.ts +0 -70
- 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 -179
- 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 -168
- package/src/keys/algorithm.ts +0 -33
- package/src/keys/credential.ts +0 -112
- 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 -55
- 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 -54
- package/src/lib/__tests__/design.test.ts +0 -99
- package/src/lib/__tests__/domain-publication.test.ts +0 -133
- package/src/lib/__tests__/format.test.ts +0 -22
- package/src/lib/__tests__/idp-session.driver.ts +0 -53
- package/src/lib/__tests__/idp-session.test.ts +0 -379
- package/src/lib/__tests__/idp.test.ts +0 -415
- package/src/lib/__tests__/instance-candidates.test.ts +0 -148
- package/src/lib/__tests__/instance-target.test.ts +0 -212
- 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__/studio-server-deps.test.ts +0 -111
- package/src/lib/__tests__/table.test.ts +0 -53
- package/src/lib/__tests__/update.test.ts +0 -351
- 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 -146
- 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 -68
- package/src/lib/__tests__/view-session.test.ts +0 -99
- 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 -50
- package/src/lib/admin-target.ts +0 -290
- package/src/lib/binary.ts +0 -110
- package/src/lib/browser.ts +0 -150
- package/src/lib/ca-fetch.ts +0 -133
- package/src/lib/command-dx.ts +0 -188
- package/src/lib/concurrency.ts +0 -31
- package/src/lib/config.ts +0 -46
- package/src/lib/domain-publication.ts +0 -102
- package/src/lib/failure-debug.ts +0 -26
- package/src/lib/format.ts +0 -4
- package/src/lib/idp-session.ts +0 -134
- package/src/lib/idp.ts +0 -906
- package/src/lib/instance-candidates.ts +0 -49
- package/src/lib/instance-target.ts +0 -197
- package/src/lib/instance.ts +0 -463
- 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 -82
- package/src/lib/prompt.ts +0 -136
- package/src/lib/provision-instance.ts +0 -162
- package/src/lib/sdk-deps.ts +0 -104
- package/src/lib/self.ts +0 -22
- package/src/lib/skills.ts +0 -171
- package/src/lib/table.ts +0 -62
- package/src/lib/update.ts +0 -409
- package/src/lib/use-target.ts +0 -24
- package/src/lib/validation.ts +0 -59
- package/src/lib/view/assets.ts +0 -78
- 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 -244
- package/src/lib/view/session.ts +0 -152
- 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 -42
- 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 -362
- package/src/program/build.ts +0 -183
- package/src/program/command.ts +0 -42
- package/src/program/index.ts +0 -2
- package/src/program/options.ts +0 -41
- package/src/program/registry.ts +0 -63
- package/src/program/tsconfig.json +0 -6
- package/src/setup/__tests__/instance-step.test.ts +0 -239
- 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 -199
- package/src/setup/steps/skills-bridge.ts +0 -70
- package/src/setup/steps/skills.ts +0 -59
- package/src/setup/types.ts +0 -61
- package/src/setup/util.ts +0 -34
- package/src/state/.spec/api.d.ts +0 -133
- package/src/state/.spec/architecture.md +0 -31
- 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 -14
- package/src/state/__tests__/exchange-credentials.test.ts +0 -188
- package/src/state/__tests__/files.test.ts +0 -113
- package/src/state/__tests__/fixtures/identity-transition.ts +0 -37
- package/src/state/__tests__/identities.test.ts +0 -142
- package/src/state/__tests__/paths.test.ts +0 -27
- package/src/state/exchange-credentials.ts +0 -219
- package/src/state/files.ts +0 -129
- package/src/state/identities.ts +0 -229
- package/src/state/index.ts +0 -29
- package/src/state/paths.ts +0 -61
- package/src/state/tsconfig.json +0 -6
- package/src/telemetry/__tests__/gate.test.ts +0 -63
- package/src/telemetry/__tests__/recorder.test.ts +0 -110
- package/src/telemetry/__tests__/redact.test.ts +0 -79
- package/src/telemetry/__tests__/session.test.ts +0 -166
- package/src/telemetry/__tests__/trigger.test.ts +0 -49
- 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 -227
- package/src/telemetry/gate.ts +0 -79
- package/src/telemetry/recorder.ts +0 -57
- package/src/telemetry/redact.ts +0 -53
- package/src/telemetry/session.ts +0 -88
- package/src/telemetry/settings.ts +0 -26
- package/src/telemetry/store.ts +0 -91
- package/src/telemetry/trigger.ts +0 -119
- package/src/telemetry/types.ts +0 -64
- package/src/test-utils.ts +0 -18
- package/studio/client/dist/assets/elk-api-Di4OXGNH.js +0 -1
- package/studio/client/dist/assets/elk-worker.min-C9JGDOE-.js +0 -6312
- package/studio/client/dist/assets/index-BLm6J11H.js +0 -81
- package/studio/client/dist/assets/index-BiGR8Oo9.css +0 -1
- package/studio/client/dist/assets/index-ChOr3yP0.css +0 -1
- package/studio/client/dist/assets/index-DTjvkOUX.js +0 -8
- package/studio/client/dist/index.html +0 -13
- package/studio/package.json +0 -65
- package/studio/server/agent/ask.test.ts +0 -74
- package/studio/server/agent/ask.ts +0 -71
- package/studio/server/agent/bridge/client.test.ts +0 -49
- package/studio/server/agent/bridge/client.ts +0 -37
- package/studio/server/agent/bridge/grant.test.ts +0 -62
- package/studio/server/agent/bridge/grant.ts +0 -84
- package/studio/server/agent/bridge/routes.test.ts +0 -151
- package/studio/server/agent/bridge/routes.ts +0 -148
- package/studio/server/agent/bridge/stdio.ts +0 -195
- package/studio/server/agent/conversation.test.ts +0 -89
- package/studio/server/agent/conversation.ts +0 -158
- package/studio/server/agent/harness/adapter.ts +0 -171
- package/studio/server/agent/harness/claude/adapter.test.ts +0 -348
- package/studio/server/agent/harness/claude/adapter.ts +0 -71
- package/studio/server/agent/harness/claude/ask.ts +0 -114
- package/studio/server/agent/harness/claude/capabilities.ts +0 -27
- package/studio/server/agent/harness/claude/command.ts +0 -63
- package/studio/server/agent/harness/claude/events.ts +0 -215
- package/studio/server/agent/harness/claude/loadout.ts +0 -132
- package/studio/server/agent/harness/claude/mcp.test.ts +0 -36
- package/studio/server/agent/harness/claude/mcp.ts +0 -41
- package/studio/server/agent/harness/claude/skills.ts +0 -43
- package/studio/server/agent/harness/codex/adapter.test.ts +0 -269
- package/studio/server/agent/harness/codex/adapter.ts +0 -116
- package/studio/server/agent/harness/codex/ask.test.ts +0 -176
- package/studio/server/agent/harness/codex/ask.ts +0 -181
- package/studio/server/agent/harness/codex/command.test.ts +0 -69
- package/studio/server/agent/harness/codex/command.ts +0 -43
- package/studio/server/agent/harness/codex/events.test.ts +0 -94
- package/studio/server/agent/harness/codex/events.ts +0 -132
- package/studio/server/agent/harness/codex/exec.ts +0 -113
- package/studio/server/agent/harness/codex/loadout.ts +0 -60
- package/studio/server/agent/harness/codex/mcp.test.ts +0 -32
- package/studio/server/agent/harness/codex/mcp.ts +0 -27
- package/studio/server/agent/harness/codex/models.test.ts +0 -167
- package/studio/server/agent/harness/codex/models.ts +0 -211
- package/studio/server/agent/harness/codex/skills.ts +0 -33
- package/studio/server/agent/harness/gateway/config.test.ts +0 -98
- package/studio/server/agent/harness/gateway/config.ts +0 -214
- package/studio/server/agent/harness/gateway/token.test.ts +0 -133
- package/studio/server/agent/harness/gateway/token.ts +0 -166
- package/studio/server/agent/harness/mock/adapter.ts +0 -190
- package/studio/server/agent/harness/mock/domain-edit.ts +0 -41
- package/studio/server/agent/harness/process.test.ts +0 -46
- package/studio/server/agent/harness/process.ts +0 -104
- package/studio/server/agent/harness/registry.ts +0 -37
- package/studio/server/agent/harness/selection.test.ts +0 -75
- package/studio/server/agent/harness/selection.ts +0 -85
- package/studio/server/agent/harness/skills.test.ts +0 -95
- package/studio/server/agent/harness/skills.ts +0 -100
- package/studio/server/agent/layout.test.ts +0 -95
- package/studio/server/agent/notify.ts +0 -12
- package/studio/server/agent/prompts/anchors.test.ts +0 -70
- package/studio/server/agent/prompts/anchors.ts +0 -153
- package/studio/server/agent/prompts/ask.ts +0 -34
- package/studio/server/agent/prompts/system.test.ts +0 -13
- package/studio/server/agent/prompts/system.ts +0 -99
- package/studio/server/agent/prompts/turn.ts +0 -66
- package/studio/server/agent/routes.test.ts +0 -176
- package/studio/server/agent/routes.ts +0 -214
- package/studio/server/agent/run/completion.ts +0 -193
- package/studio/server/agent/run/coordinator.test.ts +0 -337
- package/studio/server/agent/run/coordinator.ts +0 -104
- package/studio/server/agent/run/live-state.ts +0 -73
- package/studio/server/agent/run/preparation.ts +0 -163
- package/studio/server/agent/run/transcript.test.ts +0 -81
- package/studio/server/agent/run/transcript.ts +0 -196
- package/studio/server/agent/run/usage.test.ts +0 -70
- package/studio/server/agent/run/usage.ts +0 -62
- package/studio/server/agent/stream.ts +0 -37
- package/studio/server/agent/telemetry.ts +0 -13
- package/studio/server/api/canvas.ts +0 -43
- package/studio/server/api/comments.ts +0 -85
- package/studio/server/api/context.ts +0 -61
- package/studio/server/api/deployment.ts +0 -39
- package/studio/server/api/documents.ts +0 -55
- package/studio/server/api/domain.ts +0 -59
- package/studio/server/api/http.ts +0 -45
- package/studio/server/api/project.ts +0 -57
- package/studio/server/api/schema.ts +0 -12
- package/studio/server/api/views.ts +0 -57
- package/studio/server/api/workspace.ts +0 -60
- package/studio/server/api-agent-loadout.test.ts +0 -69
- package/studio/server/api.test.ts +0 -147
- package/studio/server/api.ts +0 -34
- package/studio/server/cache.test.ts +0 -122
- package/studio/server/cache.ts +0 -303
- package/studio/server/cli-consumers.test.ts +0 -494
- package/studio/server/cli.test.ts +0 -88
- package/studio/server/cli.ts +0 -240
- package/studio/server/client-package.test.ts +0 -147
- package/studio/server/client-package.ts +0 -266
- package/studio/server/detect.ts +0 -81
- package/studio/server/domain.test.ts +0 -77
- package/studio/server/domain.ts +0 -124
- package/studio/server/environment/dotenv-preview.test.ts +0 -39
- package/studio/server/environment/dotenv-preview.ts +0 -27
- package/studio/server/environment/files.test.ts +0 -53
- package/studio/server/environment/files.ts +0 -120
- package/studio/server/handoff/copy.ts +0 -171
- package/studio/server/handoff/service.test.ts +0 -22
- package/studio/server/handoff/service.ts +0 -62
- package/studio/server/index.ts +0 -148
- package/studio/server/instances/active.ts +0 -72
- package/studio/server/instances/deploy-record.test.ts +0 -31
- package/studio/server/instances/deploy-record.ts +0 -37
- package/studio/server/instances/deploy.ts +0 -56
- package/studio/server/instances/probe.test.ts +0 -67
- package/studio/server/instances/probe.ts +0 -67
- package/studio/server/instances/status.test.ts +0 -12
- package/studio/server/instances/status.ts +0 -49
- package/studio/server/introspect/anatomy/client-tree.ts +0 -57
- package/studio/server/introspect/anatomy/env-fields.ts +0 -66
- package/studio/server/introspect/anatomy/schema-definition.ts +0 -53
- package/studio/server/introspect/anatomy/source.ts +0 -181
- package/studio/server/introspect/anatomy/views/routes.ts +0 -114
- package/studio/server/introspect/anatomy/views.ts +0 -53
- package/studio/server/introspect/anatomy-extras.test.ts +0 -265
- package/studio/server/introspect/anatomy-extras.ts +0 -10
- package/studio/server/introspect/anatomy.test.ts +0 -41
- package/studio/server/introspect/anatomy.ts +0 -147
- package/studio/server/introspect/bundle.ts +0 -69
- package/studio/server/introspect/canonical-schema.test.ts +0 -179
- package/studio/server/introspect/canonical-schema.ts +0 -583
- package/studio/server/introspect/config-preview.test.ts +0 -32
- package/studio/server/introspect/config-preview.ts +0 -119
- package/studio/server/introspect/core-extractor.ts +0 -30
- package/studio/server/introspect/core.ts +0 -45
- package/studio/server/introspect/diff.test.ts +0 -124
- package/studio/server/introspect/diff.ts +0 -316
- package/studio/server/introspect/extractor.ts +0 -41
- package/studio/server/introspect/hash.ts +0 -24
- package/studio/server/introspect/overlay-tsmorph.test.ts +0 -146
- package/studio/server/introspect/overlay-tsmorph.ts +0 -9
- package/studio/server/introspect/overlay.test.ts +0 -44
- package/studio/server/introspect/overlay.ts +0 -40
- package/studio/server/introspect/revision.test.ts +0 -54
- package/studio/server/introspect/revision.ts +0 -49
- package/studio/server/introspect/runtime.test.ts +0 -157
- package/studio/server/introspect/runtime.ts +0 -140
- package/studio/server/introspect/schema-ir-json.test.ts +0 -70
- package/studio/server/introspect/schema-ir-json.ts +0 -151
- package/studio/server/introspect/schema-refs.test.ts +0 -55
- package/studio/server/introspect/schema-refs.ts +0 -32
- package/studio/server/introspect/source-overlay/annotations.ts +0 -14
- package/studio/server/introspect/source-overlay/handlers.ts +0 -161
- package/studio/server/introspect/source-overlay/kernel-calls.ts +0 -46
- package/studio/server/introspect/source-overlay/project.ts +0 -248
- package/studio/server/introspect/source-overlay/spans.ts +0 -330
- package/studio/server/json.ts +0 -46
- package/studio/server/lifecycle.ts +0 -42
- package/studio/server/sse.test.ts +0 -26
- package/studio/server/sse.ts +0 -60
- package/studio/server/state/baseline.test.ts +0 -267
- package/studio/server/state/baseline.ts +0 -354
- package/studio/server/state/comments.test.ts +0 -94
- package/studio/server/state/comments.ts +0 -484
- package/studio/server/state/context.ts +0 -199
- package/studio/server/state/documents.ts +0 -111
- package/studio/server/state/integrations.ts +0 -81
- package/studio/server/state/layout.test.ts +0 -34
- package/studio/server/state/layout.ts +0 -82
- package/studio/server/state/settings.test.ts +0 -78
- package/studio/server/state/settings.ts +0 -73
- package/studio/server/state/store.test.ts +0 -122
- package/studio/server/state/store.ts +0 -146
- package/studio/server/state/visibility.ts +0 -48
- package/studio/server/views/model.test.ts +0 -57
- package/studio/server/views/model.ts +0 -66
- package/studio/server/views/runtime.ts +0 -40
- package/studio/server/views/selection-repository.test.ts +0 -31
- package/studio/server/views/selection-repository.ts +0 -60
- package/studio/server/views/session.test.ts +0 -73
- package/studio/server/views/session.ts +0 -166
- package/studio/server/views/target.test.ts +0 -78
- package/studio/server/views/target.ts +0 -222
- package/studio/server/watch.test.ts +0 -36
- package/studio/server/watch.ts +0 -93
- package/studio/server/workspace/catalog.test.ts +0 -17
- package/studio/server/workspace/catalog.ts +0 -43
- package/studio/server/workspace/create.test.ts +0 -37
- package/studio/server/workspace/create.ts +0 -162
- package/studio/server/workspace/git.ts +0 -75
- package/studio/server/workspace/updates.ts +0 -83
- package/studio/server/workspace-state.ts +0 -26
- package/studio/server/workspace-watch.ts +0 -106
- package/studio/shared/agent-effort.test.ts +0 -12
- package/studio/shared/agent-effort.ts +0 -15
- package/studio/shared/agent-models.test.ts +0 -9
- package/studio/shared/agent-models.ts +0 -14
- package/studio/shared/contracts/README.md +0 -16
- package/studio/shared/contracts/agent.ts +0 -270
- package/studio/shared/contracts/runtime.ts +0 -50
- package/studio/shared/contracts/schema.ts +0 -393
- package/studio/shared/contracts/surface.test.ts +0 -317
- package/studio/shared/contracts/workspace.ts +0 -265
- package/studio/shared/layout.test.ts +0 -116
- package/studio/shared/schema/identity.test.ts +0 -34
- package/studio/shared/schema/identity.ts +0 -68
- package/studio/shared/settings-values.test.ts +0 -18
- package/studio/shared/settings-values.ts +0 -20
- package/studio/shared/types.ts +0 -14
- package/studio/tsconfig.json +0 -23
- package/tsconfig.json +0 -14
- package/viewer/dist/index.html +0 -93
- package/viewer/dist/main.js +0 -76
- package/viewer/tsconfig.json +0 -13
|
@@ -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
|
-
})
|
|
@@ -1,362 +0,0 @@
|
|
|
1
|
-
import type { Command } from 'commander'
|
|
2
|
-
|
|
3
|
-
import { describe, expect, test } from 'bun:test'
|
|
4
|
-
import { createHash } from 'node:crypto'
|
|
5
|
-
import { existsSync, readFileSync } from 'node:fs'
|
|
6
|
-
import { join } from 'node:path'
|
|
7
|
-
|
|
8
|
-
import { buildProgram } from '../index'
|
|
9
|
-
|
|
10
|
-
// Help output is the public CLI contract: version, spec anchors, and skill mirror stay in sync.
|
|
11
|
-
|
|
12
|
-
const cliRoot = join(import.meta.dir, '../../..')
|
|
13
|
-
|
|
14
|
-
/** Every command in the tree (root + groups + nested subgroups), depth-first. */
|
|
15
|
-
function allCommands(cmd: Command): Command[] {
|
|
16
|
-
return [cmd, ...cmd.commands.flatMap(allCommands)]
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
describe('help contract — version is single-sourced', () => {
|
|
20
|
-
/** @evidence TEST-CLI-PROGRAM-VERSION-SINGLE-SOURCE */
|
|
21
|
-
test('program version === package.json === release-please manifest', async () => {
|
|
22
|
-
const program = await buildProgram()
|
|
23
|
-
const pkg = JSON.parse(readFileSync(join(cliRoot, 'package.json'), 'utf8')) as {
|
|
24
|
-
version: string
|
|
25
|
-
}
|
|
26
|
-
const manifest = JSON.parse(
|
|
27
|
-
readFileSync(join(cliRoot, '.release-please-manifest.json'), 'utf8'),
|
|
28
|
-
) as Record<string, string>
|
|
29
|
-
|
|
30
|
-
// Program version must follow both package.json and release-please metadata.
|
|
31
|
-
expect(program.version()).toBe(pkg.version)
|
|
32
|
-
expect(manifest['.']).toBe(pkg.version)
|
|
33
|
-
})
|
|
34
|
-
})
|
|
35
|
-
|
|
36
|
-
type InspectedCommand = Command & {
|
|
37
|
-
readonly _allowExcessArguments?: boolean
|
|
38
|
-
readonly _allowUnknownOption?: boolean
|
|
39
|
-
readonly _combineFlagAndOptionalValue?: boolean
|
|
40
|
-
readonly _enablePositionalOptions?: boolean
|
|
41
|
-
readonly _hidden?: boolean
|
|
42
|
-
readonly _passThroughOptions?: boolean
|
|
43
|
-
readonly _showHelpAfterError?: boolean
|
|
44
|
-
readonly _showSuggestionAfterError?: boolean
|
|
45
|
-
readonly _storeOptionsAsProperties?: boolean
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
type InspectedArgument = Command['registeredArguments'][number] & {
|
|
49
|
-
readonly parseArg?: unknown
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
type InspectedOption = Command['options'][number] & {
|
|
53
|
-
readonly conflictsWith?: readonly string[]
|
|
54
|
-
readonly implied?: Readonly<Record<string, unknown>>
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function ledgeredSurface(root: Command): readonly object[] {
|
|
58
|
-
const rows: object[] = []
|
|
59
|
-
const visit = (command: Command, parents: readonly string[]): void => {
|
|
60
|
-
const inspected = command as InspectedCommand
|
|
61
|
-
rows.push({
|
|
62
|
-
command: parents.join(' '),
|
|
63
|
-
aliases: command.aliases(),
|
|
64
|
-
description: command.description(),
|
|
65
|
-
summary: command.summary(),
|
|
66
|
-
arguments: command.registeredArguments.map((argument) => {
|
|
67
|
-
const inspectedArgument = argument as InspectedArgument
|
|
68
|
-
return {
|
|
69
|
-
name: argument.name(),
|
|
70
|
-
description: argument.description,
|
|
71
|
-
required: Boolean(argument.required),
|
|
72
|
-
variadic: Boolean(argument.variadic),
|
|
73
|
-
defaultValue: argument.defaultValue ?? null,
|
|
74
|
-
choices: argument.argChoices ?? null,
|
|
75
|
-
hasParser: typeof inspectedArgument.parseArg === 'function',
|
|
76
|
-
}
|
|
77
|
-
}),
|
|
78
|
-
options: command.options.map((option) => {
|
|
79
|
-
const inspectedOption = option as InspectedOption
|
|
80
|
-
return {
|
|
81
|
-
flags: option.flags,
|
|
82
|
-
attribute: option.attributeName(),
|
|
83
|
-
description: option.description,
|
|
84
|
-
required: Boolean(option.required),
|
|
85
|
-
optional: Boolean(option.optional),
|
|
86
|
-
variadic: Boolean(option.variadic),
|
|
87
|
-
mandatory: Boolean(option.mandatory),
|
|
88
|
-
negate: Boolean(option.negate),
|
|
89
|
-
hidden: Boolean(option.hidden),
|
|
90
|
-
defaultValue: option.defaultValue ?? null,
|
|
91
|
-
presetArg: option.presetArg ?? null,
|
|
92
|
-
envVar: option.envVar ?? null,
|
|
93
|
-
choices: option.argChoices ?? null,
|
|
94
|
-
conflictsWith: inspectedOption.conflictsWith ?? [],
|
|
95
|
-
implied: inspectedOption.implied ?? null,
|
|
96
|
-
hasParser: typeof option.parseArg === 'function',
|
|
97
|
-
}
|
|
98
|
-
}),
|
|
99
|
-
behavior: {
|
|
100
|
-
allowExcessArguments: Boolean(inspected._allowExcessArguments),
|
|
101
|
-
allowUnknownOption: Boolean(inspected._allowUnknownOption),
|
|
102
|
-
combineFlagAndOptionalValue: Boolean(inspected._combineFlagAndOptionalValue),
|
|
103
|
-
enablePositionalOptions: Boolean(inspected._enablePositionalOptions),
|
|
104
|
-
passThroughOptions: Boolean(inspected._passThroughOptions),
|
|
105
|
-
showHelpAfterError: Boolean(inspected._showHelpAfterError),
|
|
106
|
-
showSuggestionAfterError: Boolean(inspected._showSuggestionAfterError),
|
|
107
|
-
storeOptionsAsProperties: Boolean(inspected._storeOptionsAsProperties),
|
|
108
|
-
},
|
|
109
|
-
hidden: Boolean(inspected._hidden),
|
|
110
|
-
help: command.helpInformation(),
|
|
111
|
-
})
|
|
112
|
-
for (const child of command.commands) visit(child, [...parents, child.name()])
|
|
113
|
-
}
|
|
114
|
-
visit(root, [])
|
|
115
|
-
return rows.sort((left, right) => {
|
|
116
|
-
const leftName = (left as { command: string }).command
|
|
117
|
-
const rightName = (right as { command: string }).command
|
|
118
|
-
return leftName.localeCompare(rightName)
|
|
119
|
-
})
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
describe('program composition', () => {
|
|
123
|
-
/** @evidence TEST-CLI-PROGRAM-MATCHES-LEDGERED-SURFACE */
|
|
124
|
-
test('matches the complete ledgered command and help surface', async () => {
|
|
125
|
-
const surface = ledgeredSurface(await buildProgram())
|
|
126
|
-
const paths = surface.map((entry) => (entry as { command: string }).command)
|
|
127
|
-
|
|
128
|
-
expect(paths).toEqual([
|
|
129
|
-
'',
|
|
130
|
-
'__view-serve',
|
|
131
|
-
'admin',
|
|
132
|
-
'admin status',
|
|
133
|
-
'admin use',
|
|
134
|
-
'auth',
|
|
135
|
-
'auth login',
|
|
136
|
-
'auth logout',
|
|
137
|
-
'auth status',
|
|
138
|
-
'auth token',
|
|
139
|
-
'browser',
|
|
140
|
-
'call',
|
|
141
|
-
'domain',
|
|
142
|
-
'domain install',
|
|
143
|
-
'domain list',
|
|
144
|
-
'domain publish',
|
|
145
|
-
'domain uninstall',
|
|
146
|
-
'get',
|
|
147
|
-
'identity',
|
|
148
|
-
'identity create',
|
|
149
|
-
'identity delete',
|
|
150
|
-
'identity export',
|
|
151
|
-
'identity import',
|
|
152
|
-
'identity list',
|
|
153
|
-
'identity register',
|
|
154
|
-
'identity sync',
|
|
155
|
-
'identity unsync',
|
|
156
|
-
'identity use',
|
|
157
|
-
'identity whoami',
|
|
158
|
-
'idp',
|
|
159
|
-
'idp add',
|
|
160
|
-
'idp list',
|
|
161
|
-
'idp refresh',
|
|
162
|
-
'idp remove',
|
|
163
|
-
'idp show',
|
|
164
|
-
'instance',
|
|
165
|
-
'instance active',
|
|
166
|
-
'instance bookmark',
|
|
167
|
-
'instance create',
|
|
168
|
-
'instance delete',
|
|
169
|
-
'instance forget',
|
|
170
|
-
'instance list',
|
|
171
|
-
'instance status',
|
|
172
|
-
'instance use',
|
|
173
|
-
'introspect',
|
|
174
|
-
'logs',
|
|
175
|
-
'mutate',
|
|
176
|
-
'query',
|
|
177
|
-
'session',
|
|
178
|
-
'session analyze',
|
|
179
|
-
'session list',
|
|
180
|
-
'setup',
|
|
181
|
-
'status',
|
|
182
|
-
'studio',
|
|
183
|
-
'token',
|
|
184
|
-
'update',
|
|
185
|
-
'use',
|
|
186
|
-
'view',
|
|
187
|
-
'whoami',
|
|
188
|
-
])
|
|
189
|
-
expect(createHash('sha256').update(JSON.stringify(surface)).digest('hex')).toBe(
|
|
190
|
-
'42b4812abbbca3d54289a16d0b066dfb3b1caaf1df6597a425c675744466a728',
|
|
191
|
-
)
|
|
192
|
-
})
|
|
193
|
-
|
|
194
|
-
/** @evidence TEST-CLI-PROGRAM-BUILDS-ISOLATED-ROOTS */
|
|
195
|
-
test('builds a fresh Commander root for each consumer', async () => {
|
|
196
|
-
const first = await buildProgram()
|
|
197
|
-
first.command('__temporary-test-command')
|
|
198
|
-
|
|
199
|
-
const second = await buildProgram()
|
|
200
|
-
expect(second).not.toBe(first)
|
|
201
|
-
expect(second.commands.some((command) => command.name() === '__temporary-test-command')).toBe(
|
|
202
|
-
false,
|
|
203
|
-
)
|
|
204
|
-
})
|
|
205
|
-
})
|
|
206
|
-
|
|
207
|
-
describe('help contract — no internal SPEC anchors leak to users', () => {
|
|
208
|
-
test('no rendered --help text contains a § section anchor', async () => {
|
|
209
|
-
const program = await buildProgram()
|
|
210
|
-
const offenders = allCommands(program)
|
|
211
|
-
.filter((c) => c.helpInformation().includes('§'))
|
|
212
|
-
.map((c) => c.name() || '<root>')
|
|
213
|
-
|
|
214
|
-
expect(offenders).toEqual([])
|
|
215
|
-
})
|
|
216
|
-
})
|
|
217
|
-
|
|
218
|
-
describe('help contract — IdP/auth surface is registered', () => {
|
|
219
|
-
test('idp group and auth commands are visible in --help tree', async () => {
|
|
220
|
-
const program = await buildProgram()
|
|
221
|
-
const names = allCommands(program).map((command) => command.name())
|
|
222
|
-
|
|
223
|
-
expect(names).toContain('idp')
|
|
224
|
-
expect(names).toContain('add')
|
|
225
|
-
expect(names).toContain('login')
|
|
226
|
-
expect(names).toContain('token')
|
|
227
|
-
expect(names).toContain('update')
|
|
228
|
-
expect(program.helpInformation()).toContain('idp')
|
|
229
|
-
expect(program.helpInformation()).toContain('update')
|
|
230
|
-
})
|
|
231
|
-
})
|
|
232
|
-
|
|
233
|
-
describe('help contract — admin target surface is registered', () => {
|
|
234
|
-
test('admin group and admin-target flags are visible', async () => {
|
|
235
|
-
const program = await buildProgram()
|
|
236
|
-
const names = allCommands(program).map((command) => command.name())
|
|
237
|
-
const instanceCreate = allCommands(program).find((command) => command.name() === 'create')
|
|
238
|
-
|
|
239
|
-
expect(names).toContain('admin')
|
|
240
|
-
expect(names).toContain('status')
|
|
241
|
-
expect(names).toContain('use')
|
|
242
|
-
expect(program.helpInformation()).toContain('admin')
|
|
243
|
-
expect(instanceCreate?.helpInformation()).toContain('--admin <name>')
|
|
244
|
-
expect(instanceCreate?.helpInformation()).toContain('--admin-url <url>')
|
|
245
|
-
|
|
246
|
-
const adminUse = program.commands
|
|
247
|
-
.find((command) => command.name() === 'admin')
|
|
248
|
-
?.commands.find((command) => command.name() === 'use')
|
|
249
|
-
expect(adminUse?.helpInformation()).toContain('--kernel-issuer <url>')
|
|
250
|
-
expect(adminUse?.helpInformation()).toContain('--domain-issuer <url>')
|
|
251
|
-
expect(adminUse?.helpInformation()).not.toContain('--issuer <url>')
|
|
252
|
-
})
|
|
253
|
-
|
|
254
|
-
test('instance create is the alphaCreate flow, not legacy Instance.init DX', async () => {
|
|
255
|
-
const program = await buildProgram()
|
|
256
|
-
const instanceCreate = allCommands(program).find((command) => command.name() === 'create')
|
|
257
|
-
const help = instanceCreate?.helpInformation() ?? ''
|
|
258
|
-
|
|
259
|
-
expect(help).toContain('Instance.alphaCreate')
|
|
260
|
-
expect(help).not.toContain('--no-use')
|
|
261
|
-
expect(help).not.toContain('Instance.init requires --host-id')
|
|
262
|
-
})
|
|
263
|
-
})
|
|
264
|
-
|
|
265
|
-
describe('help contract — connect-only command surface', () => {
|
|
266
|
-
test('runtime management commands are not registered', async () => {
|
|
267
|
-
const program = await buildProgram()
|
|
268
|
-
const names = allCommands(program).map((command) => command.name())
|
|
269
|
-
|
|
270
|
-
// `logs` and `domain` have managed/admin meanings, so only retired verbs are absent.
|
|
271
|
-
for (const removed of [
|
|
272
|
-
'init',
|
|
273
|
-
'start',
|
|
274
|
-
'stop',
|
|
275
|
-
'restart',
|
|
276
|
-
'reset',
|
|
277
|
-
'bootstrap',
|
|
278
|
-
'tunnel',
|
|
279
|
-
'graph',
|
|
280
|
-
'server',
|
|
281
|
-
'env',
|
|
282
|
-
'ls',
|
|
283
|
-
'describe',
|
|
284
|
-
]) {
|
|
285
|
-
expect(names).not.toContain(removed)
|
|
286
|
-
}
|
|
287
|
-
})
|
|
288
|
-
})
|
|
289
|
-
|
|
290
|
-
describe('help contract — read command split', () => {
|
|
291
|
-
test('get is point-read only and query owns structured read flags', async () => {
|
|
292
|
-
const program = await buildProgram()
|
|
293
|
-
const get = allCommands(program).find((command) => command.name() === 'get')
|
|
294
|
-
const query = allCommands(program).find((command) => command.name() === 'query')
|
|
295
|
-
const getHelp = get?.helpInformation() ?? ''
|
|
296
|
-
const queryHelp = query?.helpInformation() ?? ''
|
|
297
|
-
|
|
298
|
-
expect(getHelp).toContain('Usage: astrale get [options] <target>')
|
|
299
|
-
expect(getHelp).not.toContain('-l, --long')
|
|
300
|
-
expect(getHelp).not.toContain('--depth')
|
|
301
|
-
expect(getHelp).not.toContain('--children')
|
|
302
|
-
expect(getHelp).not.toContain('--edges')
|
|
303
|
-
expect(getHelp).not.toContain('--graph')
|
|
304
|
-
|
|
305
|
-
expect(queryHelp).toContain('Usage: astrale query [options] [sources...]')
|
|
306
|
-
expect(queryHelp).not.toContain('--depth <n>')
|
|
307
|
-
expect(queryHelp).not.toContain('--children <json>')
|
|
308
|
-
expect(queryHelp).not.toContain('--edges <json>')
|
|
309
|
-
expect(queryHelp).toContain('--ast <json>')
|
|
310
|
-
expect(queryHelp).toContain('--definition <path>')
|
|
311
|
-
expect(queryHelp).toContain('--edge <class>')
|
|
312
|
-
expect(queryHelp).toContain('--direction <direction>')
|
|
313
|
-
expect(queryHelp).toContain('--limit <n>')
|
|
314
|
-
expect(queryHelp).toContain('--cursor <token>')
|
|
315
|
-
expect(queryHelp).not.toContain('--cypher <query>')
|
|
316
|
-
})
|
|
317
|
-
})
|
|
318
|
-
|
|
319
|
-
describe('help contract — explicit anonymous authentication', () => {
|
|
320
|
-
test('kernel commands expose the credential-less session flag', async () => {
|
|
321
|
-
const program = await buildProgram()
|
|
322
|
-
const call = allCommands(program).find((command) => command.name() === 'call')
|
|
323
|
-
|
|
324
|
-
expect(call?.helpInformation()).toContain('--anonymous')
|
|
325
|
-
expect(call?.helpInformation()).toContain('Send no credential')
|
|
326
|
-
})
|
|
327
|
-
})
|
|
328
|
-
|
|
329
|
-
describe('help contract — payload sources', () => {
|
|
330
|
-
test('call excludes --file while mutate supports it', async () => {
|
|
331
|
-
const program = await buildProgram()
|
|
332
|
-
const call = allCommands(program).find((command) => command.name() === 'call')
|
|
333
|
-
const mutate = allCommands(program).find((command) => command.name() === 'mutate')
|
|
334
|
-
const callHelp = call?.helpInformation() ?? ''
|
|
335
|
-
const mutateHelp = mutate?.helpInformation() ?? ''
|
|
336
|
-
|
|
337
|
-
expect(callHelp).toContain('--data <json>')
|
|
338
|
-
expect(callHelp).not.toContain('--file <path>')
|
|
339
|
-
expect(callHelp).not.toContain('--describe')
|
|
340
|
-
expect(mutateHelp).toContain('--data <json>')
|
|
341
|
-
expect(mutateHelp).toContain('--file <path>')
|
|
342
|
-
})
|
|
343
|
-
})
|
|
344
|
-
|
|
345
|
-
describe('help contract — skill is single-source, not duplicated', () => {
|
|
346
|
-
const canonical = join(cliRoot, 'skills/astrale-cli/SKILL.md')
|
|
347
|
-
// Workspace mirror lives in the superrepo, outside this submodule. Absent
|
|
348
|
-
// when the CLI repo is tested standalone — only assert parity when present.
|
|
349
|
-
const mirror = join(cliRoot, '../.agents/skills/astrale-cli/SKILL.md')
|
|
350
|
-
|
|
351
|
-
test('canonical skill file exists and is non-empty', () => {
|
|
352
|
-
expect(existsSync(canonical)).toBe(true)
|
|
353
|
-
expect(readFileSync(canonical, 'utf8').length).toBeGreaterThan(0)
|
|
354
|
-
})
|
|
355
|
-
|
|
356
|
-
test.skipIf(!existsSync(mirror))(
|
|
357
|
-
'workspace mirror is byte-identical to the canonical skill',
|
|
358
|
-
() => {
|
|
359
|
-
expect(readFileSync(mirror, 'utf8')).toBe(readFileSync(canonical, 'utf8'))
|
|
360
|
-
},
|
|
361
|
-
)
|
|
362
|
-
})
|
package/src/program/build.ts
DELETED
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import { Command, Option } from 'commander'
|
|
2
|
-
|
|
3
|
-
import pkg from '../../package.json' with { type: 'json' }
|
|
4
|
-
import { withKernelOptions } from './options'
|
|
5
|
-
import { registerCommand, registerGroup } from './registry'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Build the fully-wired Commander program (every command + group registered)
|
|
9
|
-
* WITHOUT parsing argv. `bin/astrale.ts` is a thin shim that calls this and
|
|
10
|
-
* `.parse()`; tests import it to walk the command tree (the `--help` surface
|
|
11
|
-
* is asserted to be the source of truth it claims to be — see
|
|
12
|
-
* `program/__tests__/program.test.ts`).
|
|
13
|
-
*/
|
|
14
|
-
export async function buildProgram(): Promise<Command> {
|
|
15
|
-
const program = new Command()
|
|
16
|
-
|
|
17
|
-
program
|
|
18
|
-
.name('astrale')
|
|
19
|
-
.description('Astrale CLI — connect to existing Astrale kernels')
|
|
20
|
-
// Single source of truth = package.json (bumped by release-please together
|
|
21
|
-
// with .release-please-manifest.json). Never hand-write a version literal.
|
|
22
|
-
.version(pkg.version)
|
|
23
|
-
.showSuggestionAfterError(true)
|
|
24
|
-
.addOption(new Option('--ci', 'Machine mode: no prompts, structured errors on stderr'))
|
|
25
|
-
.addOption(new Option('--no-prompt', 'Disable interactive prompts'))
|
|
26
|
-
.action(async () => {
|
|
27
|
-
// Bare `astrale` in an interactive terminal with nothing connected yet →
|
|
28
|
-
// launch the guided setup. Otherwise (configured, piped, or CI) show help.
|
|
29
|
-
if (process.stdin.isTTY && process.stdout.isTTY) {
|
|
30
|
-
const { shouldAutostartSetup } = await import('../setup/engine')
|
|
31
|
-
if (await shouldAutostartSetup()) {
|
|
32
|
-
await (await import('../commands/setup')).default.action(undefined, {})
|
|
33
|
-
return
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
program.help()
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
// Verbatim alias of `identity whoami` — defer to the command-definition
|
|
40
|
-
// module so options stay in sync.
|
|
41
|
-
const whoamiMod = await import('../commands/identity/whoami')
|
|
42
|
-
registerCommand(program, {
|
|
43
|
-
name: 'whoami',
|
|
44
|
-
description: 'Show the current default identity (alias for identity whoami)',
|
|
45
|
-
options: whoamiMod.default.options,
|
|
46
|
-
action: whoamiMod.default.action,
|
|
47
|
-
})
|
|
48
|
-
registerCommand(program, (await import('../commands/setup')).default)
|
|
49
|
-
registerCommand(program, (await import('../commands/use')).default)
|
|
50
|
-
registerCommand(program, (await import('../commands/update')).default)
|
|
51
|
-
|
|
52
|
-
// ── Graph / kernel ─────────────────────────────────────────────
|
|
53
|
-
registerCommand(program, withKernelOptions((await import('../commands/call')).default))
|
|
54
|
-
registerCommand(program, withKernelOptions((await import('../commands/token')).default))
|
|
55
|
-
registerCommand(program, withKernelOptions((await import('../commands/get')).default))
|
|
56
|
-
registerCommand(program, withKernelOptions((await import('../commands/mutate')).default))
|
|
57
|
-
registerCommand(program, withKernelOptions((await import('../commands/query')).default))
|
|
58
|
-
registerCommand(program, withKernelOptions((await import('../commands/introspect')).default))
|
|
59
|
-
registerCommand(program, withKernelOptions((await import('../commands/logs')).default))
|
|
60
|
-
registerCommand(program, withKernelOptions((await import('../commands/view')).default))
|
|
61
|
-
registerCommand(program, (await import('../commands/status')).default)
|
|
62
|
-
registerCommand(program, (await import('../commands/browser')).default)
|
|
63
|
-
registerCommand(program, (await import('../commands/view-serve')).default)
|
|
64
|
-
registerCommand(program, (await import('../commands/studio')).default)
|
|
65
|
-
|
|
66
|
-
registerGroup(program, {
|
|
67
|
-
name: 'instance',
|
|
68
|
-
description: 'Manage admin-provisioned instances and local bookmarks',
|
|
69
|
-
commands: [
|
|
70
|
-
withKernelOptions((await import('../commands/instance/list')).default),
|
|
71
|
-
(await import('../commands/instance/bookmark')).default,
|
|
72
|
-
(await import('../commands/instance/forget')).default,
|
|
73
|
-
withKernelOptions((await import('../commands/instance/create')).default),
|
|
74
|
-
withKernelOptions((await import('../commands/instance/delete')).default),
|
|
75
|
-
withKernelOptions((await import('../commands/instance/status')).default),
|
|
76
|
-
(await import('../commands/instance/active')).default,
|
|
77
|
-
(await import('../commands/instance/use')).default,
|
|
78
|
-
],
|
|
79
|
-
})
|
|
80
|
-
|
|
81
|
-
registerGroup(program, {
|
|
82
|
-
name: 'domain',
|
|
83
|
-
description: 'List, publish, install, and uninstall domains',
|
|
84
|
-
commands: [
|
|
85
|
-
withKernelOptions((await import('../commands/domain/list')).default),
|
|
86
|
-
withKernelOptions((await import('../commands/domain/publish')).default),
|
|
87
|
-
withKernelOptions((await import('../commands/domain/install')).default),
|
|
88
|
-
withKernelOptions((await import('../commands/domain/uninstall')).default),
|
|
89
|
-
],
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
registerGroup(program, {
|
|
93
|
-
name: 'admin',
|
|
94
|
-
description: 'Configure the admin kernel',
|
|
95
|
-
commands: [
|
|
96
|
-
(await import('../commands/admin/status')).default,
|
|
97
|
-
(await import('../commands/admin/use')).default,
|
|
98
|
-
],
|
|
99
|
-
})
|
|
100
|
-
|
|
101
|
-
registerGroup(program, {
|
|
102
|
-
name: 'identity',
|
|
103
|
-
description: 'Manage CLI identities & delegation keypairs',
|
|
104
|
-
commands: [
|
|
105
|
-
(await import('../commands/identity/create')).default,
|
|
106
|
-
withKernelOptions((await import('../commands/identity/register')).default),
|
|
107
|
-
(await import('../commands/identity/list')).default,
|
|
108
|
-
(await import('../commands/identity/use')).default,
|
|
109
|
-
(await import('../commands/identity/whoami')).default,
|
|
110
|
-
(await import('../commands/identity/delete')).default,
|
|
111
|
-
(await import('../commands/identity/sync')).default,
|
|
112
|
-
(await import('../commands/identity/unsync')).default,
|
|
113
|
-
(await import('../commands/identity/export')).default,
|
|
114
|
-
(await import('../commands/identity/import')).default,
|
|
115
|
-
],
|
|
116
|
-
})
|
|
117
|
-
|
|
118
|
-
registerGroup(program, {
|
|
119
|
-
name: 'auth',
|
|
120
|
-
description: 'Authenticate with configured identity providers',
|
|
121
|
-
commands: [
|
|
122
|
-
(await import('../commands/auth/login')).default,
|
|
123
|
-
(await import('../commands/auth/token')).default,
|
|
124
|
-
(await import('../commands/auth/logout')).default,
|
|
125
|
-
(await import('../commands/auth/status')).default,
|
|
126
|
-
],
|
|
127
|
-
})
|
|
128
|
-
|
|
129
|
-
registerGroup(program, {
|
|
130
|
-
name: 'session',
|
|
131
|
-
description: 'Locally recorded work sessions: list and DX-analyze them',
|
|
132
|
-
commands: [
|
|
133
|
-
(await import('../commands/session/list')).default,
|
|
134
|
-
(await import('../commands/session/analyze')).default,
|
|
135
|
-
],
|
|
136
|
-
})
|
|
137
|
-
|
|
138
|
-
registerGroup(program, {
|
|
139
|
-
name: 'idp',
|
|
140
|
-
description: 'Manage OpenID Connect identity providers',
|
|
141
|
-
commands: [
|
|
142
|
-
(await import('../commands/idp/add')).default,
|
|
143
|
-
(await import('../commands/idp/list')).default,
|
|
144
|
-
(await import('../commands/idp/show')).default,
|
|
145
|
-
(await import('../commands/idp/refresh')).default,
|
|
146
|
-
(await import('../commands/idp/remove')).default,
|
|
147
|
-
],
|
|
148
|
-
})
|
|
149
|
-
|
|
150
|
-
program.addHelpText(
|
|
151
|
-
'after',
|
|
152
|
-
`
|
|
153
|
-
Command groups:
|
|
154
|
-
Getting started setup (sign in, pick an instance, equip your workspace)
|
|
155
|
-
Kernel get, mutate, call, query, introspect, logs, view, token
|
|
156
|
-
Management admin, instance, domain, identity, auth, idp, update
|
|
157
|
-
Agent browser (drive the GUI via agent-browser)
|
|
158
|
-
Studio studio (launch the local Domain Studio GUI for a workspace)
|
|
159
|
-
|
|
160
|
-
Path syntax:
|
|
161
|
-
/:origin Domain root
|
|
162
|
-
/:origin:class.Name Class node (or /:origin:interface.Name)
|
|
163
|
-
/:origin:class.Name:method Static callable
|
|
164
|
-
<nodePath>::method Instance method dispatch — double colon ::
|
|
165
|
-
@nodeId Reference a node by its UID
|
|
166
|
-
@nodeId::method Instance method on a node by UID
|
|
167
|
-
|
|
168
|
-
Examples:
|
|
169
|
-
$ astrale studio
|
|
170
|
-
$ astrale admin status
|
|
171
|
-
$ astrale update --check
|
|
172
|
-
$ astrale instance bookmark staging --url https://kernel.example.com
|
|
173
|
-
$ astrale instance create my-app
|
|
174
|
-
$ astrale instance status staging
|
|
175
|
-
$ astrale token --audience shell.astrale.ai --ttl 3600
|
|
176
|
-
$ astrale query /:notes.example.dev:class.Note --limit 50
|
|
177
|
-
$ astrale introspect /:host.astrale.ai:class.Manager:createInstance
|
|
178
|
-
$ astrale query --file query.v6.json --cursor "$CURSOR"
|
|
179
|
-
`,
|
|
180
|
-
)
|
|
181
|
-
|
|
182
|
-
return program
|
|
183
|
-
}
|
package/src/program/command.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
export interface CommandArgument {
|
|
2
|
-
readonly name: string
|
|
3
|
-
readonly description: string
|
|
4
|
-
readonly required?: boolean
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
export interface CommandOption {
|
|
8
|
-
readonly flags: string
|
|
9
|
-
readonly description: string
|
|
10
|
-
readonly default?: string
|
|
11
|
-
readonly choices?: string[]
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export interface CommandDefinition {
|
|
15
|
-
readonly name: string
|
|
16
|
-
readonly description: string
|
|
17
|
-
/** One-line summary shown in the parent's command list (Commander `.summary()`). */
|
|
18
|
-
readonly summary?: string
|
|
19
|
-
/** Hide from help listings (internal entries, e.g. `__view-serve`). */
|
|
20
|
-
readonly hidden?: boolean
|
|
21
|
-
readonly aliases?: string[]
|
|
22
|
-
readonly arguments?: CommandArgument[]
|
|
23
|
-
readonly options?: CommandOption[]
|
|
24
|
-
/**
|
|
25
|
-
* Free-form prose appended to `<cmd> --help` (Commander `addHelpText('after')`).
|
|
26
|
-
* Use for command-local behavior the flag list cannot express + canonical
|
|
27
|
-
* examples. Pre-wrap lines to ~78 cols — Commander prints it verbatim.
|
|
28
|
-
*/
|
|
29
|
-
readonly afterHelpText?: string
|
|
30
|
-
/** Opaque Commander callback; each command module owns its concrete argument tuple. */
|
|
31
|
-
readonly action: (...args: never[]) => Promise<void>
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export interface CommandGroup {
|
|
35
|
-
readonly name: string
|
|
36
|
-
readonly description: string
|
|
37
|
-
/** One-line summary shown in the program's command list (Commander `.summary()`). */
|
|
38
|
-
readonly summary?: string
|
|
39
|
-
readonly commands: CommandDefinition[]
|
|
40
|
-
/** Nested subgroups (one extra level of `astrale foo bar baz` nesting). */
|
|
41
|
-
readonly subgroups?: CommandGroup[]
|
|
42
|
-
}
|
package/src/program/index.ts
DELETED