@dharma-ai-labs/agent-fabric 0.2.49 → 0.2.51
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 +88 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +840 -175
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +2 -2
- 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 +216 -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,156 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { generateKeyPairSync, createHash } from 'node:crypto';
|
|
3
|
+
import { mkdtemp, mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { tmpdir } from 'node:os';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import test from 'node:test';
|
|
7
|
+
import { signCanonicalObject } from '@dharma-ai-labs/agent-fabric-contracts';
|
|
8
|
+
import { applyServerEvidencePolicy, loadSkillSynchronizationPolicy, materializeWorkspacePolicy, run } from './index.js';
|
|
9
|
+
import { saveDeviceEnrollmentAnchor } from '@dharma-ai-labs/agent-fabric-relay-client';
|
|
10
|
+
async function fixture() {
|
|
11
|
+
const home = await mkdtemp(join(tmpdir(), 'af-skill-policy-'));
|
|
12
|
+
const workspace = join(home, 'work');
|
|
13
|
+
await mkdir(workspace);
|
|
14
|
+
const generated = await materializeWorkspacePolicy({ workspace, organizationId: 'org_test', revision: 'policy-test' });
|
|
15
|
+
const keys = generateKeyPairSync('ed25519');
|
|
16
|
+
const publicKey = keys.publicKey.export({ format: 'jwk' }).x;
|
|
17
|
+
const unsigned = {
|
|
18
|
+
schema: 'dharma.workspace-policy-authorization/v1', organizationId: 'org_test', workspaceId: 'workspace-test',
|
|
19
|
+
policy: { revision: 'policy-test', evidence: generated.policy.evidence },
|
|
20
|
+
issuedAt: new Date(Date.now() - 60_000).toISOString(), expiresAt: new Date(Date.now() + 3_600_000).toISOString(), keyVersion: 'test',
|
|
21
|
+
};
|
|
22
|
+
const authorization = { ...unsigned, signature: signCanonicalObject(unsigned, keys.privateKey) };
|
|
23
|
+
const signedPolicy = applyServerEvidencePolicy(generated.policy, authorization, publicKey, 'org_test', 'workspace-test');
|
|
24
|
+
const policyPath = join(workspace, '.dharma', 'approved-policy.json');
|
|
25
|
+
await mkdir(join(home, 'registry', 'workspace-authorizations'), { recursive: true });
|
|
26
|
+
await writeFile(join(home, 'registry', 'workspaces.json'), JSON.stringify([{
|
|
27
|
+
workspaceId: 'workspace-test', organizationId: 'org_test', name: 'Test', path: workspace, status: 'active',
|
|
28
|
+
routeHash: 'a'.repeat(64), repositoryRemoteHash: 'b'.repeat(64), repositoryAgentId: '11111111-1111-4111-8111-111111111111',
|
|
29
|
+
}]));
|
|
30
|
+
await writeFile(join(home, 'device.json'), JSON.stringify({
|
|
31
|
+
schema: 'dharma.device-config/v1', organizationId: 'org_test', deviceId: '22222222-2222-4222-8222-222222222222',
|
|
32
|
+
hqUrl: 'https://example.invalid', relayUrl: 'wss://example.invalid', serverPublicKeyEd25519: publicKey,
|
|
33
|
+
publicKeyEd25519: publicKey, enrolledAt: new Date().toISOString(),
|
|
34
|
+
}));
|
|
35
|
+
const statePath = join(home, 'registry', 'workspace-authorizations', 'workspace-test.json');
|
|
36
|
+
await writeFile(statePath, JSON.stringify({ issuedAt: authorization.issuedAt, signature: authorization.signature }));
|
|
37
|
+
await writeFile(policyPath, JSON.stringify(signedPolicy));
|
|
38
|
+
return { home, workspace, generated, keys, unsigned, authorization, signedPolicy, policyPath, statePath };
|
|
39
|
+
}
|
|
40
|
+
const cases = [
|
|
41
|
+
{ name: 'noncanonical policy path', expected: /Skill synchronization requires the canonical registered workspace policy path/, mutate: async (f) => {
|
|
42
|
+
const other = join(f.home, 'other-policy.json');
|
|
43
|
+
await writeFile(other, JSON.stringify(f.signedPolicy));
|
|
44
|
+
return other;
|
|
45
|
+
} },
|
|
46
|
+
{ name: 'unsigned local policy', expected: /Server workspace policy authorization is required/, mutate: async (f) => {
|
|
47
|
+
await writeFile(f.policyPath, JSON.stringify(f.generated.policy));
|
|
48
|
+
} },
|
|
49
|
+
{ name: 'tampered signature', expected: /signature is invalid/, mutate: async (f) => {
|
|
50
|
+
await writeFile(f.policyPath, JSON.stringify({ ...f.signedPolicy, serverAuthorization: { ...f.authorization, signature: 'tampered' } }));
|
|
51
|
+
} },
|
|
52
|
+
{ name: 'expired signed authorization', expected: /invalid or expired/, mutate: async (f) => {
|
|
53
|
+
const expired = { ...f.unsigned, issuedAt: new Date(Date.now() - 120_000).toISOString(), expiresAt: new Date(Date.now() - 60_000).toISOString() };
|
|
54
|
+
await writeFile(f.policyPath, JSON.stringify({ ...f.signedPolicy, serverAuthorization: { ...expired, signature: signCanonicalObject(expired, f.keys.privateKey) } }));
|
|
55
|
+
} },
|
|
56
|
+
{ name: 'foreign enrolled organization', expected: /Skill policy does not match the enrolled organization and workspace/, mutate: async (f) => {
|
|
57
|
+
const config = JSON.parse(await readFile(join(f.home, 'device.json'), 'utf8'));
|
|
58
|
+
await writeFile(join(f.home, 'device.json'), JSON.stringify({ ...config, organizationId: 'org_foreign' }));
|
|
59
|
+
} },
|
|
60
|
+
{ name: 'foreign signed workspace', expected: /invalid or expired/, mutate: async (f) => {
|
|
61
|
+
const foreign = { ...f.unsigned, workspaceId: 'workspace-foreign' };
|
|
62
|
+
await writeFile(f.policyPath, JSON.stringify({ ...f.signedPolicy, serverAuthorization: { ...foreign, signature: signCanonicalObject(foreign, f.keys.privateKey) } }));
|
|
63
|
+
} },
|
|
64
|
+
{ name: 'replayed older authorization', expected: /older than the last accepted authorization/, mutate: async (f) => {
|
|
65
|
+
await writeFile(f.statePath, JSON.stringify({ issuedAt: new Date(Date.now() - 30_000).toISOString(), signature: 'newer-accepted' }));
|
|
66
|
+
} },
|
|
67
|
+
...[null, false, 0].map(value => ({ name: `invalid replay state ${JSON.stringify(value)}`,
|
|
68
|
+
expected: /Workspace authorization replay state is missing or invalid/,
|
|
69
|
+
mutate: async (f) => { await writeFile(f.statePath, JSON.stringify(value)); } })),
|
|
70
|
+
];
|
|
71
|
+
for (const scenario of cases)
|
|
72
|
+
test(`actual skill sync rejects ${scenario.name} before transport or installation`, async () => {
|
|
73
|
+
const f = await fixture();
|
|
74
|
+
const path = await scenario.mutate(f) || f.policyPath;
|
|
75
|
+
const previousHome = process.env.DHARMA_HOME, previousFetch = globalThis.fetch;
|
|
76
|
+
const before = await readFile(f.policyPath), stateBefore = await readFile(f.statePath);
|
|
77
|
+
let networkCalls = 0;
|
|
78
|
+
process.env.DHARMA_HOME = f.home;
|
|
79
|
+
globalThis.fetch = async () => { networkCalls += 1; throw new Error('unexpected_skill_network'); };
|
|
80
|
+
try {
|
|
81
|
+
await assert.rejects(() => run(['skills', 'sync', '--workspace-id', 'workspace-test', '--provider', 'codex', '--policy', path]), scenario.expected);
|
|
82
|
+
assert.equal(networkCalls, 0);
|
|
83
|
+
assert.deepEqual(await readFile(f.policyPath), before);
|
|
84
|
+
assert.deepEqual(await readFile(f.statePath), stateBefore);
|
|
85
|
+
assert.equal(createHash('sha256').update(before).digest('hex').length, 64);
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
globalThis.fetch = previousFetch;
|
|
89
|
+
if (previousHome === undefined)
|
|
90
|
+
delete process.env.DHARMA_HOME;
|
|
91
|
+
else
|
|
92
|
+
process.env.DHARMA_HOME = previousHome;
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
test('skill policy loader rejects authorization expiring during the secure enrollment read', async () => {
|
|
96
|
+
const f = await fixture(), previousHome = process.env.DHARMA_HOME, OriginalDate = Date;
|
|
97
|
+
const values = new Map();
|
|
98
|
+
let clock = OriginalDate.now(), advanceOnRead = false;
|
|
99
|
+
class FixtureDate extends OriginalDate {
|
|
100
|
+
constructor(value) { super(value === undefined ? clock : value); }
|
|
101
|
+
static now() { return clock; }
|
|
102
|
+
}
|
|
103
|
+
const store = { backend: 'linux-secret-service',
|
|
104
|
+
get: async (account) => { if (advanceOnRead)
|
|
105
|
+
clock += 3_600_001; return values.get(account) ?? null; },
|
|
106
|
+
put: async (account, value) => { values.set(account, value); },
|
|
107
|
+
delete: async (account) => { values.delete(account); } };
|
|
108
|
+
process.env.DHARMA_HOME = f.home;
|
|
109
|
+
try {
|
|
110
|
+
const config = JSON.parse(await readFile(join(f.home, 'device.json'), 'utf8'));
|
|
111
|
+
await saveDeviceEnrollmentAnchor({ config, store });
|
|
112
|
+
globalThis.Date = FixtureDate;
|
|
113
|
+
advanceOnRead = true;
|
|
114
|
+
await assert.rejects(() => loadSkillSynchronizationPolicy(f.policyPath, 'workspace-test', store), /invalid or expired/);
|
|
115
|
+
}
|
|
116
|
+
finally {
|
|
117
|
+
globalThis.Date = OriginalDate;
|
|
118
|
+
if (previousHome === undefined)
|
|
119
|
+
delete process.env.DHARMA_HOME;
|
|
120
|
+
else
|
|
121
|
+
process.env.DHARMA_HOME = previousHome;
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
test('skill policy loader accepts anchored signed scope without discarding local skill or command controls', async () => {
|
|
125
|
+
const f = await fixture(), previousHome = process.env.DHARMA_HOME;
|
|
126
|
+
const values = new Map();
|
|
127
|
+
const store = { backend: 'linux-secret-service',
|
|
128
|
+
get: async (account) => values.get(account) ?? null,
|
|
129
|
+
put: async (account, value) => { values.set(account, value); },
|
|
130
|
+
delete: async (account) => { values.delete(account); } };
|
|
131
|
+
process.env.DHARMA_HOME = f.home;
|
|
132
|
+
try {
|
|
133
|
+
const config = JSON.parse(await readFile(join(f.home, 'device.json'), 'utf8'));
|
|
134
|
+
await saveDeviceEnrollmentAnchor({ config, store });
|
|
135
|
+
f.signedPolicy.skills.automaticInstall = false;
|
|
136
|
+
f.signedPolicy.tasks.allowedCommands['approved.smoke'] = { argv: ['node', '--version'], timeoutSeconds: 10 };
|
|
137
|
+
await writeFile(f.policyPath, JSON.stringify(f.signedPolicy));
|
|
138
|
+
const loaded = await loadSkillSynchronizationPolicy(f.policyPath, 'workspace-test', store);
|
|
139
|
+
assert.equal(loaded.policy.skills.automaticInstall, false);
|
|
140
|
+
assert.deepEqual(loaded.policy.tasks.allowedCommands['approved.smoke']?.argv, ['node', '--version']);
|
|
141
|
+
assert.equal(loaded.enrollment.organizationId, 'org_test');
|
|
142
|
+
const oldState = await readFile(f.statePath);
|
|
143
|
+
const again = await loadSkillSynchronizationPolicy(f.policyPath, 'workspace-test', store);
|
|
144
|
+
assert.deepEqual(again.policy, loaded.policy);
|
|
145
|
+
assert.deepEqual(await readFile(f.statePath), oldState);
|
|
146
|
+
await writeFile(join(f.home, 'device.json'), JSON.stringify({ ...config, enrolledAt: new Date(Date.now() - 60_000).toISOString() }));
|
|
147
|
+
await assert.rejects(() => loadSkillSynchronizationPolicy(f.policyPath, 'workspace-test', store), /secure enrollment anchor/);
|
|
148
|
+
}
|
|
149
|
+
finally {
|
|
150
|
+
if (previousHome === undefined)
|
|
151
|
+
delete process.env.DHARMA_HOME;
|
|
152
|
+
else
|
|
153
|
+
process.env.DHARMA_HOME = previousHome;
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
//# sourceMappingURL=skillSyncPolicy.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillSyncPolicy.test.js","sourceRoot":"","sources":["../src/skillSyncPolicy.test.ts"],"names":[],"mappings":"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"}
|
package/dist/usage.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CLI_USAGE = "Usage: dharma <bootstrap|onboard|login|status|providers list|repositories discover|repositories connect|repositories list|repositories status|workspace add|workspace sync|evidence preview|evidence capture|evidence capture-batch|evidence sync|evidence run-request|relay probe|relay start|assistant chat|assistant history|assistant status|assistant approve|assistant reject|organization status|agents list|agents bind-runtime|evaluations validate|evaluations launch|evaluations status|evaluations results|experiments list|experiments run|failures list|remediations list|remediations act|tasks list|tasks dispatch|handoffs list|handoffs dispatch|skills list|skills release|skills rollout|skills rollback|skills sync|skills status|skills verify|usage list> [options]";
|
|
1
|
+
export declare const CLI_USAGE = "Usage: dharma <bootstrap|onboard|login|status|providers list|repositories discover|repositories connect|repositories list|repositories status|repositories snapshot|repositories role-register|repositories role-discover|repositories ask|repositories reply|workspace add|workspace sync|evidence preview|evidence capture|evidence capture-batch|evidence sync|evidence run-request|relay probe|relay start|assistant chat|assistant history|assistant status|assistant approve|assistant reject|organization status|agents list|agents bind-runtime|evaluations validate|evaluations launch|evaluations status|evaluations results|experiments list|experiments run|failures list|remediations list|remediations act|tasks list|tasks dispatch|handoffs list|handoffs dispatch|skills list|skills release|skills rollout|skills rollback|skills sync|skills status|skills verify|usage list> [options]";
|
|
2
2
|
//# sourceMappingURL=usage.d.ts.map
|
package/dist/usage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,+
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,+2BAA+2B,CAAC"}
|
package/dist/usage.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const CLI_USAGE = 'Usage: dharma <bootstrap|onboard|login|status|providers list|repositories discover|repositories connect|repositories list|repositories status|workspace add|workspace sync|evidence preview|evidence capture|evidence capture-batch|evidence sync|evidence run-request|relay probe|relay start|assistant chat|assistant history|assistant status|assistant approve|assistant reject|organization status|agents list|agents bind-runtime|evaluations validate|evaluations launch|evaluations status|evaluations results|experiments list|experiments run|failures list|remediations list|remediations act|tasks list|tasks dispatch|handoffs list|handoffs dispatch|skills list|skills release|skills rollout|skills rollback|skills sync|skills status|skills verify|usage list> [options]';
|
|
1
|
+
export const CLI_USAGE = 'Usage: dharma <bootstrap|onboard|login|status|providers list|repositories discover|repositories connect|repositories list|repositories status|repositories snapshot|repositories role-register|repositories role-discover|repositories ask|repositories reply|workspace add|workspace sync|evidence preview|evidence capture|evidence capture-batch|evidence sync|evidence run-request|relay probe|relay start|assistant chat|assistant history|assistant status|assistant approve|assistant reject|organization status|agents list|agents bind-runtime|evaluations validate|evaluations launch|evaluations status|evaluations results|experiments list|experiments run|failures list|remediations list|remediations act|tasks list|tasks dispatch|handoffs list|handoffs dispatch|skills list|skills release|skills rollout|skills rollback|skills sync|skills status|skills verify|usage list> [options]';
|
|
2
2
|
//# sourceMappingURL=usage.js.map
|
package/dist/usage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,42BAA42B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"windowsProcessPortability.test.d.ts","sourceRoot":"","sources":["../src/windowsProcessPortability.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import test from 'node:test';
|
|
4
|
+
test('Windows paths never require process.getuid before the platform guard', async () => {
|
|
5
|
+
const implementation = await readFile(new URL('../src/skillPreparationTransaction.ts', import.meta.url), 'utf8');
|
|
6
|
+
const privatePath = implementation.slice(implementation.indexOf('export async function assertPrivatePath('), implementation.indexOf('async function preflightAncestors('));
|
|
7
|
+
assert.ok(privatePath.indexOf("process.platform !== 'win32'") < privatePath.indexOf('process.getuid'));
|
|
8
|
+
const fixture = await readFile(new URL('../src/skillPreparation.test.ts', import.meta.url), 'utf8');
|
|
9
|
+
const getuid = fixture.indexOf('const getuid = process.getuid');
|
|
10
|
+
assert.ok(getuid > fixture.lastIndexOf("process.platform !== 'win32'", getuid));
|
|
11
|
+
if (process.platform === 'win32')
|
|
12
|
+
assert.equal(process.getuid, undefined);
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=windowsProcessPortability.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"windowsProcessPortability.test.js","sourceRoot":"","sources":["../src/windowsProcessPortability.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,IAAI,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;IACtF,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAC,uCAAuC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACjH,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,0CAA0C,CAAC,EACzG,cAAc,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,CAAC;IAChE,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,8BAA8B,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACvG,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAC,iCAAiC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACpG,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAChE,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC,CAAC;IAChF,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC5E,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dharma-ai-labs/agent-fabric",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.51",
|
|
4
4
|
"description": "Local-first CLI for connecting coding agents to Dharma evaluation, orchestration, and signed Skill delivery",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/dharma-ai-labs/dharma-agent-fabric/tree/main/packages/cli#readme",
|
|
@@ -38,9 +38,12 @@
|
|
|
38
38
|
"@dharma-ai-labs/agent-fabric-local-vault": "0.1.15",
|
|
39
39
|
"@dharma-ai-labs/agent-fabric-policy": "0.1.4",
|
|
40
40
|
"@dharma-ai-labs/agent-fabric-provider-adapters": "0.1.16",
|
|
41
|
-
"@dharma-ai-labs/agent-fabric-relay-client": "0.2.
|
|
41
|
+
"@dharma-ai-labs/agent-fabric-relay-client": "0.2.19",
|
|
42
42
|
"@dharma-ai-labs/agent-fabric-sdk": "0.1.10",
|
|
43
|
-
"@dharma-ai-labs/agent-fabric-skill-manager": "0.2.
|
|
44
|
-
"@dharma-ai-labs/agent-fabric-task-runner": "0.1.17"
|
|
43
|
+
"@dharma-ai-labs/agent-fabric-skill-manager": "0.2.9",
|
|
44
|
+
"@dharma-ai-labs/agent-fabric-task-runner": "0.1.17",
|
|
45
|
+
"ajv": "8.20.0",
|
|
46
|
+
"ajv-formats": "3.0.1",
|
|
47
|
+
"fs-native-extensions": "1.5.1"
|
|
45
48
|
}
|
|
46
49
|
}
|