@dharma-ai-labs/agent-fabric 0.2.208 → 0.2.210

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 (120) hide show
  1. package/dist/bin.js +2 -2
  2. package/dist/bin.js.map +1 -1
  3. package/dist/bootstrapHostScope.test.js +1 -1
  4. package/dist/bootstrapHostScope.test.js.map +1 -1
  5. package/dist/bootstrapProcessCaller.test.js +1 -0
  6. package/dist/bootstrapProcessCaller.test.js.map +1 -1
  7. package/dist/bootstrapVaultScope.test.js +25 -1
  8. package/dist/bootstrapVaultScope.test.js.map +1 -1
  9. package/dist/codexBoundSession.d.ts +59 -0
  10. package/dist/codexBoundSession.d.ts.map +1 -1
  11. package/dist/codexBoundSession.js +140 -1
  12. package/dist/codexBoundSession.js.map +1 -1
  13. package/dist/codexInboxSession.d.ts +1 -1
  14. package/dist/codexInboxSession.d.ts.map +1 -1
  15. package/dist/codexRecoveryController.test.d.ts +2 -0
  16. package/dist/codexRecoveryController.test.d.ts.map +1 -0
  17. package/dist/codexRecoveryController.test.js +295 -0
  18. package/dist/codexRecoveryController.test.js.map +1 -0
  19. package/dist/codexScopedDispatch.test.js +2 -1
  20. package/dist/codexScopedDispatch.test.js.map +1 -1
  21. package/dist/codexSetupChildProvider.test.js +20 -0
  22. package/dist/codexSetupChildProvider.test.js.map +1 -1
  23. package/dist/codexSetupNativeHost.test.js +2 -1
  24. package/dist/codexSetupNativeHost.test.js.map +1 -1
  25. package/dist/codexSetupSessionCaller.test.js +1 -0
  26. package/dist/codexSetupSessionCaller.test.js.map +1 -1
  27. package/dist/codexSigningRecoveryNativeHost.d.ts +50 -0
  28. package/dist/codexSigningRecoveryNativeHost.d.ts.map +1 -0
  29. package/dist/codexSigningRecoveryNativeHost.js +186 -0
  30. package/dist/codexSigningRecoveryNativeHost.js.map +1 -0
  31. package/dist/codexSigningRecoveryNativeHost.test.d.ts +2 -0
  32. package/dist/codexSigningRecoveryNativeHost.test.d.ts.map +1 -0
  33. package/dist/codexSigningRecoveryNativeHost.test.js +475 -0
  34. package/dist/codexSigningRecoveryNativeHost.test.js.map +1 -0
  35. package/dist/codexSigningRecoveryTool.d.ts +25 -0
  36. package/dist/codexSigningRecoveryTool.d.ts.map +1 -0
  37. package/dist/codexSigningRecoveryTool.js +24 -0
  38. package/dist/codexSigningRecoveryTool.js.map +1 -0
  39. package/dist/containerRelayLifecycle.d.ts +1 -1
  40. package/dist/cooperativeInboxSession.d.ts +1 -1
  41. package/dist/demoPackage.d.ts +1 -1
  42. package/dist/demoWatchControl.d.ts +6 -6
  43. package/dist/deviceSigningMaintenanceController.d.ts +35 -0
  44. package/dist/deviceSigningMaintenanceController.d.ts.map +1 -0
  45. package/dist/deviceSigningMaintenanceController.js +197 -0
  46. package/dist/deviceSigningMaintenanceController.js.map +1 -0
  47. package/dist/deviceSigningMaintenanceController.test.d.ts +2 -0
  48. package/dist/deviceSigningMaintenanceController.test.d.ts.map +1 -0
  49. package/dist/deviceSigningMaintenanceController.test.js +67 -0
  50. package/dist/deviceSigningMaintenanceController.test.js.map +1 -0
  51. package/dist/deviceSigningMaintenanceFlow.test.d.ts +2 -0
  52. package/dist/deviceSigningMaintenanceFlow.test.d.ts.map +1 -0
  53. package/dist/deviceSigningMaintenanceFlow.test.js +196 -0
  54. package/dist/deviceSigningMaintenanceFlow.test.js.map +1 -0
  55. package/dist/index.d.ts +9 -0
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +612 -469
  58. package/dist/index.js.map +1 -1
  59. package/dist/legacySigningMaintenanceBoundary.d.ts +14 -0
  60. package/dist/legacySigningMaintenanceBoundary.d.ts.map +1 -0
  61. package/dist/legacySigningMaintenanceBoundary.js +128 -0
  62. package/dist/legacySigningMaintenanceBoundary.js.map +1 -0
  63. package/dist/legacySigningMaintenanceBoundary.test.d.ts +2 -0
  64. package/dist/legacySigningMaintenanceBoundary.test.d.ts.map +1 -0
  65. package/dist/legacySigningMaintenanceBoundary.test.js +109 -0
  66. package/dist/legacySigningMaintenanceBoundary.test.js.map +1 -0
  67. package/dist/namedCodexThread.d.ts.map +1 -1
  68. package/dist/namedCodexThread.js +3 -1
  69. package/dist/namedCodexThread.js.map +1 -1
  70. package/dist/namedCodexThread.test.js +17 -1
  71. package/dist/namedCodexThread.test.js.map +1 -1
  72. package/dist/namedSessionMaintenance.d.ts +1 -1
  73. package/dist/namedSessionStartupFence.test.d.ts +2 -0
  74. package/dist/namedSessionStartupFence.test.d.ts.map +1 -0
  75. package/dist/namedSessionStartupFence.test.js +81 -0
  76. package/dist/namedSessionStartupFence.test.js.map +1 -0
  77. package/dist/providerSessionReplyRecovery.d.ts +1 -1
  78. package/dist/relayRuntimeUpgrade.d.ts +1 -1
  79. package/dist/repositoryRelayPreludeDiagnostic.test.d.ts +2 -0
  80. package/dist/repositoryRelayPreludeDiagnostic.test.d.ts.map +1 -0
  81. package/dist/repositoryRelayPreludeDiagnostic.test.js +27 -0
  82. package/dist/repositoryRelayPreludeDiagnostic.test.js.map +1 -0
  83. package/dist/repositoryRelaySupervisor.d.ts +1 -1
  84. package/dist/repositoryRelaySupervisor.d.ts.map +1 -1
  85. package/dist/repositoryRelaySupervisor.js +1 -1
  86. package/dist/repositoryRelaySupervisor.js.map +1 -1
  87. package/dist/schemas/codex-signing-recovery-native-progress.schema.json +16 -0
  88. package/dist/schemas/device-enrollment-recovery-journal.schema.json +20 -0
  89. package/dist/schemas/device-signing-maintenance-challenge.schema.json +185 -0
  90. package/dist/schemas/device-signing-maintenance-completion.schema.json +98 -0
  91. package/dist/schemas/device-signing-maintenance-context-request.schema.json +68 -0
  92. package/dist/schemas/device-signing-maintenance-context.schema.json +137 -0
  93. package/dist/schemas/device-signing-maintenance-control.schema.json +12 -0
  94. package/dist/schemas/device-signing-maintenance-controller-progress.schema.json +26 -0
  95. package/dist/schemas/device-signing-maintenance-delivery-request.schema.json +45 -0
  96. package/dist/schemas/device-signing-maintenance-host-progress.schema.json +121 -0
  97. package/dist/schemas/device-signing-maintenance-plan.schema.json +136 -0
  98. package/dist/schemas/device-signing-maintenance-preparation.schema.json +56 -0
  99. package/dist/schemas/device-signing-recovery-candidate.schema.json +28 -0
  100. package/dist/schemas/device-signing-recovery-challenge.schema.json +52 -0
  101. package/dist/schemas/device-signing-recovery-completion.schema.json +23 -0
  102. package/dist/schemas/device-signing-recovery-delivery-request.schema.json +16 -0
  103. package/dist/schemas/device-signing-recovery-delivery.schema.json +22 -0
  104. package/dist/schemas/device-signing-recovery-host-progress.schema.json +28 -0
  105. package/dist/schemas/device-signing-recovery-offer-progress.schema.json +32 -0
  106. package/dist/schemas/device-signing-recovery-offer-read-request.schema.json +16 -0
  107. package/dist/schemas/device-signing-recovery-offer-registration-receipt.schema.json +16 -0
  108. package/dist/schemas/device-signing-recovery-offer-registration-request.schema.json +18 -0
  109. package/dist/schemas/device-signing-recovery-offer-response.schema.json +43 -0
  110. package/dist/schemas/device-signing-recovery-plan.schema.json +40 -0
  111. package/dist/schemas/device-signing-recovery-preparation.schema.json +23 -0
  112. package/dist/schemas/provider-session-recovery-declaration.schema.json +21 -0
  113. package/dist/signingMaintenanceCohort.test.d.ts +2 -0
  114. package/dist/signingMaintenanceCohort.test.d.ts.map +1 -0
  115. package/dist/signingMaintenanceCohort.test.js +55 -0
  116. package/dist/signingMaintenanceCohort.test.js.map +1 -0
  117. package/dist/usage.d.ts.map +1 -1
  118. package/dist/usage.js +3 -2
  119. package/dist/usage.js.map +1 -1
  120. package/package.json +4 -4
