@dharma-ai-labs/agent-fabric-skill-manager 0.1.2 → 0.2.0

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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import assert from 'node:assert/strict';
2
2
  import { test } from 'node:test';
3
3
  import { generateKeyPairSync, randomUUID } from 'node:crypto';
4
- import { mkdir, mkdtemp, readFile, writeFile } from 'node:fs/promises';
4
+ import { cp, mkdir, mkdtemp, readFile, readdir, rename, rm, writeFile } from 'node:fs/promises';
5
5
  import { tmpdir } from 'node:os';
6
6
  import { resolve } from 'node:path';
7
7
  import { signCanonicalObject } from '@dharma-ai-labs/agent-fabric-contracts';
8
- import { calculateBundleHash, contentHash, installSkillBundle } from './index.js';
8
+ import { calculateBundleHash, contentHash, getActiveSkillBundleAuthorization, getExpiredSkillBundleAuthorizationForReplacement, getInstalledSkillBundleIdForRecovery, getLegacySkillBundleIdForUpgrade, installSkillBundle, rollbackUnconfirmedSkillBundle, verifySkillBundle } from './index.js';
9
+ const organizationAgentId = '11111111-1111-4111-8111-111111111111';
9
10
  const policy = {
10
11
  schema: 'dharma.organization-policy/v1', organizationId: 'org_test', revision: '1',
11
12
  evidence: { defaultMode: 'deep', registeredWorkspaceOnly: true, excludePaths: [], maximumCapsuleBytes: 1, maximumDailyUploadBytes: 1, maximumExpansionBytes: 1 },
@@ -14,20 +15,121 @@ const policy = {
14
15
  allowedCommands: {
15
16
  smokePass: { argv: [process.execPath, '-e', 'process.exit(0)'], timeoutSeconds: 5 },
16
17
  smokeFail: { argv: [process.execPath, '-e', 'process.exit(9)'], timeoutSeconds: 5 },
18
+ smokeSlow: { argv: [process.execPath, '-e', 'setTimeout(() => process.exit(0), 700)'], timeoutSeconds: 5 },
17
19
  },
18
20
  },
19
21
  skills: { automaticInstall: true, automaticPromotionMaxRisk: 'R2', canaryPercent: 10 }, retention: {}, budgets: {},
20
22
  };
