run402 4.39.0 → 4.40.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 (45) hide show
  1. package/cli.mjs +1 -1
  2. package/git-remote-run402.mjs +15 -1
  3. package/lib/assets.mjs +19 -26
  4. package/lib/cdn.mjs +4 -6
  5. package/lib/command-manifest.mjs +20 -0
  6. package/lib/config.mjs +30 -0
  7. package/lib/deploy-v2.mjs +15 -0
  8. package/lib/doctor.mjs +33 -0
  9. package/lib/gitvault.mjs +348 -1
  10. package/package.json +1 -1
  11. package/sdk/dist/namespaces/gitvault.crypto.d.ts +10 -0
  12. package/sdk/dist/namespaces/gitvault.crypto.d.ts.map +1 -1
  13. package/sdk/dist/namespaces/gitvault.crypto.js +10 -0
  14. package/sdk/dist/namespaces/gitvault.crypto.js.map +1 -1
  15. package/sdk/dist/namespaces/gitvault.d.ts +141 -4
  16. package/sdk/dist/namespaces/gitvault.d.ts.map +1 -1
  17. package/sdk/dist/namespaces/gitvault.js +226 -3
  18. package/sdk/dist/namespaces/gitvault.js.map +1 -1
  19. package/sdk/dist/node/gitvault-keystore.d.ts +11 -1
  20. package/sdk/dist/node/gitvault-keystore.d.ts.map +1 -1
  21. package/sdk/dist/node/gitvault-keystore.js.map +1 -1
  22. package/sdk/dist/node/gitvault-mirror-backend.d.ts +88 -0
  23. package/sdk/dist/node/gitvault-mirror-backend.d.ts.map +1 -0
  24. package/sdk/dist/node/gitvault-mirror-backend.js +374 -0
  25. package/sdk/dist/node/gitvault-mirror-backend.js.map +1 -0
  26. package/sdk/dist/node/gitvault-mirror-config.d.ts +53 -0
  27. package/sdk/dist/node/gitvault-mirror-config.d.ts.map +1 -0
  28. package/sdk/dist/node/gitvault-mirror-config.js +112 -0
  29. package/sdk/dist/node/gitvault-mirror-config.js.map +1 -0
  30. package/sdk/dist/node/gitvault-mirror.d.ts +120 -0
  31. package/sdk/dist/node/gitvault-mirror.d.ts.map +1 -0
  32. package/sdk/dist/node/gitvault-mirror.js +464 -0
  33. package/sdk/dist/node/gitvault-mirror.js.map +1 -0
  34. package/sdk/dist/node/gitvault-publication.d.ts +131 -0
  35. package/sdk/dist/node/gitvault-publication.d.ts.map +1 -1
  36. package/sdk/dist/node/gitvault-publication.js +145 -1
  37. package/sdk/dist/node/gitvault-publication.js.map +1 -1
  38. package/sdk/dist/node/gitvault-recover.d.ts +136 -0
  39. package/sdk/dist/node/gitvault-recover.d.ts.map +1 -0
  40. package/sdk/dist/node/gitvault-recover.js +412 -0
  41. package/sdk/dist/node/gitvault-recover.js.map +1 -0
  42. package/sdk/dist/node/gitvault-snapshot.d.ts +8 -0
  43. package/sdk/dist/node/gitvault-snapshot.d.ts.map +1 -1
  44. package/sdk/dist/node/gitvault-snapshot.js +11 -0
  45. package/sdk/dist/node/gitvault-snapshot.js.map +1 -1
@@ -29,14 +29,17 @@
29
29
  * never persisted into an agent-surface result store, and never logged.
30
30
  */
31
31
  import type { Client } from "../kernel.js";
32
- import { GITVAULT_TERMINAL_LOSS_DOCTOR_TEXT, GITVAULT_TERMINAL_LOSS_STATEMENT } from "./gitvault.crypto.js";
33
- import type { GitvaultCaptureReceipt, GitvaultHeadsListingPage, GitvaultHeadsListingRequest, GitvaultHeadTarget } from "./gitvault.types.js";
32
+ import { GITVAULT_MIRROR_KEYSTORE_STILL_REQUIRED_STATEMENT, GITVAULT_MIRROR_VALIDITY_NOT_FRESHNESS_STATEMENT, GITVAULT_TERMINAL_LOSS_DOCTOR_TEXT, GITVAULT_TERMINAL_LOSS_STATEMENT } from "./gitvault.crypto.js";
33
+ import type { GitvaultCaptureReceipt, GitvaultHeadsListingPage, GitvaultHeadsListingRequest, GitvaultHeadTarget, GitvaultRecoveryReceipt } from "./gitvault.types.js";
34
34
  import type { GitvaultMaintenanceLease, GitvaultMaintenanceLeaseRequest, GitvaultTransport, GitvaultVaultRecord } from "../node/gitvault-publication.js";