@@ -0,0 +1,43 @@
1
+ {
2
+ "$schema":"https://json-schema.org/draft/2020-12/schema",
3
+ "$id":"https://schemas.dharma-ai.io/device-signing-recovery-offer-response/v1",
4
+ "title":"Public pending challenge for its exact prepared device; always not ready",
5
+ "$comment":"Runtime additionally validates the original preparation and every local challenge binding, immutable expiry, exact next generation and distinct root. No intent, candidate keyset, credential, consent or installation is returned.",
6
+ "oneOf":[
7
+ {
8
+ "type":"object","additionalProperties":false,
9
+ "required":["schema","organizationId","deviceId","preparationId","expiresAt","state","deviceProofRegistered","clientTrustInstalled","ready"],
10
+ "properties":{
11
+ "schema":{"const":"dharma.device-signing-recovery-offer-response/v1"},
12
+ "organizationId":{"type":"string","maxLength":128,"pattern":"^org_[A-Za-z0-9]+$(?![\\s\\S])"},
13
+ "deviceId":{"type":"string","format":"uuid"},"preparationId":{"type":"string","format":"uuid"},
14
+ "expiresAt":{"type":"string","format":"date-time","maxLength":40},"state":{"const":"awaiting_browser_offer"},
15
+ "deviceProofRegistered":{"const":false},"clientTrustInstalled":{"const":false},"ready":{"const":false}
16
+ }
17
+ },
18
+ {
19
+ "type":"object","additionalProperties":false,
20
+ "required":["schema","organizationId","deviceId","preparationId","expiresAt","state","deviceProofRegistered","clientTrustInstalled","ready","challenge"],
21
+ "properties":{
22
+ "schema":{"const":"dharma.device-signing-recovery-offer-response/v1"},
23
+ "organizationId":{"type":"string","maxLength":128,"pattern":"^org_[A-Za-z0-9]+$(?![\\s\\S])"},
24
+ "deviceId":{"type":"string","format":"uuid"},"preparationId":{"type":"string","format":"uuid"},
25
+ "expiresAt":{"type":"string","format":"date-time","maxLength":40},"state":{"const":"awaiting_device_proof"},
26
+ "deviceProofRegistered":{"const":false},"clientTrustInstalled":{"const":false},"ready":{"const":false},
27
+ "challenge":{"oneOf":[{"$ref":"https://schemas.dharma-ai.io/device-signing-recovery-challenge/v1"},{"$ref":"https://schemas.dharma-ai.io/device-signing-maintenance-challenge/v1"}]}
28
+ }
29
+ },
30
+ {
31
+ "type":"object","additionalProperties":false,
32
+ "required":["schema","organizationId","deviceId","preparationId","expiresAt","state","deviceProofRegistered","clientTrustInstalled","ready","challenge"],
33
+ "properties":{
34
+ "schema":{"const":"dharma.device-signing-recovery-offer-response/v1"},
35
+ "organizationId":{"type":"string","maxLength":128,"pattern":"^org_[A-Za-z0-9]+$(?![\\s\\S])"},
36
+ "deviceId":{"type":"string","format":"uuid"},"preparationId":{"type":"string","format":"uuid"},
37
+ "expiresAt":{"type":"string","format":"date-time","maxLength":40},"state":{"const":"pending_approval"},
38
+ "deviceProofRegistered":{"const":true},"clientTrustInstalled":{"const":false},"ready":{"const":false},
39
+ "challenge":{"oneOf":[{"$ref":"https://schemas.dharma-ai.io/device-signing-recovery-challenge/v1"},{"$ref":"https://schemas.dharma-ai.io/device-signing-maintenance-challenge/v1"}]}
40
+ }
41
+ }
42
+ ]
43
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.dharma-ai.io/device-signing-recovery-plan/v1",
4
+ "title": "Read-only local signing recovery context; not proof or authorization",
5
+ "$comment": "Issuer must equal origin; the existing protected anchor is matched to config. Current server source/session/role policy and recipient/owner approval must still be independently checked. This plan never establishes private-key possession or signing authority.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["schema", "planId", "authority", "preparedAt", "expiresAt", "origin", "issuer", "audience", "organizationId", "recipientMembershipId", "deviceId", "installationId", "workspaceId", "publicKeyEd25519", "repositoryFingerprint", "policyRevision", "scopeDigest", "contractDigest", "sourceSelectionDigest", "nativeSessionBindingDigest", "previousAnchorHash", "protectedConfigDigest", "previousGeneration", "previousKeysetHash", "previousRootFingerprint"],
9
+ "properties": {
10
+ "schema": {"const": "dharma.device-signing-recovery-plan/v1"},
11
+ "planId": {"$ref": "#/$defs/uuid"},
12
+ "authority": {"const": "local_context_only_not_recovery_authorization"},
13
+ "preparedAt": {"type": "string", "format": "date-time"},
14
+ "expiresAt": {"type": "string", "format": "date-time"},
15
+ "origin": {"type": "string", "maxLength": 256, "format": "uri", "pattern": "^https://[^/@?#\\s]+$(?![\\s\\S])"},
16
+ "issuer": {"type": "string", "maxLength": 256, "format": "uri", "pattern": "^https://[^/@?#\\s]+$(?![\\s\\S])"},
17
+ "audience": {"const": "dharma.agent-fabric.signing-recovery/v1"},
18
+ "organizationId": {"type": "string", "maxLength": 256, "pattern": "^org_[A-Za-z0-9]+$(?![\\s\\S])"},
19
+ "recipientMembershipId": {"$ref": "#/$defs/uuid"},
20
+ "deviceId": {"$ref": "#/$defs/uuid"},
21
+ "installationId": {"$ref": "#/$defs/uuid"},
22
+ "workspaceId": {"$ref": "#/$defs/uuid"},
23
+ "publicKeyEd25519": {"type": "string", "pattern": "^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$(?![\\s\\S])"},
24
+ "repositoryFingerprint": {"$ref": "#/$defs/digest"},
25
+ "policyRevision": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$(?![\\s\\S])"},
26
+ "scopeDigest": {"$ref": "#/$defs/digest"},
27
+ "contractDigest": {"$ref": "#/$defs/digest"},
28
+ "sourceSelectionDigest": {"$ref": "#/$defs/digest"},
29
+ "nativeSessionBindingDigest": {"$ref": "#/$defs/digest"},
30
+ "previousAnchorHash": {"$ref": "#/$defs/digest"},
31
+ "protectedConfigDigest": {"$ref": "#/$defs/digest"},
32
+ "previousGeneration": {"type": "integer", "minimum": 1, "maximum": 9007199254740991},
33
+ "previousKeysetHash": {"$ref": "#/$defs/digest"},
34
+ "previousRootFingerprint": {"$ref": "#/$defs/digest"}
35
+ },
36
+ "$defs": {
37
+ "uuid": {"type": "string", "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$(?![\\s\\S])"},
38
+ "digest": {"type": "string", "pattern": "^sha256:[a-f0-9]{64}$(?![\\s\\S])"}
39
+ }
40
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.dharma-ai.io/device-signing-recovery-preparation/v1",
4
+ "title": "Device-attested recovery preparation; not consent, enrollment or trust activation",
5
+ "$comment": "Runtime binds every plan field to independently obtained local expectations and verifies the historical keyset hash/signature at its original expiry. The server separately checks current member/device/source and frozen server history. Native session metadata is device-attested, not independently observed. No secret, token or arbitrary approval flag is accepted.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["schema", "purpose", "method", "path", "plan", "historicalKeysetCanonical", "historicalRootPublicKey", "credentialEncryptionPublicKey", "nonce"],
9
+ "properties": {
10
+ "schema": {"const": "dharma.device-signing-recovery-preparation/v1"},
11
+ "purpose": {"const": "prepare_expired_signing_trust_recovery"},
12
+ "method": {"const": "POST"},
13
+ "path": {"const": "/api/v1/agent-fabric/signing-recovery/preparations"},
14
+ "plan": {"$ref": "https://schemas.dharma-ai.io/device-signing-recovery-plan/v1"},
15
+ "historicalKeysetCanonical": {"type": "string", "minLength": 2, "maxLength": 16384},
16
+ "historicalRootPublicKey": {"$ref": "#/$defs/bytes32"},
17
+ "credentialEncryptionPublicKey": {"$ref": "#/$defs/bytes32"},
18
+ "nonce": {"$ref": "#/$defs/bytes32"}
19
+ },
20
+ "$defs": {
21
+ "bytes32": {"type": "string", "pattern": "^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$(?![\\s\\S])"}
22
+ }
23
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.dharma-ai.io/provider-session-recovery-declaration/v1",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": ["schema", "organizationId", "workspaceId", "repositoryBindingId", "endpointId", "membershipId", "deviceId", "bindingId", "provider", "sessionId", "toolHash", "recordedAt"],
7
+ "properties": {
8
+ "schema": {"const": "dharma.provider-session-recovery-declaration/v1"},
9
+ "organizationId": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,199}$"},
10
+ "workspaceId": {"type": "string", "format": "uuid"},
11
+ "repositoryBindingId": {"type": "string", "format": "uuid"},
12
+ "endpointId": {"type": "string", "format": "uuid"},
13
+ "membershipId": {"type": "string", "format": "uuid"},
14
+ "deviceId": {"type": "string", "format": "uuid"},
15
+ "bindingId": {"type": "string", "format": "uuid"},
16
+ "provider": {"const": "codex"},
17
+ "sessionId": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,128}$"},
18
+ "toolHash": {"type": "string", "pattern": "^sha256:[a-f0-9]{64}$"},
19
+ "recordedAt": {"type": "string", "format": "date-time"}
20
+ }
21
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=signingMaintenanceCohort.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signingMaintenanceCohort.test.d.ts","sourceRoot":"","sources":["../src/signingMaintenanceCohort.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,55 @@
1
+ import assert from 'node:assert/strict';
2
+ import { readFile } from 'node:fs/promises';
3
+ import { posix } from 'node:path';
4
+ import { compileFunction } from 'node:vm';
5
+ import test from 'node:test';
6
+ import ts from 'typescript';
7
+ async function caller(overrides = {}) {
8
+ const source = await readFile(new URL('../src/index.ts', import.meta.url), 'utf8');
9
+ const ast = ts.createSourceFile('index.ts', source, ts.ScriptTarget.Latest, true);
10
+ const node = ast.statements.find(value => ts.isFunctionDeclaration(value) && value.name?.text === 'assertSigningMaintenanceManagedCohort');
11
+ assert.ok(node, 'the real CLI must verify the installed managed cohort before maintenance');
12
+ const compiled = ts.transpileModule(node.getText(ast), { compilerOptions: { target: ts.ScriptTarget.ES2023, module: ts.ModuleKind.CommonJS } });
13
+ const startup = { version: '0.2.210', workspace: '/fixture/repo', launcher: '/fixture/repo/.dharma/bin/dharma', policy: '/fixture/repo/.dharma/approved-policy.json' };
14
+ const calls = [], deps = { VERSION: '0.2.210', process: { platform: 'linux' }, resolve: posix.resolve,
15
+ realpath: async (path) => path,
16
+ lstat: async () => ({ isFile: () => true, isSymbolicLink: () => false, size: 10, ino: 1, dev: 1, mtimeMs: 1, ctimeMs: 1 }),
17
+ inspectOwnedRelayAutostart: async () => { calls.push('inspect'); return startup; },
18
+ readFile: async (path) => { calls.push(path); return path.endsWith('dharma.cmd') ? 'windows' : 'shell'; },
19
+ verifyRecordedRepositoryLaunchers: async (version, launchers) => {
20
+ assert.equal(version, '0.2.210');
21
+ assert.deepEqual(launchers, { shell: 'shell', windows: 'windows' });
22
+ calls.push('verify');
23
+ return true;
24
+ },
25
+ sha256: (value) => value, ...overrides };
26
+ const run = compileFunction(compiled.outputText + '\nreturn assertSigningMaintenanceManagedCohort;', ['exports', ...Object.keys(deps)])({}, ...Object.values(deps));
27
+ return { run, startup, calls };
28
+ }
29
+ test('actual CLI rejects an older or mismatched managed startup before accepting maintenance authority', async () => {
30
+ for (const field of ['version', 'workspace', 'launcher', 'policy']) {
31
+ const f = await caller();
32
+ f.startup[field] = 'old-or-foreign';
33
+ await assert.rejects(f.run('/fixture/home', '/fixture/repo'), /managed_cohort_upgrade_required/);
34
+ assert.deepEqual(f.calls, ['inspect']);
35
+ }
36
+ });
37
+ test('actual CLI requires recorded current-version launcher parity rather than version metadata alone', async () => {
38
+ const f = await caller({ verifyRecordedRepositoryLaunchers: async () => false });
39
+ await assert.rejects(f.run('/fixture/home', '/fixture/repo'), /managed_cohort_upgrade_required/);
40
+ });
41
+ test('actual CLI returns a non-secret cohort digest only after owned startup and launcher verification', async () => {
42
+ const f = await caller();
43
+ assert.equal(typeof await f.run('/fixture/home', '/fixture/repo'), 'string');
44
+ assert.equal(f.calls.at(-1), 'verify');
45
+ });
46
+ test('actual CLI refuses symlink, oversized or changing launcher files before accepting the cohort', async () => {
47
+ for (const kind of ['symlink', 'oversized', 'changed']) {
48
+ let reads = 0;
49
+ const f = await caller({ lstat: async () => ({ isFile: () => true, isSymbolicLink: () => kind === 'symlink',
50
+ size: kind === 'oversized' ? 65537 : 10, ino: kind === 'changed' ? ++reads : 1, dev: 1, mtimeMs: 1, ctimeMs: 1 }) });
51
+ await assert.rejects(f.run('/fixture/home', '/fixture/repo'), /managed_cohort_upgrade_required/);
52
+ assert.equal(f.calls.includes('verify'), false);
53
+ }
54
+ });
55
+ //# sourceMappingURL=signingMaintenanceCohort.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signingMaintenanceCohort.test.js","sourceRoot":"","sources":["../src/signingMaintenanceCohort.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,QAKyY,CAAC"}
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,QAM46B,CAAC"}
package/dist/usage.js CHANGED
@@ -1,8 +1,9 @@
1
- const COMMAND_USAGE = 'Usage: dharma <bootstrap|onboard|login|status|sessions start|sessions status|sessions readiness|sessions work|sessions stop|sessions audit|demo connect|demo transport-connect|demo status|demo package|demo package-status|demo watch|demo watch-enable|demo watch-status|demo watch-disable|demo role|demo peers|demo ask|demo reply|demo inbox|demo ack|demo resume|demo signing-client-proof|demo signing-owner-proof|providers list|repositories discover|repositories connect|repositories list|repositories status|repositories snapshot|repositories recover-installer|repositories role-register|repositories role-discover|repositories ask|repositories reply|workspace add|workspace sync|workspace recover-registry|evidence preview|evidence capture|evidence capture-batch|evidence sync|evidence run-request|relay container-entrypoint|relay probe|relay start|relay stop|relay upgrade|relay autostart status|relay autostart disable|assistant chat|assistant history|assistant status|assistant approve|assistant reject|organization status|agents list|agents bind-runtime|evaluations validate|evaluations launch|evaluations status|evaluations results|experiments list|experiments run|failures list|remediations list|remediations act|tasks list|tasks dispatch|handoffs list|skills list|skills release|skills rollout|skills rollback|skills sync|skills status|skills verify|usage list> [options]';
1
+ const COMMAND_USAGE = 'Usage: dharma <bootstrap|onboard|login|status|signing-recovery|sessions start|sessions status|sessions readiness|sessions work|sessions stop|sessions audit|demo connect|demo transport-connect|demo status|demo package|demo package-status|demo watch|demo watch-enable|demo watch-status|demo watch-disable|demo role|demo peers|demo ask|demo reply|demo inbox|demo ack|demo resume|demo signing-client-proof|demo signing-owner-proof|providers list|repositories discover|repositories connect|repositories list|repositories status|repositories snapshot|repositories recover-installer|repositories role-register|repositories role-discover|repositories ask|repositories reply|workspace add|workspace sync|workspace recover-registry|evidence preview|evidence capture|evidence capture-batch|evidence sync|evidence run-request|relay container-entrypoint|relay probe|relay start|relay stop|relay upgrade|relay autostart status|relay autostart disable|assistant chat|assistant history|assistant status|assistant approve|assistant reject|organization status|agents list|agents bind-runtime|evaluations validate|evaluations launch|evaluations status|evaluations results|experiments list|experiments run|failures list|remediations list|remediations act|tasks list|tasks dispatch|handoffs list|skills list|skills release|skills rollout|skills rollback|skills sync|skills status|skills verify|usage list> [options]';
2
2
  export const CLI_USAGE = COMMAND_USAGE + '\n\nLinux named-Codex setup entry: setup codex --portal-context-sha256 <copied-context-hash> --portal-prompt-sha256 <copied-public-prompt-checksum> --portal-url <origin> --organization-id <org> --setup-reference <public-reference> --workspace <checkout> [--maximum-provider-cost-cents <1..25>] [--dry-run]. Fetches and verifies canonical public portal instructions; this is not attestation of the enclosing human message. Alternatively, legacy --stdin requires the entire original public prompt and cannot combine with either portal hash. No file, secret or human terminal entry. Requires the intended qualified private DHARMA_HOME and existing CODEX_HOME. This starts an owned named setup session with the bound tool; it does not attach to an existing desktop chat. Matching-recipient browser device approval remains required. A refused/expired/interrupted attempt is not retried. Dry-run verifies only public preparation, not execution admission or readiness. The local reservation is conservative unresolved exposure, not an invoice cap.\n\nAgent setup compatibility: bootstrap --setup-reference <public-reference> --setup-recipient-membership-id <membership> --setup-scope-digest <sha256> --setup-contract-digest <sha256> --complete [exact source/portal options]. Run inside the coding agent; approve the exact device in the browser. No terminal secret input. --dry-run produces a grant-free plan. Reference setup cannot combine with --grant, --grant-prompt, --resume, replacement, join or disabled relay startup. Legacy private setup: bootstrap --grant-prompt [exact portal options], with USER-only private terminal entry. Enrolled recovery: bootstrap --resume --complete [exact scoped options], with no grant/reference.'
