@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
@@ -1,5 +1,43 @@
1
- import { inspectSessionQuestionForBinding } from '@dharma-ai-labs/agent-fabric-contracts';
1
+ import { canonicalize, inspectSessionQuestionForBinding } from '@dharma-ai-labs/agent-fabric-contracts';
2
+ import { createHash, randomUUID } from 'node:crypto';
3
+ import { types } from 'node:util';
4
+ import { isAbsolute, resolve } from 'node:path';
2
5
  import { CodexSessionAnswerTooLargeError, runCodexBridgeQuestion, runCodexLocalWork } from '@dharma-ai-labs/agent-fabric-provider-adapters/experimental/codex-session';
6
+ import { attachCodexSigningRecoveryNativeHost } from './codexSigningRecoveryNativeHost.js';
7
+ import { CODEX_SIGNING_RECOVERY_TOOL_HASH } from './codexSigningRecoveryTool.js';
8
+ function recoveryRequest(value) {
9
+ const snapshot = (item, allowed, required) => {
10
+ if (!item || typeof item !== 'object' || Array.isArray(item) || types.isProxy(item))
11
+ throw Error('codex_signing_recovery_input_invalid');
12
+ const fields = Object.getOwnPropertyDescriptors(item);
13
+ if (required.some(key => !Object.hasOwn(fields, key)) || Reflect.ownKeys(fields).some(key => typeof key !== 'string' || !allowed.includes(key)
14
+ || !fields[key].enumerable || !Object.hasOwn(fields[key], 'value')))
15
+ throw Error('codex_signing_recovery_input_invalid');
16
+ return Object.fromEntries(Object.entries(fields).map(([key, field]) => [key, field.value]));
17
+ };
18
+ const keys = ['operationId', 'signal', 'current', 'authorize', 'recovery'];
19
+ const request = snapshot(value, keys, keys);
20
+ request.recovery = snapshot(request.recovery, ['configPath', 'source', 'store', 'fetcher', 'now'], ['configPath', 'source']);
21
+ return request;
22
+ }
23
+ function recoverySourceSnapshot(value) {
24
+ const keys = ['organizationId', 'workspaceId', 'repositoryBindingId', 'repositoryFingerprint', 'policyRevision', 'scopeDigest',
25
+ 'contractDigest', 'sourceGenerationId', 'sourceReceiptId', 'sourceRevision', 'sourcePolicyRevision', 'sourcePolicyHash'];
26
+ if (!value || typeof value !== 'object' || Array.isArray(value) || types.isProxy(value))
27
+ throw Error('codex_signing_recovery_input_invalid');
28
+ const fields = Object.getOwnPropertyDescriptors(value);
29
+ if (Reflect.ownKeys(fields).length !== keys.length || Reflect.ownKeys(fields).some(key => typeof key !== 'string' || !keys.includes(key)
30
+ || !fields[key].enumerable || !Object.hasOwn(fields[key], 'value')))
31
+ throw Error('codex_signing_recovery_input_invalid');
32
+ const output = {};
33
+ for (const key of keys) {
34
+ const item = fields[key].value;
35
+ if (key === 'sourceRevision' ? typeof item !== 'number' || !Number.isSafeInteger(item) : typeof item !== 'string' || item.length > 512)
36
+ throw Error('codex_signing_recovery_input_invalid');
37
+ output[key] = item;
38
+ }
39
+ return output;
40
+ }
3
41
  export async function openCodexBoundSession(input) {
4
42
  const binding = await input.vault.getProviderSessionBinding(input.bindingId, input.identity);
5
43
  if (!binding || binding.provider !== 'codex' || binding.owner !== 'dharma_bridge') {
@@ -33,13 +71,22 @@ export async function openCodexBoundSession(input) {
33
71
  let closing = false;
34
72
  let closed = false;
35
73
  let shutdown = null;
74
+ const recoveryLifetime = new AbortController(), connectionId = randomUUID(), hostContextId = randomUUID();
75
+ let recoveryHost;
76
+ let recoveryOpening;
77
+ let recoveryOnly = false;
36
78
  async function close() {
37
79
  closing = true;
80
+ recoveryLifetime.abort();
38
81
  if (closed)
39
82
  return;
40
83
  if (shutdown)
41
84
  return shutdown;
42
85
  shutdown = (async () => {
86
+ if (recoveryOpening)
87
+ await recoveryOpening.catch(() => { });
88
+ if (recoveryHost)
89
+ await recoveryHost.close();
43
90
  // Never release the fence while a provider child could still accept turns.
44
91
  await transport.close();
45
92
  await heldLease.release();
@@ -55,9 +102,88 @@ export async function openCodexBoundSession(input) {
55
102
  return {
56
103
  close,
57
104
  async assertActive() { return !closing && !closed && await heldLease.assertHeld(); },
105
+ /** Trusted original-controller entry, never a peer/socket/model authority
106
+ * object. This arms one already-declared tool; it never starts a turn. */
107
+ async beginSigningRecovery(value) {
108
+ if (closing || closed)
109
+ throw Error('codex_session_closed');
110
+ if (running)
111
+ throw Error('codex_session_busy');
112
+ if (recoveryOnly)
113
+ throw Error('codex_signing_recovery_owner_consumed');
114
+ running = true;
115
+ const opening = (async () => {
116
+ const selected = await currentBinding();
117
+ const catalog = await input.vault.readProviderSessionRecoveryDeclaration(selected.bindingId, input.identity);
118
+ if (catalog?.toolHash !== CODEX_SIGNING_RECOVERY_TOOL_HASH)
119
+ throw Error('codex_signing_recovery_catalog_unavailable');
120
+ const request = recoveryRequest(value);
121
+ const source = recoverySourceSnapshot(request.recovery.source);
122
+ if (!(request.signal instanceof AbortSignal) || typeof request.current !== 'function' || typeof request.authorize !== 'function'
123
+ || typeof request.operationId !== 'string' || !/^[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])/.test(request.operationId)
124
+ || typeof request.recovery.configPath !== 'string' || !isAbsolute(request.recovery.configPath)
125
+ || resolve(request.recovery.configPath) !== request.recovery.configPath || /[\x00-\x1f\x7f]/.test(request.recovery.configPath)
126
+ || ['organizationId', 'workspaceId', 'repositoryBindingId'].some(key => source[key] !== selected[key]))
127
+ throw Error('codex_signing_recovery_input_invalid');
128
+ const signal = AbortSignal.any([request.signal, recoveryLifetime.signal, transport.signal]);
129
+ const session = { organizationId: selected.organizationId, workspaceId: selected.workspaceId, repositoryBindingId: selected.repositoryBindingId,
130
+ endpointId: selected.endpointId, membershipId: selected.membershipId, deviceId: selected.deviceId, bindingId: selected.bindingId,
131
+ provider: selected.provider, owner: selected.owner, sessionId: selected.sessionId, createdAt: selected.createdAt,
132
+ expiresAt: selected.expiresAt, maximumProviderCostCents: selected.maximumProviderCostCents };
133
+ const current = request.current.bind(request), authorize = request.authorize.bind(request);
134
+ const valid = async (native) => {
135
+ if (closing || closed || signal.aborted || !await heldLease.assertHeld() || signal.aborted)
136
+ return false;
137
+ const fresh = await currentBinding();
138
+ if (canonicalize(fresh) !== canonicalize(selected) || !await current(native))
139
+ return false;
140
+ return !closing && !closed && !signal.aborted && await heldLease.assertHeld()
141
+ && canonicalize(await currentBinding()) === canonicalize(selected)
142
+ && canonicalize(await input.vault.readProviderSessionRecoveryDeclaration(selected.bindingId, input.identity)) === canonicalize(catalog)
143
+ && !signal.aborted;
144
+ };
145
+ if (!await valid(null))
146
+ throw Error('codex_signing_recovery_scope_unavailable');
147
+ recoveryOnly = true;
148
+ // Reuse the encrypted original-operation journal with a separate purpose
149
+ // digest. Leave the claim consumed: settlement is not readiness or a
150
+ // safe basis for recycling an interrupted recovery operation.
151
+ const digest = 'sha256:' + createHash('sha256').update('dharma.codex-signing-recovery-controller/v1\0'
152
+ + canonicalize({ operationId: request.operationId, session, source, configPathHash: 'sha256:' + createHash('sha256')
153
+ .update(request.recovery.configPath).digest('hex'), declaration: catalog })).digest('hex');
154
+ const claimed = await input.vault.claimCodexSetupOperation(request.operationId, digest);
155
+ if (claimed.state !== 'acquired')
156
+ throw Error('codex_signing_recovery_operation_consumed');
157
+ if (!await valid(null))
158
+ throw Error('codex_signing_recovery_scope_unavailable');
159
+ const host = await attachCodexSigningRecoveryNativeHost({ transport, workspace: selected.workspaceRoot, operationId: request.operationId,
160
+ connectionId, hostContextId, signal, current: valid, authorize, additionalFilesystemRules: input.additionalFilesystemRules,
161
+ recovery: { ...request.recovery, source: source, session } });
162
+ recoveryHost = host;
163
+ void host.settled.then(() => { if (recoveryHost === host) {
164
+ recoveryHost = undefined;
165
+ running = false;
166
+ } }, () => { });
167
+ return host;
168
+ })();
169
+ recoveryOpening = opening;
170
+ try {
171
+ return await opening;
172
+ }
173
+ catch (error) {
174
+ running = false;
175
+ throw error;
176
+ }
177
+ finally {
178
+ if (recoveryOpening === opening)
179
+ recoveryOpening = undefined;
180
+ }
181
+ },
58
182
  async runWork(request) {
59
183
  if (closing)
60
184
  throw new Error('codex_session_closed');
185
+ if (recoveryOnly)
186
+ throw new Error('codex_session_recovery_only');
61
187
  if (running)
62
188
  throw new Error('codex_session_busy');
63
189
  running = true;
@@ -85,6 +211,8 @@ export async function openCodexBoundSession(input) {
85
211
  async runQuestion(request) {
86
212
  if (closing)
87
213
  throw new Error('codex_session_closed');
214
+ if (recoveryOnly)
215
+ throw new Error('codex_session_recovery_only');
88
216
  if (running)
89
217
  throw new Error('codex_session_busy');
90
218
  running = true;
@@ -162,4 +290,15 @@ export async function runCodexBoundSessionQuestion(input) {
162
290
  throw error;
163
291
  }
164
292
  }
293
+ /** Purpose-limited original-owner composition; it exposes no peer/write turn. */
294
+ export async function openCodexSigningRecoveryOwner(input) {
295
+ if (process.platform !== 'linux')
296
+ throw Error('codex_session_sandbox_unqualified');
297
+ const catalog = await input.vault.readProviderSessionRecoveryDeclaration(input.bindingId, input.identity);
298
+ if (catalog?.toolHash !== CODEX_SIGNING_RECOVERY_TOOL_HASH)
299
+ throw Error('codex_signing_recovery_catalog_unavailable');
300
+ const owner = await openCodexBoundSession({ ...input, verifier: { resolvePublicKey: () => null, consume: async () => false },
301
+ budget: { reserve: async () => false } });
302
+ return Object.freeze({ beginSigningRecovery: owner.beginSigningRecovery, assertActive: owner.assertActive, close: owner.close });
303
+ }
165
304
  //# sourceMappingURL=codexBoundSession.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codexBoundSession.js","sourceRoot":"","sources":["../src/codexBoundSession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codexBoundSession.js","sourceRoot":"","sources":["../src/codexBoundSession.ts"],"names":[],"mappings":"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"}
@@ -79,7 +79,7 @@ export declare function openCodexInboxSession(input: Parameters<typeof openCodex
79
79
  questionId: string;
80
80
  taskId: string;
81
81
  completionHash: string;
82
- reasonCode: "content_or_contract_blocked" | "receipt_invalid" | "delivery_unconfirmed";
82
+ reasonCode: "delivery_unconfirmed" | "content_or_contract_blocked" | "receipt_invalid";
83
83
  dispositionHash?: undefined;
84
84
  delivered?: undefined;
85
85
  replyReceiptHash?: undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"codexInboxSession.d.ts","sourceRoot":"","sources":["../src/codexInboxSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4D,KAAK,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAGxI,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAO3E,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC,GAAG;IAC/F,gBAAgB,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAClF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;IACzF,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9C;sBA4C+B;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE;wBAVuB,OAAO;wBAAkB,IAAI;;;;wBAA7B,OAAO;wBAAkB,IAAI;;qBAuD7E,UAAU;;;;iBA3D6B,CAAC;sBAC7C,CAAC;;;;;;;;;;OA0DoC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBASnC;QAAC,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;KAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoHlG"}
1
+ {"version":3,"file":"codexInboxSession.d.ts","sourceRoot":"","sources":["../src/codexInboxSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4D,KAAK,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAGxI,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAO3E,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC,GAAG;IAC/F,gBAAgB,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAClF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;IACzF,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9C;sBA4C+B;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE;wBAVuB,OAAO;wBAAkB,IAAI;;;;wBAA7B,OAAO;wBAAkB,IAAI;;qBAuD7E,UAAU;;;;iBAuErB,CAAF;sBAA8B,CAAC;;;;;;;;;;OAvEc,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBASnC;QAAC,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;KAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoHlG"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=codexRecoveryController.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexRecoveryController.test.d.ts","sourceRoot":"","sources":["../src/codexRecoveryController.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,295 @@
1
+ import assert from 'node:assert/strict';
2
+ import { createHash, generateKeyPairSync, randomBytes } from 'node:crypto';
3
+ import { mkdtemp, rm, writeFile } from 'node:fs/promises';
4
+ import { tmpdir } from 'node:os';
5
+ import { resolve } from 'node:path';
6
+ import test, { describe } from 'node:test';
7
+ import { signCanonicalObject } from '@dharma-ai-labs/agent-fabric-contracts';
8
+ import { LocalVault } from '@dharma-ai-labs/agent-fabric-local-vault';
9
+ import { openCodexBoundSession, openCodexSigningRecoveryOwner } from './codexBoundSession.js';
10
+ import { CODEX_SIGNING_RECOVERY_TOOL, CODEX_SIGNING_RECOVERY_TOOL_HASH } from './codexSigningRecoveryTool.js';
11
+ const id = (n) => `d3000000-0000-4000-8000-${String(n).padStart(12, '0')}`;
12
+ const hash = (value) => 'sha256:' + createHash('sha256').update(value).digest('hex');
13
+ test('the fixed recovery declaration is deeply immutable and never embeds an operation or approval', () => {
14
+ assert.ok(Object.isFrozen(CODEX_SIGNING_RECOVERY_TOOL.inputSchema.properties.operationId));
15
+ assert.ok(Object.isFrozen(CODEX_SIGNING_RECOVERY_TOOL.inputSchema.properties.action.enum));
16
+ assert.match(CODEX_SIGNING_RECOVERY_TOOL_HASH, /^sha256:[a-f0-9]{64}$/);
17
+ assert.equal(Object.hasOwn(CODEX_SIGNING_RECOVERY_TOOL.inputSchema.properties.operationId, 'const'), false);
18
+ assert.doesNotMatch(JSON.stringify(CODEX_SIGNING_RECOVERY_TOOL), /approved|grant|token|password/);
19
+ });
20
+ test('the official public surface exposes the purpose-limited recovery owner rather than the unrestricted bound owner', async () => {
21
+ const api = await import('./index.js');
22
+ assert.equal(api.openCodexSigningRecoveryOwner, openCodexSigningRecoveryOwner);
23
+ assert.equal(Object.hasOwn(api, 'openCodexBoundSession'), false);
24
+ });
25
+ describe('original Linux bound-controller recovery adoption', { skip: process.platform !== 'linux' }, () => {
26
+ async function fixture(catalog = CODEX_SIGNING_RECOVERY_TOOL_HASH) {
27
+ const root = await mkdtemp(resolve(tmpdir(), 'fabric-original-controller-')), key = randomBytes(32), now = Date.now();
28
+ const binding = { schema: 'dharma.local-provider-session-binding/v1', owner: 'dharma_bridge',
29
+ organizationId: 'org_fixture', workspaceId: id(1), repositoryBindingId: id(2), endpointId: id(3), membershipId: id(4),
30
+ deviceId: id(5), bindingId: id(6), provider: 'codex', sessionId: 'original_native_thread', workspaceRoot: root,
31
+ createdAt: new Date(now - 1000).toISOString(), expiresAt: new Date(now + 3600000).toISOString(), maximumProviderCostCents: 25 };
32
+ const identity = { organizationId: binding.organizationId, workspaceId: binding.workspaceId, repositoryBindingId: binding.repositoryBindingId,
33
+ endpointId: binding.endpointId, membershipId: binding.membershipId, deviceId: binding.deviceId, provider: binding.provider };
34
+ const vault = await LocalVault.open({ root: resolve(root, 'vault'), masterKey: key });
35
+ vault.saveProviderSessionBinding(binding);
36
+ if (catalog)
37
+ vault.saveProviderSessionRecoveryDeclaration(binding.bindingId, identity, catalog);
38
+ const old = generateKeyPairSync('ed25519'), device = generateKeyPairSync('ed25519');
39
+ const publicKey = (pair) => pair.publicKey.export({ format: 'jwk' }).x;
40
+ const keyset = { schema: 'dharma.server-signing-keyset/v1', organizationId: binding.organizationId, generation: 2,
41
+ keys: [{ keyVersion: 'synthetic-old', publicKeyEd25519: publicKey(old), status: 'active', notBefore: new Date(now - 86400000).toISOString(), notAfter: new Date(now - 1000).toISOString() }],
42
+ signedByKeyVersion: 'synthetic-old', issuedAt: new Date(now - 86400000).toISOString(), expiresAt: new Date(now - 1000).toISOString() };
43
+ const config = { schema: 'dharma.device-config/v1', hqUrl: 'https://www.dharma-ai.io', organizationId: binding.organizationId,
44
+ installationId: id(7), deviceId: binding.deviceId, deviceName: 'Synthetic original controller', platform: 'linux', publicKeyEd25519: publicKey(device),
45
+ serverPublicKeyEd25519: publicKey(old), serverSigningKeyset: { ...keyset, signature: signCanonicalObject(keyset, old.privateKey) },
46
+ relayUrl: 'wss://relay.example.invalid', enrolledAt: new Date(now - 172800000).toISOString(), connectionMode: 'manual',
47
+ setupClaimReference: id(8), setupClaimRepositoryFingerprint: 'sha256:' + 'a'.repeat(64) };
48
+ const anchor = { schema: 'dharma.device-enrollment-anchor/v1', hqUrl: config.hqUrl, organizationId: config.organizationId,
49
+ deviceId: config.deviceId, devicePublicKeyEd25519: config.publicKeyEd25519, serverPublicKeyEd25519: config.serverPublicKeyEd25519,
50
+ serverSigningKeyset: config.serverSigningKeyset, enrolledAt: config.enrolledAt };
51
+ const anchorAccount = 'device-enrollment-' + hash(`${config.hqUrl}:${config.organizationId}:${config.deviceId}`).slice(7, 39);
52
+ const reads = [], writes = [], requests = [], rpc = [], events = new Set();
53
+ const lifetime = new AbortController(), scope = new AbortController();
54
+ let handler, state = 'idle', reserved = 0, closes = 0;
55
+ const transport = { signal: lifetime.signal,
56
+ onToolCall(value) { assert.equal(handler, undefined); handler = value; return () => { handler = undefined; }; },
57
+ onNotification(value) { events.add(value); return () => { events.delete(value); }; },
58
+ async close() { closes++; lifetime.abort(); },
59
+ async request(method) {
60
+ rpc.push(method);
61
+ if (method === 'permissionProfile/list')
62
+ return { data: [{ id: 'dharma_bridge', allowed: true }] };
63
+ if (method === 'config/read')
64
+ return { config: { permissions: { dharma_bridge: { extends: null, workspace_roots: null,
65
+ filesystem: { ':minimal': 'read', ':workspace_roots': { '.': 'read' } }, network: { enabled: false } } } } };
66
+ if (method === 'thread/read')
67
+ return { thread: { id: binding.sessionId, cwd: root, status: { type: state } } };
68
+ throw Error('unexpected_native_request');
69
+ } };
70
+ const store = { backend: 'linux-secret-service',
71
+ async get(account) { reads.push(account); return account === anchorAccount ? JSON.stringify(anchor) : null; },
72
+ async put(account) { writes.push(account); }, async delete(account) { writes.push(account); } };
73
+ const configPath = resolve(root, 'device.json');
74
+ await writeFile(configPath, JSON.stringify(config));
75
+ const recovery = { configPath, source: { organizationId: binding.organizationId, workspaceId: binding.workspaceId, repositoryBindingId: binding.repositoryBindingId,
76
+ repositoryFingerprint: config.setupClaimRepositoryFingerprint, policyRevision: 'agent-fabric-policy-v1', scopeDigest: 'sha256:' + 'b'.repeat(64),
77
+ contractDigest: 'sha256:' + 'c'.repeat(64), sourceGenerationId: id(9), sourceReceiptId: 'repo_consent_' + id(9), sourceRevision: 1,
78
+ sourcePolicyRevision: 'repository-source-' + id(9), sourcePolicyHash: 'sha256:' + 'd'.repeat(64) }, store,
79
+ fetcher: (async () => { requests.push('unexpected'); throw Error('no_live_http'); }) };
80
+ const intent = { operationId: id(10), signal: scope.signal, recovery, current: async () => true,
81
+ authorize: async (phase) => phase === 'prepare' };
82
+ const owner = await openCodexBoundSession({ vault, bindingId: binding.bindingId, identity, openTransport: async () => transport,
83
+ verifier: { resolvePublicKey: () => null, consume: async () => false }, budget: { reserve: async () => { reserved++; return true; } } });
84
+ const emit = (method) => {
85
+ state = method === 'turn/started' ? 'active' : 'idle';
86
+ for (const event of [...events])
87
+ event({ method,
88
+ params: { threadId: binding.sessionId, turn: { id: 'original_live_turn', status: state === 'active' ? 'inProgress' : 'completed' } } });
89
+ };
90
+ const call = async (action) => {
91
+ assert.ok(handler);
92
+ return handler({ threadId: binding.sessionId, turnId: 'original_live_turn',
93
+ callId: 'actual_call', namespace: null, tool: 'dharma_signing_recovery', arguments: { operationId: id(10), action } }, { signal: scope.signal });
94
+ };
95
+ return { root, key, vault, binding, identity, transport, intent, owner, reads, writes, requests, rpc, emit, call, scope,
96
+ get reserved() { return reserved; }, get closes() { return closes; }, get handler() { return handler; },
97
+ cleanup: async () => { await owner.close(); vault.close(); key.fill(0); await rm(root, { recursive: true, force: true }); } };
98
+ }
99
+ test('a legacy or unknown catalog is refused without native requests, journal claims, key reads or budget', async () => {
100
+ for (const catalog of [null, 'sha256:' + 'f'.repeat(64)]) {
101
+ const f = await fixture(catalog);
102
+ try {
103
+ const owner = f.owner;
104
+ await assert.rejects(owner.beginSigningRecovery(f.intent), /catalog_unavailable/);
105
+ assert.deepEqual(f.rpc, []);
106
+ assert.deepEqual(f.reads, []);
107
+ assert.equal(f.reserved, 0);
108
+ }
109
+ finally {
110
+ await f.cleanup().catch(() => { });
111
+ }
112
+ }
113
+ });
114
+ test('the actual original bound controller derives identity, prepares through the real client and never dispatches a turn', async () => {
115
+ const f = await fixture();
116
+ try {
117
+ const host = await f.owner.beginSigningRecovery(f.intent);
118
+ assert.deepEqual(f.reads, []);
119
+ assert.equal(f.reserved, 0);
120
+ await assert.rejects(f.owner.runQuestion({ question: {} }), /recovery_only/);
121
+ f.emit('turn/started');
122
+ const response = await f.call('prepare');
123
+ assert.equal(response.success, true);
124
+ const value = JSON.parse(response.contentItems[0].type === 'inputText' ? response.contentItems[0].text : 'null');
125
+ assert.equal(value.threadId, f.binding.sessionId);
126
+ assert.equal(value.turnId, 'original_live_turn');
127
+ assert.equal(value.ready, false);
128
+ assert.equal(value.progress.state, 'prepared');
129
+ assert.ok(f.reads.length > 0);
130
+ assert.deepEqual(f.writes, []);
131
+ assert.deepEqual(f.requests, []);
132
+ assert.equal((await f.call('submit')).success, false);
133
+ assert.equal(f.rpc.some(method => /start|resume|fork|interrupt/.test(method)), false);
134
+ f.emit('turn/completed');
135
+ await host.settled;
136
+ await assert.rejects(f.owner.runWork({ workId: 'not-a-new-grant', prompt: 'Do work', maximumProviderCostCents: 1 }), /recovery_only/);
137
+ await assert.rejects(f.owner.beginSigningRecovery({ ...f.intent, operationId: id(11) }), /owner_consumed/);
138
+ assert.equal(f.vault.getProviderSessionBinding(f.binding.bindingId, f.identity).sessionId, f.binding.sessionId);
139
+ }
140
+ finally {
141
+ await f.cleanup();
142
+ }
143
+ });
144
+ test('durable admission cannot replay the operation after the original owner closes', async () => {
145
+ const f = await fixture();
146
+ try {
147
+ const host = await f.owner.beginSigningRecovery(f.intent);
148
+ await host.close();
149
+ await f.owner.close();
150
+ const nextLifetime = new AbortController();
151
+ let nextRpc = 0;
152
+ const next = await openCodexBoundSession({ vault: f.vault, bindingId: f.binding.bindingId, identity: f.identity,
153
+ openTransport: async () => ({ ...f.transport, signal: nextLifetime.signal, close: async () => { nextLifetime.abort(); },
154
+ request: async () => { nextRpc++; throw Error('must_not_reach_native'); } }),
155
+ verifier: { resolvePublicKey: () => null, consume: async () => false }, budget: { reserve: async () => false } });
156
+ try {
157
+ await assert.rejects(next.beginSigningRecovery(f.intent), /operation_consumed/);
158
+ assert.equal(nextRpc, 0);
159
+ }
160
+ finally {
161
+ await next.close();
162
+ }
163
+ assert.deepEqual(f.reads, []);
164
+ assert.deepEqual(f.requests, []);
165
+ }
166
+ finally {
167
+ await f.cleanup();
168
+ }
169
+ });
170
+ test('current source revocation and accessor-bearing inputs stop before a handler or protected effect', async () => {
171
+ const f = await fixture();
172
+ let getters = 0;
173
+ try {
174
+ const unsafe = { ...f.intent };
175
+ Object.defineProperty(unsafe, 'authorize', { enumerable: true, get() { getters++; return () => true; } });
176
+ await assert.rejects(f.owner.beginSigningRecovery(unsafe), /input_invalid/);
177
+ assert.equal(getters, 0);
178
+ await assert.rejects(f.owner.beginSigningRecovery({ ...f.intent, current: async () => false }), /scope_unavailable/);
179
+ assert.equal(f.handler, undefined);
180
+ assert.deepEqual(f.rpc, []);
181
+ assert.deepEqual(f.reads, []);
182
+ assert.equal(f.reserved, 0);
183
+ }
184
+ finally {
185
+ await f.cleanup();
186
+ }
187
+ });
188
+ test('a private session selection cannot be supplied by the caller', async () => {
189
+ const f = await fixture();
190
+ try {
191
+ await assert.rejects(f.owner.beginSigningRecovery({ ...f.intent, recovery: { ...f.intent.recovery, session: { sessionId: 'foreign' } } }), /input_invalid/);
192
+ assert.deepEqual(f.rpc, []);
193
+ assert.deepEqual(f.reads, []);
194
+ assert.equal(f.handler, undefined);
195
+ }
196
+ finally {
197
+ await f.cleanup();
198
+ }
199
+ });
200
+ test('malformed operation IDs are rejected before journal admission or native effects', async () => {
201
+ const f = await fixture();
202
+ try {
203
+ for (const operationId of [id(10) + '\n', id(10).replace('-8000-', '-0000-'), id(10).replace('-4000-', '-0000-'),
204
+ 'd3000000-0000-4000-8000000000000', id(10).slice(0, -1)]) {
205
+ await assert.rejects(f.owner.beginSigningRecovery({ ...f.intent, operationId }), /input_invalid/);
206
+ }
207
+ assert.equal(f.handler, undefined);
208
+ assert.deepEqual(f.rpc, []);
209
+ assert.deepEqual(f.reads, []);
210
+ assert.equal(f.reserved, 0);
211
+ }
212
+ finally {
213
+ await f.cleanup();
214
+ }
215
+ });
216
+ test('revocation during awaited qualification is observed before durable admission or native metadata', async () => {
217
+ const f = await fixture();
218
+ try {
219
+ await assert.rejects(f.owner.beginSigningRecovery({ ...f.intent, current: async () => {
220
+ f.vault.revokeProviderSessionBinding(f.binding.bindingId, f.identity);
221
+ return true;
222
+ } }), /scope_unavailable/);
223
+ assert.equal(f.handler, undefined);
224
+ assert.deepEqual(f.rpc, []);
225
+ assert.deepEqual(f.reads, []);
226
+ }
227
+ finally {
228
+ await f.cleanup();
229
+ }
230
+ });
231
+ test('close waits for pending qualification and cannot leave a late handler or released live owner', async () => {
232
+ const f = await fixture();
233
+ let release, entered;
234
+ const gate = new Promise(done => { release = done; }), arrived = new Promise(done => { entered = done; });
235
+ try {
236
+ const opening = f.owner.beginSigningRecovery({ ...f.intent, current: async () => { entered(); await gate; return true; } });
237
+ const rejected = assert.rejects(opening, /scope_unavailable/);
238
+ await arrived;
239
+ await assert.rejects(f.owner.runQuestion({ question: {} }), /busy/);
240
+ let closed = false;
241
+ const closing = f.owner.close().then(() => { closed = true; });
242
+ await Promise.resolve();
243
+ assert.equal(closed, false);
244
+ assert.equal(f.closes, 0);
245
+ release();
246
+ await rejected;
247
+ await closing;
248
+ assert.equal(f.closes, 1);
249
+ assert.equal(f.handler, undefined);
250
+ assert.deepEqual(f.rpc, []);
251
+ assert.deepEqual(f.reads, []);
252
+ const lease = f.vault.tryAcquireProviderSessionLease(f.binding.bindingId, f.identity);
253
+ assert.ok(lease);
254
+ lease.release();
255
+ }
256
+ finally {
257
+ release?.();
258
+ await f.cleanup();
259
+ }
260
+ });
261
+ test('the public recovery owner refuses a legacy catalog before its transport factory and offers no peer/work turn', async () => {
262
+ const legacy = await fixture(null);
263
+ try {
264
+ let opened = 0;
265
+ await assert.rejects(openCodexSigningRecoveryOwner({ vault: legacy.vault, bindingId: legacy.binding.bindingId, identity: legacy.identity,
266
+ openTransport: async () => { opened++; throw Error('must_not_open'); } }), /catalog_unavailable/);
267
+ assert.equal(opened, 0);
268
+ }
269
+ finally {
270
+ await legacy.cleanup();
271
+ }
272
+ const f = await fixture();
273
+ try {
274
+ await f.owner.close();
275
+ const lifetime = new AbortController();
276
+ const owner = await openCodexSigningRecoveryOwner({ vault: f.vault, bindingId: f.binding.bindingId, identity: f.identity,
277
+ openTransport: async () => ({ ...f.transport, signal: lifetime.signal, close: async () => { lifetime.abort(); } }) });
278
+ try {
279
+ assert.deepEqual(Object.keys(owner).sort(), ['assertActive', 'beginSigningRecovery', 'close']);
280
+ const host = await owner.beginSigningRecovery(f.intent);
281
+ await host.close();
282
+ assert.deepEqual(f.reads, []);
283
+ assert.deepEqual(f.requests, []);
284
+ assert.equal(f.reserved, 0);
285
+ }
286
+ finally {
287
+ await owner.close();
288
+ }
289
+ }
290
+ finally {
291
+ await f.cleanup();
292
+ }
293
+ });
294
+ });
295
+ //# sourceMappingURL=codexRecoveryController.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexRecoveryController.test.js","sourceRoot":"","sources":["../src/codexRecoveryController.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import assert from 'node:assert/strict';
2
+ import { randomUUID } from 'node:crypto';
2
3
  import { readFile } from 'node:fs/promises';
3
4
  import { runInNewContext } from 'node:vm';
4
5
  import test from 'node:test';
@@ -17,7 +18,7 @@ test('async scoped binding lookup reserves the local question turn before yieldi
17
18
  maximumProviderCostCents: 1 };
18
19
  const open = runInNewContext(`${result.outputText}\nopenCodexBoundSession`, {
19
20
  // Control-flow fixture only: no Linux sandbox or provider execution claim.
20
- process: { platform: 'linux' }, inspectSessionQuestionForBinding: () => ({ ok: true }),
21
+ process: { platform: 'linux' }, AbortController, randomUUID, inspectSessionQuestionForBinding: () => ({ ok: true }),
21
22
  runCodexBridgeQuestion: async () => ({}), runCodexLocalWork: async () => ({}),
22
23
  CodexSessionAnswerTooLargeError: class extends Error {
23
24
  },
@@ -1 +1 @@
1
- {"version":3,"file":"codexScopedDispatch.test.js","sourceRoot":"","sources":["../src/codexScopedDispatch.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codexScopedDispatch.test.js","sourceRoot":"","sources":["../src/codexScopedDispatch.test.ts"],"names":[],"mappings":"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"}