35
35
  import type { GitvaultDeployOptions, GitvaultDeployResult } from "../node/gitvault-deploy.js";
36
- import type { GitvaultPublishResult, GitvaultRefMap, GitvaultVerifiedState } from "../node/gitvault-publication.js";
36
+ import type { GitvaultPublishResult, GitvaultRefMap, GitvaultReconcileEnvelopeRecipientsResult, GitvaultVerifiedState } from "../node/gitvault-publication.js";
37
37
  import type { GitvaultCreationResult } from "../node/gitvault-creation-journal.js";
38
38
  import type { GitvaultKeystore } from "../node/gitvault-keystore.js";
39
39
  import type { GitvaultSnapshot } from "../node/gitvault-snapshot.js";
40
+ import type { GitvaultMirrorConfig, GitvaultMirrorCredential } from "../node/gitvault-mirror-config.js";
41
+ import type { GitvaultMirrorPushResult, GitvaultMirrorSyncSummary } from "../node/gitvault-mirror.js";
42
+ import type { GitvaultRecoverResult, GitvaultVerifyReport } from "../node/gitvault-recover.js";
40
43
  /** What `r.gitvault.status()` reports. Never carries key material. */
41
44
  export interface GitvaultStatus {
42
45
  repo_id: string | null;
@@ -287,7 +290,32 @@ export interface GitvaultHandle {
287
290
  /** The full protocol object — every verb below is built on it. */
288
291
  vault: import("../node/gitvault-publication.js").GitvaultVault;
289
292
  }
293
+ /** {@link Gitvault.push}'s best-effort envelope-recipient reconcile outcome, reported beside (never folded into) the vault result — same non-blocking contract as {@link GitvaultMirrorPushResult}. */
294
+ export interface GitvaultReconcileEnvelopeRecipientsPushResult {
295
+ attempted: boolean;
296
+ outcome: "reconciled" | "skipped_error";
297
+ result?: GitvaultReconcileEnvelopeRecipientsResult;
298
+ error?: string;
299
+ }
290
300
  /** What {@link Gitvault.openOrCreate} did. `created` is `null` exactly when `found` is `true`. */
301
+ /** `run402 gitvault mirror status` — what this machine and the mirror each believe (design D8: both honesty statements ride every response). */
302
+ export interface GitvaultMirrorStatus {
303
+ repo_id: string;
304
+ configured: boolean;
305
+ /** `s3://bucket/prefix` or a directory path — never a credential. */
306
+ destination: string | null;
307
+ credential_kind: "profile" | "ambient" | null;
308
+ /** The newest generation the MIRROR holds and chain-verifies (keyless). `null` when unconfigured, unreachable, or empty. */
309
+ mirrored_generation: string | null;
310
+ /** The LIVE vault's newest generation (one vault-record read). `null` when unconfigured or the vault has never captured. */
311
+ newest_generation: string | null;
312
+ /** `null` when either side is unknown (never fabricated from a partial read). */
313
+ is_current: boolean | null;
314
+ /** Present exactly when `is_current === false`. */
315
+ closing_command: string | null;
316
+ validity_not_freshness: typeof GITVAULT_MIRROR_VALIDITY_NOT_FRESHNESS_STATEMENT;
317
+ keystore_still_required: typeof GITVAULT_MIRROR_KEYSTORE_STILL_REQUIRED_STATEMENT;
318
+ }
291
319
  export interface GitvaultOpenOrCreateResult {
292
320
  handle: GitvaultHandle;
293
321
  /** `true` when the vault already existed — nothing was allocated by this call. */
@@ -301,6 +329,28 @@ export interface GitvaultOpenOrCreateResult {
301
329
  } | null;
302
330
  terminal_loss_statement: typeof GITVAULT_TERMINAL_LOSS_STATEMENT;
303
331
  }
332
+ /**
333
+ * {@link Gitvault.deploy}'s post-push glue: attach the best-effort
334
+ * mirror/reconcile hooks to a deploy result, gated on whether this deploy
335
+ * actually landed a new generation in the vault. Extracted as a standalone
336
+ * function (rather than inlined in `deploy()`) purely so the gating can be
337
+ * unit-tested with fake thunks — the real hooks (`#tryMirrorPush` /
338
+ * `#tryReconcileEnvelopeRecipients`) are private class methods that already
339
+ * catch everything and never reject, so this function does not need its own
340
+ * try/catch: it only decides WHETHER to call them and how to merge what they
341
+ * resolve to.
342
+ *
343
+ * `DEPLOYED_AND_VAULTED` and `DEPLOY_FAILED_VAULTED` are the only two
344
+ * outcomes that carry a `generation` — a vault push actually landed. The
345
+ * other three (`DEPLOY_BLOCKED_PUSH_FAILED`, `DEPLOY_FAILED_UNVAULTED`,
346
+ * `DEPLOYED_UNVAULTED_OVERRIDE`) published nothing new, so `mirror_push` /
347
+ * `reconcile_recipients` are OMITTED rather than a faked `skipped_*` value —
348
+ * there is nothing this deploy did that either hook could report on.
349
+ */
350
+ export declare function attachGitvaultDeployHooks(result: GitvaultDeployResult, mirror: () => Promise<GitvaultMirrorPushResult>, reconcile: () => Promise<GitvaultReconcileEnvelopeRecipientsPushResult>): Promise<GitvaultDeployResult & {
351
+ mirror_push?: GitvaultMirrorPushResult;
352
+ reconcile_recipients?: GitvaultReconcileEnvelopeRecipientsPushResult;
353
+ }>;
304
354
  export declare class Gitvault {
305
355
  #private;
306
356
  constructor(client: Client);
@@ -594,6 +644,8 @@ export declare class Gitvault {
594
644
  snapshot: GitvaultSnapshot;
595
645
  gitvault_commit: string;
596
646
  gitvault_commit_line: string;
647
+ mirror_push: GitvaultMirrorPushResult;
648
+ reconcile_recipients: GitvaultReconcileEnvelopeRecipientsPushResult;
597
649
  }>;
598
650
  /**
599
651
  * A REAL preview of what {@link push} would publish (kychee-com/run402#565)
@@ -706,6 +758,25 @@ export declare class Gitvault {
706
758
  * from its verified prefix rather than restarting.
707
759
  */
708
760
  verify(options?: GitvaultVaultHandleOptions): Promise<GitvaultVerifiedState>;
761
+ /**
762
+ * Wrap this vault's current epoch key to every org member who has
763
+ * published an encryption key but has no `key_envelope` on this vault yet
764
+ * — gitvault-human-envelopes task 4.1's ADD-path workaround. See {@link
765
+ * import("../node/gitvault-publication.js").GitvaultVault.
766
+ * reconcileEnvelopeRecipients} for the full design (TOFU pinning, the
767
+ * gateway `public_key` gap, and why this is a workaround rather than the
768
+ * eventual epoch-rotation design).
769
+ *
770
+ * `run402 gitvault reconcile [--repo <id>]` is the explicit standalone
771
+ * CLI surface (design D5's "session start" hook). `deploy()` runs this
772
+ * itself, best-effort, whenever a deploy lands a new generation in the
773
+ * vault — design D5's "deploy time" hook, "the same 'one command every
774
+ * agent runs' argument that decided deploy-implies-capture." `push()`
775
+ * (capture-and-publish outside a deploy) runs the identical hook after
776
+ * every successful publish, for the vault-only-project cadence. See
777
+ * `#tryReconcileEnvelopeRecipients` below for both call sites.
778
+ */
779
+ reconcileEnvelopeRecipients(options?: GitvaultVaultHandleOptions): Promise<GitvaultReconcileEnvelopeRecipientsResult>;
709
780
  /**
710
781
  * The push-gated deploy: both lanes under one fresh `capture_id`, resolving
711
782
  * to exactly one of five outcomes — `DEPLOYED_AND_VAULTED`,
@@ -715,8 +786,27 @@ export declare class Gitvault {
715
786
  * The push is never gated on deploy success, and a build that fails before a
716
787
  * canonical apply plan exists still captures (with a null plan digest, so no
717
788
  * activation token can be minted from it).
789
+ *
790
+ * `run402 deploy` is design D5's PRIMARY envelope-recipient reconcile hook
791
+ * ("the same 'one command every agent runs' argument that decided
792
+ * deploy-implies-capture") and design D6's primary dual-push mirror trigger
793
+ * — both fire HERE, not inside {@link runGitvaultDeploy} itself, mirroring
794
+ * {@link push}'s exact non-blocking contract: best-effort, NEVER throw,
795
+ * NEVER alter the deploy outcome already resolved above, reported BESIDE it
796
+ * on `mirror_push` / `reconcile_recipients`. They fire only when this
797
+ * deploy actually landed a new generation in the vault
798
+ * (`DEPLOYED_AND_VAULTED` / `DEPLOY_FAILED_VAULTED` — the outcomes carrying
799
+ * a `generation`); the other three outcomes published nothing new, so
800
+ * there is nothing to mirror or reconcile against ({@link
801
+ * import("../node/gitvault-mirror.js").mirrorPushForGeneration}'s own
802
+ * contract: "fires after an ordinary vault push/deploy produces a new
803
+ * generation"). Both fields are therefore OMITTED — never a faked
804
+ * `skipped_*` outcome — when no generation landed.
718
805
  */
719
- deploy(options: Omit<GitvaultDeployOptions, "vault"> & GitvaultVaultHandleOptions): Promise<GitvaultDeployResult>;
806
+ deploy(options: Omit<GitvaultDeployOptions, "vault"> & GitvaultVaultHandleOptions): Promise<GitvaultDeployResult & {
807
+ mirror_push?: GitvaultMirrorPushResult;
808
+ reconcile_recipients?: GitvaultReconcileEnvelopeRecipientsPushResult;
809
+ }>;
720
810
  /**
721
811
  * Drain every unvaulted-override journal on this machine: push the exact
722
812
  * journaled snapshot and present the capture receipt for full-field
@@ -734,6 +824,53 @@ export declare class Gitvault {
734
824
  refs: Record<string, string>;
735
825
  generation: string;
736
826
  }>;
827
+ /**
828
+ * Configure (or replace) the customer-owned mirror destination for one
829
+ * vault. Client-side ONLY — the destination + credential NAME are written
830
+ * beside the keystore (design D2); run402 never sees or stores a raw
831
+ * secret value. `s3://<bucket>/<prefix>` needs `credential`; a plain
832
+ * filesystem path needs none.
833
+ */
834
+ mirrorSet(options: GitvaultVaultHandleOptions & {
835
+ destination_url: string;
836
+ credential?: GitvaultMirrorCredential;
837
+ region?: string;
838
+ endpoint?: string;
839
+ }): Promise<GitvaultMirrorConfig>;
840
+ /** Remove the mirror config for one vault. Never touches the mirror's own bytes (design: config removal ≠ data deletion). */
841
+ mirrorRemove(options?: GitvaultVaultHandleOptions): Promise<{
842
+ repo_id: string;
843
+ removed: boolean;
844
+ }>;
845
+ /**
846
+ * What this machine and the mirror each believe: whether a mirror is
847
+ * configured, the newest generation the MIRROR holds and can chain-verify
848
+ * (keyless — never touches keys), the LIVE vault's newest generation (one
849
+ * read of the vault record), and — when they disagree — the closing
850
+ * command. Both honesty statements (design D8) ride every response.
851
+ */
852
+ mirrorStatus(options?: GitvaultVaultHandleOptions): Promise<GitvaultMirrorStatus>;
853
+ /** List the vault's stored objects, diff against the mirror, fetch + hash-verify + write what's missing, in admission order. Resumable and idempotent. */
854
+ mirrorSync(options?: GitvaultVaultHandleOptions): Promise<GitvaultMirrorSyncSummary>;
855
+ /** Keyless integrity probe against the CONFIGURED mirror: discovery + chain verification + closure/absence adjudication, never decryption (`run402 gitvault mirror verify`). */
856
+ mirrorVerify(options?: GitvaultVaultHandleOptions): Promise<GitvaultVerifyReport>;
857
+ /**
858
+ * `r402s-recover` (design D4): rebuild a working git repository straight
859
+ * from a mirrored `source/<repo_id>/` prefix — NO SERVER INVOLVED. `source`
860
+ * is `s3://<bucket>[/<prefix>]` or a local directory; when it names more
861
+ * than one mirrored vault, pass `repo_id` explicitly. Recovery proves
862
+ * validity, never freshness (both honesty statements ride every result).
863
+ */
864
+ recover(options: {
865
+ source: string;
866
+ out_dir: string;
867
+ repo_id?: string;
868
+ credential?: GitvaultMirrorCredential;
869
+ region?: string;
870
+ endpoint?: string;
871
+ recovery_receipt?: GitvaultRecoveryReceipt;
872
+ keystore_root?: string;
873
+ }): Promise<GitvaultRecoverResult>;
737
874
  }
738
875
  /**
739
876
  * The composite escalation trigger (design D7): ANY of these crossing its
@@ -1 +1 @@
1
- {"version":3,"file":"gitvault.d.ts","sourceRoot":"","sources":["../../src/namespaces/gitvault.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gitvault.d.ts","sourceRoot":"","sources":["../../src/namespaces/gitvault.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@
29
29
  * never persisted into an agent-surface result store, and never logged.
30
30
  */
31
31
  import { LocalError } from "../errors.js";
32
- import { GITVAULT_TERMINAL_LOSS_DOCTOR_TEXT, GITVAULT_TERMINAL_LOSS_STATEMENT } from "./gitvault.crypto.js";
32
+ import { GITVAULT_MIRROR_KEYSTORE_STILL_REQUIRED_STATEMENT, GITVAULT_MIRROR_VALIDITY_NOT_FRESHNESS_STATEMENT, GITVAULT_TERMINAL_LOSS_DOCTOR_TEXT, GITVAULT_TERMINAL_LOSS_STATEMENT, } from "./gitvault.crypto.js";
33
33
  /** A keystore path, or `null` when there is no id to derive it from (or it is malformed). */
34
34
  function safePath(derive, repoId) {
35
35
  if (!repoId)
@@ -49,6 +49,34 @@ async function nodeOnly(load, verb) {
49
49
  throw new LocalError(`\`r.gitvault.${verb}\` needs the Node runtime (keystore + git); import it from a Node process, or use the read-only vault methods in a browser.`, `running gitvault ${verb}`, { code: "GITVAULT_NODE_ONLY", details: { cause: e instanceof Error ? e.message : String(e) } });
50
50
  }
51
51
  }
52
+ /**
53
+ * {@link Gitvault.deploy}'s post-push glue: attach the best-effort
54
+ * mirror/reconcile hooks to a deploy result, gated on whether this deploy
55
+ * actually landed a new generation in the vault. Extracted as a standalone
56
+ * function (rather than inlined in `deploy()`) purely so the gating can be
57
+ * unit-tested with fake thunks — the real hooks (`#tryMirrorPush` /
58
+ * `#tryReconcileEnvelopeRecipients`) are private class methods that already
59
+ * catch everything and never reject, so this function does not need its own
60
+ * try/catch: it only decides WHETHER to call them and how to merge what they
61
+ * resolve to.
62
+ *
63
+ * `DEPLOYED_AND_VAULTED` and `DEPLOY_FAILED_VAULTED` are the only two
64
+ * outcomes that carry a `generation` — a vault push actually landed. The
65
+ * other three (`DEPLOY_BLOCKED_PUSH_FAILED`, `DEPLOY_FAILED_UNVAULTED`,
66
+ * `DEPLOYED_UNVAULTED_OVERRIDE`) published nothing new, so `mirror_push` /
67
+ * `reconcile_recipients` are OMITTED rather than a faked `skipped_*` value —
68
+ * there is nothing this deploy did that either hook could report on.
69
+ */
70
+ export async function attachGitvaultDeployHooks(result, mirror, reconcile) {
71
+ if (result.outcome !== "DEPLOYED_AND_VAULTED" && result.outcome !== "DEPLOY_FAILED_VAULTED")
72
+ return result;
73
+ // Sequential, not Promise.all — same ordering push() uses, so a reconcile
74
+ // failure can never be misread as a mirror failure in a log line that
75
+ // assumed ordering.
76
+ const mirrorPush = await mirror();
77
+ const reconcileRecipients = await reconcile();
78
+ return { ...result, mirror_push: mirrorPush, reconcile_recipients: reconcileRecipients };
79
+ }
52
80
  // ─── The namespace ───────────────────────────────────────────────────────────
53
81
  export class Gitvault {
54
82
  #client;
@@ -685,7 +713,38 @@ export class Gitvault {
685
713
  ...(options.checkpoint ? { checkpoint: true } : {}),
686
714
  };
687
715
  const result = await handle.vault.push(push);
688
- return { ...result, snapshot, gitvault_commit: snapshot.oid, gitvault_commit_line: line };
716
+ // Capture-time dual-push hook (design D6/task 2.4): fires only when a
717
+ // mirror is configured; NEVER throws, NEVER alters the vault outcome
718
+ // above (already returned/committed) — a mirror failure is a named
719
+ // pending finding reported BESIDE the vault result, on its own field.
720
+ const mirrorPush = await this.#tryMirrorPush(handle.repo_id, handle.keystore);
721
+ // Deploy-time reconcile hook (design D5's "deploy time" cadence,
722
+ // gitvault-human-envelopes task 4.1): fires on every successful push,
723
+ // best-effort — a reconcile failure (including a read-only principal
724
+ // with no signing key) is reported BESIDE the vault result, never a
725
+ // `push()` throw, same non-blocking contract as the mirror hook above.
726
+ const reconcileRecipients = await this.#tryReconcileEnvelopeRecipients(handle.vault);
727
+ return { ...result, snapshot, gitvault_commit: snapshot.oid, gitvault_commit_line: line, mirror_push: mirrorPush, reconcile_recipients: reconcileRecipients };
728
+ }
729
+ /** Best-effort dual-push: catches EVERYTHING, including the lazy module import itself, so a mirror problem can never surface as a `push()` throw. */
730
+ async #tryMirrorPush(repoId, keystore) {
731
+ try {
732
+ const { mirrorPushForGeneration } = await this.#mirror();
733
+ return await mirrorPushForGeneration(this.#client, repoId, { keystore });
734
+ }
735
+ catch (e) {
736
+ return { attempted: false, outcome: "skipped_no_mirror", error: e instanceof Error ? e.message : String(e) };
737
+ }
738
+ }
739
+ /** Best-effort envelope-recipient reconcile: catches EVERYTHING so a reconcile problem can never surface as a `push()` throw (mirrors {@link #tryMirrorPush}'s contract exactly). */
740
+ async #tryReconcileEnvelopeRecipients(vault) {
741
+ try {
742
+ const result = await vault.reconcileEnvelopeRecipients();
743
+ return { attempted: true, outcome: "reconciled", result };
744
+ }
745
+ catch (e) {
746
+ return { attempted: false, outcome: "skipped_error", error: e instanceof Error ? e.message : String(e) };
747
+ }
689
748
  }
