@dharma-ai-labs/agent-fabric 0.2.185 → 0.2.187

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 (60) hide show
  1. package/README.md +22 -0
  2. package/dist/index.d.ts +74 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +311 -12
  5. package/dist/index.js.map +1 -1
  6. package/dist/namedSessionBudget.d.ts +6 -0
  7. package/dist/namedSessionBudget.d.ts.map +1 -1
  8. package/dist/namedSessionBudget.js +7 -0
  9. package/dist/namedSessionBudget.js.map +1 -1
  10. package/dist/namedSessionBudget.test.js +21 -0
  11. package/dist/namedSessionBudget.test.js.map +1 -1
  12. package/dist/namedSessionNativeAudit.d.ts +78 -0
  13. package/dist/namedSessionNativeAudit.d.ts.map +1 -0
  14. package/dist/namedSessionNativeAudit.js +158 -0
  15. package/dist/namedSessionNativeAudit.js.map +1 -0
  16. package/dist/namedSessionNativeAudit.test.d.ts +2 -0
  17. package/dist/namedSessionNativeAudit.test.d.ts.map +1 -0
  18. package/dist/namedSessionNativeAudit.test.js +238 -0
  19. package/dist/namedSessionNativeAudit.test.js.map +1 -0
  20. package/dist/namedSessionService.d.ts.map +1 -1
  21. package/dist/namedSessionService.js +15 -0
  22. package/dist/namedSessionService.js.map +1 -1
  23. package/dist/namedSessionService.test.js +29 -2
  24. package/dist/namedSessionService.test.js.map +1 -1
  25. package/dist/repositoryCandidateSync.d.ts +109 -2
  26. package/dist/repositoryCandidateSync.d.ts.map +1 -1
  27. package/dist/repositoryCandidateSync.js +327 -22
  28. package/dist/repositoryCandidateSync.js.map +1 -1
  29. package/dist/repositoryCandidateSync.test.js +912 -6
  30. package/dist/repositoryCandidateSync.test.js.map +1 -1
  31. package/dist/repositoryKnowledgeRetention.test.js +319 -3
  32. package/dist/repositoryKnowledgeRetention.test.js.map +1 -1
  33. package/dist/repositorySourceInventoryClient.d.ts +1 -0
  34. package/dist/repositorySourceInventoryClient.d.ts.map +1 -1
  35. package/dist/repositorySourceInventoryClient.js +4 -1
  36. package/dist/repositorySourceInventoryClient.js.map +1 -1
  37. package/dist/repositorySourceRestoration.d.ts +47 -0
  38. package/dist/repositorySourceRestoration.d.ts.map +1 -0
  39. package/dist/repositorySourceRestoration.js +140 -0
  40. package/dist/repositorySourceRestoration.js.map +1 -0
  41. package/dist/repositorySourceRestorationCommand.test.d.ts +2 -0
  42. package/dist/repositorySourceRestorationCommand.test.d.ts.map +1 -0
  43. package/dist/repositorySourceRestorationCommand.test.js +754 -0
  44. package/dist/repositorySourceRestorationCommand.test.js.map +1 -0
  45. package/dist/repositorySourceSync.d.ts +1 -0
  46. package/dist/repositorySourceSync.d.ts.map +1 -1
  47. package/dist/repositorySourceSync.js +10 -4
  48. package/dist/repositorySourceSync.js.map +1 -1
  49. package/dist/repositorySourceSync.test.js +38 -4
  50. package/dist/repositorySourceSync.test.js.map +1 -1
  51. package/dist/schemas/named-session-native-audit.schema.json +64 -0
  52. package/dist/schemas/repository-candidate-fence-v1.schema.json +55 -0
  53. package/dist/schemas/repository-candidate-upload-v1.schema.json +60 -0
  54. package/dist/schemas/repository-knowledge-restoration-v1.schema.json +16 -0
  55. package/dist/usage.d.ts.map +1 -1
  56. package/dist/usage.js +4 -2
  57. package/dist/usage.js.map +1 -1
  58. package/dist/usage.test.js +6 -1
  59. package/dist/usage.test.js.map +1 -1
  60. package/package.json +1 -1
package/README.md CHANGED
@@ -67,6 +67,28 @@ correlation, not execution authority; signed target/session, expiry, ownership
67
67
  and budget checks still apply. Actual read containment and customer journeys
68
68
  must be qualified separately from these policy tests.
69
69
 
70
+ ## Exact-work native audit
71
+
72
+ ```bash
73
+ dharma sessions audit --name NAME --workspace-id WORKSPACE_UUID --work-id WORK_UUID
74
+ ```
75
+
76
+ Use the existing running, enrolled named session in its normal protected-store
77
+ context. The command verifies one recorded work receipt, capture integrity and
78
+ all organization/member/device/repository/workspace/endpoint/session identities.
79
+ It does not export raw commands, outputs, arguments, paths, prompts or reasoning;
80
+ it returns bounded hashes and explicitly provider-reported facts. It does not
81
+ start a provider turn, revive an owner, read an arbitrary vault object or establish
82
+ independent grading or accepted learning. Unavailable, unfinished, foreign or
83
+ corrupt work fails closed. Preserve coverage, exclusions and truncation.
84
+
85
+ Compare command, output, per-command cwd and tool-response hashes only against
86
+ independently known authorized values. Dynamic replies preserve nullable status
87
+ and success with hashes of their actual content. TAP totals are returned only
88
+ when all supported categories reconcile exactly; nonzero, duplicate or malformed
89
+ TODO summaries return null. Missing evidence is not success. Never extract keys
90
+ or use another storage route if the normal owner is unavailable.
91
+
70
92
  ## Owned Linux container lifecycle
71
93
 
72
94
  An unprivileged Linux container may use `relay container-entrypoint` as its
package/dist/index.d.ts CHANGED
@@ -7,6 +7,7 @@ import { AgentFabricClient, type DeviceConfig, type SecureSecretStore } from '@d
7
7
  import { type SkillBundle } from '@dharma-ai-labs/agent-fabric-skill-manager';
8
8
  import { type TaskEnvelope, type TaskReceipt } from '@dharma-ai-labs/agent-fabric-task-runner';
9
9
  import { type RepositoryInstallerInput } from './repositoryInstallerFiles.js';
10
+ import { type RepositoryCandidateReceipt } from './repositoryCandidateSync.js';
10
11
  import { type CodexSetupFailureDiagnostic, type CodexSetupFailureObserver } from './codexSetupDiagnostic.js';
11
12
  import { type BootstrapHostScope, type CodexBootstrapHostInput } from './bootstrapHostScope.js';
12
13
  import { startCodexSetupNativeHost } from './codexSetupNativeHost.js';
@@ -300,6 +301,79 @@ export declare function installRepositoryAgentFabricSkill(input: RepositoryInsta
300
301
  disposition: "signed_release_reused";
301
302
  } | null;
302
303
  }>;
