@dharma-ai-labs/agent-fabric 0.2.153 → 0.2.154

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 (300) hide show
  1. package/dist/bootstrapGitScope.test.d.ts +2 -0
  2. package/dist/bootstrapGitScope.test.d.ts.map +1 -0
  3. package/dist/bootstrapGitScope.test.js +115 -0
  4. package/dist/bootstrapGitScope.test.js.map +1 -0
  5. package/dist/bootstrapHostFiles.d.ts +5 -0
  6. package/dist/bootstrapHostFiles.d.ts.map +1 -0
  7. package/dist/bootstrapHostFiles.js +150 -0
  8. package/dist/bootstrapHostFiles.js.map +1 -0
  9. package/dist/bootstrapHostFiles.test.d.ts +2 -0
  10. package/dist/bootstrapHostFiles.test.d.ts.map +1 -0
  11. package/dist/bootstrapHostFiles.test.js +127 -0
  12. package/dist/bootstrapHostFiles.test.js.map +1 -0
  13. package/dist/bootstrapHostScope.d.ts +42 -0
  14. package/dist/bootstrapHostScope.d.ts.map +1 -0
  15. package/dist/bootstrapHostScope.js +224 -0
  16. package/dist/bootstrapHostScope.js.map +1 -0
  17. package/dist/bootstrapHostScope.test.d.ts +2 -0
  18. package/dist/bootstrapHostScope.test.d.ts.map +1 -0
  19. package/dist/bootstrapHostScope.test.js +577 -0
  20. package/dist/bootstrapHostScope.test.js.map +1 -0
  21. package/dist/bootstrapInstallationScope.test.d.ts +2 -0
  22. package/dist/bootstrapInstallationScope.test.d.ts.map +1 -0
  23. package/dist/bootstrapInstallationScope.test.js +68 -0
  24. package/dist/bootstrapInstallationScope.test.js.map +1 -0
  25. package/dist/bootstrapLauncherCaller.test.d.ts +2 -0
  26. package/dist/bootstrapLauncherCaller.test.d.ts.map +1 -0
  27. package/dist/bootstrapLauncherCaller.test.js +91 -0
  28. package/dist/bootstrapLauncherCaller.test.js.map +1 -0
  29. package/dist/bootstrapOwnedChildren.test.d.ts +2 -0
  30. package/dist/bootstrapOwnedChildren.test.d.ts.map +1 -0
  31. package/dist/bootstrapOwnedChildren.test.js +93 -0
  32. package/dist/bootstrapOwnedChildren.test.js.map +1 -0
  33. package/dist/bootstrapPolicyScope.test.d.ts +2 -0
  34. package/dist/bootstrapPolicyScope.test.d.ts.map +1 -0
  35. package/dist/bootstrapPolicyScope.test.js +261 -0
  36. package/dist/bootstrapPolicyScope.test.js.map +1 -0
  37. package/dist/bootstrapProcessCaller.test.d.ts +2 -0
  38. package/dist/bootstrapProcessCaller.test.d.ts.map +1 -0
  39. package/dist/bootstrapProcessCaller.test.js +262 -0
  40. package/dist/bootstrapProcessCaller.test.js.map +1 -0
  41. package/dist/bootstrapRegistryCaller.test.d.ts +2 -0
  42. package/dist/bootstrapRegistryCaller.test.d.ts.map +1 -0
  43. package/dist/bootstrapRegistryCaller.test.js +128 -0
  44. package/dist/bootstrapRegistryCaller.test.js.map +1 -0
  45. package/dist/bootstrapVaultScope.test.d.ts +2 -0
  46. package/dist/bootstrapVaultScope.test.d.ts.map +1 -0
  47. package/dist/bootstrapVaultScope.test.js +105 -0
  48. package/dist/bootstrapVaultScope.test.js.map +1 -0
  49. package/dist/codexBootstrapCompletion.test.d.ts +2 -0
  50. package/dist/codexBootstrapCompletion.test.d.ts.map +1 -0
  51. package/dist/codexBootstrapCompletion.test.js +630 -0
  52. package/dist/codexBootstrapCompletion.test.js.map +1 -0
  53. package/dist/codexBoundSession.d.ts +2 -2
  54. package/dist/codexBoundSession.d.ts.map +1 -1
  55. package/dist/codexBoundSession.js +23 -17
  56. package/dist/codexBoundSession.js.map +1 -1
  57. package/dist/codexBoundSession.test.js +3 -0
  58. package/dist/codexBoundSession.test.js.map +1 -1
  59. package/dist/codexInboxSession.d.ts.map +1 -1
  60. package/dist/codexInboxSession.js +3 -3
  61. package/dist/codexInboxSession.js.map +1 -1
  62. package/dist/codexScopedDispatch.test.d.ts +2 -0
  63. package/dist/codexScopedDispatch.test.d.ts.map +1 -0
  64. package/dist/codexScopedDispatch.test.js +56 -0
  65. package/dist/codexScopedDispatch.test.js.map +1 -0
  66. package/dist/codexSetupAdmission.d.ts +108 -0
  67. package/dist/codexSetupAdmission.d.ts.map +1 -0
  68. package/dist/codexSetupAdmission.js +214 -0
  69. package/dist/codexSetupAdmission.js.map +1 -0
  70. package/dist/codexSetupAdmission.test.d.ts +2 -0
  71. package/dist/codexSetupAdmission.test.d.ts.map +1 -0
  72. package/dist/codexSetupAdmission.test.js +578 -0
  73. package/dist/codexSetupAdmission.test.js.map +1 -0
  74. package/dist/codexSetupChildProvider.test.d.ts +2 -0
  75. package/dist/codexSetupChildProvider.test.d.ts.map +1 -0
  76. package/dist/codexSetupChildProvider.test.js +210 -0
  77. package/dist/codexSetupChildProvider.test.js.map +1 -0
  78. package/dist/codexSetupChildStartup.d.ts +38 -0
  79. package/dist/codexSetupChildStartup.d.ts.map +1 -0
  80. package/dist/codexSetupChildStartup.js +115 -0
  81. package/dist/codexSetupChildStartup.js.map +1 -0
  82. package/dist/codexSetupChildStartup.test.d.ts +2 -0
  83. package/dist/codexSetupChildStartup.test.d.ts.map +1 -0
  84. package/dist/codexSetupChildStartup.test.js +141 -0
  85. package/dist/codexSetupChildStartup.test.js.map +1 -0
  86. package/dist/codexSetupCliDispatch.test.d.ts +2 -0
  87. package/dist/codexSetupCliDispatch.test.d.ts.map +1 -0
  88. package/dist/codexSetupCliDispatch.test.js +138 -0
  89. package/dist/codexSetupCliDispatch.test.js.map +1 -0
  90. package/dist/codexSetupJournalOpen.test.d.ts +2 -0
  91. package/dist/codexSetupJournalOpen.test.d.ts.map +1 -0
  92. package/dist/codexSetupJournalOpen.test.js +101 -0
  93. package/dist/codexSetupJournalOpen.test.js.map +1 -0
  94. package/dist/codexSetupNativeHost.d.ts +31 -0
  95. package/dist/codexSetupNativeHost.d.ts.map +1 -0
  96. package/dist/codexSetupNativeHost.js +208 -0
  97. package/dist/codexSetupNativeHost.js.map +1 -0
  98. package/dist/codexSetupNativeHost.test.d.ts +2 -0
  99. package/dist/codexSetupNativeHost.test.d.ts.map +1 -0
  100. package/dist/codexSetupNativeHost.test.js +456 -0
  101. package/dist/codexSetupNativeHost.test.js.map +1 -0
  102. package/dist/codexSetupNativeWire.test.d.ts +2 -0
  103. package/dist/codexSetupNativeWire.test.d.ts.map +1 -0
  104. package/dist/codexSetupNativeWire.test.js +243 -0
  105. package/dist/codexSetupNativeWire.test.js.map +1 -0
  106. package/dist/codexSetupOwnedConnection.d.ts +14 -0
  107. package/dist/codexSetupOwnedConnection.d.ts.map +1 -0
  108. package/dist/codexSetupOwnedConnection.js +64 -0
  109. package/dist/codexSetupOwnedConnection.js.map +1 -0
  110. package/dist/codexSetupOwnedConnection.test.d.ts +2 -0
  111. package/dist/codexSetupOwnedConnection.test.d.ts.map +1 -0
  112. package/dist/codexSetupOwnedConnection.test.js +192 -0
  113. package/dist/codexSetupOwnedConnection.test.js.map +1 -0
  114. package/dist/codexSetupPortalCommand.test.d.ts +2 -0
  115. package/dist/codexSetupPortalCommand.test.d.ts.map +1 -0
  116. package/dist/codexSetupPortalCommand.test.js +146 -0
  117. package/dist/codexSetupPortalCommand.test.js.map +1 -0
  118. package/dist/codexSetupReadiness.d.ts +23 -0
  119. package/dist/codexSetupReadiness.d.ts.map +1 -0
  120. package/dist/codexSetupReadiness.js +74 -0
  121. package/dist/codexSetupReadiness.js.map +1 -0
  122. package/dist/codexSetupReadiness.test.d.ts +2 -0
  123. package/dist/codexSetupReadiness.test.d.ts.map +1 -0
  124. package/dist/codexSetupReadiness.test.js +145 -0
  125. package/dist/codexSetupReadiness.test.js.map +1 -0
  126. package/dist/codexSetupSessionCaller.test.d.ts +2 -0
  127. package/dist/codexSetupSessionCaller.test.d.ts.map +1 -0
  128. package/dist/codexSetupSessionCaller.test.js +352 -0
  129. package/dist/codexSetupSessionCaller.test.js.map +1 -0
  130. package/dist/codexSetupSessionHandoff.d.ts +48 -0
  131. package/dist/codexSetupSessionHandoff.d.ts.map +1 -0
  132. package/dist/codexSetupSessionHandoff.js +146 -0
  133. package/dist/codexSetupSessionHandoff.js.map +1 -0
  134. package/dist/codexSetupSessionHandoff.test.d.ts +2 -0
  135. package/dist/codexSetupSessionHandoff.test.d.ts.map +1 -0
  136. package/dist/codexSetupSessionHandoff.test.js +289 -0
  137. package/dist/codexSetupSessionHandoff.test.js.map +1 -0
  138. package/dist/codexSetupTransport.test.d.ts +2 -0
  139. package/dist/codexSetupTransport.test.d.ts.map +1 -0
  140. package/dist/codexSetupTransport.test.js +206 -0
  141. package/dist/codexSetupTransport.test.js.map +1 -0
  142. package/dist/codexSetupVaultJournal.d.ts +13 -0
  143. package/dist/codexSetupVaultJournal.d.ts.map +1 -0
  144. package/dist/codexSetupVaultJournal.js +28 -0
  145. package/dist/codexSetupVaultJournal.js.map +1 -0
  146. package/dist/codexSetupVaultJournal.test.d.ts +2 -0
  147. package/dist/codexSetupVaultJournal.test.d.ts.map +1 -0
  148. package/dist/codexSetupVaultJournal.test.js +104 -0
  149. package/dist/codexSetupVaultJournal.test.js.map +1 -0
  150. package/dist/containerChildCleanup.test.d.ts +2 -0
  151. package/dist/containerChildCleanup.test.d.ts.map +1 -0
  152. package/dist/containerChildCleanup.test.js +145 -0
  153. package/dist/containerChildCleanup.test.js.map +1 -0
  154. package/dist/containerRelayLifecycle.d.ts +1 -1
  155. package/dist/containerRelayLifecycle.d.ts.map +1 -1
  156. package/dist/containerRelayLifecycle.js +29 -37
  157. package/dist/containerRelayLifecycle.js.map +1 -1
  158. package/dist/cooperativeInboxSession.d.ts +2 -2
  159. package/dist/cooperativeInboxSession.d.ts.map +1 -1
  160. package/dist/cooperativeInboxSession.js +21 -13
  161. package/dist/cooperativeInboxSession.js.map +1 -1
  162. package/dist/cooperativeInboxSession.test.js +65 -0
  163. package/dist/cooperativeInboxSession.test.js.map +1 -1
  164. package/dist/demoWatchControl.d.ts +3 -3
  165. package/dist/index.d.ts +55 -14
  166. package/dist/index.d.ts.map +1 -1
  167. package/dist/index.js +1642 -553
  168. package/dist/index.js.map +1 -1
  169. package/dist/namedCodexSkillDiscovery.d.ts +15 -0
  170. package/dist/namedCodexSkillDiscovery.d.ts.map +1 -0
  171. package/dist/namedCodexSkillDiscovery.js +90 -0
  172. package/dist/namedCodexSkillDiscovery.js.map +1 -0
  173. package/dist/namedCodexSkillDiscovery.test.d.ts +2 -0
  174. package/dist/namedCodexSkillDiscovery.test.d.ts.map +1 -0
  175. package/dist/namedCodexSkillDiscovery.test.js +37 -0
  176. package/dist/namedCodexSkillDiscovery.test.js.map +1 -0
  177. package/dist/namedCodexThread.d.ts +2 -0
  178. package/dist/namedCodexThread.d.ts.map +1 -1
  179. package/dist/namedCodexThread.js +13 -4
  180. package/dist/namedCodexThread.js.map +1 -1
  181. package/dist/namedSessionChildOwner.d.ts +17 -0
  182. package/dist/namedSessionChildOwner.d.ts.map +1 -0
  183. package/dist/namedSessionChildOwner.js +122 -0
  184. package/dist/namedSessionChildOwner.js.map +1 -0
  185. package/dist/namedSessionChildOwner.test.d.ts +2 -0
  186. package/dist/namedSessionChildOwner.test.d.ts.map +1 -0
  187. package/dist/namedSessionChildOwner.test.js +203 -0
  188. package/dist/namedSessionChildOwner.test.js.map +1 -0
  189. package/dist/namedSessionEvidence.d.ts +2 -2
  190. package/dist/namedSessionEvidence.d.ts.map +1 -1
  191. package/dist/namedSessionEvidence.js +2 -2
  192. package/dist/namedSessionEvidence.js.map +1 -1
  193. package/dist/namedSessionEvidence.test.js +24 -1
  194. package/dist/namedSessionEvidence.test.js.map +1 -1
  195. package/dist/namedSessionRepositoryState.d.ts +2 -2
  196. package/dist/namedSessionRepositoryState.d.ts.map +1 -1
  197. package/dist/namedSessionService.d.ts +4 -2
  198. package/dist/namedSessionService.d.ts.map +1 -1
  199. package/dist/namedSessionService.js +18 -1
  200. package/dist/namedSessionService.js.map +1 -1
  201. package/dist/namedSessionService.test.js +31 -2
  202. package/dist/namedSessionService.test.js.map +1 -1
  203. package/dist/namedSessionTaskExportSync.d.ts +3 -3
  204. package/dist/namedSessionTaskExportSync.d.ts.map +1 -1
  205. package/dist/namedSessionTaskExportSync.js +6 -6
  206. package/dist/namedSessionTaskExportSync.js.map +1 -1
  207. package/dist/namedSessionTrust.d.ts +2 -2
  208. package/dist/namedSessionTrust.d.ts.map +1 -1
  209. package/dist/namedSessionTrust.js +3 -2
  210. package/dist/namedSessionTrust.js.map +1 -1
  211. package/dist/namedSessionTrust.test.js +2 -1
  212. package/dist/namedSessionTrust.test.js.map +1 -1
  213. package/dist/ownedChildLifecycle.d.ts +13 -0
  214. package/dist/ownedChildLifecycle.d.ts.map +1 -0
  215. package/dist/ownedChildLifecycle.js +87 -0
  216. package/dist/ownedChildLifecycle.js.map +1 -0
  217. package/dist/ownedChildLifecycle.test.d.ts +2 -0
  218. package/dist/ownedChildLifecycle.test.d.ts.map +1 -0
  219. package/dist/ownedChildLifecycle.test.js +133 -0
  220. package/dist/ownedChildLifecycle.test.js.map +1 -0
  221. package/dist/pidLock.test.js +242 -9
  222. package/dist/pidLock.test.js.map +1 -1
  223. package/dist/providerSessionChannel.d.ts +1 -1
  224. package/dist/providerSessionChannel.d.ts.map +1 -1
  225. package/dist/providerSessionChannel.js +7 -3
  226. package/dist/providerSessionChannel.js.map +1 -1
  227. package/dist/providerSessionChannel.test.js +20 -0
  228. package/dist/providerSessionChannel.test.js.map +1 -1
  229. package/dist/providerSessionReplyRecovery.d.ts +2 -2
  230. package/dist/providerSessionReplyRecovery.d.ts.map +1 -1
  231. package/dist/providerSessionReplyRecovery.js +3 -3
  232. package/dist/providerSessionReplyRecovery.js.map +1 -1
  233. package/dist/relayAutostart.d.ts.map +1 -1
  234. package/dist/relayAutostart.js +12 -9
  235. package/dist/relayAutostart.js.map +1 -1
  236. package/dist/relayRuntimeUpgrade.d.ts +1 -1
  237. package/dist/relaySupervisor.d.ts.map +1 -1
  238. package/dist/relaySupervisor.js +19 -14
  239. package/dist/relaySupervisor.js.map +1 -1
  240. package/dist/relaySupervisor.test.js +26 -0
  241. package/dist/relaySupervisor.test.js.map +1 -1
  242. package/dist/relaySupervisorCleanup.test.d.ts +2 -0
  243. package/dist/relaySupervisorCleanup.test.d.ts.map +1 -0
  244. package/dist/relaySupervisorCleanup.test.js +69 -0
  245. package/dist/relaySupervisorCleanup.test.js.map +1 -0
  246. package/dist/repositoryInstallerFiles.d.ts +19 -1
  247. package/dist/repositoryInstallerFiles.d.ts.map +1 -1
  248. package/dist/repositoryInstallerFiles.js +205 -29
  249. package/dist/repositoryInstallerFiles.js.map +1 -1
  250. package/dist/repositoryInstallerScope.test.d.ts +2 -0
  251. package/dist/repositoryInstallerScope.test.d.ts.map +1 -0
  252. package/dist/repositoryInstallerScope.test.js +513 -0
  253. package/dist/repositoryInstallerScope.test.js.map +1 -0
  254. package/dist/repositoryKnowledge.d.ts.map +1 -1
  255. package/dist/repositoryKnowledge.js +177 -37
  256. package/dist/repositoryKnowledge.js.map +1 -1
  257. package/dist/repositoryKnowledgeScope.test.d.ts +2 -0
  258. package/dist/repositoryKnowledgeScope.test.d.ts.map +1 -0
  259. package/dist/repositoryKnowledgeScope.test.js +316 -0
  260. package/dist/repositoryKnowledgeScope.test.js.map +1 -0
  261. package/dist/repositoryOnboardingCaller.test.js +61 -4
  262. package/dist/repositoryOnboardingCaller.test.js.map +1 -1
  263. package/dist/repositoryPackage.d.ts.map +1 -1
  264. package/dist/repositoryPackage.js +340 -59
  265. package/dist/repositoryPackage.js.map +1 -1
  266. package/dist/repositoryPackageDelivery.test.js +65 -0
  267. package/dist/repositoryPackageDelivery.test.js.map +1 -1
  268. package/dist/repositoryPackageScope.test.d.ts +2 -0
  269. package/dist/repositoryPackageScope.test.d.ts.map +1 -0
  270. package/dist/repositoryPackageScope.test.js +578 -0
  271. package/dist/repositoryPackageScope.test.js.map +1 -0
  272. package/dist/schemas/codex-setup-child-start.schema.json +12 -0
  273. package/dist/schemas/codex-setup-intent.schema.json +27 -0
  274. package/dist/schemas/local-codex-setup-session.schema.json +39 -0
  275. package/dist/schemas/setup-claim-failure.schema.json +15 -0
  276. package/dist/skillInstallationScope.test.d.ts +2 -0
  277. package/dist/skillInstallationScope.test.d.ts.map +1 -0
  278. package/dist/skillInstallationScope.test.js +64 -0
  279. package/dist/skillInstallationScope.test.js.map +1 -0
  280. package/dist/skillPreparationCache.test.js +12 -4
  281. package/dist/skillPreparationCache.test.js.map +1 -1
  282. package/dist/skillPreparationCaller.test.js +31 -1
  283. package/dist/skillPreparationCaller.test.js.map +1 -1
  284. package/dist/startupCommitScope.test.d.ts +2 -0
  285. package/dist/startupCommitScope.test.d.ts.map +1 -0
  286. package/dist/startupCommitScope.test.js +172 -0
  287. package/dist/startupCommitScope.test.js.map +1 -0
  288. package/dist/workspaceRegistry.d.ts.map +1 -1
  289. package/dist/workspaceRegistry.js +7 -3
  290. package/dist/workspaceRegistry.js.map +1 -1
  291. package/dist/workspaceRegistry.test.js +51 -0
  292. package/dist/workspaceRegistry.test.js.map +1 -1
  293. package/dist/workspaceRegistryRecovery.d.ts.map +1 -1
  294. package/dist/workspaceRegistryRecovery.js +171 -64
  295. package/dist/workspaceRegistryRecovery.js.map +1 -1
  296. package/dist/workspaceRegistryRecoveryScope.test.d.ts +2 -0
  297. package/dist/workspaceRegistryRecoveryScope.test.d.ts.map +1 -0
  298. package/dist/workspaceRegistryRecoveryScope.test.js +416 -0
  299. package/dist/workspaceRegistryRecoveryScope.test.js.map +1 -0
  300. package/package.json +7 -7
