@veilio-inc/cli 0.5.4 → 0.6.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.
Files changed (65) hide show
  1. package/README.md +45 -15
  2. package/dist/args.d.ts +20 -2
  3. package/dist/args.d.ts.map +1 -1
  4. package/dist/args.js +47 -2
  5. package/dist/args.js.map +1 -1
  6. package/dist/client/index.d.ts +8 -0
  7. package/dist/client/index.d.ts.map +1 -0
  8. package/dist/client/index.js +12 -0
  9. package/dist/client/index.js.map +1 -0
  10. package/dist/client/keys.d.ts +22 -0
  11. package/dist/client/keys.d.ts.map +1 -0
  12. package/dist/client/keys.js +170 -0
  13. package/dist/client/keys.js.map +1 -0
  14. package/dist/client/maps.d.ts +107 -0
  15. package/dist/client/maps.d.ts.map +1 -0
  16. package/dist/client/maps.js +702 -0
  17. package/dist/client/maps.js.map +1 -0
  18. package/dist/client/personal-maps-key.d.ts +42 -0
  19. package/dist/client/personal-maps-key.d.ts.map +1 -0
  20. package/dist/client/personal-maps-key.js +168 -0
  21. package/dist/client/personal-maps-key.js.map +1 -0
  22. package/dist/client/projects.d.ts +23 -0
  23. package/dist/client/projects.d.ts.map +1 -0
  24. package/dist/client/projects.js +68 -0
  25. package/dist/client/projects.js.map +1 -0
  26. package/dist/client/status.d.ts +19 -0
  27. package/dist/client/status.d.ts.map +1 -0
  28. package/dist/client/status.js +62 -0
  29. package/dist/client/status.js.map +1 -0
  30. package/dist/client/team-key-bootstrap.d.ts +55 -0
  31. package/dist/client/team-key-bootstrap.d.ts.map +1 -0
  32. package/dist/client/team-key-bootstrap.js +127 -0
  33. package/dist/client/team-key-bootstrap.js.map +1 -0
  34. package/dist/client/vault-key.d.ts +5 -0
  35. package/dist/client/vault-key.d.ts.map +1 -0
  36. package/dist/client/vault-key.js +35 -0
  37. package/dist/client/vault-key.js.map +1 -0
  38. package/dist/client/wording.d.ts +59 -0
  39. package/dist/client/wording.d.ts.map +1 -0
  40. package/dist/client/wording.js +336 -0
  41. package/dist/client/wording.js.map +1 -0
  42. package/dist/cloud-commands.d.ts +30 -41
  43. package/dist/cloud-commands.d.ts.map +1 -1
  44. package/dist/cloud-commands.js +271 -461
  45. package/dist/cloud-commands.js.map +1 -1
  46. package/dist/cloud.d.ts +101 -2
  47. package/dist/cloud.d.ts.map +1 -1
  48. package/dist/cloud.js +91 -7
  49. package/dist/cloud.js.map +1 -1
  50. package/dist/commands.d.ts +1 -1
  51. package/dist/commands.d.ts.map +1 -1
  52. package/dist/commands.js +15 -0
  53. package/dist/commands.js.map +1 -1
  54. package/dist/credential.d.ts +7 -0
  55. package/dist/credential.d.ts.map +1 -1
  56. package/dist/credential.js +4 -0
  57. package/dist/credential.js.map +1 -1
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +22 -3
  60. package/dist/index.js.map +1 -1
  61. package/dist/team-namespace.d.ts +37 -0
  62. package/dist/team-namespace.d.ts.map +1 -1
  63. package/dist/team-namespace.js +61 -17
  64. package/dist/team-namespace.js.map +1 -1
  65. package/package.json +3 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maps.js","sourceRoot":"","sources":["../../src/client/maps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { type CryptoKeyLike } from '@veilio-inc/engine';