3
3
  + '\n\nReturning device: login --unattended opts in to reuse the approved identity; login --no-unattended disables automatic selection; --dry-run plans either change. login --resume connects once without opting in. login --reauthenticate explicitly requests fresh browser approval for the original protected identity to recover its enrollment anchor; it never replaces keys or configuration. Opted-in bootstrap --complete can omit grants only for the same registered repository and approved policy revision. A compatible membership-guarded server admission response is required. Device admission does not sign in a provider or establish repository readiness. Standing relay lifecycle remains controlled by relay autostart commands.'
4
4
  + '\n\nRepository source conflicts: repositories source-resolve --workspace-id <workspace> [--dry-run | --prepare | --apply --plan-hash <sha256> --choose-reviewed-local]. Default is a read-only plan. Review and merge authorized source before preparation; approval is exact-input, expires after 15 minutes and does not publish. Existing relay/evaluation/signing gates remain required.'
5
5
  + '\n\nAfter a clear-baseline rollback: repositories restore --workspace-id <workspace> --dry-run reads a current-policy stable signed catalog and plans a fresh candidate. With the owned relay stopped, --apply --plan-hash <reviewed-hash> submits that exact plan through normal evaluation/signing. It never reactivates an archived release, changes enrollment or resets history. Resume the owned relay only after submission; readiness and activation remain separate checks.'
