@dharma-ai-labs/agent-fabric 0.2.48 → 0.2.50
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/index.d.ts +92 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +846 -180
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +25 -3
- package/dist/index.test.js.map +1 -1
- package/dist/repositoryCandidateSync.d.ts +55 -0
- package/dist/repositoryCandidateSync.d.ts.map +1 -0
- package/dist/repositoryCandidateSync.js +177 -0
- package/dist/repositoryCandidateSync.js.map +1 -0
- package/dist/repositoryCandidateSync.test.d.ts +2 -0
- package/dist/repositoryCandidateSync.test.d.ts.map +1 -0
- package/dist/repositoryCandidateSync.test.js +141 -0
- package/dist/repositoryCandidateSync.test.js.map +1 -0
- package/dist/repositoryInstalledKnowledge.d.ts +13 -0
- package/dist/repositoryInstalledKnowledge.d.ts.map +1 -0
- package/dist/repositoryInstalledKnowledge.js +25 -0
- package/dist/repositoryInstalledKnowledge.js.map +1 -0
- package/dist/repositoryInstallerFiles.d.ts +6 -0
- package/dist/repositoryInstallerFiles.d.ts.map +1 -0
- package/dist/repositoryInstallerFiles.js +113 -0
- package/dist/repositoryInstallerFiles.js.map +1 -0
- package/dist/repositoryKnowledge.d.ts +119 -0
- package/dist/repositoryKnowledge.d.ts.map +1 -0
- package/dist/repositoryKnowledge.js +462 -0
- package/dist/repositoryKnowledge.js.map +1 -0
- package/dist/repositoryKnowledge.test.d.ts +2 -0
- package/dist/repositoryKnowledge.test.d.ts.map +1 -0
- package/dist/repositoryKnowledge.test.js +245 -0
- package/dist/repositoryKnowledge.test.js.map +1 -0
- package/dist/repositoryKnowledgeRetention.test.d.ts +2 -0
- package/dist/repositoryKnowledgeRetention.test.d.ts.map +1 -0
- package/dist/repositoryKnowledgeRetention.test.js +386 -0
- package/dist/repositoryKnowledgeRetention.test.js.map +1 -0
- package/dist/repositoryOnboardingCaller.test.d.ts +2 -0
- package/dist/repositoryOnboardingCaller.test.d.ts.map +1 -0
- package/dist/repositoryOnboardingCaller.test.js +197 -0
- package/dist/repositoryOnboardingCaller.test.js.map +1 -0
- package/dist/repositoryOnboardingFlow.test.d.ts +2 -0
- package/dist/repositoryOnboardingFlow.test.d.ts.map +1 -0
- package/dist/repositoryOnboardingFlow.test.js +47 -0
- package/dist/repositoryOnboardingFlow.test.js.map +1 -0
- package/dist/repositoryPackage.d.ts +115 -0
- package/dist/repositoryPackage.d.ts.map +1 -0
- package/dist/repositoryPackage.js +1095 -0
- package/dist/repositoryPackage.js.map +1 -0
- package/dist/repositoryPackage.test.d.ts +2 -0
- package/dist/repositoryPackage.test.d.ts.map +1 -0
- package/dist/repositoryPackage.test.js +709 -0
- package/dist/repositoryPackage.test.js.map +1 -0
- package/dist/repositoryPackageDelivery.d.ts +29 -0
- package/dist/repositoryPackageDelivery.d.ts.map +1 -0
- package/dist/repositoryPackageDelivery.js +140 -0
- package/dist/repositoryPackageDelivery.js.map +1 -0
- package/dist/repositoryPackageDelivery.test.d.ts +2 -0
- package/dist/repositoryPackageDelivery.test.d.ts.map +1 -0
- package/dist/repositoryPackageDelivery.test.js +787 -0
- package/dist/repositoryPackageDelivery.test.js.map +1 -0
- package/dist/repositoryPackageDeliveryCaller.test.d.ts +2 -0
- package/dist/repositoryPackageDeliveryCaller.test.d.ts.map +1 -0
- package/dist/repositoryPackageDeliveryCaller.test.js +18 -0
- package/dist/repositoryPackageDeliveryCaller.test.js.map +1 -0
- package/dist/repositoryPackageDeliveryPreflight.test.d.ts +2 -0
- package/dist/repositoryPackageDeliveryPreflight.test.d.ts.map +1 -0
- package/dist/repositoryPackageDeliveryPreflight.test.js +29 -0
- package/dist/repositoryPackageDeliveryPreflight.test.js.map +1 -0
- package/dist/repositoryPackageTransfer.d.ts +85 -0
- package/dist/repositoryPackageTransfer.d.ts.map +1 -0
- package/dist/repositoryPackageTransfer.js +233 -0
- package/dist/repositoryPackageTransfer.js.map +1 -0
- package/dist/repositoryPackageTransfer.test.d.ts +2 -0
- package/dist/repositoryPackageTransfer.test.d.ts.map +1 -0
- package/dist/repositoryPackageTransfer.test.js +173 -0
- package/dist/repositoryPackageTransfer.test.js.map +1 -0
- package/dist/repositoryPackageTransferV2.test.d.ts +2 -0
- package/dist/repositoryPackageTransferV2.test.d.ts.map +1 -0
- package/dist/repositoryPackageTransferV2.test.js +549 -0
- package/dist/repositoryPackageTransferV2.test.js.map +1 -0
- package/dist/repositoryPackageTransferV2Schema.test.d.ts +2 -0
- package/dist/repositoryPackageTransferV2Schema.test.d.ts.map +1 -0
- package/dist/repositoryPackageTransferV2Schema.test.js +48 -0
- package/dist/repositoryPackageTransferV2Schema.test.js.map +1 -0
- package/dist/repositoryReleaseMetadata.d.ts +37 -0
- package/dist/repositoryReleaseMetadata.d.ts.map +1 -0
- package/dist/repositoryReleaseMetadata.js +251 -0
- package/dist/repositoryReleaseMetadata.js.map +1 -0
- package/dist/repositoryReleaseMetadata.test.d.ts +2 -0
- package/dist/repositoryReleaseMetadata.test.d.ts.map +1 -0
- package/dist/repositoryReleaseMetadata.test.js +297 -0
- package/dist/repositoryReleaseMetadata.test.js.map +1 -0
- package/dist/repositoryRoleDerivation.d.ts +11 -0
- package/dist/repositoryRoleDerivation.d.ts.map +1 -0
- package/dist/repositoryRoleDerivation.js +59 -0
- package/dist/repositoryRoleDerivation.js.map +1 -0
- package/dist/repositoryRoleDerivation.test.d.ts +2 -0
- package/dist/repositoryRoleDerivation.test.d.ts.map +1 -0
- package/dist/repositoryRoleDerivation.test.js +33 -0
- package/dist/repositoryRoleDerivation.test.js.map +1 -0
- package/dist/repositoryRoleMetadata.d.ts +63 -0
- package/dist/repositoryRoleMetadata.d.ts.map +1 -0
- package/dist/repositoryRoleMetadata.js +203 -0
- package/dist/repositoryRoleMetadata.js.map +1 -0
- package/dist/repositoryRoleMetadata.test.d.ts +2 -0
- package/dist/repositoryRoleMetadata.test.d.ts.map +1 -0
- package/dist/repositoryRoleMetadata.test.js +296 -0
- package/dist/repositoryRoleMetadata.test.js.map +1 -0
- package/dist/repositoryRoleQuestion.d.ts +36 -0
- package/dist/repositoryRoleQuestion.d.ts.map +1 -0
- package/dist/repositoryRoleQuestion.js +68 -0
- package/dist/repositoryRoleQuestion.js.map +1 -0
- package/dist/repositoryRoleQuestion.test.d.ts +2 -0
- package/dist/repositoryRoleQuestion.test.d.ts.map +1 -0
- package/dist/repositoryRoleQuestion.test.js +66 -0
- package/dist/repositoryRoleQuestion.test.js.map +1 -0
- package/dist/repositorySourceAuthorization.d.ts +43 -0
- package/dist/repositorySourceAuthorization.d.ts.map +1 -0
- package/dist/repositorySourceAuthorization.js +164 -0
- package/dist/repositorySourceAuthorization.js.map +1 -0
- package/dist/repositorySourceCapture.test.d.ts +2 -0
- package/dist/repositorySourceCapture.test.d.ts.map +1 -0
- package/dist/repositorySourceCapture.test.js +303 -0
- package/dist/repositorySourceCapture.test.js.map +1 -0
- package/dist/repositorySourceSync.d.ts +54 -0
- package/dist/repositorySourceSync.d.ts.map +1 -0
- package/dist/repositorySourceSync.js +88 -0
- package/dist/repositorySourceSync.js.map +1 -0
- package/dist/repositorySourceSync.test.d.ts +2 -0
- package/dist/repositorySourceSync.test.d.ts.map +1 -0
- package/dist/repositorySourceSync.test.js +218 -0
- package/dist/repositorySourceSync.test.js.map +1 -0
- package/dist/schemas/repository-knowledge-retention-v1.schema.json +26 -0
- package/dist/schemas/repository-knowledge-v2.schema.json +74 -0
- package/dist/schemas/repository-knowledge.schema.json +63 -0
- package/dist/schemas/repository-package-chunk-v2.schema.json +15 -0
- package/dist/schemas/repository-package-chunk.schema.json +18 -0
- package/dist/schemas/repository-package-delivery-v1.schema.json +51 -0
- package/dist/schemas/repository-package-envelope-v1.schema.json +16 -0
- package/dist/schemas/repository-package-transfer-v2.schema.json +36 -0
- package/dist/schemas/repository-package-transfer.schema.json +34 -0
- package/dist/schemas/repository-package-v2.schema.json +491 -0
- package/dist/schemas/repository-package-v3.schema.json +36 -0
- package/dist/schemas/repository-package.schema.json +94 -0
- package/dist/schemas/repository-release-manifest.schema.json +34 -0
- package/dist/schemas/repository-role-metadata.schema.json +82 -0
- package/dist/schemas/skill-preparation-pointer-v1.schema.json +28 -0
- package/dist/schemas/skill-preparation-v1.schema.json +32 -0
- package/dist/skillPollResponse.test.d.ts +2 -0
- package/dist/skillPollResponse.test.d.ts.map +1 -0
- package/dist/skillPollResponse.test.js +37 -0
- package/dist/skillPollResponse.test.js.map +1 -0
- package/dist/skillPreparation.test.d.ts +2 -0
- package/dist/skillPreparation.test.d.ts.map +1 -0
- package/dist/skillPreparation.test.js +163 -0
- package/dist/skillPreparation.test.js.map +1 -0
- package/dist/skillPreparationCache.d.ts +34 -0
- package/dist/skillPreparationCache.d.ts.map +1 -0
- package/dist/skillPreparationCache.js +371 -0
- package/dist/skillPreparationCache.js.map +1 -0
- package/dist/skillPreparationCache.test.d.ts +2 -0
- package/dist/skillPreparationCache.test.d.ts.map +1 -0
- package/dist/skillPreparationCache.test.js +316 -0
- package/dist/skillPreparationCache.test.js.map +1 -0
- package/dist/skillPreparationCaller.test.d.ts +2 -0
- package/dist/skillPreparationCaller.test.d.ts.map +1 -0
- package/dist/skillPreparationCaller.test.js +32 -0
- package/dist/skillPreparationCaller.test.js.map +1 -0
- package/dist/skillPreparationPump.d.ts +11 -0
- package/dist/skillPreparationPump.d.ts.map +1 -0
- package/dist/skillPreparationPump.js +41 -0
- package/dist/skillPreparationPump.js.map +1 -0
- package/dist/skillPreparationPump.test.d.ts +2 -0
- package/dist/skillPreparationPump.test.d.ts.map +1 -0
- package/dist/skillPreparationPump.test.js +87 -0
- package/dist/skillPreparationPump.test.js.map +1 -0
- package/dist/skillPreparationRecord.d.ts +2 -0
- package/dist/skillPreparationRecord.d.ts.map +1 -0
- package/dist/skillPreparationRecord.js +36 -0
- package/dist/skillPreparationRecord.js.map +1 -0
- package/dist/skillPreparationTransaction.d.ts +13 -0
- package/dist/skillPreparationTransaction.d.ts.map +1 -0
- package/dist/skillPreparationTransaction.js +236 -0
- package/dist/skillPreparationTransaction.js.map +1 -0
- package/dist/skillPreparationTransaction.test.d.ts +2 -0
- package/dist/skillPreparationTransaction.test.d.ts.map +1 -0
- package/dist/skillPreparationTransaction.test.js +181 -0
- package/dist/skillPreparationTransaction.test.js.map +1 -0
- package/dist/skillSyncPolicy.test.d.ts +2 -0
- package/dist/skillSyncPolicy.test.d.ts.map +1 -0
- package/dist/skillSyncPolicy.test.js +156 -0
- package/dist/skillSyncPolicy.test.js.map +1 -0
- package/dist/usage.d.ts +1 -1
- package/dist/usage.d.ts.map +1 -1
- package/dist/usage.js +1 -1
- package/dist/usage.js.map +1 -1
- package/dist/windowsProcessPortability.test.d.ts +2 -0
- package/dist/windowsProcessPortability.test.d.ts.map +1 -0
- package/dist/windowsProcessPortability.test.js +14 -0
- package/dist/windowsProcessPortability.test.js.map +1 -0
- package/package.json +7 -4
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import { dirname, resolve } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { runInNewContext } from 'node:vm';
|
|
6
|
+
import test from 'node:test';
|
|
7
|
+
import ts from 'typescript';
|
|
8
|
+
// Execute the actual function body, parsed by TypeScript rather than extracted
|
|
9
|
+
// by text matching. All I/O boundaries are injected: no enrollment, paid work,
|
|
10
|
+
// secret-store writes, daemon processes, or external requests can occur.
|
|
11
|
+
async function caller(name, dependencies) {
|
|
12
|
+
const text = await readFile(fileURLToPath(new URL('../src/index.ts', import.meta.url)), 'utf8');
|
|
13
|
+
const source = ts.createSourceFile('index.ts', text, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
14
|
+
const nodes = source.statements.filter(node => ts.isFunctionDeclaration(node) && node.name?.text === name);
|
|
15
|
+
assert.equal(nodes.length, 1, 'The named source function must resolve exactly once.');
|
|
16
|
+
const compiled = ts.transpileModule(nodes[0].getText(source), {
|
|
17
|
+
compilerOptions: { target: ts.ScriptTarget.ES2023, module: ts.ModuleKind.None },
|
|
18
|
+
reportDiagnostics: true,
|
|
19
|
+
});
|
|
20
|
+
assert.equal(compiled.diagnostics?.filter(item => item.category === ts.DiagnosticCategory.Error).length, 0);
|
|
21
|
+
return runInNewContext(`${compiled.outputText}\n${name}`, dependencies, {
|
|
22
|
+
timeout: 1000, contextCodeGeneration: { strings: false, wasm: false },
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function bootstrapDependencies(onboarding) {
|
|
26
|
+
const calls = [];
|
|
27
|
+
const record = async (name) => { calls.push(name); };
|
|
28
|
+
const dependencies = {
|
|
29
|
+
normalizeHqUrl: (value) => value,
|
|
30
|
+
portalUrl: () => 'https://fixture.invalid',
|
|
31
|
+
required: (flags, key) => {
|
|
32
|
+
const value = flags.get(key);
|
|
33
|
+
if (typeof value !== 'string')
|
|
34
|
+
throw new Error(`Missing fixture flag ${key}`);
|
|
35
|
+
return value;
|
|
36
|
+
},
|
|
37
|
+
realpath: async (path) => path,
|
|
38
|
+
preflightBootstrapWorkspaceIdentity: async () => record('preflight'),
|
|
39
|
+
isLocalProviderId: (provider) => provider === 'codex',
|
|
40
|
+
readDeviceConfig: async () => null,
|
|
41
|
+
configPath: () => '/fixture-config/device.json',
|
|
42
|
+
process: { env: { USER: 'fixture' } },
|
|
43
|
+
platform: async () => 'linux',
|
|
44
|
+
loadOrCreateDeviceIdentity: async () => ({ publicKeyEd25519: 'fixture_public_key' }),
|
|
45
|
+
redeemBootstrapGrant: async () => ({ deviceId: 'fixture_device', serverPublicKeyEd25519: 'fixture_server_key',
|
|
46
|
+
relayUrl: 'wss://fixture.invalid', organizationApiToken: 'fixture_token', organizationApiTokenScopes: [] }),
|
|
47
|
+
saveDeviceConfig: async () => record('save_device'),
|
|
48
|
+
saveDeviceEnrollmentAnchor: async () => record('save_anchor'),
|
|
49
|
+
saveOrganizationApiToken: async () => record('save_token'),
|
|
50
|
+
retryBootstrapOnboarding: async (operation) => operation(),
|
|
51
|
+
onboard: async () => onboarding,
|
|
52
|
+
installStableRepositoryLauncher: async () => { await record('launcher'); return { installed: true }; },
|
|
53
|
+
verifyAgentFabricSkillInstallation: async () => ({ ready: true }),
|
|
54
|
+
resolve, dirname,
|
|
55
|
+
evidencePreview: async () => ({ trajectoryCount: 0, automaticDisclosure: { ready: false } }),
|
|
56
|
+
startRelayDaemon: async () => { await record('relay'); return { started: true, state: 'running', probe: { ok: true } }; },
|
|
57
|
+
runOrganizationCommand: async () => ({ ok: true }),
|
|
58
|
+
requireCompletedBootstrapEvidence: () => undefined,
|
|
59
|
+
summarizeBootstrapOrganizationApi: () => ({ ok: true }),
|
|
60
|
+
};
|
|
61
|
+
return { dependencies, calls };
|
|
62
|
+
}
|
|
63
|
+
function bootstrapFlags(complete = false) {
|
|
64
|
+
const flags = new Map([
|
|
65
|
+
['organization-id', 'org_fixture'], ['grant', 'fixture_grant'], ['workspace', '/fixture-repository'],
|
|
66
|
+
['policy-revision', 'fixture-policy'], ['provider', 'codex'],
|
|
67
|
+
]);
|
|
68
|
+
if (complete)
|
|
69
|
+
flags.set('complete', true);
|
|
70
|
+
return flags;
|
|
71
|
+
}
|
|
72
|
+
test('bootstrap propagates blocked repository onboarding without launcher or completion work', async () => {
|
|
73
|
+
const onboarding = { ok: false, stage: 'repository_source_authorization_required',
|
|
74
|
+
code: 'repository_source_policy_unavailable', sharedRepositoryReady: false };
|
|
75
|
+
const f = bootstrapDependencies(onboarding);
|
|
76
|
+
const actual = await (await caller('bootstrap', f.dependencies))(bootstrapFlags());
|
|
77
|
+
assert.equal(actual.ok, false);
|
|
78
|
+
assert.equal(actual.stage, onboarding.stage);
|
|
79
|
+
assert.equal(actual.sharedRepositoryReady, false);
|
|
80
|
+
assert.equal(f.calls.includes('launcher'), false);
|
|
81
|
+
assert.equal(f.calls.includes('relay'), false);
|
|
82
|
+
});
|
|
83
|
+
test('bootstrap complete cannot report shared completion while its canonical repository package is pending', async () => {
|
|
84
|
+
const onboarding = { ok: true, stage: 'shared_repository_pending', localStage: 'ready', sharedRepositoryReady: false };
|
|
85
|
+
const f = bootstrapDependencies(onboarding);
|
|
86
|
+
const actual = await (await caller('bootstrap', f.dependencies))(bootstrapFlags(true));
|
|
87
|
+
assert.equal(actual.stage, 'shared_repository_pending');
|
|
88
|
+
assert.equal(actual.localStage, 'complete');
|
|
89
|
+
assert.equal(actual.sharedRepositoryReady, false);
|
|
90
|
+
assert.equal(f.calls.includes('launcher'), true);
|
|
91
|
+
assert.equal(f.calls.includes('relay'), true);
|
|
92
|
+
});
|
|
93
|
+
test('repository connect separates attempts and local readiness from shared connections', async () => {
|
|
94
|
+
const pending = { ok: true, stage: 'shared_repository_pending', localStage: 'ready', sharedRepositoryReady: false };
|
|
95
|
+
const blocked = { ok: false, stage: 'repository_source_authorization_required', sharedRepositoryReady: false };
|
|
96
|
+
const actual = await (await caller('repositoriesConnect', {
|
|
97
|
+
realpath: async (path) => path,
|
|
98
|
+
repositoryKeyAssignments: () => new Map(), parseSelectedProviderIds: () => null,
|
|
99
|
+
onboard: async (flags) => flags.get('workspace') === '/repo-a' ? pending : blocked,
|
|
100
|
+
}))(new Map(), ['/repo-a', '/repo-b'], [], [], []);
|
|
101
|
+
assert.equal(actual.ok, false);
|
|
102
|
+
assert.equal(actual.requested, 2);
|
|
103
|
+
assert.equal(actual.attempted, 2);
|
|
104
|
+
assert.equal(actual.locallyReady, 1);
|
|
105
|
+
assert.equal(actual.connected, 0);
|
|
106
|
+
assert.equal(actual.blocked, 1);
|
|
107
|
+
assert.equal(actual.pending, 1);
|
|
108
|
+
});
|
|
109
|
+
test('complete bootstrap stops before local completion work when repository onboarding is blocked', async () => {
|
|
110
|
+
const f = bootstrapDependencies({ ok: false, stage: 'repository_source_authorization_required', sharedRepositoryReady: false });
|
|
111
|
+
const actual = await (await caller('bootstrap', f.dependencies))(bootstrapFlags(true));
|
|
112
|
+
assert.equal(actual.ok, false);
|
|
113
|
+
assert.equal(actual.sharedRepositoryReady, false);
|
|
114
|
+
assert.equal(f.calls.includes('launcher'), false);
|
|
115
|
+
assert.equal(f.calls.includes('relay'), false);
|
|
116
|
+
});
|
|
117
|
+
test('bootstrap preserves device approval as a pending stage without starting completion work', async () => {
|
|
118
|
+
const f = bootstrapDependencies({ ok: true, stage: 'approve_device' });
|
|
119
|
+
const actual = await (await caller('bootstrap', f.dependencies))(bootstrapFlags(true));
|
|
120
|
+
assert.equal(actual.stage, 'approve_device');
|
|
121
|
+
assert.equal(actual.sharedRepositoryReady, false);
|
|
122
|
+
assert.equal(f.calls.includes('launcher'), false);
|
|
123
|
+
assert.equal(f.calls.includes('relay'), false);
|
|
124
|
+
});
|
|
125
|
+
test('bootstrap retains complete behavior for explicitly shared-ready repository onboarding', async () => {
|
|
126
|
+
const f = bootstrapDependencies({ ok: true, stage: 'ready', localStage: 'ready', sharedRepositoryReady: true });
|
|
127
|
+
const actual = await (await caller('bootstrap', f.dependencies))(bootstrapFlags(true));
|
|
128
|
+
assert.equal(actual.stage, 'complete');
|
|
129
|
+
assert.equal(actual.localStage, 'complete');
|
|
130
|
+
assert.equal(actual.sharedRepositoryReady, true);
|
|
131
|
+
assert.equal(f.calls.includes('relay'), true);
|
|
132
|
+
});
|
|
133
|
+
test('legacy local-ready bootstrap cannot imply shared repository readiness', async () => {
|
|
134
|
+
const f = bootstrapDependencies({ ok: true, stage: 'ready' });
|
|
135
|
+
const actual = await (await caller('bootstrap', f.dependencies))(bootstrapFlags());
|
|
136
|
+
assert.equal(actual.stage, 'shared_repository_pending');
|
|
137
|
+
assert.equal(actual.localStage, 'ready');
|
|
138
|
+
assert.equal(actual.sharedRepositoryReady, false);
|
|
139
|
+
assert.equal(f.calls.includes('launcher'), true);
|
|
140
|
+
});
|
|
141
|
+
test('repository connect preserves approval interruption and distinguishes legacy local readiness', async () => {
|
|
142
|
+
const visited = [];
|
|
143
|
+
const actual = await (await caller('repositoriesConnect', {
|
|
144
|
+
realpath: async (path) => path,
|
|
145
|
+
repositoryKeyAssignments: () => new Map(), parseSelectedProviderIds: () => null,
|
|
146
|
+
onboard: async (flags) => {
|
|
147
|
+
const path = String(flags.get('workspace'));
|
|
148
|
+
visited.push(path);
|
|
149
|
+
if (path === '/repo-a')
|
|
150
|
+
return { ok: true, stage: 'ready', sharedRepositoryReady: true };
|
|
151
|
+
if (path === '/repo-b')
|
|
152
|
+
return { ok: true, stage: 'ready' };
|
|
153
|
+
return { ok: true, stage: 'approve_device' };
|
|
154
|
+
},
|
|
155
|
+
}))(new Map(), ['/repo-a', '/repo-b', '/repo-c', '/repo-d'], [], [], []);
|
|
156
|
+
assert.equal(actual.requested, 4);
|
|
157
|
+
assert.equal(actual.attempted, 3);
|
|
158
|
+
assert.equal(actual.connected, 1);
|
|
159
|
+
assert.equal(actual.locallyReady, 2);
|
|
160
|
+
assert.equal(actual.pending, 2);
|
|
161
|
+
assert.equal(actual.blocked, 0);
|
|
162
|
+
assert.equal(actual.sharedRepositoryReady, false);
|
|
163
|
+
assert.deepEqual(visited, ['/repo-a', '/repo-b', '/repo-c']);
|
|
164
|
+
});
|
|
165
|
+
test('repository connect reports shared readiness only when every requested repository is shared-ready', async () => {
|
|
166
|
+
const actual = await (await caller('repositoriesConnect', {
|
|
167
|
+
realpath: async (path) => path,
|
|
168
|
+
repositoryKeyAssignments: () => new Map(), parseSelectedProviderIds: () => null,
|
|
169
|
+
onboard: async () => ({ ok: true, stage: 'ready', sharedRepositoryReady: true }),
|
|
170
|
+
}))(new Map(), ['/repo-a', '/repo-b'], [], [], []);
|
|
171
|
+
assert.equal(actual.ok, true);
|
|
172
|
+
assert.equal(actual.connected, 2);
|
|
173
|
+
assert.equal(actual.attempted, 2);
|
|
174
|
+
assert.equal(actual.pending, 0);
|
|
175
|
+
assert.equal(actual.blocked, 0);
|
|
176
|
+
assert.equal(actual.sharedRepositoryReady, true);
|
|
177
|
+
});
|
|
178
|
+
test('truthy non-boolean onboarding readiness cannot imply shared readiness', async () => {
|
|
179
|
+
const f = bootstrapDependencies({ ok: true, stage: 'ready', sharedRepositoryReady: 'true' });
|
|
180
|
+
const actual = await (await caller('bootstrap', f.dependencies))(bootstrapFlags(true));
|
|
181
|
+
assert.equal(actual.stage, 'shared_repository_pending');
|
|
182
|
+
assert.equal(actual.sharedRepositoryReady, false);
|
|
183
|
+
});
|
|
184
|
+
test('repository connect deduplicates canonical paths before counting attempts and shared readiness', async () => {
|
|
185
|
+
let calls = 0;
|
|
186
|
+
const actual = await (await caller('repositoriesConnect', {
|
|
187
|
+
realpath: async () => '/same-repository',
|
|
188
|
+
repositoryKeyAssignments: () => new Map(), parseSelectedProviderIds: () => null,
|
|
189
|
+
onboard: async () => { calls += 1; return { ok: true, stage: 'ready', sharedRepositoryReady: true }; },
|
|
190
|
+
}))(new Map(), ['/alias-a', '/alias-b'], ['/alias-c'], [], []);
|
|
191
|
+
assert.equal(actual.requested, 1);
|
|
192
|
+
assert.equal(actual.attempted, 1);
|
|
193
|
+
assert.equal(actual.connected, 1);
|
|
194
|
+
assert.equal(actual.sharedRepositoryReady, true);
|
|
195
|
+
assert.equal(calls, 1);
|
|
196
|
+
});
|
|
197
|
+
//# sourceMappingURL=repositoryOnboardingCaller.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repositoryOnboardingCaller.test.js","sourceRoot":"","sources":["../src/repositoryOnboardingCaller.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repositoryOnboardingFlow.test.d.ts","sourceRoot":"","sources":["../src/repositoryOnboardingFlow.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import test from 'node:test';
|
|
4
|
+
import { canonicalEndpointRole, canonicalRepositoryPackage } from './index.js';
|
|
5
|
+
const ids = {
|
|
6
|
+
candidateId: '77f61652-a5eb-46e4-930c-9478cd4a9c31',
|
|
7
|
+
releaseId: '87f61652-a5eb-46e4-930c-9478cd4a9c31',
|
|
8
|
+
};
|
|
9
|
+
test('repository connect package state distinguishes unseen and published canonical repositories', () => {
|
|
10
|
+
assert.deepEqual(canonicalRepositoryPackage({ state: 'absent', candidateId: null, operationId: null,
|
|
11
|
+
snapshotHash: null, sourceManifestHash: null, releaseId: null, generation: 0, consolidationMode: null }), {
|
|
12
|
+
state: 'absent', candidateId: null, operationId: null, snapshotHash: null, sourceManifestHash: null,
|
|
13
|
+
releaseId: null, generation: 0, consolidationMode: null,
|
|
14
|
+
});
|
|
15
|
+
const published = { state: 'published', candidateId: ids.candidateId, operationId: `sha256:${'a'.repeat(64)}`,
|
|
16
|
+
snapshotHash: `sha256:${'b'.repeat(64)}`, sourceManifestHash: `sha256:${'c'.repeat(64)}`,
|
|
17
|
+
releaseId: ids.releaseId, generation: 4, consolidationMode: 'initial_repository' };
|
|
18
|
+
assert.deepEqual(canonicalRepositoryPackage(published), published);
|
|
19
|
+
assert.throws(() => canonicalRepositoryPackage({ ...published, releaseId: null }), /inconsistent/);
|
|
20
|
+
});
|
|
21
|
+
test('repository connect endpoint role state is exact and revisioned', () => {
|
|
22
|
+
assert.equal(canonicalEndpointRole(null), null);
|
|
23
|
+
assert.deepEqual(canonicalEndpointRole({ revision: 2, profileHash: `sha256:${'d'.repeat(64)}` }), { revision: 2, profileHash: `sha256:${'d'.repeat(64)}` });
|
|
24
|
+
assert.throws(() => canonicalEndpointRole({ revision: 0, profileHash: `sha256:${'d'.repeat(64)}` }), /invalid/);
|
|
25
|
+
});
|
|
26
|
+
test('one prompt submits initial knowledge only for an absent package and derives a role without flags', async () => {
|
|
27
|
+
const source = await readFile(new URL('../src/index.ts', import.meta.url), 'utf8');
|
|
28
|
+
const onboard = source.slice(source.indexOf('async function onboard('), source.indexOf('async function evidenceSync('));
|
|
29
|
+
assert.match(onboard, /canonicalPackage\.state === 'absent'/);
|
|
30
|
+
assert.match(onboard, /snapshot: initialSnapshot, initialRepository: true/);
|
|
31
|
+
assert.match(onboard, /: await adoptRepositoryCandidate\(/);
|
|
32
|
+
assert.match(onboard, /const derivedRole = deriveRepositoryRole\(/);
|
|
33
|
+
assert.match(onboard, /const roleInput = roleRequested \?/);
|
|
34
|
+
assert.match(onboard, /await registerRepositoryRoleMetadata\(/);
|
|
35
|
+
assert.ok(onboard.indexOf('await evidencePreview(') < onboard.indexOf('await synchronizeRepositoryCandidate('));
|
|
36
|
+
assert.ok(onboard.indexOf('await capture(onboardingEvidenceFlags, true)') < onboard.indexOf('await synchronizeRepositoryCandidate('));
|
|
37
|
+
assert.ok(onboard.indexOf('await synchronizeRepositoryCandidate(') < onboard.indexOf('await startRelayDaemon('));
|
|
38
|
+
});
|
|
39
|
+
test('relay polls candidate state independently and activates only after an idle task boundary', async () => {
|
|
40
|
+
const source = await readFile(new URL('../src/index.ts', import.meta.url), 'utf8');
|
|
41
|
+
const relay = source.slice(source.indexOf('async function relayStart('), source.indexOf('export async function run('));
|
|
42
|
+
assert.match(relay, /await pollRepositoryCandidate\(/);
|
|
43
|
+
assert.ok(relay.indexOf('await pollRepositoryCandidate(') < relay.indexOf('scanRepositorySourceChanges('));
|
|
44
|
+
assert.ok(relay.indexOf('const result = await executeOneTask(') < relay.indexOf('await takeCachedSkillUpdate('));
|
|
45
|
+
assert.match(relay, /if \(!result\.taskId && performance\.now\(\) >= nextSkillActivationAt\)/);
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=repositoryOnboardingFlow.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repositoryOnboardingFlow.test.js","sourceRoot":"","sources":["../src/repositoryOnboardingFlow.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { type RepositoryKnowledgeRetentionReference } from './repositoryKnowledge.js';
|
|
2
|
+
import { type RepositorySourceAuthorization } from './repositorySourceAuthorization.js';
|
|
3
|
+
export declare const REPOSITORY_SKILL_ROOTS: readonly [".agents/skills", ".claude/skills", ".codex/skills", "skills"];
|
|
4
|
+
declare const DEFAULT_LIMITS: {
|
|
5
|
+
maximumEntries: number;
|
|
6
|
+
maximumFiles: number;
|
|
7
|
+
maximumFileBytes: number;
|
|
8
|
+
maximumTotalBytes: number;
|
|
9
|
+
maximumDepth: number;
|
|
10
|
+
maximumDependencies: number;
|
|
11
|
+
};
|
|
12
|
+
export type RepositoryPackageLimits = typeof DEFAULT_LIMITS;
|
|
13
|
+
export interface RepositoryPackageObservation {
|
|
14
|
+
skillPath: string;
|
|
15
|
+
skillHash: string;
|
|
16
|
+
sourcePath: string;
|
|
17
|
+
sourceHash: string;
|
|
18
|
+
}
|
|
19
|
+
export interface RepositoryPackageFile {
|
|
20
|
+
path: string;
|
|
21
|
+
managedPath?: string;
|
|
22
|
+
sha256: string;
|
|
23
|
+
sizeBytes: number;
|
|
24
|
+
role: 'skill' | 'dependency' | 'approved_output' | 'repository_content' | 'knowledge';
|
|
25
|
+
}
|
|
26
|
+
export interface RepositoryPackageManifest {
|
|
27
|
+
schema: 'dharma.repository-package/v1' | 'dharma.repository-package/v2' | 'dharma.repository-package/v3';
|
|
28
|
+
sourceAuthorization?: RepositorySourceAuthorization;
|
|
29
|
+
sourceFingerprint?: string;
|
|
30
|
+
organizationId: string;
|
|
31
|
+
workspaceId: string;
|
|
32
|
+
snapshotId: string;
|
|
33
|
+
snapshotHash: string;
|
|
34
|
+
authority: 'local_inventory_not_signed';
|
|
35
|
+
roots: string[];
|
|
36
|
+
files: RepositoryPackageFile[];
|
|
37
|
+
skills: Array<{
|
|
38
|
+
path: string;
|
|
39
|
+
managedPath?: string;
|
|
40
|
+
providerRoot: string;
|
|
41
|
+
entryPath: string;
|
|
42
|
+
contentHash: string;
|
|
43
|
+
availability: 'available' | 'partial' | 'unavailable';
|
|
44
|
+
filePaths: string[];
|
|
45
|
+
observation: {
|
|
46
|
+
state: 'not_observed' | 'reported_observed';
|
|
47
|
+
authority: 'caller_supplied_not_runtime_verified';
|
|
48
|
+
references: RepositoryPackageObservation[];
|
|
49
|
+
};
|
|
50
|
+
}>;
|
|
51
|
+
exclusions: Array<{
|
|
52
|
+
path: string;
|
|
53
|
+
reason: string;
|
|
54
|
+
}>;
|
|
55
|
+
knowledge?: {
|
|
56
|
+
repositoryAgentId: string;
|
|
57
|
+
knowledgeBaseId: string;
|
|
58
|
+
catalogPath: string;
|
|
59
|
+
catalogHash: string;
|
|
60
|
+
authority: 'locally_initialized_unsigned';
|
|
61
|
+
atlasAssociation: 'local_scope_only';
|
|
62
|
+
} | {
|
|
63
|
+
repositoryAgentId: string;
|
|
64
|
+
knowledgeBaseId: string;
|
|
65
|
+
catalogPath: string;
|
|
66
|
+
catalogHash: string;
|
|
67
|
+
authority: 'unverified_prior_release_reference';
|
|
68
|
+
atlasAssociation: 'requires_verified_release';
|
|
69
|
+
priorRelease: RepositoryKnowledgeRetentionReference;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export interface RepositoryPackageSnapshot {
|
|
73
|
+
schema: 'dharma.repository-package-snapshot/v1';
|
|
74
|
+
capturedAt: string;
|
|
75
|
+
manifest: RepositoryPackageManifest;
|
|
76
|
+
blobs: Array<{
|
|
77
|
+
sha256: string;
|
|
78
|
+
contentBase64: string;
|
|
79
|
+
}>;
|
|
80
|
+
}
|
|
81
|
+
export interface RepositoryPackageInventoryInput {
|
|
82
|
+
workspace: string;
|
|
83
|
+
organizationId: string;
|
|
84
|
+
workspaceId: string;
|
|
85
|
+
repositoryAgentId?: string | null;
|
|
86
|
+
repositoryBindingId?: string | null;
|
|
87
|
+
sourceAuthorization?: unknown;
|
|
88
|
+
approvedOutputs?: string[];
|
|
89
|
+
observations?: RepositoryPackageObservation[];
|
|
90
|
+
limits?: Partial<RepositoryPackageLimits>;
|
|
91
|
+
now?: Date;
|
|
92
|
+
retainedKnowledge?: {
|
|
93
|
+
catalogBytes: Buffer;
|
|
94
|
+
manifestBytes: Buffer;
|
|
95
|
+
} | null;
|
|
96
|
+
}
|
|
97
|
+
export declare function inventoryRepositoryPackage(input: RepositoryPackageInventoryInput): Promise<RepositoryPackageSnapshot>;
|
|
98
|
+
export declare function serializeRepositoryPackageSnapshot(snapshot: RepositoryPackageSnapshot): string;
|
|
99
|
+
export type RepositoryPackageCopyCheckpoint = 'journal_prepared' | 'file_backed_up' | 'file_installed' | 'copies_index_written' | 'manifest_written' | 'cleanup_file_removed';
|
|
100
|
+
export interface RepositoryPackageWriteInput {
|
|
101
|
+
workspace: string;
|
|
102
|
+
snapshot: RepositoryPackageSnapshot;
|
|
103
|
+
candidateOnly?: boolean;
|
|
104
|
+
onCopyCheckpoint?: (point: RepositoryPackageCopyCheckpoint) => void | Promise<void>;
|
|
105
|
+
}
|
|
106
|
+
export declare function writeRepositoryPackageSnapshot(input: RepositoryPackageWriteInput): Promise<{
|
|
107
|
+
manifestPath: string;
|
|
108
|
+
snapshotPath: string;
|
|
109
|
+
snapshotHash: string;
|
|
110
|
+
managedCopiesPath: string | null;
|
|
111
|
+
disposition: "candidate_only" | "local_bootstrap_inventory";
|
|
112
|
+
authority: "local_inventory_not_signed";
|
|
113
|
+
}>;
|
|
114
|
+
export {};
|
|
115
|
+
//# sourceMappingURL=repositoryPackage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repositoryPackage.d.ts","sourceRoot":"","sources":["../src/repositoryPackage.ts"],"names":[],"mappings":"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"}
|