@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,352 @@
1
+ import assert from 'node:assert/strict';
2
+ import { spawn } from 'node:child_process';
3
+ import { randomBytes } from 'node:crypto';
4
+ import { mkdtemp, readFile, realpath, rm } from 'node:fs/promises';
5
+ import { tmpdir } from 'node:os';
6
+ import { resolve } from 'node:path';
7
+ import test from 'node:test';
8
+ import { compileFunction } from 'node:vm';
9
+ import ts from 'typescript';
10
+ import { canonicalize, sha256 } from '@dharma-ai-labs/agent-fabric-contracts';
11
+ import { LocalVault } from '@dharma-ai-labs/agent-fabric-local-vault';
12
+ import { awaitCodexSetupSession, consumeCodexSetupSessions, currentAcceptedSetupSessionScope, originalCodexSetupSessionSender, withCodexSetupSessionSender } from './codexSetupSessionHandoff.js';
13
+ import { assertBootstrapHostSource, inspectCodexBootstrapHostPreparation, prepareCodexBootstrapHost, runCodexBootstrapHostScope } from './bootstrapHostScope.js';
14
+ import { assertCodexSetupExecutionLease, createCodexSetupAdmission } from './codexSetupAdmission.js';
15
+ import { createNamedSessionChildOwner, currentNamedSessionChildOwner } from './namedSessionChildOwner.js';
16
+ import { watchOwnedChild } from './ownedChildLifecycle.js';
17
+ import { sendCodexSetupChildStart } from './codexSetupChildStartup.js';
18
+ const uuid = (n) => `${String(n).padStart(8, '0')}-1111-4111-8111-111111111111`;
19
+ const digest = `sha256:${'a'.repeat(64)}`;
20
+ // Production declarations execute unchanged. Registry/server/Linux boundaries
21
+ // are synthetic; real C-only SQLite and owned children do not prove native use.
22
+ async function declaration(name, dependencies) {
23
+ const source = await readFile(new URL('../src/index.ts', import.meta.url), 'utf8');
24
+ const ast = ts.createSourceFile('index.ts', source, ts.ScriptTarget.Latest, true);
25
+ const functions = ast.statements.filter(node => ts.isFunctionDeclaration(node) && node.name?.text === name);
26
+ assert.equal(functions.length, 1);
27
+ const output = ts.transpileModule(functions[0].getText(ast), { compilerOptions: {
28
+ target: ts.ScriptTarget.ES2023, module: ts.ModuleKind.CommonJS
29
+ }, reportDiagnostics: true });
30
+ assert.equal(output.diagnostics?.filter(d => d.category === ts.DiagnosticCategory.Error).length, 0);
31
+ return compileFunction(output.outputText.replaceAll('import.meta.url', '"file:///synthetic/index.js"') + `\nreturn ${name};`, ['exports', ...Object.keys(dependencies)])({}, ...Object.values(dependencies));
32
+ }
33
+ async function fixture(t, managedCleanup = false) {
34
+ const root = await realpath(await mkdtemp(resolve(tmpdir(), 'dharma-handoff-caller-'))), now = Date.now();
35
+ if (!managedCleanup)
36
+ t.after(() => rm(root, { recursive: true, force: true }));
37
+ const request = { schema: 'dharma.local-codex-setup-session/v1',
38
+ operationId: uuid(1), intentDigest: digest, setupReference: uuid(2), senderPid: process.pid, senderStartTicks: '10',
39
+ organizationId: 'org_demo', membershipId: uuid(3), deviceId: uuid(4), workspaceId: uuid(5),
40
+ repositoryBindingId: uuid(6), endpointId: uuid(7), provider: 'codex', origin: 'https://hq.example',
41
+ repositoryFingerprint: digest, policyRevision: 'policy-v1', policyHash: digest, scopeDigest: digest, contractDigest: digest,
42
+ name: `codex-${uuid(5).slice(0, 8)}`, workspaceRoot: root, maximumCostCents: 1000, maximumTurnCostCents: 25,
43
+ issuedAt: new Date(now - 1000).toISOString(), expiresAt: new Date(now + 60_000).toISOString() };
44
+ const config = { deviceId: request.deviceId, organizationId: request.organizationId, hqUrl: request.origin,
45
+ setupClaimReference: request.setupReference, setupClaimRepositoryFingerprint: request.repositoryFingerprint };
46
+ const row = { path: root, workspaceId: request.workspaceId, organizationId: request.organizationId,
47
+ repositoryRemoteHash: request.repositoryFingerprint, status: 'active' };
48
+ const policy = { revision: request.policyRevision, serverAuthorization: { expiresAt: request.expiresAt } };
49
+ request.policyHash = sha256(canonicalize(policy));
50
+ const sender = { uid: 1000, startTicks: '10' };
51
+ const dependencies = { process: { platform: 'linux', getuid: () => 1000 },
52
+ Date, resolve, canonicalize, sha256, currentNamedSessionChildOwner,
53
+ readDeviceConfig: async () => config, normalizeHqUrl: (value) => value,
54
+ readContainerProcessIdentity: async (pid) => { assert.equal(pid, process.pid); return sender; },
55
+ registry: async () => [row], repositoryRoleScope: () => ({ repositoryBindingId: request.repositoryBindingId, endpointId: request.endpointId }),
56
+ preflightBootstrapWorkspaceIdentity: async () => ({ fingerprint: digest }), realpath: async () => root,
57
+ loadAgentFabricOnboardingContract: async () => ({ sha256: 'a'.repeat(64) }),
58
+ loadDeviceEnrollmentAnchor: async () => ({ devicePublicKeyEd25519: 'synthetic-public-key' }),
59
+ enrolledDeviceIdentity: async () => ({ publicKeyEd25519: 'synthetic-public-key' }),
60
+ loadVerifiedWorkspacePolicy: async () => policy, verifyServerAuthorizedPolicy: () => { },
61
+ assertWorkspaceAuthorizationCurrent: async () => { }, client: async () => ({}),
62
+ fetchRepositorySourceAuthorization: async () => ({}), readNamedSession: async () => null, dharmaHome: () => root };
63
+ const qualify = async () => declaration('qualifyCodexSetupSessionRequest', { ...dependencies,
64
+ qualifyCodexSetupSessionSource: await declaration('qualifyCodexSetupSessionSource', dependencies) });
65
+ return { root, request, config, row, sender, policy, dependencies, qualify };
66
+ }
67
+ test('actual standing receiver qualifies the bound source and process context only inside its private owner', async (t) => {
68
+ const f = await fixture(t), qualify = await f.qualify();
69
+ assert.equal(await qualify(f.request), false);
70
+ await createNamedSessionChildOwner(new AbortController().signal).run(async () => {
71
+ assert.equal(await qualify(f.request), true);
72
+ });
73
+ });
74
+ for (const change of ['none', 'parent-uid', 'parent-argv', 'backend', 'version', 'source', 'parent-unavailable']) {
75
+ test(`actual child startup verifies source and its own IPC parent (${change})`, async (t) => {
76
+ const f = await fixture(t), parentPid = process.pid + 1;
77
+ const startup = { backend: 'container-entrypoint', version: '0.2.153', policy: resolve(f.root, '.dharma', 'approved-policy.json') };
78
+ const parent = { uid: 1000, argv: [process.execPath, '/synthetic/index.js', 'relay', 'supervise', '--policy', startup.policy] };
79
+ if (change === 'parent-uid')
80
+ parent.uid = 999;
81
+ if (change === 'parent-argv')
82
+ parent.argv.push('--foreign');
83
+ if (change === 'backend')
84
+ startup.backend = 'foreign';
85
+ if (change === 'version')
86
+ startup.version = '0.2.1';
87
+ if (change === 'source')
88
+ f.config.setupClaimReference = uuid(99);
89
+ const qualify = await declaration('qualifyCodexSetupChildRequest', { ...f.dependencies,
90
+ qualifyCodexSetupSessionSource: await declaration('qualifyCodexSetupSessionSource', f.dependencies),
91
+ process: { platform: 'linux', ppid: parentPid, execPath: process.execPath, getuid: () => 1000 }, VERSION: '0.2.153',
92
+ fileURLToPath: () => '/synthetic/index.js', inspectOwnedRelayAutostart: async () => startup,
93
+ readContainerProcessIdentity: async (pid) => {
94
+ assert.equal(pid, parentPid);
95
+ if (change === 'parent-unavailable')
96
+ throw new Error('synthetic-parent-missing');
97
+ return parent;
98
+ } });
99
+ assert.equal(await qualify(f.request), change === 'none');
100
+ });
101
+ }
102
+ for (const change of ['claim', 'device', 'organization', 'origin', 'fingerprint', 'sender-uid', 'sender-creation',
103
+ 'workspace', 'inactive', 'duplicate', 'name', 'role', 'source', 'canonical-path', 'contract', 'device-key',
104
+ 'policy', 'policy-signature', 'authorization', 'disclosure', 'member', 'expiry', 'budget']) {
105
+ test(`actual standing receiver denies ${change} before acceptance or startup`, async (t) => {
106
+ const f = await fixture(t);
107
+ if (change === 'claim')
108
+ f.config.setupClaimReference = uuid(99);
109
+ if (change === 'device')
110
+ f.config.deviceId = uuid(99);
111
+ if (change === 'organization')
112
+ f.config.organizationId = 'org_foreign';
113
+ if (change === 'origin')
114
+ f.config.hqUrl = 'https://foreign.example';
115
+ if (change === 'fingerprint')
116
+ f.config.setupClaimRepositoryFingerprint = `sha256:${'b'.repeat(64)}`;
117
+ if (change === 'sender-uid')
118
+ f.sender.uid = 999;
119
+ if (change === 'sender-creation')
120
+ f.sender.startTicks = '11';
121
+ if (change === 'workspace')
122
+ f.row.workspaceId = uuid(99);
123
+ if (change === 'inactive')
124
+ f.row.status = 'revoked';
125
+ if (change === 'duplicate')
126
+ f.dependencies.registry = async () => [f.row, f.row];
127
+ if (change === 'name')
128
+ f.request.name = 'foreign';
129
+ if (change === 'role')
130
+ f.dependencies.repositoryRoleScope = () => ({ repositoryBindingId: uuid(99), endpointId: uuid(7) });
131
+ if (change === 'source')
132
+ f.dependencies.preflightBootstrapWorkspaceIdentity = async () => ({ fingerprint: `sha256:${'b'.repeat(64)}` });
133
+ if (change === 'canonical-path')
134
+ f.dependencies.realpath = async () => resolve(f.root, 'foreign');
135
+ if (change === 'contract')
136
+ f.dependencies.loadAgentFabricOnboardingContract = async () => ({ sha256: 'b'.repeat(64) });
137
+ if (change === 'device-key')
138
+ f.dependencies.enrolledDeviceIdentity = async () => ({ publicKeyEd25519: 'different-public-key' });
139
+ if (change === 'policy')
140
+ f.policy.revision = 'foreign-policy';
141
+ if (change === 'policy-signature')
142
+ f.dependencies.verifyServerAuthorizedPolicy = () => { throw new Error('synthetic-invalid-signature'); };
143
+ if (change === 'authorization')
144
+ f.dependencies.assertWorkspaceAuthorizationCurrent = async () => { throw new Error('synthetic-revoked'); };
145
+ if (change === 'disclosure')
146
+ f.dependencies.fetchRepositorySourceAuthorization = async () => { throw new Error('synthetic-disclosure-denied'); };
147
+ if (change === 'member')
148
+ f.dependencies.readNamedSession = async () => ({ identity: { ...f.request, membershipId: uuid(99) } });
149
+ if (change === 'expiry')
150
+ f.request.expiresAt = new Date(Date.now() - 1).toISOString();
151
+ if (change === 'budget')
152
+ f.request.maximumCostCents++;
153
+ const qualify = await f.qualify();
154
+ await createNamedSessionChildOwner(new AbortController().signal).run(async () => {
155
+ assert.equal(await qualify(f.request), false);
156
+ });
157
+ });
158
+ }
159
+ test('actual supervisor consumes an encrypted pending request and drains only its fresh owned child', async (t) => {
160
+ const f = await fixture(t, true), key = randomBytes(32), controller = new AbortController();
161
+ const sender = await LocalVault.open({ root: resolve(f.root, 'vault'), masterKey: key });
162
+ let receiver, child, starts = 0, closed = 0;
163
+ t.after(async () => {
164
+ controller.abort();
165
+ if (child)
166
+ await watchOwnedChild(child).stop({ graceMs: 1000 });
167
+ receiver?.close();
168
+ sender.close();
169
+ key.fill(0);
170
+ await rm(f.root, { recursive: true, force: true });
171
+ });
172
+ const claim = sender.claimCodexSetupOperation(f.request.operationId, digest);
173
+ assert.equal(claim.state, 'acquired');
174
+ if (claim.state !== 'acquired')
175
+ throw new Error('synthetic_claim_missing');
176
+ sender.stageCodexSetupSession(claim.leaseId, digest, f.request);
177
+ const supervise = await declaration('superviseNamedSessions', { process: { platform: 'linux', pid: process.pid,
178
+ getuid: () => 1000, stderr: { write: () => { } } }, resolve, setTimeout, clearTimeout,
179
+ createNamedSessionChildOwner, consumeCodexSetupSessions, dharmaHome: () => f.root, access: async () => { },
180
+ openBootstrapVault: async () => {
181
+ receiver = await LocalVault.open({ root: resolve(f.root, 'vault'), masterKey: key });
182
+ return { listPendingCodexSetupSessions: () => receiver.listPendingCodexSetupSessions(),
183
+ readCodexSetupSession: (id, hash) => receiver.readCodexSetupSession(id, hash),
184
+ acceptCodexSetupSession: (id, hash, requestHash) => receiver.acceptCodexSetupSession(id, hash, requestHash),
185
+ close: () => { closed++; receiver.close(); } };
186
+ }, qualifyCodexSetupSessionRequest: await f.qualify(),
187
+ namedSessionCommand: async () => {
188
+ const scope = currentAcceptedSetupSessionScope();
189
+ assert.ok(scope);
190
+ const owner = currentNamedSessionChildOwner();
191
+ assert.ok(owner);
192
+ starts++;
193
+ child = await owner.spawn(scope.request.name, () => spawn(process.execPath, ['-e', 'setInterval(()=>{},1000)'], { cwd: f.root, stdio: 'ignore' }));
194
+ return { ok: true, ...scope.request, bindingId: uuid(40), sessionId: 'synthetic-session' };
195
+ }, readContainerProcessIdentity: async (pid) => ({ uid: 1000, parentPid: process.pid,
196
+ startTicks: pid === process.pid ? '20' : '30' }),
197
+ readdir: async () => { controller.abort(); return []; }, readNamedSession: async () => null });
198
+ await supervise(controller.signal);
199
+ assert.equal(starts, 1);
200
+ assert.equal(closed, 1);
201
+ assert.ok(child);
202
+ assert.ok(child.exitCode !== null || child.signalCode !== null);
203
+ const observed = sender.readCodexSetupSession(f.request.operationId, digest);
204
+ assert.equal(observed?.state, 'accepted');
205
+ assert.equal(observed?.result?.state, 'started');
206
+ assert.deepEqual(sender.listPendingCodexSetupSessions(), []);
207
+ });
208
+ test('actual accepted session caller sends public handoff IDs only to its fresh IPC child', async (t) => {
209
+ const f = await fixture(t, true), key = randomBytes(32), controller = new AbortController();
210
+ const vault = await LocalVault.open({ root: resolve(f.root, 'vault'), masterKey: key });
211
+ let child, statusCalls = 0, observed;
212
+ const launches = [];
213
+ let received;
214
+ let timer;
215
+ const receipt = new Promise((done, fail) => {
216
+ received = () => { clearTimeout(timer); done(); };
217
+ timer = setTimeout(() => fail(new Error('synthetic_ipc_receipt_timeout')), 5000);
218
+ });
219
+ void receipt.catch(() => { });
220
+ t.after(async () => {
221
+ clearTimeout(timer);
222
+ controller.abort();
223
+ if (child)
224
+ await watchOwnedChild(child).stop({ graceMs: 1000 });
225
+ vault.close();
226
+ key.fill(0);
227
+ await rm(f.root, { recursive: true, force: true });
228
+ });
229
+ const claim = vault.claimCodexSetupOperation(f.request.operationId, digest);
230
+ assert.equal(claim.state, 'acquired');
231
+ if (claim.state !== 'acquired')
232
+ throw new Error('synthetic_claim_missing');
233
+ vault.stageCodexSetupSession(claim.leaseId, digest, f.request);
234
+ const session = await declaration('namedSessionCommand', { ...f.dependencies,
235
+ currentBootstrapHostScope: () => undefined, currentAcceptedSetupSessionScope, assertBootstrapHostSource,
236
+ namedSessionPaths: () => ({ root: resolve(f.root, 'sessions') }), sendCodexSetupChildStart,
237
+ required: (flags, name) => flags.get(name),
238
+ process: { platform: 'linux', execPath: process.execPath, env: {} }, fileURLToPath: () => '/synthetic/index.js',
239
+ verifyAgentFabricSkillInstallation: async () => ({}), repositorySharedReady: async () => true,
240
+ verifyNamedSessionVisibleSkill: async () => { }, setTimeout,
241
+ spawn: (_command, argv, options) => {
242
+ launches.push({ argv, options });
243
+ child = spawn(process.execPath, ['-e', 'process.on("message", value => process.send(value));'], { cwd: f.root, stdio: ['ignore', 'ignore', 'ignore', 'ipc'] });
244
+ child.once('message', value => { observed = value; received(); });
245
+ return child;
246
+ }, namedSessionRequest: async () => {
247
+ if (++statusCalls === 1)
248
+ throw new Error('synthetic-not-running');
249
+ await receipt;
250
+ return { ok: true, ...f.request, bindingId: uuid(40), sessionId: 'synthetic-session' };
251
+ } });
252
+ const owner = createNamedSessionChildOwner(controller.signal);
253
+ await owner.run(async () => {
254
+ await consumeCodexSetupSessions({ vault, owner, signal: controller.signal, authorize: async () => true,
255
+ start: async (scope) => {
256
+ const result = await session('start', new Map([
257
+ ['name', scope.request.name], ['workspace-id', scope.request.workspaceId], ['apply', true]
258
+ ]));
259
+ assert.equal(result.ok, true);
260
+ assert.equal(owner.ownedPid(scope.request.name), child?.pid);
261
+ return { state: 'started', bindingId: uuid(40), sessionId: 'synthetic-session', sessionPid: child.pid,
262
+ supervisorPid: process.pid, sessionStartTicks: '30', supervisorStartTicks: '20' };
263
+ } });
264
+ assert.deepEqual(observed, { schema: 'dharma.codex-setup-child-start/v1',
265
+ operationId: f.request.operationId, intentDigest: digest });
266
+ assert.equal(launches.length, 1);
267
+ assert.deepEqual(launches[0].argv, ['/synthetic/index.js', 'sessions', 'serve', '--name', f.request.name,
268
+ '--workspace-id', f.request.workspaceId, '--apply', '--setup-handoff']);
269
+ assert.equal(launches[0].options.detached, false);
270
+ assert.deepEqual(launches[0].options.stdio, ['ignore', 'ignore', 'ignore', 'ipc']);
271
+ assert.equal(child.exitCode, null);
272
+ });
273
+ assert.ok(child.exitCode !== null || child.signalCode !== null);
274
+ assert.equal(vault.readCodexSetupSession(f.request.operationId, digest)?.result?.state, 'started');
275
+ });
276
+ test('actual original sender stages and verifies the standing result without reentering context or spawning a child', async (t) => {
277
+ const f = await fixture(t, true), key = randomBytes(32), controller = new AbortController();
278
+ const vault = await LocalVault.open({ root: resolve(f.root, 'vault'), masterKey: key });
279
+ const prepared = prepareCodexBootstrapHost({ workspace: f.root, signal: controller.signal, current: async () => true,
280
+ intent: { schema: 'dharma.codex-setup-intent/v1', operationId: f.request.operationId, setupReference: f.request.setupReference,
281
+ organizationId: f.request.organizationId, recipientMembershipId: f.request.membershipId, origin: f.request.origin,
282
+ repositoryFingerprint: digest, policyRevision: f.request.policyRevision, scopeDigest: digest, contractDigest: digest,
283
+ hostContextId: uuid(19), issuedAt: f.request.issuedAt, expiresAt: f.request.expiresAt } });
284
+ const binding = { connectionId: uuid(20), threadId: 'synthetic_thread', turnId: 'synthetic_turn', hostContextId: uuid(19) };
285
+ let staged, complete, result, starts = 0, executionError;
286
+ const stagedGate = new Promise(done => { staged = done; }), completeGate = new Promise(done => { complete = done; });
287
+ const childOwner = createNamedSessionChildOwner(controller.signal);
288
+ // Created outside the setup ALS: the standing receiver owns its own lifetime.
289
+ const receiving = childOwner.run(async () => {
290
+ await stagedGate;
291
+ await consumeCodexSetupSessions({ vault, owner: childOwner, signal: controller.signal,
292
+ authorize: async (request) => request.membershipId === f.request.membershipId && request.setupReference === f.request.setupReference,
293
+ start: async (scope) => {
294
+ starts++;
295
+ const child = await childOwner.spawn(scope.request.name, () => spawn(process.execPath, ['-e', 'setInterval(()=>{},1000)'], { cwd: f.root, stdio: 'ignore' }));
296
+ return { state: 'started', bindingId: uuid(40), sessionId: 'synthetic-session', sessionPid: child.pid,
297
+ supervisorPid: process.pid, sessionStartTicks: '30', supervisorStartTicks: '20' };
298
+ } });
299
+ await completeGate;
300
+ });
301
+ void receiving.catch(() => { });
302
+ const senderVault = { async stageCodexSetupSession(...args) {
303
+ const submission = vault.stageCodexSetupSession(...args);
304
+ staged();
305
+ return { async withdraw() { submission.withdraw(); } };
306
+ }, async readCodexSetupSession(...args) { return vault.readCodexSetupSession(...args); } };
307
+ const call = await declaration('requestBootstrapNamedSession', { ...f.dependencies,
308
+ originalCodexSetupSessionSender, inspectCodexBootstrapHostPreparation, assertBootstrapHostSource,
309
+ awaitCodexSetupSession, assertCodexSetupExecutionLease,
310
+ process: { platform: 'linux', pid: process.pid, getuid: () => 1000 },
311
+ required: (flags, key) => flags.get(key),
312
+ namedSessionCommand: async () => ({ ok: true, ...f.request, bindingId: uuid(40), sessionId: 'synthetic-session' }) });
313
+ const admission = createCodexSetupAdmission({ ...binding, intent: prepared.intent,
314
+ current: async () => ({ ...binding, mode: 'setup' }), qualifyHost: async () => true,
315
+ journal: { claim: async (id, hash) => vault.claimCodexSetupOperation(id, hash),
316
+ read: async (id, hash) => vault.readCodexSetupOperation(id, hash), finish: async (id, hash, value) => vault.finishCodexSetupOperation(id, hash, value) },
317
+ execute: async (_intent, _signal, _current, lease) => {
318
+ try {
319
+ await withCodexSetupSessionSender({ scope: prepared.scope, vault: senderVault, lease }, async () => {
320
+ result = await runCodexBootstrapHostScope(prepared.scope, () => call(prepared.scope, new Map([['name', f.request.name], ['workspace-id', f.request.workspaceId], ['apply', true]])));
321
+ });
322
+ }
323
+ catch (error) {
324
+ executionError = error;
325
+ throw error;
326
+ }
327
+ return { state: 'unconfirmed', code: 'setup_execution_unconfirmed' };
328
+ }, verifyReadiness: async () => false });
329
+ t.after(async () => {
330
+ complete();
331
+ staged();
332
+ admission.close();
333
+ await admission.settled;
334
+ prepared.scope.close();
335
+ controller.abort();
336
+ await receiving;
337
+ vault.close();
338
+ key.fill(0);
339
+ await rm(f.root, { recursive: true, force: true });
340
+ });
341
+ await admission.handler({ threadId: binding.threadId, turnId: binding.turnId, callId: 'synthetic_call',
342
+ tool: 'dharma_setup_reference', namespace: null,
343
+ arguments: { operationId: f.request.operationId, setupReference: f.request.setupReference } }, { signal: controller.signal });
344
+ await admission.settled;
345
+ if (executionError)
346
+ throw executionError;
347
+ assert.equal(result.ok, true);
348
+ assert.equal(starts, 1);
349
+ complete();
350
+ await receiving;
351
+ });
352
+ //# sourceMappingURL=codexSetupSessionCaller.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexSetupSessionCaller.test.js","sourceRoot":"","sources":["../src/codexSetupSessionCaller.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import type { LocalVault, ScopedLocalVault } from '@dharma-ai-labs/agent-fabric-local-vault';
2
+ import { type LocalCodexSetupSessionRequest, type LocalCodexSetupSessionResult } from '@dharma-ai-labs/agent-fabric-local-vault/setup-session';
3
+ import { type BootstrapHostScope } from './bootstrapHostScope.js';
4
+ import { type CodexSetupExecutionLease, type CodexSetupIntent } from './codexSetupAdmission.js';
5
+ import { type NamedSessionChildOwner } from './namedSessionChildOwner.js';
6
+ type SenderVault = Pick<ScopedLocalVault, 'stageCodexSetupSession' | 'readCodexSetupSession'>;
7
+ type ReceiverVault = Pick<LocalVault, 'listPendingCodexSetupSessions' | 'readCodexSetupSession' | 'acceptCodexSetupSession'>;
8
+ type Sender = Readonly<{
9
+ scope: BootstrapHostScope;
10
+ vault: SenderVault;
11
+ lease: Readonly<CodexSetupExecutionLease>;
12
+ intent: Readonly<CodexSetupIntent>;
13
+ active: {
14
+ value: boolean;
15
+ };
16
+ }>;
17
+ /** Private original-lease continuation. Public-shaped JSON is not admission. */
18
+ export declare function withCodexSetupSessionSender<T>(input: {
19
+ scope: BootstrapHostScope;
20
+ vault: SenderVault;
21
+ lease: Readonly<CodexSetupExecutionLease>;
22
+ }, operation: () => Promise<T>): Promise<T>;
23
+ export declare function originalCodexSetupSessionSender(scope: BootstrapHostScope): Promise<Sender>;
24
+ /** Original setup caller stages a request; it never starts or adopts a daemon. */
25
+ export declare function awaitCodexSetupSession(input: {
26
+ vault: SenderVault;
27
+ scope: BootstrapHostScope;
28
+ leaseId: string;
29
+ request: LocalCodexSetupSessionRequest;
30
+ waitMs?: number;
31
+ }): Promise<Readonly<LocalCodexSetupSessionResult>>;
32
+ export interface AcceptedSetupSessionScope {
33
+ readonly request: Readonly<LocalCodexSetupSessionRequest>;
34
+ step<T>(operation: () => Promise<T>): Promise<T>;
35
+ }
36
+ /** Closed descendants keep the closed context; they never become unscoped. */
37
+ export declare function currentAcceptedSetupSessionScope(): AcceptedSetupSessionScope | undefined;
38
+ /** Only an existing standing owner can consume once. This component does not
39
+ * confer signed policy, enrollment or provider authority on a JSON request. */
40
+ export declare function consumeCodexSetupSessions(input: {
41
+ vault: ReceiverVault;
42
+ owner: NamedSessionChildOwner;
43
+ signal: AbortSignal;
44
+ authorize(request: Readonly<LocalCodexSetupSessionRequest>): Promise<boolean>;
45
+ start(scope: AcceptedSetupSessionScope): Promise<LocalCodexSetupSessionResult>;
46
+ }): Promise<number>;
47
+ export {};
48
+ //# sourceMappingURL=codexSetupSessionHandoff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexSetupSessionHandoff.d.ts","sourceRoot":"","sources":["../src/codexSetupSessionHandoff.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,UAAU,EAAE,gBAAgB,EAAC,MAAM,0CAA0C,CAAC;AAC3F,OAAO,EACL,KAAK,6BAA6B,EAAE,KAAK,4BAA4B,EAAC,MACjE,wDAAwD,CAAC;AAChE,OAAO,EAAkE,KAAK,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AACjI,OAAO,EAAiC,KAAK,wBAAwB,EAAE,KAAK,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC9H,OAAO,EAAgC,KAAK,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;AAEvG,KAAK,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,wBAAwB,GAAG,uBAAuB,CAAC,CAAC;AAC9F,KAAK,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,+BAA+B,GAAG,uBAAuB,GAAG,yBAAyB,CAAC,CAAC;AAC7H,KAAK,MAAM,GAAG,QAAQ,CAAC;IAAC,KAAK,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAC,wBAAwB,CAAC,CAAC;IAC/G,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAAC,MAAM,EAAE;QAAC,KAAK,EAAE,OAAO,CAAA;KAAC,CAAA;CAAC,CAAC,CAAC;AAGjE,gFAAgF;AAChF,wBAAsB,2BAA2B,CAAC,CAAC,EAAE,KAAK,EAAE;IAAC,KAAK,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,WAAW,CAAC;IACzG,KAAK,EAAE,QAAQ,CAAC,wBAAwB,CAAC,CAAA;CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAQrF;AAED,wBAAsB,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAMhG;AAED,kFAAkF;AAClF,wBAAsB,sBAAsB,CAAC,KAAK,EAAE;IAAC,KAAK,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,kBAAkB,CAAC;IACjG,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,6BAA6B,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC,CAyB5H;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,6BAA6B,CAAC,CAAC;IAC1D,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAClD;AAGD,8EAA8E;AAC9E,wBAAgB,gCAAgC,0CAAuC;AAEvF;+EAC+E;AAC/E,wBAAsB,yBAAyB,CAAC,KAAK,EAAE;IAAC,KAAK,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,sBAAsB,CAAC;IAC1G,MAAM,EAAE,WAAW,CAAC;IAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,6BAA6B,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnG,KAAK,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAA;CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CA2DlG"}
@@ -0,0 +1,146 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ import { canonicalize, sha256 } from '@dharma-ai-labs/agent-fabric-contracts';
3
+ import { parseLocalCodexSetupSessionRequest, parseLocalCodexSetupSessionResult } from '@dharma-ai-labs/agent-fabric-local-vault/setup-session';
4
+ import { currentBootstrapHostScope, inspectCodexBootstrapHostPreparation } from './bootstrapHostScope.js';
5
+ import { assertCodexSetupExecutionLease } from './codexSetupAdmission.js';
6
+ import { currentNamedSessionChildOwner } from './namedSessionChildOwner.js';
7
+ const originalSenders = new WeakMap();
8
+ /** Private original-lease continuation. Public-shaped JSON is not admission. */
9
+ export async function withCodexSetupSessionSender(input, operation) {
10
+ const prepared = await inspectCodexBootstrapHostPreparation(input.scope);
11
+ await input.scope.step(() => assertCodexSetupExecutionLease(input.lease, prepared.intent));
12
+ if (originalSenders.has(input.scope))
13
+ throw new Error('setup_session_sender_conflict');
14
+ const sender = Object.freeze({ ...input, intent: prepared.intent, active: { value: true } });
15
+ originalSenders.set(input.scope, sender);
16
+ try {
17
+ return await operation();
18
+ }
19
+ finally {
20
+ sender.active.value = false;
21
+ originalSenders.delete(input.scope);
22
+ }
23
+ }
24
+ export async function originalCodexSetupSessionSender(scope) {
25
+ const sender = originalSenders.get(scope);
26
+ if (!sender?.active.value || currentBootstrapHostScope() !== scope)
27
+ throw new Error('setup_session_sender_unavailable');
28
+ await scope.step(() => assertCodexSetupExecutionLease(sender.lease, sender.intent));
29
+ if (!sender.active.value || originalSenders.get(scope) !== sender)
30
+ throw new Error('setup_session_sender_unavailable');
31
+ return sender;
32
+ }
33
+ /** Original setup caller stages a request; it never starts or adopts a daemon. */
34
+ export async function awaitCodexSetupSession(input) {
35
+ const request = parseLocalCodexSetupSessionRequest(input.request), waitMs = input.waitMs ?? 30_000;
36
+ if (!Number.isSafeInteger(waitMs) || waitMs < 1 || waitMs > 30_000)
37
+ throw new Error('setup_session_invalid');
38
+ const submission = await input.scope.step(() => input.vault.stageCodexSetupSession(input.leaseId, request.intentDigest, request));
39
+ try {
40
+ const deadline = Math.min(Date.now() + waitMs, Date.parse(request.expiresAt));
41
+ do {
42
+ const observation = await input.scope.step(() => input.vault.readCodexSetupSession(request.operationId, request.intentDigest));
43
+ if (!observation || canonicalize(observation.request) !== canonicalize(request) || observation.state === 'withdrawn') {
44
+ throw new Error('setup_session_scope_changed');
45
+ }
46
+ if (observation.state === 'accepted' && observation.result)
47
+ return parseLocalCodexSetupSessionResult(observation.result);
48
+ await input.scope.step(() => new Promise(resolveWait => {
49
+ const finish = () => { clearTimeout(timer); input.scope.signal.removeEventListener('abort', finish); resolveWait(); };
50
+ const timer = setTimeout(finish, Math.min(100, Math.max(1, deadline - Date.now())));
51
+ input.scope.signal.addEventListener('abort', finish, { once: true });
52
+ if (input.scope.signal.aborted)
53
+ finish();
54
+ }));
55
+ } while (Date.now() < deadline);
56
+ throw new Error('setup_session_start_unconfirmed');
57
+ }
58
+ finally {
59
+ // Exact pending-request cleanup remains available after scope withdrawal.
60
+ // An accepted request is not cancelled or represented as rolled back.
61
+ await submission.withdraw();
62
+ }
63
+ }
64
+ const receiverContext = new WeakSet();
65
+ const acceptedContext = new AsyncLocalStorage();
66
+ /** Closed descendants keep the closed context; they never become unscoped. */
67
+ export function currentAcceptedSetupSessionScope() { return acceptedContext.getStore(); }
68
+ /** Only an existing standing owner can consume once. This component does not
69
+ * confer signed policy, enrollment or provider authority on a JSON request. */
70
+ export async function consumeCodexSetupSessions(input) {
71
+ const assertOwner = () => {
72
+ if (input.signal.aborted || currentNamedSessionChildOwner() !== input.owner)
73
+ throw new Error('setup_session_owner_unavailable');
74
+ input.owner.assert();
75
+ };
76
+ assertOwner();
77
+ let consumed = 0;
78
+ for (const entry of input.vault.listPendingCodexSetupSessions()) {
79
+ assertOwner();
80
+ const observation = input.vault.readCodexSetupSession(entry.operationId, entry.intentDigest);
81
+ if (!observation || observation.state !== 'pending')
82
+ continue;
83
+ const request = parseLocalCodexSetupSessionRequest(observation.request);
84
+ const assertLifetime = () => {
85
+ assertOwner();
86
+ if (Date.now() < Date.parse(request.issuedAt) || Date.now() >= Date.parse(request.expiresAt)) {
87
+ throw new Error('setup_session_scope_unavailable');
88
+ }
89
+ };
90
+ assertLifetime();
91
+ if (!await input.authorize(request))
92
+ continue;
93
+ assertLifetime();
94
+ const cleanup = input.owner.checkpoint(request.name);
95
+ const acceptance = input.vault.acceptCodexSetupSession(entry.operationId, entry.intentDigest, sha256(canonicalize(request)));
96
+ if (!acceptance)
97
+ continue;
98
+ consumed++;
99
+ let active = true;
100
+ const scope = Object.freeze({ request, async step(operation) {
101
+ if (!active || !receiverContext.has(scope))
102
+ throw new Error('setup_session_scope_unavailable');
103
+ assertLifetime();
104
+ if (!await input.authorize(request))
105
+ throw new Error('setup_session_scope_unavailable');
106
+ // Recheck synchronously after the policy yield and before each effect.
107
+ assertLifetime();
108
+ if (!active || !receiverContext.has(scope))
109
+ throw new Error('setup_session_scope_unavailable');
110
+ const value = await operation();
111
+ assertLifetime();
112
+ if (!active || !receiverContext.has(scope) || !await input.authorize(request))
113
+ throw new Error('setup_session_scope_unavailable');
114
+ assertLifetime();
115
+ if (!active || !receiverContext.has(scope))
116
+ throw new Error('setup_session_scope_unavailable');
117
+ return value;
118
+ } });
119
+ receiverContext.add(scope);
120
+ try {
121
+ const result = await scope.step(() => acceptedContext.run(scope, () => input.start(scope)));
122
+ const accepted = parseLocalCodexSetupSessionResult(result);
123
+ if (accepted.state === 'started' && (accepted.supervisorPid !== process.pid
124
+ || input.owner.ownedPid(request.name) !== accepted.sessionPid))
125
+ throw new Error('setup_session_owner_unconfirmed');
126
+ if (accepted.state === 'unconfirmed')
127
+ await cleanup.stopFresh();
128
+ acceptance.record(accepted);
129
+ }
130
+ catch {
131
+ // Accepted-but-interrupted is durable, not a retry license. Withhold all
132
+ // provider/private diagnostics and do not signal unrelated workers.
133
+ // Drain only this request's newly captured child, even after withdrawal.
134
+ // Unconfirmed cleanup must not be masked by a recorded disposition.
135
+ await cleanup.stopFresh();
136
+ assertOwner();
137
+ acceptance.record({ state: 'unconfirmed', code: 'session_start_unconfirmed' });
138
+ }
139
+ finally {
140
+ active = false;
141
+ receiverContext.delete(scope);
142
+ }
143
+ }
144
+ return consumed;
145
+ }
146
+ //# sourceMappingURL=codexSetupSessionHandoff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexSetupSessionHandoff.js","sourceRoot":"","sources":["../src/codexSetupSessionHandoff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=codexSetupSessionHandoff.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexSetupSessionHandoff.test.d.ts","sourceRoot":"","sources":["../src/codexSetupSessionHandoff.test.ts"],"names":[],"mappings":""}