690
749
  /**
691
750
  * A REAL preview of what {@link push} would publish (kychee-com/run402#565)
@@ -1018,6 +1077,28 @@ export class Gitvault {
1018
1077
  const handle = await this.open(options);
1019
1078
  return handle.vault.verifyToNewest();
1020
1079
  }
1080
+ /**
1081
+ * Wrap this vault's current epoch key to every org member who has
1082
+ * published an encryption key but has no `key_envelope` on this vault yet
1083
+ * — gitvault-human-envelopes task 4.1's ADD-path workaround. See {@link
1084
+ * import("../node/gitvault-publication.js").GitvaultVault.
1085
+ * reconcileEnvelopeRecipients} for the full design (TOFU pinning, the
1086
+ * gateway `public_key` gap, and why this is a workaround rather than the
1087
+ * eventual epoch-rotation design).
1088
+ *
1089
+ * `run402 gitvault reconcile [--repo <id>]` is the explicit standalone
1090
+ * CLI surface (design D5's "session start" hook). `deploy()` runs this
1091
+ * itself, best-effort, whenever a deploy lands a new generation in the
1092
+ * vault — design D5's "deploy time" hook, "the same 'one command every
1093
+ * agent runs' argument that decided deploy-implies-capture." `push()`
1094
+ * (capture-and-publish outside a deploy) runs the identical hook after
1095
+ * every successful publish, for the vault-only-project cadence. See
1096
+ * `#tryReconcileEnvelopeRecipients` below for both call sites.
1097
+ */
1098
+ async reconcileEnvelopeRecipients(options = {}) {
1099
+ const handle = await this.open(options);
1100
+ return handle.vault.reconcileEnvelopeRecipients();
1101
+ }
1021
1102
  /**
1022
1103
  * The push-gated deploy: both lanes under one fresh `capture_id`, resolving
1023
1104
  * to exactly one of five outcomes — `DEPLOYED_AND_VAULTED`,
@@ -1027,11 +1108,33 @@ export class Gitvault {
1027
1108
  * The push is never gated on deploy success, and a build that fails before a
1028
1109
  * canonical apply plan exists still captures (with a null plan digest, so no
1029
1110
  * activation token can be minted from it).
1111
+ *
1112
+ * `run402 deploy` is design D5's PRIMARY envelope-recipient reconcile hook
1113
+ * ("the same 'one command every agent runs' argument that decided
1114
+ * deploy-implies-capture") and design D6's primary dual-push mirror trigger
1115
+ * — both fire HERE, not inside {@link runGitvaultDeploy} itself, mirroring
1116
+ * {@link push}'s exact non-blocking contract: best-effort, NEVER throw,
1117
+ * NEVER alter the deploy outcome already resolved above, reported BESIDE it
1118
+ * on `mirror_push` / `reconcile_recipients`. They fire only when this
1119
+ * deploy actually landed a new generation in the vault
1120
+ * (`DEPLOYED_AND_VAULTED` / `DEPLOY_FAILED_VAULTED` — the outcomes carrying
1121
+ * a `generation`); the other three outcomes published nothing new, so
1122
+ * there is nothing to mirror or reconcile against ({@link
1123
+ * import("../node/gitvault-mirror.js").mirrorPushForGeneration}'s own
1124
+ * contract: "fires after an ordinary vault push/deploy produces a new
1125
+ * generation"). Both fields are therefore OMITTED — never a faked
1126
+ * `skipped_*` outcome — when no generation landed.
1030
1127
  */