2
+ export declare const PMK_FILE = "personal-maps-key.json";
3
+ export declare const PMK_BYTES = 32;
4
+ export interface StoredPersonalMapsKey {
5
+ v: 1;
6
+ instance: string;
7
+ account: string;
8
+ /** ISO-8601. Past this, reads return null. */
9
+ expiresAt: string;
10
+ /** The raw PMK, base64. Never the vault key. */
11
+ key: string;
12
+ }
13
+ export declare function personalMapsKeyPath(home?: string): string;
14
+ /** A fresh PMK, as raw bytes. */
15
+ export declare function newPersonalMapsKey(): Uint8Array;
16
+ /** The raw bytes as a key that can seal and open a vault envelope. */
17
+ export declare function importPersonalMapsKey(raw: Uint8Array): Promise<CryptoKeyLike>;
18
+ /** Wrap the PMK under the vault key. `iv` is for the test vector only. */
19
+ export declare function wrapPersonalMapsKey(vaultKey: CryptoKeyLike, raw: Uint8Array, iv?: Uint8Array): Promise<string>;
20
+ /** Unwrap it. Throws when the vault key is wrong or the blob was altered -
21
+ * AES-GCM authenticates, so a wrong key never yields a garbage key. */
22
+ export declare function unwrapPersonalMapsKey(vaultKey: CryptoKeyLike, wrapped: string): Promise<Uint8Array>;
23
+ /**
24
+ * The PMK this machine holds for this sign-in, as raw bytes, or null.
25
+ */
26
+ export declare function readPersonalMapsKey(binding: {
27
+ instance: string;
28
+ account: string;
29
+ }, home?: string, now?: Date): Uint8Array | null;
30
+ /** Until when the key on disk for this sign-in lasts, or null when there is
31
+ * none to use. Never the key itself: this is for saying "unlocked until". */
32
+ export declare function personalMapsKeyExpiry(binding: {
33
+ instance: string;
34
+ account: string;
35
+ }, home?: string, now?: Date): string | null;
36
+ /** Write it, readable only by this user. `chmod` after, as `writeCredential`
37
+ * does, because `mode` applies only to a file being created. */
38
+ export declare function writePersonalMapsKey(stored: StoredPersonalMapsKey, home?: string): void;
39
+ /** Remove it. Whether there was one. A failure to delete throws: reporting
40
+ * "nothing to remove" while key material sits there inverts the call. */
41
+ export declare function removePersonalMapsKey(home?: string): boolean;
42
+ //# sourceMappingURL=personal-maps-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personal-maps-key.d.ts","sourceRoot":"","sources":["../../src/client/personal-maps-key.ts"],"names":[],"mappings":"AA+BA,OAAO,EAML,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAA;AAE3B,eAAO,MAAM,QAAQ,2BAA2B,CAAA;AAChD,eAAO,MAAM,SAAS,KAAK,CAAA;AAW3B,MAAM,WAAW,qBAAqB;IACpC,CAAC,EAAE,CAAC,CAAA;IACJ,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAA;IACjB,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAEpE;AAED,iCAAiC;AACjC,wBAAgB,kBAAkB,IAAI,UAAU,CAE/C;AAED,sEAAsE;AACtE,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAQnF;AAqBD,0EAA0E;AAC1E,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,aAAa,EACvB,GAAG,EAAE,UAAU,EACf,EAAE,GAAE,UAA4B,GAC/B,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;wEACwE;AACxE,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC,CAoBrB;AAYD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAC9C,IAAI,GAAE,MAAkB,EACxB,GAAG,GAAE,IAAiB,GACrB,UAAU,GAAG,IAAI,CAkBnB;AAED;8EAC8E;AAC9E,wBAAgB,qBAAqB,CACnC,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAC9C,IAAI,GAAE,MAAkB,EACxB,GAAG,GAAE,IAAiB,GACrB,MAAM,GAAG,IAAI,CAQf;AAED;iEACiE;AACjE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,qBAAqB,EAC7B,IAAI,GAAE,MAAkB,GACvB,IAAI,CAYN;AAED;0EAC0E;AAC1E,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,MAAkB,GAAG,OAAO,CASvE"}
@@ -0,0 +1,168 @@
1
+ // The personal-maps key (PMK), wrapped and unwrapped, and kept on this machine
2
+ // (spec 052 FR-011, research §1).
3
+ //
4
+ // WHY A SECOND KEY
5
+ //
6
+ // An MCP server has nobody to type a vault passphrase, and the founder ruled
7
+ // out storing the vault key: it also unwraps the account's private key, which
8
+ // opens every team key ever granted to it. So personal maps get a key of their
9
+ // own - 32 random bytes, AES-256-GCM - that opens personal maps and nothing
10
+ // else. The server keeps it wrapped under the vault key, where it can no more
11
+ // read it than it can read the private key; a terminal unwraps it once with the
12
+ // passphrase (`veilio vault unlock`) and keeps ONLY this key, 0600, for 7 days.
13
+ //
14
+ // THE WRAP IS THE BROWSER’S, BYTE FOR BYTE
15
+ //
16
+ // `JSON.stringify({ v: 1, alg: 'AES-GCM', iv, data })`, a 12-byte IV, the raw
17
+ // 32 key bytes as plaintext, and the additional data "veilio-pmk-wrap-v1": the
18
+ // envelope shape the web app wraps the private key in (frontend `userKeys.ts`),
19
+ // bound to this purpose so neither blob can stand in for the other. The web app
20
+ // writes the same bytes; `vault-unlock.test.ts` pins one shared vector, and a
21
+ // second built with WebCrypto called directly, not through this file.
22
+ //
23
+ // THE FILE
24
+ //
25
+ // Like `team-unlock.ts`: bound to the instance and account that unlocked it,
26
+ // with an expiry, and every read tolerates everything - missing, corrupt,
27
+ // expired and somebody else's all read as "not unlocked".
28
+ import { chmodSync, mkdirSync, readFileSync, rmSync, statSync, writeFileSync } from 'node:fs';
29
+ import { dirname, join } from 'node:path';
30
+ import { homedir } from 'node:os';
31
+ import { STORE_DIR, fromBase64, randomBytes, toBase64, webCryptoSubtle, } from '@veilio-inc/engine';
32
+ export const PMK_FILE = 'personal-maps-key.json';
33
+ export const PMK_BYTES = 32;
34
+ const WRAP_ALG = 'AES-GCM';
35
+ /**
36
+ * Additional authenticated data on the wrap: it binds the blob to its purpose.
37
+ * The vault key also wraps the account's private key, in the same envelope
38
+ * shape; without this, a blob wrapped for one purpose would open as the other
39
+ * (key confusion, cloud security review 2026-10-25). The web app's suite pins
40
+ * the same bytes with the same vector.
41
+ */
42
+ const WRAP_AAD = new TextEncoder().encode('veilio-pmk-wrap-v1');
43
+ export function personalMapsKeyPath(home = homedir()) {
44
+ return join(home, STORE_DIR, PMK_FILE);
45
+ }
46
+ /** A fresh PMK, as raw bytes. */
47
+ export function newPersonalMapsKey() {
48
+ return randomBytes(PMK_BYTES);
49
+ }
50
+ /** The raw bytes as a key that can seal and open a vault envelope. */
51
+ export async function importPersonalMapsKey(raw) {
52
+ if (raw.byteLength !== PMK_BYTES) {
53
+ throw new Error(`a personal-maps key must be ${PMK_BYTES} bytes (got ${raw.byteLength})`);
54
+ }
55
+ return webCryptoSubtle().importKey('raw', raw, { name: WRAP_ALG, length: 256 }, false, [
56
+ 'encrypt',
57
+ 'decrypt',
58
+ ]);
59
+ }
60
+ /**
61
+ * WebCrypto with `additionalData` in its types. The engine's own accessor
62
+ * declares only the IV, because no engine format uses AAD. This one does.
63
+ */
64
+ function aead() {
65
+ return webCryptoSubtle();
66
+ }
67
+ /** Wrap the PMK under the vault key. `iv` is for the test vector only. */
68
+ export async function wrapPersonalMapsKey(vaultKey, raw, iv = randomBytes(12)) {
69
+ const data = await aead().encrypt({ name: WRAP_ALG, iv, additionalData: WRAP_AAD }, vaultKey, raw);
70
+ return JSON.stringify({ v: 1, alg: WRAP_ALG, iv: toBase64(iv), data: toBase64(data) });
71
+ }
72
+ /** Unwrap it. Throws when the vault key is wrong or the blob was altered -
73
+ * AES-GCM authenticates, so a wrong key never yields a garbage key. */
74
+ export async function unwrapPersonalMapsKey(vaultKey, wrapped) {
75
+ const env = JSON.parse(wrapped);
76
+ if (env.v !== 1 ||
77
+ env.alg !== WRAP_ALG ||
78
+ typeof env.iv !== 'string' ||
79
+ typeof env.data !== 'string') {
80
+ throw new Error('the stored personal-maps key is not an envelope this client knows');
81
+ }
82
+ const raw = new Uint8Array(await aead().decrypt({ name: WRAP_ALG, iv: fromBase64(env.iv), additionalData: WRAP_AAD }, vaultKey, fromBase64(env.data)));
83
+ if (raw.byteLength !== PMK_BYTES)
84
+ throw new Error('the stored personal-maps key has the wrong length');
85
+ return raw;
86
+ }
87
+ function isStored(value) {
88
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
89
+ return false;
90
+ const v = value;
91
+ if (v.v !== 1)
92
+ return false;
93
+ for (const f of ['instance', 'account', 'expiresAt', 'key']) {
94
+ if (typeof v[f] !== 'string' || v[f] === '')
95
+ return false;
96
+ }
97
+ return true;
98
+ }
99
+ /**
100
+ * The PMK this machine holds for this sign-in, as raw bytes, or null.
101
+ */
102
+ export function readPersonalMapsKey(binding, home = homedir(), now = new Date()) {
103
+ let parsed;
104
+ try {
105
+ parsed = JSON.parse(readFileSync(personalMapsKeyPath(home), 'utf8'));
106
+ }
107
+ catch {
108
+ return null;
109
+ }
110
+ if (!isStored(parsed))
111
+ return null;
112
+ // A file left by one sign-in is never used by another.
113
+ if (parsed.instance !== binding.instance || parsed.account !== binding.account)
114
+ return null;
115
+ const expires = Date.parse(parsed.expiresAt);
116
+ if (Number.isNaN(expires) || expires <= now.getTime())
117
+ return null;
118
+ try {
119
+ const raw = fromBase64(parsed.key);
120
+ return raw.byteLength === PMK_BYTES ? raw : null;
121
+ }
122
+ catch {
123
+ return null;
124
+ }
125
+ }
126
+ /** Until when the key on disk for this sign-in lasts, or null when there is
127
+ * none to use. Never the key itself: this is for saying "unlocked until". */
128
+ export function personalMapsKeyExpiry(binding, home = homedir(), now = new Date()) {
129
+ if (!readPersonalMapsKey(binding, home, now))
130
+ return null;
131
+ try {
132
+ return JSON.parse(readFileSync(personalMapsKeyPath(home), 'utf8'))
133
+ .expiresAt;
134
+ }
135
+ catch {
136
+ return null;
137
+ }
138
+ }
139
+ /** Write it, readable only by this user. `chmod` after, as `writeCredential`
140
+ * does, because `mode` applies only to a file being created. */
141
+ export function writePersonalMapsKey(stored, home = homedir()) {
142
+ const path = personalMapsKeyPath(home);
143
+ mkdirSync(dirname(path), { recursive: true });
144
+ // Tightened BEFORE the key is written, too: a file left world-readable by
145
+ // some earlier mistake must not hold the key even for a moment.
146
+ try {
147
+ chmodSync(path, 0o600);
148
+ }
149
+ catch {
150
+ // Not there yet: `mode` below covers a new file.
151
+ }
152
+ writeFileSync(path, `${JSON.stringify(stored, null, 2)}\n`, { mode: 0o600 });
153
+ chmodSync(path, 0o600);
154
+ }
155
+ /** Remove it. Whether there was one. A failure to delete throws: reporting
156
+ * "nothing to remove" while key material sits there inverts the call. */
157
+ export function removePersonalMapsKey(home = homedir()) {
158
+ const path = personalMapsKeyPath(home);
159
+ try {
160
+ statSync(path);
161
+ }
162
+ catch {
163
+ return false;
164
+ }
165
+ rmSync(path, { recursive: true, force: true });
166
+ return true;
167
+ }
168
+ //# sourceMappingURL=personal-maps-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personal-maps-key.js","sourceRoot":"","sources":["../../src/client/personal-maps-key.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { type Outcome } from './wording.js';
2
+ import type { ClientContext } from './maps.js';
3
+ export interface ListedProject {
4
+ id: string;
5
+ name: string;
6
+ /** The team's own maps in it. */
7
+ maps: number | null;
8
+ /** The one this sign-in chose. */
9
+ inUse: boolean;
10
+ /** Where a new team map lands when none is chosen. */
11
+ isDefault: boolean;
12
+ }
13
+ export declare function listTeamProjects(ctx: ClientContext): Promise<Outcome<{
14
+ projects: ListedProject[];
15
+ chosen: string | null;
16
+ }>>;
17
+ /** Choose a project by its id or its name. A name two projects share is
18
+ * refused rather than guessed: guessing is how two projects' maps meet. */
19
+ export declare function useProject(ctx: ClientContext, ref: string | null): Promise<Outcome<{
20
+ id: string;
21
+ name: string;
22
+ }>>;
23
+ //# sourceMappingURL=projects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/client/projects.ts"],"names":[],"mappings":"AAcA,OAAO,EAAiC,KAAK,OAAO,EAAE,MAAM,cAAc,CAAA;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAE9C,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,iCAAiC;IACjC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,kCAAkC;IAClC,KAAK,EAAE,OAAO,CAAA;IACd,sDAAsD;IACtD,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,OAAO,CAAC;IAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAAC,CAyBxE;AAED;4EAC4E;AAC5E,wBAAsB,UAAU,CAC9B,GAAG,EAAE,aAAa,EAClB,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,OAAO,CAAC,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAiBhD"}
@@ -0,0 +1,68 @@
1
+ // Projects: which one this sign-in works in (spec 052 US3, research §4).
2
+ //
3
+ // The choice is a field on the credential, not a file in the project
4
+ // directory: a project is something the ACCOUNT's team works in, and the MCP
5
+ // server started later for the same sign-in must find the same answer without
6
+ // being told (FR-012). A second sign-in, to another instance, has its own.
7
+ //
8
+ // Choosing one the team does not work in is refused here, against the server's
9
+ // own list, and changes nothing (FR-014). The server refuses it as well - 404
10
+ // on every map call that names it - so a client that skipped this check would
11
+ // still not reach another team's maps; this is about saying so up front.
12
+ import { listProjects } from '../cloud.js';
13
+ import { readCredential, writeCredential } from '../credential.js';
14
+ import { refuse, refusalFromCloudError } from './wording.js';
15
+ export async function listTeamProjects(ctx) {
16
+ const credential = readCredential(ctx.home);
17
+ if (!credential)
18
+ return refuse('not_signed_in');
19
+ let answer;
20
+ try {
21
+ answer = await listProjects(credential);
22
+ }
23
+ catch (err) {
24
+ return { ok: false, refusal: refusalFromCloudError(err, { project: credential.project }) };
25
+ }
26
+ const rows = Array.isArray(answer?.projects) ? answer.projects : [];
27
+ if (rows.length === 0)
28
+ return refuse('no_projects');
29
+ const fallback = answer.defaultProjectId ?? rows[0].id;
30
+ return {
31
+ ok: true,
32
+ value: {
33
+ chosen: credential.project ?? null,
34
+ projects: rows.map((p) => ({
35
+ id: p.id,
36
+ name: p.name,
37
+ maps: typeof p.maps === 'number' ? p.maps : null,
38
+ inUse: p.id === credential.project,
39
+ isDefault: p.id === fallback,
40
+ })),
41
+ },
42
+ };
43
+ }
44
+ /** Choose a project by its id or its name. A name two projects share is
45
+ * refused rather than guessed: guessing is how two projects' maps meet. */
46
+ export async function useProject(ctx, ref) {
47
+ const credential = readCredential(ctx.home);
48
+ if (!credential)
49
+ return refuse('not_signed_in');
50
+ if (!ref)
51
+ return refuse('which_project');
52
+ // The project list is asked without the current choice, so a chosen
53
+ // project that is gone never stops somebody choosing another.
54
+ const listed = await listTeamProjects(ctx);
55
+ if (!listed.ok)
56
+ return listed;
57
+ const projects = listed.value.projects;
58
+ const byId = projects.find((p) => p.id === ref);
59
+ const byName = projects.filter((p) => p.name === ref);
60
+ if (!byId && byName.length > 1)
61
+ return refuse('project_ambiguous', { project: ref, count: byName.length });
62
+ const chosen = byId ?? byName[0];
63
+ if (!chosen)
64
+ return refuse('project_not_found', { project: ref });
65
+ writeCredential({ ...credential, project: chosen.id }, ctx.home);
66
+ return { ok: true, value: { id: chosen.id, name: chosen.name } };
67
+ }
68
+ //# sourceMappingURL=projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/client/projects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type Outcome } from './wording.js';
2
+ import type { ClientContext } from './maps.js';
3
+ export interface TeamStatus {
4
+ account: string;
5
+ instance: string;
6
+ teamId: string | null;
7
+ /** The chosen project, with its name when the server could say it. */
8
+ project: {
9
+ id: string;
10
+ name: string | null;
11
+ } | null;
12
+ teamKeyUntil: string | null;
13
+ personalKeyUntil: string | null;
14
+ /** Since when a rotation is owed; null when none is; undefined when the
15
+ * server did not say (an older instance, or no team). */
16
+ rotationOwedSince: string | null | undefined;
17
+ }
18
+ export declare function teamStatus(ctx: ClientContext): Promise<Outcome<TeamStatus>>;
19
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/client/status.ts"],"names":[],"mappings":"AAWA,OAAO,EAAiC,KAAK,OAAO,EAAE,MAAM,cAAc,CAAA;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAE9C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,sEAAsE;IACtE,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAA;IACnD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B;8DAC0D;IAC1D,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAC7C;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CA+CjF"}
@@ -0,0 +1,62 @@
1
+ // Where this sign-in stands: the state `veilio whoami` and `team unlock`
2
+ // report, in one answer, for the MCP server's `team_status` (spec 052 FR-008).
3
+ //
4
+ // It says whether keys are unlocked HERE and until when - never the keys. And
5
+ // whether the team owes a key rotation, read from the team's key status; the
6
+ // rest of that answer names teammates, and stays out of this one.
7
+ import { getTeamKeyPending, listMaps, listProjects } from '../cloud.js';
8
+ import { readCredential } from '../credential.js';
9
+ import { readTeamUnlock } from '../team-unlock.js';
10
+ import { personalMapsKeyExpiry } from './personal-maps-key.js';
11
+ import { refuse, refusalFromCloudError } from './wording.js';
12
+ export async function teamStatus(ctx) {
13
+ const credential = readCredential(ctx.home);
14
+ if (!credential)
15
+ return refuse('not_signed_in');
16
+ let teamId;
17
+ try {
18
+ teamId = (await listMaps(credential)).team?.id ?? null;
19
+ }
20
+ catch (err) {
21
+ return { ok: false, refusal: refusalFromCloudError(err, { project: credential.project }) };
22
+ }
23
+ let project = null;
24
+ if (credential.project) {
25
+ let name = null;
26
+ try {
27
+ name =
28
+ (await listProjects(credential)).projects.find((p) => p.id === credential.project)?.name ??
29
+ null;
30
+ }
31
+ catch {
32
+ // The id alone is still the answer to "which project".
33
+ }
34
+ project = { id: credential.project, name };
35
+ }
36
+ const binding = { instance: credential.instance, account: credential.account };
37
+ const unlock = readTeamUnlock(binding, ctx.home);
38
+ let rotationOwedSince;
39
+ if (teamId) {
40
+ try {
41
+ const pending = await getTeamKeyPending(credential, teamId);
42
+ rotationOwedSince =
43
+ typeof pending?.rotationNeededSince === 'string' ? pending.rotationNeededSince : null;
44
+ }
45
+ catch {
46
+ rotationOwedSince = undefined;
47
+ }
48
+ }
49
+ return {
50
+ ok: true,
51
+ value: {
52
+ account: credential.account,
53
+ instance: credential.instance,
54
+ teamId,
55
+ project,
56
+ teamKeyUntil: unlock && teamId && unlock.teamId === teamId ? unlock.expiresAt : null,
57
+ personalKeyUntil: personalMapsKeyExpiry(binding, ctx.home),
58
+ rotationOwedSince,
59
+ },
60
+ };
61
+ }
62
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/client/status.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,+EAA+E;AAC/E,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,kEAAkE;AAElE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAgB,MAAM,cAAc,CAAA;AAgB1E,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAkB;IACjD,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC3C,IAAI,CAAC,UAAU;QAAE,OAAO,MAAM,CAAC,eAAe,CAAC,CAAA;IAC/C,IAAI,MAAqB,CAAA;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI,CAAA;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAA;IAC5F,CAAC;IAED,IAAI,OAAO,GAA0B,IAAI,CAAA;IACzC,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,IAAI,IAAI,GAAkB,IAAI,CAAA;QAC9B,IAAI,CAAC;YACH,IAAI;gBACF,CAAC,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI;oBACxF,IAAI,CAAA;QACR,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;QACD,OAAO,GAAG,EAAE,EAAE,EAAE,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,CAAA;IAC5C,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAA;IAC9E,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IAChD,IAAI,iBAAkD,CAAA;IACtD,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;YAC3D,iBAAiB;gBACf,OAAO,OAAO,EAAE,mBAAmB,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAA;QACzF,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB,GAAG,SAAS,CAAA;QAC/B,CAAC;IACH,CAAC;IACD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE;YACL,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,MAAM;YACN,OAAO;YACP,YAAY,EAAE,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;YACpF,gBAAgB,EAAE,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC;YAC1D,iBAAiB;SAClB;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { type CryptoKeyLike } from '@veilio-inc/engine';
2
+ import type { Credential } from '../credential.js';
3
+ /** Wrap a team key for one recipient - the browser's `wrapTeamKeyFor`.
4
+ * `iv` is for the test vector only. */
5
+ export declare function wrapTeamKeyFor(teamKeyRaw: Uint8Array, myPrivateKey: CryptoKeyLike, myPublicKey: string, recipientPublicKey: string, ctx: {
6
+ teamId: string;
7
+ version: number;
8
+ }, iv?: Uint8Array): Promise<string>;
9
+ /**
10
+ * This account's keypair, opened with the vault key - and its public half
11
+ * DERIVED HERE from the private half, never taken from the server.
12
+ *
13
+ * Why (security review): the first team key is wrapped to this account's own
14
+ * public key. Taken as `GET /api/auth/keys` returned it, a dishonest or
15
+ * compromised server could hand back ITS public key and be wrapped the team
16
+ * key, which ends end-to-end confidentiality for every team map after. The
17
+ * private key comes out of a blob only the vault key opens, so the public key
18
+ * computed from it is the account's, whatever the server says. A server
19
+ * answer that differs is refused, fail closed.
20
+ */
21
+ export declare function openOwnKeypair(vaultKey: CryptoKeyLike, privateKeyEncrypted: string, servedPublicKey: string): Promise<{
22
+ ok: true;
23
+ privateKey: CryptoKeyLike;
24
+ publicKey: string;
25
+ } | {
26
+ ok: false;
27
+ reason: 'mismatch';
28
+ }>;
29
+ export type Bootstrap =
30
+ /** Minted and granted to this account: the team's key, raw. */
31
+ {
32
+ status: 'created';
33
+ version: number;
34
+ raw: Uint8Array;
35
+ }
36
+ /** The server refused: the team already has a key, or this account may not
37
+ * start one. `reason` is the server's own words when it gave some. */
38
+ | {
39
+ status: 'refused';
40
+ reason: string | null;
41
+ }
42
+ /** Granted, but what the server hands back is not the key minted here:
43
+ * nothing may be sealed under it. */
44
+ | {
45
+ status: 'readback_mismatch';
46
+ };
47
+ /**
48
+ * Try to mint the team's first key. Throws only for a failure that is not an
49
+ * answer (the network, the server's own error), which the caller reports.
50
+ */
51
+ export declare function bootstrapTeamKey(credential: Credential, teamId: string, me: {
52
+ privateKey: CryptoKeyLike;
53
+ publicKey: string;
54
+ }): Promise<Bootstrap>;
55
+ //# sourceMappingURL=team-key-bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-key-bootstrap.d.ts","sourceRoot":"","sources":["../../src/client/team-key-bootstrap.ts"],"names":[],"mappings":"AAqBA,OAAO,EASL,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD;wCACwC;AACxC,wBAAsB,cAAc,CAClC,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,aAAa,EAC3B,WAAW,EAAE,MAAM,EACnB,kBAAkB,EAAE,MAAM,EAC1B,GAAG,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACxC,EAAE,GAAE,UAA4B,GAC/B,OAAO,CAAC,MAAM,CAAC,CAajB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,aAAa,EACvB,mBAAmB,EAAE,MAAM,EAC3B,eAAe,EAAE,MAAM,GACtB,OAAO,CACR;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAC/F,CAsCA;AAED,MAAM,MAAM,SAAS;AACnB,+DAA+D;AAC7D;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,UAAU,CAAA;CAAE;AACzD;uEACuE;GACrE;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE;AAC9C;sCACsC;GACpC;IAAE,MAAM,EAAE,mBAAmB,CAAA;CAAE,CAAA;AAEnC;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE;IAAE,UAAU,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACnD,OAAO,CAAC,SAAS,CAAC,CA6CpB"}