6
6
  + '\n\nFor an unresolved restoration upload, an empty lookup is not cancellation. With the owned relay stopped, --apply --plan-hash <original-hash> --fence-upload requests metadata-only fencing under current authority. An admitted operation is returned for ordinary recovery; only a terminal server fence permits checkpoint archival and a new dry-run plan. Fencing does not upload source or activate a release.'
7
- + '\n\nRead-only named-session diagnosis: sessions readiness --name <registered-name> --workspace-id <workspace> --diagnostic. Uses the existing owner and unchanged readiness request; never starts a session, runs a model turn or grants access. A closed local failure receipt exits 2 and is not native readiness or permission to retry/restart. No passwords, socket paths or arbitrary remote errors are returned.';
7
+ + '\n\nRead-only named-session diagnosis: sessions readiness --name <registered-name> --workspace-id <workspace> --diagnostic. Uses the existing owner and unchanged readiness request; never starts a session, runs a model turn or grants access. A closed local failure receipt exits 2 and is not native readiness or permission to retry/restart. No passwords, socket paths or arbitrary remote errors are returned.'
8
+ + '\n\nDevice signing-trust maintenance: signing-recovery --name <original-name> --workspace-id <workspace> plans without protected-store or network access. --apply --operation-id <fresh-public-UUID> requires the same disabled/stopped original session, protected device and binding, an exclusive device signing-control lease, current source, and fresh recipient plus organization-owner browser consent. The agent controls its existing process with bounded JSONL frames: {"schema":"dharma.device-signing-maintenance-control/v1","operationId":"<same-public-UUID>","action":"progress|complete|status|cancel"}. Use complete only after the exact browser publication receipt. No password, grant, provider login, task, session enable or service restart is accepted. An uncertain action is not automatically retried. Successful trust installation still reports ready:false and nativeContinuationAuthorized:false; ordinary native/task qualification remains separate.';
8
9
  //# sourceMappingURL=usage.js.map
