@rosthq/cli 0.7.156 → 0.7.158
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/dist/acting-principal.d.ts +82 -0
- package/dist/acting-principal.d.ts.map +1 -0
- package/dist/acting-principal.test.d.ts +2 -0
- package/dist/acting-principal.test.d.ts.map +1 -0
- package/dist/commands/auth-device-status.d.ts +13 -0
- package/dist/commands/auth-device-status.d.ts.map +1 -0
- package/dist/commands/implementation-access.d.ts.map +1 -1
- package/dist/commands/onboarding-preflight.d.ts +86 -0
- package/dist/commands/onboarding-preflight.d.ts.map +1 -0
- package/dist/commands/onboarding-preflight.test.d.ts +2 -0
- package/dist/commands/onboarding-preflight.test.d.ts.map +1 -0
- package/dist/commands/onboarding.d.ts +6 -1
- package/dist/commands/onboarding.d.ts.map +1 -1
- package/dist/device-auth.d.ts +5 -1
- package/dist/device-auth.d.ts.map +1 -1
- package/dist/device-exchange-store.d.ts +49 -0
- package/dist/device-exchange-store.d.ts.map +1 -0
- package/dist/generated/command-discovery.d.ts.map +1 -1
- package/dist/generated/command-manifest.d.ts.map +1 -1
- package/dist/implementation-bootstrap.d.ts +42 -1
- package/dist/implementation-bootstrap.d.ts.map +1 -1
- package/dist/implementation-credential-store.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2263 -1056
- package/dist/index.js.map +4 -4
- package/dist/signup.d.ts +33 -9
- package/dist/signup.d.ts.map +1 -1
- package/dist/skill-trust.d.ts +1 -1
- package/dist/token-store.d.ts +19 -0
- package/dist/token-store.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const ACTING_PRINCIPAL_KINDS: readonly ["none", "unknown", "user_session", "implementation_bootstrap"];
|
|
3
|
+
export declare const actingPrincipalSchema: z.ZodObject<{
|
|
4
|
+
kind: z.ZodEnum<{
|
|
5
|
+
unknown: "unknown";
|
|
6
|
+
none: "none";
|
|
7
|
+
user_session: "user_session";
|
|
8
|
+
implementation_bootstrap: "implementation_bootstrap";
|
|
9
|
+
}>;
|
|
10
|
+
subject: z.ZodNullable<z.ZodString>;
|
|
11
|
+
email: z.ZodNullable<z.ZodString>;
|
|
12
|
+
tenant_id: z.ZodNullable<z.ZodString>;
|
|
13
|
+
tenant_name: z.ZodNullable<z.ZodString>;
|
|
14
|
+
role: z.ZodNullable<z.ZodString>;
|
|
15
|
+
source: z.ZodNullable<z.ZodString>;
|
|
16
|
+
principal_switch: z.ZodNullable<z.ZodString>;
|
|
17
|
+
note: z.ZodNullable<z.ZodString>;
|
|
18
|
+
}, z.core.$strict>;
|
|
19
|
+
export type ActingPrincipal = z.infer<typeof actingPrincipalSchema>;
|
|
20
|
+
/** The canonical `none` projection — no credential resolved at all. */
|
|
21
|
+
export declare function noneActingPrincipal(note?: string): ActingPrincipal;
|
|
22
|
+
/**
|
|
23
|
+
* Decode the self-describing identity claims out of a session's own JWT. This
|
|
24
|
+
* is a LOCAL read of a token the CLI already holds — never a network call and
|
|
25
|
+
* never a signature check (the server re-authenticates every request). It is
|
|
26
|
+
* used only to render whose authority a command acts under, so every failure
|
|
27
|
+
* mode resolves to nulls rather than throwing: a non-JWT test token, a token
|
|
28
|
+
* with no email claim, or malformed base64 all yield an unresolved identity,
|
|
29
|
+
* which the projection reports as `user_session` with a null email — never a
|
|
30
|
+
* fabricated one.
|
|
31
|
+
*/
|
|
32
|
+
export declare function decodeSessionIdentity(accessToken: string | undefined): {
|
|
33
|
+
email: string | null;
|
|
34
|
+
tenantId: string | null;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Project the acting principal for a resolved user session. `accessToken` is
|
|
38
|
+
* the session's JWT (decoded locally for the email/tenant); `source` is the
|
|
39
|
+
* token store's describe() string. Identity that does not decode stays null —
|
|
40
|
+
* the projection is `user_session` with a null email, distinct from `none`.
|
|
41
|
+
*/
|
|
42
|
+
export declare function userSessionActingPrincipal(params: {
|
|
43
|
+
accessToken: string | undefined;
|
|
44
|
+
source: string | null;
|
|
45
|
+
tenantName?: string | null;
|
|
46
|
+
}): ActingPrincipal;
|
|
47
|
+
/**
|
|
48
|
+
* Project the acting principal for the bounded implementation-run credential.
|
|
49
|
+
* The tenant id and run id are proven facts carried on the credential itself;
|
|
50
|
+
* `source` is the credential store's describe() string. `otherCredential`,
|
|
51
|
+
* when set, records that a competing credential (typically the caller's own
|
|
52
|
+
* logged-in user session) was also available and this bounded principal was
|
|
53
|
+
* selected over it — the explicit switch note the dual-credential control
|
|
54
|
+
* requires.
|
|
55
|
+
*/
|
|
56
|
+
export declare function implementationActingPrincipal(params: {
|
|
57
|
+
tenantId: string;
|
|
58
|
+
implementationRunId: string;
|
|
59
|
+
source: string | null;
|
|
60
|
+
otherCredential?: string | null;
|
|
61
|
+
}): ActingPrincipal;
|
|
62
|
+
/**
|
|
63
|
+
* The one-line human header rendered BEFORE a command's payload. It states
|
|
64
|
+
* whose authority the command acts under and never renders an unproven
|
|
65
|
+
* identity as a proven one: `none`/`unknown` say exactly that, and a user
|
|
66
|
+
* session whose JWT did not decode reports the credential without inventing an
|
|
67
|
+
* email.
|
|
68
|
+
*/
|
|
69
|
+
export declare function renderActingPrincipalHeader(principal: ActingPrincipal): string;
|
|
70
|
+
/**
|
|
71
|
+
* The stable --json envelope: the acting principal alongside the command's own
|
|
72
|
+
* result. Chosen over sibling-key injection because most --json command
|
|
73
|
+
* outputs are opaque to the CLI (it never inspects their shape), so a
|
|
74
|
+
* top-level envelope cannot collide with a result field and is uniform across
|
|
75
|
+
* every command. Documented in the PR so downstream consumers read
|
|
76
|
+
* `.output` for the former raw result.
|
|
77
|
+
*/
|
|
78
|
+
export declare function actingPrincipalEnvelope(principal: ActingPrincipal, output: unknown): {
|
|
79
|
+
acting_principal: ActingPrincipal;
|
|
80
|
+
output: unknown;
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=acting-principal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acting-principal.d.ts","sourceRoot":"","sources":["../src/acting-principal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA4BxB,eAAO,MAAM,sBAAsB,0EAKzB,CAAC;AAEX,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;kBAuBvB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAcpE,uEAAuE;AACvE,wBAAgB,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,CAElE;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B;IAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAgCnD;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,GAAG,eAAe,CAalB;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,GAAG,eAAe,CAclB;AAYD;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,CAE9E;AAuCD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,eAAe,EAC1B,MAAM,EAAE,OAAO,GACd;IAAE,gBAAgB,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAExD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acting-principal.test.d.ts","sourceRoot":"","sources":["../src/acting-principal.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type DeviceExchangeStore } from "../device-exchange-store.js";
|
|
2
|
+
type CliIo = {
|
|
3
|
+
stdout: Pick<NodeJS.WriteStream, "write">;
|
|
4
|
+
stderr: Pick<NodeJS.WriteStream, "write">;
|
|
5
|
+
};
|
|
6
|
+
export type AuthDeviceStatusDeps = {
|
|
7
|
+
createDeviceExchangeStore(): DeviceExchangeStore;
|
|
8
|
+
now?: () => number;
|
|
9
|
+
};
|
|
10
|
+
export declare function defaultAuthDeviceStatusDeps(): AuthDeviceStatusDeps;
|
|
11
|
+
export declare function runAuthDeviceStatus(args: string[], io: CliIo, deps: AuthDeviceStatusDeps): Promise<number>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=auth-device-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-device-status.d.ts","sourceRoot":"","sources":["../../src/commands/auth-device-status.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,6BAA6B,CAAC;AAUrC,KAAK,KAAK,GAAG;IACX,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,yBAAyB,IAAI,mBAAmB,CAAC;IACjD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,2BAA2B,IAAI,oBAAoB,CAElE;AAMD,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EAAE,EACd,EAAE,EAAE,KAAK,EACT,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,MAAM,CAAC,CAiEjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"implementation-access.d.ts","sourceRoot":"","sources":["../../src/commands/implementation-access.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EACL,8BAA8B,EAI/B,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EAGL,KAAK,6BAA6B,EACnC,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAGL,KAAK,+BAA+B,EACrC,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"implementation-access.d.ts","sourceRoot":"","sources":["../../src/commands/implementation-access.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EACL,8BAA8B,EAI/B,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EAGL,KAAK,6BAA6B,EACnC,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAGL,KAAK,+BAA+B,EACrC,MAAM,oCAAoC,CAAC;AA2B5C,MAAM,MAAM,0BAA0B,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAErF,KAAK,KAAK,GAAG;IACX,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB,IAAI,6BAA6B,CAAC;IAC3D,oBAAoB,CAAC,IAAI,+BAA+B,CAAC;IACzD,8BAA8B,EAAE,OAAO,8BAA8B,CAAC;IACtE,aAAa,EAAE,OAAO,aAAa,CAAC;CACrC,CAAC;AAEF,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM;CAI5B;AAKD,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EAAE,EACd,EAAE,EAAE,KAAK,EACT,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,MAAM,CAAC,CA2DjB;AAmMD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEtD;AA4JD,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,MAAM,GAAG,wBAAwB,CAOxF"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type ActingPrincipal } from "../acting-principal.js";
|
|
3
|
+
type CliIo = {
|
|
4
|
+
stdout: Pick<NodeJS.WriteStream, "write">;
|
|
5
|
+
stderr: Pick<NodeJS.WriteStream, "write">;
|
|
6
|
+
};
|
|
7
|
+
export type PreflightCheckStatus = "pass" | "fail" | "unknown";
|
|
8
|
+
export declare const preflightCheckSchema: z.ZodObject<{
|
|
9
|
+
name: z.ZodString;
|
|
10
|
+
status: z.ZodEnum<{
|
|
11
|
+
unknown: "unknown";
|
|
12
|
+
pass: "pass";
|
|
13
|
+
fail: "fail";
|
|
14
|
+
}>;
|
|
15
|
+
detail: z.ZodString;
|
|
16
|
+
}, z.core.$strict>;
|
|
17
|
+
export declare const preflightResultSchema: z.ZodObject<{
|
|
18
|
+
ok: z.ZodBoolean;
|
|
19
|
+
acting_principal: z.ZodObject<{
|
|
20
|
+
kind: z.ZodEnum<{
|
|
21
|
+
unknown: "unknown";
|
|
22
|
+
none: "none";
|
|
23
|
+
user_session: "user_session";
|
|
24
|
+
implementation_bootstrap: "implementation_bootstrap";
|
|
25
|
+
}>;
|
|
26
|
+
subject: z.ZodNullable<z.ZodString>;
|
|
27
|
+
email: z.ZodNullable<z.ZodString>;
|
|
28
|
+
tenant_id: z.ZodNullable<z.ZodString>;
|
|
29
|
+
tenant_name: z.ZodNullable<z.ZodString>;
|
|
30
|
+
role: z.ZodNullable<z.ZodString>;
|
|
31
|
+
source: z.ZodNullable<z.ZodString>;
|
|
32
|
+
principal_switch: z.ZodNullable<z.ZodString>;
|
|
33
|
+
note: z.ZodNullable<z.ZodString>;
|
|
34
|
+
}, z.core.$strict>;
|
|
35
|
+
checks: z.ZodArray<z.ZodObject<{
|
|
36
|
+
name: z.ZodString;
|
|
37
|
+
status: z.ZodEnum<{
|
|
38
|
+
unknown: "unknown";
|
|
39
|
+
pass: "pass";
|
|
40
|
+
fail: "fail";
|
|
41
|
+
}>;
|
|
42
|
+
detail: z.ZodString;
|
|
43
|
+
}, z.core.$strict>>;
|
|
44
|
+
}, z.core.$strict>;
|
|
45
|
+
export type PreflightCheck = z.infer<typeof preflightCheckSchema>;
|
|
46
|
+
export type PreflightResult = z.infer<typeof preflightResultSchema>;
|
|
47
|
+
/**
|
|
48
|
+
* The implementation-credential fact the preflight reports. `present` carries
|
|
49
|
+
* the expiry decision and the store the credential was read from (`stored_in`);
|
|
50
|
+
* `error` is a store read failure (never proof of absence).
|
|
51
|
+
*/
|
|
52
|
+
export type PreflightImplementationCredential = {
|
|
53
|
+
kind: "present";
|
|
54
|
+
expired: boolean;
|
|
55
|
+
storedIn: string;
|
|
56
|
+
} | {
|
|
57
|
+
kind: "absent";
|
|
58
|
+
} | {
|
|
59
|
+
kind: "error";
|
|
60
|
+
detail: string;
|
|
61
|
+
};
|
|
62
|
+
export type PreflightDeps = {
|
|
63
|
+
json: boolean;
|
|
64
|
+
principal: ActingPrincipal;
|
|
65
|
+
sessionRefreshError: string | null;
|
|
66
|
+
implementationCredential: PreflightImplementationCredential;
|
|
67
|
+
cliVersion: string | null;
|
|
68
|
+
fetchLatestVersion: () => Promise<string | null>;
|
|
69
|
+
probeDeployment: () => Promise<{
|
|
70
|
+
ok: boolean;
|
|
71
|
+
status: number | null;
|
|
72
|
+
detail: string;
|
|
73
|
+
}>;
|
|
74
|
+
readOnboardingState: (() => Promise<{
|
|
75
|
+
ok: boolean;
|
|
76
|
+
alreadyOnboarded: boolean;
|
|
77
|
+
detail: string;
|
|
78
|
+
}>) | null;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Run the preflight and render it. Returns 0 only when EVERY check passed; any
|
|
82
|
+
* `fail` or `unknown` returns 1 (unproven is not green).
|
|
83
|
+
*/
|
|
84
|
+
export declare function runOnboardingPreflight(io: CliIo, deps: PreflightDeps): Promise<number>;
|
|
85
|
+
export {};
|
|
86
|
+
//# sourceMappingURL=onboarding-preflight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding-preflight.d.ts","sourceRoot":"","sources":["../../src/commands/onboarding-preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAEhC,KAAK,KAAK,GAAG;IACX,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;CAC3C,CAAC;AASF,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAE/D,eAAO,MAAM,oBAAoB;;;;;;;;kBAMtB,CAAC;AAEZ,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAMvB,CAAC;AAEZ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;;GAIG;AACH,MAAM,MAAM,iCAAiC,GACzC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,OAAO,CAAC;IAEd,SAAS,EAAE,eAAe,CAAC;IAO3B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,wBAAwB,EAAE,iCAAiC,CAAC;IAE5D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAI1B,kBAAkB,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAIjD,eAAe,EAAE,MAAM,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAIvF,mBAAmB,EACf,CAAC,MAAM,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,gBAAgB,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,GAC3E,IAAI,CAAC;CACV,CAAC;AAgIF;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CA8B5F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding-preflight.test.d.ts","sourceRoot":"","sources":["../../src/commands/onboarding-preflight.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CommandClient } from "../command-client.js";
|
|
2
|
+
import { type ActingPrincipal } from "../acting-principal.js";
|
|
2
3
|
type CliIo = {
|
|
3
4
|
stdout: Pick<NodeJS.WriteStream, "write">;
|
|
4
5
|
stderr: Pick<NodeJS.WriteStream, "write">;
|
|
@@ -6,6 +7,7 @@ type CliIo = {
|
|
|
6
7
|
export type OnboardingDeps = {
|
|
7
8
|
makeClient(): Promise<CommandClient>;
|
|
8
9
|
readFile?: (path: string) => Promise<Buffer>;
|
|
10
|
+
actingPrincipal?: ActingPrincipal;
|
|
9
11
|
};
|
|
10
12
|
/**
|
|
11
13
|
* The largest source file this invocation can actually send: the smallest of the
|
|
@@ -48,9 +50,12 @@ export declare function runOnboarding(args: string[], io: CliIo, deps: Onboardin
|
|
|
48
50
|
* policy errors before shared rendering; the caller handles an intercepted
|
|
49
51
|
* outcome as terminal rather than retrying under an owner session.
|
|
50
52
|
*/
|
|
51
|
-
export declare function executeOnboardingInvocation(invocation: OnboardingInvocation, io: CliIo, client: CommandClient
|
|
53
|
+
export declare function executeOnboardingInvocation(invocation: OnboardingInvocation, io: CliIo, client: CommandClient, options?: {
|
|
54
|
+
actingPrincipal?: ActingPrincipal;
|
|
55
|
+
}): Promise<number>;
|
|
52
56
|
export declare function executeOnboardingInvocation(invocation: OnboardingInvocation, io: CliIo, client: CommandClient, options: {
|
|
53
57
|
onError: (error: unknown) => "handled" | "print";
|
|
58
|
+
actingPrincipal?: ActingPrincipal;
|
|
54
59
|
}): Promise<number | "fall-through">;
|
|
55
60
|
/**
|
|
56
61
|
* Resolve the local file reads a parsed invocation deferred: the source bytes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../src/commands/onboarding.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAsB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../src/commands/onboarding.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAsB,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAMhC,KAAK,KAAK,GAAG;IACX,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAI3B,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAGrC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAI7C,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,CAAC;AAkDF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,MAAM,EACrB,YAAY,GAAE,MAAsC,GACnD,MAAM,CAMR;AAqBD,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EACL,mBAAmB,GACnB,mBAAmB,GACnB,qBAAqB,GACrB,qBAAqB,GACrB,0BAA0B,GAC1B,kBAAkB,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,eAAe,GAAG,OAAO,GAAG,cAAc,CAAC;IAInG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBpG;AAED;;;;;;;;GAQG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,oBAAoB,EAChC,EAAE,EAAE,KAAK,EACT,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE;IAAE,eAAe,CAAC,EAAE,eAAe,CAAA;CAAE,GAC9C,OAAO,CAAC,MAAM,CAAC,CAAC;AACnB,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,oBAAoB,EAChC,EAAE,EAAE,KAAK,EACT,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE;IAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,SAAS,GAAG,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,eAAe,CAAA;CAAE,GAC/F,OAAO,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;AAiDpC;;;;;GAKG;AACH,wBAAsB,gCAAgC,CACpD,UAAU,EAAE,oBAAoB,EAChC,YAAY,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAY,GACzD,OAAO,CAAC,IAAI,CAAC,CAqEf;AAgDD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,oBAAoB,CA+G9E;AA2FD,wBAAgB,eAAe,IAAI,MAAM,CAWxC;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EACtC,MAAM,EAAE,OAAO,GACd,MAAM,CAoBR"}
|
package/dist/device-auth.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import type { CliConfig } from "./config.js";
|
|
3
|
+
import type { DeviceExchangeStore } from "./device-exchange-store.js";
|
|
3
4
|
import type { CliSession } from "./token-store.js";
|
|
4
5
|
type CliIo = {
|
|
5
6
|
stdout: Pick<NodeJS.WriteStream, "write">;
|
|
@@ -14,6 +15,7 @@ export type DeviceLoginDeps = {
|
|
|
14
15
|
type: string;
|
|
15
16
|
}) => Promise<CliSession>;
|
|
16
17
|
now?: () => number;
|
|
18
|
+
deviceExchangeStore?: DeviceExchangeStore;
|
|
17
19
|
};
|
|
18
20
|
declare const startResponseSchema: z.ZodObject<{
|
|
19
21
|
device_code: z.ZodString;
|
|
@@ -37,7 +39,9 @@ export type ApprovedPoll = z.infer<typeof approvedPollResponseSchema>;
|
|
|
37
39
|
export declare class DeviceLoginError extends Error {
|
|
38
40
|
constructor(message: string);
|
|
39
41
|
}
|
|
40
|
-
export declare function loginWithDeviceCode(config: CliConfig, io: CliIo, deps?: DeviceLoginDeps
|
|
42
|
+
export declare function loginWithDeviceCode(config: CliConfig, io: CliIo, deps?: DeviceLoginDeps, options?: {
|
|
43
|
+
pairingCode?: string;
|
|
44
|
+
}): Promise<CliSession>;
|
|
41
45
|
export declare function pollDeviceAuthorizationHandoff<TApproved>(config: CliConfig, io: CliIo, options: {
|
|
42
46
|
purpose?: "user_session" | "implementation_bootstrap" | "operator_grant";
|
|
43
47
|
sourceClient?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-auth.d.ts","sourceRoot":"","sources":["../src/device-auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"device-auth.d.ts","sourceRoot":"","sources":["../src/device-auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAyB,MAAM,4BAA4B,CAAC;AAE7F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAcnD,KAAK,KAAK,GAAG;IACX,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;CAC3C,CAAC;AAGF,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAGhD,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACnG,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAQnB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C,CAAC;AAEF,QAAA,MAAM,mBAAmB;;;;;;;;iBAWf,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAE/D,KAAK,iBAAiB,GAAG;IACvB,6BAA6B,EAAE,MAAM,CAAC;IACtC,uBAAuB,EAAE,MAAM,CAAC;IAChC,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAqBF,QAAA,MAAM,0BAA0B;;iBAEhB,CAAC;AAMjB,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEtE,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI5B;AAiCD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,SAAS,EACjB,EAAE,EAAE,KAAK,EACT,IAAI,GAAE,eAAoB,EAC1B,OAAO,GAAE;IAKP,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,OAAO,CAAC,UAAU,CAAC,CAsBrB;AAED,wBAAsB,8BAA8B,CAAC,SAAS,EAC5D,MAAM,EAAE,SAAS,EACjB,EAAE,EAAE,KAAK,EACT,OAAO,EAAE;IACP,OAAO,CAAC,EAAE,cAAc,GAAG,0BAA0B,GAAG,gBAAgB,CAAC;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIpC,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,iBAAiB,CAAC;IACjE,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,EACD,IAAI,EAAE,eAAe,EACrB,WAAW,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,SAAS,GAAG,IAAI,GACxD,OAAO,CAAC,SAAS,CAAC,CAsKpB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type ExecFile } from "./token-store.js";
|
|
3
|
+
declare const pendingDeviceExchangeSchema: z.ZodObject<{
|
|
4
|
+
purpose: z.ZodEnum<{
|
|
5
|
+
user_session: "user_session";
|
|
6
|
+
implementation_bootstrap: "implementation_bootstrap";
|
|
7
|
+
operator_grant: "operator_grant";
|
|
8
|
+
}>;
|
|
9
|
+
device_code: z.ZodString;
|
|
10
|
+
user_code: z.ZodString;
|
|
11
|
+
verification_uri: z.ZodString;
|
|
12
|
+
verification_uri_complete: z.ZodOptional<z.ZodString>;
|
|
13
|
+
expires_at: z.ZodString;
|
|
14
|
+
}, z.core.$strict>;
|
|
15
|
+
export type PendingDeviceExchange = z.infer<typeof pendingDeviceExchangeSchema>;
|
|
16
|
+
export type DeviceExchangeStore = {
|
|
17
|
+
read(): Promise<PendingDeviceExchange | null>;
|
|
18
|
+
write(exchange: PendingDeviceExchange): Promise<void>;
|
|
19
|
+
clear(): Promise<void>;
|
|
20
|
+
describe(): string;
|
|
21
|
+
};
|
|
22
|
+
export type DeviceExchangeStoreBackend = "macOS Keychain" | "owner-only file store" | "Windows Credential Manager" | "Secret Service";
|
|
23
|
+
/**
|
|
24
|
+
* A backend was reached but could not produce a trustworthy read result. The
|
|
25
|
+
* message intentionally carries only the backend class — never the subprocess
|
|
26
|
+
* error, stdout, stderr, file path, device code, or user code.
|
|
27
|
+
*/
|
|
28
|
+
export declare class DeviceExchangeStoreReadError extends Error {
|
|
29
|
+
readonly backend: DeviceExchangeStoreBackend;
|
|
30
|
+
constructor(backend: DeviceExchangeStoreBackend);
|
|
31
|
+
}
|
|
32
|
+
export declare class DeviceExchangeFileStore implements DeviceExchangeStore {
|
|
33
|
+
private readonly filePath;
|
|
34
|
+
constructor(filePath?: string);
|
|
35
|
+
read(): Promise<PendingDeviceExchange | null>;
|
|
36
|
+
write(exchange: PendingDeviceExchange): Promise<void>;
|
|
37
|
+
clear(): Promise<void>;
|
|
38
|
+
describe(): string;
|
|
39
|
+
private chmodOwnerOnly;
|
|
40
|
+
}
|
|
41
|
+
export type CreateDeviceExchangeStoreOptions = {
|
|
42
|
+
platform?: NodeJS.Platform;
|
|
43
|
+
env?: NodeJS.ProcessEnv;
|
|
44
|
+
execFile?: ExecFile;
|
|
45
|
+
stderr?: Pick<NodeJS.WriteStream, "write">;
|
|
46
|
+
};
|
|
47
|
+
export declare function createDeviceExchangeStore(options?: CreateDeviceExchangeStoreOptions): DeviceExchangeStore;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=device-exchange-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-exchange-store.d.ts","sourceRoot":"","sources":["../src/device-exchange-store.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAWL,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAC;AA6B1B,QAAA,MAAM,2BAA2B;;;;;;;;;;;kBAOtB,CAAC;AAEZ,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,IAAI,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;IAC9C,KAAK,CAAC,QAAQ,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,IAAI,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAClC,gBAAgB,GAChB,uBAAuB,GACvB,4BAA4B,GAC5B,gBAAgB,CAAC;AAErB;;;;GAIG;AACH,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;gBAEjC,OAAO,EAAE,0BAA0B;CAKhD;AA4VD,qBAAa,uBAAwB,YAAW,mBAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,SAAwB;IAEvD,IAAI,IAAI,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAe7C,KAAK,CAAC,QAAQ,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,QAAQ,IAAI,MAAM;YAIJ,cAAc;CAI7B;AAaD,MAAM,MAAM,gCAAgC,GAAG;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;CAC5C,CAAC;AAEF,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,gCAAqC,GAC7C,mBAAmB,CAyBrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-discovery.d.ts","sourceRoot":"","sources":["../../src/generated/command-discovery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE/E,eAAO,MAAM,iBAAiB,EAAE,SAAS,qBAAqB,
|
|
1
|
+
{"version":3,"file":"command-discovery.d.ts","sourceRoot":"","sources":["../../src/generated/command-discovery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE/E,eAAO,MAAM,iBAAiB,EAAE,SAAS,qBAAqB,EAwS7D,CAAC;AAKF,eAAO,MAAM,sBAAsB,EAAE,iBACq56F,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-manifest.d.ts","sourceRoot":"","sources":["../../src/generated/command-manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,eAAO,MAAM,gBAAgB,EAAE,SAAS,oBAAoB,
|
|
1
|
+
{"version":3,"file":"command-manifest.d.ts","sourceRoot":"","sources":["../../src/generated/command-manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,eAAO,MAAM,gBAAgB,EAAE,SAAS,oBAAoB,EA0S3D,CAAC"}
|
|
@@ -14,6 +14,20 @@ export declare function resolveImplementationBootstrapClass(commandId: string):
|
|
|
14
14
|
export declare function implementationBootstrapCommandIds(): string[];
|
|
15
15
|
/** Whether the production registry marks this id as a human-decision command. */
|
|
16
16
|
export declare function isHumanDecisionCommand(commandId: string): boolean;
|
|
17
|
+
/** Whether this id names a registered command at all (as opposed to a typo). */
|
|
18
|
+
export declare function isKnownCommandId(commandId: string): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* DER-3255 (correctness review F4): a MISTYPED command id under a live bounded
|
|
21
|
+
* credential must not be described as an authority refusal.
|
|
22
|
+
*
|
|
23
|
+
* The class map fails closed, so an unknown id resolves to `deny` exactly like a
|
|
24
|
+
* real deny-class command — and the route-unavailable message would then tell an
|
|
25
|
+
* operator that `onboarding.attach_referenc` "is not available to the
|
|
26
|
+
* implementation credential", which reads as a permissions problem and sends
|
|
27
|
+
* them to re-mint or end their run over a missing character. Same fail-closed
|
|
28
|
+
* outcome, truthful reason.
|
|
29
|
+
*/
|
|
30
|
+
export declare function unknownCommandMessage(commandId: string): string;
|
|
17
31
|
/** Treat malformed or equal-to-now expiries as unusable before any network send. */
|
|
18
32
|
export declare function isImplementationCredentialExpired(expiresAt: string, now?: Date): boolean;
|
|
19
33
|
/**
|
|
@@ -25,10 +39,37 @@ export declare class ImplementationBootstrapDeniedError extends Error {
|
|
|
25
39
|
readonly commandId: string;
|
|
26
40
|
constructor(commandId: string);
|
|
27
41
|
}
|
|
28
|
-
/**
|
|
42
|
+
/**
|
|
43
|
+
* A stable operator message for a credential that cannot be retried as owner.
|
|
44
|
+
*
|
|
45
|
+
* DER-3255: an EXPIRED credential during an ACTIVE run is the same leak through a
|
|
46
|
+
* different door, so this path is fail-closed exactly like the route-unavailable
|
|
47
|
+
* one — the run being active is the operative fact, and usability only decides
|
|
48
|
+
* WHICH message the operator reads. That makes naming the recovery command load
|
|
49
|
+
* bearing rather than decorative: this is the message a bounded agent hits when
|
|
50
|
+
* its credential ages out mid-run, which is the state the DER-2965 observation
|
|
51
|
+
* produced.
|
|
52
|
+
*/
|
|
29
53
|
export declare function implementationCredentialExpiredMessage(hasUserSession: boolean): string;
|
|
30
54
|
/** Refuse a noninteractive human-decision command while a bounded run is active. */
|
|
31
55
|
export declare function implementationHumanDecisionMessage(commandId: string): string;
|
|
56
|
+
/**
|
|
57
|
+
* DER-3255: refuse a noninteractive deny-class command while a bounded run is
|
|
58
|
+
* active, NAMING the route that does not exist.
|
|
59
|
+
*
|
|
60
|
+
* The sibling message above covers the human-decision half of the deny class
|
|
61
|
+
* (DER-3023). This one covers the rest — the 160-odd deny-class commands that
|
|
62
|
+
* are not human decisions, of which `onboarding.attach_reference` is the member
|
|
63
|
+
* DER-3045's acceptance run caught executing under owner authority. Reusing the
|
|
64
|
+
* human-decision wording for them would be a false claim: `attach_reference` is
|
|
65
|
+
* not a human-decision command, it simply has no implementation route.
|
|
66
|
+
*
|
|
67
|
+
* The two messages are deliberately distinct rather than merged. The operator's
|
|
68
|
+
* remedy differs: a human-decision command is waiting for a HUMAN, so the TTY is
|
|
69
|
+
* the intended path; a deny-class command has no implementation route at all, so
|
|
70
|
+
* the honest remedy is to end the run.
|
|
71
|
+
*/
|
|
72
|
+
export declare function implementationRouteUnavailableMessage(commandId: string, hasUserSession: boolean): string;
|
|
32
73
|
/**
|
|
33
74
|
* A server response means the bearer is unusable only for authentication
|
|
34
75
|
* failures. Authorization/policy refusals are not liveness signals and must not
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"implementation-bootstrap.d.ts","sourceRoot":"","sources":["../src/implementation-bootstrap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"implementation-bootstrap.d.ts","sourceRoot":"","sources":["../src/implementation-bootstrap.ts"],"names":[],"mappings":"AAoCA,OAAO,EAAE,aAAa,EAAsB,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEnG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AA8E5E;;;;;;;;GAQG;AACH,wBAAgB,mCAAmC,CAAC,SAAS,EAAE,MAAM,GAAG,sBAAsB,CAE7F;AAED,4FAA4F;AAC5F,wBAAgB,iCAAiC,IAAI,MAAM,EAAE,CAE5D;AAED,iFAAiF;AACjF,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEjE;AAOD,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED,oFAAoF;AACpF,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAa,GAAG,OAAO,CAG9F;AAED;;;;GAIG;AACH,qBAAa,kCAAmC,SAAQ,KAAK;IAC3D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,SAAS,EAAE,MAAM;CAK9B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sCAAsC,CAAC,cAAc,EAAE,OAAO,GAAG,MAAM,CA0BtF;AAED,oFAAoF;AACpF,wBAAgB,kCAAkC,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAM5E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qCAAqC,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,MAAM,CAexG;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQ1E;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,mCAAmC,CACjD,iBAAiB,EAAE,OAAO,aAAa,EACvC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,GACpD,aAAa,CAUf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"implementation-credential-store.d.ts","sourceRoot":"","sources":["../src/implementation-credential-store.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,
|
|
1
|
+
{"version":3,"file":"implementation-credential-store.d.ts","sourceRoot":"","sources":["../src/implementation-credential-store.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAWL,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAC;AAO1B,QAAA,MAAM,uCAAuC;;;;;;;kBAOlC,CAAC;AAEZ,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CACrD,OAAO,uCAAuC,CAC/C,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,IAAI,OAAO,CAAC,iCAAiC,GAAG,IAAI,CAAC,CAAC;IAC1D,KAAK,CAAC,UAAU,EAAE,iCAAiC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,IAAI,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAC5C,gBAAgB,GAChB,uBAAuB,GACvB,4BAA4B,GAC5B,gBAAgB,CAAC;AAErB;;;;GAIG;AACH,qBAAa,6CAA8C,SAAQ,KAAK;gBAEpE,OAAO,SAAwE;CAKlF;AAED;;;;GAIG;AACH,qBAAa,sCAAuC,SAAQ,KAAK;IAC/D,QAAQ,CAAC,OAAO,EAAE,oCAAoC,CAAC;gBAE3C,OAAO,EAAE,oCAAoC;CAK1D;AA2VD,qBAAa,4BAA6B,YAAW,6BAA6B;IACpE,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,SAAqB;IAEpD,IAAI,IAAI,OAAO,CAAC,iCAAiC,GAAG,IAAI,CAAC;IAezD,KAAK,CAAC,UAAU,EAAE,iCAAiC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,QAAQ,IAAI,MAAM;YAIJ,cAAc;CAI7B;AAaD,MAAM,MAAM,0CAA0C,GAAG;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;CAC5C,CAAC;AAEF,wBAAgB,mCAAmC,CACjD,OAAO,GAAE,0CAA+C,GACvD,6BAA6B,CAmC/B"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { CommandClient } from "./command-client.js";
|
|
3
3
|
import { loginWithBrowser, refreshCliSessionIfNeeded } from "./auth.js";
|
|
4
4
|
import { loginWithDeviceCode } from "./device-auth.js";
|
|
5
|
+
import { type DeviceExchangeStore } from "./device-exchange-store.js";
|
|
5
6
|
import { type TokenStore } from "./token-store.js";
|
|
6
7
|
import { type ImplementationCredentialStore } from "./implementation-credential-store.js";
|
|
7
8
|
import { type ImplementationRunTombstoneStore } from "./implementation-run-tombstone.js";
|
|
@@ -22,6 +23,7 @@ type MainOptions = {
|
|
|
22
23
|
commandClient?: typeof CommandClient;
|
|
23
24
|
implementationCredentialStore?: ImplementationCredentialStoreFactory;
|
|
24
25
|
implementationRunTombstoneStore?: () => ImplementationRunTombstoneStore;
|
|
26
|
+
deviceExchangeStore?: DeviceExchangeStore;
|
|
25
27
|
};
|
|
26
28
|
export declare function main(argv?: string[], options?: MainOptions): Promise<number>;
|
|
27
29
|
export declare function isCliEntrypoint(moduleUrl: string, argvPath: string | undefined): boolean;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,aAAa,EAAsB,MAAM,qBAAqB,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAoB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAGL,KAAK,6BAA6B,EACnC,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,aAAa,EAAsB,MAAM,qBAAqB,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAoB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjG,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAGL,KAAK,6BAA6B,EACnC,MAAM,sCAAsC,CAAC;AAc9C,OAAO,EAKL,KAAK,+BAA+B,EACrC,MAAM,mCAAmC,CAAC;AAqE3C,KAAK,KAAK,GAAG;IACX,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAI1C,WAAW,CAAC,EAAE,OAAO,CAAC;IAOtB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAClD,CAAC;AAoBF,KAAK,oCAAoC,GAAG,MAAM,6BAA6B,CAAC;AA4PhF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,CAAC,cAAc,EAC5B,MAAM,EAAE,MAAM,CAAC,cAAc,GAC5B,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAUxC;AAuBD,KAAK,WAAW,GAAG;IACjB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,KAAK,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAChC,WAAW,CAAC,EAAE,OAAO,mBAAmB,CAAC;IACzC,cAAc,CAAC,EAAE,OAAO,yBAAyB,CAAC;IAGlD,aAAa,CAAC,EAAE,OAAO,aAAa,CAAC;IAGrC,6BAA6B,CAAC,EAAE,oCAAoC,CAAC;IACrE,+BAA+B,CAAC,EAAE,MAAM,+BAA+B,CAAC;IAIxE,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C,CAAC;AAEF,wBAAsB,IAAI,CAAC,IAAI,WAAwB,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAy8BnG;AA2yBD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAUxF"}
|