run402 4.69.8 → 4.70.1
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 +3 -1
- package/gitvault-surface.json +5 -1
- package/lib/command-manifest.mjs +2 -0
- package/lib/gitvault-capabilities.mjs +6 -0
- package/lib/harness-context.mjs +50 -0
- package/lib/messages.mjs +83 -1
- package/lib/repos.mjs +321 -9
- package/lib/rooms-context.mjs +23 -13
- package/package.json +1 -1
- package/sdk/dist/errors.d.ts +1 -1
- package/sdk/dist/errors.d.ts.map +1 -1
- package/sdk/dist/errors.js.map +1 -1
- package/sdk/dist/namespaces/gitvault.d.ts +227 -0
- package/sdk/dist/namespaces/gitvault.d.ts.map +1 -1
- package/sdk/dist/namespaces/gitvault.js +612 -2
- package/sdk/dist/namespaces/gitvault.js.map +1 -1
- package/sdk/dist/namespaces/rooms.d.ts +20 -1
- package/sdk/dist/namespaces/rooms.d.ts.map +1 -1
- package/sdk/dist/namespaces/rooms.js +93 -0
- package/sdk/dist/namespaces/rooms.js.map +1 -1
- package/sdk/dist/namespaces/rooms.types.d.ts +73 -0
- package/sdk/dist/namespaces/rooms.types.d.ts.map +1 -1
- package/sdk/dist/node/gitvault-address.d.ts +1 -0
- package/sdk/dist/node/gitvault-address.d.ts.map +1 -1
- package/sdk/dist/node/gitvault-address.js +5 -1
- package/sdk/dist/node/gitvault-address.js.map +1 -1
- package/sdk/dist/node/gitvault-handoff.d.ts +109 -31
- package/sdk/dist/node/gitvault-handoff.d.ts.map +1 -1
- package/sdk/dist/node/gitvault-handoff.js +264 -137
- package/sdk/dist/node/gitvault-handoff.js.map +1 -1
- package/sdk/dist/node/gitvault-keystore.d.ts +2 -2
- package/sdk/dist/node/gitvault-keystore.d.ts.map +1 -1
- package/sdk/dist/node/gitvault-restore.d.ts +19 -0
- package/sdk/dist/node/gitvault-restore.d.ts.map +1 -1
- package/sdk/dist/node/gitvault-restore.js +59 -2
- package/sdk/dist/node/gitvault-restore.js.map +1 -1
- package/sdk/dist/node/index.d.ts +4 -4
- package/sdk/dist/node/index.d.ts.map +1 -1
- package/sdk/dist/node/index.js +9 -5
- package/sdk/dist/node/index.js.map +1 -1
|
@@ -1,18 +1,52 @@
|
|
|
1
1
|
import { GITVAULT_FORMAT, GITVAULT_SUITE } from "../namespaces/gitvault.crypto.js";
|
|
2
|
+
export type ClaimKind = "handoff" | "invite";
|
|
2
3
|
export interface HandoffKeyPrefixEntry {
|
|
3
4
|
prefix: string;
|
|
4
|
-
kind:
|
|
5
|
+
kind: ClaimKind;
|
|
5
6
|
verb: string;
|
|
7
|
+
/** Error-code prefix for this kind (`HANDOFF` | `INVITE`) — every client-side code this module throws is `${errorPrefix}_…`. */
|
|
8
|
+
errorPrefix: string;
|
|
9
|
+
/**
|
|
10
|
+
* The sealed-envelope `envelope_kind` tag this kind's mint seals TODAY —
|
|
11
|
+
* the v2 shape for both kinds (`v: 2`, `writer_admission_grant_sha256`,
|
|
12
|
+
* `epoch_keys`), since writer admission rides the envelope for every claim
|
|
13
|
+
* kind (gitvault-multi-writer D4). `kygit-handoff-envelope-v1` survives
|
|
14
|
+
* only as a legacy OPENER constant ({@link HANDOFF_ENVELOPE_KIND}); no
|
|
15
|
+
* invite v1 ever existed.
|
|
16
|
+
*/
|
|
17
|
+
envelopeKind: string;
|
|
18
|
+
/** This kind's note schema tag. */
|
|
19
|
+
noteSchema: string;
|
|
20
|
+
/** This kind's envelope frame magic (4 ASCII bytes). */
|
|
21
|
+
frameMagic: string;
|
|
6
22
|
}
|
|
7
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* `kgh1_` is the first row (handoff); `kgi1_` is the second (invite,
|
|
25
|
+
* kygit-invite design D3). A future third kind is a SIBLING row here, never
|
|
26
|
+
* a branch on either existing one's parser.
|
|
27
|
+
*/
|
|
8
28
|
export declare const HANDOFF_KEY_PREFIXES: readonly HandoffKeyPrefixEntry[];
|
|
29
|
+
export interface ClaimKeyParts {
|
|
30
|
+
kind: ClaimKind;
|
|
31
|
+
id_bytes: Uint8Array;
|
|
32
|
+
/** Canonical lowercase-hyphenated UUID form of `id_bytes` — the wire id (`handoff_id`/`invite_id`). */
|
|
33
|
+
id: string;
|
|
34
|
+
master_secret: Uint8Array;
|
|
35
|
+
}
|
|
36
|
+
/** {@link parseHandoffKey}'s legacy field names, preserved byte-identical. */
|
|
9
37
|
export interface HandoffKeyParts {
|
|
10
38
|
kind: "handoff";
|
|
11
39
|
handoff_id_bytes: Uint8Array;
|
|
12
|
-
/** Canonical lowercase-hyphenated UUID form of `handoff_id_bytes` — the wire `handoff_id`. */
|
|
13
40
|
handoff_id: string;
|
|
14
41
|
master_secret: Uint8Array;
|
|
15
42
|
}
|
|
43
|
+
/** {@link parseInviteKey}'s field names — the invite-kind sibling of {@link HandoffKeyParts}. */
|
|
44
|
+
export interface InviteKeyParts {
|
|
45
|
+
kind: "invite";
|
|
46
|
+
invite_id_bytes: Uint8Array;
|
|
47
|
+
invite_id: string;
|
|
48
|
+
master_secret: Uint8Array;
|
|
49
|
+
}
|
|
16
50
|
export declare function uuidToBytes(uuid: string, field?: string): Uint8Array;
|
|
17
51
|
/**
|
|
18
52
|
* Assemble the printed key from a fresh 32-byte master secret and the
|
|
@@ -25,30 +59,56 @@ export declare function assembleHandoffKey(handoffId: string, masterSecret?: Uin
|
|
|
25
59
|
handoff_id_bytes: Uint8Array;
|
|
26
60
|
master_secret: Uint8Array;
|
|
27
61
|
};
|
|
62
|
+
/** The invite-kind sibling of {@link assembleHandoffKey} (kygit-invite design D3). */
|
|
63
|
+
export declare function assembleInviteKey(inviteId: string, masterSecret?: Uint8Array): {
|
|
64
|
+
key: string;
|
|
65
|
+
invite_id_bytes: Uint8Array;
|
|
66
|
+
master_secret: Uint8Array;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Parse ANY `kg**_` claim-family key by its prefix registry against the
|
|
70
|
+
* `expectedKind` the calling verb accepts. A recognized prefix of a
|
|
71
|
+
* DIFFERENT kind (a `kgi1_` invite key handed to `resume`, or a `kgh1_`
|
|
72
|
+
* handoff key handed to `join`) refuses BY NAME pointing at its own verb —
|
|
73
|
+
* never misread as a malformed key of the expected kind, and never
|
|
74
|
+
* contacting the gateway (design D9 rule 4 / kygit-invite design D3).
|
|
75
|
+
*/
|
|
76
|
+
export declare function parseClaimKey(raw: string, expectedKind: ClaimKind): ClaimKeyParts;
|
|
28
77
|
/**
|
|
29
78
|
* Parse ANY `kg**_` handoff-family key by its prefix registry. A recognized
|
|
30
|
-
* prefix of a DIFFERENT kind (
|
|
31
|
-
*
|
|
32
|
-
*
|
|
79
|
+
* prefix of a DIFFERENT kind (an invite key handed to `resume`) refuses BY
|
|
80
|
+
* NAME pointing at its own verb — never misread as a malformed handoff key
|
|
81
|
+
* (design D9 rule 4). Kind-bound alias of {@link parseClaimKey}.
|
|
33
82
|
*/
|
|
34
83
|
export declare function parseHandoffKey(raw: string): HandoffKeyParts;
|
|
84
|
+
/** The invite-kind sibling of {@link parseHandoffKey} (kygit-invite design D3). */
|
|
85
|
+
export declare function parseInviteKey(raw: string): InviteKeyParts;
|
|
35
86
|
export interface HandoffSecrets {
|
|
36
87
|
auth_secret: Uint8Array;
|
|
37
88
|
wrap_key: Uint8Array;
|
|
38
89
|
/** `SHA-256(auth-hash-label ‖ auth_secret)`, lowercase hex — the ONLY thing the gateway ever stores. */
|
|
39
90
|
auth_hash_hex: string;
|
|
40
91
|
}
|
|
41
|
-
/** `HKDF-SHA256(ikm=master_secret, salt=handoff_id[16], info
|
|
92
|
+
/** `HKDF-SHA256(ikm=master_secret, salt=handoff_id[16], info=kygit/handoff/…)` per D3, for both `auth_secret` and `wrap_key`. */
|
|
42
93
|
export declare function deriveHandoffSecrets(handoffIdBytes: Uint8Array, masterSecret: Uint8Array): HandoffSecrets;
|
|
94
|
+
/** The invite-kind sibling of {@link deriveHandoffSecrets}, domain-separated under `kygit/invite/…` info strings (kygit-invite design D3) — an invite secret never verifies as a handoff hash, or the reverse. */
|
|
95
|
+
export declare function deriveInviteSecrets(inviteIdBytes: Uint8Array, masterSecret: Uint8Array): HandoffSecrets;
|
|
43
96
|
/**
|
|
44
|
-
* Third HKDF output of
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* `wrap_key` — so the gateway,
|
|
48
|
-
*
|
|
49
|
-
* claimant completion.
|
|
97
|
+
* Third HKDF output of a claim key's `master_secret` (design D4, protocol
|
|
98
|
+
* §4.17; kind-parameterized by kygit-invite design D3): the one-use
|
|
99
|
+
* admission Ed25519 seed. Derived directly from `master_secret` —
|
|
100
|
+
* deliberately NEVER from `auth_secret` or `wrap_key` — so the gateway,
|
|
101
|
+
* which receives `auth_secret` at claim, stays computationally unable to
|
|
102
|
+
* derive this seed and manufacture a different claimant completion. The info
|
|
103
|
+
* string is domain-separated by kind (`kygit/<kind>/writer-admission/v1`),
|
|
104
|
+
* so an invite's admission seed never matches a handoff's for the same id
|
|
105
|
+
* and master secret.
|
|
50
106
|
*/
|
|
107
|
+
export declare function deriveClaimWriterAdmissionSeed(kind: ClaimKind, idBytes: Uint8Array, masterSecret: Uint8Array): Uint8Array;
|
|
108
|
+
/** Handoff-bound alias of {@link deriveClaimWriterAdmissionSeed} — `kygit/handoff/writer-admission/v1`. */
|
|
51
109
|
export declare function deriveWriterAdmissionSeed(handoffIdBytes: Uint8Array, masterSecret: Uint8Array): Uint8Array;
|
|
110
|
+
/** The invite-kind sibling of {@link deriveWriterAdmissionSeed} — `kygit/invite/writer-admission/v1` (kygit-invite design D3). */
|
|
111
|
+
export declare function deriveInviteWriterAdmissionSeed(inviteIdBytes: Uint8Array, masterSecret: Uint8Array): Uint8Array;
|
|
52
112
|
export type GitvaultWriterMintedRole = "owner" | "admin" | "developer" | "billing" | "viewer";
|
|
53
113
|
/** Signed by the MINTING writer's own writer key, at handoff mint time. Never chain-stored directly — embedded verbatim inside an admitted `add_writer_key` transition's `authorization.kind:"handoff".grant` once consumed. */
|
|
54
114
|
export interface WriterAdmissionGrant {
|
|
@@ -135,7 +195,7 @@ export declare function buildWriterAcceptance(input: BuildWriterAcceptanceInput)
|
|
|
135
195
|
* grant, or single-use — those are the caller's job.
|
|
136
196
|
*/
|
|
137
197
|
export declare function verifyWriterAcceptance(acceptance: WriterAcceptance, admissionPubkeyRaw: Uint8Array): boolean;
|
|
138
|
-
/** The literal payload the mint side seals and the claim side opens. */
|
|
198
|
+
/** The literal payload the mint side seals and the claim side opens, for the handoff kind. */
|
|
139
199
|
export interface HandoffEnvelopePayload {
|
|
140
200
|
v: 1;
|
|
141
201
|
kind: "handoff";
|
|
@@ -158,26 +218,19 @@ export interface HandoffEnvelopePayload {
|
|
|
158
218
|
};
|
|
159
219
|
note_schema: "kygit.handoff-note.v1";
|
|
160
220
|
}
|
|
161
|
-
/** Frame tag for
|
|
221
|
+
/** Frame tag for the handoff envelope format — DISTINCT from `r402s/v0`'s `"R402S0"` object frame (design D3: never stored as a vault object). The LEGACY v1 tag: nothing seals it any more, but a pre-gitvault-multi-writer handoff row still carries one and {@link openHandoffEnvelope} still opens it. */
|
|
162
222
|
export declare const HANDOFF_ENVELOPE_KIND: "kygit-handoff-envelope-v1";
|
|
163
|
-
/** Seal the handoff payload under `wrap_key
|
|
223
|
+
/** Seal the handoff payload under `wrap_key` as a LEGACY v1 envelope. Returns the standard-base64 wire form (openapi `format: byte`) + its declared kind tag. Nothing in the shipped flow calls this any more — {@link sealHandoffEnvelopeV2} is what `handoff` seals — but the v1 shape stays openable and sealable for the conformance vectors. */
|
|
164
224
|
export declare function sealHandoffEnvelope(handoffIdBytes: Uint8Array, wrapKey: Uint8Array, payload: HandoffEnvelopePayload, nonce?: Uint8Array): {
|
|
165
225
|
sealed_envelope: string;
|
|
166
226
|
envelope_kind: string;
|
|
167
227
|
};
|
|
168
228
|
/** Open a sealed handoff envelope under `wrap_key` (standard base64 as the claim response carries it, or base64url). Throws `HANDOFF_ENVELOPE_INVALID` on any header mismatch, a `v:2` (or otherwise non-v1) payload shape, and `HANDOFF_AEAD_AUTH_FAILURE` on a bad key/AAD/ciphertext. */
|
|
169
229
|
export declare function openHandoffEnvelope(handoffIdBytes: Uint8Array, wrapKey: Uint8Array, sealedEnvelope: string, envelopeKind?: string): HandoffEnvelopePayload;
|
|
170
|
-
/**
|
|
171
|
-
* `kygit-handoff-envelope-v2` adds `writer_admission_grant_sha256` to the
|
|
172
|
-
* v1 payload — design D4's "no hash cycle: grant first, then seal": the
|
|
173
|
-
* minter builds + signs {@link WriterAdmissionGrant} FIRST, hashes its
|
|
174
|
-
* stored bytes SECOND, and only THEN seals this envelope carrying that
|
|
175
|
-
* hash. The claimant cross-checks it against the grant the gateway
|
|
176
|
-
* independently returns at claim, an integrity binding entirely
|
|
177
|
-
* independent of anything the gateway could tamper with (the envelope's
|
|
178
|
-
* AEAD authenticity comes from `wrap_key`, which the gateway never holds).
|
|
179
|
-
*/
|
|
230
|
+
/** The v2 envelope kind the handoff mint seals. */
|
|
180
231
|
export declare const HANDOFF_ENVELOPE_V2_KIND: "kygit-handoff-envelope-v2";
|
|
232
|
+
/** The v2 envelope kind the invite mint seals (kygit-invite design D3) — its own tag, never confusable with the handoff one even for the same id. */
|
|
233
|
+
export declare const INVITE_ENVELOPE_V2_KIND: "kygit-invite-envelope-v2";
|
|
181
234
|
/**
|
|
182
235
|
* `v: 2` (NOT 1) is the payload's own shape discriminator, independent of
|
|
183
236
|
* `envelope_kind` — a v1 opener's `p.v !== 1` shape check therefore refuses
|
|
@@ -189,11 +242,21 @@ export interface HandoffEnvelopePayloadV2 extends Omit<HandoffEnvelopePayload, "
|
|
|
189
242
|
v: 2;
|
|
190
243
|
writer_admission_grant_sha256: string;
|
|
191
244
|
}
|
|
192
|
-
/**
|
|
245
|
+
/** The invite-kind sibling of {@link HandoffEnvelopePayloadV2} — identical shape but for its `kind`/`note_schema` tags (kygit-invite design D3: "the payload is otherwise identical to the handoff envelope — the room does NOT ride in the envelope"). */
|
|
246
|
+
export interface InviteEnvelopePayloadV2 extends Omit<HandoffEnvelopePayloadV2, "kind" | "note_schema"> {
|
|
247
|
+
kind: "invite";
|
|
248
|
+
note_schema: "kygit.invite-note.v1";
|
|
249
|
+
}
|
|
250
|
+
/** Seal a v2 handoff envelope — identical framing to {@link sealHandoffEnvelope}, tagged `kygit-handoff-envelope-v2` so its AAD (and therefore its ciphertext) is never confusable with a v1 envelope of the same handoff. */
|
|
193
251
|
export declare function sealHandoffEnvelopeV2(handoffIdBytes: Uint8Array, wrapKey: Uint8Array, payload: HandoffEnvelopePayloadV2, nonce?: Uint8Array): {
|
|
194
252
|
sealed_envelope: string;
|
|
195
253
|
envelope_kind: string;
|
|
196
254
|
};
|
|
255
|
+
/** The invite-kind sibling of {@link sealHandoffEnvelopeV2} — the ONLY invite envelope there is (kygit-invite design D3). */
|
|
256
|
+
export declare function sealInviteEnvelope(inviteIdBytes: Uint8Array, wrapKey: Uint8Array, payload: InviteEnvelopePayloadV2, nonce?: Uint8Array): {
|
|
257
|
+
sealed_envelope: string;
|
|
258
|
+
envelope_kind: string;
|
|
259
|
+
};
|
|
197
260
|
/**
|
|
198
261
|
* Open a v2 envelope for a writer-activation flow. Refuses a v1 (or any
|
|
199
262
|
* other non-v2) `envelope_kind` LOCALLY with `HANDOFF_ENVELOPE_UNSUPPORTED`
|
|
@@ -201,7 +264,7 @@ export declare function sealHandoffEnvelopeV2(handoffIdBytes: Uint8Array, wrapKe
|
|
|
201
264
|
* writer-activation-aware `resume` needs `writer_admission_grant_sha256` to
|
|
202
265
|
* cross-check the returned grant, and a pre-rev-47 v1 envelope structurally
|
|
203
266
|
* has none. Shares ONLY the frame/AEAD-opening step with
|
|
204
|
-
* {@link openHandoffEnvelope} ({@link
|
|
267
|
+
* {@link openHandoffEnvelope} ({@link openClaimEnvelope}) — NOT that
|
|
205
268
|
* function itself, since its `v !== 1` shape check would (correctly) refuse
|
|
206
269
|
* a v2 payload; this function applies its own `v !== 2` shape check
|
|
207
270
|
* instead. Callers that only need K_repo/checkpoint delivery, with no
|
|
@@ -210,6 +273,8 @@ export declare function sealHandoffEnvelopeV2(handoffIdBytes: Uint8Array, wrapKe
|
|
|
210
273
|
* layer, by design.
|
|
211
274
|
*/
|
|
212
275
|
export declare function openHandoffEnvelopeV2(handoffIdBytes: Uint8Array, wrapKey: Uint8Array, sealedEnvelope: string, envelopeKind: string): HandoffEnvelopePayloadV2;
|
|
276
|
+
/** The invite-kind sibling of {@link openHandoffEnvelopeV2} — throws `INVITE_ENVELOPE_UNSUPPORTED` / `INVITE_ENVELOPE_INVALID` / `INVITE_AEAD_AUTH_FAILURE` (kygit-invite design D3). */
|
|
277
|
+
export declare function openInviteEnvelope(inviteIdBytes: Uint8Array, wrapKey: Uint8Array, sealedEnvelope: string, envelopeKind?: string): InviteEnvelopePayloadV2;
|
|
213
278
|
export interface KygitHandoffNoteCapture {
|
|
214
279
|
base_head: string;
|
|
215
280
|
branch: string | null;
|
|
@@ -218,9 +283,8 @@ export interface KygitHandoffNoteCapture {
|
|
|
218
283
|
sensitive_excluded: string[];
|
|
219
284
|
ignored_not_transferred_count: number;
|
|
220
285
|
}
|
|
221
|
-
/**
|
|
222
|
-
|
|
223
|
-
schema: "kygit.handoff-note.v1";
|
|
286
|
+
/** The fields shared by every claim-kind note — free-text fields are Markdown. */
|
|
287
|
+
interface KygitClaimNoteBase {
|
|
224
288
|
created_at: string;
|
|
225
289
|
from: {
|
|
226
290
|
agent: string;
|
|
@@ -242,7 +306,16 @@ export interface KygitHandoffNote {
|
|
|
242
306
|
open_questions?: string[];
|
|
243
307
|
capture: KygitHandoffNoteCapture;
|
|
244
308
|
}
|
|
309
|
+
/** `kygit.handoff-note.v1` — the handoff commit's message, verbatim JSON. */
|
|
310
|
+
export interface KygitHandoffNote extends KygitClaimNoteBase {
|
|
311
|
+
schema: "kygit.handoff-note.v1";
|
|
312
|
+
}
|
|
313
|
+
/** `kygit.invite-note.v1` — the invite commit's message, verbatim JSON. Same fields as {@link KygitHandoffNote} (kygit-invite design D3). */
|
|
314
|
+
export interface KygitInviteNote extends KygitClaimNoteBase {
|
|
315
|
+
schema: "kygit.invite-note.v1";
|
|
316
|
+
}
|
|
245
317
|
export declare function isKygitHandoffNote(value: unknown): value is KygitHandoffNote;
|
|
318
|
+
export declare function isKygitInviteNote(value: unknown): value is KygitInviteNote;
|
|
246
319
|
export interface HandoffNoteSecretFinding {
|
|
247
320
|
field: string;
|
|
248
321
|
reason: string;
|
|
@@ -253,6 +326,11 @@ export interface HandoffNoteSecretFinding {
|
|
|
253
326
|
* secrets API. `null` when the note is clean.
|
|
254
327
|
*/
|
|
255
328
|
export declare function scanHandoffNoteForSecrets(note: KygitHandoffNote): HandoffNoteSecretFinding | null;
|
|
329
|
+
/** The invite-kind sibling of {@link scanHandoffNoteForSecrets} (kygit-invite design D3). */
|
|
330
|
+
export declare function scanInviteNoteForSecrets(note: KygitInviteNote): HandoffNoteSecretFinding | null;
|
|
256
331
|
/** Throws `HANDOFF_NOTE_CONTAINS_SECRET` naming the field — call before the handoff commit is written. */
|
|
257
332
|
export declare function assertHandoffNoteHasNoSecret(note: KygitHandoffNote): void;
|
|
333
|
+
/** Throws `INVITE_NOTE_CONTAINS_SECRET` naming the field — call before the invite commit is written (kygit-invite design D3). */
|
|
334
|
+
export declare function assertInviteNoteHasNoSecret(note: KygitInviteNote): void;
|
|
335
|
+
export {};
|
|
258
336
|
//# sourceMappingURL=gitvault-handoff.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitvault-handoff.d.ts","sourceRoot":"","sources":["../../src/node/gitvault-handoff.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gitvault-handoff.d.ts","sourceRoot":"","sources":["../../src/node/gitvault-handoff.ts"],"names":[],"mappings":"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"}
|