304
+ export declare function repositoryRestoreCommand(flags: Map<string, string | boolean>): Promise<{
305
+ ok: boolean;
306
+ stage: string;
307
+ fence: {
308
+ fenceId: string;
309
+ operationId: string;
310
+ workspaceId: string;
311
+ repositoryBindingId: string;
312
+ repositoryAgentId: string;
313
+ sourceSnapshotHash: string;
314
+ sourceManifestHash: string;
315
+ policyGenerationId: string;
316
+ requestPolicyGenerationId?: string;
317
+ state: "fenced";
318
+ createdAt: string;
319
+ } | null;
320
+ candidate: RepositoryCandidateReceipt | null;
321
+ localMutation: boolean;
322
+ serverSourceMutation: boolean;
323
+ serverOperationFenced: boolean;
324
+ activated: boolean;
325
+ nextAction: string;
326
+ planHash?: undefined;
327
+ priorReleaseId?: undefined;
328
+ dryRun?: undefined;
329
+ priorGeneration?: undefined;
330
+ headCandidateId?: undefined;
331
+ operationId?: undefined;
332
+ expectedLatestSourceFingerprint?: undefined;
333
+ snapshotHash?: undefined;
334
+ protocolSessionCreated?: undefined;
335
+ published?: undefined;
336
+ } | {
337
+ ok: boolean;
338
+ stage: string;
339
+ planHash: string;
340
+ candidate: RepositoryCandidateReceipt;
341
+ priorReleaseId: string;
342
+ localMutation: boolean;
343
+ serverSourceMutation: boolean;
344
+ activated: boolean;
345
+ nextAction: string;
346
+ fence?: undefined;
347
+ serverOperationFenced?: undefined;
348
+ dryRun?: undefined;
349
+ priorGeneration?: undefined;
350
+ headCandidateId?: undefined;
351
+ operationId?: undefined;
352
+ expectedLatestSourceFingerprint?: undefined;
353
+ snapshotHash?: undefined;
354
+ protocolSessionCreated?: undefined;
355
+ published?: undefined;
356
+ } | {
357
+ ok: boolean;
358
+ stage: string;
359
+ dryRun: boolean;
360
+ planHash: string;
361
+ priorReleaseId: string;
362
+ priorGeneration: number;
363
+ headCandidateId: string;
364
+ operationId: string;
365
+ expectedLatestSourceFingerprint: string;
366
+ snapshotHash: string;
367
+ localMutation: boolean;
368
+ serverSourceMutation: boolean;
369
+ protocolSessionCreated: boolean;
370
+ activated: boolean;
371
+ published: boolean;
372
+ fence?: undefined;
373
+ candidate?: undefined;
374
+ serverOperationFenced?: undefined;
375
+ nextAction?: undefined;
376
+ }>;
303
377
  export declare function repositorySourceResolutionCommand(flags: Map<string, string | boolean>): Promise<{
304
378
  ok: boolean;
305
379
  stage: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAUA,OAAO,EAGL,KAAK,kBAAkB,EAAE,KAAK,UAAU,EAAE,KAAK,0BAA0B,EAC1E,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAwI,KAAK,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AAC/N,OAAO,EAAsE,KAAK,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAClJ,OAAO,EAAkI,KAAK,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACtN,OAAO,EACL,iBAAiB,EAIyC,KAAK,YAAY,EAAE,KAAK,iBAAiB,EACpG,MAAM,2CAA2C,CAAC;AAOnD,OAAO,EAA8O,KAAK,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAC1T,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,0CAA0C,CAAC;AAoBlD,OAAO,EACL,KAAK,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAyBvE,OAAO,EAA0B,KAAK,2BAA2B,EAAE,KAAK,yBAAyB,EAAC,MAAM,2BAA2B,CAAC;AAuCpI,OAAO,EAAsM,KAAK,kBAAkB,EAAE,KAAK,uBAAuB,EAAC,MAAM,yBAAyB,CAAC;AAEnS,OAAO,EAAC,yBAAyB,EAAC,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAAC,yBAAyB,EAAC,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAC,0BAA0B,EAAC,MAAM,6BAA6B,CAAC;AAEvE,OAAO,EAAC,8BAA8B,EAAC,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAiC,KAAK,wBAAwB,EAAE,KAAK,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAE9H,OAAO,KAAK,EAA4C,gBAAgB,EAAC,MAAM,0CAA0C,CAAC;AAG1H,OAAO,EAAE,2BAA2B,EAAE,KAAK,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAC3G,YAAY,EAAC,uBAAuB,EAAC,MAAM,yBAAyB,CAAC;AAMrE,KAAK,MAAM,GAAG,OAAO,CAAC;AAItB,wBAAsB,iCAAiC;;;GAOtD;AAMD,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,yBAAyB,CAAC,EAAE,eAAe,GAAG,WAAW,CAAC;IAC1D,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,iBAAiB,CAAC,EAAE;QAClB,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;QACtE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;QAClC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,EAAE,oBAAoB,GAAG,mBAAmB,GAAG,IAAI,CAAC;QACrE,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzC,yBAAyB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1C,0BAA0B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3C,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzC,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACzC,CAAC;IACF,cAAc,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAClE,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,QAAQ,CAAC;IACjB,UAAU,CAAC,EAAE,QAAQ,GAAG,gBAAgB,CAAC;CAC1C;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAC/C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IACrC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAChD,CAuBA;AAQD,wBAAgB,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,QAAQ,SAA6B,GAAG,MAAM,CAE7G;AAMD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQrE;AAyCD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAO1F;AAWD,wBAAsB,0BAA0B,CAAC,IAAI,SAA6B,GAAG,OAAO,CAAC,MAAM,CAAC,CA4CnG;AAqDD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAU,oBASnD;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,mBAEzD;AA2BD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG,MAAM,CAM3F;AAED,wBAAsB,4BAA4B,CAChD,KAAK,EAAE;IACL,uBAAuB,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC,CAAC;IACpI,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1G,EACD,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,kBAAkB,EAC1B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAsFjB;AA2BD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAKtE;AAWD,wBAAgB,sCAAsC,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,kBAAkB,QAqLlH;AAoOD,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,CAAC,EAAE,iBAAiB,iBAOxF;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,iBAAiB,iBAmBzF;AAoBD,wBAAsB,iBAAiB,CAAC,IAAI,SAAe,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,CAEvG;AAED,wBAAsB,2BAA2B,CAAC,IAAI,SAAe,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,CAEjH;AAED,wBAAsB,wBAAwB,CAAC,IAAI,SAAe,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAoBhG;AAED,wBAAsB,2BAA2B,CAAC,IAAI,SAAe,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAoBnG;AAED,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;;;;GAiGA;AAoBD,wBAAsB,wBAAwB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,SAAe,GAAG,OAAO,CAAC,CAAC,CAAC,CAS9G;AAED,wBAAsB,8BAA8B,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAOpH;AAED,wBAAsB,gCAAgC,CAAC,CAAC,EACtD,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,UAAU,EACpB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC,CAAC,CAAC,CAUZ;AAuGD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAE,OAAO,EACd,sBAAsB,EAAE,MAAM,EAC9B,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,GAAG,OAAa,GACf,kBAAkB,CAsFpB;AAUD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA4BhE;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG;IAC/F,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,QAAQ,GAAG,cAAc,CAAC;CACnC,CAiBA;AAED,wBAAsB,mCAAmC,CACvD,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC,CAKzD;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAmBnE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW;;;;;SAqBvD;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,YAAY,CAAC,aAAa,CAAC,EACnC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GACtD,IAAI,CAaN;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAM9D;AAiFD,KAAK,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,EAAE,QAAQ,GAAG,aAAa,CAAC,CAAC;AAE1E,wBAAsB,oBAAoB,CACxC,UAAU,GAAE,MAAM,OAAO,CAAC,gBAAgB,CAIxC;;;;;;GAYH;AA0BD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMjE;AAED,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC,GACL,OAAO,CAAC,CAAC,CAAC,CAYZ;AAED,KAAK,gCAAgC,GAAG;IACtC,KAAK,EAAE,cAAc,GAAG,UAAU,GAAG,mBAAmB,CAAC;IACzD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,qBAAqB,CAAC;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAgBF,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,gCAAgC,EAC1C,iBAAiB,EAAE,WAAW,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC,EACpE,wBAAwB,EAAE,MAAM,GAC/B,OAAO,CAIT;AAED,wBAAgB,mCAAmC,CACjD,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,OAAO,GACvB,gCAAgC,CAQlC;AAED,wBAAsB,4BAA4B,CAChD,SAAS,EAAE,MAAM,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAC7D,OAAO,CAAC,gCAAgC,CAAC,CAgB3C;AAED,wBAAsB,8BAA8B,CAAC,CAAC,EACpD,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAA;CAAE,CAAC,CAUlG;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,gCAAgC,EACxC,UAAU,EAAE,MAAM,GACjB,IAAI,CAQN;AAkDD,wBAAgB,gCAAgC,CAAC,OAAO,SAAU,EAChE,OAAO,CAAC,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE;;;EAE7G;AA+ID,wBAAsB,qBAAqB,CAAC,OAAO,GAAE;IACnD,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC;IAChE,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;CACrB;;;;;;;;;GA6BL;AAwVD,wBAAgB,2BAA2B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,UAAU,GAAG,IAAI,CAMnG;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,UAAU,GAAG,IAAI,CAkBlF;AAsDD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACpD,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IACrC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;IAChE,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,QAQA;AAED;2EAC2E;AAC3E,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ7F;AAED,oFAAoF;AACpF,wBAAsB,4BAA4B,CAAC,KAAK,EAAE,kBAAkB,EAC1E,cAAc,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgB7D;AAED,KAAK,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,EAAE,2BAA2B,GAAG,wBAAwB,GACrG,2BAA2B,GAAG,wBAAwB,GAAG,uBAAuB,CAAC,CAAC;AAwNtF,mEAAmE;AACnE,wBAAsB,mCAAmC,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,oBAAoB,EAC9G,cAAc,CAAC,EAAE,yBAAyB;qBAYjB,QAAQ,CAAC,wBAAwB,CAAC;;;;;;;;IAsB5D;AAED,yFAAyF;AACzF,wBAAsB,4BAA4B,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC,CAAC,CAAC,EAChH,WAAW,GAAG,2BAA2B,CAAC,GAAG;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAC;;;;;;IA6C5E;AAED,4FAA4F;AAC5F,wBAAsB,mCAAmC,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC,CAAC,GAC/G;IAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;CAAC;;;;;;IA+ClC;AAED;iFACiF;AACjF,wBAAsB,6BAA6B,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,CAAC,CAAC,EAC7G,aAAa,GAAG,SAAS,GAAG,iBAAiB,CAAC;;;;;;IAwC/C;AAkiBD,wBAAgB,iCAAiC,CAAC,KAAK,EAAE;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;CAChB;;;;;;;;;;;EAqBA;AA6FD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,QAI/F;AA2GD,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,EACxD,0BAA0B,GACxB,2BAA2B,GAC3B,2BAA2B,GAC3B,wBAAwB,CAC3B,CAAC;AAEF,KAAK,4BAA4B,GAAG,MAAM,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAezE,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,UAUA;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EACpC,UAAU,GAAE,4BAAqC,EACjD,OAAO,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAuB,GAC/D,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAqElC;AA6MD,KAAK,sBAAsB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC;AAE/E,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,sBAAsB,CAiBnG;AA0eD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,UAAU,EAAE,GAAG,IAAI,CAW7F;AAED,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,0BAA0B,EAClC,kBAAkB,EAAE,MAAM,EAAE,EAC5B,GAAG,OAAa,GACf,MAAM,CASR;AAQD,wBAAsB,gCAAgC,CACpD,SAAS,EAAE,kBAAkB,EAAE,EAC/B,GAAG,OAAa,GACf,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAgD/B;AAgCD,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,eAAe,EACrB,aAAa,GAAE,CAAC,SAAS,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAgC,oBAI/F;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAyB5G;AAED,wBAAgB,0CAA0C,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAMpG;AAED,wBAAgB,mCAAmC,CACjD,iBAAiB,EAAE,WAAW,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC,EACpE,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAIT;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAUvF;AAu1BD,wBAAsB,iCAAiC,CAAC,KAAK,EAAE,wBAAwB;;;;;;;;;;;;;;;;;GAgFtF;AAiCD,wBAAsB,iCAAiC,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;;;;;;;;;;;;;;GA4D3F;AAghBD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAmE/G;AAmGD,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,gBAAgB,GAAG,qBAAqB,CAAC,CAAC;CAC5E,GAAG,IAAI,CASP;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,EACpD,aAAa,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,GAClD,OAAO,CAET;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,gBAAgB,GAAG,aAAa,CAAC,CAAC;IAC3D,SAAS,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,gBAAgB,GAAG,qBAAqB,CAAC,CAAC;CAC5E,GAAG,IAAI,CAQP;AAED,wBAAsB,6BAA6B,CAAC,KAAK,EAAE;IACzD,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,gBAAgB,CAAC,CAAC;IACtD,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;IACpD,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/H,GAAG,OAAO,CAAC,OAAO,CAAC,CAUnB;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE;IAC3C,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,gBAAgB,CAAC,CAAC;IACtD,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,uBAAuB,CAAC,CAAC;IAC/D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9H,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACrH,oBAGA;AAiUD,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,UAAU,EACpB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,SAAY,UAMjB;AAED,wBAAsB,gCAAgC,CAAC,KAAK,EAAE;IAC5D,QAAQ,EAAE,UAAU,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,mBAoDA;AAED,wBAAsB,oCAAoC,CAAC,KAAK,EAAE;IAChE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBzB;AA0BD,wBAAsB,uCAAuC,CAAC,cAAc,EAAE,MAAM;;;;;GAoCnF;AAED,KAAK,mBAAmB,GAAG,CACzB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,KAC9D,OAAO,CAAC;IAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC,CAAC;AAE3C,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B;;;GASA;AAED,wBAAsB,iCAAiC,CAAC,KAAK,EAAE;IAC7D,QAAQ,EAAE,UAAU,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;;;;;;;;;;;;GA+DA;AAED,KAAK,yBAAyB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAC5E,KAAK,wBAAwB,GAAG,OAAO,iCAAiC,CAAC;AAEzE,wBAAsB,2CAA2C,CAAC,KAAK,EAAE;IACvE,SAAS,EAAE,yBAAyB,EAAE,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,wBAAwB,CAAC;CACpC;;;;;;;;;;;;;;;kBAGmC,MAAM;cAAQ,6BAA6B;iBAAW,MAAM;;GAoB/F;AAED,wBAAsB,kCAAkC,CAAC,KAAK,EAAE;IAC9D,QAAQ,EAAE,UAAU,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,CACf,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;KAAE,KACjD,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1C,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACxC;;;;;;;;;;;;;;;;;;;;GAsIA;AAED,wBAAsB,iCAAiC,CAAC,KAAK,EAAE;IAC7D,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B;;;;;;;;;;;;GA2DA;AAED,KAAK,iBAAiB,GAAG,CACvB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;CAAE,KACjD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,wBAAsB,iBAAiB,CAAC,KAAK,GAAE;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,iBAAiB,CAAC;CACxB,iBAYL;AAKD,wBAAsB,sCAAsC,CAAC,KAAK,GAAE;IAClE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;CACV;;;;GA8BL;AAED,KAAK,sBAAsB,GAAG,CAC5B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,KAC9D,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC,CAAC;AAe1C,wBAAsB,wBAAwB,CAAC,KAAK,EAAE;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC;;;;;;;;;;;;GAqEA;AAED,wBAAsB,8BAA8B,CAAC,KAAK,EAAE;IAC1D,MAAM,EAAE,WAAW,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;;;;;;;;;;;;GAsBA;AAcD,wBAAsB,2BAA2B,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,GAAE,MAAM,IAAe,oBAmC9H;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,WAAW;;;EAiB7D;AAED,wBAAsB,mDAAmD,CAAC,KAAK,EAAE;IAC/E,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,GAAG,OAAO,CAAC,MAAM,CAAC,CAQlB;AAED,wBAAsB,sDAAsD,CAAC,KAAK,EAAE;IAClF,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,GAAG,OAAO,CAAC,MAAM,CAAC,CAElB;AAED,wBAAsB,8BAA8B,CAClD,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,iBAAiB;;;;;GAyBhC;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAaxJ;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAC9D,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CACjD;;;;;;;YAnB2F,MAAM;gBAAU,OAAO;4BAAsB,OAAO;;;;;;;;;;;;;;UAqK/I;AA4HD,wBAAsB,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBtH;AAqhBD,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAsXzD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -41,6 +41,7 @@ import { isIsolatedDeviceSession, runInIsolatedDeviceSession } from './connectio
41
41
  import { resolveBootstrapRepositoryWorkspace } from './bootstrapRepositorySelection.js';
42
42
  import { receiveRepositoryPackageDelivery } from './repositoryPackageDelivery.js';
43
43
  import { selectInstalledRepositoryKnowledge } from './repositoryInstalledKnowledge.js';
44
+ import { collectRepositorySourceRestoration } from './repositorySourceRestoration.js';
44
45
  import { planRepositorySourceResolution, reconcileRepositorySourceSnapshot } from './repositorySourceReconciliation.js';
45
46
  import { fetchPublishedRepositorySource } from './repositorySourceInventoryClient.js';
46
47
  import { activateRepositorySourceResolution, readActiveRepositorySourceResolution, readRepositorySourceResolutionPlan, saveRepositorySourceResolutionPlan } from './repositorySourceResolutionStore.js';
@@ -48,7 +49,7 @@ import { prepareProvidersIndependently, startSkillPreparationPump } from './skil
48
49
  import { serializeSkillPreparationRecord } from './skillPreparationRecord.js';
49
50
  import { skillPreparationScopeRoot, withSkillPreparationTransaction } from './skillPreparationTransaction.js';
50
51
  import { publishSkillPreparationCache, takeSkillPreparationCache } from './skillPreparationCache.js';
51
- import { adoptRepositoryCandidate, pollRepositoryCandidate, synchronizeRepositoryCandidate } from './repositoryCandidateSync.js';
52
+ import { adoptRepositoryCandidate, checkpointRepositoryRestorationCandidate, checkpointRepositoryRestorationFence, checkpointRepositoryRestorationRegistry, fenceRepositoryRestorationUpload, readRepositoryRestorationAttempt, pollRepositoryCandidate, recoverRepositoryRestorationCandidate, synchronizeRepositoryCandidate } from './repositoryCandidateSync.js';
52
53
  import { registerRepositoryRoleMetadata, discoverRepositoryRoleMetadata } from './repositoryRoleMetadata.js';
53
54
  import { askRepositoryRoleQuestion, readRepositoryRoleReply } from './repositoryRoleQuestion.js';
54
55
  import { deriveRepositoryRole } from './repositoryRoleDerivation.js';
@@ -99,7 +100,7 @@ import { assertCodexSetupExecutionLease } from './codexSetupAdmission.js';
99
100
  import { parseLocalCodexSetupReadiness } from '@dharma-ai-labs/agent-fabric-local-vault/setup-readiness';
100
101
  import { writeBootstrapHostJson, writeBootstrapHostText } from './bootstrapHostFiles.js';
101
102
  export { openCooperativeInboxSession } from './cooperativeInboxSession.js';
102
- const VERSION = '0.2.185';
103
+ const VERSION = '0.2.187';
103
104
  const USAGE = CLI_USAGE;
104
105
  const execFileAsync = promisify(execFile);
105
106
  const LOCAL_PROVIDER_IDS = ['codex', 'claude', 'agy', 'hermes'];
@@ -1594,13 +1595,14 @@ async function saveRegistry(items) {
1594
1595
  throw new Error('workspace_registry_write_failed');
1595
1596
  }
1596
1597
  }
