@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,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":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAC,YAAY,EAAE,MAAM,EAAC,MAAM,wCAAwC,CAAC;AAE5E,OAAO,EAAC,kCAAkC,EAAE,iCAAiC,EACL,MACjE,wDAAwD,CAAC;AAChE,OAAO,EAAC,yBAAyB,EAAE,oCAAoC,EAA0B,MAAM,yBAAyB,CAAC;AACjI,OAAO,EAAC,8BAA8B,EAAuD,MAAM,0BAA0B,CAAC;AAC9H,OAAO,EAAC,6BAA6B,EAA8B,MAAM,6BAA6B,CAAC;AAMvG,MAAM,eAAe,GAAG,IAAI,OAAO,EAA8B,CAAC;AAElE,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAI,KACT,EAAE,SAA2B;IACvE,MAAM,QAAQ,GAAG,MAAM,oCAAoC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzE,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,8BAA8B,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACvF,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC,EAAC,GAAG,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,EAAC,CAAC,CAAC;IACjG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC;QAAA,OAAO,MAAM,SAAS,EAAE,CAAC;IAAA,CAAC;YACvB,CAAC;QAAA,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAAA,CAAC;AAC7E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CAAC,KAAyB;IAC7E,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,yBAAyB,EAAE,KAAK,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACxH,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,8BAA8B,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACpF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACvH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAC8B;IACzE,MAAM,OAAO,GAAG,kCAAkC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC;IACnG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC7G,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;IAClI,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9E,GAAG,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;YAC/H,IAAI,CAAC,WAAW,IAAI,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;gBACrH,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACjD,CAAC;YACD,IAAI,WAAW,CAAC,KAAK,KAAK,UAAU,IAAI,WAAW,CAAC,MAAM;gBAAE,OAAO,iCAAiC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzH,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,CAAO,WAAW,CAAC,EAAE;gBAC3D,MAAM,MAAM,GAAG,GAAG,EAAE,GAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA,CAAC,CAAC;gBACpH,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpF,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;gBACnE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO;oBAAE,MAAM,EAAE,CAAC;YAC3C,CAAC,CAAC,CAAC,CAAC;QACN,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;YAAS,CAAC;QACT,0EAA0E;QAC1E,sEAAsE;QACtE,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC;AAMD,MAAM,eAAe,GAAG,IAAI,OAAO,EAA6B,CAAC;AACjE,MAAM,eAAe,GAAG,IAAI,iBAAiB,EAA6B,CAAC;AAC3E,8EAA8E;AAC9E,MAAM,UAAU,gCAAgC,KAAI,OAAO,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAA,CAAC;AAEvF;+EAC+E;AAC/E,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,KAEiC;IAC/E,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,6BAA6B,EAAE,KAAK,KAAK,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAChI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC,CAAC;IACF,WAAW,EAAE,CAAC;IACd,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,CAAC;QAChE,WAAW,EAAE,CAAC;QACd,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QAC7F,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS;YAAE,SAAS;QAC9D,MAAM,OAAO,GAAG,kCAAkC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACxE,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,WAAW,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7F,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC,CAAC;QACF,cAAc,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC;YAAE,SAAS;QAC9C,cAAc,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC7H,IAAI,CAAC,UAAU;YAAE,SAAS;QAC1B,QAAQ,EAAE,CAAC;QACX,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,MAAM,KAAK,GAA8B,MAAM,CAAC,MAAM,CAAC,EAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAI,SAA2B;gBACxG,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBAC/F,cAAc,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBACxF,uEAAuE;gBACvE,cAAc,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBAC/F,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;gBAChC,cAAc,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBAClI,cAAc,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBAC/F,OAAO,KAAK,CAAC;YACf,CAAC,EAAC,CAAC,CAAC;QACJ,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5F,MAAM,QAAQ,GAAG,iCAAiC,CAAC,MAAM,CAAC,CAAC;YAC3D,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,aAAa,KAAK,OAAO,CAAC,GAAG;mBACtE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,UAAU,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACrH,IAAI,QAAQ,CAAC,KAAK,KAAK,aAAa;gBAAE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;YAChE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,yEAAyE;YACzE,oEAAoE;YACpE,yEAAyE;YACzE,oEAAoE;YACpE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;YAC1B,WAAW,EAAE,CAAC;YACd,UAAU,CAAC,MAAM,CAAC,EAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,2BAA2B,EAAC,CAAC,CAAC;QAC/E,CAAC;gBAAS,CAAC;YAAA,MAAM,GAAG,KAAK,CAAC;YAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAAA,CAAC;IAC5D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupSessionHandoff.test.d.ts","sourceRoot":"","sources":["../src/codexSetupSessionHandoff.test.ts"],"names":[],"mappings":""}
|