package/dist/usage.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"usage.js","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,m2CAAm2C,CAAC;AAE13C,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,GAAG,+rDAA+rD;MACpuD,0tBAA0tB;MACxtB,8XAA8X;MAC9X,sdAAsd;MACtd,yZAAyZ;MACzZ,yZAAyZ,CAAC"}
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,o3CAAo3C,CAAC;AAE34C,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,GAAG,+rDAA+rD;MACpuD,0tBAA0tB;MACxtB,8XAA8X;MAC9X,sdAAsd;MACtd,yZAAyZ;MACzZ,yZAAyZ;MACzZ,47BAA47B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dharma-ai-labs/agent-fabric",
3
- "version": "0.2.208",
3
+ "version": "0.2.210",
4
4
  "description": "Local-first CLI for connecting coding agents to Dharma evaluation, orchestration, and signed Skill delivery",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/dharma-ai-labs/dharma-agent-fabric/tree/main/packages/cli#readme",
@@ -34,12 +34,12 @@
34
34
  "test": "node --test --test-reporter=spec dist/*.test.js"
35
35
  },
36
36
  "dependencies": {
37
- "@dharma-ai-labs/agent-fabric-contracts": "0.1.16",
37
+ "@dharma-ai-labs/agent-fabric-contracts": "0.1.18",
38
38
  "@dharma-ai-labs/agent-fabric-evidence-reduction": "0.2.35",
39
- "@dharma-ai-labs/agent-fabric-local-vault": "0.1.31",
39
+ "@dharma-ai-labs/agent-fabric-local-vault": "0.1.32",
40
40
  "@dharma-ai-labs/agent-fabric-policy": "0.1.4",
41
41
  "@dharma-ai-labs/agent-fabric-provider-adapters": "0.1.36",
42
- "@dharma-ai-labs/agent-fabric-relay-client": "0.2.33",
42
+ "@dharma-ai-labs/agent-fabric-relay-client": "0.2.34",
43
43
  "@dharma-ai-labs/agent-fabric-sdk": "0.1.10",
44
44
  "@dharma-ai-labs/agent-fabric-secure-store": "0.1.10",
45
45
  "@dharma-ai-labs/agent-fabric-skill-manager": "0.2.11",