21
- async function signedBundle(source, bundleId, privateKey) {
22
- const skill = { skillId: 'dharma-boundary', version: '1.0.0', repository: 'https://github.com/customer/agent-control.git', commit: 'abc123', contentHash: await contentHash(source), path: 'skill' };
23
+ test('legacy v1 bundle can identify itself only for a signed-server upgrade poll', async () => {
24
+ const native = await mkdtemp(resolve(tmpdir(), 'fabric-legacy-skill-'));
25
+ const workspaceId = 'workspace-legacy';
26
+ const bundleId = randomUUID();
27
+ const managed = resolve(native, '.dharma-managed', 'workspaces', workspaceId);
28
+ const active = resolve(managed, 'active');
29
+ await mkdir(active, { recursive: true });
30
+ await writeFile(resolve(managed, 'ACTIVE_BUNDLE'), `${bundleId}\n`);
31
+ await writeFile(resolve(active, 'BUNDLE.json'), JSON.stringify({ schema: 'dharma.skill-bundle/v1', bundleId }));
32
+ await writeFile(resolve(active, 'AUTHORIZATION.json'), JSON.stringify({ schema: 'dharma.skill-bundle/v1', bundleId }));
33
+ assert.equal(await getLegacySkillBundleIdForUpgrade({ nativeSkillDirectory: native, workspaceId }), bundleId);
34
+ await writeFile(resolve(active, 'AUTHORIZATION.json'), JSON.stringify({ schema: 'dharma.skill-bundle/v2', bundleId }));
35
+ assert.equal(await getLegacySkillBundleIdForUpgrade({ nativeSkillDirectory: native, workspaceId }), null);
36
+ });
37
+ test('legacy v1 installation without authorization metadata remains upgradeable', async () => {
38
+ const native = await mkdtemp(resolve(tmpdir(), 'fabric-legacy-no-authorization-'));
39
+ const workspaceId = 'workspace-legacy-no-authorization';
40
+ const bundleId = randomUUID();
41
+ const managed = resolve(native, '.dharma-managed', 'workspaces', workspaceId);
42
+ const active = resolve(managed, 'active');
43
+ await mkdir(active, { recursive: true });
44
+ await writeFile(resolve(managed, 'ACTIVE_BUNDLE'), `${bundleId}\n`);
45
+ await writeFile(resolve(active, 'BUNDLE.json'), JSON.stringify({ bundleId, workspaceId, skillIds: ['dharma-boundary'] }));
46
+ assert.equal(await getLegacySkillBundleIdForUpgrade({ nativeSkillDirectory: native, workspaceId }), bundleId);
47
+ assert.equal(await getInstalledSkillBundleIdForRecovery({ nativeSkillDirectory: native, workspaceId }), bundleId);
48
+ await writeFile(resolve(active, 'BUNDLE.json'), JSON.stringify({ bundleId, workspaceId: 'another-workspace', skillIds: ['dharma-boundary'] }));
49
+ assert.equal(await getLegacySkillBundleIdForUpgrade({ nativeSkillDirectory: native, workspaceId }), null);
50
+ await assert.rejects(getInstalledSkillBundleIdForRecovery({ nativeSkillDirectory: native, workspaceId }), /recovery metadata is invalid/);
51
+ });
52
+ test('expired v2 installation remains identifiable only for a replacement poll', async () => {
53
+ const native = await mkdtemp(resolve(tmpdir(), 'fabric-expired-recovery-'));
54
+ const workspaceId = 'workspace-expired-recovery';
55
+ const bundleId = randomUUID();
56
+ const managed = resolve(native, '.dharma-managed', 'workspaces', workspaceId);
57
+ const active = resolve(managed, 'active');
58
+ await mkdir(active, { recursive: true });
59
+ await writeFile(resolve(managed, 'ACTIVE_BUNDLE'), `${bundleId}\n`);
60
+ await writeFile(resolve(active, 'BUNDLE.json'), JSON.stringify({ bundleId, skillIds: [] }));
61
+ await writeFile(resolve(active, 'AUTHORIZATION.json'), JSON.stringify({
62
+ schema: 'dharma.skill-bundle/v2', bundleId, expiresAt: '2026-08-16T00:00:00.000Z',
63
+ }));
64
+ assert.equal(await getInstalledSkillBundleIdForRecovery({ nativeSkillDirectory: native, workspaceId }), bundleId);
65
+ });
66
+ test('expired replacement polling verifies the signed bundle, endpoint, and protected receipt', async () => {
67
+ const root = await mkdtemp(resolve(tmpdir(), 'fabric-expired-authorization-'));
68
+ const source = resolve(root, 'source', 'skill');
69
+ const native = resolve(root, 'native');
70
+ await mkdir(source, { recursive: true });
71
+ await writeFile(resolve(source, 'SKILL.md'), '# Expired candidate\n');
72
+ const server = generateKeyPairSync('ed25519');
73
+ const device = generateKeyPairSync('ed25519');
74
+ const deviceId = randomUUID();
75
+ const workspaceId = randomUUID();
76
+ const expiresAt = new Date(Date.now() + 30_000).toISOString();
77
+ const bundle = await signedBundle(source, randomUUID(), server.privateKey, 'dharma-boundary', expiresAt);
78
+ const receipt = await installSkillBundle({
79
+ bundle, sourceDirectory: resolve(root, 'source'), nativeSkillDirectory: native, policy,
80
+ serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey, deviceId,
81
+ organizationAgentId, workspaceId, provider: 'codex',
82
+ });
83
+ await assert.rejects(getActiveSkillBundleAuthorization({
84
+ nativeSkillDirectory: native, workspaceId, provider: 'codex', organizationId: 'org_test',
85
+ organizationAgentId, deviceId, serverPublicKey: server.publicKey, devicePublicKey: device.publicKey,
86
+ expectedReceiptHash: receipt.receiptHash, now: new Date(Date.parse(expiresAt) + 1),
87
+ }), /has expired/);
88
+ assert.equal((await getExpiredSkillBundleAuthorizationForReplacement({
89
+ nativeSkillDirectory: native, workspaceId, provider: 'codex', organizationId: 'org_test',
90
+ organizationAgentId, deviceId, serverPublicKey: server.publicKey, devicePublicKey: device.publicKey,
91
+ expectedReceiptHash: receipt.receiptHash, now: new Date(Date.parse(expiresAt) + 1),
92
+ }))?.bundleId, bundle.bundleId);
93
+ await assert.rejects(getExpiredSkillBundleAuthorizationForReplacement({
94
+ nativeSkillDirectory: native, workspaceId, provider: 'codex', organizationId: 'org_test',
95
+ organizationAgentId, deviceId, serverPublicKey: server.publicKey, devicePublicKey: device.publicKey,
96
+ expectedReceiptHash: `sha256:${'0'.repeat(64)}`, now: new Date(Date.parse(expiresAt) + 1),
97
+ }), /not the current protected authorization/);
98
+ });
99
+ test('legacy v1 bundle cannot authorize installation or task execution', async () => {
100
+ const server = generateKeyPairSync('ed25519');
101
+ const source = await mkdtemp(resolve(tmpdir(), 'fabric-legacy-auth-'));
102
+ await writeFile(resolve(source, 'SKILL.md'), '# Legacy bundle\n');
103
+ const signed = await signedBundle(source, randomUUID(), server.privateKey);
104
+ const { signature: _signature, bundleHash: _bundleHash, ...v2Unsigned } = signed;
105
+ const v1Unsigned = { ...v2Unsigned, schema: 'dharma.skill-bundle/v1' };
106
+ const bundleHash = calculateBundleHash(v1Unsigned);
107
+ const v1Bundle = {
108
+ ...v1Unsigned,
109
+ bundleHash,
110
+ signature: signCanonicalObject({ ...v1Unsigned, bundleHash }, server.privateKey),
111
+ };
112
+ assert.throws(() => verifySkillBundle(v1Bundle, server.publicKey), /schema is not authorized for installation or task execution/);
113
+ });
114
+ async function signedBundle(source, bundleId, privateKey, skillId = 'dharma-boundary', expiresAt = null) {
115
+ const skill = { skillId, version: '1.0.0', repository: 'https://github.com/customer/agent-control.git', commit: 'abc123', contentHash: await contentHash(source), path: 'skill' };
23
116
  const base = {
24
- schema: 'dharma.skill-bundle/v1', bundleId, organizationId: 'org_test', version: '1.0.0', operation: 'install', skills: [skill],
25
- riskClass: 'R2', targetSelectors: { providers: ['codex'] }, activationPolicy: 'next_session',
26
- rollbackBundleId: null, evaluationReceiptId: 'eval-1', createdAt: new Date().toISOString(), expiresAt: null,
117
+ schema: 'dharma.skill-bundle/v2', bundleId, organizationId: 'org_test', version: '1.0.0', operation: 'install', skills: [skill],
118
+ riskClass: 'R2',
119
+ targetSelectors: { organizationAgentIds: [organizationAgentId], deviceIds: [], workspaceIds: [], providers: ['codex'] },
120
+ activationPolicy: 'next_session',
121
+ rollbackBundleId: null, evaluationReceiptId: 'eval-1', createdAt: new Date().toISOString(), expiresAt,
27
122
  };
28
123
  const bundleHash = calculateBundleHash(base);
29
124
  return { ...base, bundleHash, signature: signCanonicalObject({ ...base, bundleHash }, privateKey) };
30
125
  }
126
+ async function activeBundle(nativeSkillDirectory, workspaceId, serverPublicKey, devicePublicKey, deviceId, provider = 'codex', expectedReceiptHash) {
127
+ const receipt = JSON.parse(await readFile(resolve(nativeSkillDirectory, '.dharma-managed', 'workspaces', workspaceId, 'active', 'INSTALL_RECEIPT.json'), 'utf8'));
128
+ return getActiveSkillBundleAuthorization({
129
+ nativeSkillDirectory, workspaceId, provider, organizationId: 'org_test', organizationAgentId, deviceId,
130
+ serverPublicKey, devicePublicKey, expectedReceiptHash: expectedReceiptHash || receipt.receiptHash,
131
+ });
132
+ }
31
133
  test('verified skill activates and a failed canary restores the prior bundle', async () => {
32
134
  const root = await mkdtemp(resolve(tmpdir(), 'dharma-skill-'));
33
135
  const source = resolve(root, 'source', 'skill');
@@ -41,17 +143,108 @@ test('verified skill activates and a failed canary restores the prior bundle', a
41
143
  const firstBundleId = randomUUID();
42
144
  const secondBundleId = randomUUID();
43
145
  const first = await signedBundle(source, firstBundleId, server.privateKey);
44
- const receipt = await installSkillBundle({ bundle: first, sourceDirectory: resolve(root, 'source'), nativeSkillDirectory: native, policy, serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey, deviceId, workspaceId, provider: 'codex', smokeCommandId: 'smokePass' });
146
+ const receipt = await installSkillBundle({ bundle: first, sourceDirectory: resolve(root, 'source'), nativeSkillDirectory: native, policy, serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey, deviceId, organizationAgentId, workspaceId, provider: 'codex', smokeCommandId: 'smokePass' });
45
147
  assert.equal(receipt.status, 'active');
46
- assert.match(await readFile(resolve(native, '.dharma-managed/active/dharma-boundary/SKILL.md'), 'utf8'), /evidence boundary/);
148
+ const managed = resolve(native, '.dharma-managed', 'workspaces', workspaceId);
149
+ assert.match(await readFile(resolve(managed, 'active/dharma-boundary/SKILL.md'), 'utf8'), /evidence boundary/);
47
150
  assert.match(await readFile(resolve(native, 'dharma-boundary/SKILL.md'), 'utf8'), /evidence boundary/);
48
151
  await writeFile(resolve(source, 'SKILL.md'), '# Broken candidate\n');
49
152
  const second = await signedBundle(source, secondBundleId, server.privateKey);
50
- const rollback = await installSkillBundle({ bundle: second, sourceDirectory: resolve(root, 'source'), nativeSkillDirectory: native, policy, serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey, deviceId, workspaceId, provider: 'codex', smokeCommandId: 'smokeFail' });
153
+ const rollback = await installSkillBundle({ bundle: second, sourceDirectory: resolve(root, 'source'), nativeSkillDirectory: native, policy, serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey, deviceId, organizationAgentId, workspaceId, provider: 'codex', smokeCommandId: 'smokeFail' });
51
154
  assert.equal(rollback.status, 'rolled_back');
52
- assert.match(await readFile(resolve(native, '.dharma-managed/active/dharma-boundary/SKILL.md'), 'utf8'), /evidence boundary/);
155
+ assert.match(await readFile(resolve(managed, 'active/dharma-boundary/SKILL.md'), 'utf8'), /evidence boundary/);
53
156
  assert.match(await readFile(resolve(native, 'dharma-boundary/SKILL.md'), 'utf8'), /evidence boundary/);
54
- assert.equal((await readFile(resolve(native, '.dharma-managed/ACTIVE_BUNDLE'), 'utf8')).trim(), firstBundleId);
157
+ assert.equal((await readFile(resolve(managed, 'ACTIVE_BUNDLE'), 'utf8')).trim(), firstBundleId);
158
+ });
159
+ test('a server-rejected active receipt restores the prior local authorization', async () => {
160
+ const root = await mkdtemp(resolve(tmpdir(), 'dharma-skill-server-reject-'));
161
+ const source = resolve(root, 'source', 'skill');
162
+ const native = resolve(root, 'native');
163
+ await mkdir(source, { recursive: true });
164
+ await writeFile(resolve(source, 'SKILL.md'), '# Prior release\n');
165
+ const server = generateKeyPairSync('ed25519');
166
+ const device = generateKeyPairSync('ed25519');
167
+ const deviceId = randomUUID();
168
+ const workspaceId = randomUUID();
169
+ const prior = await signedBundle(source, randomUUID(), server.privateKey);
170
+ await installSkillBundle({
171
+ bundle: prior, sourceDirectory: resolve(root, 'source'), nativeSkillDirectory: native, policy,
172
+ serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey, deviceId,
173
+ organizationAgentId, workspaceId, provider: 'codex',
174
+ });
175
+ await writeFile(resolve(source, 'SKILL.md'), '# Unconfirmed release\n');
176
+ const unconfirmed = await signedBundle(source, randomUUID(), server.privateKey);
177
+ const receipt = await installSkillBundle({
178
+ bundle: unconfirmed, sourceDirectory: resolve(root, 'source'), nativeSkillDirectory: native, policy,
179
+ serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey, deviceId,
180
+ organizationAgentId, workspaceId, provider: 'codex',
181
+ });
182
+ await rollbackUnconfirmedSkillBundle({ nativeSkillDirectory: native, workspaceId, receipt });
183
+ const managed = resolve(native, '.dharma-managed', 'workspaces', workspaceId);
184
+ assert.equal((await readFile(resolve(managed, 'ACTIVE_BUNDLE'), 'utf8')).trim(), prior.bundleId);
185
+ assert.match(await readFile(resolve(managed, 'active/dharma-boundary/SKILL.md'), 'utf8'), /Prior release/);
186
+ assert.match(await readFile(resolve(native, 'dharma-boundary/SKILL.md'), 'utf8'), /Prior release/);
187
+ assert.deepEqual((await readdir(managed)).filter((name) => name.startsWith('.rollback-')), []);
188
+ });
189
+ test('the next authorization read recovers a rollback interrupted between filesystem swaps', async () => {
190
+ const root = await mkdtemp(resolve(tmpdir(), 'dharma-skill-interrupted-rollback-'));
191
+ const source = resolve(root, 'source', 'skill');
192
+ const native = resolve(root, 'native');
193
+ await mkdir(source, { recursive: true });
194
+ await writeFile(resolve(source, 'SKILL.md'), '# Durable active release\n');
195
+ const server = generateKeyPairSync('ed25519');
196
+ const device = generateKeyPairSync('ed25519');
197
+ const workspaceId = randomUUID();
198
+ const activeBundle = await signedBundle(source, randomUUID(), server.privateKey);
199
+ await installSkillBundle({
200
+ bundle: activeBundle, sourceDirectory: resolve(root, 'source'), nativeSkillDirectory: native, policy,
201
+ serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey, deviceId: randomUUID(),
202
+ organizationAgentId, workspaceId, provider: 'codex',
203
+ });
204
+ const managed = resolve(native, '.dharma-managed', 'workspaces', workspaceId);
205
+ const transaction = resolve(managed, '.rollback-interrupted-test');
206
+ await mkdir(transaction, { recursive: true });
207
+ await writeFile(resolve(transaction, 'ROLLBACK_RECOVERY.json'), JSON.stringify({
208
+ schema: 'dharma.skill-rollback-recovery/v1',
209
+ workspaceId,
210
+ currentBundleId: activeBundle.bundleId,
211
+ currentSkillIds: ['dharma-boundary'],
212
+ }));
213
+ await rename(resolve(managed, 'active'), resolve(transaction, 'backup-active'));
214
+ await writeFile(resolve(native, 'dharma-boundary/SKILL.md'), '# Partially rolled back native state\n');
215
+ assert.equal(await getInstalledSkillBundleIdForRecovery({ nativeSkillDirectory: native, workspaceId }), activeBundle.bundleId);
216
+ assert.match(await readFile(resolve(managed, 'active/dharma-boundary/SKILL.md'), 'utf8'), /Durable active release/);
217
+ assert.match(await readFile(resolve(native, 'dharma-boundary/SKILL.md'), 'utf8'), /Durable active release/);
218
+ assert.deepEqual((await readdir(managed)).filter((name) => name.startsWith('.rollback-')), []);
219
+ });
220
+ test('receipt persistence failure restores the prior bundle before publishing activation', async () => {
221
+ const root = await mkdtemp(resolve(tmpdir(), 'dharma-skill-receipt-failure-'));
222
+ const source = resolve(root, 'source', 'skill');
223
+ const native = resolve(root, 'native');
224
+ await mkdir(source, { recursive: true });
225
+ await writeFile(resolve(source, 'SKILL.md'), '# Prior durable release\n');
226
+ const server = generateKeyPairSync('ed25519');
227
+ const device = generateKeyPairSync('ed25519');
228
+ const deviceId = randomUUID();
229
+ const workspaceId = randomUUID();
230
+ const prior = await signedBundle(source, randomUUID(), server.privateKey);
231
+ await installSkillBundle({
232
+ bundle: prior, sourceDirectory: resolve(root, 'source'), nativeSkillDirectory: native, policy,
233
+ serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey, deviceId,
234
+ organizationAgentId, workspaceId, provider: 'codex',
235
+ });
236
+ await writeFile(resolve(source, 'SKILL.md'), '# Candidate with colliding receipt path\n');
237
+ const candidate = await signedBundle(source, randomUUID(), server.privateKey, 'INSTALL_RECEIPT.json');
238
+ await assert.rejects(installSkillBundle({
239
+ bundle: candidate, sourceDirectory: resolve(root, 'source'), nativeSkillDirectory: native, policy,
240
+ serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey, deviceId,
241
+ organizationAgentId, workspaceId, provider: 'codex',
242
+ }), /EISDIR|illegal operation on a directory/);
243
+ const managed = resolve(native, '.dharma-managed', 'workspaces', workspaceId);
244
+ assert.equal((await readFile(resolve(managed, 'ACTIVE_BUNDLE'), 'utf8')).trim(), prior.bundleId);
245
+ assert.match(await readFile(resolve(managed, 'active/dharma-boundary/SKILL.md'), 'utf8'), /Prior durable/);
246
+ assert.match(await readFile(resolve(native, 'dharma-boundary/SKILL.md'), 'utf8'), /Prior durable/);
247
+ await assert.rejects(readFile(resolve(native, 'INSTALL_RECEIPT.json', 'SKILL.md')), /ENOENT/);
55
248
  });
56
249
  test('R3 bundles cannot install without explicit organization approval', async () => {
57
250
  const root = await mkdtemp(resolve(tmpdir(), 'dharma-skill-r3-'));
@@ -64,7 +257,144 @@ test('R3 bundles cannot install without explicit organization approval', async (
64
257
  const { signature: _old, bundleHash: _oldHash, ...unsigned } = bundle;
65
258
  const bundleHash = calculateBundleHash(unsigned);
66
259
  const signed = { ...unsigned, bundleHash, signature: signCanonicalObject({ ...unsigned, bundleHash }, server.privateKey) };
67
- await assert.rejects(() => installSkillBundle({ bundle: signed, sourceDirectory: resolve(root, 'source'), nativeSkillDirectory: resolve(root, 'native'), policy, serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey, deviceId: randomUUID(), workspaceId: randomUUID(), provider: 'codex' }), /require organization approval/);
260
+ await assert.rejects(() => installSkillBundle({ bundle: signed, sourceDirectory: resolve(root, 'source'), nativeSkillDirectory: resolve(root, 'native'), policy, serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey, deviceId: randomUUID(), organizationAgentId, workspaceId: randomUUID(), provider: 'codex' }), /require organization approval/);
261
+ });
262
+ test('signed target selectors reject installation for a different logical agent', async () => {
263
+ const root = await mkdtemp(resolve(tmpdir(), 'dharma-skill-target-'));
264
+ const source = resolve(root, 'source', 'skill');
265
+ await mkdir(source, { recursive: true });
266
+ await writeFile(resolve(source, 'SKILL.md'), '# Targeted boundary\n');
267
+ const server = generateKeyPairSync('ed25519');
268
+ const device = generateKeyPairSync('ed25519');
269
+ const bundle = await signedBundle(source, randomUUID(), server.privateKey);
270
+ await assert.rejects(() => installSkillBundle({
271
+ bundle, sourceDirectory: resolve(root, 'source'), nativeSkillDirectory: resolve(root, 'native'), policy,
272
+ serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey, deviceId: randomUUID(),
273
+ organizationAgentId: randomUUID(), workspaceId: randomUUID(), provider: 'codex',
274
+ }), /not authorized for this repository agent/);
275
+ });
276
+ test('signed bundles fail closed on malformed or expired authorization windows', async () => {
277
+ const root = await mkdtemp(resolve(tmpdir(), 'dharma-skill-expiry-'));
278
+ const source = resolve(root, 'source', 'skill');
279
+ await mkdir(source, { recursive: true });
280
+ await writeFile(resolve(source, 'SKILL.md'), '# Expiring candidate\n');
281
+ const server = generateKeyPairSync('ed25519');
282
+ const current = await signedBundle(source, randomUUID(), server.privateKey);
283
+ for (const expiresAt of ['not-a-date', '2026-08-16T11:59:59.000Z']) {
284
+ const { signature: _signature, bundleHash: _bundleHash, ...unsigned } = { ...current, expiresAt };
285
+ const bundleHash = calculateBundleHash(unsigned);
286
+ const bundle = { ...unsigned, bundleHash, signature: signCanonicalObject({ ...unsigned, bundleHash }, server.privateKey) };
287
+ assert.throws(() => verifySkillBundle(bundle, server.publicKey, new Date('2026-08-16T12:00:00.000Z')), /expiry is invalid|has expired/);
288
+ }
289
+ });
290
+ test('a bundle that expires during smoke validation is not activated', async () => {
291
+ const root = await mkdtemp(resolve(tmpdir(), 'dharma-skill-expiry-race-'));
292
+ const source = resolve(root, 'source', 'skill');
293
+ const native = resolve(root, 'native');
294
+ await mkdir(source, { recursive: true });
295
+ await writeFile(resolve(source, 'SKILL.md'), '# Short-lived candidate\n');
296
+ const server = generateKeyPairSync('ed25519');
297
+ const device = generateKeyPairSync('ed25519');
298
+ const workspaceId = randomUUID();
299
+ const bundle = await signedBundle(source, randomUUID(), server.privateKey, 'dharma-boundary', new Date(Date.now() + 500).toISOString());
300
+ const receipt = await installSkillBundle({
301
+ bundle,
302
+ sourceDirectory: resolve(root, 'source'),
303
+ nativeSkillDirectory: native,
304
+ policy,
305
+ serverPublicKey: server.publicKey,
306
+ devicePrivateKey: device.privateKey,
307
+ deviceId: randomUUID(),
308
+ organizationAgentId,
309
+ workspaceId,
310
+ provider: 'codex',
311
+ smokeCommandId: 'smokeSlow',
312
+ });
313
+ assert.equal(receipt.status, 'failed');
314
+ assert.equal(receipt.checks.find((check) => check.name === 'authorization:activation-window')?.status, 'fail');
315
+ await assert.rejects(readFile(resolve(native, '.dharma-managed', 'workspaces', workspaceId, 'ACTIVE_BUNDLE')), /ENOENT/);
316
+ });
317
+ test('active bundle identity must match the installed release manifest', async () => {
318
+ const root = await mkdtemp(resolve(tmpdir(), 'dharma-skill-pointer-'));
319
+ const source = resolve(root, 'source', 'skill');
320
+ const native = resolve(root, 'native');
321
+ await mkdir(source, { recursive: true });
322
+ await writeFile(resolve(source, 'SKILL.md'), '# Candidate provenance\n');
323
+ const server = generateKeyPairSync('ed25519');
324
+ const device = generateKeyPairSync('ed25519');
325
+ const workspaceId = randomUUID();
326
+ const deviceId = randomUUID();
327
+ const bundle = await signedBundle(source, randomUUID(), server.privateKey);
328
+ await installSkillBundle({
329
+ bundle, sourceDirectory: resolve(root, 'source'), nativeSkillDirectory: native, policy,
330
+ serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey,
331
+ deviceId, organizationAgentId, workspaceId, provider: 'codex',
332
+ });
333
+ const managed = resolve(native, '.dharma-managed', 'workspaces', workspaceId);
334
+ await writeFile(resolve(managed, 'ACTIVE_BUNDLE'), `${randomUUID()}\n`);
335
+ await assert.rejects(() => activeBundle(native, workspaceId, server.publicKey, device.publicKey, deviceId), /does not match the installed release manifest/);
336
+ });
337
+ test('an active bundle pointer fails closed when its release manifest is missing', async () => {
338
+ const root = await mkdtemp(resolve(tmpdir(), 'dharma-skill-missing-manifest-'));
339
+ const native = resolve(root, 'native');
340
+ const workspaceId = randomUUID();
341
+ const managed = resolve(native, '.dharma-managed', 'workspaces', workspaceId);
342
+ await mkdir(resolve(managed, 'active'), { recursive: true });
343
+ await writeFile(resolve(managed, 'ACTIVE_BUNDLE'), `${randomUUID()}\n`);
344
+ await assert.rejects(getInstalledSkillBundleIdForRecovery({ nativeSkillDirectory: native, workspaceId }), /Active bundle manifest is missing/);
345
+ });
346
+ test('active bundle authorization rejects locally rewritten release metadata', async () => {
347
+ const root = await mkdtemp(resolve(tmpdir(), 'dharma-skill-forged-'));
348
+ const source = resolve(root, 'source', 'skill');
349
+ const native = resolve(root, 'native');
350
+ await mkdir(source, { recursive: true });
351
+ await writeFile(resolve(source, 'SKILL.md'), '# Candidate provenance\n');
352
+ const server = generateKeyPairSync('ed25519');
353
+ const device = generateKeyPairSync('ed25519');
354
+ const workspaceId = randomUUID();
355
+ const bundle = await signedBundle(source, randomUUID(), server.privateKey);
356
+ const deviceId = randomUUID();
357
+ await installSkillBundle({
358
+ bundle, sourceDirectory: resolve(root, 'source'), nativeSkillDirectory: native, policy,
359
+ serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey,
360
+ deviceId, organizationAgentId, workspaceId, provider: 'codex',
361
+ });
362
+ const active = resolve(native, '.dharma-managed', 'workspaces', workspaceId, 'active');
363
+ const authorization = JSON.parse(await readFile(resolve(active, 'AUTHORIZATION.json'), 'utf8'));
364
+ await writeFile(resolve(active, 'AUTHORIZATION.json'), `${JSON.stringify({ ...authorization, version: 'forged' })}\n`);
365
+ await assert.rejects(() => activeBundle(native, workspaceId, server.publicKey, device.publicKey, deviceId), /signature is invalid|hash is invalid/);
366
+ });
367
+ test('protected receipt hash rejects replay of a previously active installation', async () => {
368
+ const root = await mkdtemp(resolve(tmpdir(), 'dharma-skill-replay-'));
369
+ const source = resolve(root, 'source', 'skill');
370
+ const native = resolve(root, 'native');
371
+ await mkdir(source, { recursive: true });
372
+ await writeFile(resolve(source, 'SKILL.md'), '# First active bundle\n');
373
+ const server = generateKeyPairSync('ed25519');
374
+ const device = generateKeyPairSync('ed25519');
375
+ const deviceId = randomUUID();
376
+ const workspaceId = randomUUID();
377
+ const first = await signedBundle(source, randomUUID(), server.privateKey);
378
+ const firstReceipt = await installSkillBundle({
379
+ bundle: first, sourceDirectory: resolve(root, 'source'), nativeSkillDirectory: native, policy,
380
+ serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey, deviceId,
381
+ organizationAgentId, workspaceId, provider: 'codex',
382
+ });
383
+ const managed = resolve(native, '.dharma-managed', 'workspaces', workspaceId);
384
+ const savedFirst = resolve(root, 'saved-first');
385
+ await cp(resolve(managed, 'active'), savedFirst, { recursive: true });
386
+ await writeFile(resolve(source, 'SKILL.md'), '# Second active bundle\n');
387
+ const second = await signedBundle(source, randomUUID(), server.privateKey);
388
+ const secondReceipt = await installSkillBundle({
389
+ bundle: second, sourceDirectory: resolve(root, 'source'), nativeSkillDirectory: native, policy,
390
+ serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey, deviceId,
391
+ organizationAgentId, workspaceId, provider: 'codex',
392
+ });
393
+ assert.notEqual(firstReceipt.receiptHash, secondReceipt.receiptHash);
394
+ await rm(resolve(managed, 'active'), { recursive: true, force: true });
395
+ await cp(savedFirst, resolve(managed, 'active'), { recursive: true });
396
+ await writeFile(resolve(managed, 'ACTIVE_BUNDLE'), `${first.bundleId}\n`);
397
+ await assert.rejects(activeBundle(native, workspaceId, server.publicKey, device.publicKey, deviceId, 'codex', secondReceipt.receiptHash), /not the current protected authorization/);
68
398
  });
69
399
  test('signed clear baseline removes managed skills and preserves unmanaged provider skills', async () => {
70
400
  const root = await mkdtemp(resolve(tmpdir(), 'dharma-skill-clear-'));
@@ -79,20 +409,64 @@ test('signed clear baseline removes managed skills and preserves unmanaged provi
79
409
  const deviceId = randomUUID();
80
410
  const workspaceId = randomUUID();
81
411
  const installed = await signedBundle(source, randomUUID(), server.privateKey);
82
- await installSkillBundle({ bundle: installed, sourceDirectory: resolve(root, 'source'), nativeSkillDirectory: native, policy, serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey, deviceId, workspaceId, provider: 'codex' });
412
+ await installSkillBundle({ bundle: installed, sourceDirectory: resolve(root, 'source'), nativeSkillDirectory: native, policy, serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey, deviceId, organizationAgentId, workspaceId, provider: 'codex' });
83
413
  const clearBase = {
84
- schema: 'dharma.skill-bundle/v1', bundleId: randomUUID(), organizationId: 'org_test', version: '0.0.0',
85
- operation: 'clear', skills: [], riskClass: 'R0', targetSelectors: { providers: ['codex'] },
414
+ schema: 'dharma.skill-bundle/v2', bundleId: randomUUID(), organizationId: 'org_test', version: '0.0.0',
415
+ operation: 'clear', skills: [], riskClass: 'R0',
416
+ targetSelectors: { organizationAgentIds: [organizationAgentId], deviceIds: [], workspaceIds: [], providers: ['codex'] },
86
417
  activationPolicy: 'immediate_safe_reload', rollbackBundleId: null, evaluationReceiptId: 'baseline:no-managed-skills',
87
418
  createdAt: new Date().toISOString(), expiresAt: null,
88
419
  };
89
420
  const bundleHash = calculateBundleHash(clearBase);
90
421
  const clear = { ...clearBase, bundleHash, signature: signCanonicalObject({ ...clearBase, bundleHash }, server.privateKey) };
91
- const receipt = await installSkillBundle({ bundle: clear, sourceDirectory: resolve(root, 'empty'), nativeSkillDirectory: native, policy, serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey, deviceId, workspaceId, provider: 'codex' });
422
+ const receipt = await installSkillBundle({ bundle: clear, sourceDirectory: resolve(root, 'empty'), nativeSkillDirectory: native, policy, serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey, deviceId, organizationAgentId, workspaceId, provider: 'codex' });
92
423
  assert.equal(receipt.status, 'active');
93
424
  assert.equal(receipt.previousBundleId, installed.bundleId);
94
425
  await assert.rejects(readFile(resolve(native, 'dharma-boundary', 'SKILL.md')), /ENOENT/);
95
426
  assert.match(await readFile(resolve(native, 'customer-skill', 'SKILL.md'), 'utf8'), /Customer owned/);
96
- assert.equal((await readFile(resolve(native, '.dharma-managed/ACTIVE_BUNDLE'), 'utf8')).trim(), clear.bundleId);
427
+ assert.equal((await readFile(resolve(native, '.dharma-managed', 'workspaces', workspaceId, 'ACTIVE_BUNDLE'), 'utf8')).trim(), clear.bundleId);
428
+ });
429
+ test('two repository workspaces retain independent active bundles and native skills', async () => {
430
+ const root = await mkdtemp(resolve(tmpdir(), 'dharma-skill-multi-workspace-'));
431
+ const native = resolve(root, 'native');
432
+ const sourceA = resolve(root, 'source-a', 'skill');
433
+ const sourceB = resolve(root, 'source-b', 'skill');
434
+ await mkdir(sourceA, { recursive: true });
435
+ await mkdir(sourceB, { recursive: true });
436
+ await writeFile(resolve(sourceA, 'SKILL.md'), '# Garment evidence boundary\n');
437
+ await writeFile(resolve(sourceB, 'SKILL.md'), '# Support authority boundary\n');
438
+ const server = generateKeyPairSync('ed25519');
439
+ const device = generateKeyPairSync('ed25519');
440
+ const deviceId = randomUUID();
441
+ const workspaceA = randomUUID();
442
+ const workspaceB = randomUUID();
443
+ const bundleA = await signedBundle(sourceA, randomUUID(), server.privateKey, 'garment-boundary');
444
+ const bundleB = await signedBundle(sourceB, randomUUID(), server.privateKey, 'support-boundary');
445
+ await installSkillBundle({
446
+ bundle: bundleA, sourceDirectory: resolve(root, 'source-a'), nativeSkillDirectory: native,
447
+ policy, serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey,
448
+ deviceId, organizationAgentId, workspaceId: workspaceA, provider: 'codex',
449
+ });
450
+ await installSkillBundle({
451
+ bundle: bundleB, sourceDirectory: resolve(root, 'source-b'), nativeSkillDirectory: native,
452
+ policy, serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey,
453
+ deviceId, organizationAgentId, workspaceId: workspaceB, provider: 'codex',
454
+ });
455
+ assert.equal((await activeBundle(native, workspaceA, server.publicKey, device.publicKey, deviceId))?.bundleId, bundleA.bundleId);
456
+ assert.equal((await activeBundle(native, workspaceB, server.publicKey, device.publicKey, deviceId))?.bundleId, bundleB.bundleId);
457
+ assert.match(await readFile(resolve(native, 'garment-boundary/SKILL.md'), 'utf8'), /Garment/);
458
+ assert.match(await readFile(resolve(native, 'support-boundary/SKILL.md'), 'utf8'), /Support/);
459
+ await writeFile(resolve(sourceA, 'SKILL.md'), '# Broken garment candidate\n');
460
+ const brokenA = await signedBundle(sourceA, randomUUID(), server.privateKey, 'garment-boundary');
461
+ const rollback = await installSkillBundle({
462
+ bundle: brokenA, sourceDirectory: resolve(root, 'source-a'), nativeSkillDirectory: native,
463
+ policy, serverPublicKey: server.publicKey, devicePrivateKey: device.privateKey,
464
+ deviceId, organizationAgentId, workspaceId: workspaceA, provider: 'codex', smokeCommandId: 'smokeFail',
465
+ });
466
+ assert.equal(rollback.status, 'rolled_back');
467
+ assert.equal((await activeBundle(native, workspaceA, server.publicKey, device.publicKey, deviceId))?.bundleId, bundleA.bundleId);
468
+ assert.equal((await activeBundle(native, workspaceB, server.publicKey, device.publicKey, deviceId))?.bundleId, bundleB.bundleId);
469
+ assert.match(await readFile(resolve(native, 'garment-boundary/SKILL.md'), 'utf8'), /Garment/);
470
+ assert.match(await readFile(resolve(native, 'support-boundary/SKILL.md'), 'utf8'), /Support/);
97
471
  });
98
472
  //# sourceMappingURL=index.test.js.map