@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,146 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import { resolve } from 'node:path';
|
|
4
|
+
import { compileFunction } from 'node:vm';
|
|
5
|
+
import test from 'node:test';
|
|
6
|
+
import ts from 'typescript';
|
|
7
|
+
import { prepareCodexBootstrapHost } from './bootstrapHostScope.js';
|
|
8
|
+
import { parseCliOptions, sourceRepositoryFingerprint } from './index.js';
|
|
9
|
+
// Real public-command binding; only its subsequent native startup is synthetic.
|
|
10
|
+
async function fixture() {
|
|
11
|
+
const now = Date.now(), id = (n) => `${String(n).padStart(8, '0')}-1111-4111-8111-111111111111`;
|
|
12
|
+
let starts = 0, supplied, allowed = true, nested = false;
|
|
13
|
+
const input = { workspace: resolve('synthetic-source'), name: 'implementer', signal: new AbortController().signal,
|
|
14
|
+
current: async () => allowed, reserve: async () => true, maximumProviderCostCents: 25,
|
|
15
|
+
expectedAccountEmail: 'synthetic@example.test', intent: { schema: 'dharma.codex-setup-intent/v1',
|
|
16
|
+
operationId: id(1), setupReference: id(2), organizationId: 'org_demo', recipientMembershipId: id(3),
|
|
17
|
+
hostContextId: id(4), origin: 'https://hq.example', repositoryFingerprint: sourceRepositoryFingerprint('https://github.com/demo/source.git').fingerprint,
|
|
18
|
+
scopeDigest: `sha256:${'b'.repeat(64)}`, contractDigest: `sha256:${'c'.repeat(64)}`, policyRevision: 'policy-v1',
|
|
19
|
+
issuedAt: new Date(now - 1000).toISOString(), expiresAt: new Date(now + 60_000).toISOString() } };
|
|
20
|
+
const scope = prepareCodexBootstrapHost({ intent: input.intent,
|
|
21
|
+
workspace: input.workspace, signal: input.signal, current: input.current });
|
|
22
|
+
const argv = ['bootstrap', ...[...scope.flags].flatMap(([key, value]) => value === true ? [`--${key}`] : [`--${key}`, String(value)])];
|
|
23
|
+
scope.scope.close();
|
|
24
|
+
const source = await readFile(new URL('../src/index.ts', import.meta.url), 'utf8');
|
|
25
|
+
const ast = ts.createSourceFile('index.ts', source, ts.ScriptTarget.Latest, true);
|
|
26
|
+
const matches = ast.statements.filter(node => ts.isFunctionDeclaration(node) && node.name?.text === 'openCodexBootstrapFromPortalCommand');
|
|
27
|
+
assert.equal(matches.length, 1);
|
|
28
|
+
const compiled = ts.transpileModule(matches[0].getText(ast), { compilerOptions: {
|
|
29
|
+
target: ts.ScriptTarget.ES2023, module: ts.ModuleKind.CommonJS
|
|
30
|
+
}, reportDiagnostics: true });
|
|
31
|
+
assert.equal(compiled.diagnostics?.filter(d => d.category === ts.DiagnosticCategory.Error).length, 0);
|
|
32
|
+
const dependencies = { currentBootstrapHostScope: () => nested ? {} : undefined,
|
|
33
|
+
prepareCodexBootstrapHost, parseCliOptions, resolve, Buffer, URL, sourceRepositoryFingerprint,
|
|
34
|
+
openCodexBootstrapNativeHost: async (value) => { starts++; supplied = value; return { threadId: 'synthetic-native' }; } };
|
|
35
|
+
const open = compileFunction(`${compiled.outputText}\nreturn openCodexBootstrapFromPortalCommand;`, ['exports', ...Object.keys(dependencies)])({}, ...Object.values(dependencies));
|
|
36
|
+
return { input, argv, open, get starts() { return starts; }, get supplied() { return supplied; },
|
|
37
|
+
withdraw() { allowed = false; }, nested() { nested = true; } };
|
|
38
|
+
}
|
|
39
|
+
test('portal command enters the owning host with only the fixed recipient/source intent and budget', async () => {
|
|
40
|
+
const f = await fixture();
|
|
41
|
+
const args = [...f.argv];
|
|
42
|
+
args[args.indexOf('--workspace') + 1] = '.';
|
|
43
|
+
args[args.indexOf('--provider') + 1] = 'auto';
|
|
44
|
+
assert.equal((await f.open({ ...f.input, portalArgs: args })).threadId, 'synthetic-native');
|
|
45
|
+
assert.equal(f.starts, 1);
|
|
46
|
+
assert.deepEqual(f.supplied.intent, f.input.intent);
|
|
47
|
+
assert.notEqual(f.supplied.intent, f.input.intent);
|
|
48
|
+
assert.equal(f.supplied.reserve, f.input.reserve);
|
|
49
|
+
assert.equal(f.supplied.maximumProviderCostCents, 25);
|
|
50
|
+
assert.equal('portalArgs' in f.supplied, false);
|
|
51
|
+
});
|
|
52
|
+
test('matching public selected-repository URL is validated, never cloned or passed as startup authority', async () => {
|
|
53
|
+
const f = await fixture();
|
|
54
|
+
const args = [...f.argv, '--repository-url-base64url', Buffer.from('https://github.com/demo/source.git').toString('base64url')];
|
|
55
|
+
await f.open({ ...f.input, portalArgs: args });
|
|
56
|
+
assert.equal(f.starts, 1);
|
|
57
|
+
assert.equal('repository-url-base64url' in f.supplied, false);
|
|
58
|
+
assert.equal(f.supplied.workspace, f.input.workspace);
|
|
59
|
+
});
|
|
60
|
+
for (const cause of ['command', 'extra', 'duplicate', 'grant', 'private-prompt', 'resume', 'join', 'dry-run', 'help',
|
|
61
|
+
'recipient', 'reference', 'organization', 'origin', 'policy', 'scope', 'contract', 'workspace', 'provider', 'incomplete']) {
|
|
62
|
+
test(`portal binding rejects ${cause} before native/store/model admission`, async () => {
|
|
63
|
+
const f = await fixture(), args = [...f.argv];
|
|
64
|
+
const replace = (key, value) => { args[args.indexOf(`--${key}`) + 1] = value; };
|
|
65
|
+
if (cause === 'command')
|
|
66
|
+
args[0] = 'status';
|
|
67
|
+
if (cause === 'extra')
|
|
68
|
+
args.push('shell-fragment');
|
|
69
|
+
if (cause === 'duplicate')
|
|
70
|
+
args.push('--setup-reference', String(f.input.intent.setupReference));
|
|
71
|
+
if (cause === 'grant')
|
|
72
|
+
args.push('--grant', 'private-canary-never-echo');
|
|
73
|
+
if (cause === 'private-prompt')
|
|
74
|
+
args.push('--grant-prompt');
|
|
75
|
+
if (cause === 'resume')
|
|
76
|
+
args.push('--resume');
|
|
77
|
+
if (cause === 'join')
|
|
78
|
+
args.push('--join-repository-binding-id', f.input.intent.operationId);
|
|
79
|
+
if (cause === 'dry-run')
|
|
80
|
+
args.push('--dry-run');
|
|
81
|
+
if (cause === 'help')
|
|
82
|
+
args.push('--help');
|
|
83
|
+
if (cause === 'recipient')
|
|
84
|
+
replace('setup-recipient-membership-id', f.input.intent.operationId);
|
|
85
|
+
if (cause === 'reference')
|
|
86
|
+
replace('setup-reference', f.input.intent.operationId);
|
|
87
|
+
if (cause === 'organization')
|
|
88
|
+
replace('organization-id', 'org_foreign');
|
|
89
|
+
if (cause === 'origin')
|
|
90
|
+
replace('portal-url', 'https://foreign.example');
|
|
91
|
+
if (cause === 'policy')
|
|
92
|
+
replace('policy-revision', 'foreign-policy');
|
|
93
|
+
if (cause === 'scope')
|
|
94
|
+
replace('setup-scope-digest', `sha256:${'d'.repeat(64)}`);
|
|
95
|
+
if (cause === 'contract')
|
|
96
|
+
replace('setup-contract-digest', `sha256:${'d'.repeat(64)}`);
|
|
97
|
+
if (cause === 'workspace')
|
|
98
|
+
replace('workspace', resolve('foreign-workspace'));
|
|
99
|
+
if (cause === 'provider')
|
|
100
|
+
replace('provider', 'foreign');
|
|
101
|
+
if (cause === 'incomplete')
|
|
102
|
+
args.splice(args.indexOf('--complete'), 1);
|
|
103
|
+
await assert.rejects(f.open({ ...f.input, portalArgs: args }), /^Error: codex_setup_portal_command_mismatch$/);
|
|
104
|
+
assert.equal(f.starts, 0);
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
for (const [cause, remote] of [['foreign', 'https://github.com/foreign/source.git'],
|
|
108
|
+
['userinfo', 'https://user:private-canary@github.com/demo/source.git'],
|
|
109
|
+
['http', 'http://github.com/demo/source.git'], ['file', 'file:///tmp/source'],
|
|
110
|
+
['query', 'https://github.com/demo/source.git?private-canary'],
|
|
111
|
+
['fragment', 'https://github.com/demo/source.git#fragment'], ['missing-path', 'https://github.com/'],
|
|
112
|
+
['control-character', '\u0000https://github.com/demo/source.git']]) {
|
|
113
|
+
test(`portal selected URL refuses ${cause} source`, async () => {
|
|
114
|
+
const f = await fixture(), args = [...f.argv, '--repository-url-base64url', Buffer.from(remote).toString('base64url')];
|
|
115
|
+
await assert.rejects(f.open({ ...f.input, portalArgs: args }), /^Error: codex_setup_portal_command_mismatch$/);
|
|
116
|
+
assert.equal(f.starts, 0);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
for (const cause of ['overlong', 'sparse', 'noncanonical-base64', 'non-utf8']) {
|
|
120
|
+
test(`portal argument framing rejects ${cause} without native effects`, async () => {
|
|
121
|
+
const f = await fixture(), args = [...f.argv];
|
|
122
|
+
if (cause === 'overlong')
|
|
123
|
+
args.push('a'.repeat(4097));
|
|
124
|
+
if (cause === 'sparse')
|
|
125
|
+
args.length++;
|
|
126
|
+
if (cause === 'noncanonical-base64')
|
|
127
|
+
args.push('--repository-url-base64url', 'abc=');
|
|
128
|
+
if (cause === 'non-utf8')
|
|
129
|
+
args.push('--repository-url-base64url', Buffer.from([255, 254]).toString('base64url'));
|
|
130
|
+
await assert.rejects(f.open({ ...f.input, portalArgs: args }), /^Error: codex_setup_portal_command_mismatch$/);
|
|
131
|
+
assert.equal(f.starts, 0);
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
test('portal binding refuses lost host authority rather than starting a replacement', async () => {
|
|
135
|
+
const f = await fixture();
|
|
136
|
+
f.withdraw();
|
|
137
|
+
await assert.rejects(f.open({ ...f.input, portalArgs: f.argv }), /codex_setup_host_scope_unavailable/);
|
|
138
|
+
assert.equal(f.starts, 0);
|
|
139
|
+
});
|
|
140
|
+
test('portal binding cannot be invoked from a borrowed setup/peer descendant', async () => {
|
|
141
|
+
const f = await fixture();
|
|
142
|
+
f.nested();
|
|
143
|
+
await assert.rejects(f.open({ ...f.input, portalArgs: f.argv }), /codex_setup_host_context_conflict/);
|
|
144
|
+
assert.equal(f.starts, 0);
|
|
145
|
+
});
|
|
146
|
+
//# sourceMappingURL=codexSetupPortalCommand.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupPortalCommand.test.js","sourceRoot":"","sources":["../src/codexSetupPortalCommand.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type LocalCodexSetupReadiness } from '@dharma-ai-labs/agent-fabric-local-vault/setup-readiness';
|
|
2
|
+
import type { ScopedLocalVault } from '@dharma-ai-labs/agent-fabric-local-vault';
|
|
3
|
+
import { type BootstrapHostScope } from './bootstrapHostScope.js';
|
|
4
|
+
import type { CodexSetupExecutionLease, CodexSetupIntent } from './codexSetupAdmission.js';
|
|
5
|
+
type Store = Pick<ScopedLocalVault, 'recordCodexSetupReadiness' | 'getCodexSetupReadiness'>;
|
|
6
|
+
/** Host-only persistence/verification. This is not a runtime observer and must
|
|
7
|
+
* never be registered as a model/peer tool. Its observer must independently
|
|
8
|
+
* read the signed package, protected identity and actual native runtime. */
|
|
9
|
+
export declare function createCodexSetupReadinessOwner(input: {
|
|
10
|
+
intent: CodexSetupIntent;
|
|
11
|
+
workspace: string;
|
|
12
|
+
scope: BootstrapHostScope;
|
|
13
|
+
vault: Store;
|
|
14
|
+
observe(intent: Readonly<CodexSetupIntent>, scope: BootstrapHostScope, retained?: Readonly<LocalCodexSetupReadiness>, intentDigest?: string): Promise<LocalCodexSetupReadiness>;
|
|
15
|
+
}): Readonly<{
|
|
16
|
+
record: (lease: Readonly<CodexSetupExecutionLease>) => Promise<{
|
|
17
|
+
state: "completed";
|
|
18
|
+
readinessReceiptId: string;
|
|
19
|
+
}>;
|
|
20
|
+
verify: (receiptId: string, requested: Readonly<CodexSetupIntent>, intentDigest: string) => Promise<boolean>;
|
|
21
|
+
}>;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=codexSetupReadiness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupReadiness.d.ts","sourceRoot":"","sources":["../src/codexSetupReadiness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgC,KAAK,wBAAwB,EAAC,MAC9D,0DAA0D,CAAC;AAClE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAA4B,KAAK,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC3F,OAAO,KAAK,EAAC,wBAAwB,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAEzF,KAAK,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,2BAA2B,GAAG,wBAAwB,CAAC,CAAC;AAE5F;;4EAE4E;AAC5E,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACpD,MAAM,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IACrF,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,kBAAkB,EACnE,QAAQ,CAAC,EAAE,QAAQ,CAAC,wBAAwB,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;CAC5G;oBA0ByB,QAAQ,CAAC,wBAAwB,CAAC;;;;wBAkB9B,MAAM,aAAa,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,MAAM;GAchG"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { canonicalize } from '@dharma-ai-labs/agent-fabric-contracts';
|
|
2
|
+
import { types } from 'node:util';
|
|
3
|
+
import { parseLocalCodexSetupReadiness } from '@dharma-ai-labs/agent-fabric-local-vault/setup-readiness';
|
|
4
|
+
import { prepareCodexBootstrapHost } from './bootstrapHostScope.js';
|
|
5
|
+
/** Host-only persistence/verification. This is not a runtime observer and must
|
|
6
|
+
* never be registered as a model/peer tool. Its observer must independently
|
|
7
|
+
* read the signed package, protected identity and actual native runtime. */
|
|
8
|
+
export function createCodexSetupReadinessOwner(input) {
|
|
9
|
+
const { scope, vault, observe } = input;
|
|
10
|
+
const prepared = prepareCodexBootstrapHost({ intent: input.intent, workspace: input.workspace,
|
|
11
|
+
signal: scope.signal, current: () => scope.current() });
|
|
12
|
+
const intent = prepared.intent;
|
|
13
|
+
// The parent owns lifecycle withdrawal; the temporary validation scope adds
|
|
14
|
+
// no independent operation or authority.
|
|
15
|
+
prepared.scope.close();
|
|
16
|
+
const sameIntent = (value) => canonicalize(value) === canonicalize(intent);
|
|
17
|
+
const bound = (raw, requireRecent) => {
|
|
18
|
+
const value = parseLocalCodexSetupReadiness(raw), now = Date.now();
|
|
19
|
+
if (value.operationId !== intent.operationId || value.organizationId !== intent.organizationId
|
|
20
|
+
|| value.membershipId !== intent.recipientMembershipId || value.repositoryFingerprint !== intent.repositoryFingerprint
|
|
21
|
+
|| value.policyRevision !== intent.policyRevision || value.contractDigest !== intent.contractDigest
|
|
22
|
+
|| Date.parse(value.verifiedAt) < Date.parse(intent.issuedAt)
|
|
23
|
+
|| Date.parse(value.verifiedAt) > now || requireRecent && now - Date.parse(value.verifiedAt) > 60_000
|
|
24
|
+
|| Date.parse(value.expiresAt) > Date.parse(intent.expiresAt) || now >= Date.parse(value.expiresAt)) {
|
|
25
|
+
throw new Error('setup_readiness_context_unconfirmed');
|
|
26
|
+
}
|
|
27
|
+
return value;
|
|
28
|
+
};
|
|
29
|
+
const stable = (value) => {
|
|
30
|
+
const { verifiedAt: _verified, relayPolledAt: _poll, expiresAt: _expiry, ...identity } = value;
|
|
31
|
+
return canonicalize(identity);
|
|
32
|
+
};
|
|
33
|
+
return Object.freeze({
|
|
34
|
+
record: async (lease) => {
|
|
35
|
+
// Snapshot original lease strings before the first asynchronous check.
|
|
36
|
+
if (!lease || typeof lease !== 'object' || types.isProxy(lease))
|
|
37
|
+
throw new Error('setup_readiness_lease_invalid');
|
|
38
|
+
const fields = Object.getOwnPropertyDescriptors(lease);
|
|
39
|
+
if (Reflect.ownKeys(fields).length !== 2 || !Object.hasOwn(fields.leaseId ?? {}, 'value')
|
|
40
|
+
|| !Object.hasOwn(fields.intentDigest ?? {}, 'value')
|
|
41
|
+
|| typeof fields.leaseId.value !== 'string' || typeof fields.intentDigest.value !== 'string') {
|
|
42
|
+
throw new Error('setup_readiness_lease_invalid');
|
|
43
|
+
}
|
|
44
|
+
const leaseId = fields.leaseId.value, intentDigest = fields.intentDigest.value;
|
|
45
|
+
const observation = await scope.step(async () => bound(await observe(intent, scope, undefined, intentDigest), true));
|
|
46
|
+
const receipt = await scope.step(() => vault.recordCodexSetupReadiness(leaseId, intentDigest, observation));
|
|
47
|
+
// Do not acknowledge a write solely from its return value.
|
|
48
|
+
const persisted = await scope.step(() => vault.getCodexSetupReadiness(receipt.receiptId, intent.operationId, intentDigest));
|
|
49
|
+
if (!persisted || persisted.observationHash !== receipt.observationHash
|
|
50
|
+
|| canonicalize(persisted.observation) !== canonicalize(observation))
|
|
51
|
+
throw new Error('setup_readiness_persistence_unconfirmed');
|
|
52
|
+
return { state: 'completed', readinessReceiptId: persisted.receiptId };
|
|
53
|
+
},
|
|
54
|
+
verify: async (receiptId, requested, intentDigest) => {
|
|
55
|
+
try {
|
|
56
|
+
await scope.assert();
|
|
57
|
+
if (!sameIntent(requested))
|
|
58
|
+
return false;
|
|
59
|
+
const receipt = await scope.step(() => vault.getCodexSetupReadiness(receiptId, intent.operationId, intentDigest));
|
|
60
|
+
if (!receipt)
|
|
61
|
+
return false;
|
|
62
|
+
// A durable receipt is historical evidence. Its age is not current
|
|
63
|
+
// liveness; only the separately observed runtime must be recent.
|
|
64
|
+
const retained = bound(receipt.observation, false);
|
|
65
|
+
const current = await scope.step(async () => bound(await observe(intent, scope, retained, intentDigest), true));
|
|
66
|
+
return stable(retained) === stable(current) && await scope.current();
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=codexSetupReadiness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupReadiness.js","sourceRoot":"","sources":["../src/codexSetupReadiness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupReadiness.test.d.ts","sourceRoot":"","sources":["../src/codexSetupReadiness.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { randomBytes } from 'node:crypto';
|
|
3
|
+
import { mkdtemp, rm } from 'node:fs/promises';
|
|
4
|
+
import { tmpdir } from 'node:os';
|
|
5
|
+
import { resolve } from 'node:path';
|
|
6
|
+
import test from 'node:test';
|
|
7
|
+
import { LocalVault } from '@dharma-ai-labs/agent-fabric-local-vault';
|
|
8
|
+
import { prepareCodexBootstrapHost } from './bootstrapHostScope.js';
|
|
9
|
+
import { createCodexSetupReadinessOwner } from './codexSetupReadiness.js';
|
|
10
|
+
const id = (n) => `${String(n).padStart(8, '0')}-1111-4111-8111-111111111111`, hash = `sha256:${'a'.repeat(64)}`;
|
|
11
|
+
async function fixture(run) {
|
|
12
|
+
const root = await mkdtemp(resolve(tmpdir(), 'fabric-readiness-owner-')), now = Date.now();
|
|
13
|
+
const prepared = prepareCodexBootstrapHost({ workspace: root, signal: new AbortController().signal, current: async () => true,
|
|
14
|
+
intent: { schema: 'dharma.codex-setup-intent/v1', operationId: id(1), setupReference: id(2),
|
|
15
|
+
organizationId: 'org_demo', recipientMembershipId: id(3), origin: 'https://hq.example',
|
|
16
|
+
repositoryFingerprint: hash, policyRevision: 'policy-v1', scopeDigest: hash, contractDigest: hash,
|
|
17
|
+
hostContextId: id(4), issuedAt: new Date(now - 1000).toISOString(), expiresAt: new Date(now + 600_000).toISOString() } });
|
|
18
|
+
const value = { schema: 'dharma.local-codex-setup-readiness/v1',
|
|
19
|
+
operationId: id(1), organizationId: 'org_demo', membershipId: id(3), deviceId: id(5), workspaceId: id(6),
|
|
20
|
+
repositoryBindingId: id(7), repositoryAgentId: id(8), endpointId: id(9), sessionBindingId: id(10), sessionId: 'synthetic_session',
|
|
21
|
+
repositoryFingerprint: hash, policyRevision: 'policy-v1', policyHash: hash, manifestHash: hash, catalogHash: hash,
|
|
22
|
+
bundleId: id(11), bundleHash: hash, activeReceiptHash: hash, roleRevision: 1, roleProfileHash: hash,
|
|
23
|
+
nativeSkillHash: hash, contractDigest: hash, cliVersion: '0.2.153', relayPid: 123,
|
|
24
|
+
relayPolledAt: new Date(now - 500).toISOString(), startupBackend: 'systemd-user',
|
|
25
|
+
firstLearning: 'no_eligible_history', verifiedAt: new Date(now).toISOString(), expiresAt: prepared.intent.expiresAt };
|
|
26
|
+
const vault = await LocalVault.open({ root: resolve(root, 'vault'), masterKey: randomBytes(32) }, prepared.scope);
|
|
27
|
+
try {
|
|
28
|
+
const claim = await vault.claimCodexSetupOperation(id(1), hash);
|
|
29
|
+
if (claim.state !== 'acquired')
|
|
30
|
+
throw new Error('fixture_claim_missing');
|
|
31
|
+
let observations = 0, retained;
|
|
32
|
+
const observedDigests = [];
|
|
33
|
+
const owner = createCodexSetupReadinessOwner({ intent: prepared.intent, workspace: root, scope: prepared.scope, vault,
|
|
34
|
+
observe: async (_intent, _scope, historical, digest) => { observations++; retained = historical; observedDigests.push(digest); return { ...value }; } });
|
|
35
|
+
await run({ owner, intent: prepared.intent, lease: { leaseId: claim.leaseId, intentDigest: hash }, scope: prepared.scope,
|
|
36
|
+
value, observations: () => observations, retained: () => retained, observedDigests: () => [...observedDigests] });
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
prepared.scope.close();
|
|
40
|
+
await vault.close();
|
|
41
|
+
await rm(root, { recursive: true, force: true });
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
test('owner persists a real receipt and verifies it by a separate fresh observation', async () => {
|
|
45
|
+
await fixture(async (f) => {
|
|
46
|
+
const result = await f.owner.record(f.lease);
|
|
47
|
+
assert.equal(result.state, 'completed');
|
|
48
|
+
assert.equal(f.observations(), 1);
|
|
49
|
+
assert.equal(f.retained(), undefined);
|
|
50
|
+
assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), true);
|
|
51
|
+
assert.equal(f.observations(), 2);
|
|
52
|
+
assert.equal(Object.isFrozen(f.retained()), true);
|
|
53
|
+
assert.equal(f.retained().firstLearning, 'no_eligible_history');
|
|
54
|
+
assert.equal(await f.owner.verify(id(99), f.intent, hash), false);
|
|
55
|
+
assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, `sha256:${'b'.repeat(64)}`), false);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
test('readiness observer receives the exact original digest on record and independent verification', async () => {
|
|
59
|
+
await fixture(async (f) => {
|
|
60
|
+
const result = await f.owner.record(f.lease);
|
|
61
|
+
assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), true);
|
|
62
|
+
assert.deepEqual(f.observedDigests(), [hash, hash]);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
test('generic completion status and incomplete runtime state cannot become readiness', async () => {
|
|
66
|
+
await fixture(async (f) => {
|
|
67
|
+
Object.assign(f.value, { relayPid: 0 });
|
|
68
|
+
await assert.rejects(f.owner.record(f.lease), /setup_readiness_invalid/);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
test('changed current identity, package, role, runtime or contract invalidates an existing receipt', async () => {
|
|
72
|
+
await fixture(async (f) => {
|
|
73
|
+
const result = await f.owner.record(f.lease), original = { ...f.value };
|
|
74
|
+
for (const delta of [{ deviceId: id(30) }, { endpointId: id(30) }, { sessionId: 'different_session' },
|
|
75
|
+
{ manifestHash: `sha256:${'b'.repeat(64)}` }, { catalogHash: `sha256:${'b'.repeat(64)}` },
|
|
76
|
+
{ roleRevision: 2 }, { policyHash: `sha256:${'b'.repeat(64)}` }, { contractDigest: `sha256:${'b'.repeat(64)}` },
|
|
77
|
+
{ relayPid: 456 }, { cliVersion: '0.2.154' }]) {
|
|
78
|
+
Object.assign(f.value, original, delta);
|
|
79
|
+
assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), false);
|
|
80
|
+
}
|
|
81
|
+
Object.assign(f.value, original);
|
|
82
|
+
assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), true);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
test('foreign recipient, source, policy or intent is denied without accepting copied readiness', async () => {
|
|
86
|
+
await fixture(async (f) => {
|
|
87
|
+
const result = await f.owner.record(f.lease), original = { ...f.value };
|
|
88
|
+
for (const delta of [{ membershipId: id(30) }, { repositoryFingerprint: `sha256:${'b'.repeat(64)}` },
|
|
89
|
+
{ organizationId: 'org_foreign' }, { policyRevision: 'foreign-policy' }]) {
|
|
90
|
+
Object.assign(f.value, original, delta);
|
|
91
|
+
await assert.rejects(f.owner.record(f.lease), /setup_readiness_context_unconfirmed/);
|
|
92
|
+
assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), false);
|
|
93
|
+
}
|
|
94
|
+
Object.assign(f.value, original);
|
|
95
|
+
assert.equal(await f.owner.verify(result.readinessReceiptId, { ...f.intent, operationId: id(30) }, hash), false);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
test('withdrawing the original host denies both persistence and readiness exposure', async () => {
|
|
99
|
+
await fixture(async (f) => {
|
|
100
|
+
const result = await f.owner.record(f.lease), before = f.observations();
|
|
101
|
+
f.scope.close();
|
|
102
|
+
await assert.rejects(f.owner.record(f.lease), /codex_setup_host_scope_unavailable/);
|
|
103
|
+
assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), false);
|
|
104
|
+
assert.equal(f.observations(), before);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
test('lease accessors are denied before observation or secret-bearing serialization', async () => {
|
|
108
|
+
await fixture(async (f) => {
|
|
109
|
+
let getters = 0;
|
|
110
|
+
await assert.rejects(f.owner.record({ get leaseId() { getters++; return f.lease.leaseId; }, intentDigest: hash }), /setup_readiness_lease_invalid/);
|
|
111
|
+
assert.equal(getters, 0);
|
|
112
|
+
assert.equal(f.observations(), 0);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
test('historical receipt requires fresh current state, not a newly written receipt', async (t) => {
|
|
116
|
+
t.mock.timers.enable({ apis: ['Date'], now: Date.now() });
|
|
117
|
+
await fixture(async (f) => {
|
|
118
|
+
const result = await f.owner.record(f.lease);
|
|
119
|
+
t.mock.timers.tick(90_000);
|
|
120
|
+
// Stale current observation is still denied, even with a genuine receipt.
|
|
121
|
+
assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), false);
|
|
122
|
+
Object.assign(f.value, { verifiedAt: new Date().toISOString(), relayPolledAt: new Date().toISOString() });
|
|
123
|
+
assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), true);
|
|
124
|
+
assert.notEqual(f.retained().verifiedAt, f.value.verifiedAt);
|
|
125
|
+
// The original durable receipt is unchanged and idempotently reused.
|
|
126
|
+
t.mock.timers.tick(510_000);
|
|
127
|
+
Object.assign(f.value, { verifiedAt: new Date().toISOString(), relayPolledAt: new Date().toISOString() });
|
|
128
|
+
assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), false);
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
test('historical receipt never admits a changed current binding after recovery delay', async (t) => {
|
|
132
|
+
t.mock.timers.enable({ apis: ['Date'], now: Date.now() });
|
|
133
|
+
await fixture(async (f) => {
|
|
134
|
+
const result = await f.owner.record(f.lease), original = { ...f.value };
|
|
135
|
+
t.mock.timers.tick(90_000);
|
|
136
|
+
for (const delta of [{ deviceId: id(30) }, { sessionId: 'foreign_session' }, { relayPid: 456 },
|
|
137
|
+
{ manifestHash: `sha256:${'b'.repeat(64)}` }, { catalogHash: `sha256:${'b'.repeat(64)}` }, { roleRevision: 2 }]) {
|
|
138
|
+
Object.assign(f.value, original, delta, { verifiedAt: new Date().toISOString(), relayPolledAt: new Date().toISOString() });
|
|
139
|
+
assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), false);
|
|
140
|
+
}
|
|
141
|
+
Object.assign(f.value, original, { verifiedAt: new Date().toISOString(), relayPolledAt: new Date().toISOString() });
|
|
142
|
+
assert.equal(await f.owner.verify(result.readinessReceiptId, f.intent, hash), true);
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
//# sourceMappingURL=codexSetupReadiness.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupReadiness.test.js","sourceRoot":"","sources":["../src/codexSetupReadiness.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,EAAC,OAAO,EAAE,EAAE,EAAC,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAC,MAAM,EAAC,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,UAAU,EAAgC,MAAM,0CAA0C,CAAC;AACnG,OAAO,EAAC,yBAAyB,EAAC,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAC,8BAA8B,EAAC,MAAM,0BAA0B,CAAC;AAExE,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,8BAA8B,EAAE,IAAI,GAAG,UAAU,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;AACzH,KAAK,UAAU,OAAO,CAAC,GAMJ;IACjB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,yBAAyB,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3F,MAAM,QAAQ,GAAG,yBAAyB,CAAC,EAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;QAC1H,MAAM,EAAE,EAAC,MAAM,EAAE,8BAA8B,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;YACxF,cAAc,EAAE,UAAU,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,oBAAoB;YACtF,qBAAqB,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI;YACjG,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,WAAW,EAAE,EAAC,EAAC,CAAC,CAAC;IAC5H,MAAM,KAAK,GAA6B,EAAC,MAAM,EAAE,uCAAuC;QACtF,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QACxG,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,mBAAmB;QACjI,qBAAqB,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI;QACjH,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI;QACnG,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG;QACjF,aAAa,EAAE,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,cAAc,EAAE,cAAc;QAChF,aAAa,EAAE,qBAAqB,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAC,CAAC;IACvH,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC,EAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChH,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChE,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACzE,IAAI,YAAY,GAAG,CAAC,EAAE,QAAwD,CAAC;QAC/E,MAAM,eAAe,GAA8B,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,8BAA8B,CAAC,EAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK;YAClH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,GAAE,YAAY,EAAE,CAAC,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAC,GAAG,KAAK,EAAC,CAAC,CAAA,CAAC,EAAC,CAAC,CAAC;QACtJ,MAAM,GAAG,CAAC,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK;YACnH,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,eAAe,CAAC,EAAC,CAAC,CAAC;IACrH,CAAC;YAAS,CAAC;QAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAAC,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;IAAA,CAAC;AAC1G,CAAC;AAED,IAAI,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;IAC/F,MAAM,OAAO,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3E,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QACpF,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAG,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;QACjE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QAClE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7G,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8FAA8F,EAAE,KAAK,IAAI,EAAE;IAC9G,MAAM,OAAO,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QACpF,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;IAChG,MAAM,OAAO,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;QACtB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,CAAC,EAAC,CAAC,CAAC;QACtC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,yBAAyB,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8FAA8F,EAAE,KAAK,IAAI,EAAE;IAC9G,MAAM,OAAO,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,EAAC,GAAG,CAAC,CAAC,KAAK,EAAC,CAAC;QACtE,KAAK,MAAM,KAAK,IAAI,CAAC,EAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAC,EAAE,EAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAC,EAAE,EAAC,SAAS,EAAE,mBAAmB,EAAC;YAC7F,EAAC,YAAY,EAAE,UAAU,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAC,EAAE,EAAC,WAAW,EAAE,UAAU,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAC;YACrF,EAAC,YAAY,EAAE,CAAC,EAAC,EAAE,EAAC,UAAU,EAAE,UAAU,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAC,EAAE,EAAC,cAAc,EAAE,UAAU,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAC;YACzG,EAAC,QAAQ,EAAE,GAAG,EAAC,EAAE,EAAC,UAAU,EAAE,SAAS,EAAC,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0FAA0F,EAAE,KAAK,IAAI,EAAE;IAC1G,MAAM,OAAO,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,EAAC,GAAG,CAAC,CAAC,KAAK,EAAC,CAAC;QACtE,KAAK,MAAM,KAAK,IAAI,CAAC,EAAC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,EAAC,EAAE,EAAC,qBAAqB,EAAE,UAAU,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAC;YAC9F,EAAC,cAAc,EAAE,aAAa,EAAC,EAAE,EAAC,cAAc,EAAE,gBAAgB,EAAC,CAAC,EAAE,CAAC;YACvE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACxC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,qCAAqC,CAAC,CAAC;YACrF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,EAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACjH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;IAC9F,MAAM,OAAO,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;QACxE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,oCAAoC,CAAC,CAAC;QACpF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QACrF,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;IAC/F,MAAM,OAAO,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;QACtB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAC,IAAI,OAAO,KAAI,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA,CAAC,EAAE,YAAY,EAAE,IAAI,EAAC,CAAC,EAC3G,+BAA+B,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8EAA8E,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC7F,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAC,CAAC,CAAC;IACxD,MAAM,OAAO,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,0EAA0E;QAC1E,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QACrF,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,EAAC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAC,CAAC,CAAC;QACxG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QACpF,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAG,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9D,qEAAqE;QACrE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,EAAC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAC,CAAC,CAAC;QACxG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gFAAgF,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC/F,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAC,CAAC,CAAC;IACxD,MAAM,OAAO,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,EAAC,GAAG,CAAC,CAAC,KAAK,EAAC,CAAC;QACtE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,CAAC,EAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAC,EAAE,EAAC,SAAS,EAAE,iBAAiB,EAAC,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAC;YACtF,EAAC,YAAY,EAAE,UAAU,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAC,EAAE,EAAC,WAAW,EAAE,UAAU,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAC,EAAE,EAAC,YAAY,EAAE,CAAC,EAAC,CAAC,EAAE,CAAC;YAC5G,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAC,CAAC,CAAC;YACzH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAC,CAAC,CAAC;QAClH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupSessionCaller.test.d.ts","sourceRoot":"","sources":["../src/codexSetupSessionCaller.test.ts"],"names":[],"mappings":""}
|