1031
1128
  async deploy(options) {
1032
1129
  const { runGitvaultDeploy } = await this.#deploy();
1033
1130
  const handle = await this.open(options);
1034
- return runGitvaultDeploy({ ...options, vault: handle.vault, repo_dir: options.repo_dir ?? process.cwd() });
1131
+ const result = await runGitvaultDeploy({ ...options, vault: handle.vault, repo_dir: options.repo_dir ?? process.cwd() });
1132
+ // Same ordering push() uses (mirror, then reconcile) — sequential, not
1133
+ // Promise.all, so a reconcile failure can never be misread as a mirror
1134
+ // failure in a log line that assumed ordering. Extracted to a standalone
1135
+ // function so the outcome-gating is unit-testable with fake thunks,
1136
+ // without standing up a live vault — see gitvault-deploy-hooks.test.ts.
1137
+ return attachGitvaultDeployHooks(result, () => this.#tryMirrorPush(handle.repo_id, handle.keystore), () => this.#tryReconcileEnvelopeRecipients(handle.vault));
1035
1138
  }
1036
1139
  /**
1037
1140
  * Drain every unvaulted-override journal on this machine: push the exact
@@ -1053,6 +1156,114 @@ export class Gitvault {
1053
1156
  const out = await handle.vault.restoreObjectsInto(options.target_dir);
1054
1157
  return { refs: out.refs, generation: out.generation };
1055
1158
  }
1159
+ // ── mirror (gitvault-mirror-and-recover, design D1/D2/D7) ─────────────────
1160
+ /**
1161
+ * Configure (or replace) the customer-owned mirror destination for one
1162
+ * vault. Client-side ONLY — the destination + credential NAME are written
1163
+ * beside the keystore (design D2); run402 never sees or stores a raw
1164
+ * secret value. `s3://<bucket>/<prefix>` needs `credential`; a plain
1165
+ * filesystem path needs none.
1166
+ */
1167
+ async mirrorSet(options) {
1168
+ const [{ GitvaultKeystore }, { parseMirrorDestinationUrl, saveMirrorConfig }] = await Promise.all([this.#keystore(), this.#mirrorConfig()]);
1169
+ const repoId = await this.#resolveRepoId(options);
1170
+ const keystore = new GitvaultKeystore(options.keystore_root !== undefined ? { rootDir: options.keystore_root } : {});
1171
+ const destination = parseMirrorDestinationUrl(options.destination_url, { region: options.region, endpoint: options.endpoint });
1172
+ return saveMirrorConfig(keystore, { repo_id: repoId, destination, ...(options.credential ? { credential: options.credential } : {}) });
1173
+ }
1174
+ /** Remove the mirror config for one vault. Never touches the mirror's own bytes (design: config removal ≠ data deletion). */
1175
+ async mirrorRemove(options = {}) {
1176
+ const [{ GitvaultKeystore }, { removeMirrorConfig }] = await Promise.all([this.#keystore(), this.#mirrorConfig()]);
1177
+ const repoId = await this.#resolveRepoId(options);
1178
+ const keystore = new GitvaultKeystore(options.keystore_root !== undefined ? { rootDir: options.keystore_root } : {});
1179
+ return { repo_id: repoId, ...removeMirrorConfig(keystore, repoId) };
1180
+ }
1181
+ /**
1182
+ * What this machine and the mirror each believe: whether a mirror is
1183
+ * configured, the newest generation the MIRROR holds and can chain-verify
1184
+ * (keyless — never touches keys), the LIVE vault's newest generation (one
1185
+ * read of the vault record), and — when they disagree — the closing
1186
+ * command. Both honesty statements (design D8) ride every response.
1187
+ */
1188
+ async mirrorStatus(options = {}) {
1189
+ const [{ GitvaultKeystore }, { readMirrorConfig, formatMirrorDestination }, { openGitvaultMirrorBackend }, { verifyGitvaultMirror }] = await Promise.all([
1190
+ this.#keystore(), this.#mirrorConfig(), this.#mirrorBackend(), this.#recovery(),
1191
+ ]);
1192
+ const repoId = await this.#resolveRepoId(options);
1193
+ const keystore = new GitvaultKeystore(options.keystore_root !== undefined ? { rootDir: options.keystore_root } : {});
1194
+ const config = readMirrorConfig(keystore, repoId);
1195
+ const base = { repo_id: repoId, validity_not_freshness: GITVAULT_MIRROR_VALIDITY_NOT_FRESHNESS_STATEMENT, keystore_still_required: GITVAULT_MIRROR_KEYSTORE_STILL_REQUIRED_STATEMENT };
1196
+ if (!config) {
1197
+ return { ...base, configured: false, destination: null, credential_kind: null, mirrored_generation: null, newest_generation: null, is_current: null, closing_command: null };
1198
+ }
1199
+ let mirroredGeneration = null;
1200
+ try {
1201
+ const backend = openGitvaultMirrorBackend(config.destination, repoId, config.credential);
1202
+ const report = await verifyGitvaultMirror(backend, { keystore });
1203
+ mirroredGeneration = report.recovered_generation;
1204
+ }
1205
+ catch {
1206
+ // A configured-but-unreachable/empty mirror is still `configured: true` — the honest report is "unknown", not a thrown status call.
1207
+ }
1208
+ let newestGeneration = null;
1209
+ try {
1210
+ newestGeneration = (await this.get(repoId)).newest_generation;
1211
+ }
1212
+ catch {
1213
+ /* the live vault read is best-effort here; the mirror half of status still answers */
1214
+ }
1215
+ const isCurrent = mirroredGeneration !== null && newestGeneration !== null ? mirroredGeneration === newestGeneration : null;
1216
+ return {
1217
+ ...base, configured: true, destination: formatMirrorDestination(config.destination), credential_kind: config.credential?.kind ?? null,
1218
+ mirrored_generation: mirroredGeneration, newest_generation: newestGeneration, is_current: isCurrent,
1219
+ closing_command: isCurrent === false ? "run402 gitvault mirror sync" : null,
1220
+ };
1221
+ }
1222
+ /** List the vault's stored objects, diff against the mirror, fetch + hash-verify + write what's missing, in admission order. Resumable and idempotent. */
1223
+ async mirrorSync(options = {}) {
1224
+ const [{ GitvaultKeystore }, { mirrorSync }] = await Promise.all([this.#keystore(), this.#mirror()]);
1225
+ const repoId = await this.#resolveRepoId(options);
1226
+ const keystore = new GitvaultKeystore(options.keystore_root !== undefined ? { rootDir: options.keystore_root } : {});
1227
+ return mirrorSync(this.#client, repoId, { keystore });
1228
+ }
1229
+ /** Keyless integrity probe against the CONFIGURED mirror: discovery + chain verification + closure/absence adjudication, never decryption (`run402 gitvault mirror verify`). */
1230
+ async mirrorVerify(options = {}) {
1231
+ const [{ GitvaultKeystore }, { readMirrorConfig }, { openGitvaultMirrorBackend }, { verifyGitvaultMirror }] = await Promise.all([
1232
+ this.#keystore(), this.#mirrorConfig(), this.#mirrorBackend(), this.#recovery(),
1233
+ ]);
1234
+ const repoId = await this.#resolveRepoId(options);
1235
+ const keystore = new GitvaultKeystore(options.keystore_root !== undefined ? { rootDir: options.keystore_root } : {});
1236
+ const config = readMirrorConfig(keystore, repoId);
1237
+ if (!config)
1238
+ throw new LocalError(`no mirror is configured for ${repoId}`, "verifying gitvault mirror", { code: "GITVAULT_MIRROR_NOT_CONFIGURED", details: { repo_id: repoId }, next_actions: [{ action: "run402 gitvault mirror set <destination>" }] });
1239
+ const backend = openGitvaultMirrorBackend(config.destination, repoId, config.credential);
1240
+ return verifyGitvaultMirror(backend, { keystore });
1241
+ }
1242
+ /**
1243
+ * `r402s-recover` (design D4): rebuild a working git repository straight
1244
+ * from a mirrored `source/<repo_id>/` prefix — NO SERVER INVOLVED. `source`
1245
+ * is `s3://<bucket>[/<prefix>]` or a local directory; when it names more
1246
+ * than one mirrored vault, pass `repo_id` explicitly. Recovery proves
1247
+ * validity, never freshness (both honesty statements ride every result).
1248
+ */
1249
+ async recover(options) {
1250
+ const [{ GitvaultKeystore }, { parseMirrorDestinationUrl }, { openGitvaultMirrorBackend, discoverMirroredRepoIds }, { recoverGitvaultMirror }] = await Promise.all([
1251
+ this.#keystore(), this.#mirrorConfig(), this.#mirrorBackend(), this.#recovery(),
1252
+ ]);
1253
+ const keystore = new GitvaultKeystore(options.keystore_root !== undefined ? { rootDir: options.keystore_root } : {});
1254
+ const destination = parseMirrorDestinationUrl(options.source, { region: options.region, endpoint: options.endpoint });
1255
+ let repoId = options.repo_id;
1256
+ if (!repoId) {
1257
+ const found = await discoverMirroredRepoIds(destination, options.credential);
1258
+ if (found.length === 0)
1259
+ throw new LocalError(`${options.source} holds no mirrored vault (no source/<repo_id>/ prefix found)`, "recovering gitvault vault", { code: "GITVAULT_MIRROR_EMPTY", details: { source: options.source } });
1260
+ if (found.length > 1)
1261
+ throw new LocalError(`${options.source} holds ${found.length} mirrored vaults; pass repo_id to pick one`, "recovering gitvault vault", { code: "GITVAULT_MIRROR_AMBIGUOUS", details: { source: options.source, repo_ids: found }, next_actions: found.map((id) => ({ action: `recover --repo ${id}` })) });
1262
+ repoId = found[0];
1263
+ }
1264
+ const backend = openGitvaultMirrorBackend(destination, repoId, options.credential);
1265
+ return recoverGitvaultMirror({ backend, out_dir: options.out_dir, keystore, ...(options.recovery_receipt ? { recovery_receipt: options.recovery_receipt } : {}) });
1266
+ }
1056
1267
  // ── internals ─────────────────────────────────────────────────────────────
1057
1268
  async #resolveRepoId(options) {
1058
1269
  if (options.repo_id)
@@ -1085,6 +1296,18 @@ export class Gitvault {
1085
1296
  #address() {
1086
1297
  return nodeOnly(() => import("../node/gitvault-address.js"), "resolveOrCreateAddress");
1087
1298
  }
1299
+ #mirror() {
1300
+ return nodeOnly(() => import("../node/gitvault-mirror.js"), "mirrorSync");
1301
+ }
1302
+ #mirrorConfig() {
1303
+ return nodeOnly(() => import("../node/gitvault-mirror-config.js"), "mirrorSet");
1304
+ }
1305
+ #mirrorBackend() {
1306
+ return nodeOnly(() => import("../node/gitvault-mirror-backend.js"), "mirrorSet");
1307
+ }
1308
+ #recovery() {
1309
+ return nodeOnly(() => import("../node/gitvault-recover.js"), "recover");
1310
+ }
1088
1311
  }
1089
1312
  // ─── D7 — progressive terminal-loss warning (repo-first-onramp task 2.7) ────
1090
1313
  //