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

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 +211 -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 +479 -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,577 @@
1
+ import assert from 'node:assert/strict';
2
+ import { readFile } from 'node:fs/promises';
3
+ import { resolve } from 'node:path';
4
+ import test from 'node:test';
5
+ import ts from 'typescript';
6
+ import * as cli from './index.js';
7
+ import { prepareCodexBootstrapHost } from './bootstrapHostScope.js';
8
+ import * as host from './bootstrapHostScope.js';
9
+ import { AgentFabricClient } from '@dharma-ai-labs/agent-fabric-relay-client';
10
+ import { loadOrCreateVaultMasterKey } from '@dharma-ai-labs/agent-fabric-local-vault';
11
+ const id = (n) => `${String(n).padStart(8, '0')}-1111-4111-8111-111111111111`;
12
+ const digest = `sha256:${'a'.repeat(64)}`;
13
+ async function fixture() {
14
+ const now = Date.now();
15
+ const contract = await cli.loadAgentFabricOnboardingContract();
16
+ return { intent: { schema: 'dharma.codex-setup-intent/v1', operationId: id(1), setupReference: id(2),
17
+ organizationId: 'org_demo', recipientMembershipId: id(3), origin: 'https://hq.example',
18
+ repositoryFingerprint: digest, policyRevision: 'policy-v1', scopeDigest: digest,
19
+ contractDigest: `sha256:${contract.sha256}`, hostContextId: id(4),
20
+ issuedAt: new Date(now - 1000).toISOString(), expiresAt: new Date(now + 60_000).toISOString() },
21
+ workspace: resolve('nonexistent-synthetic-checkout'), signal: new AbortController().signal,
22
+ current: async () => true, dryRun: true };
23
+ }
24
+ async function invoke(input) {
25
+ const entry = cli.bootstrapFromCodexSetup;
26
+ assert.equal(typeof entry, 'function', 'official host-facing bootstrap entry is absent');
27
+ return entry(input);
28
+ }
29
+ test('private preparation read preserves the active original context and does not expose mutable captured flags', async () => {
30
+ const input = await fixture(), prepared = prepareCodexBootstrapHost(input);
31
+ try {
32
+ const outside = await host.inspectCodexBootstrapHostPreparation(prepared.scope);
33
+ outside.flags.set('workspace', 'changed');
34
+ await host.runCodexBootstrapHostScope(prepared.scope, async (original) => {
35
+ const inside = await host.inspectCodexBootstrapHostPreparation(prepared.scope);
36
+ assert.equal(host.currentBootstrapHostScope(), prepared.scope);
37
+ assert.equal(inside.flags.get('workspace'), input.workspace);
38
+ assert.equal(inside.intent, original.intent);
39
+ await assert.rejects(host.runCodexBootstrapHostScope(prepared.scope, async () => { }), /context_conflict/);
40
+ });
41
+ }
42
+ finally {
43
+ prepared.scope.close();
44
+ }
45
+ });
46
+ test('private preparation read denies copied scope and foreign active context', async () => {
47
+ const prepared = prepareCodexBootstrapHost(await fixture()), foreign = prepareCodexBootstrapHost(await fixture());
48
+ try {
49
+ await assert.rejects(host.inspectCodexBootstrapHostPreparation({ ...prepared.scope }), /context_conflict/);
50
+ await host.runCodexBootstrapHostScope(prepared.scope, async () => {
51
+ await assert.rejects(host.inspectCodexBootstrapHostPreparation(foreign.scope), /context_conflict/);
52
+ });
53
+ }
54
+ finally {
55
+ prepared.scope.close();
56
+ foreign.scope.close();
57
+ }
58
+ });
59
+ test('private preparation read denies descendants of a settled or withdrawn context', async () => {
60
+ const prepared = prepareCodexBootstrapHost(await fixture());
61
+ let release, pending;
62
+ const gate = new Promise(done => { release = done; });
63
+ try {
64
+ await host.runCodexBootstrapHostScope(prepared.scope, async () => {
65
+ pending = (async () => {
66
+ await gate;
67
+ await assert.rejects(host.inspectCodexBootstrapHostPreparation(prepared.scope), /scope_unavailable/);
68
+ })();
69
+ });
70
+ release();
71
+ await pending;
72
+ await assert.rejects(host.inspectCodexBootstrapHostPreparation(prepared.scope), /scope_unavailable/);
73
+ }
74
+ finally {
75
+ prepared.scope.close();
76
+ }
77
+ });
78
+ test('vault key access carries the closed owning context without opening a store', async () => {
79
+ let reads = 0, outcome = [];
80
+ const store = { backend: 'linux-secret-service',
81
+ async get() { reads++; return Buffer.alloc(32).toString('base64'); },
82
+ async put() { throw new Error('unexpected write'); }, async delete() { throw new Error('unexpected delete'); } };
83
+ await assert.rejects(host.runCodexBootstrapHost(await fixture(), async (prepared) => {
84
+ prepared.scope.close();
85
+ outcome = await Promise.allSettled([loadOrCreateVaultMasterKey(store, host.currentBootstrapHostScope())]);
86
+ }), { message: 'codex_setup_host_scope_unavailable' });
87
+ assert.equal(outcome[0]?.status, 'rejected');
88
+ if (outcome[0]?.status === 'rejected')
89
+ assert.equal(outcome[0].reason.message, 'vault_key_scope_unavailable');
90
+ assert.equal(reads, 0);
91
+ });
92
+ test('every CLI vault-key caller explicitly forwards the owning host scope', async () => {
93
+ const text = await readFile(new URL('../src/index.ts', import.meta.url), 'utf8');
94
+ const source = ts.createSourceFile('index.ts', text, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
95
+ let callers = 0, captures = 0;
96
+ const opened = [];
97
+ const visit = (node, owner = '') => {
98
+ if (ts.isFunctionDeclaration(node))
99
+ owner = node.name?.text ?? owner;
100
+ if (ts.isCallExpression(node) && ts.isIdentifier(node.expression)
101
+ && node.expression.text === 'loadOrCreateVaultMasterKey') {
102
+ assert.equal(owner, 'openBootstrapVault', 'direct key callers must not bypass the scoped vault owner');
103
+ callers++;
104
+ assert.equal(node.arguments.length, 2);
105
+ const store = node.arguments[0], scope = node.arguments[1];
106
+ assert.ok(store && ts.isIdentifier(store) && store.text === 'undefined');
107
+ assert.ok(scope && ts.isIdentifier(scope) && scope.text === 'scope');
108
+ }
109
+ if (ts.isVariableDeclaration(node) && owner === 'openBootstrapVault' && ts.isIdentifier(node.name)
110
+ && node.name.text === 'scope') {
111
+ captures++;
112
+ const value = node.initializer;
113
+ assert.ok(value && ts.isCallExpression(value) && ts.isIdentifier(value.expression)
114
+ && value.expression.text === 'currentBootstrapHostScope' && value.arguments.length === 0);
115
+ }
116
+ if (ts.isCallExpression(node) && ts.isIdentifier(node.expression) && node.expression.text === 'openBootstrapVault')
117
+ opened.push(owner);
118
+ ts.forEachChild(node, child => visit(child, owner));
119
+ };
120
+ visit(source);
121
+ assert.equal(callers, 1);
122
+ assert.equal(captures, 1);
123
+ assert.deepEqual(opened, ['superviseNamedSessions', 'startCodexBootstrapNativeHost', 'capture', 'namedSessionCommand', 'evidenceSync',
124
+ 'processEvidenceRequest', 'syncSignedTaskTrajectory', 'stageSignedTaskTrajectoryRecovery',
125
+ 'finalizeRecoveredSignedTaskTrajectories', 'finalizeRecoveredSignedTaskTrajectories',
126
+ 'finalizeRecoveredSignedTaskTrajectories', 'finalizeRecoveredSignedTaskTrajectories', 'relayWorkspaceLoop']);
127
+ });
128
+ test('receiver readiness forwards the owning scope into its journal self-test', async () => {
129
+ const text = await readFile(new URL('../src/index.ts', import.meta.url), 'utf8');
130
+ const source = ts.createSourceFile('index.ts', text, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
131
+ const functions = source.statements.filter(ts.isFunctionDeclaration)
132
+ .filter(node => node.name?.text === 'receiptAwareProviderCapabilities');
133
+ assert.equal(functions.length, 1);
134
+ let calls = 0;
135
+ const visit = (node) => {
136
+ if (ts.isCallExpression(node) && ts.isPropertyAccessExpression(node.expression)
137
+ && node.expression.name.text === 'selfTest') {
138
+ calls++;
139
+ assert.equal(node.arguments.length, 1);
140
+ const scope = node.arguments[0];
141
+ assert.ok(scope && ts.isIdentifier(scope) && scope.text === 'hostScope');
142
+ }
143
+ ts.forEachChild(node, visit);
144
+ };
145
+ visit(functions[0]);
146
+ assert.equal(calls, 1);
147
+ });
148
+ test('official host entry refuses cancelled scope before selecting a checkout or protected store', async () => {
149
+ const input = await fixture();
150
+ const aborted = new AbortController();
151
+ aborted.abort('private-abort-canary');
152
+ await assert.rejects(invoke({ ...input, signal: aborted.signal }), { message: 'codex_setup_host_scope_unavailable' });
153
+ });
154
+ test('official host entry permanently refuses false, nonboolean and throwing live authority', async () => {
155
+ for (const current of [async () => false, async () => 'true', async () => { throw new Error('private-scope-canary'); }]) {
156
+ await assert.rejects(invoke({ ...await fixture(), current }), { message: 'codex_setup_host_scope_unavailable' });
157
+ }
158
+ });
159
+ test('official host entry refuses expired intent and model-selected flags', async () => {
160
+ const input = await fixture();
161
+ await assert.rejects(invoke({ ...input, intent: { ...input.intent, expiresAt: input.intent.issuedAt } }), { message: 'codex_setup_host_scope_invalid' });
162
+ await assert.rejects(invoke({ ...input, grant: 'private-grant-canary' }), { message: 'codex_setup_host_scope_invalid' });
163
+ });
164
+ test('official host entry checks live authority again while preparing the public plan', async () => {
165
+ let calls = 0;
166
+ await assert.rejects(invoke({ ...await fixture(), current: async () => ++calls === 1 }), { message: 'codex_setup_host_scope_unavailable' });
167
+ assert.ok(calls >= 2);
168
+ });
169
+ test('official host entry uses the real grant-free bootstrap planning branch without native effects', async () => {
170
+ const input = await fixture();
171
+ const plan = await invoke(input);
172
+ assert.equal(plan.ok, true);
173
+ assert.equal(plan.stage, 'plan');
174
+ assert.equal(plan.setupTransport, 'public_claim_v1');
175
+ assert.equal(plan.effects, false);
176
+ assert.equal(plan.grantRedeemed, false);
177
+ assert.equal(plan.setupReference, input.intent.setupReference);
178
+ assert.equal(plan.organizationId, input.intent.organizationId);
179
+ assert.equal(JSON.stringify(plan).includes('private-'), false);
180
+ });
181
+ test('unfinished host execution refuses effects before checkout selection or authority consumption', async () => {
182
+ const result = await invoke({ ...await fixture(), dryRun: false });
183
+ assert.equal(result.ok, false);
184
+ assert.equal(result.code, 'codex_setup_host_execution_unqualified');
185
+ assert.equal(result.stage, 'host_setup_unavailable');
186
+ assert.equal(result.effects, false);
187
+ assert.equal(result.grantRedeemed, false);
188
+ });
189
+ test('descriptor failures are classified without reflecting host-private diagnostics', async () => {
190
+ const input = new Proxy(await fixture(), { ownKeys() { throw new Error('private-descriptor-canary'); } });
191
+ await assert.rejects(invoke(input), { message: 'codex_setup_host_scope_invalid' });
192
+ });
193
+ test('a clock-boundary denial permanently withdraws the host scope', async (t) => {
194
+ const input = await fixture();
195
+ const scope = prepareCodexBootstrapHost(input).scope;
196
+ const actual = Date.now();
197
+ t.mock.method(Date, 'now', () => Date.parse(input.intent.issuedAt) - 1);
198
+ assert.equal(await scope.current(), false);
199
+ t.mock.method(Date, 'now', () => actual);
200
+ assert.equal(await scope.current(), false);
201
+ assert.equal(scope.signal.aborted, true);
202
+ });
203
+ test('host scope snapshots the selected intent and qualification callback', async () => {
204
+ const input = await fixture();
205
+ const prepared = prepareCodexBootstrapHost(input);
206
+ input.intent.organizationId = 'org_foreign';
207
+ input.current = async () => false;
208
+ assert.equal(prepared.intent.organizationId, 'org_demo');
209
+ assert.equal(prepared.flags.get('organization-id'), 'org_demo');
210
+ assert.equal(await prepared.scope.current(), true);
211
+ });
212
+ test('a step does not return a protected result after mid-operation cancellation', async () => {
213
+ const input = await fixture();
214
+ const abort = new AbortController();
215
+ const scope = prepareCodexBootstrapHost({ ...input, signal: abort.signal }).scope;
216
+ await assert.rejects(scope.step(async () => { abort.abort(); return 'private-result-canary'; }), { message: 'codex_setup_host_scope_unavailable' });
217
+ let effects = 0;
218
+ await assert.rejects(scope.step(async () => { effects++; }), { message: 'codex_setup_host_scope_unavailable' });
219
+ assert.equal(effects, 0);
220
+ });
221
+ test('expiry during qualification withdraws scope even if the clock subsequently recovers', async (t) => {
222
+ const input = await fixture();
223
+ const actual = Date.now();
224
+ let calls = 0;
225
+ const scope = prepareCodexBootstrapHost({ ...input, current: async () => {
226
+ if (++calls === 1)
227
+ t.mock.method(Date, 'now', () => Date.parse(input.intent.expiresAt) + 1);
228
+ return true;
229
+ } }).scope;
230
+ assert.equal(await scope.current(), false);
231
+ t.mock.method(Date, 'now', () => actual);
232
+ assert.equal(await scope.current(), false);
233
+ assert.equal(calls, 1);
234
+ assert.equal(scope.signal.aborted, true);
235
+ });
236
+ function contextApi() {
237
+ const api = host;
238
+ assert.equal(typeof api.runCodexBootstrapHost, 'function', 'owning operation has no lifetime-scoped continuation');
239
+ assert.equal(typeof api.currentBootstrapHostScope, 'function');
240
+ return api;
241
+ }
242
+ test('settling the owning operation withdraws its scope without changing the external host signal', async () => {
243
+ const api = contextApi();
244
+ const input = await fixture();
245
+ let saved;
246
+ const result = await api.runCodexBootstrapHost(input, async (prepared) => {
247
+ saved = prepared.scope;
248
+ assert.equal(api.currentBootstrapHostScope(), saved);
249
+ assert.equal(await saved.current(), true);
250
+ return 'public-result';
251
+ });
252
+ assert.equal(result, 'public-result');
253
+ assert.equal(input.signal.aborted, false);
254
+ assert.equal(saved.signal.aborted, true);
255
+ assert.equal(await saved.current(), false);
256
+ assert.equal(api.currentBootstrapHostScope(), undefined);
257
+ });
258
+ test('failed owning operation closes authority and does not contaminate the following operation', async () => {
259
+ const api = contextApi();
260
+ let saved;
261
+ await assert.rejects(api.runCodexBootstrapHost(await fixture(), async (prepared) => {
262
+ saved = prepared.scope;
263
+ throw new Error('synthetic-operation-failed');
264
+ }), { message: 'synthetic-operation-failed' });
265
+ assert.equal(saved.signal.aborted, true);
266
+ await api.runCodexBootstrapHost(await fixture(), async (prepared) => {
267
+ assert.notEqual(prepared.scope, saved);
268
+ assert.equal(await prepared.scope.current(), true);
269
+ });
270
+ });
271
+ test('concurrent owning operations retain separate async scopes', async () => {
272
+ const api = contextApi();
273
+ const seen = new Set();
274
+ await Promise.all([1, 2].map(async () => api.runCodexBootstrapHost(await fixture(), async (prepared) => {
275
+ seen.add(prepared.scope);
276
+ await new Promise(done => setImmediate(done));
277
+ assert.equal(api.currentBootstrapHostScope(), prepared.scope);
278
+ assert.equal(await prepared.scope.current(), true);
279
+ })));
280
+ assert.equal(seen.size, 2);
281
+ });
282
+ test('detached continuation retains a closed scope rather than silently becoming unscoped', async () => {
283
+ const api = contextApi();
284
+ let release;
285
+ const ready = new Promise(done => { release = done; });
286
+ let late;
287
+ let effects = 0;
288
+ await api.runCodexBootstrapHost(await fixture(), async (prepared) => {
289
+ late = (async () => {
290
+ await ready;
291
+ const scope = api.currentBootstrapHostScope();
292
+ assert.equal(scope, prepared.scope);
293
+ await assert.rejects(scope.step(async () => { effects++; }), { message: 'codex_setup_host_scope_unavailable' });
294
+ })();
295
+ });
296
+ release();
297
+ await late;
298
+ assert.equal(effects, 0);
299
+ });
300
+ test('nested setup cannot substitute a fresh authority into an existing owning operation', async () => {
301
+ const api = contextApi();
302
+ let effects = 0;
303
+ await api.runCodexBootstrapHost(await fixture(), async () => {
304
+ await assert.rejects(api.runCodexBootstrapHost(await fixture(), async () => { effects++; }), { message: 'codex_setup_host_context_conflict' });
305
+ });
306
+ assert.equal(effects, 0);
307
+ });
308
+ test('scope methods cannot be replaced to transfer setup authority', async () => {
309
+ const prepared = prepareCodexBootstrapHost(await fixture());
310
+ assert.equal(Object.isFrozen(prepared.scope), true);
311
+ assert.throws(() => { prepared.scope.current = async () => true; }, TypeError);
312
+ });
313
+ test('step requalifies on vendor failure before disclosing its diagnostic', async () => {
314
+ let valid = true;
315
+ const scope = prepareCodexBootstrapHost({ ...await fixture(), current: async () => valid }).scope;
316
+ await assert.rejects(scope.step(async () => { valid = false; throw new Error('private-vendor-canary'); }), { message: 'codex_setup_host_scope_unavailable' });
317
+ assert.equal(scope.signal.aborted, true);
318
+ });
319
+ test('the real default relay probe passes the owning scope instead of opening an unscoped client', async (t) => {
320
+ const api = contextApi();
321
+ const input = await fixture();
322
+ const config = { organizationId: input.intent.organizationId, deviceId: id(8) };
323
+ let observed;
324
+ t.mock.method(AgentFabricClient, 'open', async (options) => {
325
+ observed = options.hostScope;
326
+ return { config, async openSession() { return { ok: true }; } };
327
+ });
328
+ await api.runCodexBootstrapHost(input, async (prepared) => {
329
+ const result = await cli.probeRelayConnection();
330
+ assert.equal(observed, prepared.scope);
331
+ assert.equal(result.deviceId, config.deviceId);
332
+ });
333
+ assert.equal(observed.signal.aborted, true);
334
+ });
335
+ test('the public host entry withholds active vendor diagnostics and closes scope on failure', async (t) => {
336
+ const input = await fixture();
337
+ const actual = Date.now();
338
+ let calls = 0;
339
+ // Force a safe contract precondition to fail after host validation. No native
340
+ // effects are allowed by the planning branch.
341
+ input.intent.contractDigest = `sha256:${'b'.repeat(64)}`;
342
+ input.current = async () => { calls++; return true; };
343
+ await assert.rejects(invoke(input), { message: 'codex_setup_host_operation_failed' });
344
+ assert.ok(calls > 1);
345
+ assert.equal(input.signal.aborted, false);
346
+ assert.ok(Date.now() >= actual);
347
+ });
348
+ function sourceCheck() {
349
+ const check = host.assertBootstrapHostSource;
350
+ assert.equal(typeof check, 'function', 'host source binding is not enforced before enrollment');
351
+ return check;
352
+ }
353
+ test('owning setup refuses another checkout or fingerprint before enrollment', async () => {
354
+ const api = contextApi(), check = sourceCheck(), input = await fixture();
355
+ await assert.rejects(api.runCodexBootstrapHost(input, async () => {
356
+ await assert.rejects(check(resolve('foreign-synthetic-checkout'), input.intent.repositoryFingerprint), { message: 'codex_setup_host_source_mismatch' });
357
+ }), { message: 'codex_setup_host_scope_unavailable' });
358
+ await assert.rejects(api.runCodexBootstrapHost(input, async () => {
359
+ await assert.rejects(check(input.workspace, `sha256:${'b'.repeat(64)}`), { message: 'codex_setup_host_source_mismatch' });
360
+ }), { message: 'codex_setup_host_scope_unavailable' });
361
+ });
362
+ test('owning setup accepts only its snapshotted source even if mutable flags change', async () => {
363
+ const api = contextApi(), check = sourceCheck(), input = await fixture();
364
+ await assert.rejects(api.runCodexBootstrapHost(input, async (prepared) => {
365
+ const original = input.workspace;
366
+ prepared.flags.set('workspace', resolve('foreign-synthetic-checkout'));
367
+ input.workspace = resolve('another-synthetic-checkout');
368
+ input.intent.repositoryFingerprint = `sha256:${'b'.repeat(64)}`;
369
+ await check(original, prepared.intent.repositoryFingerprint);
370
+ await assert.rejects(check(input.workspace, input.intent.repositoryFingerprint), { message: 'codex_setup_host_source_mismatch' });
371
+ }), { message: 'codex_setup_host_scope_unavailable' });
372
+ });
373
+ test('source mismatch permanently withdraws subsequent protected operations', async () => {
374
+ const api = contextApi(), check = sourceCheck(), input = await fixture();
375
+ let effects = 0;
376
+ await assert.rejects(api.runCodexBootstrapHost(input, async (prepared) => {
377
+ await assert.rejects(check(input.workspace, `sha256:${'b'.repeat(64)}`), { message: 'codex_setup_host_source_mismatch' });
378
+ await assert.rejects(prepared.scope.step(async () => { effects++; }), { message: 'codex_setup_host_scope_unavailable' });
379
+ }), { message: 'codex_setup_host_scope_unavailable' });
380
+ assert.equal(effects, 0);
381
+ });
382
+ test('capability projection cannot downgrade a closed scope into an ordinary unavailable receiver', async () => {
383
+ const api = contextApi();
384
+ let observed = [];
385
+ await assert.rejects(api.runCodexBootstrapHost(await fixture(), async (prepared) => {
386
+ prepared.scope.close();
387
+ observed = await Promise.allSettled([cli.receiptAwareProviderCapabilities([])]);
388
+ }), { message: 'codex_setup_host_scope_unavailable' });
389
+ assert.equal(observed[0]?.status, 'rejected');
390
+ if (observed[0]?.status === 'rejected')
391
+ assert.equal(observed[0].reason.message, 'codex_setup_host_scope_unavailable');
392
+ });
393
+ test('original native scope continuation preserves owner identity and immutable preparation through actual CLI planning', async () => {
394
+ const input = await fixture(), prepared = prepareCodexBootstrapHost(input);
395
+ prepared.flags.set('workspace', resolve('foreign-synthetic-checkout'));
396
+ prepared.flags.delete('dry-run');
397
+ input.workspace = resolve('another-synthetic-checkout');
398
+ input.intent.organizationId = 'org_foreign';
399
+ try {
400
+ await host.runCodexBootstrapHostScope(prepared.scope, async (captured) => {
401
+ assert.equal(captured.scope, prepared.scope);
402
+ assert.equal(host.currentBootstrapHostScope(), prepared.scope);
403
+ assert.equal(captured.intent.organizationId, 'org_demo');
404
+ assert.notEqual(captured.flags.get('workspace'), input.workspace);
405
+ assert.equal(captured.flags.get('dry-run'), true);
406
+ await host.assertBootstrapHostSource(String(captured.flags.get('workspace')), captured.intent.repositoryFingerprint);
407
+ });
408
+ const result = await cli.bootstrapFromCodexSetupScope(prepared.scope);
409
+ assert.equal(result.stage, 'plan');
410
+ assert.equal(result.effects, false);
411
+ assert.equal(result.organizationId, 'org_demo');
412
+ assert.equal(prepared.scope.signal.aborted, false, 'only the native owner may finish this live lifetime');
413
+ assert.equal(host.currentBootstrapHostScope(), undefined);
414
+ }
415
+ finally {
416
+ prepared.scope.close();
417
+ }
418
+ await assert.rejects(cli.bootstrapFromCodexSetupScope(prepared.scope), { message: 'codex_setup_host_scope_unavailable' });
419
+ });
420
+ test('original native scope continuation refuses counterfeit authority without invoking it', async () => {
421
+ let calls = 0;
422
+ const original = prepareCodexBootstrapHost(await fixture());
423
+ const counterfeit = { ...original.scope, current: async () => { calls++; return true; },
424
+ assert: async () => { calls++; }, step: async (operation) => { calls++; return operation(); } };
425
+ try {
426
+ await assert.rejects(cli.bootstrapFromCodexSetupScope(counterfeit), { message: 'codex_setup_host_scope_invalid' });
427
+ const proxy = new Proxy(original.scope, { get() { calls++; throw new Error('private-counterfeit'); } });
428
+ await assert.rejects(cli.bootstrapFromCodexSetupScope(proxy), { message: 'codex_setup_host_scope_invalid' });
429
+ assert.equal(calls, 0);
430
+ }
431
+ finally {
432
+ original.scope.close();
433
+ }
434
+ });
435
+ test('original native scope continuation rejects nested and concurrent substitution', async () => {
436
+ const original = prepareCodexBootstrapHost(await fixture());
437
+ let entered, release;
438
+ const ready = new Promise(done => { entered = done; });
439
+ const wait = new Promise(done => { release = done; });
440
+ const active = host.runCodexBootstrapHostScope(original.scope, async () => {
441
+ await assert.rejects(cli.bootstrapFromCodexSetupScope(original.scope), { message: 'codex_setup_host_context_conflict' });
442
+ entered();
443
+ await wait;
444
+ });
445
+ try {
446
+ await ready;
447
+ await assert.rejects(cli.bootstrapFromCodexSetupScope(original.scope), { message: 'codex_setup_host_context_conflict' });
448
+ release();
449
+ await active;
450
+ assert.equal(await original.scope.current(), true);
451
+ }
452
+ finally {
453
+ release();
454
+ await active;
455
+ original.scope.close();
456
+ }
457
+ });
458
+ test('original native scope continuation keeps detached work subject to later owner withdrawal', async () => {
459
+ const original = prepareCodexBootstrapHost(await fixture());
460
+ let release, late, effects = 0;
461
+ const wait = new Promise(done => { release = done; });
462
+ await host.runCodexBootstrapHostScope(original.scope, async () => {
463
+ late = (async () => {
464
+ await wait;
465
+ const scope = host.currentBootstrapHostScope();
466
+ assert.equal(scope, original.scope);
467
+ await assert.rejects(scope.step(async () => { effects++; }), { message: 'codex_setup_host_scope_unavailable' });
468
+ })();
469
+ });
470
+ original.scope.close();
471
+ release();
472
+ await late;
473
+ assert.equal(effects, 0);
474
+ });
475
+ test('original native scope continuation cannot borrow a scope still owned by another host run', async () => {
476
+ const input = await fixture();
477
+ let exported;
478
+ let entered, release;
479
+ const ready = new Promise(done => { entered = done; });
480
+ const wait = new Promise(done => { release = done; });
481
+ const active = host.runCodexBootstrapHost(input, async (prepared) => { exported = prepared.scope; entered(); await wait; });
482
+ try {
483
+ await ready;
484
+ await assert.rejects(cli.bootstrapFromCodexSetupScope(exported), { message: 'codex_setup_host_context_conflict' });
485
+ release();
486
+ await active;
487
+ }
488
+ finally {
489
+ release();
490
+ await active;
491
+ }
492
+ });
493
+ test('settled borrowed context cannot admit a detached effect while the original native owner is still live', async () => {
494
+ const original = prepareCodexBootstrapHost(await fixture());
495
+ let release, late, effects = 0;
496
+ const wait = new Promise(done => { release = done; });
497
+ await host.runCodexBootstrapHostScope(original.scope, async () => {
498
+ late = (async () => {
499
+ await wait;
500
+ const scope = host.currentBootstrapHostScope();
501
+ assert.equal(scope, original.scope);
502
+ await assert.rejects(scope.step(async () => { effects++; }), { message: 'codex_setup_host_scope_unavailable' });
503
+ })();
504
+ });
505
+ assert.equal(await original.scope.current(), true);
506
+ release();
507
+ await late;
508
+ assert.equal(effects, 0);
509
+ assert.equal(original.scope.signal.aborted, true);
510
+ await assert.rejects(cli.bootstrapFromCodexSetupScope(original.scope), { message: 'codex_setup_host_scope_unavailable' });
511
+ });
512
+ test('late qualification started in a borrowed context cannot authorize an effect after that context settles', async () => {
513
+ let calls = 0, entered, release, late, effects = 0;
514
+ const ready = new Promise(done => { entered = done; });
515
+ const wait = new Promise(done => { release = done; });
516
+ const original = prepareCodexBootstrapHost({ ...await fixture(), current: async () => {
517
+ if (++calls === 2) {
518
+ entered();
519
+ await wait;
520
+ }
521
+ return true;
522
+ } });
523
+ await host.runCodexBootstrapHostScope(original.scope, async () => {
524
+ late = original.scope.step(async () => { effects++; });
525
+ await ready;
526
+ });
527
+ const rejected = assert.rejects(late, { message: 'codex_setup_host_scope_unavailable' });
528
+ release();
529
+ await rejected;
530
+ assert.equal(effects, 0);
531
+ assert.equal(original.scope.signal.aborted, true);
532
+ });
533
+ test('effect dispatch never enters after asynchronous qualification outlives its borrowed frame', async () => {
534
+ const afterMicrotasks = (count, effect) => {
535
+ if (count === 0)
536
+ effect();
537
+ else
538
+ queueMicrotask(() => afterMicrotasks(count - 1, effect));
539
+ };
540
+ // Independent Docs' retained exact-module RED covers two schedules. Test the
541
+ // same 21 schedules on these changed bytes without replaying the old module.
542
+ const violations = [];
543
+ for (let delay = 0; delay <= 20; delay++) {
544
+ let calls = 0, entered, release, child;
545
+ const started = new Promise(done => { entered = done; });
546
+ const gate = new Promise(done => { release = done; });
547
+ const prepared = prepareCodexBootstrapHost({ ...await fixture(), current: async () => {
548
+ if (++calls === 2) {
549
+ entered();
550
+ await gate;
551
+ }
552
+ if (calls === 3)
553
+ afterMicrotasks(delay, release);
554
+ return true;
555
+ } });
556
+ try {
557
+ await host.runCodexBootstrapHostScope(prepared.scope, async () => {
558
+ child = prepared.scope.step(async () => {
559
+ const current = prepared.scope.current();
560
+ if (prepared.scope.signal.aborted)
561
+ violations.push(delay);
562
+ await current;
563
+ });
564
+ void child.catch(() => { });
565
+ await started;
566
+ });
567
+ release();
568
+ await Promise.allSettled([child]);
569
+ }
570
+ finally {
571
+ release();
572
+ prepared.scope.close();
573
+ }
574
+ }
575
+ assert.deepEqual(violations, [], 'a rejected post-check cannot undo forbidden effect entry');
576
+ });
577
+ //# sourceMappingURL=bootstrapHostScope.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrapHostScope.test.js","sourceRoot":"","sources":["../src/bootstrapHostScope.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bootstrapInstallationScope.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrapInstallationScope.test.d.ts","sourceRoot":"","sources":["../src/bootstrapInstallationScope.test.ts"],"names":[],"mappings":""}