@astrale-os/cli 1.0.0-beta.0 → 1.0.0-beta.10
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 +23 -12
- package/dist/astrale.js +51494 -56307
- package/dist/public/connect-core.js +2028 -26846
- package/dist/public/keys/index.js +1755 -40694
- package/dist/public/paths/index.js +859 -39518
- package/dist/types/admin/binding.d.ts +19 -0
- package/dist/types/admin/instance/client.d.ts +22 -0
- package/dist/types/admin/instance/index.d.ts +2 -0
- package/dist/types/admin/instance/model.d.ts +5 -12
- package/dist/types/connection/auth.d.ts +3 -0
- package/dist/types/connection/call.d.ts +3 -0
- package/dist/types/connection/command.d.ts +27 -0
- package/dist/types/connection/credential.d.ts +14 -0
- package/dist/types/connection/errors.d.ts +1 -0
- package/dist/types/connection/exchange.d.ts +9 -0
- package/dist/types/connection/failure/classify.d.ts +2 -0
- package/dist/types/connection/failure/index.d.ts +5 -0
- package/dist/types/connection/failure/model.d.ts +25 -0
- package/dist/types/connection/failure/render.d.ts +3 -0
- package/dist/types/connection/index.d.ts +8 -0
- package/dist/types/connection/reasons.d.ts +37 -0
- package/dist/types/connection/self.d.ts +37 -0
- package/dist/types/connection/session.d.ts +31 -0
- package/dist/types/connection/target.d.ts +38 -0
- package/dist/types/errors.d.ts +1 -1
- package/dist/types/lib/admin-instance.d.ts +17 -0
- package/dist/types/lib/admin-target.d.ts +6 -2
- package/dist/types/lib/failure-debug.d.ts +1 -0
- package/dist/types/lib/idp.d.ts +7 -0
- package/dist/types/lib/instance-target.d.ts +1 -1
- package/dist/types/lib/instance.d.ts +10 -2
- package/dist/types/lib/log.d.ts +5 -3
- package/dist/types/lib/meta.d.ts +2 -2
- package/dist/types/lib/proc.d.ts +43 -0
- package/dist/types/lib/self.d.ts +9 -0
- package/dist/types/lib/update.d.ts +131 -0
- package/package.json +8 -10
- package/src/__tests__/fixtures/publication.ts +20 -0
- package/src/admin/__tests__/binding.test.ts +31 -0
- package/src/admin/__tests__/fixture.ts +101 -0
- package/src/admin/binding.ts +98 -0
- package/src/admin/catalog/.spec/api.d.ts +2 -2
- package/src/admin/catalog/__tests__/client.test.ts +20 -49
- package/src/admin/catalog/client.ts +36 -32
- package/src/admin/catalog/model.ts +3 -4
- package/src/admin/graph/.spec/api.d.ts +4 -10
- package/src/admin/graph/nodes.ts +1 -1
- package/src/admin/instance/.spec/api.d.ts +2 -2
- package/src/admin/instance/__tests__/client.test.ts +40 -163
- package/src/admin/instance/client.ts +35 -137
- package/src/admin/instance/index.ts +1 -2
- package/src/admin/instance/model.ts +11 -20
- package/src/commands/__tests__/admin-instance.test.ts +11 -8
- package/src/commands/__tests__/auth-login.test.ts +54 -1
- package/src/commands/__tests__/call-describe.test.ts +46 -33
- package/src/commands/__tests__/call.test.ts +5 -1
- package/src/commands/__tests__/domain-install-operation.test.ts +12 -7
- package/src/commands/__tests__/domain-install-owned.test.ts +6 -2
- package/src/commands/__tests__/domain-list.test.ts +63 -4
- package/src/commands/__tests__/install-identity-override.test.ts +19 -19
- package/src/commands/__tests__/instance-list-rows.test.ts +1 -1
- package/src/commands/__tests__/instance-status.test.ts +139 -0
- package/src/commands/__tests__/read-commands.test.ts +35 -10
- package/src/commands/__tests__/studio-descriptor.test.ts +22 -0
- package/src/commands/__tests__/update.test.ts +95 -0
- package/src/commands/call-describe.ts +60 -68
- package/src/commands/call.ts +43 -56
- package/src/commands/domain/install.ts +13 -17
- package/src/commands/domain/list.ts +18 -13
- package/src/commands/domain/publish.ts +14 -11
- package/src/commands/domain/uninstall.ts +2 -2
- package/src/commands/get.ts +14 -15
- package/src/commands/identity/__tests__/register.test.ts +3 -3
- package/src/commands/identity/register.ts +5 -4
- package/src/commands/instance/create.ts +8 -16
- package/src/commands/instance/delete.ts +12 -9
- package/src/commands/instance/list.ts +2 -2
- package/src/commands/instance/status.ts +66 -20
- package/src/commands/instance/use.ts +16 -12
- package/src/commands/introspect.ts +9 -16
- package/src/commands/logs.ts +24 -25
- package/src/commands/mutate.ts +6 -5
- package/src/commands/query.ts +27 -30
- package/src/commands/studio.ts +20 -0
- package/src/commands/token.ts +8 -7
- package/src/commands/update.ts +68 -22
- package/src/commands/view.ts +7 -6
- package/src/connection/.spec/api.d.ts +7 -8
- package/src/connection/.spec/architecture.md +5 -4
- package/src/connection/.spec/flows/session.ts +2 -2
- package/src/connection/.spec/laws/connection.ts +6 -2
- package/src/connection/.spec/layout.ts +1 -0
- package/src/connection/__tests__/credential.test.ts +20 -1
- package/src/connection/__tests__/errors.test.ts +43 -32
- package/src/connection/__tests__/exchange.test.ts +36 -6
- package/src/connection/__tests__/failure-fixtures.ts +39 -0
- package/src/connection/__tests__/failure-safety.test.ts +75 -0
- package/src/connection/__tests__/self.test.ts +31 -11
- package/src/connection/__tests__/session.test.ts +3 -3
- package/src/connection/__tests__/target.test.ts +1 -0
- package/src/connection/auth.ts +13 -0
- package/src/connection/call.ts +1 -1
- package/src/connection/credential.ts +2 -2
- package/src/connection/errors.ts +1 -355
- package/src/connection/exchange.ts +52 -27
- package/src/connection/failure/classify.ts +110 -0
- package/src/connection/failure/index.ts +18 -0
- package/src/connection/failure/model.ts +28 -0
- package/src/connection/failure/render.ts +116 -0
- package/src/connection/reasons.ts +16 -0
- package/src/connection/self.ts +39 -21
- package/src/connection/session.ts +19 -8
- package/src/errors.ts +3 -2
- package/src/graph/.spec/api.d.ts +12 -5
- package/src/graph/.spec/layout.ts +9 -1
- package/src/graph/__tests__/mutation.test.ts +2 -2
- package/src/graph/__tests__/query.test.ts +25 -6
- package/src/graph/class.ts +30 -0
- package/src/graph/index.ts +1 -0
- package/src/graph/query.ts +21 -32
- package/src/identity/.spec/api.d.ts +2 -2
- package/src/identity/__tests__/registration.test.ts +1 -1
- package/src/identity/registration.ts +3 -3
- package/src/keys/__tests__/keys.test.ts +4 -0
- package/src/keys/credential.ts +1 -0
- package/src/lib/__tests__/admin-target.test.ts +12 -0
- package/src/lib/__tests__/command-dx.test.ts +1 -1
- package/src/lib/__tests__/domain-publication.test.ts +138 -0
- package/src/lib/__tests__/idp-session.test.ts +22 -0
- package/src/lib/__tests__/idp.test.ts +36 -4
- package/src/lib/__tests__/instance-candidates.test.ts +1 -3
- package/src/lib/__tests__/instance-target.test.ts +7 -39
- package/src/lib/__tests__/instance.test.ts +6 -0
- package/src/lib/__tests__/log-errors.test.ts +64 -0
- package/src/lib/__tests__/studio-server-deps.test.ts +53 -16
- package/src/lib/__tests__/update.test.ts +113 -8
- package/src/lib/__tests__/view-open-intent.test.ts +0 -2
- package/src/lib/__tests__/view-server.test.ts +1 -1
- package/src/lib/__tests__/view-session.test.ts +1 -1
- package/src/lib/admin-instance.ts +14 -8
- package/src/lib/admin-target.ts +21 -2
- package/src/lib/command-dx.ts +9 -9
- package/src/lib/domain-publication.ts +104 -0
- package/src/lib/failure-debug.ts +26 -0
- package/src/lib/idp.ts +39 -4
- package/src/lib/instance-candidates.ts +2 -2
- package/src/lib/instance-target.ts +3 -14
- package/src/lib/instance.ts +22 -12
- package/src/lib/log.ts +16 -9
- package/src/lib/login-flow.ts +13 -3
- package/src/lib/meta.ts +2 -2
- package/src/lib/provision-instance.ts +34 -57
- package/src/lib/update.ts +124 -30
- package/src/lib/validation.ts +2 -2
- package/src/lib/view/resolve.ts +1 -1
- package/src/program/__tests__/program.test.ts +20 -4
- package/src/program/build.ts +2 -2
- package/src/setup/__tests__/instance-step.test.ts +27 -10
- package/src/setup/steps/instance.ts +22 -15
- package/studio/client/dist/assets/{elk-api-D2xgMJvi.js → elk-api-ByzoDZWH.js} +1 -1
- package/studio/client/dist/assets/index-B0RCgUOT.js +8 -0
- package/studio/client/dist/assets/index-BiGR8Oo9.css +1 -0
- package/studio/client/dist/assets/index-N8J8EKlB.js +81 -0
- package/studio/client/dist/index.html +2 -2
- package/studio/package.json +5 -10
- package/studio/server/agent/ask.test.ts +1 -1
- package/studio/server/agent/bridge/grant.test.ts +1 -1
- package/studio/server/agent/bridge/routes.test.ts +1 -1
- package/studio/server/agent/bridge/stdio.ts +8 -1
- package/studio/server/agent/conversation.test.ts +10 -5
- package/studio/server/agent/conversation.ts +56 -8
- package/studio/server/agent/harness/claude/adapter.test.ts +15 -5
- package/studio/server/agent/harness/codex/loadout.ts +18 -21
- package/studio/server/agent/harness/gateway/config.ts +20 -18
- package/studio/server/agent/harness/selection.ts +9 -1
- package/studio/server/agent/prompts/anchors.test.ts +32 -36
- package/studio/server/agent/prompts/anchors.ts +20 -49
- package/studio/server/agent/prompts/system.test.ts +3 -2
- package/studio/server/agent/prompts/system.ts +6 -5
- package/studio/server/agent/prompts/turn.ts +13 -4
- package/studio/server/agent/routes.test.ts +1 -1
- package/studio/server/agent/run/completion.ts +2 -2
- package/studio/server/agent/run/coordinator.test.ts +1 -1
- package/studio/server/agent/run/preparation.ts +6 -5
- package/studio/server/agent/run/transcript.test.ts +35 -1
- package/studio/server/agent/run/transcript.ts +169 -3
- package/studio/server/agent/run/usage.test.ts +24 -0
- package/studio/server/agent/run/usage.ts +26 -1
- package/studio/server/api/canvas.ts +43 -0
- package/studio/server/api/comments.ts +85 -0
- package/studio/server/api/context.ts +61 -0
- package/studio/server/api/deployment.ts +39 -0
- package/studio/server/api/documents.ts +55 -0
- package/studio/server/api/domain.ts +59 -0
- package/studio/server/api/http.ts +45 -0
- package/studio/server/api/project.ts +57 -0
- package/studio/server/api/schema.ts +12 -0
- package/studio/server/api/views.ts +57 -0
- package/studio/server/api/workspace.ts +60 -0
- package/studio/server/api-agent-loadout.test.ts +1 -1
- package/studio/server/api.test.ts +147 -0
- package/studio/server/api.ts +20 -422
- package/studio/server/cache.test.ts +122 -0
- package/studio/server/cache.ts +162 -11
- package/studio/server/cli-consumers.test.ts +494 -0
- package/studio/server/cli.test.ts +88 -0
- package/studio/server/cli.ts +240 -0
- package/studio/server/client-package.ts +25 -1
- package/studio/server/domain.test.ts +50 -40
- package/studio/server/domain.ts +83 -52
- package/studio/server/environment/dotenv-preview.test.ts +39 -0
- package/studio/server/environment/dotenv-preview.ts +27 -0
- package/studio/server/environment/files.test.ts +53 -0
- package/studio/server/{state/env.ts → environment/files.ts} +7 -48
- package/studio/server/{state → handoff}/copy.ts +21 -6
- package/studio/server/handoff/service.test.ts +22 -0
- package/studio/server/{state/handoff.ts → handoff/service.ts} +21 -14
- package/studio/server/index.ts +1 -1
- package/studio/server/instances/active.ts +72 -0
- package/studio/server/instances/deploy-record.test.ts +31 -0
- package/studio/server/instances/deploy-record.ts +37 -0
- package/studio/server/instances/deploy.ts +56 -0
- package/studio/server/{state/instance.test.ts → instances/probe.test.ts} +25 -21
- package/studio/server/instances/probe.ts +67 -0
- package/studio/server/instances/status.test.ts +12 -0
- package/studio/server/instances/status.ts +49 -0
- package/studio/server/introspect/anatomy/client-tree.ts +57 -0
- package/studio/server/introspect/anatomy/env-fields.ts +66 -0
- package/studio/server/introspect/anatomy/schema-definition.ts +53 -0
- package/studio/server/introspect/anatomy/source.ts +181 -0
- package/studio/server/introspect/anatomy/views/routes.ts +114 -0
- package/studio/server/introspect/anatomy/views.ts +53 -0
- package/studio/server/introspect/anatomy-extras.test.ts +106 -35
- package/studio/server/introspect/anatomy-extras.ts +7 -726
- package/studio/server/introspect/anatomy.test.ts +22 -14
- package/studio/server/introspect/anatomy.ts +52 -28
- package/studio/server/introspect/bundle.ts +15 -9
- package/studio/server/introspect/canonical-schema.test.ts +93 -309
- package/studio/server/introspect/canonical-schema.ts +257 -425
- package/studio/server/introspect/config-preview.test.ts +32 -0
- package/studio/server/introspect/config-preview.ts +119 -0
- package/studio/server/introspect/core-extractor.ts +18 -127
- package/studio/server/introspect/core.ts +1 -2
- package/studio/server/introspect/diff.test.ts +18 -18
- package/studio/server/introspect/diff.ts +44 -90
- package/studio/server/introspect/extractor.ts +23 -116
- package/studio/server/introspect/hash.ts +5 -2
- package/studio/server/introspect/overlay-tsmorph.test.ts +119 -240
- package/studio/server/introspect/overlay-tsmorph.ts +7 -1305
- package/studio/server/introspect/overlay.test.ts +26 -54
- package/studio/server/introspect/overlay.ts +10 -37
- package/studio/server/introspect/revision.test.ts +54 -0
- package/studio/server/introspect/revision.ts +49 -0
- package/studio/server/introspect/runtime.test.ts +83 -143
- package/studio/server/introspect/runtime.ts +40 -11
- package/studio/server/introspect/schema-ir-json.test.ts +70 -0
- package/studio/server/introspect/schema-ir-json.ts +151 -0
- package/studio/server/introspect/schema-refs.test.ts +43 -88
- package/studio/server/introspect/schema-refs.ts +14 -49
- package/studio/server/introspect/source-overlay/annotations.ts +14 -0
- package/studio/server/introspect/source-overlay/handlers.ts +161 -0
- package/studio/server/introspect/source-overlay/kernel-calls.ts +46 -0
- package/studio/server/introspect/source-overlay/project.ts +248 -0
- package/studio/server/introspect/source-overlay/spans.ts +330 -0
- package/studio/server/json.ts +46 -0
- package/studio/server/lifecycle.ts +5 -1
- package/studio/server/sse.test.ts +26 -0
- package/studio/server/sse.ts +4 -1
- package/studio/server/state/baseline.test.ts +223 -7
- package/studio/server/state/baseline.ts +148 -34
- package/studio/server/state/comments.test.ts +66 -1
- package/studio/server/state/comments.ts +173 -10
- package/studio/server/state/context.ts +34 -2
- package/studio/server/state/documents.ts +42 -1
- package/studio/server/state/integrations.ts +27 -1
- package/studio/server/state/layout.test.ts +34 -0
- package/studio/server/state/layout.ts +44 -17
- package/studio/server/state/settings.ts +29 -22
- package/studio/server/state/store.test.ts +122 -0
- package/studio/server/state/store.ts +66 -17
- package/studio/server/state/visibility.ts +22 -11
- package/studio/server/views/model.test.ts +57 -0
- package/studio/server/views/model.ts +66 -0
- package/studio/server/views/runtime.ts +40 -0
- package/studio/server/views/selection-repository.test.ts +31 -0
- package/studio/server/views/selection-repository.ts +60 -0
- package/studio/server/views/session.test.ts +73 -0
- package/studio/server/views/session.ts +166 -0
- package/studio/server/views/target.test.ts +78 -0
- package/studio/server/views/target.ts +222 -0
- package/studio/server/watch.test.ts +11 -11
- package/studio/server/watch.ts +9 -5
- package/studio/server/workspace/catalog.test.ts +17 -0
- package/studio/server/workspace/catalog.ts +43 -0
- package/studio/server/{state → workspace}/create.test.ts +1 -1
- package/studio/server/{state → workspace}/create.ts +1 -1
- package/studio/server/{state → workspace}/git.ts +1 -1
- package/studio/server/workspace/updates.ts +83 -0
- package/studio/server/workspace-state.ts +1 -1
- package/studio/server/workspace-watch.ts +2 -2
- package/studio/shared/contracts/README.md +16 -0
- package/studio/shared/contracts/agent.ts +270 -0
- package/studio/shared/contracts/runtime.ts +50 -0
- package/studio/shared/contracts/schema.ts +393 -0
- package/studio/shared/contracts/surface.test.ts +317 -0
- package/studio/shared/contracts/workspace.ts +265 -0
- package/studio/shared/layout.test.ts +116 -0
- package/studio/shared/schema/identity.test.ts +34 -0
- package/studio/shared/schema/identity.ts +68 -0
- package/studio/shared/types.ts +11 -1099
- package/studio/tsconfig.json +1 -1
- package/viewer/dist/main.js +40 -61
- package/.check-workspace.cjs +0 -40
- package/src/commands/__tests__/instance-create-hosts.test.ts +0 -29
- package/studio/client/dist/assets/index-BMdnsIJA.css +0 -1
- package/studio/client/dist/assets/index-D-vRV8w7.js +0 -8
- package/studio/client/dist/assets/index-LGSWRrk8.js +0 -81
- package/studio/server/state/catalog.ts +0 -117
- package/studio/server/state/instance.ts +0 -280
- package/studio/server/state/updates.ts +0 -63
- package/studio/server/state/views.test.ts +0 -286
- package/studio/server/state/views.ts +0 -535
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { AstraleError } from '../errors';
|
|
3
|
+
export declare const DEFAULT_UPDATE_CHANNEL = "beta";
|
|
4
|
+
export declare const InstallMetadataSchema: z.ZodObject<{
|
|
5
|
+
method: z.ZodLiteral<"script">;
|
|
6
|
+
channel: z.ZodDefault<z.ZodString>;
|
|
7
|
+
version: z.ZodOptional<z.ZodString>;
|
|
8
|
+
repo: z.ZodDefault<z.ZodString>;
|
|
9
|
+
bin: z.ZodString;
|
|
10
|
+
installedAt: z.ZodOptional<z.ZodString>;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
method: "script";
|
|
13
|
+
channel: string;
|
|
14
|
+
version?: string | undefined;
|
|
15
|
+
repo: string;
|
|
16
|
+
bin: string;
|
|
17
|
+
installedAt?: string | undefined;
|
|
18
|
+
}, {
|
|
19
|
+
method: "script";
|
|
20
|
+
channel?: string | undefined;
|
|
21
|
+
version?: string | undefined;
|
|
22
|
+
repo?: string | undefined;
|
|
23
|
+
bin: string;
|
|
24
|
+
installedAt?: string | undefined;
|
|
25
|
+
}>;
|
|
26
|
+
export type InstallMetadata = z.infer<typeof InstallMetadataSchema>;
|
|
27
|
+
export declare const UpdateManifestSchema: z.ZodObject<{
|
|
28
|
+
version: z.ZodString;
|
|
29
|
+
binaryVersion: z.ZodOptional<z.ZodString>;
|
|
30
|
+
channel: z.ZodString;
|
|
31
|
+
repo: z.ZodOptional<z.ZodString>;
|
|
32
|
+
assets: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
|
|
33
|
+
name: z.ZodString;
|
|
34
|
+
sha256: z.ZodOptional<z.ZodString>;
|
|
35
|
+
}, "strip", z.ZodTypeAny, {
|
|
36
|
+
name: string;
|
|
37
|
+
sha256?: string | undefined;
|
|
38
|
+
}, {
|
|
39
|
+
name: string;
|
|
40
|
+
sha256?: string | undefined;
|
|
41
|
+
}>, z.ZodEffects<z.ZodString, {
|
|
42
|
+
name: string;
|
|
43
|
+
}, string>]>>;
|
|
44
|
+
}, "strip", z.ZodTypeAny, {
|
|
45
|
+
version: string;
|
|
46
|
+
binaryVersion?: string | undefined;
|
|
47
|
+
channel: string;
|
|
48
|
+
repo?: string | undefined;
|
|
49
|
+
assets: Record<string, {
|
|
50
|
+
name: string;
|
|
51
|
+
sha256?: string | undefined;
|
|
52
|
+
} | {
|
|
53
|
+
name: string;
|
|
54
|
+
}>;
|
|
55
|
+
}, {
|
|
56
|
+
version: string;
|
|
57
|
+
binaryVersion?: string | undefined;
|
|
58
|
+
channel: string;
|
|
59
|
+
repo?: string | undefined;
|
|
60
|
+
assets: Record<string, string | {
|
|
61
|
+
name: string;
|
|
62
|
+
sha256?: string | undefined;
|
|
63
|
+
}>;
|
|
64
|
+
}>;
|
|
65
|
+
export type UpdateManifest = z.infer<typeof UpdateManifestSchema>;
|
|
66
|
+
export type Platform = {
|
|
67
|
+
os: 'darwin' | 'linux';
|
|
68
|
+
arch: 'arm64' | 'x64';
|
|
69
|
+
};
|
|
70
|
+
export type UpdateRequest = {
|
|
71
|
+
check?: boolean;
|
|
72
|
+
channel?: string;
|
|
73
|
+
version?: string;
|
|
74
|
+
currentVersion: string;
|
|
75
|
+
platform?: Platform;
|
|
76
|
+
installPath?: string;
|
|
77
|
+
execution?: UpdateExecution;
|
|
78
|
+
};
|
|
79
|
+
export type UpdateExecution = {
|
|
80
|
+
kind: 'standalone';
|
|
81
|
+
executable: string;
|
|
82
|
+
} | {
|
|
83
|
+
kind: 'package-managed';
|
|
84
|
+
executable: string;
|
|
85
|
+
};
|
|
86
|
+
declare const admittedScriptInstall: unique symbol;
|
|
87
|
+
export type AdmittedScriptInstall = Readonly<{
|
|
88
|
+
metadata: InstallMetadata;
|
|
89
|
+
executable: string;
|
|
90
|
+
[admittedScriptInstall]: true;
|
|
91
|
+
}>;
|
|
92
|
+
export type UpdateResult = {
|
|
93
|
+
status: 'managed';
|
|
94
|
+
currentVersion: string;
|
|
95
|
+
executable: string;
|
|
96
|
+
} | {
|
|
97
|
+
status: 'up-to-date';
|
|
98
|
+
currentVersion: string;
|
|
99
|
+
latestVersion: string;
|
|
100
|
+
channel: string;
|
|
101
|
+
} | {
|
|
102
|
+
status: 'available';
|
|
103
|
+
currentVersion: string;
|
|
104
|
+
latestVersion: string;
|
|
105
|
+
channel: string;
|
|
106
|
+
} | {
|
|
107
|
+
status: 'updated';
|
|
108
|
+
previousVersion: string;
|
|
109
|
+
currentVersion: string;
|
|
110
|
+
channel: string;
|
|
111
|
+
bin: string;
|
|
112
|
+
};
|
|
113
|
+
export declare function detectPlatform(): Platform;
|
|
114
|
+
export declare function platformKey(platform: Platform): string;
|
|
115
|
+
export declare function classifyUpdateExecution(input: {
|
|
116
|
+
bunVersion?: string;
|
|
117
|
+
executable: string;
|
|
118
|
+
entry?: string;
|
|
119
|
+
}): UpdateExecution;
|
|
120
|
+
export declare function detectUpdateExecution(): UpdateExecution;
|
|
121
|
+
export declare function packageManagedUpdateError(executable: string): AstraleError;
|
|
122
|
+
export declare function readInstallMetadata(path?: string): Promise<InstallMetadata>;
|
|
123
|
+
export declare function admitScriptInstall(meta: InstallMetadata, execution: Extract<UpdateExecution, {
|
|
124
|
+
kind: 'standalone';
|
|
125
|
+
}>): Promise<AdmittedScriptInstall>;
|
|
126
|
+
export declare function writeInstallMetadata(meta: InstallMetadata, path?: string): Promise<void>;
|
|
127
|
+
export declare function releaseBase(meta: InstallMetadata, req: Pick<UpdateRequest, 'channel' | 'version'>): string;
|
|
128
|
+
export declare function fetchManifest(base: string): Promise<UpdateManifest>;
|
|
129
|
+
export declare function shouldUpdate(currentVersion: string, manifestVersion: string): boolean;
|
|
130
|
+
export declare function updateAstrale(req: UpdateRequest): Promise<UpdateResult>;
|
|
131
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astrale-os/cli",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.10",
|
|
4
4
|
"description": "Astrale CLI — connect to existing Astrale kernels",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"astrale",
|
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
"dist",
|
|
20
20
|
"src",
|
|
21
21
|
"tsconfig.json",
|
|
22
|
-
".check-workspace.cjs",
|
|
23
22
|
"studio/server",
|
|
24
23
|
"studio/shared",
|
|
25
24
|
"studio/client/dist",
|
|
@@ -62,10 +61,9 @@
|
|
|
62
61
|
"zod": "^3.25.0"
|
|
63
62
|
},
|
|
64
63
|
"devDependencies": {
|
|
65
|
-
"@astrale-os/
|
|
66
|
-
"@astrale-os/
|
|
67
|
-
"@astrale-os/
|
|
68
|
-
"@astrale-os/shell": ">=0.3.8-beta.2 <1.0.0",
|
|
64
|
+
"@astrale-os/ox": ">=0.1.3 <1.0.0",
|
|
65
|
+
"@astrale-os/sdk": "0.5.0-beta.32",
|
|
66
|
+
"@astrale-os/shell": "0.4.2-beta.1",
|
|
69
67
|
"@astrale/commitlint-config": "npm:@jsr/astrale__commitlint-config@~2.0.1",
|
|
70
68
|
"@commitlint/cli": "~20.3.1",
|
|
71
69
|
"@commitlint/config-conventional": "~20.3.1",
|
|
@@ -74,7 +72,7 @@
|
|
|
74
72
|
"@typescript/native-preview": "latest",
|
|
75
73
|
"husky": "~9.1.7",
|
|
76
74
|
"lint-staged": "~16.2.7",
|
|
77
|
-
"msgpackr": "^
|
|
75
|
+
"msgpackr": "^2.0.5",
|
|
78
76
|
"oxfmt": "0.52.0",
|
|
79
77
|
"oxlint": "latest",
|
|
80
78
|
"typescript": "~6.0.1-rc"
|
|
@@ -99,15 +97,15 @@
|
|
|
99
97
|
"node": ">=22"
|
|
100
98
|
},
|
|
101
99
|
"scripts": {
|
|
102
|
-
"preinstall": "node .check-workspace.cjs",
|
|
103
100
|
"build": "bun scripts/build.ts",
|
|
104
|
-
"package:check": "pnpm run typecheck && pnpm run test && pnpm run build && node scripts/verify-public-exports.mjs && node scripts/verify-
|
|
101
|
+
"package:check": "pnpm run typecheck && pnpm run test && pnpm run build && node scripts/verify-public-exports.mjs && node scripts/verify-public-dependency-boundary.mjs",
|
|
105
102
|
"typecheck": "tsgo --noEmit && tsgo --noEmit -p tsconfig.tests.json && tsgo --noEmit -p viewer && tsgo --noEmit -p studio",
|
|
106
103
|
"lint": "oxlint .",
|
|
107
104
|
"lint:fix": "oxlint --fix .",
|
|
108
105
|
"format": "pnpm exec oxfmt --write .",
|
|
109
106
|
"format:check": "pnpm exec oxfmt --check .",
|
|
110
|
-
"test": "bun test src && node --test scripts/*.test.mjs",
|
|
107
|
+
"test": "node scripts/qualification/source-boundary.mjs --target && bun test src studio/client/src studio/server studio/shared && node --test scripts/*.test.mjs",
|
|
108
|
+
"test:studio": "pnpm --dir studio test",
|
|
111
109
|
"test:watch": "bun test --watch src"
|
|
112
110
|
}
|
|
113
111
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { schema } from '@astrale-os/sdk/schema'
|
|
2
|
+
|
|
3
|
+
import { defineApplication } from '@astrale-os/sdk/application'
|
|
4
|
+
import { compile } from '@astrale-os/sdk/deployment/build'
|
|
5
|
+
import { addressing, assemble } from '@astrale-os/sdk/deployment/release'
|
|
6
|
+
import { defineRuntime } from '@astrale-os/sdk/runtime'
|
|
7
|
+
|
|
8
|
+
/** Build a canonical empty-runtime Release for cross-boundary CLI tests. */
|
|
9
|
+
export function releaseFor<const Schema extends schema.DomainSchema>(
|
|
10
|
+
source: Schema,
|
|
11
|
+
issuer: string,
|
|
12
|
+
) {
|
|
13
|
+
const runtime = defineRuntime<Schema>()({
|
|
14
|
+
integrations: {},
|
|
15
|
+
initialize: () => ({ providers: {} }),
|
|
16
|
+
actions: [],
|
|
17
|
+
workflows: [],
|
|
18
|
+
})
|
|
19
|
+
return assemble(compile(defineApplication({ schema: source, runtime })), addressing(issuer))
|
|
20
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ClientSession } from '@astrale-os/sdk/client/session'
|
|
2
|
+
|
|
3
|
+
import { bundle, defineSchema, schema as schemaApi } from '@astrale-os/sdk/schema'
|
|
4
|
+
import { expect, mock, test } from 'bun:test'
|
|
5
|
+
|
|
6
|
+
import { releaseFor } from '../../__tests__/fixtures/publication'
|
|
7
|
+
import { bindAdmin } from '../binding'
|
|
8
|
+
|
|
9
|
+
const schema = defineSchema('admin.astrale.ai', {})
|
|
10
|
+
const release = releaseFor(schema, 'https://admin.beta.astrale.ai')
|
|
11
|
+
|
|
12
|
+
test('binds the installed Admin Domain instead of the source Kernel publication', async () => {
|
|
13
|
+
const installation = mock(async () => ({
|
|
14
|
+
state: 'ready' as const,
|
|
15
|
+
target: 'sha256:admin-target' as const,
|
|
16
|
+
source: { kind: 'remote' as const, publication: release.publication },
|
|
17
|
+
bundle: bundle.create(schema),
|
|
18
|
+
readiness: 'sha256:admin-readiness' as const,
|
|
19
|
+
capabilities: { requested: [], materialized: [] },
|
|
20
|
+
}))
|
|
21
|
+
const session = {
|
|
22
|
+
installation,
|
|
23
|
+
bind: (domain: unknown) => ({ domain, graph: {} }),
|
|
24
|
+
} as unknown as ClientSession
|
|
25
|
+
|
|
26
|
+
const binding = await bindAdmin(session)
|
|
27
|
+
|
|
28
|
+
expect(installation).toHaveBeenCalledWith('admin.astrale.ai')
|
|
29
|
+
expect(binding.domain.origin).toBe('admin.astrale.ai')
|
|
30
|
+
expect(binding.domain.revision).toBe(schemaApi.revision(schema))
|
|
31
|
+
})
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { ClientSession } from '@astrale-os/sdk/client/session'
|
|
2
|
+
import type { CallableReference } from '@astrale-os/sdk/client/session'
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
callableAddress,
|
|
6
|
+
core,
|
|
7
|
+
defineSchema,
|
|
8
|
+
edgeClass,
|
|
9
|
+
method,
|
|
10
|
+
nodeClass,
|
|
11
|
+
property,
|
|
12
|
+
schema,
|
|
13
|
+
} from '@astrale-os/sdk/schema'
|
|
14
|
+
import { mock } from 'bun:test'
|
|
15
|
+
|
|
16
|
+
import type { AdminBinding } from '../binding'
|
|
17
|
+
|
|
18
|
+
const operation = () =>
|
|
19
|
+
method({
|
|
20
|
+
auth: 'authenticated',
|
|
21
|
+
input: { type: 'object', additionalProperties: true },
|
|
22
|
+
output: { type: 'object', additionalProperties: true },
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
const Domain = nodeClass({
|
|
26
|
+
properties: {
|
|
27
|
+
origin: property({ type: 'string' }, { required: true }),
|
|
28
|
+
name: property({ type: 'string' }, { required: true }),
|
|
29
|
+
discoveryUrl: property({ type: 'string' }, { required: true }),
|
|
30
|
+
description: property({ type: 'string' }),
|
|
31
|
+
createdAt: property({ type: 'string' }, { required: true }),
|
|
32
|
+
updatedAt: property({ type: 'string' }, { required: true }),
|
|
33
|
+
},
|
|
34
|
+
methods: { configureDefault: operation() },
|
|
35
|
+
})
|
|
36
|
+
const Fleet = nodeClass({
|
|
37
|
+
methods: {
|
|
38
|
+
publishDomain: operation(),
|
|
39
|
+
listInstances: operation(),
|
|
40
|
+
createInstance: operation(),
|
|
41
|
+
},
|
|
42
|
+
})
|
|
43
|
+
const Host = nodeClass({
|
|
44
|
+
properties: {
|
|
45
|
+
id: property({ type: 'string' }, { required: true }),
|
|
46
|
+
state: property({ type: 'string' }, { required: true }),
|
|
47
|
+
},
|
|
48
|
+
methods: { createInstance: operation() },
|
|
49
|
+
})
|
|
50
|
+
const Instance = nodeClass({
|
|
51
|
+
methods: {
|
|
52
|
+
status: operation(),
|
|
53
|
+
delete: operation(),
|
|
54
|
+
installDomain: operation(),
|
|
55
|
+
},
|
|
56
|
+
})
|
|
57
|
+
const fleet_installs_domain_by_default = edgeClass.directed({
|
|
58
|
+
source: { as: 'fleet', accepts: [Fleet], outgoing: '0..*' },
|
|
59
|
+
target: { as: 'domain', accepts: [Domain], incoming: '0..*' },
|
|
60
|
+
})
|
|
61
|
+
const fleet_reserves_admin_host = edgeClass.directed({
|
|
62
|
+
source: { as: 'fleet', accepts: [Fleet], outgoing: '0..1' },
|
|
63
|
+
target: { as: 'host', accepts: [Host], incoming: '0..1' },
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
export const AdminTestSchema = defineSchema('admin.astrale.ai', {
|
|
67
|
+
classes: {
|
|
68
|
+
Domain,
|
|
69
|
+
Fleet,
|
|
70
|
+
Host,
|
|
71
|
+
Instance,
|
|
72
|
+
fleet_installs_domain_by_default,
|
|
73
|
+
fleet_reserves_admin_host,
|
|
74
|
+
},
|
|
75
|
+
core: { nodes: { fleet: core.node(() => Fleet, {}) }, edges: [] },
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
export const AdminTestDomain = schema.resolve(AdminTestSchema)
|
|
79
|
+
|
|
80
|
+
export function adminBinding(): AdminBinding {
|
|
81
|
+
return { domain: AdminTestDomain, graph: {} } as unknown as AdminBinding
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export function adminSession(
|
|
85
|
+
implementation?: (
|
|
86
|
+
method: { readonly owner: string; readonly name: string },
|
|
87
|
+
receiver: unknown,
|
|
88
|
+
input: unknown,
|
|
89
|
+
) => unknown,
|
|
90
|
+
) {
|
|
91
|
+
const invoke = mock(async (reference: CallableReference, input: unknown) => {
|
|
92
|
+
const address = callableAddress(reference.callable)
|
|
93
|
+
if (address.kind !== 'method') throw new Error('Expected an Admin Method.')
|
|
94
|
+
return implementation?.(
|
|
95
|
+
{ owner: address.owner.name, name: address.name },
|
|
96
|
+
reference.target,
|
|
97
|
+
input,
|
|
98
|
+
)
|
|
99
|
+
})
|
|
100
|
+
return { invoke, session: { invoke } as unknown as ClientSession }
|
|
101
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import type { Input } from '@astrale-os/sdk/client'
|
|
2
|
+
import type { ClientSession } from '@astrale-os/sdk/client/session'
|
|
3
|
+
import type {
|
|
4
|
+
ResolvedClass,
|
|
5
|
+
ResolvedCoreDefinition,
|
|
6
|
+
ResolvedMethod,
|
|
7
|
+
ResolvedProperty,
|
|
8
|
+
} from '@astrale-os/sdk/schema'
|
|
9
|
+
import type { DomainBinding } from '@astrale-os/shell'
|
|
10
|
+
|
|
11
|
+
import { reference } from '@astrale-os/sdk/client/session'
|
|
12
|
+
import { Path } from '@astrale-os/sdk/graph/path'
|
|
13
|
+
import { bindDomain } from '@astrale-os/shell'
|
|
14
|
+
|
|
15
|
+
const ADMIN_ORIGIN = 'admin.astrale.ai'
|
|
16
|
+
|
|
17
|
+
export type AdminBinding = DomainBinding
|
|
18
|
+
|
|
19
|
+
/** Bind the exact Admin revision installed on this source Kernel. */
|
|
20
|
+
export async function bindAdmin(session: ClientSession): Promise<AdminBinding> {
|
|
21
|
+
const installed = await session.installation(ADMIN_ORIGIN)
|
|
22
|
+
return requireAdminBinding(await bindDomain(session, installed.bundle.root))
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** Admit an injected dynamic binding as the Admin Domain. */
|
|
26
|
+
export function requireAdminBinding(binding: AdminBinding): AdminBinding {
|
|
27
|
+
if (binding.domain.origin !== ADMIN_ORIGIN) {
|
|
28
|
+
throw new TypeError('Configured Admin target does not serve the Admin Domain.')
|
|
29
|
+
}
|
|
30
|
+
return binding
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** Resolve one required Admin Class without rebuilding its schema contract. */
|
|
34
|
+
export function requireAdminClass(
|
|
35
|
+
binding: AdminBinding,
|
|
36
|
+
name: string,
|
|
37
|
+
kind: 'node',
|
|
38
|
+
): ResolvedClass<'node'>
|
|
39
|
+
export function requireAdminClass(
|
|
40
|
+
binding: AdminBinding,
|
|
41
|
+
name: string,
|
|
42
|
+
kind: 'edge',
|
|
43
|
+
): ResolvedClass<'edge'>
|
|
44
|
+
export function requireAdminClass(
|
|
45
|
+
binding: AdminBinding,
|
|
46
|
+
name: string,
|
|
47
|
+
kind: 'node' | 'edge',
|
|
48
|
+
): ResolvedClass<'node'> | ResolvedClass<'edge'> {
|
|
49
|
+
const selected = binding.domain.classes[name]
|
|
50
|
+
if (selected?.kind !== kind) throw new TypeError(`Admin ${name} is not a ${kind} Class.`)
|
|
51
|
+
return selected
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** Resolve one required Admin Core Node as its canonical projection Path. */
|
|
55
|
+
export function requireAdminCore(binding: AdminBinding, name: string): Path {
|
|
56
|
+
const selected = binding.domain.core.nodes[name] as ResolvedCoreDefinition | undefined
|
|
57
|
+
if (selected === undefined) throw new TypeError(`Admin has no Core Node ${name}.`)
|
|
58
|
+
return Path.project(selected.ref)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** Resolve one effective Property by unambiguous member name. */
|
|
62
|
+
export function requireAdminProperty(
|
|
63
|
+
owner: ResolvedClass,
|
|
64
|
+
name: string,
|
|
65
|
+
): ResolvedProperty<unknown> {
|
|
66
|
+
const selected = [...owner.properties].find((property) => property.name === name)
|
|
67
|
+
if (selected === undefined) {
|
|
68
|
+
throw new TypeError(`Admin ${owner.ref.name}.${name} Property is absent.`)
|
|
69
|
+
}
|
|
70
|
+
return selected
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/** Invoke one resolved executable instance Method through Kernel Client. */
|
|
74
|
+
export async function invokeAdminMethod(
|
|
75
|
+
session: ClientSession,
|
|
76
|
+
binding: AdminBinding,
|
|
77
|
+
owner: ResolvedClass<'node'>,
|
|
78
|
+
name: string,
|
|
79
|
+
receiver: Path,
|
|
80
|
+
input: Input,
|
|
81
|
+
): Promise<unknown> {
|
|
82
|
+
const method = [...owner.methods].find((candidate) => candidate.name === name)
|
|
83
|
+
if (method === undefined || !isExecutableInstanceMethod(method)) {
|
|
84
|
+
throw new TypeError(`Admin ${owner.ref.name}.${name} is not an executable instance Method.`)
|
|
85
|
+
}
|
|
86
|
+
return session.invoke(reference(binding.domain, method)(receiver), input)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
type ExecutableInstanceMethod = ResolvedMethod<
|
|
90
|
+
unknown,
|
|
91
|
+
unknown,
|
|
92
|
+
false,
|
|
93
|
+
Exclude<ResolvedMethod['inheritance'], 'abstract'>
|
|
94
|
+
>
|
|
95
|
+
|
|
96
|
+
function isExecutableInstanceMethod(method: ResolvedMethod): method is ExecutableInstanceMethod {
|
|
97
|
+
return method.static === false && method.inheritance !== 'abstract'
|
|
98
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { ClientSession } from '@astrale-os/sdk/client/session'
|
|
2
|
+
import type { DomainBinding } from '@astrale-os/shell'
|
|
3
3
|
|
|
4
4
|
import type { AdminGraphApi } from '../../graph/.spec/api.js'
|
|
5
5
|
|
|
@@ -1,41 +1,25 @@
|
|
|
1
|
-
import type { DomainBinding } from '@astrale-os/kernel-client/domain'
|
|
2
1
|
import type { Node } from '@astrale-os/sdk/graph/node'
|
|
3
2
|
import type { QueryAST } from '@astrale-os/sdk/query'
|
|
4
3
|
|
|
5
|
-
import { ClassPath } from '@astrale-os/sdk/graph/class'
|
|
6
4
|
import { NodeId } from '@astrale-os/sdk/graph/node'
|
|
7
|
-
import { Path } from '@astrale-os/sdk/graph/path'
|
|
8
5
|
import { describe, expect, mock, test } from 'bun:test'
|
|
9
6
|
|
|
10
7
|
import type { AdminGraphApi } from '../../graph'
|
|
11
8
|
|
|
9
|
+
import { AdminTestDomain, adminBinding, adminSession } from '../../__tests__/fixture'
|
|
12
10
|
import { connectAdminCatalog } from '../client'
|
|
13
11
|
|
|
14
|
-
function definition(name: string) {
|
|
15
|
-
return {
|
|
16
|
-
name,
|
|
17
|
-
$: {
|
|
18
|
-
method(method: string) {
|
|
19
|
-
return { owner: name, name: method }
|
|
20
|
-
},
|
|
21
|
-
property(property: string) {
|
|
22
|
-
return { key: property }
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
12
|
function domainNode(id: string, origin: string): Node {
|
|
29
13
|
return {
|
|
30
14
|
id: NodeId(id),
|
|
31
|
-
class:
|
|
32
|
-
props: {
|
|
15
|
+
class: AdminTestDomain.classes.Domain.key,
|
|
16
|
+
props: AdminTestDomain.classes.Domain.properties.from({
|
|
33
17
|
origin,
|
|
34
18
|
name: origin.split('.')[0]!,
|
|
35
19
|
discoveryUrl: `https://${origin}`,
|
|
36
20
|
createdAt: '2026-08-12T00:00:00.000Z',
|
|
37
21
|
updatedAt: '2026-08-12T00:00:00.000Z',
|
|
38
|
-
}
|
|
22
|
+
}),
|
|
39
23
|
}
|
|
40
24
|
}
|
|
41
25
|
|
|
@@ -44,24 +28,16 @@ function fixture(input: {
|
|
|
44
28
|
defaults?: readonly Node[]
|
|
45
29
|
invoke?: (method: { owner: string; name: string }, receiver: unknown, value: unknown) => unknown
|
|
46
30
|
}) {
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (name === 'Domain') return Domain
|
|
58
|
-
if (name === 'Fleet') return Fleet
|
|
59
|
-
throw new Error(`Unexpected class ${name}`)
|
|
60
|
-
},
|
|
61
|
-
core: { nodes: { fleet: { path: Path.id(NodeId('fleet')) } } },
|
|
62
|
-
invoke,
|
|
63
|
-
},
|
|
64
|
-
} as unknown as DomainBinding
|
|
31
|
+
const calls: Array<{
|
|
32
|
+
method: { owner: string; name: string }
|
|
33
|
+
receiver: string
|
|
34
|
+
value: unknown
|
|
35
|
+
}> = []
|
|
36
|
+
const remote = adminSession((method, receiver, value) => {
|
|
37
|
+
calls.push({ method, receiver: String(receiver), value })
|
|
38
|
+
return input.invoke?.(method, receiver, value)
|
|
39
|
+
})
|
|
40
|
+
const binding = adminBinding()
|
|
65
41
|
const query = mock(async (_ast: QueryAST) => ({
|
|
66
42
|
result: {
|
|
67
43
|
kind: 'nodes' as const,
|
|
@@ -79,10 +55,11 @@ function fixture(input: {
|
|
|
79
55
|
}))
|
|
80
56
|
const graph = { query, neighbors } as unknown as AdminGraphApi
|
|
81
57
|
return {
|
|
82
|
-
invoke,
|
|
58
|
+
invoke: remote.invoke,
|
|
59
|
+
calls,
|
|
83
60
|
connect: () =>
|
|
84
61
|
connectAdminCatalog(
|
|
85
|
-
{ session:
|
|
62
|
+
{ session: remote.session, graph },
|
|
86
63
|
{
|
|
87
64
|
bind: async () => binding,
|
|
88
65
|
operationId: (kind) => `cli.domain.${kind}:test`,
|
|
@@ -130,16 +107,10 @@ describe('V2 Admin Domain catalog adapter', () => {
|
|
|
130
107
|
installByDefault: true,
|
|
131
108
|
}),
|
|
132
109
|
).resolves.toMatchObject({ changed: true, isNew: true, entry: { installByDefault: true } })
|
|
133
|
-
expect(
|
|
134
|
-
contract.invoke.mock.calls.map(([method, receiver, value]) => ({
|
|
135
|
-
method,
|
|
136
|
-
receiver: String(receiver),
|
|
137
|
-
value,
|
|
138
|
-
})),
|
|
139
|
-
).toEqual([
|
|
110
|
+
expect(contract.calls).toEqual([
|
|
140
111
|
{
|
|
141
112
|
method: { owner: 'Fleet', name: 'publishDomain' },
|
|
142
|
-
receiver: '
|
|
113
|
+
receiver: '/:admin.astrale.ai:core.fleet::publishDomain',
|
|
143
114
|
value: {
|
|
144
115
|
operationId: 'cli.domain.publish:test',
|
|
145
116
|
origin: 'crm.acme.dev',
|
|
@@ -149,7 +120,7 @@ describe('V2 Admin Domain catalog adapter', () => {
|
|
|
149
120
|
},
|
|
150
121
|
{
|
|
151
122
|
method: { owner: 'Domain', name: 'configureDefault' },
|
|
152
|
-
receiver: '@crm-domain',
|
|
123
|
+
receiver: '@crm-domain::configureDefault',
|
|
153
124
|
value: {
|
|
154
125
|
operationId: 'cli.domain.configure-default:test',
|
|
155
126
|
enabled: true,
|