@cleocode/adapters 2026.10.15 → 2026.10.16
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-hook-delivery.d.ts","sourceRoot":"","sources":["../src/project-hook-delivery.ts"],"names":[],"mappings":"AAeA,OAAO,EAGL,KAAK,0BAA0B,EAG/B,KAAK,yBAAyB,EAG/B,MAAM,8CAA8C,CAAC;
|
|
1
|
+
{"version":3,"file":"project-hook-delivery.d.ts","sourceRoot":"","sources":["../src/project-hook-delivery.ts"],"names":[],"mappings":"AAeA,OAAO,EAGL,KAAK,0BAA0B,EAG/B,KAAK,yBAAyB,EAG/B,MAAM,8CAA8C,CAAC;AA4ftD,+FAA+F;AAC/F,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,SAAS,yBAAyB,EAAE,GAC5C,OAAO,CAUT;AAqCD,0FAA0F;AAC1F,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,yBAAyB,EAAE,CAAC,CA8CtC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { execFileSync as execFileSync2, spawnSync } from "node:child_process";
|
|
3
3
|
import { createHash } from "node:crypto";
|
|
4
4
|
import { existsSync as existsSync2 } from "node:fs";
|
|
5
|
-
import { lstat, realpath, unlink } from "node:fs/promises";
|
|
5
|
+
import { lstat, realpath, rmdir, unlink } from "node:fs/promises";
|
|
6
6
|
import { homedir } from "node:os";
|
|
7
7
|
import { dirname as dirname2, isAbsolute as isAbsolute2, join as join2, relative, resolve as resolve2, sep } from "node:path";
|
|
8
8
|
import {
|
|
@@ -216,7 +216,7 @@ function inspectEntries(config, receipt) {
|
|
|
216
216
|
}
|
|
217
217
|
return result;
|
|
218
218
|
}
|
|
219
|
-
function configEdits(config, prior, desired) {
|
|
219
|
+
function configEdits(config, prior, desired, created) {
|
|
220
220
|
if (config.hooks !== void 0 && !object(config.hooks))
|
|
221
221
|
throw new Error("HOOK_CONFIG_HOOKS_SHAPE");
|
|
222
222
|
const hooks = object(config.hooks) ? config.hooks : {};
|
|
@@ -241,6 +241,16 @@ function configEdits(config, prior, desired) {
|
|
|
241
241
|
else edits.push({ path: ["hooks", event, index] });
|
|
242
242
|
}
|
|
243
243
|
}
|
|
244
|
+
const emptied = Object.entries(hooks).filter(
|
|
245
|
+
([event, entries]) => created.has("hooks/" + event) && Array.isArray(entries) && edits.filter((change) => change.path[1] === event).length === entries.length && !desired.some((next) => next.event === event)
|
|
246
|
+
).map(([event]) => event);
|
|
247
|
+
if (emptied.length > 0) {
|
|
248
|
+
const kept = edits.filter((change) => !emptied.includes(String(change.path[1])));
|
|
249
|
+
edits.length = 0;
|
|
250
|
+
if (created.has("hooks") && emptied.length === Object.keys(hooks).length && desired.length === 0)
|
|
251
|
+
edits.push({ path: ["hooks"] });
|
|
252
|
+
else edits.push(...kept, ...emptied.map((event) => ({ path: ["hooks", event] })));
|
|
253
|
+
}
|
|
244
254
|
for (const next of desired) {
|
|
245
255
|
const entries = hooks[next.event];
|
|
246
256
|
if (entries !== void 0 && !Array.isArray(entries))
|
|
@@ -286,6 +296,23 @@ function pluginSource(events) {
|
|
|
286
296
|
""
|
|
287
297
|
].join("\n");
|
|
288
298
|
}
|
|
299
|
+
function createdDirFor(target, prior) {
|
|
300
|
+
let created = prior?.createdDir;
|
|
301
|
+
for (let dir = dirname2(target); !existsSync2(dir); dir = dirname2(dir)) created = dir;
|
|
302
|
+
return created;
|
|
303
|
+
}
|
|
304
|
+
async function removeCreatedDirs(root, target, created) {
|
|
305
|
+
const inside = created ? relative(root, created) : "";
|
|
306
|
+
if (!created || !inside || inside.startsWith("..") || isAbsolute2(inside) || relative(created, target).startsWith("..") || existsSync2(target))
|
|
307
|
+
return;
|
|
308
|
+
for (let dir = dirname2(target); dir.length >= created.length; dir = dirname2(dir)) {
|
|
309
|
+
try {
|
|
310
|
+
await rmdir(dir);
|
|
311
|
+
} catch {
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
289
316
|
async function deliverProvider(options, provider) {
|
|
290
317
|
const profile = GENERATED_PROVIDER_HOOK_PROFILES[provider];
|
|
291
318
|
const capability = profile?.projectDelivery;
|
|
@@ -334,6 +361,10 @@ async function deliverProvider(options, provider) {
|
|
|
334
361
|
if (!valid) throw new Error("HOOK_RECEIPT_OWNERSHIP_INVALID");
|
|
335
362
|
result.provenance = "cleo-receipt";
|
|
336
363
|
}
|
|
364
|
+
if (options.rollback && !prior) {
|
|
365
|
+
result.state = "disabled";
|
|
366
|
+
return result;
|
|
367
|
+
}
|
|
337
368
|
if (options.events.length === 0 && !prior && !options.rollback) {
|
|
338
369
|
result.state = "unsupported";
|
|
339
370
|
result.diagnostics.push("HOOK_NO_AGENT_BINDINGS");
|
|
@@ -387,11 +418,16 @@ async function deliverProvider(options, provider) {
|
|
|
387
418
|
if (current !== existing) throw new Error("HOOK_CONFIG_CONCURRENT_EDIT");
|
|
388
419
|
await unlink(target);
|
|
389
420
|
});
|
|
421
|
+
if (!options.dryRun) {
|
|
422
|
+
await removeCreatedDirs(options.projectRoot, target, prior?.createdDir);
|
|
423
|
+
await unlink(receiptPath);
|
|
424
|
+
}
|
|
390
425
|
result.state = "disabled";
|
|
391
426
|
return result;
|
|
392
427
|
}
|
|
393
428
|
result.state = existing === body ? "current" : "planned";
|
|
394
429
|
if (!options.dryRun && existing !== body) {
|
|
430
|
+
const createdDir = createdDirFor(target, prior);
|
|
395
431
|
if (existing === void 0)
|
|
396
432
|
excludeHookFileFromGit(
|
|
397
433
|
options.projectRoot,
|
|
@@ -412,6 +448,7 @@ async function deliverProvider(options, provider) {
|
|
|
412
448
|
provider,
|
|
413
449
|
configPath: target,
|
|
414
450
|
entries: [{ event: "plugin", command: "cleo hook run", hash: hash(body) }],
|
|
451
|
+
createdDir,
|
|
415
452
|
recordedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
416
453
|
}) + "\n"
|
|
417
454
|
});
|
|
@@ -422,9 +459,28 @@ async function deliverProvider(options, provider) {
|
|
|
422
459
|
}
|
|
423
460
|
const config = await readManagedJsonConfigFile(target);
|
|
424
461
|
result.entries = inspectEntries(config, prior);
|
|
425
|
-
const
|
|
462
|
+
const created = new Set(prior?.createdContainers ?? []);
|
|
463
|
+
const edits = configEdits(config, prior, desired, created);
|
|
426
464
|
result.state = edits.length ? "planned" : "current";
|
|
465
|
+
if (!options.dryRun && options.rollback) {
|
|
466
|
+
if (existsSync2(target)) {
|
|
467
|
+
await editJsonConfigFile(target, (current) => configEdits(current, prior, desired, created));
|
|
468
|
+
if (prior?.createdConfig)
|
|
469
|
+
await withFileLock(target, async () => {
|
|
470
|
+
await localTarget(options.projectRoot, configPath);
|
|
471
|
+
if (Object.keys(await readManagedJsonConfigFile(target)).length === 0)
|
|
472
|
+
await unlink(target);
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
await removeCreatedDirs(options.projectRoot, target, prior?.createdDir);
|
|
476
|
+
await unlink(receiptPath);
|
|
477
|
+
result.state = "disabled";
|
|
478
|
+
result.entries = inspectEntries(await readManagedJsonConfigFile(target), void 0);
|
|
479
|
+
return result;
|
|
480
|
+
}
|
|
427
481
|
if (!options.dryRun) {
|
|
482
|
+
const createdConfig = existsSync2(target) ? prior?.createdConfig ?? false : true;
|
|
483
|
+
const createdDir = createdDirFor(target, prior);
|
|
428
484
|
if (!existsSync2(target))
|
|
429
485
|
excludeHookFileFromGit(
|
|
430
486
|
options.projectRoot,
|
|
@@ -432,7 +488,17 @@ async function deliverProvider(options, provider) {
|
|
|
432
488
|
void 0,
|
|
433
489
|
options.services.gitEnvironment
|
|
434
490
|
);
|
|
435
|
-
await editJsonConfigFile(target, (current) =>
|
|
491
|
+
await editJsonConfigFile(target, (current) => {
|
|
492
|
+
const changes = configEdits(current, prior, desired, created);
|
|
493
|
+
if (current.hooks === void 0 && changes.some((change) => change.value !== void 0))
|
|
494
|
+
created.add("hooks");
|
|
495
|
+
for (const change of changes) {
|
|
496
|
+
const key = change.path.slice(0, 2).join("/");
|
|
497
|
+
if (change.path.length === 2 && change.value !== void 0) created.add(key);
|
|
498
|
+
else if (change.path.length <= 2 && change.value === void 0) created.delete(key);
|
|
499
|
+
}
|
|
500
|
+
return changes;
|
|
501
|
+
});
|
|
436
502
|
await writeFileAtomic({
|
|
437
503
|
path: receiptPath,
|
|
438
504
|
content: JSON.stringify({
|
|
@@ -440,6 +506,9 @@ async function deliverProvider(options, provider) {
|
|
|
440
506
|
provider,
|
|
441
507
|
configPath: target,
|
|
442
508
|
entries: desired,
|
|
509
|
+
createdConfig,
|
|
510
|
+
createdDir,
|
|
511
|
+
createdContainers: [...created],
|
|
443
512
|
recordedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
444
513
|
}) + "\n"
|
|
445
514
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/project-hook-delivery.ts", "../src/providers/shared/heavy-command-hook-install.ts"],
|
|
4
|
-
"mappings": ";AACA,SAAS,gBAAAA,eAAc,iBAAiB;AACxC,SAAS,kBAAkB;AAC3B,SAAS,cAAAC,mBAAkB;AAC3B,SAAS,OAAO,UAAU,cAAc;AACxC,SAAS,eAAe;AACxB,SAAS,WAAAC,UAAS,cAAAC,aAAY,QAAAC,OAAM,UAAU,WAAAC,UAAS,WAAW;AAClE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,wCAAwC;AAEjD;AAAA,EAKE;AAAA,OAIK;;;ACOP,SAAS,oBAAoB;AAC7B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,SAAS,YAAY,MAAM,eAAe;AACnD,SAAS,4BAA4B;AAW9B,IAAM,gCAAgC;AAStC,IAAM,mBAAsC,OAAO,OAAO;AAAA,EAC/D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AA2FM,IAAM,yBAAyB,KAAK,UAAU;AAAA,EACnD,oBAAoB;AAAA,IAClB,eAAe;AAAA,IACf,mBACE;AAAA,EAEJ;AACF,CAAC;AAqUM,IAAM,2BACX;AAMK,IAAM,uBAAuB,qBAAqB,6BAA6B;AAGtF,SAAS,UACP,YACA,MACA,MAAyB,QAAQ,KAClB;AACf,MAAI;AACF,WAAO,aAAa,OAAO,CAAC,MAAM,YAAY,GAAG,IAAI,GAAG;AAAA,MACtD,UAAU;AAAA,MACV,OAAO,CAAC,UAAU,QAAQ,QAAQ;AAAA,MAClC,SAAS;AAAA,MACT;AAAA,IACF,CAAC,EAAE,KAAK;AAAA,EACV,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAGA,SAAS,YAAY,YAAoB,MAAyB,QAAQ,KAAoB;AAC5F,MAAI,UAAU,YAAY,CAAC,aAAa,uBAAuB,GAAG,GAAG,MAAM,OAAQ,QAAO;AAC1F,QAAM,OAAO,UAAU,YAAY,CAAC,aAAa,cAAc,cAAc,GAAG,GAAG;AACnF,MAAI,SAAS,QAAQ,SAAS,GAAI,QAAO;AACzC,SAAO,WAAW,IAAI,IAAI,OAAO,KAAK,YAAY,IAAI;AACxD;AAGA,SAAS,YACP,YACA,SACA,MAAyB,QAAQ,KACzB;AACR,QAAM,SAAS,UAAU,YAAY,CAAC,aAAa,eAAe,GAAG,GAAG,KAAK;AAC7E,SAAO,IAAI,MAAM,GAAG,OAAO;AAC7B;AAgBO,SAAS,uBACd,YACA,SACA,SAAiB,0BACjB,MAAyB,QAAQ,KACxB;AACT,QAAM,UAAU,YAAY,YAAY,GAAG;AAC3C,MAAI,YAAY,KAAM,QAAO;AAC7B,MAAI,UAAU,YAAY,CAAC,gBAAgB,OAAO,GAAG,GAAG,MAAM,KAAM,QAAO;AAC3E,MAAI,UAAU,YAAY,CAAC,YAAY,mBAAmB,OAAO,GAAG,GAAG,MAAM,KAAM,QAAO;AAC1F,QAAM,OAAO,YAAY,YAAY,SAAS,GAAG;AACjD,QAAM,OAAO,WAAW,OAAO,IAAI,aAAa,SAAS,OAAO,IAAI;AACpE,MAAI,KAAK,MAAM,IAAI,EAAE,SAAS,IAAI,EAAG,QAAO;AAC5C,QAAM,QAAQ,GAAG,MAAM;AAAA,EAAK,IAAI;AAAA;AAChC,YAAU,QAAQ,OAAO,GAAG,EAAE,WAAW,KAAK,CAAC;AAC/C,gBAAc,SAAS,SAAS,MAAM,KAAK,SAAS,IAAI,IAAI,OAAO,QAAQ,GAAG,IAAI;AAAA,EAAK,KAAK,EAAE;AAC9F,SAAO;AACT;;;ADvjBA,IAAM,SAAS;AACf,IAAM,WAAmC;AAAA,EACvC,eAAe;AAAA,EACf,OAAO;AAAA,EACP,UAAU;AAAA,EACV,MAAM;AACR;AACA,IAAM,OAAO,CAAC,UAA0B,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AACvF,IAAM,SAAS,CAAC,UACd,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAErE,SAAS,aAAa,UAAsC;AAC1D,QAAM,SAAS,SAAS,QAAQ;AAChC,MAAI,CAAC,OAAQ,QAAO;AACpB,MAAI;AACF,WAAOC,cAAa,QAAQ,CAAC,WAAW,GAAG;AAAA,MACzC,UAAU;AAAA,MACV,SAAS;AAAA,MACT,WAAW;AAAA,MACX,OAAO,CAAC,UAAU,QAAQ,QAAQ;AAAA,IACpC,CAAC,EAAE,MAAM,eAAe,IAAI,CAAC;AAAA,EAC/B,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAGA,eAAe,YAAY,MAAc,MAA+B;AACtE,MAAK,MAAM,SAAS,IAAI,MAAQ,MAAM,SAAS,QAAQ,CAAC;AACtD,UAAM,IAAI,MAAM,8BAA8B;AAChD,MAAIC,YAAW,IAAI,KAAK,KAAK,MAAM,OAAO,EAAE,SAAS,IAAI;AACvD,UAAM,IAAI,MAAM,yBAAyB;AAC3C,QAAM,SAASC,SAAQ,MAAM,IAAI;AACjC,MAAI,WAAW;AACf,SAAO,CAACC,YAAW,QAAQ,EAAG,YAAWC,SAAQ,QAAQ;AACzD,QAAM,WAAW,MAAM,SAAS,QAAQ;AACxC,QAAM,MAAM,SAAS,MAAM,SAAS,IAAI,GAAG,QAAQ;AACnD,MAAI,QAAQ,QAAQ,IAAI,WAAW,OAAO,GAAG,KAAKH,YAAW,GAAG;AAC9D,UAAM,IAAI,MAAM,yBAAyB;AAC3C,MAAIE,YAAW,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,eAAe;AAC7D,UAAM,IAAI,MAAM,qBAAqB;AACvC,SAAO;AACT;AAEA,SAAS,QAAQ,UAAkB,OAAuB;AAExD,QAAM,aAAa,6CAA6C,WAAW,cAAc;AACzF,SACE,gIACA,aACA,mIACA;AAEJ;AAEA,SAAS,eAAe,UAAkB,QAAyD;AACjG,QAAM,UAAU,iCAAiC,QAAQ;AACzD,QAAM,SAAgD,CAAC;AACvD,aAAW,aAAa,IAAI,IAAI,MAAM,GAAG;AACvC,UAAM,UAAU,OAAO,QAAQ,SAAS,YAAY,CAAC,CAAC,EAAE;AAAA,MACtD,CAAC,CAAC,KAAK,MAAM,UAAU;AAAA,IACzB,IAAI,CAAC;AACL,QAAI,CAAC,SAAS,aAAa,CAAC,QAAQ,cAAc,CAAC,yBAAyB,KAAK,SAAS;AACxF;AACF,UAAM,MAAM,QAAQ,UAAU,SAAS;AACvC,WAAO,KAAK;AAAA,MACV,OAAO,QAAQ;AAAA,MACf,SAAS;AAAA,MACT,MAAM,KAAK,KAAK,UAAU,MAAM,GAAG,CAAC,CAAC;AAAA,IACvC,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEA,SAAS,MAAM,KAAa,UAAyB,KAAoB;AACvE,SAAO;AAAA,IACL,SAAS;AAAA,IACT,OAAO,CAAC,EAAE,MAAM,WAAW,SAAS,KAAK,GAAI,YAAY,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAG,CAAC;AAAA,EACrF;AACF;AAEA,eAAe,UACb,MACA,UACiD;AACjD,MAAI;AACF,UAAM,OAAO,MAAM,MAAM,IAAI;AAC7B,QAAI,CAAC,KAAK,OAAO,KAAK,KAAK,eAAe,KAAK,KAAK,OAAO;AACzD,YAAM,IAAI,MAAM,qBAAqB;AACvC,WAAO,iCAAiC;AAAA,MACtC,KAAK,MAAM,MAAM,SAAS,aAAa,MAAM,MAAM,CAAC;AAAA,IACtD;AAAA,EACF,SAAS,OAAO;AACd,QAAI,iBAAiB,SAAS,UAAU,SAAS,MAAM,SAAS,SAAU,QAAO;AACjF,UAAM,IAAI,MAAM,sBAAsB;AAAA,EACxC;AACF;AAEA,SAAS,aAAa,OAA0C;AAC9D,MAAI,CAAC,OAAO,KAAK,KAAK,CAAC,MAAM,QAAQ,MAAM,KAAK,KAAK,MAAM,MAAM,WAAW,EAAG,QAAO;AACtF,QAAM,OAAO,MAAM,MAAM,CAAC;AAC1B,SAAO,OAAO,IAAI,KAAK,OAAO,KAAK,YAAY,WAAW,KAAK,UAAU;AAC3E;AAEA,SAAS,eACP,QACA,SAC8B;AAC9B,QAAM,SAAuC,CAAC;AAC9C,MAAI,CAAC,OAAO,OAAO,KAAK,EAAG,QAAO;AAClC,aAAW,CAAC,OAAO,OAAO,KAAK,OAAO,QAAQ,OAAO,KAAK,GAAG;AAC3D,QAAI,CAAC,MAAM,QAAQ,OAAO,EAAG;AAC7B,eAAW,CAAC,OAAO,KAAK,KAAK,QAAQ,QAAQ,GAAG;AAC9C,YAAM,SAAS,KAAK,KAAK,UAAU,KAAK,CAAC;AACzC,YAAM,QAAQ,SAAS,QAAQ,KAAK,CAAC,SAAS,KAAK,UAAU,SAAS,KAAK,SAAS,MAAM;AAC1F,aAAO,KAAK;AAAA,QACV;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,OAAO,QAAQ,YAAY;AAAA,QAC3B,YAAY,QAAQ,iBAAiB;AAAA,QACrC,GAAI,QAAQ,EAAE,QAAQ,mBAAmB,IAAI,CAAC;AAAA,MAChD,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,YACP,QACA,OACA,SACkB;AAClB,MAAI,OAAO,UAAU,UAAa,CAAC,OAAO,OAAO,KAAK;AACpD,UAAM,IAAI,MAAM,yBAAyB;AAC3C,QAAM,QAAQ,OAAO,OAAO,KAAK,IAAI,OAAO,QAAQ,CAAC;AACrD,QAAM,QAA0B,CAAC;AACjC,QAAM,QAAQ,oBAAI,IAAY;AAC9B,QAAM,WAAW,oBAAI,IAAY;AACjC,aAAW,CAAC,OAAO,OAAO,KAAK,OAAO,QAAQ,KAAK,GAAG;AACpD,QAAI,CAAC,MAAM,QAAQ,OAAO,EAAG,OAAM,IAAI,MAAM,yBAAyB;AACtE,aAAS,QAAQ,QAAQ,SAAS,GAAG,SAAS,GAAG,SAAS;AACxD,YAAM,QAAQ,QAAQ,KAAK;AAC3B,UAAI,UAAU,OAAW;AACzB,YAAM,MAAM,aAAa,KAAK;AAC9B,YAAM,OAAO,OAAO,QAAQ,KAAK,CAAC,QAAQ,IAAI,UAAU,SAAS,IAAI,YAAY,GAAG;AACpF,YAAM,YAAY,KAAK,UAAU,KAAK,EAAE,SAAS,MAAM;AACvD,UAAI,CAAC,QAAQ,UAAW,OAAM,IAAI,MAAM,gCAAgC;AACxE,UAAI,CAAC,KAAM;AACX,UAAI,KAAK,KAAK,UAAU,KAAK,CAAC,MAAM,KAAK,QAAQ,MAAM,IAAI,QAAQ,MAAM,GAAG;AAC1E,cAAM,IAAI,MAAM,2BAA2B;AAC7C,YAAM,IAAI,QAAQ,MAAM,GAAG;AAC3B,UAAI,QAAQ,KAAK,CAAC,SAAS,KAAK,UAAU,SAAS,KAAK,SAAS,KAAK,IAAI;AACxE,iBAAS,IAAI,QAAQ,MAAM,GAAG;AAAA,UAC3B,OAAM,KAAK,EAAE,MAAM,CAAC,SAAS,OAAO,KAAK,EAAE,CAAC;AAAA,IACnD;AAAA,EACF;AACA,aAAW,QAAQ,SAAS;AAC1B,UAAM,UAAU,MAAM,KAAK,KAAK;AAChC,QAAI,YAAY,UAAa,CAAC,MAAM,QAAQ,OAAO;AACjD,YAAM,IAAI,MAAM,yBAAyB;AAC3C,QAAI,SAAS,IAAI,KAAK,QAAQ,MAAM,KAAK,OAAO,EAAG;AACnD,UAAM,WAAW,MAAM,OAAO,CAAC,WAAW,OAAO,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE;AACzE,UAAM;AAAA,MACJ,MAAM,QAAQ,OAAO,IACjB;AAAA,QACE,MAAM,CAAC,SAAS,KAAK,OAAO,QAAQ,SAAS,QAAQ;AAAA,QACrD,OAAO,MAAM,KAAK,OAAO;AAAA,QACzB,QAAQ;AAAA,MACV,IACA,EAAE,MAAM,CAAC,SAAS,KAAK,KAAK,GAAG,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,EAAE;AAAA,IAClE;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,aAAa,QAA0B;AAC9C,MAAI,CAAC,OAAO,SAAS,YAAY;AAC/B,WAAO;AACT,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,IAAI;AACb;AAEA,eAAe,gBACb,SACA,UACoC;AACpC,QAAM,UAAU,iCAAiC,QAAQ;AACzD,QAAM,aAAa,SAAS;AAC5B,QAAM,UAAU,aAAa,QAAQ;AACrC,QAAM,SAAoC;AAAA,IACxC;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP,YACE,WAAW,YAAY,iBAAiB,SAAS,OAAO,IACpD,aACA,WAAW,YAAY,mBAAmB,SAAS,OAAO,IACxD,eACA;AAAA,IACR,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,CAAC;AAAA,EAChB;AACA,MAAI,OAAO,eAAe,WAAY,QAAO,YAAY,KAAK,+BAA+B;AAC7F,MAAI,CAAC,YAAY,YAAY;AAC3B,WAAO,YAAY,KAAK,gCAAgC;AACxD,WAAO;AAAA,EACT;AACA,QAAM,aAAa,WAAW;AAC9B,QAAM,SAAS,MAAM,YAAY,QAAQ,aAAa,UAAU;AAChE,SAAO,aAAa;AACpB,QAAM,cAAcE,MAAK,QAAQ,UAAU,cAAc,WAAW,OAAO;AAC3E,QAAM,QAAQ,MAAM,UAAU,aAAa,QAAQ,QAAQ;AAC3D,MAAI,UAAU,MAAM,aAAa,YAAY,MAAM,eAAe;AAChE,UAAM,IAAI,MAAM,4BAA4B;AAC9C,MAAI,OAAO;AACT,UAAM,UAAU,eAAe,UAAU,OAAO,KAAK,QAAQ,QAAQ,CAAC;AAEtE,eAAW,CAAC,WAAW,OAAO,KAAK,OAAO,QAAQ,QAAQ,QAAQ,GAAG;AACnE,UAAI,CAAC,SAAS,aAAa,CAAC,QAAQ,WAAY;AAChD,YAAM,SACJ,6CACA,WACA,cACA,YACA,kBACA;AACF,iBAAW,aAAa,CAAC,QAAQ,QAAQ,UAAU,SAAS,CAAC,GAAG;AAC9D,gBAAQ,KAAK;AAAA,UACX,OAAO,QAAQ;AAAA,UACf,SAAS;AAAA,UACT,MAAM,KAAK,KAAK,UAAU,MAAM,WAAW,IAAI,CAAC,CAAC;AAAA,QACnD,CAAC;AAAA,MACH;AAAA,IACF;AACA,UAAM,QACJ,QAAQ,eAAe,WACnB,MAAM,QAAQ,WAAW,KACzB,MAAM,QAAQ,CAAC,GAAG,UAAU,YAC5B,MAAM,QAAQ,CAAC,GAAG,YAAY,mBAC9B,CAAC,aAAa,CAAC,CAAC,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE;AAAA,MAC/C,CAAC,SAAS,KAAK,IAAI,MAAM,MAAM,QAAQ,CAAC,GAAG;AAAA,IAC7C,IACA,MAAM,QAAQ;AAAA,MAAM,CAAC,SACnB,QAAQ;AAAA,QACN,CAAC,cACC,UAAU,UAAU,KAAK,SACzB,UAAU,YAAY,KAAK,WAC3B,UAAU,SAAS,KAAK;AAAA,MAC5B;AAAA,IACF;AACN,QAAI,CAAC,MAAO,OAAM,IAAI,MAAM,gCAAgC;AAC5D,WAAO,aAAa;AAAA,EACtB;AACA,MAAI,QAAQ,OAAO,WAAW,KAAK,CAAC,SAAS,CAAC,QAAQ,UAAU;AAC9D,WAAO,QAAQ;AACf,WAAO,YAAY,KAAK,wBAAwB;AAChD,WAAO;AAAA,EACT;AACA,MAAI,CAAC,QAAQ,WAAW,CAAC,QAAQ,UAAU;AACzC,WAAO,QAAQ;AACf,WAAO;AAAA,EACT;AACA,QAAM,UAAU,QAAQ,WAAW,CAAC,IAAI,eAAe,UAAU,QAAQ,MAAM;AAC/E,QAAM,WAAW;AAAA,IACf;AAAA,IACA,CAAC,MAAM,QAAQ,aAAa,YAAY,mBAAmB,MAAM,WAAW,UAAU;AAAA,IACtF,EAAE,SAAS,KAAM,OAAO,UAAU,KAAK,QAAQ,SAAS,eAAe;AAAA,EACzE;AACA,MAAI,SAAS,WAAW,GAAG;AACzB,WAAO,QAAQ;AACf,WAAO,YAAY,KAAK,qCAAqC;AAC7D,WAAO,qBAAqB,KAAK;AAAA,MAC/B,EAAE,OAAO,OAAO,YAAY,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;AAAA,MACxF;AAAA,MACA;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,MAAI,SAAS,SAAS,SAAS,UAAU,SAAS,WAAW;AAC3D,UAAM,IAAI,MAAM,8BAA8B;AAChD,aAAW,SAAS,QAAQ,QAAQ;AAClC,QAAI,CAAC,QAAQ,KAAK,CAAC,SAAS,KAAK,YAAY,QAAQ,UAAU,KAAK,CAAC;AACnE,aAAO,YAAY,KAAK,4BAA4B,KAAK;AAAA,EAC7D;AACA,MAAI,QAAQ,eAAe,UAAU;AACnC,eAAW,SAAS,QAAQ,OAAO,OAAO,CAACC,WAAUA,WAAU,YAAY;AACzE,aAAO,YAAY,KAAK,mCAAmC,KAAK;AAClE,QAAI,CAAC,QAAQ,YAAY,CAAC,QAAQ,OAAO,SAAS,YAAY,GAAG;AAC/D,aAAO,QAAQ;AACf,aAAO;AAAA,IACT;AACA,UAAM,OAAO,aAAa,QAAQ,MAAM;AACxC,UAAM,WAAWH,YAAW,MAAM,IAC9B,MAAM,QAAQ,SAAS,aAAa,QAAQ,MAAM,IAClD;AACJ,QAAI,aAAa,WAAc,CAAC,SAAS,MAAM,QAAQ,CAAC,GAAG,SAAS,KAAK,QAAQ,IAAI;AACnF,aAAO,QAAQ;AACf,aAAO,YAAY,KAAK,2BAA2B;AACnD,aAAO;AAAA,IACT;AACA,QAAI,QAAQ,UAAU;AACpB,UAAI,aAAa,UAAa,CAAC,QAAQ;AACrC,cAAM,aAAa,QAAQ,YAAY;AACrC,gBAAM,YAAY,QAAQ,aAAa,UAAU;AACjD,gBAAM,UAAUA,YAAW,MAAM,IAC7B,MAAM,QAAQ,SAAS,aAAa,QAAQ,MAAM,IAClD;AACJ,cAAI,YAAY,SAAU,OAAM,IAAI,MAAM,6BAA6B;AACvE,gBAAM,OAAO,MAAM;AAAA,QACrB,CAAC;AACH,aAAO,QAAQ;AACf,aAAO;AAAA,IACT;AACA,WAAO,QAAQ,aAAa,OAAO,YAAY;AAC/C,QAAI,CAAC,QAAQ,UAAU,aAAa,MAAM;AACxC,UAAI,aAAa;AACf;AAAA,UACE,QAAQ;AAAA,UACR,WAAW;AAAA,UACX;AAAA,UACA,QAAQ,SAAS;AAAA,QACnB;AACF,YAAM,aAAa,QAAQ,YAAY;AACrC,cAAM,YAAY,QAAQ,aAAa,UAAU;AACjD,cAAM,UAAUA,YAAW,MAAM,IAC7B,MAAM,QAAQ,SAAS,aAAa,QAAQ,MAAM,IAClD;AACJ,YAAI,YAAY,SAAU,OAAM,IAAI,MAAM,6BAA6B;AACvE,cAAM,gBAAgB,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,MACvD,CAAC;AACD,YAAM,gBAAgB;AAAA,QACpB,MAAM;AAAA,QACN,SACE,KAAK,UAAU;AAAA,UACb,eAAe;AAAA,UACf;AAAA,UACA,YAAY;AAAA,UACZ,SAAS,CAAC,EAAE,OAAO,UAAU,SAAS,iBAAiB,MAAM,KAAK,IAAI,EAAE,CAAC;AAAA,UACzE,aAAY,oBAAI,KAAK,GAAE,YAAY;AAAA,QACrC,CAAC,IAAI;AAAA,MACT,CAAC;AACD,aAAO,QAAQ;AACf,aAAO,aAAa;AAAA,IACtB;AACA,WAAO;AAAA,EACT;AACA,QAAM,SAAS,MAAM,0BAA0B,MAAM;AACrD,SAAO,UAAU,eAAe,QAAQ,KAAK;AAC7C,QAAM,QAAQ,YAAY,QAAQ,OAAO,OAAO;AAChD,SAAO,QAAQ,MAAM,SAAS,YAAY;AAC1C,MAAI,CAAC,QAAQ,QAAQ;AACnB,QAAI,CAACA,YAAW,MAAM;AACpB;AAAA,QACE,QAAQ;AAAA,QACR,WAAW;AAAA,QACX;AAAA,QACA,QAAQ,SAAS;AAAA,MACnB;AACF,UAAM,mBAAmB,QAAQ,CAAC,YAAY,YAAY,SAAS,OAAO,OAAO,CAAC;AAClF,UAAM,gBAAgB;AAAA,MACpB,MAAM;AAAA,MACN,SACE,KAAK,UAAU;AAAA,QACb,eAAe;AAAA,QACf;AAAA,QACA,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,aAAY,oBAAI,KAAK,GAAE,YAAY;AAAA,MACrC,CAAC,IAAI;AAAA,IACT,CAAC;AACD,WAAO,QAAQ,MAAM,SAAS,cAAc;AAC5C,WAAO,aAAa;AACpB,WAAO,UAAU;AAAA,MACf,MAAM,0BAA0B,MAAM;AAAA,MACtC,MAAM,UAAU,aAAa,QAAQ,QAAQ;AAAA,IAC/C;AAAA,EACF;AACA,SAAO;AACT;AAGO,SAAS,kCACd,SACS;AACT,SAAO,QAAQ;AAAA,IACb,CAAC,WACC,OAAO,UAAU,iBACjB,OAAO,YAAY;AAAA,MACjB,CAAC,SACC,KAAK,WAAW,yBAAyB,KACzC,KAAK,WAAW,gCAAgC;AAAA,IACpD;AAAA,EACJ;AACF;AAEA,eAAe,uBAAuB,SAAoD;AACxF,QAAM,WAAWD;AAAA,IACf,QAAQ;AAAA,IACRF;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,QACA,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,QACT,WAAW;AAAA,QACX,OAAO,CAAC,UAAU,QAAQ,QAAQ;AAAA,QAClC,KAAK,QAAQ,SAAS;AAAA,MACxB;AAAA,IACF,EAAE,KAAK;AAAA,EACT;AACA,QAAM,SAAS,MAAM,SAASI,SAAQ,QAAQ,CAAC;AAC/C,MACEF,SAAQ,QAAQ,QAAQ,MAAM,YAC7B,MAAM,SAASE,SAAQF,SAAQ,QAAQ,QAAQ,CAAC,CAAC,MAAO;AAEzD,UAAM,IAAI,MAAM,8BAA8B;AAChD,MACEC,YAAW,QAAQ,MAClB,EAAE,MAAM,MAAM,QAAQ,GAAG,YAAY,MAAM,MAAM,MAAM,QAAQ,GAAG,eAAe;AAElF,UAAM,IAAI,MAAM,8BAA8B;AAClD;AAGA,eAAsB,yBACpB,SACsC;AACtC,QAAM,YACJ,QAAQ,aACR,OAAO,QAAQ,gCAAgC,EAC5C;AAAA,IACC,CAAC,CAAC,IAAI,OAAO,MACX,QAAQ,oBACP,aAAa,EAAE,MAAM,UACnB,QAAQ,gBAAgB,eAAe,QACtCA;AAAA,MACEE,MAAK,QAAQ,aAAa,QAAQ,gBAAgB,WAAW,MAAM,GAAG,EAAE,CAAC,KAAK,EAAE;AAAA,IAClF;AAAA,EACR,EACC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE;AACrB,QAAM,WAAwC,CAAC;AAC/C,aAAW,YAAY,WAAW;AAChC,QAAI;AACF,UACE,CAAC,OAAO,OAAO,kCAAkC,QAAQ,KACzD,CAAC,oBAAoB,KAAK,QAAQ;AAElC,cAAM,IAAI,MAAM,uBAAuB;AACzC,YAAM,uBAAuB,OAAO;AACpC,eAAS;AAAA,QACP,QAAQ,SACJ,MAAM,gBAAgB,SAAS,QAAQ,IACvC,MAAM;AAAA,UAAaA,MAAK,QAAQ,UAAU,cAAc,WAAW,OAAO;AAAA,UAAG,MAC3E,gBAAgB,SAAS,QAAQ;AAAA,QACnC;AAAA,MACN;AAAA,IACF,SAAS,OAAO;AACd,eAAS,KAAK;AAAA,QACZ;AAAA,QACA,OAAO;AAAA,QACP,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,YAAY;AAAA,QACZ,aAAa;AAAA,UACX,iBAAiB,SAAS,iBAAiB,KAAK,MAAM,OAAO,IACzD,MAAM,UACN;AAAA,QACN;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO;AACT;",
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["execFileSync", "existsSync", "dirname", "isAbsolute", "join", "resolve", "execFileSync", "isAbsolute", "resolve", "existsSync", "dirname", "join", "event"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cleocode/adapters",
|
|
3
|
-
"version": "2026.10.
|
|
3
|
+
"version": "2026.10.16",
|
|
4
4
|
"description": "Unified provider adapters for CLEO (Claude Code, OpenCode, Cursor)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -27,9 +27,9 @@
|
|
|
27
27
|
"@ai-sdk/anthropic": "^3.0.69",
|
|
28
28
|
"@ai-sdk/openai": "^2.0.53",
|
|
29
29
|
"ai": "^6.0.168",
|
|
30
|
-
"@cleocode/caamp": "2026.10.
|
|
31
|
-
"@cleocode/contracts": "2026.10.
|
|
32
|
-
"@cleocode/paths": "2026.10.
|
|
30
|
+
"@cleocode/caamp": "2026.10.16",
|
|
31
|
+
"@cleocode/contracts": "2026.10.16",
|
|
32
|
+
"@cleocode/paths": "2026.10.16"
|
|
33
33
|
},
|
|
34
34
|
"license": "MIT",
|
|
35
35
|
"engines": {
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/node": "^24.3.0",
|
|
44
44
|
"vitest": "^4.1.4",
|
|
45
|
-
"@cleocode/core": "2026.10.
|
|
46
|
-
"@cleocode/playbooks": "2026.10.
|
|
45
|
+
"@cleocode/core": "2026.10.16",
|
|
46
|
+
"@cleocode/playbooks": "2026.10.16"
|
|
47
47
|
},
|
|
48
48
|
"repository": {
|
|
49
49
|
"type": "git",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** Project-local activation delivery, ownership and hash-guarded removal. */
|
|
2
2
|
import { execFileSync, spawnSync } from 'node:child_process';
|
|
3
3
|
import { createHash } from 'node:crypto';
|
|
4
|
+
import { existsSync } from 'node:fs';
|
|
4
5
|
import { mkdir, mkdtemp, readFile, rm, symlink, writeFile } from 'node:fs/promises';
|
|
5
6
|
import { tmpdir } from 'node:os';
|
|
6
7
|
import { join } from 'node:path';
|
|
@@ -96,6 +97,61 @@ describe('project hook delivery', () => {
|
|
|
96
97
|
expect(body).toContain(heavy);
|
|
97
98
|
expect(body).not.toContain('# cleo-project-hook:v1');
|
|
98
99
|
});
|
|
100
|
+
it('disable creates nothing for a never-activated provider (T13743)', async () => {
|
|
101
|
+
const opts = await options();
|
|
102
|
+
await rm(join(opts.projectRoot, '.codex'), { recursive: true });
|
|
103
|
+
const result = (await syncProjectHookProviders({ ...opts, enabled: false, rollback: true }))[0];
|
|
104
|
+
expect(result?.state).toBe('disabled');
|
|
105
|
+
expect(existsSync(join(opts.projectRoot, '.codex'))).toBe(false);
|
|
106
|
+
expect(existsSync(join(opts.stateDir, 'provider-codex.json'))).toBe(false);
|
|
107
|
+
});
|
|
108
|
+
it('disable deletes a config activation created and restores a pre-existing one byte-identically (T13743)', async () => {
|
|
109
|
+
const opts = await options();
|
|
110
|
+
const file = join(opts.projectRoot, '.codex/hooks.json');
|
|
111
|
+
await syncProjectHookProviders(opts);
|
|
112
|
+
expect(existsSync(file)).toBe(true);
|
|
113
|
+
await syncProjectHookProviders({ ...opts, enabled: false, rollback: true });
|
|
114
|
+
expect(existsSync(file)).toBe(false);
|
|
115
|
+
expect(existsSync(join(opts.stateDir, 'provider-codex.json'))).toBe(false);
|
|
116
|
+
// A second disable finds no receipt and writes nothing.
|
|
117
|
+
await syncProjectHookProviders({ ...opts, enabled: false, rollback: true });
|
|
118
|
+
expect(existsSync(file)).toBe(false);
|
|
119
|
+
const original = '{\n // team settings\n "model": "o4"\n}\n';
|
|
120
|
+
await writeFile(file, original);
|
|
121
|
+
expect((await syncProjectHookProviders(opts))[0]?.state).toBe('installed');
|
|
122
|
+
expect(await readFile(file, 'utf8')).toContain('# cleo-project-hook:v1');
|
|
123
|
+
await syncProjectHookProviders({ ...opts, enabled: false, rollback: true });
|
|
124
|
+
expect(await readFile(file, 'utf8')).toBe(original);
|
|
125
|
+
// Containers the file already had are never pruned.
|
|
126
|
+
const emptyHooks = '{"hooks":{}}\n';
|
|
127
|
+
await writeFile(file, emptyHooks);
|
|
128
|
+
await syncProjectHookProviders(opts);
|
|
129
|
+
await syncProjectHookProviders({ ...opts, enabled: false, rollback: true });
|
|
130
|
+
expect(await readFile(file, 'utf8')).toBe(emptyHooks);
|
|
131
|
+
});
|
|
132
|
+
it('disable deletes a receipt that delivered no entries (T13743)', async () => {
|
|
133
|
+
const opts = await options();
|
|
134
|
+
await syncProjectHookProviders({ ...opts, events: ['NoSuchEvent'] });
|
|
135
|
+
const receipt = join(opts.stateDir, 'provider-codex.json');
|
|
136
|
+
expect(existsSync(receipt)).toBe(true);
|
|
137
|
+
await syncProjectHookProviders({ ...opts, enabled: false, rollback: true });
|
|
138
|
+
expect(existsSync(receipt)).toBe(false);
|
|
139
|
+
expect(existsSync(join(opts.projectRoot, '.codex/hooks.json'))).toBe(false);
|
|
140
|
+
});
|
|
141
|
+
it('disable removes a config directory activation created only once it is empty (T13743)', async () => {
|
|
142
|
+
const opts = await options();
|
|
143
|
+
const dir = join(opts.projectRoot, '.codex');
|
|
144
|
+
await rm(dir, { recursive: true });
|
|
145
|
+
await syncProjectHookProviders(opts);
|
|
146
|
+
expect(existsSync(join(dir, 'hooks.json'))).toBe(true);
|
|
147
|
+
await syncProjectHookProviders({ ...opts, enabled: false, rollback: true });
|
|
148
|
+
expect(existsSync(dir)).toBe(false);
|
|
149
|
+
await syncProjectHookProviders(opts);
|
|
150
|
+
await writeFile(join(dir, 'team.toml'), 'model = "o4"\n');
|
|
151
|
+
await syncProjectHookProviders({ ...opts, enabled: false, rollback: true });
|
|
152
|
+
expect(existsSync(join(dir, 'hooks.json'))).toBe(false);
|
|
153
|
+
expect(await readFile(join(dir, 'team.toml'), 'utf8')).toBe('model = "o4"\n');
|
|
154
|
+
});
|
|
99
155
|
it('warns and allows native invocation when CLEO is absent or lacks the protocol', async () => {
|
|
100
156
|
const opts = await options();
|
|
101
157
|
await syncProjectHookProviders(opts);
|
|
@@ -213,6 +269,8 @@ describe('project hook delivery', () => {
|
|
|
213
269
|
(await syncProjectHookProviders({ ...openCode, enabled: false, rollback: true }))[0]?.state,
|
|
214
270
|
).toBe('disabled');
|
|
215
271
|
await expect(readFile(file)).rejects.toThrow();
|
|
272
|
+
expect(existsSync(join(opts.stateDir, 'provider-opencode.json'))).toBe(false);
|
|
273
|
+
expect(existsSync(join(opts.projectRoot, '.opencode'))).toBe(false);
|
|
216
274
|
});
|
|
217
275
|
it('reports Kimi project-local support unavailable without writing global hooks', async () => {
|
|
218
276
|
const opts = await options();
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { execFileSync, spawnSync } from 'node:child_process';
|
|
3
3
|
import { createHash } from 'node:crypto';
|
|
4
4
|
import { existsSync } from 'node:fs';
|
|
5
|
-
import { lstat, realpath, unlink } from 'node:fs/promises';
|
|
5
|
+
import { lstat, realpath, rmdir, unlink } from 'node:fs/promises';
|
|
6
6
|
import { homedir } from 'node:os';
|
|
7
7
|
import { dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
|
|
8
8
|
import {
|
|
@@ -157,6 +157,7 @@ function configEdits(
|
|
|
157
157
|
config: HookConfigObject,
|
|
158
158
|
prior: ProjectHookDeliveryReceipt | undefined,
|
|
159
159
|
desired: ProjectHookDeliveryReceipt['entries'],
|
|
160
|
+
created: ReadonlySet<string>,
|
|
160
161
|
): HookConfigEdit[] {
|
|
161
162
|
if (config.hooks !== undefined && !object(config.hooks))
|
|
162
163
|
throw new Error('HOOK_CONFIG_HOOKS_SHAPE');
|
|
@@ -182,6 +183,27 @@ function configEdits(
|
|
|
182
183
|
else edits.push({ path: ['hooks', event, index] });
|
|
183
184
|
}
|
|
184
185
|
}
|
|
186
|
+
// Drop only containers activation created and these removals empty (T13743).
|
|
187
|
+
const emptied = Object.entries(hooks)
|
|
188
|
+
.filter(
|
|
189
|
+
([event, entries]) =>
|
|
190
|
+
created.has('hooks/' + event) &&
|
|
191
|
+
Array.isArray(entries) &&
|
|
192
|
+
edits.filter((change) => change.path[1] === event).length === entries.length &&
|
|
193
|
+
!desired.some((next) => next.event === event),
|
|
194
|
+
)
|
|
195
|
+
.map(([event]) => event);
|
|
196
|
+
if (emptied.length > 0) {
|
|
197
|
+
const kept = edits.filter((change) => !emptied.includes(String(change.path[1])));
|
|
198
|
+
edits.length = 0;
|
|
199
|
+
if (
|
|
200
|
+
created.has('hooks') &&
|
|
201
|
+
emptied.length === Object.keys(hooks).length &&
|
|
202
|
+
desired.length === 0
|
|
203
|
+
)
|
|
204
|
+
edits.push({ path: ['hooks'] });
|
|
205
|
+
else edits.push(...kept, ...emptied.map((event) => ({ path: ['hooks', event] })));
|
|
206
|
+
}
|
|
185
207
|
for (const next of desired) {
|
|
186
208
|
const entries = hooks[next.event];
|
|
187
209
|
if (entries !== undefined && !Array.isArray(entries))
|
|
@@ -231,6 +253,41 @@ function pluginSource(events: string[]): string {
|
|
|
231
253
|
].join('\n');
|
|
232
254
|
}
|
|
233
255
|
|
|
256
|
+
/** Topmost missing ancestor of a config about to be written, else the receipt's record. */
|
|
257
|
+
function createdDirFor(
|
|
258
|
+
target: string,
|
|
259
|
+
prior: ProjectHookDeliveryReceipt | undefined,
|
|
260
|
+
): string | undefined {
|
|
261
|
+
let created = prior?.createdDir;
|
|
262
|
+
for (let dir = dirname(target); !existsSync(dir); dir = dirname(dir)) created = dir;
|
|
263
|
+
return created;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/** Remove empty directories activation created, strictly inside the checkout; rmdir keeps foreign files. */
|
|
267
|
+
async function removeCreatedDirs(
|
|
268
|
+
root: string,
|
|
269
|
+
target: string,
|
|
270
|
+
created: string | undefined,
|
|
271
|
+
): Promise<void> {
|
|
272
|
+
const inside = created ? relative(root, created) : '';
|
|
273
|
+
if (
|
|
274
|
+
!created ||
|
|
275
|
+
!inside ||
|
|
276
|
+
inside.startsWith('..') ||
|
|
277
|
+
isAbsolute(inside) ||
|
|
278
|
+
relative(created, target).startsWith('..') ||
|
|
279
|
+
existsSync(target)
|
|
280
|
+
)
|
|
281
|
+
return;
|
|
282
|
+
for (let dir = dirname(target); dir.length >= created.length; dir = dirname(dir)) {
|
|
283
|
+
try {
|
|
284
|
+
await rmdir(dir);
|
|
285
|
+
} catch {
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
234
291
|
async function deliverProvider(
|
|
235
292
|
options: ProjectHookDeliveryOptions,
|
|
236
293
|
provider: string,
|
|
@@ -303,6 +360,11 @@ async function deliverProvider(
|
|
|
303
360
|
if (!valid) throw new Error('HOOK_RECEIPT_OWNERSHIP_INVALID');
|
|
304
361
|
result.provenance = 'cleo-receipt';
|
|
305
362
|
}
|
|
363
|
+
// Disable undoes only what an activation receipt proves; it never creates files (T13743).
|
|
364
|
+
if (options.rollback && !prior) {
|
|
365
|
+
result.state = 'disabled';
|
|
366
|
+
return result;
|
|
367
|
+
}
|
|
306
368
|
if (options.events.length === 0 && !prior && !options.rollback) {
|
|
307
369
|
result.state = 'unsupported';
|
|
308
370
|
result.diagnostics.push('HOOK_NO_AGENT_BINDINGS');
|
|
@@ -360,11 +422,16 @@ async function deliverProvider(
|
|
|
360
422
|
if (current !== existing) throw new Error('HOOK_CONFIG_CONCURRENT_EDIT');
|
|
361
423
|
await unlink(target);
|
|
362
424
|
});
|
|
425
|
+
if (!options.dryRun) {
|
|
426
|
+
await removeCreatedDirs(options.projectRoot, target, prior?.createdDir);
|
|
427
|
+
await unlink(receiptPath);
|
|
428
|
+
}
|
|
363
429
|
result.state = 'disabled';
|
|
364
430
|
return result;
|
|
365
431
|
}
|
|
366
432
|
result.state = existing === body ? 'current' : 'planned';
|
|
367
433
|
if (!options.dryRun && existing !== body) {
|
|
434
|
+
const createdDir = createdDirFor(target, prior);
|
|
368
435
|
if (existing === undefined)
|
|
369
436
|
excludeHookFileFromGit(
|
|
370
437
|
options.projectRoot,
|
|
@@ -388,6 +455,7 @@ async function deliverProvider(
|
|
|
388
455
|
provider,
|
|
389
456
|
configPath: target,
|
|
390
457
|
entries: [{ event: 'plugin', command: 'cleo hook run', hash: hash(body) }],
|
|
458
|
+
createdDir,
|
|
391
459
|
recordedAt: new Date().toISOString(),
|
|
392
460
|
}) + '\n',
|
|
393
461
|
});
|
|
@@ -398,9 +466,28 @@ async function deliverProvider(
|
|
|
398
466
|
}
|
|
399
467
|
const config = await readManagedJsonConfigFile(target);
|
|
400
468
|
result.entries = inspectEntries(config, prior);
|
|
401
|
-
const
|
|
469
|
+
const created = new Set(prior?.createdContainers ?? []);
|
|
470
|
+
const edits = configEdits(config, prior, desired, created);
|
|
402
471
|
result.state = edits.length ? 'planned' : 'current';
|
|
472
|
+
if (!options.dryRun && options.rollback) {
|
|
473
|
+
if (existsSync(target)) {
|
|
474
|
+
await editJsonConfigFile(target, (current) => configEdits(current, prior, desired, created));
|
|
475
|
+
if (prior?.createdConfig)
|
|
476
|
+
await withFileLock(target, async () => {
|
|
477
|
+
await localTarget(options.projectRoot, configPath);
|
|
478
|
+
if (Object.keys(await readManagedJsonConfigFile(target)).length === 0)
|
|
479
|
+
await unlink(target);
|
|
480
|
+
});
|
|
481
|
+
}
|
|
482
|
+
await removeCreatedDirs(options.projectRoot, target, prior?.createdDir);
|
|
483
|
+
await unlink(receiptPath);
|
|
484
|
+
result.state = 'disabled';
|
|
485
|
+
result.entries = inspectEntries(await readManagedJsonConfigFile(target), undefined);
|
|
486
|
+
return result;
|
|
487
|
+
}
|
|
403
488
|
if (!options.dryRun) {
|
|
489
|
+
const createdConfig = existsSync(target) ? (prior?.createdConfig ?? false) : true;
|
|
490
|
+
const createdDir = createdDirFor(target, prior);
|
|
404
491
|
if (!existsSync(target))
|
|
405
492
|
excludeHookFileFromGit(
|
|
406
493
|
options.projectRoot,
|
|
@@ -408,7 +495,17 @@ async function deliverProvider(
|
|
|
408
495
|
undefined,
|
|
409
496
|
options.services.gitEnvironment,
|
|
410
497
|
);
|
|
411
|
-
await editJsonConfigFile(target, (current) =>
|
|
498
|
+
await editJsonConfigFile(target, (current) => {
|
|
499
|
+
const changes = configEdits(current, prior, desired, created);
|
|
500
|
+
if (current.hooks === undefined && changes.some((change) => change.value !== undefined))
|
|
501
|
+
created.add('hooks');
|
|
502
|
+
for (const change of changes) {
|
|
503
|
+
const key = change.path.slice(0, 2).join('/');
|
|
504
|
+
if (change.path.length === 2 && change.value !== undefined) created.add(key);
|
|
505
|
+
else if (change.path.length <= 2 && change.value === undefined) created.delete(key);
|
|
506
|
+
}
|
|
507
|
+
return changes;
|
|
508
|
+
});
|
|
412
509
|
await writeFileAtomic({
|
|
413
510
|
path: receiptPath,
|
|
414
511
|
content:
|
|
@@ -417,6 +514,9 @@ async function deliverProvider(
|
|
|
417
514
|
provider,
|
|
418
515
|
configPath: target,
|
|
419
516
|
entries: desired,
|
|
517
|
+
createdConfig,
|
|
518
|
+
createdDir,
|
|
519
|
+
createdContainers: [...created],
|
|
420
520
|
recordedAt: new Date().toISOString(),
|
|
421
521
|
}) + '\n',
|
|
422
522
|
});
|