@dharma-ai-labs/agent-fabric 0.2.152 → 0.2.154
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bootstrapGitScope.test.d.ts +2 -0
- package/dist/bootstrapGitScope.test.d.ts.map +1 -0
- package/dist/bootstrapGitScope.test.js +115 -0
- package/dist/bootstrapGitScope.test.js.map +1 -0
- package/dist/bootstrapHostFiles.d.ts +5 -0
- package/dist/bootstrapHostFiles.d.ts.map +1 -0
- package/dist/bootstrapHostFiles.js +150 -0
- package/dist/bootstrapHostFiles.js.map +1 -0
- package/dist/bootstrapHostFiles.test.d.ts +2 -0
- package/dist/bootstrapHostFiles.test.d.ts.map +1 -0
- package/dist/bootstrapHostFiles.test.js +127 -0
- package/dist/bootstrapHostFiles.test.js.map +1 -0
- package/dist/bootstrapHostScope.d.ts +42 -0
- package/dist/bootstrapHostScope.d.ts.map +1 -0
- package/dist/bootstrapHostScope.js +224 -0
- package/dist/bootstrapHostScope.js.map +1 -0
- package/dist/bootstrapHostScope.test.d.ts +2 -0
- package/dist/bootstrapHostScope.test.d.ts.map +1 -0
- package/dist/bootstrapHostScope.test.js +577 -0
- package/dist/bootstrapHostScope.test.js.map +1 -0
- package/dist/bootstrapInstallationScope.test.d.ts +2 -0
- package/dist/bootstrapInstallationScope.test.d.ts.map +1 -0
- package/dist/bootstrapInstallationScope.test.js +68 -0
- package/dist/bootstrapInstallationScope.test.js.map +1 -0
- package/dist/bootstrapLauncherCaller.test.d.ts +2 -0
- package/dist/bootstrapLauncherCaller.test.d.ts.map +1 -0
- package/dist/bootstrapLauncherCaller.test.js +91 -0
- package/dist/bootstrapLauncherCaller.test.js.map +1 -0
- package/dist/bootstrapOwnedChildren.test.d.ts +2 -0
- package/dist/bootstrapOwnedChildren.test.d.ts.map +1 -0
- package/dist/bootstrapOwnedChildren.test.js +93 -0
- package/dist/bootstrapOwnedChildren.test.js.map +1 -0
- package/dist/bootstrapPolicyScope.test.d.ts +2 -0
- package/dist/bootstrapPolicyScope.test.d.ts.map +1 -0
- package/dist/bootstrapPolicyScope.test.js +261 -0
- package/dist/bootstrapPolicyScope.test.js.map +1 -0
- package/dist/bootstrapProcessCaller.test.d.ts +2 -0
- package/dist/bootstrapProcessCaller.test.d.ts.map +1 -0
- package/dist/bootstrapProcessCaller.test.js +262 -0
- package/dist/bootstrapProcessCaller.test.js.map +1 -0
- package/dist/bootstrapRegistryCaller.test.d.ts +2 -0
- package/dist/bootstrapRegistryCaller.test.d.ts.map +1 -0
- package/dist/bootstrapRegistryCaller.test.js +128 -0
- package/dist/bootstrapRegistryCaller.test.js.map +1 -0
- package/dist/bootstrapVaultScope.test.d.ts +2 -0
- package/dist/bootstrapVaultScope.test.d.ts.map +1 -0
- package/dist/bootstrapVaultScope.test.js +105 -0
- package/dist/bootstrapVaultScope.test.js.map +1 -0
- package/dist/codexBootstrapCompletion.test.d.ts +2 -0
- package/dist/codexBootstrapCompletion.test.d.ts.map +1 -0
- package/dist/codexBootstrapCompletion.test.js +630 -0
- package/dist/codexBootstrapCompletion.test.js.map +1 -0
- package/dist/codexBoundSession.d.ts +2 -2
- package/dist/codexBoundSession.d.ts.map +1 -1
- package/dist/codexBoundSession.js +23 -17
- package/dist/codexBoundSession.js.map +1 -1
- package/dist/codexBoundSession.test.js +3 -0
- package/dist/codexBoundSession.test.js.map +1 -1
- package/dist/codexInboxSession.d.ts.map +1 -1
- package/dist/codexInboxSession.js +3 -3
- package/dist/codexInboxSession.js.map +1 -1
- package/dist/codexScopedDispatch.test.d.ts +2 -0
- package/dist/codexScopedDispatch.test.d.ts.map +1 -0
- package/dist/codexScopedDispatch.test.js +56 -0
- package/dist/codexScopedDispatch.test.js.map +1 -0
- package/dist/codexSetupAdmission.d.ts +108 -0
- package/dist/codexSetupAdmission.d.ts.map +1 -0
- package/dist/codexSetupAdmission.js +214 -0
- package/dist/codexSetupAdmission.js.map +1 -0
- package/dist/codexSetupAdmission.test.d.ts +2 -0
- package/dist/codexSetupAdmission.test.d.ts.map +1 -0
- package/dist/codexSetupAdmission.test.js +578 -0
- package/dist/codexSetupAdmission.test.js.map +1 -0
- package/dist/codexSetupChildProvider.test.d.ts +2 -0
- package/dist/codexSetupChildProvider.test.d.ts.map +1 -0
- package/dist/codexSetupChildProvider.test.js +210 -0
- package/dist/codexSetupChildProvider.test.js.map +1 -0
- package/dist/codexSetupChildStartup.d.ts +38 -0
- package/dist/codexSetupChildStartup.d.ts.map +1 -0
- package/dist/codexSetupChildStartup.js +115 -0
- package/dist/codexSetupChildStartup.js.map +1 -0
- package/dist/codexSetupChildStartup.test.d.ts +2 -0
- package/dist/codexSetupChildStartup.test.d.ts.map +1 -0
- package/dist/codexSetupChildStartup.test.js +141 -0
- package/dist/codexSetupChildStartup.test.js.map +1 -0
- package/dist/codexSetupCliDispatch.test.d.ts +2 -0
- package/dist/codexSetupCliDispatch.test.d.ts.map +1 -0
- package/dist/codexSetupCliDispatch.test.js +138 -0
- package/dist/codexSetupCliDispatch.test.js.map +1 -0
- package/dist/codexSetupJournalOpen.test.d.ts +2 -0
- package/dist/codexSetupJournalOpen.test.d.ts.map +1 -0
- package/dist/codexSetupJournalOpen.test.js +101 -0
- package/dist/codexSetupJournalOpen.test.js.map +1 -0
- package/dist/codexSetupNativeHost.d.ts +31 -0
- package/dist/codexSetupNativeHost.d.ts.map +1 -0
- package/dist/codexSetupNativeHost.js +208 -0
- package/dist/codexSetupNativeHost.js.map +1 -0
- package/dist/codexSetupNativeHost.test.d.ts +2 -0
- package/dist/codexSetupNativeHost.test.d.ts.map +1 -0
- package/dist/codexSetupNativeHost.test.js +456 -0
- package/dist/codexSetupNativeHost.test.js.map +1 -0
- package/dist/codexSetupNativeWire.test.d.ts +2 -0
- package/dist/codexSetupNativeWire.test.d.ts.map +1 -0
- package/dist/codexSetupNativeWire.test.js +243 -0
- package/dist/codexSetupNativeWire.test.js.map +1 -0
- package/dist/codexSetupOwnedConnection.d.ts +14 -0
- package/dist/codexSetupOwnedConnection.d.ts.map +1 -0
- package/dist/codexSetupOwnedConnection.js +64 -0
- package/dist/codexSetupOwnedConnection.js.map +1 -0
- package/dist/codexSetupOwnedConnection.test.d.ts +2 -0
- package/dist/codexSetupOwnedConnection.test.d.ts.map +1 -0
- package/dist/codexSetupOwnedConnection.test.js +192 -0
- package/dist/codexSetupOwnedConnection.test.js.map +1 -0
- package/dist/codexSetupPortalCommand.test.d.ts +2 -0
- package/dist/codexSetupPortalCommand.test.d.ts.map +1 -0
- package/dist/codexSetupPortalCommand.test.js +146 -0
- package/dist/codexSetupPortalCommand.test.js.map +1 -0
- package/dist/codexSetupReadiness.d.ts +23 -0
- package/dist/codexSetupReadiness.d.ts.map +1 -0
- package/dist/codexSetupReadiness.js +74 -0
- package/dist/codexSetupReadiness.js.map +1 -0
- package/dist/codexSetupReadiness.test.d.ts +2 -0
- package/dist/codexSetupReadiness.test.d.ts.map +1 -0
- package/dist/codexSetupReadiness.test.js +145 -0
- package/dist/codexSetupReadiness.test.js.map +1 -0
- package/dist/codexSetupSessionCaller.test.d.ts +2 -0
- package/dist/codexSetupSessionCaller.test.d.ts.map +1 -0
- package/dist/codexSetupSessionCaller.test.js +352 -0
- package/dist/codexSetupSessionCaller.test.js.map +1 -0
- package/dist/codexSetupSessionHandoff.d.ts +48 -0
- package/dist/codexSetupSessionHandoff.d.ts.map +1 -0
- package/dist/codexSetupSessionHandoff.js +146 -0
- package/dist/codexSetupSessionHandoff.js.map +1 -0
- package/dist/codexSetupSessionHandoff.test.d.ts +2 -0
- package/dist/codexSetupSessionHandoff.test.d.ts.map +1 -0
- package/dist/codexSetupSessionHandoff.test.js +289 -0
- package/dist/codexSetupSessionHandoff.test.js.map +1 -0
- package/dist/codexSetupTransport.test.d.ts +2 -0
- package/dist/codexSetupTransport.test.d.ts.map +1 -0
- package/dist/codexSetupTransport.test.js +206 -0
- package/dist/codexSetupTransport.test.js.map +1 -0
- package/dist/codexSetupVaultJournal.d.ts +13 -0
- package/dist/codexSetupVaultJournal.d.ts.map +1 -0
- package/dist/codexSetupVaultJournal.js +28 -0
- package/dist/codexSetupVaultJournal.js.map +1 -0
- package/dist/codexSetupVaultJournal.test.d.ts +2 -0
- package/dist/codexSetupVaultJournal.test.d.ts.map +1 -0
- package/dist/codexSetupVaultJournal.test.js +104 -0
- package/dist/codexSetupVaultJournal.test.js.map +1 -0
- package/dist/containerChildCleanup.test.d.ts +2 -0
- package/dist/containerChildCleanup.test.d.ts.map +1 -0
- package/dist/containerChildCleanup.test.js +145 -0
- package/dist/containerChildCleanup.test.js.map +1 -0
- package/dist/containerRelayLifecycle.d.ts +1 -1
- package/dist/containerRelayLifecycle.d.ts.map +1 -1
- package/dist/containerRelayLifecycle.js +29 -37
- package/dist/containerRelayLifecycle.js.map +1 -1
- package/dist/containerRelayLifecycle.test.js +13 -0
- package/dist/containerRelayLifecycle.test.js.map +1 -1
- package/dist/cooperativeInboxSession.d.ts +2 -2
- package/dist/cooperativeInboxSession.d.ts.map +1 -1
- package/dist/cooperativeInboxSession.js +21 -13
- package/dist/cooperativeInboxSession.js.map +1 -1
- package/dist/cooperativeInboxSession.test.js +65 -0
- package/dist/cooperativeInboxSession.test.js.map +1 -1
- package/dist/demoWatchControl.d.ts +3 -3
- package/dist/index.d.ts +55 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1650 -557
- package/dist/index.js.map +1 -1
- package/dist/namedCodexSkillDiscovery.d.ts +15 -0
- package/dist/namedCodexSkillDiscovery.d.ts.map +1 -0
- package/dist/namedCodexSkillDiscovery.js +90 -0
- package/dist/namedCodexSkillDiscovery.js.map +1 -0
- package/dist/namedCodexSkillDiscovery.test.d.ts +2 -0
- package/dist/namedCodexSkillDiscovery.test.d.ts.map +1 -0
- package/dist/namedCodexSkillDiscovery.test.js +37 -0
- package/dist/namedCodexSkillDiscovery.test.js.map +1 -0
- package/dist/namedCodexThread.d.ts +2 -0
- package/dist/namedCodexThread.d.ts.map +1 -1
- package/dist/namedCodexThread.js +13 -4
- package/dist/namedCodexThread.js.map +1 -1
- package/dist/namedSessionChildOwner.d.ts +17 -0
- package/dist/namedSessionChildOwner.d.ts.map +1 -0
- package/dist/namedSessionChildOwner.js +122 -0
- package/dist/namedSessionChildOwner.js.map +1 -0
- package/dist/namedSessionChildOwner.test.d.ts +2 -0
- package/dist/namedSessionChildOwner.test.d.ts.map +1 -0
- package/dist/namedSessionChildOwner.test.js +203 -0
- package/dist/namedSessionChildOwner.test.js.map +1 -0
- package/dist/namedSessionEvidence.d.ts +2 -2
- package/dist/namedSessionEvidence.d.ts.map +1 -1
- package/dist/namedSessionEvidence.js +2 -2
- package/dist/namedSessionEvidence.js.map +1 -1
- package/dist/namedSessionEvidence.test.js +24 -1
- package/dist/namedSessionEvidence.test.js.map +1 -1
- package/dist/namedSessionRepositoryState.d.ts +2 -2
- package/dist/namedSessionRepositoryState.d.ts.map +1 -1
- package/dist/namedSessionService.d.ts +4 -2
- package/dist/namedSessionService.d.ts.map +1 -1
- package/dist/namedSessionService.js +18 -1
- package/dist/namedSessionService.js.map +1 -1
- package/dist/namedSessionService.test.js +31 -2
- package/dist/namedSessionService.test.js.map +1 -1
- package/dist/namedSessionTaskExportSync.d.ts +3 -3
- package/dist/namedSessionTaskExportSync.d.ts.map +1 -1
- package/dist/namedSessionTaskExportSync.js +6 -6
- package/dist/namedSessionTaskExportSync.js.map +1 -1
- package/dist/namedSessionTrust.d.ts +2 -2
- package/dist/namedSessionTrust.d.ts.map +1 -1
- package/dist/namedSessionTrust.js +3 -2
- package/dist/namedSessionTrust.js.map +1 -1
- package/dist/namedSessionTrust.test.js +2 -1
- package/dist/namedSessionTrust.test.js.map +1 -1
- package/dist/ownedChildLifecycle.d.ts +13 -0
- package/dist/ownedChildLifecycle.d.ts.map +1 -0
- package/dist/ownedChildLifecycle.js +87 -0
- package/dist/ownedChildLifecycle.js.map +1 -0
- package/dist/ownedChildLifecycle.test.d.ts +2 -0
- package/dist/ownedChildLifecycle.test.d.ts.map +1 -0
- package/dist/ownedChildLifecycle.test.js +133 -0
- package/dist/ownedChildLifecycle.test.js.map +1 -0
- package/dist/pidLock.test.js +242 -9
- package/dist/pidLock.test.js.map +1 -1
- package/dist/providerSessionChannel.d.ts +1 -1
- package/dist/providerSessionChannel.d.ts.map +1 -1
- package/dist/providerSessionChannel.js +7 -3
- package/dist/providerSessionChannel.js.map +1 -1
- package/dist/providerSessionChannel.test.js +20 -0
- package/dist/providerSessionChannel.test.js.map +1 -1
- package/dist/providerSessionReplyRecovery.d.ts +2 -2
- package/dist/providerSessionReplyRecovery.d.ts.map +1 -1
- package/dist/providerSessionReplyRecovery.js +3 -3
- package/dist/providerSessionReplyRecovery.js.map +1 -1
- package/dist/relayAutostart.d.ts.map +1 -1
- package/dist/relayAutostart.js +12 -9
- package/dist/relayAutostart.js.map +1 -1
- package/dist/relayRuntimeUpgrade.d.ts +1 -1
- package/dist/relayRuntimeUpgrade.d.ts.map +1 -1
- package/dist/relayRuntimeUpgrade.js +3 -1
- package/dist/relayRuntimeUpgrade.js.map +1 -1
- package/dist/relayRuntimeUpgrade.test.js +113 -0
- package/dist/relayRuntimeUpgrade.test.js.map +1 -1
- package/dist/relayRuntimeUpgradeCaller.test.js +12 -1
- package/dist/relayRuntimeUpgradeCaller.test.js.map +1 -1
- package/dist/relaySupervisor.d.ts.map +1 -1
- package/dist/relaySupervisor.js +19 -14
- package/dist/relaySupervisor.js.map +1 -1
- package/dist/relaySupervisor.test.js +26 -0
- package/dist/relaySupervisor.test.js.map +1 -1
- package/dist/relaySupervisorCleanup.test.d.ts +2 -0
- package/dist/relaySupervisorCleanup.test.d.ts.map +1 -0
- package/dist/relaySupervisorCleanup.test.js +69 -0
- package/dist/relaySupervisorCleanup.test.js.map +1 -0
- package/dist/repositoryInstallerFiles.d.ts +19 -1
- package/dist/repositoryInstallerFiles.d.ts.map +1 -1
- package/dist/repositoryInstallerFiles.js +205 -29
- package/dist/repositoryInstallerFiles.js.map +1 -1
- package/dist/repositoryInstallerScope.test.d.ts +2 -0
- package/dist/repositoryInstallerScope.test.d.ts.map +1 -0
- package/dist/repositoryInstallerScope.test.js +513 -0
- package/dist/repositoryInstallerScope.test.js.map +1 -0
- package/dist/repositoryKnowledge.d.ts.map +1 -1
- package/dist/repositoryKnowledge.js +177 -37
- package/dist/repositoryKnowledge.js.map +1 -1
- package/dist/repositoryKnowledgeScope.test.d.ts +2 -0
- package/dist/repositoryKnowledgeScope.test.d.ts.map +1 -0
- package/dist/repositoryKnowledgeScope.test.js +316 -0
- package/dist/repositoryKnowledgeScope.test.js.map +1 -0
- package/dist/repositoryOnboardingCaller.test.js +61 -4
- package/dist/repositoryOnboardingCaller.test.js.map +1 -1
- package/dist/repositoryPackage.d.ts.map +1 -1
- package/dist/repositoryPackage.js +340 -59
- package/dist/repositoryPackage.js.map +1 -1
- package/dist/repositoryPackageDelivery.test.js +65 -0
- package/dist/repositoryPackageDelivery.test.js.map +1 -1
- package/dist/repositoryPackageScope.test.d.ts +2 -0
- package/dist/repositoryPackageScope.test.d.ts.map +1 -0
- package/dist/repositoryPackageScope.test.js +578 -0
- package/dist/repositoryPackageScope.test.js.map +1 -0
- package/dist/schemas/codex-setup-child-start.schema.json +12 -0
- package/dist/schemas/codex-setup-intent.schema.json +27 -0
- package/dist/schemas/local-codex-setup-session.schema.json +39 -0
- package/dist/schemas/setup-claim-failure.schema.json +15 -0
- package/dist/skillInstallationScope.test.d.ts +2 -0
- package/dist/skillInstallationScope.test.d.ts.map +1 -0
- package/dist/skillInstallationScope.test.js +64 -0
- package/dist/skillInstallationScope.test.js.map +1 -0
- package/dist/skillPreparationCache.test.js +12 -4
- package/dist/skillPreparationCache.test.js.map +1 -1
- package/dist/skillPreparationCaller.test.js +31 -1
- package/dist/skillPreparationCaller.test.js.map +1 -1
- package/dist/startupCommitScope.test.d.ts +2 -0
- package/dist/startupCommitScope.test.d.ts.map +1 -0
- package/dist/startupCommitScope.test.js +172 -0
- package/dist/startupCommitScope.test.js.map +1 -0
- package/dist/workspaceRegistry.d.ts.map +1 -1
- package/dist/workspaceRegistry.js +7 -3
- package/dist/workspaceRegistry.js.map +1 -1
- package/dist/workspaceRegistry.test.js +51 -0
- package/dist/workspaceRegistry.test.js.map +1 -1
- package/dist/workspaceRegistryRecovery.d.ts.map +1 -1
- package/dist/workspaceRegistryRecovery.js +171 -64
- package/dist/workspaceRegistryRecovery.js.map +1 -1
- package/dist/workspaceRegistryRecoveryScope.test.d.ts +2 -0
- package/dist/workspaceRegistryRecoveryScope.test.d.ts.map +1 -0
- package/dist/workspaceRegistryRecoveryScope.test.js +416 -0
- package/dist/workspaceRegistryRecoveryScope.test.js.map +1 -0
- package/package.json +7 -7
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { spawn } from 'node:child_process';
|
|
3
|
+
import { randomBytes } from 'node:crypto';
|
|
4
|
+
import { mkdtemp, 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 { LocalVault } from '@dharma-ai-labs/agent-fabric-local-vault';
|
|
9
|
+
import { prepareCodexBootstrapHost, runCodexBootstrapHostScope } from './bootstrapHostScope.js';
|
|
10
|
+
import { createCodexSetupAdmission } from './codexSetupAdmission.js';
|
|
11
|
+
import { createNamedSessionChildOwner } from './namedSessionChildOwner.js';
|
|
12
|
+
import { awaitCodexSetupSession, consumeCodexSetupSessions, currentAcceptedSetupSessionScope, originalCodexSetupSessionSender, withCodexSetupSessionSender } from './codexSetupSessionHandoff.js';
|
|
13
|
+
const uuid = (n) => `${String(n).padStart(8, '0')}-1111-4111-8111-111111111111`;
|
|
14
|
+
const digest = `sha256:${'a'.repeat(64)}`;
|
|
15
|
+
async function fixture(run) {
|
|
16
|
+
const root = await mkdtemp(resolve(tmpdir(), 'dharma-session-supervisor-'));
|
|
17
|
+
const vault = await LocalVault.open({ root, masterKey: randomBytes(32) }), controller = new AbortController();
|
|
18
|
+
const claim = vault.claimCodexSetupOperation(uuid(1), digest);
|
|
19
|
+
if (claim.state !== 'acquired')
|
|
20
|
+
throw new Error('fixture_claim_missing');
|
|
21
|
+
const request = { schema: 'dharma.local-codex-setup-session/v1', operationId: uuid(1),
|
|
22
|
+
intentDigest: digest, setupReference: uuid(99), senderPid: process.pid, senderStartTicks: '1',
|
|
23
|
+
organizationId: 'org_demo', membershipId: uuid(2), deviceId: uuid(3), workspaceId: uuid(4),
|
|
24
|
+
repositoryBindingId: uuid(5), endpointId: uuid(6), provider: 'codex', origin: 'https://hq.example',
|
|
25
|
+
repositoryFingerprint: digest, policyRevision: 'policy-v1', policyHash: digest, scopeDigest: digest,
|
|
26
|
+
contractDigest: digest, name: 'reviewer', workspaceRoot: root, maximumCostCents: 1000, maximumTurnCostCents: 25,
|
|
27
|
+
issuedAt: new Date(Date.now() - 1000).toISOString(), expiresAt: new Date(Date.now() + 60000).toISOString() };
|
|
28
|
+
const scope = { signal: controller.signal, current: async () => !controller.signal.aborted,
|
|
29
|
+
async assert() { if (controller.signal.aborted)
|
|
30
|
+
throw new Error('codex_setup_host_scope_unavailable'); },
|
|
31
|
+
close() { controller.abort(); }, async step(operation) { await this.assert(); const result = await operation(); await this.assert(); return result; } };
|
|
32
|
+
try {
|
|
33
|
+
await run({ vault, request, leaseId: claim.leaseId, signal: controller.signal, abort: () => controller.abort(), scope });
|
|
34
|
+
}
|
|
35
|
+
finally {
|
|
36
|
+
controller.abort();
|
|
37
|
+
vault.close();
|
|
38
|
+
await rm(root, { recursive: true, force: true });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const sender = (vault) => ({ async stageCodexSetupSession(...args) {
|
|
42
|
+
const submission = vault.stageCodexSetupSession(...args);
|
|
43
|
+
return { async withdraw() { submission.withdraw(); } };
|
|
44
|
+
}, async readCodexSetupSession(...args) { return vault.readCodexSetupSession(...args); } });
|
|
45
|
+
const unconfirmed = { state: 'unconfirmed', code: 'session_start_unconfirmed' };
|
|
46
|
+
test('sender and actual standing owner share one encrypted request and a fresh child, without another dispatch', async () => {
|
|
47
|
+
await fixture(async (f) => {
|
|
48
|
+
const owner = createNamedSessionChildOwner(f.signal);
|
|
49
|
+
const waiting = awaitCodexSetupSession({ vault: sender(f.vault), scope: f.scope, request: f.request, leaseId: f.leaseId });
|
|
50
|
+
await new Promise(resolveWait => setImmediate(resolveWait));
|
|
51
|
+
let starts = 0;
|
|
52
|
+
await owner.run(async () => {
|
|
53
|
+
assert.equal(await consumeCodexSetupSessions({ vault: f.vault, owner, signal: f.signal, authorize: async () => true,
|
|
54
|
+
start: scope => scope.step(async () => {
|
|
55
|
+
starts++;
|
|
56
|
+
const child = await owner.spawn(scope.request.name, () => spawn(process.execPath, ['-e', 'setInterval(()=>{},1000)'], { stdio: 'ignore' }));
|
|
57
|
+
return { state: 'started', bindingId: uuid(9), sessionId: 'synthetic', sessionPid: child.pid,
|
|
58
|
+
supervisorPid: process.pid, sessionStartTicks: '1', supervisorStartTicks: '1' };
|
|
59
|
+
}) }), 1);
|
|
60
|
+
assert.equal((await waiting).state, 'started');
|
|
61
|
+
assert.equal(await consumeCodexSetupSessions({ vault: f.vault, owner, signal: f.signal, authorize: async () => true,
|
|
62
|
+
start: async () => { starts++; return unconfirmed; } }), 0);
|
|
63
|
+
assert.equal(starts, 1);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
test('a serialized or out-of-context owner cannot accept or start a request', async () => {
|
|
68
|
+
await fixture(async (f) => {
|
|
69
|
+
f.vault.stageCodexSetupSession(f.leaseId, digest, f.request);
|
|
70
|
+
const owner = createNamedSessionChildOwner(f.signal);
|
|
71
|
+
let starts = 0;
|
|
72
|
+
try {
|
|
73
|
+
await assert.rejects(consumeCodexSetupSessions({ vault: f.vault, owner, signal: f.signal,
|
|
74
|
+
authorize: async () => true, start: async () => { starts++; return unconfirmed; } }), /setup_session_owner_unavailable/);
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
await owner.close();
|
|
78
|
+
}
|
|
79
|
+
assert.equal(starts, 0);
|
|
80
|
+
assert.equal(f.vault.readCodexSetupSession(uuid(1), digest)?.state, 'pending');
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
test('policy rejection leaves pending request untouched and produces no provider effect', async () => {
|
|
84
|
+
await fixture(async (f) => {
|
|
85
|
+
f.vault.stageCodexSetupSession(f.leaseId, digest, f.request);
|
|
86
|
+
const owner = createNamedSessionChildOwner(f.signal);
|
|
87
|
+
let starts = 0;
|
|
88
|
+
await owner.run(async () => {
|
|
89
|
+
assert.equal(await consumeCodexSetupSessions({ vault: f.vault, owner, signal: f.signal, authorize: async () => false,
|
|
90
|
+
start: async () => { starts++; return unconfirmed; } }), 0);
|
|
91
|
+
});
|
|
92
|
+
assert.equal(starts, 0);
|
|
93
|
+
assert.equal(f.vault.readCodexSetupSession(uuid(1), digest)?.state, 'pending');
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
test('withdrawal during authorization wins over acceptance without a start', async () => {
|
|
97
|
+
await fixture(async (f) => {
|
|
98
|
+
const submission = f.vault.stageCodexSetupSession(f.leaseId, digest, f.request);
|
|
99
|
+
const owner = createNamedSessionChildOwner(f.signal);
|
|
100
|
+
let starts = 0;
|
|
101
|
+
await owner.run(async () => {
|
|
102
|
+
assert.equal(await consumeCodexSetupSessions({ vault: f.vault, owner, signal: f.signal,
|
|
103
|
+
authorize: async () => { submission.withdraw(); return true; }, start: async () => { starts++; return unconfirmed; } }), 0);
|
|
104
|
+
});
|
|
105
|
+
assert.equal(starts, 0);
|
|
106
|
+
assert.equal(f.vault.readCodexSetupSession(uuid(1), digest)?.state, 'withdrawn');
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
test('post-acceptance policy change records bounded unconfirmed disposition and never repeats the start', async () => {
|
|
110
|
+
await fixture(async (f) => {
|
|
111
|
+
f.vault.stageCodexSetupSession(f.leaseId, digest, f.request);
|
|
112
|
+
const owner = createNamedSessionChildOwner(f.signal);
|
|
113
|
+
let calls = 0, starts = 0;
|
|
114
|
+
await owner.run(async () => {
|
|
115
|
+
assert.equal(await consumeCodexSetupSessions({ vault: f.vault, owner, signal: f.signal, authorize: async () => ++calls === 1,
|
|
116
|
+
start: async () => { starts++; return unconfirmed; } }), 1);
|
|
117
|
+
assert.deepEqual(f.vault.readCodexSetupSession(uuid(1), digest)?.result, unconfirmed);
|
|
118
|
+
assert.equal(await consumeCodexSetupSessions({ vault: f.vault, owner, signal: f.signal, authorize: async () => true,
|
|
119
|
+
start: async () => { starts++; return unconfirmed; } }), 0);
|
|
120
|
+
});
|
|
121
|
+
assert.equal(starts, 0);
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
test('claimed process metadata cannot substitute for the standing owner fresh child', async () => {
|
|
125
|
+
await fixture(async (f) => {
|
|
126
|
+
f.vault.stageCodexSetupSession(f.leaseId, digest, f.request);
|
|
127
|
+
const owner = createNamedSessionChildOwner(f.signal);
|
|
128
|
+
await owner.run(async () => {
|
|
129
|
+
await consumeCodexSetupSessions({ vault: f.vault, owner, signal: f.signal, authorize: async () => true,
|
|
130
|
+
start: async () => ({ state: 'started', bindingId: uuid(9), sessionId: 'foreign', sessionPid: process.pid,
|
|
131
|
+
supervisorPid: process.pid, sessionStartTicks: '1', supervisorStartTicks: '1' }) });
|
|
132
|
+
});
|
|
133
|
+
assert.deepEqual(f.vault.readCodexSetupSession(uuid(1), digest)?.result, unconfirmed);
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
test('late accepted-scope descendants cannot dispatch after callback completion', async () => {
|
|
137
|
+
await fixture(async (f) => {
|
|
138
|
+
f.vault.stageCodexSetupSession(f.leaseId, digest, f.request);
|
|
139
|
+
const owner = createNamedSessionChildOwner(f.signal);
|
|
140
|
+
let retained, effects = 0;
|
|
141
|
+
await owner.run(async () => {
|
|
142
|
+
await consumeCodexSetupSessions({ vault: f.vault, owner, signal: f.signal, authorize: async () => true,
|
|
143
|
+
start: async (scope) => { retained = scope; return unconfirmed; } });
|
|
144
|
+
await assert.rejects(retained.step(async () => { effects++; }), /setup_session_scope_unavailable/);
|
|
145
|
+
});
|
|
146
|
+
assert.equal(effects, 0);
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
test('sender timeout withdraws only pending authority and never invents successful startup', async () => {
|
|
150
|
+
await fixture(async (f) => {
|
|
151
|
+
await assert.rejects(awaitCodexSetupSession({ vault: sender(f.vault), scope: f.scope, request: f.request,
|
|
152
|
+
leaseId: f.leaseId, waitMs: 1 }), /setup_session_start_unconfirmed/);
|
|
153
|
+
assert.equal(f.vault.readCodexSetupSession(uuid(1), digest)?.state, 'withdrawn');
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
test('failed accepted startup drains only its new owned child and preserves a live sibling', async () => {
|
|
157
|
+
await fixture(async (f) => {
|
|
158
|
+
f.vault.stageCodexSetupSession(f.leaseId, digest, f.request);
|
|
159
|
+
const owner = createNamedSessionChildOwner(f.signal);
|
|
160
|
+
await owner.run(async () => {
|
|
161
|
+
const sibling = await owner.spawn('implementer', () => spawn(process.execPath, ['-e', 'setInterval(()=>{},1000)'], { stdio: 'ignore' }));
|
|
162
|
+
let failedChild;
|
|
163
|
+
await consumeCodexSetupSessions({ vault: f.vault, owner, signal: f.signal, authorize: async () => true,
|
|
164
|
+
start: async (scope) => {
|
|
165
|
+
failedChild = await owner.spawn(scope.request.name, () => spawn(process.execPath, ['-e', 'setInterval(()=>{},1000)'], { stdio: 'ignore' }));
|
|
166
|
+
throw new Error('private-canary');
|
|
167
|
+
} });
|
|
168
|
+
assert.ok(failedChild);
|
|
169
|
+
assert.ok(failedChild.exitCode !== null || failedChild.signalCode !== null);
|
|
170
|
+
assert.equal(owner.ownedPid('implementer'), sibling.pid);
|
|
171
|
+
assert.equal(sibling.exitCode, null);
|
|
172
|
+
assert.equal(sibling.signalCode, null);
|
|
173
|
+
assert.deepEqual(f.vault.readCodexSetupSession(uuid(1), digest)?.result, unconfirmed);
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
test('checkpoint cleanup does not stop a child that predates the request', async () => {
|
|
178
|
+
await fixture(async (f) => {
|
|
179
|
+
const owner = createNamedSessionChildOwner(f.signal);
|
|
180
|
+
await owner.run(async () => {
|
|
181
|
+
const child = await owner.spawn('reviewer', () => spawn(process.execPath, ['-e', 'setInterval(()=>{},1000)'], { stdio: 'ignore' }));
|
|
182
|
+
const checkpoint = owner.checkpoint('reviewer');
|
|
183
|
+
await checkpoint.stopFresh();
|
|
184
|
+
assert.equal(owner.ownedPid('reviewer'), child.pid);
|
|
185
|
+
assert.equal(child.exitCode, null);
|
|
186
|
+
assert.equal(child.signalCode, null);
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
test('a descendant cannot return tool results when callback settlement happens during its final policy yield', async () => {
|
|
191
|
+
await fixture(async (f) => {
|
|
192
|
+
f.vault.stageCodexSetupSession(f.leaseId, digest, f.request);
|
|
193
|
+
const owner = createNamedSessionChildOwner(f.signal);
|
|
194
|
+
let pauseNext = false, release, reached, pending;
|
|
195
|
+
const gate = new Promise(resolveWait => { release = resolveWait; });
|
|
196
|
+
const waiting = new Promise(resolveWait => { reached = resolveWait; });
|
|
197
|
+
await owner.run(async () => {
|
|
198
|
+
await consumeCodexSetupSessions({ vault: f.vault, owner, signal: f.signal,
|
|
199
|
+
authorize: async () => { if (pauseNext) {
|
|
200
|
+
pauseNext = false;
|
|
201
|
+
reached();
|
|
202
|
+
await gate;
|
|
203
|
+
} return true; },
|
|
204
|
+
start: async (scope) => {
|
|
205
|
+
pending = scope.step(async () => { pauseNext = true; return 'synthetic-tool-result'; });
|
|
206
|
+
void pending.catch(() => { });
|
|
207
|
+
await waiting;
|
|
208
|
+
return unconfirmed;
|
|
209
|
+
} });
|
|
210
|
+
release();
|
|
211
|
+
await assert.rejects(pending, /setup_session_scope_unavailable/);
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
test('original sender requires the admitted lease and original context; copied and settled contexts are denied', async () => {
|
|
216
|
+
await fixture(async (f) => {
|
|
217
|
+
const prepared = prepareCodexBootstrapHost({ workspace: f.request.workspaceRoot, signal: f.signal, current: async () => true,
|
|
218
|
+
intent: { schema: 'dharma.codex-setup-intent/v1', operationId: uuid(18), setupReference: uuid(99),
|
|
219
|
+
organizationId: f.request.organizationId, recipientMembershipId: f.request.membershipId, origin: f.request.origin,
|
|
220
|
+
repositoryFingerprint: digest, policyRevision: 'policy-v1', scopeDigest: digest, contractDigest: digest,
|
|
221
|
+
hostContextId: uuid(19), issuedAt: f.request.issuedAt, expiresAt: f.request.expiresAt } });
|
|
222
|
+
const binding = { connectionId: uuid(20), threadId: 'synthetic_thread', turnId: 'synthetic_turn', hostContextId: uuid(19) };
|
|
223
|
+
let admitted = 0, late, executionError;
|
|
224
|
+
const owner = createCodexSetupAdmission({ ...binding, intent: prepared.intent,
|
|
225
|
+
current: async () => ({ ...binding, mode: 'setup' }), qualifyHost: async () => true,
|
|
226
|
+
journal: { claim: async (id, value) => f.vault.claimCodexSetupOperation(id, value),
|
|
227
|
+
read: async (id, value) => f.vault.readCodexSetupOperation(id, value),
|
|
228
|
+
finish: async (id, value, result) => f.vault.finishCodexSetupOperation(id, value, result) },
|
|
229
|
+
execute: async (_intent, _signal, _current, lease) => {
|
|
230
|
+
try {
|
|
231
|
+
return await runCodexBootstrapHostScope(prepared.scope, async () => {
|
|
232
|
+
await assert.rejects(withCodexSetupSessionSender({ scope: prepared.scope, vault: sender(f.vault), lease: { ...lease } }, async () => { admitted++; }), /execution_lease_unavailable/);
|
|
233
|
+
await withCodexSetupSessionSender({ scope: prepared.scope, vault: sender(f.vault), lease }, async () => {
|
|
234
|
+
assert.equal((await originalCodexSetupSessionSender(prepared.scope)).lease, lease);
|
|
235
|
+
admitted++;
|
|
236
|
+
await assert.rejects(withCodexSetupSessionSender({ scope: prepared.scope, vault: sender(f.vault), lease }, async () => { admitted++; }), /sender_conflict/);
|
|
237
|
+
late = () => originalCodexSetupSessionSender(prepared.scope);
|
|
238
|
+
});
|
|
239
|
+
await assert.rejects(late(), /sender_unavailable/);
|
|
240
|
+
return { state: 'unconfirmed', code: 'setup_execution_unconfirmed' };
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
executionError = error;
|
|
245
|
+
throw error;
|
|
246
|
+
}
|
|
247
|
+
}, verifyReadiness: async () => false });
|
|
248
|
+
try {
|
|
249
|
+
const result = await owner.handler({ threadId: binding.threadId, turnId: binding.turnId, callId: 'synthetic_call',
|
|
250
|
+
tool: 'dharma_setup_reference', namespace: null, arguments: { operationId: uuid(18), setupReference: uuid(99) } }, { signal: f.signal });
|
|
251
|
+
await owner.settled;
|
|
252
|
+
if (executionError)
|
|
253
|
+
throw executionError;
|
|
254
|
+
assert.equal(result.success, false);
|
|
255
|
+
assert.equal(admitted, 1);
|
|
256
|
+
await assert.rejects(late(), /sender_unavailable/);
|
|
257
|
+
}
|
|
258
|
+
finally {
|
|
259
|
+
owner.close();
|
|
260
|
+
await owner.settled;
|
|
261
|
+
prepared.scope.close();
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
test('accepted receiver descendants retain a closed context instead of falling back to unscoped authority', async () => {
|
|
266
|
+
await fixture(async (f) => {
|
|
267
|
+
f.vault.stageCodexSetupSession(f.leaseId, digest, f.request);
|
|
268
|
+
const owner = createNamedSessionChildOwner(f.signal);
|
|
269
|
+
let release, pending, effects = 0;
|
|
270
|
+
const gate = new Promise(done => { release = done; });
|
|
271
|
+
await owner.run(async () => {
|
|
272
|
+
await consumeCodexSetupSessions({ vault: f.vault, owner, signal: f.signal, authorize: async () => true,
|
|
273
|
+
start: async (scope) => {
|
|
274
|
+
assert.equal(currentAcceptedSetupSessionScope(), scope);
|
|
275
|
+
pending = (async () => {
|
|
276
|
+
await gate;
|
|
277
|
+
assert.equal(currentAcceptedSetupSessionScope(), scope);
|
|
278
|
+
await assert.rejects(currentAcceptedSetupSessionScope().step(async () => { effects++; }), /scope_unavailable/);
|
|
279
|
+
})();
|
|
280
|
+
return unconfirmed;
|
|
281
|
+
} });
|
|
282
|
+
assert.equal(currentAcceptedSetupSessionScope(), undefined);
|
|
283
|
+
release();
|
|
284
|
+
await pending;
|
|
285
|
+
assert.equal(effects, 0);
|
|
286
|
+
});
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
//# sourceMappingURL=codexSetupSessionHandoff.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupSessionHandoff.test.js","sourceRoot":"","sources":["../src/codexSetupSessionHandoff.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupTransport.test.d.ts","sourceRoot":"","sources":["../src/codexSetupTransport.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { randomBytes } from 'node:crypto';
|
|
3
|
+
import { mkdtemp, rm } from 'node:fs/promises';
|
|
4
|
+
import { tmpdir } from 'node:os';
|
|
5
|
+
import { resolve, sep } from 'node:path';
|
|
6
|
+
import test from 'node:test';
|
|
7
|
+
import { LocalVault } from '@dharma-ai-labs/agent-fabric-local-vault';
|
|
8
|
+
import { openCodexAppServerTransport } from '@dharma-ai-labs/agent-fabric-provider-adapters/experimental/codex-transport';
|
|
9
|
+
import { createCodexSetupAdmission } from './codexSetupAdmission.js';
|
|
10
|
+
import { createCodexSetupVaultJournal } from './codexSetupVaultJournal.js';
|
|
11
|
+
const id = (n) => `${String(n).padStart(8, '0')}-1111-4111-8111-111111111111`;
|
|
12
|
+
const hash = `sha256:${'a'.repeat(64)}`;
|
|
13
|
+
const intent = { schema: 'dharma.codex-setup-intent/v1', operationId: id(1), setupReference: id(2),
|
|
14
|
+
organizationId: 'org_demo', recipientMembershipId: id(3), origin: 'https://hq.example', hostContextId: id(4),
|
|
15
|
+
repositoryFingerprint: hash, policyRevision: 'policy-v1', scopeDigest: hash, contractDigest: hash,
|
|
16
|
+
issuedAt: '2026-10-05T18:00:00.000Z', expiresAt: '2026-10-05T18:15:00.000Z' };
|
|
17
|
+
const binding = { connectionId: id(5), threadId: 'synthetic_thread', turnId: 'synthetic_turn', hostContextId: id(4) };
|
|
18
|
+
// Real stdio transport, synthetic server frames: no provider or model process.
|
|
19
|
+
const server = `
|
|
20
|
+
const lines = require('node:readline').createInterface({input: process.stdin});
|
|
21
|
+
let call = 0;
|
|
22
|
+
const send = value => process.stdout.write(JSON.stringify(value) + '\\n');
|
|
23
|
+
lines.on('line', line => {
|
|
24
|
+
const value = JSON.parse(line);
|
|
25
|
+
if (value.method === 'initialize') send({id: value.id, result: {userAgent: 'setup-fixture'}});
|
|
26
|
+
else if (value.method === 'ping') send({id: value.id, result: {pong: true}});
|
|
27
|
+
else if (value.method === 'disconnect') {
|
|
28
|
+
if (value.params.mode === 'exit') process.exit(0);
|
|
29
|
+
else if (value.params.mode === 'eof') {require('node:fs').closeSync(1); setInterval(() => {}, 1000);}
|
|
30
|
+
else if (value.params.mode === 'timeout') return;
|
|
31
|
+
else process.stdout.write('invalid-json\\n');
|
|
32
|
+
}
|
|
33
|
+
else if (value.method === 'setup') {
|
|
34
|
+
send({id: value.id, result: {dispatched: true}});
|
|
35
|
+
send({id: 'fixture_' + (++call), method: 'item/tool/call', params: {
|
|
36
|
+
threadId: 'synthetic_thread', turnId: 'synthetic_turn', callId: 'fixture_' + call,
|
|
37
|
+
tool: 'dharma_setup_reference', namespace: null,
|
|
38
|
+
arguments: {operationId: '${id(1)}', setupReference: '${id(2)}'}
|
|
39
|
+
}});
|
|
40
|
+
} else if (typeof value.id === 'string' && value.result) {
|
|
41
|
+
send({method: 'setup/disposition', params: value.result});
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
`;
|
|
45
|
+
async function fixture(execute) {
|
|
46
|
+
const root = await mkdtemp(resolve(tmpdir(), 'fabric-setup-transport-'));
|
|
47
|
+
const vault = await LocalVault.open({ root, masterKey: randomBytes(32) });
|
|
48
|
+
const owner = createCodexSetupAdmission({ intent, ...binding, responseWaitMs: 10,
|
|
49
|
+
now: () => Date.parse('2026-10-05T18:01:00.000Z'),
|
|
50
|
+
current: async () => ({ ...binding, mode: 'setup' }), qualifyHost: async () => true,
|
|
51
|
+
journal: createCodexSetupVaultJournal(vault), execute, verifyReadiness: async () => true });
|
|
52
|
+
const clean = async () => {
|
|
53
|
+
vault.close();
|
|
54
|
+
if (!resolve(root).startsWith(`${resolve(tmpdir())}${sep}fabric-setup-transport-`))
|
|
55
|
+
throw new Error('fixture_cleanup_scope_invalid');
|
|
56
|
+
await rm(root, { recursive: true, force: true });
|
|
57
|
+
};
|
|
58
|
+
try {
|
|
59
|
+
const transport = await openCodexAppServerTransport({ command: process.execPath,
|
|
60
|
+
argv: ['-e', server], cwd: root, environment: process.platform === 'win32'
|
|
61
|
+
? { SystemRoot: process.env.SystemRoot } : {}, requestTimeoutMs: 2000, toolCallTimeoutMs: 1000 });
|
|
62
|
+
const unregister = transport.onToolCall(owner.handler);
|
|
63
|
+
const lifetime = transport.signal;
|
|
64
|
+
const closeOwner = () => owner.close();
|
|
65
|
+
lifetime.addEventListener('abort', closeOwner, { once: true });
|
|
66
|
+
if (lifetime.aborted)
|
|
67
|
+
owner.close();
|
|
68
|
+
const close = async () => {
|
|
69
|
+
owner.close();
|
|
70
|
+
unregister();
|
|
71
|
+
try {
|
|
72
|
+
await transport.close();
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
await owner.settled;
|
|
76
|
+
lifetime.removeEventListener('abort', closeOwner);
|
|
77
|
+
await clean();
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
const request = async () => {
|
|
81
|
+
let timer;
|
|
82
|
+
let unregisterNotification = () => { };
|
|
83
|
+
const disposition = new Promise((done, fail) => {
|
|
84
|
+
timer = setTimeout(() => fail(new Error('fixture_disposition_missing')), 4000);
|
|
85
|
+
unregisterNotification = transport.onNotification((value) => {
|
|
86
|
+
if (value.method === 'setup/disposition')
|
|
87
|
+
done(value.params);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
try {
|
|
91
|
+
assert.deepEqual(await transport.request('setup', {}), { dispatched: true });
|
|
92
|
+
return await disposition;
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
if (timer)
|
|
96
|
+
clearTimeout(timer);
|
|
97
|
+
unregisterNotification();
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
return { owner, transport, request, close };
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
owner.close();
|
|
104
|
+
await owner.settled;
|
|
105
|
+
await clean();
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
test('public stdio adapter returns bounded status and reconciles the same encrypted operation', async () => {
|
|
110
|
+
let release;
|
|
111
|
+
let executions = 0;
|
|
112
|
+
const finish = new Promise(done => { release = done; });
|
|
113
|
+
const f = await fixture(async () => { executions++; await finish; return { state: 'completed', readinessReceiptId: id(6) }; });
|
|
114
|
+
try {
|
|
115
|
+
const pending = await f.request();
|
|
116
|
+
assert.equal(pending.success, false);
|
|
117
|
+
assert.equal(JSON.parse(pending.contentItems[0].text).code, 'codex_setup_in_progress');
|
|
118
|
+
assert.equal(f.owner.pending, true);
|
|
119
|
+
assert.equal(executions, 1);
|
|
120
|
+
assert.deepEqual(await f.transport.request('ping', {}), { pong: true });
|
|
121
|
+
assert.equal(JSON.parse((await f.request()).contentItems[0].text).code, 'codex_setup_in_progress');
|
|
122
|
+
assert.equal(executions, 1);
|
|
123
|
+
release();
|
|
124
|
+
await f.owner.settled;
|
|
125
|
+
const complete = await f.request();
|
|
126
|
+
assert.equal(complete.success, true);
|
|
127
|
+
assert.deepEqual(JSON.parse(complete.contentItems[0].text), {
|
|
128
|
+
operationId: id(1), state: 'completed', readinessReceiptId: id(6)
|
|
129
|
+
});
|
|
130
|
+
assert.equal(executions, 1);
|
|
131
|
+
assert.deepEqual(await f.transport.request('ping', {}), { pong: true });
|
|
132
|
+
}
|
|
133
|
+
finally {
|
|
134
|
+
release();
|
|
135
|
+
await f.close();
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
test('normal owning lifecycle closes a returned callback operation without a protected effect', async () => {
|
|
139
|
+
let effects = 0;
|
|
140
|
+
let stopped = false;
|
|
141
|
+
let operationSignal;
|
|
142
|
+
const f = await fixture(async (_intent, signal, current) => {
|
|
143
|
+
operationSignal = signal;
|
|
144
|
+
await new Promise(done => { if (signal.aborted)
|
|
145
|
+
done();
|
|
146
|
+
else
|
|
147
|
+
signal.addEventListener('abort', () => done(), { once: true }); });
|
|
148
|
+
if (await current())
|
|
149
|
+
effects++;
|
|
150
|
+
stopped = true;
|
|
151
|
+
return { state: 'unconfirmed', code: 'setup_execution_unconfirmed' };
|
|
152
|
+
});
|
|
153
|
+
try {
|
|
154
|
+
assert.equal(JSON.parse((await f.request()).contentItems[0].text).code, 'codex_setup_in_progress');
|
|
155
|
+
assert.ok(operationSignal);
|
|
156
|
+
assert.equal(operationSignal.aborted, false);
|
|
157
|
+
assert.equal(f.owner.pending, true);
|
|
158
|
+
assert.equal(stopped, false);
|
|
159
|
+
}
|
|
160
|
+
finally {
|
|
161
|
+
await f.close();
|
|
162
|
+
}
|
|
163
|
+
assert.equal(operationSignal?.aborted, true);
|
|
164
|
+
assert.equal(stopped, true);
|
|
165
|
+
assert.equal(effects, 0);
|
|
166
|
+
assert.equal(f.owner.pending, false);
|
|
167
|
+
await assert.rejects(f.transport.request('ping', {}), /codex_app_server_unavailable/);
|
|
168
|
+
});
|
|
169
|
+
for (const mode of ['close', 'exit', 'eof', 'timeout', 'invalid-frame']) {
|
|
170
|
+
// Closing fd 1 on Windows did not close the child pipe; keep that fixture
|
|
171
|
+
// failure, and qualify actual EOF separately on the Linux client route.
|
|
172
|
+
test(`transport ${mode} withdraws setup authority after its callback has returned`, { skip: mode === 'eof' && process.platform !== 'linux' }, async () => {
|
|
173
|
+
let release;
|
|
174
|
+
let effects = 0;
|
|
175
|
+
let signal;
|
|
176
|
+
const finish = new Promise(done => { release = done; });
|
|
177
|
+
const f = await fixture(async (_intent, context, current) => {
|
|
178
|
+
signal = context;
|
|
179
|
+
await finish;
|
|
180
|
+
if (await current())
|
|
181
|
+
effects++;
|
|
182
|
+
return { state: 'unconfirmed', code: 'setup_execution_unconfirmed' };
|
|
183
|
+
});
|
|
184
|
+
try {
|
|
185
|
+
assert.equal(JSON.parse((await f.request()).contentItems[0].text).code, 'codex_setup_in_progress');
|
|
186
|
+
assert.ok(signal);
|
|
187
|
+
assert.equal(signal.aborted, false);
|
|
188
|
+
if (mode === 'close')
|
|
189
|
+
await f.transport.close();
|
|
190
|
+
else
|
|
191
|
+
await assert.rejects(f.transport.request('disconnect', { mode }), mode === 'timeout' ? /codex_app_server_request_timeout:disconnect/
|
|
192
|
+
: /codex_app_server_closed|codex_app_server_frame_invalid|codex_app_server_write_failed/);
|
|
193
|
+
release();
|
|
194
|
+
await f.owner.settled;
|
|
195
|
+
assert.equal(f.transport.signal.aborted, true);
|
|
196
|
+
assert.equal(signal.aborted, true);
|
|
197
|
+
assert.equal(effects, 0);
|
|
198
|
+
assert.equal(f.owner.pending, false);
|
|
199
|
+
}
|
|
200
|
+
finally {
|
|
201
|
+
release();
|
|
202
|
+
await f.close();
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=codexSetupTransport.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupTransport.test.js","sourceRoot":"","sources":["../src/codexSetupTransport.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { LocalVault, ScopedCodexSetupJournal } from '@dharma-ai-labs/agent-fabric-local-vault';
|
|
2
|
+
import type { SecureSecretStore } from '@dharma-ai-labs/agent-fabric-secure-store';
|
|
3
|
+
import type { BootstrapHostScope } from './bootstrapHostScope.js';
|
|
4
|
+
import type { CodexSetupJournal } from './codexSetupAdmission.js';
|
|
5
|
+
export declare function createCodexSetupVaultJournal(vault: Pick<LocalVault, 'claimCodexSetupOperation' | 'readCodexSetupOperation' | 'finishCodexSetupOperation'> | ScopedCodexSetupJournal): CodexSetupJournal;
|
|
6
|
+
export declare function openCodexSetupVaultJournal(input: {
|
|
7
|
+
root: string;
|
|
8
|
+
scope: BootstrapHostScope;
|
|
9
|
+
store?: SecureSecretStore;
|
|
10
|
+
}): Promise<CodexSetupJournal & {
|
|
11
|
+
close(): void;
|
|
12
|
+
}>;
|
|
13
|
+
//# sourceMappingURL=codexSetupVaultJournal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupVaultJournal.d.ts","sourceRoot":"","sources":["../src/codexSetupVaultJournal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAE,uBAAuB,EAAC,MAAM,0CAA0C,CAAC;AAClG,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,2CAA2C,CAAC;AACjF,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAEhE,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EACjE,0BAA0B,GAAG,yBAAyB,GAAG,2BAA2B,CAAC,GAAG,uBAAuB,GAAG,iBAAiB,CAMpI;AAED,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,kBAAkB,CAAC;IAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;CACpE,GAAG,OAAO,CAAC,iBAAiB,GAAG;IAAC,KAAK,IAAI,IAAI,CAAA;CAAC,CAAC,CAe/C"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export function createCodexSetupVaultJournal(vault) {
|
|
2
|
+
return {
|
|
3
|
+
claim: async (operationId, intentDigest) => vault.claimCodexSetupOperation(operationId, intentDigest),
|
|
4
|
+
read: async (operationId, intentDigest) => vault.readCodexSetupOperation(operationId, intentDigest),
|
|
5
|
+
finish: async (leaseId, intentDigest, result) => vault.finishCodexSetupOperation(leaseId, intentDigest, result),
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export async function openCodexSetupVaultJournal(input) {
|
|
9
|
+
const { root, scope, store } = input;
|
|
10
|
+
let backend, masterKey;
|
|
11
|
+
try {
|
|
12
|
+
const vault = await scope.step(() => import('@dharma-ai-labs/agent-fabric-local-vault'));
|
|
13
|
+
masterKey = await vault.loadOrCreateVaultMasterKey(store, scope);
|
|
14
|
+
await scope.step(async () => {
|
|
15
|
+
// Capture the owned handle before the host's post-open qualification.
|
|
16
|
+
backend = await vault.LocalVault.openSetupJournal({ root, masterKey: masterKey }, scope);
|
|
17
|
+
});
|
|
18
|
+
return Object.freeze({ ...createCodexSetupVaultJournal(backend), close: () => backend.close() });
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
backend?.close();
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
finally {
|
|
25
|
+
masterKey?.fill(0);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=codexSetupVaultJournal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupVaultJournal.js","sourceRoot":"","sources":["../src/codexSetupVaultJournal.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,4BAA4B,CAAC,KACoE;IAC/G,OAAO;QACL,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,WAAW,EAAE,YAAY,CAAC;QACrG,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,WAAW,EAAE,YAAY,CAAC;QACnG,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,yBAAyB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC;KAChH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,KAEhD;IACC,MAAM,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAC,GAAG,KAAK,CAAC;IACnC,IAAI,OAA4C,EAAE,SAA6B,CAAC;IAChF,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACzF,SAAS,GAAG,MAAM,KAAK,CAAC,0BAA0B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjE,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAC1B,sEAAsE;YACtE,OAAO,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,SAAU,EAAC,EAAE,KAAK,CAAC,CAAC;QAC1F,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,CAAC,EAAC,GAAG,4BAA4B,CAAC,OAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,OAAQ,CAAC,KAAK,EAAE,EAAC,CAAC,CAAC;IACnG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,KAAK,EAAE,CAAC;QACjB,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QAAA,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAAA,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupVaultJournal.test.d.ts","sourceRoot":"","sources":["../src/codexSetupVaultJournal.test.ts"],"names":[],"mappings":""}
|