@@ -0,0 +1,146 @@
1
+ import assert from 'node:assert/strict';
2
+ import { readFile } from 'node:fs/promises';
3
+ import { resolve } from 'node:path';
4
+ import { compileFunction } from 'node:vm';
5
+ import test from 'node:test';
6
+ import ts from 'typescript';
7
+ import { prepareCodexBootstrapHost } from './bootstrapHostScope.js';
8
+ import { parseCliOptions, sourceRepositoryFingerprint } from './index.js';
9
+ // Real public-command binding; only its subsequent native startup is synthetic.
10
+ async function fixture() {
11
+ const now = Date.now(), id = (n) => `${String(n).padStart(8, '0')}-1111-4111-8111-111111111111`;
12
+ let starts = 0, supplied, allowed = true, nested = false;
13
+ const input = { workspace: resolve('synthetic-source'), name: 'implementer', signal: new AbortController().signal,
14
+ current: async () => allowed, reserve: async () => true, maximumProviderCostCents: 25,
15
+ expectedAccountEmail: 'synthetic@example.test', intent: { schema: 'dharma.codex-setup-intent/v1',
16
+ operationId: id(1), setupReference: id(2), organizationId: 'org_demo', recipientMembershipId: id(3),
17
+ hostContextId: id(4), origin: 'https://hq.example', repositoryFingerprint: sourceRepositoryFingerprint('https://github.com/demo/source.git').fingerprint,
18
+ scopeDigest: `sha256:${'b'.repeat(64)}`, contractDigest: `sha256:${'c'.repeat(64)}`, policyRevision: 'policy-v1',
19
+ issuedAt: new Date(now - 1000).toISOString(), expiresAt: new Date(now + 60_000).toISOString() } };
20
+ const scope = prepareCodexBootstrapHost({ intent: input.intent,
21
+ workspace: input.workspace, signal: input.signal, current: input.current });
22
+ const argv = ['bootstrap', ...[...scope.flags].flatMap(([key, value]) => value === true ? [`--${key}`] : [`--${key}`, String(value)])];
23
+ scope.scope.close();
24
+ const source = await readFile(new URL('../src/index.ts', import.meta.url), 'utf8');
25
+ const ast = ts.createSourceFile('index.ts', source, ts.ScriptTarget.Latest, true);
26
+ const matches = ast.statements.filter(node => ts.isFunctionDeclaration(node) && node.name?.text === 'openCodexBootstrapFromPortalCommand');
27
+ assert.equal(matches.length, 1);
28
+ const compiled = ts.transpileModule(matches[0].getText(ast), { compilerOptions: {
29
+ target: ts.ScriptTarget.ES2023, module: ts.ModuleKind.CommonJS
30
+ }, reportDiagnostics: true });
31
+ assert.equal(compiled.diagnostics?.filter(d => d.category === ts.DiagnosticCategory.Error).length, 0);
32
+ const dependencies = { currentBootstrapHostScope: () => nested ? {} : undefined,
33
+ prepareCodexBootstrapHost, parseCliOptions, resolve, Buffer, URL, sourceRepositoryFingerprint,
34
+ openCodexBootstrapNativeHost: async (value) => { starts++; supplied = value; return { threadId: 'synthetic-native' }; } };
35
+ const open = compileFunction(`${compiled.outputText}\nreturn openCodexBootstrapFromPortalCommand;`, ['exports', ...Object.keys(dependencies)])({}, ...Object.values(dependencies));
36
+ return { input, argv, open, get starts() { return starts; }, get supplied() { return supplied; },
37
+ withdraw() { allowed = false; }, nested() { nested = true; } };
38
+ }
39
+ test('portal command enters the owning host with only the fixed recipient/source intent and budget', async () => {
40
+ const f = await fixture();
41
+ const args = [...f.argv];
42
+ args[args.indexOf('--workspace') + 1] = '.';
43
+ args[args.indexOf('--provider') + 1] = 'auto';
44
+ assert.equal((await f.open({ ...f.input, portalArgs: args })).threadId, 'synthetic-native');
45
+ assert.equal(f.starts, 1);
46
+ assert.deepEqual(f.supplied.intent, f.input.intent);
47
+ assert.notEqual(f.supplied.intent, f.input.intent);
48
+ assert.equal(f.supplied.reserve, f.input.reserve);
49
+ assert.equal(f.supplied.maximumProviderCostCents, 25);
50
+ assert.equal('portalArgs' in f.supplied, false);
51
+ });
52
+ test('matching public selected-repository URL is validated, never cloned or passed as startup authority', async () => {
53
+ const f = await fixture();
54
+ const args = [...f.argv, '--repository-url-base64url', Buffer.from('https://github.com/demo/source.git').toString('base64url')];
55
+ await f.open({ ...f.input, portalArgs: args });
56
+ assert.equal(f.starts, 1);
57
+ assert.equal('repository-url-base64url' in f.supplied, false);
58
+ assert.equal(f.supplied.workspace, f.input.workspace);
59
+ });
60
+ for (const cause of ['command', 'extra', 'duplicate', 'grant', 'private-prompt', 'resume', 'join', 'dry-run', 'help',
61
+ 'recipient', 'reference', 'organization', 'origin', 'policy', 'scope', 'contract', 'workspace', 'provider', 'incomplete']) {
62
+ test(`portal binding rejects ${cause} before native/store/model admission`, async () => {
63
+ const f = await fixture(), args = [...f.argv];
64
+ const replace = (key, value) => { args[args.indexOf(`--${key}`) + 1] = value; };
65
+ if (cause === 'command')
66
+ args[0] = 'status';
67
+ if (cause === 'extra')
68
+ args.push('shell-fragment');
69
+ if (cause === 'duplicate')
70
+ args.push('--setup-reference', String(f.input.intent.setupReference));
71
+ if (cause === 'grant')
72
+ args.push('--grant', 'private-canary-never-echo');
73
+ if (cause === 'private-prompt')
74
+ args.push('--grant-prompt');
75
+ if (cause === 'resume')
76
+ args.push('--resume');
77
+ if (cause === 'join')
78
+ args.push('--join-repository-binding-id', f.input.intent.operationId);
79
+ if (cause === 'dry-run')
80
+ args.push('--dry-run');
81
+ if (cause === 'help')
82
+ args.push('--help');
83
+ if (cause === 'recipient')
84
+ replace('setup-recipient-membership-id', f.input.intent.operationId);
85
+ if (cause === 'reference')
86
+ replace('setup-reference', f.input.intent.operationId);
87
+ if (cause === 'organization')
88
+ replace('organization-id', 'org_foreign');
89
+ if (cause === 'origin')
90
+ replace('portal-url', 'https://foreign.example');
91
+ if (cause === 'policy')
92
+ replace('policy-revision', 'foreign-policy');
93
+ if (cause === 'scope')
94
+ replace('setup-scope-digest', `sha256:${'d'.repeat(64)}`);
95
+ if (cause === 'contract')
96
+ replace('setup-contract-digest', `sha256:${'d'.repeat(64)}`);
97
+ if (cause === 'workspace')
98
+ replace('workspace', resolve('foreign-workspace'));
99
+ if (cause === 'provider')
100
+ replace('provider', 'foreign');
101
+ if (cause === 'incomplete')
102
+ args.splice(args.indexOf('--complete'), 1);
103
+ await assert.rejects(f.open({ ...f.input, portalArgs: args }), /^Error: codex_setup_portal_command_mismatch$/);
104
+ assert.equal(f.starts, 0);
105
+ });
106
+ }
107
+ for (const [cause, remote] of [['foreign', 'https://github.com/foreign/source.git'],
108
+ ['userinfo', 'https://user:private-canary@github.com/demo/source.git'],
109
+ ['http', 'http://github.com/demo/source.git'], ['file', 'file:///tmp/source'],
110
+ ['query', 'https://github.com/demo/source.git?private-canary'],
111
+ ['fragment', 'https://github.com/demo/source.git#fragment'], ['missing-path', 'https://github.com/'],
112
+ ['control-character', '\u0000https://github.com/demo/source.git']]) {
113
+ test(`portal selected URL refuses ${cause} source`, async () => {
114
+ const f = await fixture(), args = [...f.argv, '--repository-url-base64url', Buffer.from(remote).toString('base64url')];
115
+ await assert.rejects(f.open({ ...f.input, portalArgs: args }), /^Error: codex_setup_portal_command_mismatch$/);
116
+ assert.equal(f.starts, 0);
117
+ });
118
+ }
119
+ for (const cause of ['overlong', 'sparse', 'noncanonical-base64', 'non-utf8']) {
120
+ test(`portal argument framing rejects ${cause} without native effects`, async () => {
121
+ const f = await fixture(), args = [...f.argv];
122
+ if (cause === 'overlong')
123
+ args.push('a'.repeat(4097));
124
+ if (cause === 'sparse')
125
+ args.length++;
126
+ if (cause === 'noncanonical-base64')
127
+ args.push('--repository-url-base64url', 'abc=');
128
+ if (cause === 'non-utf8')
129
+ args.push('--repository-url-base64url', Buffer.from([255, 254]).toString('base64url'));
130
+ await assert.rejects(f.open({ ...f.input, portalArgs: args }), /^Error: codex_setup_portal_command_mismatch$/);
131
+ assert.equal(f.starts, 0);
132
+ });
133
+ }
134
+ test('portal binding refuses lost host authority rather than starting a replacement', async () => {
135
+ const f = await fixture();
136
+ f.withdraw();
137
+ await assert.rejects(f.open({ ...f.input, portalArgs: f.argv }), /codex_setup_host_scope_unavailable/);
138
+ assert.equal(f.starts, 0);
139
+ });
140
+ test('portal binding cannot be invoked from a borrowed setup/peer descendant', async () => {
141
+ const f = await fixture();
142
+ f.nested();
143
+ await assert.rejects(f.open({ ...f.input, portalArgs: f.argv }), /codex_setup_host_context_conflict/);
144
+ assert.equal(f.starts, 0);
145
+ });
146
+ //# sourceMappingURL=codexSetupPortalCommand.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexSetupPortalCommand.test.js","sourceRoot":"","sources":["../src/codexSetupPortalCommand.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { type LocalCodexSetupReadiness } from '@dharma-ai-labs/agent-fabric-local-vault/setup-readiness';
2
+ import type { ScopedLocalVault } from '@dharma-ai-labs/agent-fabric-local-vault';
3
+ import { type BootstrapHostScope } from './bootstrapHostScope.js';
4
+ import type { CodexSetupExecutionLease, CodexSetupIntent } from './codexSetupAdmission.js';
5
+ type Store = Pick<ScopedLocalVault, 'recordCodexSetupReadiness' | 'getCodexSetupReadiness'>;
6
+ /** Host-only persistence/verification. This is not a runtime observer and must
7
+ * never be registered as a model/peer tool. Its observer must independently
8
+ * read the signed package, protected identity and actual native runtime. */
9
+ export declare function createCodexSetupReadinessOwner(input: {
10
+ intent: CodexSetupIntent;
11
+ workspace: string;
12
+ scope: BootstrapHostScope;
13
+ vault: Store;
14
+ observe(intent: Readonly<CodexSetupIntent>, scope: BootstrapHostScope, retained?: Readonly<LocalCodexSetupReadiness>, intentDigest?: string): Promise<LocalCodexSetupReadiness>;
15
+ }): Readonly<{
16
+ record: (lease: Readonly<CodexSetupExecutionLease>) => Promise<{
17
+ state: "completed";
18
+ readinessReceiptId: string;
19
+ }>;
20
+ verify: (receiptId: string, requested: Readonly<CodexSetupIntent>, intentDigest: string) => Promise<boolean>;
21
+ }>;
22
+ export {};
23
+ //# sourceMappingURL=codexSetupReadiness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexSetupReadiness.d.ts","sourceRoot":"","sources":["../src/codexSetupReadiness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgC,KAAK,wBAAwB,EAAC,MAC9D,0DAA0D,CAAC;AAClE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAA4B,KAAK,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC3F,OAAO,KAAK,EAAC,wBAAwB,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAEzF,KAAK,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,2BAA2B,GAAG,wBAAwB,CAAC,CAAC;AAE5F;;4EAE4E;AAC5E,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACpD,MAAM,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IACrF,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,kBAAkB,EACnE,QAAQ,CAAC,EAAE,QAAQ,CAAC,wBAAwB,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;CAC5G;oBA0ByB,QAAQ,CAAC,wBAAwB,CAAC;;;;wBAkB9B,MAAM,aAAa,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,MAAM;GAchG"}
@@ -0,0 +1,74 @@
1
+ import { canonicalize } from '@dharma-ai-labs/agent-fabric-contracts';
2
+ import { types } from 'node:util';
3
+ import { parseLocalCodexSetupReadiness } from '@dharma-ai-labs/agent-fabric-local-vault/setup-readiness';
4
+ import { prepareCodexBootstrapHost } from './bootstrapHostScope.js';
5
+ /** Host-only persistence/verification. This is not a runtime observer and must
6
+ * never be registered as a model/peer tool. Its observer must independently
7
+ * read the signed package, protected identity and actual native runtime. */
8
+ export function createCodexSetupReadinessOwner(input) {
9
+ const { scope, vault, observe } = input;
10
+ const prepared = prepareCodexBootstrapHost({ intent: input.intent, workspace: input.workspace,
11
+ signal: scope.signal, current: () => scope.current() });
12
+ const intent = prepared.intent;
13
+ // The parent owns lifecycle withdrawal; the temporary validation scope adds
14
+ // no independent operation or authority.
15
+ prepared.scope.close();
16
+ const sameIntent = (value) => canonicalize(value) === canonicalize(intent);
17
+ const bound = (raw, requireRecent) => {
18
+ const value = parseLocalCodexSetupReadiness(raw), now = Date.now();
19
+ if (value.operationId !== intent.operationId || value.organizationId !== intent.organizationId
20
+ || value.membershipId !== intent.recipientMembershipId || value.repositoryFingerprint !== intent.repositoryFingerprint
21
+ || value.policyRevision !== intent.policyRevision || value.contractDigest !== intent.contractDigest
22
+ || Date.parse(value.verifiedAt) < Date.parse(intent.issuedAt)
23
+ || Date.parse(value.verifiedAt) > now || requireRecent && now - Date.parse(value.verifiedAt) > 60_000
24
+ || Date.parse(value.expiresAt) > Date.parse(intent.expiresAt) || now >= Date.parse(value.expiresAt)) {
25
+ throw new Error('setup_readiness_context_unconfirmed');
26
+ }
27
+ return value;
28
+ };
29
+ const stable = (value) => {
30
+ const { verifiedAt: _verified, relayPolledAt: _poll, expiresAt: _expiry, ...identity } = value;
31
+ return canonicalize(identity);
32
+ };
33
+ return Object.freeze({
34
+ record: async (lease) => {
35
+ // Snapshot original lease strings before the first asynchronous check.
36
+ if (!lease || typeof lease !== 'object' || types.isProxy(lease))
37
+ throw new Error('setup_readiness_lease_invalid');
38
+ const fields = Object.getOwnPropertyDescriptors(lease);
39
+ if (Reflect.ownKeys(fields).length !== 2 || !Object.hasOwn(fields.leaseId ?? {}, 'value')
40
+ || !Object.hasOwn(fields.intentDigest ?? {}, 'value')
41
+ || typeof fields.leaseId.value !== 'string' || typeof fields.intentDigest.value !== 'string') {
42
+ throw new Error('setup_readiness_lease_invalid');
43
+ }
44
+ const leaseId = fields.leaseId.value, intentDigest = fields.intentDigest.value;
45
+ const observation = await scope.step(async () => bound(await observe(intent, scope, undefined, intentDigest), true));
46
+ const receipt = await scope.step(() => vault.recordCodexSetupReadiness(leaseId, intentDigest, observation));
47
+ // Do not acknowledge a write solely from its return value.
48
+ const persisted = await scope.step(() => vault.getCodexSetupReadiness(receipt.receiptId, intent.operationId, intentDigest));
49
+ if (!persisted || persisted.observationHash !== receipt.observationHash
50
+ || canonicalize(persisted.observation) !== canonicalize(observation))
51
+ throw new Error('setup_readiness_persistence_unconfirmed');
52
+ return { state: 'completed', readinessReceiptId: persisted.receiptId };
53
+ },
54
+ verify: async (receiptId, requested, intentDigest) => {
55
+ try {
56
+ await scope.assert();
57
+ if (!sameIntent(requested))
58
+ return false;
59
+ const receipt = await scope.step(() => vault.getCodexSetupReadiness(receiptId, intent.operationId, intentDigest));
60
+ if (!receipt)
61
+ return false;
62
+ // A durable receipt is historical evidence. Its age is not current
63
+ // liveness; only the separately observed runtime must be recent.
64
+ const retained = bound(receipt.observation, false);
65
+ const current = await scope.step(async () => bound(await observe(intent, scope, retained, intentDigest), true));
66
+ return stable(retained) === stable(current) && await scope.current();
67
+ }
68
+ catch {
69
+ return false;
70
+ }
71
+ },
72
+ });
73
+ }
74
+ //# sourceMappingURL=codexSetupReadiness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexSetupReadiness.js","sourceRoot":"","sources":["../src/codexSetupReadiness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=codexSetupReadiness.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexSetupReadiness.test.d.ts","sourceRoot":"","sources":["../src/codexSetupReadiness.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,145 @@
1
+ import assert from 'node:assert/strict';
2
+ import { randomBytes } from 'node:crypto';
3
+ import { mkdtemp, rm } from 'node:fs/promises';
4
+ import { tmpdir } from 'node:os';
5
+ import { resolve } from 'node:path';
6
+ import test from 'node:test';
7
+ import { LocalVault } from '@dharma-ai-labs/agent-fabric-local-vault';
8
+ import { prepareCodexBootstrapHost } from './bootstrapHostScope.js';
9
+ import { createCodexSetupReadinessOwner } from './codexSetupReadiness.js';
10
+ const id = (n) => `${String(n).padStart(8, '0')}-1111-4111-8111-111111111111`, hash = `sha256:${'a'.repeat(64)}`;
11
+ async function fixture(run) {
12
+ const root = await mkdtemp(resolve(tmpdir(), 'fabric-readiness-owner-')), now = Date.now();
13
+ const prepared = prepareCodexBootstrapHost({ workspace: root, signal: new AbortController().signal, current: async () => true,
14
+ intent: { schema: 'dharma.codex-setup-intent/v1', operationId: id(1), setupReference: id(2),
15
+ organizationId: 'org_demo', recipientMembershipId: id(3), origin: 'https://hq.example',
16
+ repositoryFingerprint: hash, policyRevision: 'policy-v1', scopeDigest: hash, contractDigest: hash,
17
+ hostContextId: id(4), issuedAt: new Date(now - 1000).toISOString(), expiresAt: new Date(now + 600_000).toISOString() } });
18
+ const value = { schema: 'dharma.local-codex-setup-readiness/v1',
19
+ operationId: id(1), organizationId: 'org_demo', membershipId: id(3), deviceId: id(5), workspaceId: id(6),
20
+ repositoryBindingId: id(7), repositoryAgentId: id(8), endpointId: id(9), sessionBindingId: id(10), sessionId: 'synthetic_session',
21
+ repositoryFingerprint: hash, policyRevision: 'policy-v1', policyHash: hash, manifestHash: hash, catalogHash: hash,
22
+ bundleId: id(11), bundleHash: hash, activeReceiptHash: hash, roleRevision: 1, roleProfileHash: hash,
23
+ nativeSkillHash: hash, contractDigest: hash, cliVersion: '0.2.153', relayPid: 123,
24
+ relayPolledAt: new Date(now - 500).toISOString(), startupBackend: 'systemd-user',
25
+ firstLearning: 'no_eligible_history', verifiedAt: new Date(now).toISOString(), expiresAt: prepared.intent.expiresAt };
26
+ const vault = await LocalVault.open({ root: resolve(root, 'vault'), masterKey: randomBytes(32) }, prepared.scope);
27
+ try {
28
+ const claim = await vault.claimCodexSetupOperation(id(1), hash);
29
+ if (claim.state !== 'acquired')
30
+ throw new Error('fixture_claim_missing');
31
+ let observations = 0, retained;
32
+ const observedDigests = [];
33
+ const owner = createCodexSetupReadinessOwner({ intent: prepared.intent, workspace: root, scope: prepared.scope, vault,
34
+ observe: async (_intent, _scope, historical, digest) => { observations++; retained = historical; observedDigests.push(digest); return { ...value }; } });
35
+ await run({ owner, intent: prepared.intent, lease: { leaseId: claim.leaseId, intentDigest: hash }, scope: prepared.scope,
36
+ value, observations: () => observations, retained: () => retained, observedDigests: () => [...observedDigests] });
37
+ }
38
+ finally {
39
+ prepared.scope.close();
40
+ await vault.close();
41
+ await rm(root, { recursive: true, force: true });
42
+ }
43
+ }
44
+ test('owner persists a real receipt and verifies it by a separate fresh observation', async () => {
45
+ await fixture(async (f) => {
46
+ const result = await f.owner.record(f.lease);
47
+ assert.equal(result.state, 'completed');
48
+ assert.equal(f.observations(), 1);
49
+ assert.equal(f.retained(), undefined);
50
+ assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), true);
51
+ assert.equal(f.observations(), 2);
52
+ assert.equal(Object.isFrozen(f.retained()), true);
53
+ assert.equal(f.retained().firstLearning, 'no_eligible_history');
54
+ assert.equal(await f.owner.verify(id(99), f.intent, hash), false);
55
+ assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, `sha256:${'b'.repeat(64)}`), false);
56
+ });
57
+ });
58
+ test('readiness observer receives the exact original digest on record and independent verification', async () => {
59
+ await fixture(async (f) => {
60
+ const result = await f.owner.record(f.lease);
61
+ assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), true);
62
+ assert.deepEqual(f.observedDigests(), [hash, hash]);
63
+ });
64
+ });
65
+ test('generic completion status and incomplete runtime state cannot become readiness', async () => {
66
+ await fixture(async (f) => {
67
+ Object.assign(f.value, { relayPid: 0 });
68
+ await assert.rejects(f.owner.record(f.lease), /setup_readiness_invalid/);
69
+ });
70
+ });
71
+ test('changed current identity, package, role, runtime or contract invalidates an existing receipt', async () => {
72
+ await fixture(async (f) => {
73
+ const result = await f.owner.record(f.lease), original = { ...f.value };
74
+ for (const delta of [{ deviceId: id(30) }, { endpointId: id(30) }, { sessionId: 'different_session' },
75
+ { manifestHash: `sha256:${'b'.repeat(64)}` }, { catalogHash: `sha256:${'b'.repeat(64)}` },
76
+ { roleRevision: 2 }, { policyHash: `sha256:${'b'.repeat(64)}` }, { contractDigest: `sha256:${'b'.repeat(64)}` },
77
+ { relayPid: 456 }, { cliVersion: '0.2.154' }]) {
78
+ Object.assign(f.value, original, delta);
79
+ assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), false);
80
+ }
81
+ Object.assign(f.value, original);
82
+ assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), true);
83
+ });
84
+ });
85
+ test('foreign recipient, source, policy or intent is denied without accepting copied readiness', async () => {
86
+ await fixture(async (f) => {
87
+ const result = await f.owner.record(f.lease), original = { ...f.value };
88
+ for (const delta of [{ membershipId: id(30) }, { repositoryFingerprint: `sha256:${'b'.repeat(64)}` },
89
+ { organizationId: 'org_foreign' }, { policyRevision: 'foreign-policy' }]) {
90
+ Object.assign(f.value, original, delta);
91
+ await assert.rejects(f.owner.record(f.lease), /setup_readiness_context_unconfirmed/);
92
+ assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), false);
93
+ }
94
+ Object.assign(f.value, original);
95
+ assert.equal(await f.owner.verify(result.readinessReceiptId, { ...f.intent, operationId: id(30) }, hash), false);
96
+ });
97
+ });
98
+ test('withdrawing the original host denies both persistence and readiness exposure', async () => {
99
+ await fixture(async (f) => {
100
+ const result = await f.owner.record(f.lease), before = f.observations();
101
+ f.scope.close();
102
+ await assert.rejects(f.owner.record(f.lease), /codex_setup_host_scope_unavailable/);
103
+ assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), false);
104
+ assert.equal(f.observations(), before);
105
+ });
106
+ });
107
+ test('lease accessors are denied before observation or secret-bearing serialization', async () => {
108
+ await fixture(async (f) => {
109
+ let getters = 0;
110
+ await assert.rejects(f.owner.record({ get leaseId() { getters++; return f.lease.leaseId; }, intentDigest: hash }), /setup_readiness_lease_invalid/);
111
+ assert.equal(getters, 0);
112
+ assert.equal(f.observations(), 0);
113
+ });
114
+ });
115
+ test('historical receipt requires fresh current state, not a newly written receipt', async (t) => {
116
+ t.mock.timers.enable({ apis: ['Date'], now: Date.now() });
117
+ await fixture(async (f) => {
118
+ const result = await f.owner.record(f.lease);
119
+ t.mock.timers.tick(90_000);
120
+ // Stale current observation is still denied, even with a genuine receipt.
121
+ assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), false);
122
+ Object.assign(f.value, { verifiedAt: new Date().toISOString(), relayPolledAt: new Date().toISOString() });
123
+ assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), true);
124
+ assert.notEqual(f.retained().verifiedAt, f.value.verifiedAt);
125
+ // The original durable receipt is unchanged and idempotently reused.
126
+ t.mock.timers.tick(510_000);
127
+ Object.assign(f.value, { verifiedAt: new Date().toISOString(), relayPolledAt: new Date().toISOString() });
128
+ assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), false);
129
+ });
130
+ });
131
+ test('historical receipt never admits a changed current binding after recovery delay', async (t) => {
132
+ t.mock.timers.enable({ apis: ['Date'], now: Date.now() });
133
+ await fixture(async (f) => {
134
+ const result = await f.owner.record(f.lease), original = { ...f.value };
135
+ t.mock.timers.tick(90_000);
136
+ for (const delta of [{ deviceId: id(30) }, { sessionId: 'foreign_session' }, { relayPid: 456 },
137
+ { manifestHash: `sha256:${'b'.repeat(64)}` }, { catalogHash: `sha256:${'b'.repeat(64)}` }, { roleRevision: 2 }]) {
138
+ Object.assign(f.value, original, delta, { verifiedAt: new Date().toISOString(), relayPolledAt: new Date().toISOString() });
139
+ assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), false);
140
+ }
141
+ Object.assign(f.value, original, { verifiedAt: new Date().toISOString(), relayPolledAt: new Date().toISOString() });
142
+ assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), true);
143
+ });
144
+ });
145
+ //# sourceMappingURL=codexSetupReadiness.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexSetupReadiness.test.js","sourceRoot":"","sources":["../src/codexSetupReadiness.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=codexSetupSessionCaller.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexSetupSessionCaller.test.d.ts","sourceRoot":"","sources":["../src/codexSetupSessionCaller.test.ts"],"names":[],"mappings":""}