1597
- async function saveWorkspaceRecord(entry) {
1598
+ async function saveWorkspaceRecord(entry, guard) {
1598
1599
  const scope = currentBootstrapHostScope();
1599
1600
  const step = (operation) => scope ? scope.step(operation) : operation();
1600
1601
  let release;
1601
1602
  try {
1602
1603
  await scope?.assert();
1603
- const snapshot = scope ? structuredClone(entry) : entry;
1604
+ let snapshot = structuredClone(entry);
1605
+ const expected = guard ? structuredClone(guard.expected) : undefined;
1604
1606
  await step(async () => {
1605
1607
  release = await acquirePidLock(`${workspaceRegistryPath()}.mutation.lock`, 10_000, 'Workspace registry is busy; preserve it for recovery.');
1606
1608
  });
@@ -1612,7 +1614,16 @@ async function saveWorkspaceRecord(entry) {
1612
1614
  const items = JSON.parse(value);
1613
1615
  if (!Array.isArray(items))
1614
1616
  throw new Error('Workspace registry is invalid; preserve it for recovery.');
1617
+ if (expected && canonicalize(items.find(item => item.workspaceId === snapshot.workspaceId) ?? null) !== canonicalize(expected)) {
1618
+ throw new Error('workspace_registry_compare_and_swap_failed');
1619
+ }
1620
+ if (guard?.beforeSave)
1621
+ await step(guard.beforeSave);
1622
+ if (guard?.preparePackage)
1623
+ snapshot = { ...snapshot, repositoryPackage: await step(guard.preparePackage) };
1615
1624
  await saveRegistry([...items.filter(item => item.workspaceId !== snapshot.workspaceId), snapshot]);
1625
+ if (guard?.afterSave)
1626
+ await step(() => guard.afterSave(snapshot));
1616
1627
  }
1617
1628
  catch (error) {
1618
1629
  if (!scope)
@@ -5010,6 +5021,21 @@ async function namedSessionCommand(action, flags) {
5010
5021
  if (action === 'work')
5011
5022
  return namedSessionRequest(dharmaHome(), name, { action: 'work',
5012
5023
  workId: String(flags.get('work-id') || randomUUID()), prompt: required(flags, 'prompt') });
5024
+ if (action === 'audit') {
5025
+ if (!existing?.enabled || [...flags.keys()].some(key => !['name', 'workspace-id', 'work-id'].includes(key))) {
5026
+ throw new Error('named_session_audit_unavailable');
5027
+ }
5028
+ const workId = required(flags, 'work-id');
5029
+ if (!/^[A-Za-z0-9_-]{1,128}$(?![\s\S])/.test(workId))
5030
+ throw new Error('named_session_work_invalid');
5031
+ const result = await namedSessionRequest(dharmaHome(), name, { action: 'audit', workId });
5032
+ if (!(await validateContract(resolve(dirname(fileURLToPath(import.meta.url)), 'schemas'), 'https://schemas.dharma-ai.io/named-session-native-audit/v1', result)).ok
5033
+ || result.bindingId !== existing.bindingId || result.workId !== workId
5034
+ || Object.entries(existing.identity).some(([key, value]) => result[key] !== value)) {
5035
+ throw new Error('named_session_audit_scope_mismatch');
5036
+ }
5037
+ return result;
5038
+ }
5013
5039
  if (action === 'stop') {
5014
5040
  if (!flags.has('apply'))
5015
5041
  return { ok: true, planned: true, name, action: 'stop' };
@@ -5788,6 +5814,254 @@ async function repositoryInstallerRecoveryCommand(flags) {
5788
5814
  return { ok: true, dryRun: !recovery.applied, serverMutation: false, recovery,
5789
5815
  nextAction: 'Resume pinned onboarding; recovery is not signed skill installation or activation.' };
5790
5816
  }
5817
+ export async function repositoryRestoreCommand(flags) {
5818
+ flags = new Map(flags);
5819
+ const allowed = new Set(['workspace-id', 'dry-run', 'apply', 'plan-hash', 'fence-upload', 'json']);
5820
+ if ([...flags].some(([key, value]) => !allowed.has(key)
5821
+ || (['workspace-id', 'plan-hash'].includes(key) ? typeof value !== 'string' || !value : value !== true))
5822
+ || flags.has('apply') === flags.has('dry-run') || flags.has('apply') !== flags.has('plan-hash')
5823
+ || flags.has('fence-upload') && !flags.has('apply')) {
5824
+ throw new Error('repository_source_restoration_option_invalid');
5825
+ }
5826
+ const workspaceId = required(flags, 'workspace-id'), apply = flags.has('apply');
5827
+ const config = await readDeviceConfig();
5828
+ const workspace = (await registry()).find(row => row.workspaceId === workspaceId && row.organizationId === config?.organizationId);
5829
+ if (!config || !workspace?.repositoryBindingId || !workspace.repositoryAgentId
5830
+ || workspace.accessMode === 'knowledge_only' || !workspace.repositoryPackage
5831
+ || workspace.repositoryPackage.generation < 1 || !apply && workspace.repositoryPackage.pendingLocalOperationId) {
5832
+ throw new Error('repository_source_restoration_workspace_not_authorized');
5833
+ }
5834
+ // An explicit recovery must not race the relay's candidate outbox or silently
5835
+ // undo containment. The operator uses the normal owned relay stop/start flow.
5836
+ if (apply && (await relaySupervisorProcessState() !== 'stopped' || await relayProcessState() !== 'stopped')) {
5837
+ throw new Error('repository_source_restoration_requires_stopped_relay');
5838
+ }
5839
+ const policy = await loadVerifiedWorkspacePolicy(resolve(workspace.path, '.dharma', 'approved-policy.json'), workspaceId);
5840
+ if (!policy.serverAuthorization)
5841
+ throw new Error('repository_source_restoration_workspace_not_authorized');
5842
+ await assertWorkspaceAuthorizationCurrent(workspaceId, policy.serverAuthorization);
5843
+ const enrollment = await loadDeviceEnrollmentAnchor({ config, hostScope: currentBootstrapHostScope(), readOnly: !apply });
5844
+ const fabric = await AgentFabricClient.open({ configPath: configPath(), statePath: protocolStatePath(),
5845
+ hostScope: currentBootstrapHostScope(), readOnly: !apply });
5846
+ await fabric.openSession(VERSION);
5847
+ const scope = { organizationId: workspace.organizationId, workspaceId,
5848
+ repositoryBindingId: workspace.repositoryBindingId, repositoryAgentId: workspace.repositoryAgentId };
5849
+ if (apply) {
5850
+ const authorization = validateRepositorySourceAuthorization(await fetchRepositorySourceAuthorization(fabric, scope), scope, new Date());
5851
+ if (!authorization.policy.automaticValidatedPublication)
5852
+ throw new Error('repository_source_restoration_publication_denied');
5853
+ if (flags.has('fence-upload')) {
5854
+ if (workspace.repositoryPackage.pendingLocalOperationId)
5855
+ throw new Error('repository_source_restoration_workspace_not_authorized');
5856
+ let fenced;
5857
+ const assertFenceAuthority = async () => {
5858
+ const current = validateRepositorySourceAuthorization(await fetchRepositorySourceAuthorization(fabric, scope), scope, new Date());
5859
+ if (canonicalize(current) !== canonicalize(authorization))
5860
+ throw new Error('repository_source_restoration_policy_changed');
5861
+ await assertWorkspaceAuthorizationCurrent(workspaceId, policy.serverAuthorization);
5862
+ if (await relaySupervisorProcessState() !== 'stopped' || await relayProcessState() !== 'stopped') {
5863
+ throw new Error('repository_source_restoration_requires_stopped_relay');
5864
+ }
5865
+ };
5866
+ await saveWorkspaceRecord(workspace, { expected: workspace, beforeSave: async () => {
5867
+ await assertFenceAuthority();
5868
+ fenced = await fenceRepositoryRestorationUpload({ transport: fabric, scope,
5869
+ outboxRoot: resolve(dharmaHome(), 'relay', 'repository-candidates'), planHash: required(flags, 'plan-hash'),
5870
+ policyGenerationId: authorization.generationId,
5871
+ expectedPreviousOperationId: workspace.repositoryPackage.operationId ?? null });
5872
+ // Persist acknowledged containment even if source authority rolls over
5873
+ // during the request. This receipt cannot authorize another upload.
5874
+ if (await relaySupervisorProcessState() !== 'stopped' || await relayProcessState() !== 'stopped') {
5875
+ throw new Error('repository_source_restoration_requires_stopped_relay');
5876
+ }
5877
+ if (fenced.fence)
5878
+ await checkpointRepositoryRestorationFence({ scope, fenced,
5879
+ outboxRoot: resolve(dharmaHome(), 'relay', 'repository-candidates') });
5880
+ await assertFenceAuthority();
5881
+ } });
5882
+ if (!fenced)
5883
+ throw new Error('repository_source_restoration_fence_unavailable');
5884
+ return { ok: true, stage: fenced.fence ? 'repository_restoration_upload_fenced' : 'repository_restoration_admission_found',
5885
+ fence: fenced.fence, candidate: fenced.candidate, localMutation: true, serverSourceMutation: false,
5886
+ serverOperationFenced: Boolean(fenced.fence), activated: false,
5887
+ nextAction: fenced.fence ? 'Obtain a fresh restoration dry-run plan before applying; retain the terminal fence archive.'
5888
+ : 'Retry the original plan without --fence-upload to reconcile the admitted candidate; no operation was cancelled.' };
5889
+ }
5890
+ const recovered = await recoverRepositoryRestorationCandidate({ transport: fabric, scope,
5891
+ outboxRoot: resolve(dharmaHome(), 'relay', 'repository-candidates'), planHash: required(flags, 'plan-hash') });
5892
+ if (recovered) {
5893
+ const currentOperationId = workspace.repositoryPackage.operationId ?? null;
5894
+ if (currentOperationId !== recovered.previousOperationId && currentOperationId !== recovered.candidate.operationId) {
5895
+ throw new Error('repository_source_restoration_checkpoint_registry_changed');
5896
+ }
5897
+ if (workspace.repositoryPackage.pendingLocalOperationId
5898
+ && workspace.repositoryPackage.pendingLocalOperationId !== recovered.candidate.operationId) {
5899
+ throw new Error('repository_source_restoration_checkpoint_registry_changed');
5900
+ }
5901
+ if (recovered.candidate.state === 'published' && recovered.candidate.releaseId === recovered.priorReleaseId) {
5902
+ throw new Error('repository_source_restoration_archived_release_reused');
5903
+ }
5904
+ let admissionAuthorization;
5905
+ for (const hash of new Set([recovered.candidate.snapshotHash, recovered.localSnapshotHash,
5906
+ ...(recovered.baselineSnapshotHash ? [recovered.baselineSnapshotHash] : [])])) {
5907
+ const snapshot = await readRepositoryPackageSnapshot(workspace.path, hash);
5908
+ if (!snapshot || snapshot.manifest.organizationId !== scope.organizationId || snapshot.manifest.workspaceId !== workspaceId
5909
+ || snapshot.manifest.knowledge?.repositoryAgentId !== scope.repositoryAgentId
5910
+ || hash === recovered.candidate.snapshotHash && sha256(canonicalize(snapshot.manifest)) !== recovered.sourceManifestHash) {
5911
+ throw new Error('repository_source_restoration_checkpoint_snapshot_invalid');
5912
+ }
5913
+ // Historical policy may predate admission, but every retained snapshot
5914
+ // must belong to this exact repository binding, including the baseline.
5915
+ const historical = validateRepositorySourceAuthorization(snapshot.manifest.sourceAuthorization, scope);
5916
+ if (hash === recovered.localSnapshotHash || hash === recovered.candidate.snapshotHash) {
5917
+ if (admissionAuthorization && canonicalize(historical) !== canonicalize(admissionAuthorization)) {
5918
+ throw new Error('repository_source_restoration_checkpoint_snapshot_invalid');
5919
+ }
5920
+ admissionAuthorization = historical;
5921
+ }
5922
+ }
5923
+ if (!admissionAuthorization)
5924
+ throw new Error('repository_source_restoration_checkpoint_snapshot_invalid');
5925
+ const currentAuthorization = validateRepositorySourceAuthorization(await fetchRepositorySourceAuthorization(fabric, scope), scope, new Date());
5926
+ if (canonicalize(currentAuthorization) !== canonicalize(authorization))
5927
+ throw new Error('repository_source_restoration_policy_changed');
5928
+ if (await relaySupervisorProcessState() !== 'stopped' || await relayProcessState() !== 'stopped') {
5929
+ throw new Error('repository_source_restoration_requires_stopped_relay');
5930
+ }
5931
+ await assertWorkspaceAuthorizationCurrent(workspaceId, policy.serverAuthorization);
5932
+ const candidate = recovered.candidate;
5933
+ const pending = candidate.state === 'accepted' || candidate.state === 'processing';
5934
+ await saveWorkspaceRecord({ ...workspace, repositoryPackage: { ...workspace.repositoryPackage,
5935
+ ...candidate, sourceManifestHash: recovered.sourceManifestHash, consolidationMode: 'repository_update',
5936
+ sourcePolicyGenerationId: admissionAuthorization.generationId,
5937
+ localBaselineSnapshotHash: candidate.state === 'blocked' ? recovered.baselineSnapshotHash : recovered.localSnapshotHash,
5938
+ publishedLocalSnapshotHash: candidate.state === 'published' ? recovered.localSnapshotHash : recovered.baselineSnapshotHash,
5939
+ pendingLocalSnapshotHash: pending ? recovered.localSnapshotHash : null,
5940
+ pendingLocalOperationId: pending ? candidate.operationId : null } }, { expected: workspace,
5941
+ beforeSave: async () => {
5942
+ const lockedAuthorization = validateRepositorySourceAuthorization(await fetchRepositorySourceAuthorization(fabric, scope), scope, new Date());
5943
+ if (canonicalize(lockedAuthorization) !== canonicalize(authorization))
5944
+ throw new Error('repository_source_restoration_policy_changed');
5945
+ await assertWorkspaceAuthorizationCurrent(workspaceId, policy.serverAuthorization);
5946
+ if (await relaySupervisorProcessState() !== 'stopped' || await relayProcessState() !== 'stopped') {
5947
+ throw new Error('repository_source_restoration_requires_stopped_relay');
5948
+ }
5949
+ await checkpointRepositoryRestorationCandidate({ scope, recovered,
5950
+ outboxRoot: resolve(dharmaHome(), 'relay', 'repository-candidates') });
5951
+ },
5952
+ afterSave: saved => checkpointRepositoryRestorationRegistry({ scope, repositoryPackage: saved.repositoryPackage,
5953
+ outboxRoot: resolve(dharmaHome(), 'relay', 'repository-candidates') }) });
5954
+ return { ok: candidate.state !== 'blocked', stage: 'repository_restoration_candidate_recovered',
5955
+ planHash: recovered.planHash, candidate, priorReleaseId: recovered.priorReleaseId,
5956
+ localMutation: true, serverSourceMutation: false, activated: false,
5957
+ nextAction: 'Resume the owned relay; recovery only reconciled the existing candidate receipt.' };
5958
+ }
5959
+ }
5960
+ if (workspace.repositoryPackage.pendingLocalOperationId)
5961
+ throw new Error('repository_source_restoration_workspace_not_authorized');
5962
+ if (!['published', 'blocked'].includes(workspace.repositoryPackage.state)) {
5963
+ throw new Error('repository_source_restoration_publication_pending');
5964
+ }
5965
+ const baseline = repositorySourceComparisonBaseline(workspace.repositoryPackage, workspace.repositoryPackage.publishedLocalSnapshotHash ?? null);
5966
+ const restorationAttempt = await readRepositoryRestorationAttempt({ scope,
5967
+ outboxRoot: resolve(dharmaHome(), 'relay', 'repository-candidates') });
5968
+ const collected = await collectRepositorySourceRestoration({ ...scope, workspace: workspace.path, transport: fabric,
5969
+ restorationAttempt,
5970
+ serverPublicKey: createPublicKey({ key: { kty: 'OKP', crv: 'Ed25519', x: enrollment.serverPublicKeyEd25519 }, format: 'jwk' }),
5971
+ loadPublishedLocalBaseline: () => baseline ? readRepositoryPackageSnapshot(workspace.path, baseline) : Promise.resolve(null),
5972
+ loadResolution: () => readActiveRepositorySourceResolution(workspace.path) });
5973
+ const planHash = sha256(canonicalize({ schema: 'dharma.repository-restoration-plan/v1', ...scope,
5974
+ priorReleaseId: collected.priorReleaseId, priorGeneration: collected.priorGeneration,
5975
+ headCandidateId: collected.headCandidateId, headSnapshotHash: collected.headSnapshotHash, operationId: collected.operationId,
5976
+ expectedLatestSourceFingerprint: collected.expectedLatestSourceFingerprint,
5977
+ localSnapshotHash: collected.local.manifest.snapshotHash, snapshotHash: collected.snapshot.manifest.snapshotHash }));
5978
+ if (!apply)
5979
+ return { ok: true, stage: 'repository_restoration_planned', dryRun: true, planHash,
5980
+ priorReleaseId: collected.priorReleaseId, priorGeneration: collected.priorGeneration,
5981
+ headCandidateId: collected.headCandidateId, operationId: collected.operationId,
5982
+ expectedLatestSourceFingerprint: collected.expectedLatestSourceFingerprint,
5983
+ snapshotHash: collected.snapshot.manifest.snapshotHash, localMutation: false, serverSourceMutation: false,
5984
+ protocolSessionCreated: true, activated: false, published: false };
5985
+ if (required(flags, 'plan-hash') !== planHash)
5986
+ throw new Error('repository_source_restoration_plan_changed');
5987
+ let candidate;
5988
+ await saveWorkspaceRecord(workspace, { expected: workspace, preparePackage: async () => {
5989
+ await assertWorkspaceAuthorizationCurrent(workspaceId, policy.serverAuthorization);
5990
+ if (await relaySupervisorProcessState() !== 'stopped' || await relayProcessState() !== 'stopped') {
5991
+ throw new Error('repository_source_restoration_requires_stopped_relay');
5992
+ }
5993
+ await collected.assertCurrent();
5994
+ if (await relaySupervisorProcessState() !== 'stopped' || await relayProcessState() !== 'stopped') {
5995
+ throw new Error('repository_source_restoration_requires_stopped_relay');
5996
+ }
5997
+ const finalAuthorization = validateRepositorySourceAuthorization(await fetchRepositorySourceAuthorization(fabric, scope), scope, new Date());
5998
+ if (canonicalize(finalAuthorization) !== canonicalize(collected.snapshot.manifest.sourceAuthorization)) {
5999
+ throw new Error('repository_source_restoration_policy_changed');
6000
+ }
6001
+ await assertWorkspaceAuthorizationCurrent(workspaceId, policy.serverAuthorization);
6002
+ const sourcePolicyGenerationId = collected.snapshot.manifest.sourceAuthorization?.generationId;
6003
+ if (!sourcePolicyGenerationId)
6004
+ throw new Error('repository_source_restoration_policy_changed');
6005
+ if (await relaySupervisorProcessState() !== 'stopped' || await relayProcessState() !== 'stopped') {
6006
+ throw new Error('repository_source_restoration_requires_stopped_relay');
6007
+ }
6008
+ await collected.assertLocalCurrent();
6009
+ await collected.assertHeadCurrent();
6010
+ const postScanAuthorization = validateRepositorySourceAuthorization(await fetchRepositorySourceAuthorization(fabric, scope), scope, new Date());
6011
+ if (canonicalize(postScanAuthorization) !== canonicalize(collected.snapshot.manifest.sourceAuthorization)) {
6012
+ throw new Error('repository_source_restoration_policy_changed');
6013
+ }
6014
+ await assertWorkspaceAuthorizationCurrent(workspaceId, policy.serverAuthorization);
6015
+ if (await relaySupervisorProcessState() !== 'stopped' || await relayProcessState() !== 'stopped') {
6016
+ throw new Error('repository_source_restoration_requires_stopped_relay');
6017
+ }
6018
+ // Network head/authority waits can outlive the preceding local scan.
6019
+ await collected.assertLocalCurrent();
6020
+ // These are bounded observations, not a filesystem/server transaction.
6021
+ // Later edits require a new plan; never replace the immutable plan bytes.
6022
+ await collected.assertHeadCurrent();
6023
+ const admissionAuthorization = validateRepositorySourceAuthorization(await fetchRepositorySourceAuthorization(fabric, scope), scope, new Date());
6024
+ if (canonicalize(admissionAuthorization) !== canonicalize(collected.snapshot.manifest.sourceAuthorization)) {
6025
+ throw new Error('repository_source_restoration_policy_changed');
6026
+ }
6027
+ await assertWorkspaceAuthorizationCurrent(workspaceId, policy.serverAuthorization);
6028
+ if (await relaySupervisorProcessState() !== 'stopped' || await relayProcessState() !== 'stopped') {
6029
+ throw new Error('repository_source_restoration_requires_stopped_relay');
6030
+ }
6031
+ await writeRepositoryPackageSnapshot({ workspace: workspace.path, snapshot: collected.local, candidateOnly: true });
6032
+ if (collected.snapshot.manifest.snapshotHash !== collected.local.manifest.snapshotHash) {
6033
+ await writeRepositoryPackageSnapshot({ workspace: workspace.path, snapshot: collected.snapshot, candidateOnly: true });
6034
+ }
6035
+ candidate = await synchronizeRepositoryCandidate({ transport: fabric,
6036
+ outboxRoot: resolve(dharmaHome(), 'relay', 'repository-candidates'), scope,
6037
+ snapshot: collected.snapshot, initialRepository: false,
6038
+ expectedLatestSourceFingerprint: collected.expectedLatestSourceFingerprint,
6039
+ restoration: { planHash, localSnapshotHash: collected.local.manifest.snapshotHash,
6040
+ baselineSnapshotHash: baseline, previousOperationId: workspace.repositoryPackage.operationId ?? null,
6041
+ priorReleaseId: collected.priorReleaseId, headCandidateId: collected.headCandidateId,
6042
+ ...(restorationAttempt ? { attemptId: restorationAttempt } : {}) } });
6043
+ if (await relaySupervisorProcessState() !== 'stopped' || await relayProcessState() !== 'stopped') {
6044
+ throw new Error('repository_source_restoration_requires_stopped_relay');
6045
+ }
6046
+ if (candidate.state === 'published' && candidate.releaseId === collected.priorReleaseId) {
6047
+ throw new Error('repository_source_restoration_archived_release_reused');
6048
+ }
6049
+ const pending = candidate.state === 'accepted' || candidate.state === 'processing';
6050
+ return { ...workspace.repositoryPackage,
6051
+ ...candidate, sourceManifestHash: sha256(canonicalize(collected.snapshot.manifest)), consolidationMode: 'repository_update',
6052
+ sourcePolicyGenerationId,
6053
+ localBaselineSnapshotHash: candidate.state === 'blocked' ? baseline : collected.local.manifest.snapshotHash,
6054
+ publishedLocalSnapshotHash: candidate.state === 'published' ? collected.local.manifest.snapshotHash : baseline,
6055
+ pendingLocalSnapshotHash: pending ? collected.local.manifest.snapshotHash : null,
6056
+ pendingLocalOperationId: pending ? candidate.operationId : null };
6057
+ }, afterSave: saved => checkpointRepositoryRestorationRegistry({ scope, repositoryPackage: saved.repositoryPackage,
6058
+ outboxRoot: resolve(dharmaHome(), 'relay', 'repository-candidates') }) });
6059
+ if (!candidate)
6060
+ throw new Error('repository_source_restoration_admission_unavailable');
6061
+ return { ok: candidate.state !== 'blocked', stage: 'repository_restoration_candidate_submitted', planHash, candidate,
6062
+ priorReleaseId: collected.priorReleaseId, localMutation: true, serverSourceMutation: true, activated: false,
6063
+ nextAction: 'Resume the owned relay; evaluation, signing, delivery and activation must pass independently.' };
6064
+ }
5791
6065
  export async function repositorySourceResolutionCommand(flags) {
5792
6066
  flags = new Map(flags);
5793
6067
  const allowed = new Set(['workspace-id', 'dry-run', 'prepare', 'apply', 'plan-hash', 'choose-reviewed-local', 'json']);
@@ -6053,6 +6327,8 @@ async function onboard(flags) {
6053
6327
  snapshotHash: canonicalPackage.snapshotHash, state: canonicalPackage.state,
6054
6328
  releaseId: canonicalPackage.releaseId,
6055
6329
  } }));
6330
+ const beforePackageSave = registered;
6331
+ const restorationRegistryBaseline = candidate.restorationRegistryBaseline;
6056
6332
  registered = { ...registered, repositoryPackage: {
6057
6333
  state: candidate.state, candidateId: candidate.candidateId, operationId: candidate.operationId,
6058
6334
  snapshotHash: candidate.snapshotHash,
@@ -6060,7 +6336,7 @@ async function onboard(flags) {
6060
6336
  ? sha256(canonicalize(initialSnapshot.manifest)) : canonicalPackage.sourceManifestHash,
6061
6337
  releaseId: candidate.releaseId,
6062
6338
  generation: candidate.state === 'published' ? Math.max(1, canonicalPackage.generation) : canonicalPackage.generation,
6063
- consolidationMode: canonicalPackage.generation === 0 ? 'initial_repository'
6339
+ consolidationMode: restorationRegistryBaseline ? 'repository_update' : canonicalPackage.generation === 0 ? 'initial_repository'
6064
6340
  : refreshPolicy ? 'repository_update' : canonicalPackage.consolidationMode,
6065
6341
  sourcePolicyGenerationId: submitPackage ? sourceAuthorization.generationId : canonicalPackage.sourcePolicyGenerationId,
6066
6342
  localBaselineSnapshotHash: initialSnapshot.manifest.snapshotHash,
@@ -6073,8 +6349,13 @@ async function onboard(flags) {
6073
6349
  pendingLocalOperationId: submitPackage
6074
6350
  ? candidate.state === 'accepted' || candidate.state === 'processing'
6075
6351
  ? candidate.operationId : null : null,
6352
+ ...restorationRegistryBaseline,
6076
6353
  } };
6077
- await saveWorkspaceRecord(registered);
6354
+ await saveWorkspaceRecord(registered, restorationRegistryBaseline ? {
6355
+ expected: beforePackageSave,
6356
+ afterSave: saved => checkpointRepositoryRestorationRegistry({ outboxRoot, scope: candidateScope,
6357
+ repositoryPackage: saved.repositoryPackage }),
6358
+ } : undefined);
6078
6359
  const providers = await staged('role_registration', async () => receiptAwareProviderCapabilities(await Promise.all(selectedProviderAdapters(providerIds).map((adapter) => adapter.capability()))));
6079
6360
  const roleRequested = ['role-name', 'question-categories', 'role-description'].some(key => flags.has(key));
6080
6361
  if (roleRequested && !['role-name', 'question-categories', 'role-description'].every(key => flags.has(key))) {
@@ -6138,7 +6419,8 @@ async function onboard(flags) {
6138
6419
  writePaths: generatedPolicy.tasks.writePaths,
6139
6420
  },
6140
6421
  repositorySkill: installed,
6141
- repositoryCandidate: candidate,
6422
+ repositoryCandidate: { candidateId: candidate.candidateId, operationId: candidate.operationId,
6423
+ snapshotHash: candidate.snapshotHash, state: candidate.state, releaseId: candidate.releaseId },
6142
6424
  firstLearningEvidence: {
6143
6425
  discovered: discoveredTrajectories,
6144
6426
  disclosureReady,
@@ -8304,15 +8586,26 @@ async function relayWorkspaceLoop(flags, signal, serialized) {
8304
8586
  }
8305
8587
  const baseline = advanceRepositorySourceBaseline(canonicalWorkspace.repositoryPackage, current);
8306
8588
  const invalidateSourceWatcher = repositorySourcePollInvalidatesWatcher(canonicalWorkspace.repositoryPackage, current);
8307
- canonicalWorkspace = { ...canonicalWorkspace, repositoryPackage: { ...canonicalWorkspace.repositoryPackage,
8589
+ const previousWorkspace = canonicalWorkspace;
8590
+ const updatedWorkspace = { ...canonicalWorkspace, repositoryPackage: { ...canonicalWorkspace.repositoryPackage,
8308
8591
  state: current.state, candidateId: current.candidateId, operationId: current.operationId,
8309
8592
  snapshotHash: current.snapshotHash, releaseId: current.releaseId,
8310
8593
  ...baseline,
8311
8594
  generation: current.state === 'published' ? Math.max(1, canonicalWorkspace.repositoryPackage.generation) : canonicalWorkspace.repositoryPackage.generation } };
8312
- publishedLocalSnapshotHash = baseline.publishedLocalSnapshotHash;
8313
- if (invalidateSourceWatcher)
8314
- repositorySourceWatcher.invalidate();
8315
- await saveWorkspaceRecord(canonicalWorkspace);
8595
+ await saveWorkspaceRecord(updatedWorkspace, { expected: previousWorkspace,
8596
+ afterSave: async (saved) => {
8597
+ // The registry is committed even if the following marker fails.
8598
+ // Keep the next poll's CAS anchored to that saved state.
8599
+ canonicalWorkspace = saved;
8600
+ publishedLocalSnapshotHash = baseline.publishedLocalSnapshotHash;
8601
+ if (invalidateSourceWatcher)
8602
+ repositorySourceWatcher.invalidate();
8603
+ await checkpointRepositoryRestorationRegistry({
8604
+ scope: { organizationId: saved.organizationId, workspaceId: saved.workspaceId,
8605
+ repositoryBindingId: saved.repositoryBindingId, repositoryAgentId: saved.repositoryAgentId },
8606
+ repositoryPackage: saved.repositoryPackage, outboxRoot: resolve(dharmaHome(), 'relay', 'repository-candidates')
8607
+ });
8608
+ } });
8316
8609
  }
8317
8610
  }
8318
8611
  catch {
@@ -8721,6 +9014,12 @@ export async function run(argv) {
8721
9014
  }
8722
9015
  return repositorySourceResolutionCommand(flags);
8723
9016
  }
9017
+ if (command === 'repositories' && subcommand === 'restore') {
9018
+ if (positional.length !== 2 || [...repeated.values()].some(values => values.length !== 1)) {
9019
+ throw new Error('repository_source_restoration_option_invalid');
9020
+ }
9021
+ return repositoryRestoreCommand(flags);
9022
+ }
8724
9023
  if (command === 'repositories' && ['role-register', 'role-discover', 'ask', 'reply'].includes(String(subcommand))) {
8725
9024
  const action = subcommand === 'role-register' ? 'register' : subcommand === 'role-discover' ? 'discover' : subcommand;
8726
9025
  return repositoryRoleCommand(action, flags);