@deftai/directive-runtime 0.129.0 → 0.129.2
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/.githooks/_directive-run.sh +9 -12
- package/.githooks/pre-push +1 -5
- package/UPGRADING.md +2 -2
- package/dist/doctor-diagnose.d.ts +8 -3
- package/dist/doctor-diagnose.js +29 -8
- package/dist/hook-dispatch.js +2 -1
- package/dist/pre-pr-run.js +9 -2
- package/dist/self-complete.d.ts +4 -0
- package/dist/self-complete.js +18 -0
- package/dist/setup-wiring.d.ts +5 -0
- package/dist/setup-wiring.js +123 -41
- package/dist/setup.js +73 -1
- package/package.json +1 -1
- package/packs/skills/skills-pack-0.1.json +2 -2
- package/skills/deft-directive-refinement/SKILL.md +2 -2
- package/skills/deft-directive-setup/SKILL.md +2 -2
- package/skills/deft-directive-swarm/references/core-phase-0.md +1 -1
- package/tasks/docs.yml +1 -1
- package/tasks/engine-invoke.cjs +37 -2
- package/tasks/engine-invoke.test.cjs +14 -0
- package/tasks/engine.yml +5 -0
- package/vendor/directive-content/.githooks/_directive-run.sh +9 -12
- package/vendor/directive-content/.githooks/pre-push +1 -5
- package/vendor/directive-content/UPGRADING.md +2 -2
- package/vendor/directive-content/packs/skills/skills-pack-0.1.json +2 -2
- package/vendor/directive-content/skills/deft-directive-refinement/SKILL.md +2 -2
- package/vendor/directive-content/skills/deft-directive-setup/SKILL.md +2 -2
- package/vendor/directive-content/skills/deft-directive-swarm/references/core-phase-0.md +1 -1
- package/vendor/directive-content/tasks/docs.yml +1 -1
- package/vendor/directive-content/tasks/engine-invoke.cjs +37 -2
- package/vendor/directive-content/tasks/engine-invoke.test.cjs +14 -0
- package/vendor/directive-content/tasks/engine.yml +5 -0
- package/vendor/directive-core/dist/.tsbuildinfo +1 -1
- package/vendor/directive-core/dist/class-checks/evaluate.d.ts.map +1 -1
- package/vendor/directive-core/dist/class-checks/evaluate.js +25 -0
- package/vendor/directive-core/dist/class-checks/evaluate.js.map +1 -1
- package/vendor/directive-core/dist/coverage-applicability/evaluate.d.ts.map +1 -1
- package/vendor/directive-core/dist/coverage-applicability/evaluate.js +135 -6
- package/vendor/directive-core/dist/coverage-applicability/evaluate.js.map +1 -1
- package/vendor/directive-core/dist/coverage-hotspots/evaluate.d.ts +2 -0
- package/vendor/directive-core/dist/coverage-hotspots/evaluate.d.ts.map +1 -1
- package/vendor/directive-core/dist/coverage-hotspots/evaluate.js +19 -6
- package/vendor/directive-core/dist/coverage-hotspots/evaluate.js.map +1 -1
- package/vendor/directive-core/dist/fs/contained-write.d.ts +12 -0
- package/vendor/directive-core/dist/fs/contained-write.d.ts.map +1 -1
- package/vendor/directive-core/dist/fs/contained-write.js +35 -1
- package/vendor/directive-core/dist/fs/contained-write.js.map +1 -1
- package/vendor/directive-core/dist/init-deposit/agent-hooks.d.ts +1 -0
- package/vendor/directive-core/dist/init-deposit/agent-hooks.d.ts.map +1 -1
- package/vendor/directive-core/dist/init-deposit/agent-hooks.js +75 -72
- package/vendor/directive-core/dist/init-deposit/agent-hooks.js.map +1 -1
- package/vendor/directive-core/dist/init-deposit/host-hook-outer.d.ts +26 -0
- package/vendor/directive-core/dist/init-deposit/host-hook-outer.d.ts.map +1 -0
- package/vendor/directive-core/dist/init-deposit/host-hook-outer.js +158 -0
- package/vendor/directive-core/dist/init-deposit/host-hook-outer.js.map +1 -0
- package/vendor/directive-core/dist/init-deposit/hygiene.d.ts.map +1 -1
- package/vendor/directive-core/dist/init-deposit/hygiene.js +29 -1
- package/vendor/directive-core/dist/init-deposit/hygiene.js.map +1 -1
- package/vendor/directive-core/dist/install-health/wiring.d.ts.map +1 -1
- package/vendor/directive-core/dist/install-health/wiring.js +141 -1
- package/vendor/directive-core/dist/install-health/wiring.js.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/controller.d.ts +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/controller.d.ts.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/controller.js +43 -15
- package/vendor/directive-core/dist/pre-pr-controller/controller.js.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/coverage-report.d.ts +22 -0
- package/vendor/directive-core/dist/pre-pr-controller/coverage-report.d.ts.map +1 -0
- package/vendor/directive-core/dist/pre-pr-controller/coverage-report.js +48 -0
- package/vendor/directive-core/dist/pre-pr-controller/coverage-report.js.map +1 -0
- package/vendor/directive-core/dist/pre-pr-controller/types.d.ts +7 -0
- package/vendor/directive-core/dist/pre-pr-controller/types.d.ts.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/types.js.map +1 -1
- package/vendor/directive-core/dist/xbrief-migrate/migrate-project.d.ts +5 -4
- package/vendor/directive-core/dist/xbrief-migrate/migrate-project.d.ts.map +1 -1
- package/vendor/directive-core/dist/xbrief-migrate/migrate-project.js +65 -46
- package/vendor/directive-core/dist/xbrief-migrate/migrate-project.js.map +1 -1
- package/vendor/directive-core/dist/xbrief-migrate/transforms.d.ts.map +1 -1
- package/vendor/directive-core/dist/xbrief-migrate/transforms.js +13 -6
- package/vendor/directive-core/dist/xbrief-migrate/transforms.js.map +1 -1
package/dist/setup.js
CHANGED
|
@@ -9,14 +9,20 @@ import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
|
9
9
|
import { dirname, join } from "node:path";
|
|
10
10
|
import { fileURLToPath } from "node:url";
|
|
11
11
|
import { ContainedWriteError, containedRemove, containedWrite, } from "../vendor/directive-core/dist/fs/contained-write.js";
|
|
12
|
+
import { defaultTrackedNames, isTrackedDeletePath, stageFrameworkPaths, } from "../vendor/directive-core/dist/init-deposit/hygiene.js";
|
|
13
|
+
import { seedMinimalProjectDefinition } from "../vendor/directive-core/dist/init-deposit/init-deposit.js";
|
|
12
14
|
import { buildOwnershipRecord, fingerprintContent, ownershipRecordsEqual, readEvidenceGenerationNumber, readOwnershipRecord, writeOwnershipRecord, } from "../vendor/directive-core/dist/install-health/index.js";
|
|
13
15
|
import { assertInventoryCompleteness } from "./installer-output-inventory.js";
|
|
14
16
|
import { CURRENT_DATA_SCHEMA_VERSION, DATA_SCHEMA_MARKER_REL } from "./migrate.js";
|
|
15
17
|
import { isConvertStrategyFrom, runStrategy } from "./removal-steps/index.js";
|
|
16
18
|
import { ensureAgentsManagedSection, ensureGitHooks, ensureHostHooks, ensureOpenClawIntegrations, ensureSkillPointers, ensureSlashCommands, ensureTaskfileInclude, listSkillPointerPaths, listVerifiedManagedSlashCommandPaths, RUNTIME_PREFIX, } from "./setup-wiring.js";
|
|
17
19
|
const SEED_PLACEHOLDER_REL = "xbrief/.directive-seed-placeholder";
|
|
20
|
+
const PD_REL = "xbrief/PROJECT-DEFINITION.xbrief.json";
|
|
18
21
|
const GEN_REL = ".deft/GENERATION.json";
|
|
19
22
|
const WIRING_READY_DIR_REL = ".deft/directive";
|
|
23
|
+
const XBRIEF_LIFECYCLE_DIRS = ["proposed", "pending", "active", "completed", "cancelled"];
|
|
24
|
+
const XBRIEF_LIFECYCLE_GITKEEP = "# Keeps this xbrief/ lifecycle directory present in version control so the\n" +
|
|
25
|
+
"# deft-directive-setup pre-cutover guard does not fire on a fresh install (#4666).\n";
|
|
20
26
|
function readOwnRuntimeVersion() {
|
|
21
27
|
try {
|
|
22
28
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
@@ -144,6 +150,59 @@ function createSeedPlaceholder(projectRoot) {
|
|
|
144
150
|
writeContained(projectRoot, SEED_PLACEHOLDER_REL, "# Directive initial seed placeholder (install only; repair must not create this).\n");
|
|
145
151
|
return SEED_PLACEHOLDER_REL;
|
|
146
152
|
}
|
|
153
|
+
/** Install-only: five xbrief lifecycle dirs + .gitkeeps (#4666 / AC8.4). */
|
|
154
|
+
function ensureXbriefLifecycleGitkeeps(projectRoot) {
|
|
155
|
+
const created = [];
|
|
156
|
+
for (const sub of XBRIEF_LIFECYCLE_DIRS) {
|
|
157
|
+
const rel = relPosix("xbrief", sub, ".gitkeep");
|
|
158
|
+
if (existsSync(join(projectRoot, rel)))
|
|
159
|
+
continue;
|
|
160
|
+
writeContained(projectRoot, rel, XBRIEF_LIFECYCLE_GITKEEP);
|
|
161
|
+
created.push(rel);
|
|
162
|
+
}
|
|
163
|
+
return created;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Stage this-run setup writes after install/upgrade (#4666).
|
|
167
|
+
* Always includes PD + lifecycle gitkeeps when present (fix the 0.126 hole).
|
|
168
|
+
* Does not `git add` every existing managed matcher path — that would stage
|
|
169
|
+
* unrelated dirty peers (package.json / custom .githooks/*). Keeps exact
|
|
170
|
+
* this-run paths (no skill/command parent compaction) so sibling untracked
|
|
171
|
+
* skills stay unstaged. This-run removals may be missing on disk so tracked
|
|
172
|
+
* deletions can reach `git add`; untracked missing paths are skipped so one
|
|
173
|
+
* unmatched pathspec cannot fail the whole staging batch (#5883 P1 / #3394).
|
|
174
|
+
*/
|
|
175
|
+
function stageSetupManagedPaths(projectRoot, thisRunPaths) {
|
|
176
|
+
const present = [];
|
|
177
|
+
const missingAllow = [];
|
|
178
|
+
const seen = new Set();
|
|
179
|
+
const add = (rel, opts = {}) => {
|
|
180
|
+
const normalized = rel.replace(/\\/g, "/");
|
|
181
|
+
if (!normalized || seen.has(normalized))
|
|
182
|
+
return;
|
|
183
|
+
const onDisk = existsSync(join(projectRoot, normalized));
|
|
184
|
+
if (!onDisk && !opts.allowMissing)
|
|
185
|
+
return;
|
|
186
|
+
seen.add(normalized);
|
|
187
|
+
if (onDisk)
|
|
188
|
+
present.push(normalized);
|
|
189
|
+
else
|
|
190
|
+
missingAllow.push(normalized);
|
|
191
|
+
};
|
|
192
|
+
for (const rel of thisRunPaths) {
|
|
193
|
+
add(rel, { allowMissing: true });
|
|
194
|
+
}
|
|
195
|
+
add(PD_REL);
|
|
196
|
+
for (const sub of XBRIEF_LIFECYCLE_DIRS) {
|
|
197
|
+
add(relPosix("xbrief", sub, ".gitkeep"));
|
|
198
|
+
}
|
|
199
|
+
const tracked = new Set(defaultTrackedNames(projectRoot, missingAllow));
|
|
200
|
+
const stagePaths = [
|
|
201
|
+
...present,
|
|
202
|
+
...missingAllow.filter((path) => isTrackedDeletePath(path, tracked)),
|
|
203
|
+
];
|
|
204
|
+
stageFrameworkPaths(projectRoot, stagePaths);
|
|
205
|
+
}
|
|
147
206
|
/** Shared host settings / Taskfile: only Directive entries are owned (structured-entry). */
|
|
148
207
|
const STRUCTURED_ENTRY_RELS = [
|
|
149
208
|
{ path: ".claude/settings.json", entryKey: "hooks" },
|
|
@@ -207,7 +266,9 @@ function buildOwnershipArtifacts(projectRoot) {
|
|
|
207
266
|
});
|
|
208
267
|
}
|
|
209
268
|
const seedAbs = join(projectRoot, SEED_PLACEHOLDER_REL);
|
|
210
|
-
|
|
269
|
+
const pdAbs = join(projectRoot, PD_REL);
|
|
270
|
+
const hasLifecycle = XBRIEF_LIFECYCLE_DIRS.some((sub) => existsSync(join(projectRoot, "xbrief", sub, ".gitkeep")));
|
|
271
|
+
if (existsSync(seedAbs) || existsSync(pdAbs) || hasLifecycle) {
|
|
211
272
|
artifacts.push({
|
|
212
273
|
path: "xbrief",
|
|
213
274
|
kind: "retained",
|
|
@@ -312,10 +373,15 @@ export function runSetup(options) {
|
|
|
312
373
|
// Seeds only on first-time install (AC8.4); repair/upgrade never create them.
|
|
313
374
|
// AC6.2: leave data-schema current for empty/seeded install. Repair may write a
|
|
314
375
|
// missing marker (not a migration); upgrade still migrates when data is behind.
|
|
376
|
+
// #4666: greenfield retain — PD + lifecycle dirs (not placeholder-only); no schemas.
|
|
315
377
|
if (operation === "install" && conflicts.length === 0) {
|
|
316
378
|
const seed = createSeedPlaceholder(root);
|
|
317
379
|
if (seed !== null)
|
|
318
380
|
created.push(seed);
|
|
381
|
+
created.push(...ensureXbriefLifecycleGitkeeps(root));
|
|
382
|
+
if (seedMinimalProjectDefinition(root, { printf: () => undefined })) {
|
|
383
|
+
created.push(PD_REL);
|
|
384
|
+
}
|
|
319
385
|
}
|
|
320
386
|
if ((operation === "install" || operation === "repair") &&
|
|
321
387
|
conflicts.length === 0 &&
|
|
@@ -338,6 +404,12 @@ export function runSetup(options) {
|
|
|
338
404
|
created.push(GEN_REL);
|
|
339
405
|
else if (!unchanged || legacyConversion || convertViaRemovals)
|
|
340
406
|
modified.push(GEN_REL);
|
|
407
|
+
// #4666: stage this-run managed peers including PD + lifecycle after install/upgrade.
|
|
408
|
+
// Still no auto-commit. Repair does not stage (seeds are install-only; upgrade stages
|
|
409
|
+
// existing PD/lifecycle with refreshed wiring).
|
|
410
|
+
if (conflicts.length === 0 && (operation === "install" || operation === "upgrade")) {
|
|
411
|
+
stageSetupManagedPaths(root, [...created, ...modified, ...removed]);
|
|
412
|
+
}
|
|
341
413
|
if (conflicts.length > 0) {
|
|
342
414
|
// Never publish readiness after conflict; invalidate any existing marker (AC8.6).
|
|
343
415
|
invalidateReadinessMarkers(root, removed);
|
package/package.json
CHANGED