@deftai/directive 0.72.0 → 0.73.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.
@@ -16,10 +16,10 @@ function gitCommit(cwd, message) {
16
16
  });
17
17
  }
18
18
  function writeProjectDef(root, plan) {
19
- const dir = join(root, "vbrief");
19
+ const dir = join(root, "xbrief");
20
20
  mkdirSync(dir, { recursive: true });
21
- writeFileSync(join(dir, "PROJECT-DEFINITION.vbrief.json"), `${JSON.stringify({
22
- vBRIEFInfo: { version: "0.6" },
21
+ writeFileSync(join(dir, "PROJECT-DEFINITION.xbrief.json"), `${JSON.stringify({
22
+ xBRIEFInfo: { version: "0.8" },
23
23
  plan: { title: "T", status: "running", items: [], ...plan },
24
24
  }, null, 2)}\n`, { encoding: "utf8" });
25
25
  }
package/dist/doctor.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- /** Advisory when a consumer deposit carries git-vendored framework source (#2142). */
2
+ /** Advisory when a consumer deposit carries git-vendored framework source (#2142 / #2347). */
3
3
  export declare function renderStrayPackagesAdvisoryLine(projectRoot: string): string;
4
4
  export declare function run(argv: string[]): number;
5
5
  //# sourceMappingURL=doctor.d.ts.map
package/dist/doctor.js CHANGED
@@ -6,15 +6,16 @@ import { parseDoctorFlags } from "@deftai/directive-core/dist/doctor/flags.js";
6
6
  import { cmdDoctor } from "@deftai/directive-core/dist/doctor/main.js";
7
7
  import { renderPrecutoverLine } from "@deftai/directive-core/dist/vbrief-validate/precutover.js";
8
8
  import { renderStaleHeaderLine, renderXbriefMigrationLine, } from "@deftai/directive-core/xbrief-migrate";
9
- /** Advisory when a consumer deposit carries git-vendored framework source (#2142). */
9
+ /** Advisory when a consumer deposit carries git-vendored framework source (#2142 / #2347). */
10
10
  export function renderStrayPackagesAdvisoryLine(projectRoot) {
11
11
  const packagesDir = join(projectRoot, ".deft", "core", "packages");
12
12
  if (!existsSync(packagesDir)) {
13
13
  return "Deposit hygiene: none -- .deft/core contains no stray packages/ source tree.";
14
14
  }
15
15
  return ("Deposit hygiene: advisory -- .deft/core/packages/ is present (git-vendored framework source, " +
16
- "not shipped by npm @deftai/directive-content). Upgrade directive to pick up task guard fixes; " +
17
- "consider removing the stray tree from version control.");
16
+ "not shipped by npm @deftai/directive-content). " +
17
+ "Run `directive update` to auto-prune this stray tree, then commit the result (#2347). " +
18
+ "Or remove it manually: `git rm -r --cached .deft/core/packages && git commit -m 'chore: remove stray framework source'`.");
18
19
  }
19
20
  export function run(argv) {
20
21
  // #2022: surface pre-cutover (pre-v0.20 document model) migration state alongside the
@@ -56,9 +56,9 @@ export function initGitRepo(root) {
56
56
  return execFileSync("git", ["rev-parse", "HEAD"], { cwd: root, encoding: "utf8" }).trim();
57
57
  }
58
58
  export function writeProjectDef(root, policy = {}) {
59
- mkdirSync(join(root, "vbrief"), { recursive: true });
60
- writeFileSync(join(root, "vbrief", "PROJECT-DEFINITION.vbrief.json"), JSON.stringify({
61
- vBRIEFInfo: { version: "0.6" },
59
+ mkdirSync(join(root, "xbrief"), { recursive: true });
60
+ writeFileSync(join(root, "xbrief", "PROJECT-DEFINITION.xbrief.json"), JSON.stringify({
61
+ xBRIEFInfo: { version: "0.8" },
62
62
  plan: { title: "T", status: "running", items: [], policy },
63
63
  }), "utf8");
64
64
  }
@@ -10,17 +10,17 @@ export function normalizeOutput(text) {
10
10
  .replace(/fail-closed: PROJECT-DEFINITION not found at [^)]+/g, "fail-closed: PROJECT-DEFINITION not found at <ROOT>");
11
11
  }
12
12
  function writeFixture(root, plan) {
13
- const dir = join(root, "vbrief");
13
+ const dir = join(root, "xbrief");
14
14
  mkdirSync(dir, { recursive: true });
15
- writeFileSync(join(dir, "PROJECT-DEFINITION.vbrief.json"), `${JSON.stringify({
16
- vBRIEFInfo: { version: "0.6" },
15
+ writeFileSync(join(dir, "PROJECT-DEFINITION.xbrief.json"), `${JSON.stringify({
16
+ xBRIEFInfo: { version: "0.8" },
17
17
  plan: { title: "T", status: "running", items: [], ...plan },
18
18
  }, null, 2)}\n`, { encoding: "utf8" });
19
19
  }
20
20
  /** Build a throwaway project root with optional PROJECT-DEFINITION plan payload. */
21
21
  export function buildFixtureRepo(plan) {
22
22
  const root = mkdtempSync(join(tmpdir(), "deft-policy-parity-"));
23
- mkdirSync(join(root, "vbrief"), { recursive: true });
23
+ mkdirSync(join(root, "xbrief"), { recursive: true });
24
24
  if (plan !== undefined) {
25
25
  writeFixture(root, plan);
26
26
  }
@@ -4,11 +4,11 @@ import { mkdirSync, mkdtempSync, writeFileSync } from "node:fs";
4
4
  import { tmpdir } from "node:os";
5
5
  import { dirname, join } from "node:path";
6
6
  function writeVbrief(root, rel, status = "running", folder = "active") {
7
- const full = join(root, "vbrief", folder, rel);
7
+ const full = join(root, "xbrief", folder, rel);
8
8
  mkdirSync(dirname(full), { recursive: true });
9
9
  const payload = {
10
10
  plan: { status, title: "T", items: [] },
11
- vBRIEFInfo: { version: "0.6" },
11
+ xBRIEFInfo: { version: "0.8" },
12
12
  };
13
13
  writeFileSync(full, `${JSON.stringify(payload)}\n`, "utf8");
14
14
  }
@@ -23,7 +23,7 @@ function renderAllocation(fields) {
23
23
  const VALID_COHORT = {
24
24
  allocation_plan_id: "orchestrator-run-019e80bd",
25
25
  batching_rationale: "Three disjoint-file-scope stories from #1378.",
26
- cohort_vbriefs: "[vbrief/active/a.json, vbrief/active/b.json]",
26
+ cohort_vbriefs: "[xbrief/active/a.json, xbrief/active/b.json]",
27
27
  dispatch_kind: "swarm-cohort",
28
28
  operator_approval_evidence: "user directive 2026-06-01T02:26Z",
29
29
  };
@@ -31,29 +31,29 @@ const VALID_COHORT = {
31
31
  export const PARITY_SCENARIOS = [
32
32
  {
33
33
  name: "clean-active-running-solo",
34
- vbriefRel: "2026-06-01-story.vbrief.json",
34
+ vbriefRel: "2026-06-01-story.xbrief.json",
35
35
  envelopeRel: null,
36
36
  },
37
37
  {
38
38
  name: "dirty-tree",
39
- vbriefRel: "2026-06-01-story.vbrief.json",
39
+ vbriefRel: "2026-06-01-story.xbrief.json",
40
40
  envelopeRel: null,
41
41
  dirty: true,
42
42
  },
43
43
  {
44
44
  name: "non-running-vbrief",
45
- vbriefRel: "2026-06-01-pending.vbrief.json",
45
+ vbriefRel: "2026-06-01-pending.xbrief.json",
46
46
  vbriefStatus: "approved",
47
47
  envelopeRel: null,
48
48
  },
49
49
  {
50
50
  name: "satisfied-swarm-cohort",
51
- vbriefRel: "2026-06-01-story.vbrief.json",
51
+ vbriefRel: "2026-06-01-story.xbrief.json",
52
52
  envelopeRel: "envelope-cohort.md",
53
53
  },
54
54
  {
55
55
  name: "malformed-allocation",
56
- vbriefRel: "2026-06-01-story.vbrief.json",
56
+ vbriefRel: "2026-06-01-story.xbrief.json",
57
57
  envelopeRel: "envelope-bad.md",
58
58
  },
59
59
  ];
@@ -99,7 +99,7 @@ export function buildScenarioRepo(scenario) {
99
99
  if (!scenario.dirty) {
100
100
  gitCommit(root, "init");
101
101
  }
102
- const vbriefPath = join(root, "vbrief", "active", vbriefName);
102
+ const vbriefPath = join(root, "xbrief", "active", vbriefName);
103
103
  return { root, vbriefPath, envelopePath };
104
104
  }
105
105
  /** Diff python vs TS gate outputs across all parity scenarios. */
@@ -37,8 +37,8 @@ export function diffCase(python, ts, caseName) {
37
37
  };
38
38
  }
39
39
  function writeProjectDefinition(root, policy = {}) {
40
- mkdirSync(join(root, "vbrief"), { recursive: true });
41
- writeFileSync(join(root, "vbrief", "PROJECT-DEFINITION.vbrief.json"), `${JSON.stringify({ vBRIEFInfo: { version: "0.6" }, plan: { policy } }, null, 2)}\n`, "utf8");
40
+ mkdirSync(join(root, "xbrief"), { recursive: true });
41
+ writeFileSync(join(root, "xbrief", "PROJECT-DEFINITION.xbrief.json"), `${JSON.stringify({ xBRIEFInfo: { version: "0.8" }, plan: { policy } }, null, 2)}\n`, "utf8");
42
42
  }
43
43
  export const PARITY_CASES = [
44
44
  {
@@ -82,7 +82,7 @@ export const PARITY_CASES = [
82
82
  ];
83
83
  export function buildFixtureRepo(setup) {
84
84
  const root = mkdtempSync(join(tmpdir(), "deft-triage-aux-a-parity-"));
85
- mkdirSync(join(root, "vbrief"), { recursive: true });
85
+ mkdirSync(join(root, "xbrief"), { recursive: true });
86
86
  setup?.(root);
87
87
  return root;
88
88
  }
@@ -12,9 +12,9 @@ export function normalizeOutput(text) {
12
12
  .replace(/Installed \d+ packages[^\n]*\n/g, "");
13
13
  }
14
14
  function writeProjectDefinition(root, policy = {}) {
15
- mkdirSync(join(root, "vbrief"), { recursive: true });
16
- writeFileSync(join(root, "vbrief", "PROJECT-DEFINITION.vbrief.json"), `${JSON.stringify({
17
- vBRIEFInfo: { version: "0.6" },
15
+ mkdirSync(join(root, "xbrief"), { recursive: true });
16
+ writeFileSync(join(root, "xbrief", "PROJECT-DEFINITION.xbrief.json"), `${JSON.stringify({
17
+ xBRIEFInfo: { version: "0.8" },
18
18
  plan: { title: "T", status: "running", items: [], policy },
19
19
  }, null, 2)}\n`, { encoding: "utf8" });
20
20
  }
@@ -32,7 +32,7 @@ export interface ParityResult {
32
32
  export declare function normalizeOutput(text: string): string;
33
33
  /** Compare stdout, parsing JSON payloads when present. */
34
34
  export declare function normalizeStdout(text: string): string;
35
- /** Build a throwaway project root with optional vBRIEF fixtures. */
35
+ /** Build a throwaway project root with optional xBRIEF fixtures. */
36
36
  export declare function buildFixtureRepo(options?: FixtureOptions): string;
37
37
  /** Diff one parity case between Python oracle and TS CLI. */
38
38
  export declare function diffCase(python: CommandCapture, ts: CommandCapture, caseName: string): ParityDiff;
@@ -33,7 +33,7 @@ export function normalizeStdout(text) {
33
33
  if (typeof details === "object" && details !== null) {
34
34
  const detailRecord = details;
35
35
  if (typeof detailRecord.audit_path === "string") {
36
- detailRecord.audit_path = "<ROOT>/vbrief/.eval/candidates.jsonl";
36
+ detailRecord.audit_path = "<ROOT>/xbrief/.triage-cache/candidates.jsonl";
37
37
  }
38
38
  if (typeof detailRecord.fetch_timeout_s === "number") {
39
39
  detailRecord.fetch_timeout_s = Math.trunc(detailRecord.fetch_timeout_s);
@@ -53,10 +53,10 @@ export function normalizeStdout(text) {
53
53
  return normalizeOutput(text);
54
54
  }
55
55
  function writeScopeVbrief(root, folder, slug, issueNumber) {
56
- const dir = join(root, "vbrief", folder);
56
+ const dir = join(root, "xbrief", folder);
57
57
  mkdirSync(dir, { recursive: true });
58
- writeFileSync(join(dir, `${slug}.vbrief.json`), `${JSON.stringify({
59
- vBRIEFInfo: { version: "0.6" },
58
+ writeFileSync(join(dir, `${slug}.xbrief.json`), `${JSON.stringify({
59
+ xBRIEFInfo: { version: "0.8" },
60
60
  plan: {
61
61
  id: slug,
62
62
  title: slug,
@@ -70,10 +70,10 @@ function writeScopeVbrief(root, folder, slug, issueNumber) {
70
70
  },
71
71
  })}\n`, { encoding: "utf8" });
72
72
  }
73
- /** Build a throwaway project root with optional vBRIEF fixtures. */
73
+ /** Build a throwaway project root with optional xBRIEF fixtures. */
74
74
  export function buildFixtureRepo(options = {}) {
75
75
  const root = mkdtempSync(join(tmpdir(), "deft-triage-bootstrap-parity-"));
76
- mkdirSync(join(root, "vbrief"), { recursive: true });
76
+ mkdirSync(join(root, "xbrief"), { recursive: true });
77
77
  for (const item of options.scopeVbriefs ?? []) {
78
78
  writeScopeVbrief(root, item.folder, item.slug, item.issue);
79
79
  }
@@ -11,19 +11,19 @@ export function normalizeOutput(text) {
11
11
  .replace(/\S*deft-triage-classify-parity-[^\s/]+/g, "<TMPROOT>"));
12
12
  }
13
13
  function writeProjectDefinition(root, plan) {
14
- const dir = join(root, "vbrief");
14
+ const dir = join(root, "xbrief");
15
15
  mkdirSync(dir, { recursive: true });
16
- writeFileSync(join(dir, "PROJECT-DEFINITION.vbrief.json"), `${JSON.stringify({
17
- vBRIEFInfo: { version: "0.6" },
16
+ writeFileSync(join(dir, "PROJECT-DEFINITION.xbrief.json"), `${JSON.stringify({
17
+ xBRIEFInfo: { version: "0.8" },
18
18
  plan: { title: "T", status: "running", items: [], ...plan },
19
19
  }, null, 2)}\n`, { encoding: "utf8" });
20
20
  }
21
21
  /** Build a throwaway project root with optional PROJECT-DEFINITION. */
22
22
  export function buildFixtureRepo(options = {}) {
23
23
  const root = mkdtempSync(join(tmpdir(), "deft-triage-classify-parity-"));
24
- mkdirSync(join(root, "vbrief"), { recursive: true });
24
+ mkdirSync(join(root, "xbrief"), { recursive: true });
25
25
  if (options.rawProjectDefinition !== undefined) {
26
- writeFileSync(join(root, "vbrief", "PROJECT-DEFINITION.vbrief.json"), `${JSON.stringify(options.rawProjectDefinition, null, 2)}\n`, { encoding: "utf8" });
26
+ writeFileSync(join(root, "xbrief", "PROJECT-DEFINITION.xbrief.json"), `${JSON.stringify(options.rawProjectDefinition, null, 2)}\n`, { encoding: "utf8" });
27
27
  }
28
28
  else if (!options.omitProjectDefinition && options.plan !== undefined) {
29
29
  writeProjectDefinition(root, options.plan);
@@ -109,7 +109,7 @@ export const PARITY_CASES = [
109
109
  argv: ["--validate"],
110
110
  fixture: {
111
111
  rawProjectDefinition: {
112
- vBRIEFInfo: { version: "0.6" },
112
+ xBRIEFInfo: { version: "0.8" },
113
113
  plan: null,
114
114
  },
115
115
  },
@@ -29,7 +29,7 @@ function writeCachedIssue(root, repo, issue) {
29
29
  writeFileSync(join(dir, "raw.json"), `${JSON.stringify(raw)}\n`, { encoding: "utf8" });
30
30
  }
31
31
  function writeAuditLog(root, repo, entries) {
32
- const dir = join(root, "vbrief", ".eval");
32
+ const dir = join(root, "xbrief", ".triage-cache");
33
33
  mkdirSync(dir, { recursive: true });
34
34
  const lines = entries.map((entry) => JSON.stringify({
35
35
  decision_id: `id-${entry.issueNumber}-${entry.decision}`,
@@ -42,19 +42,19 @@ function writeAuditLog(root, repo, entries) {
42
42
  writeFileSync(join(dir, "candidates.jsonl"), `${lines.join("\n")}\n`, { encoding: "utf8" });
43
43
  }
44
44
  function writeProjectDefinition(root, rankingLabels) {
45
- const dir = join(root, "vbrief");
45
+ const dir = join(root, "xbrief");
46
46
  mkdirSync(dir, { recursive: true });
47
47
  const plan = { title: "T", status: "running", items: [] };
48
48
  if (rankingLabels !== undefined && rankingLabels.length > 0) {
49
49
  plan.policy = { triageRankingLabels: [...rankingLabels] };
50
50
  }
51
- writeFileSync(join(dir, "PROJECT-DEFINITION.vbrief.json"), `${JSON.stringify({ vBRIEFInfo: { version: "0.6" }, plan }, null, 2)}\n`, { encoding: "utf8" });
51
+ writeFileSync(join(dir, "PROJECT-DEFINITION.xbrief.json"), `${JSON.stringify({ xBRIEFInfo: { version: "0.8" }, plan }, null, 2)}\n`, { encoding: "utf8" });
52
52
  }
53
53
  function writeActiveScope(root, repo, issueNumber, filename) {
54
- const dir = join(root, "vbrief", "active");
54
+ const dir = join(root, "xbrief", "active");
55
55
  mkdirSync(dir, { recursive: true });
56
56
  writeFileSync(join(dir, filename), `${JSON.stringify({
57
- vBRIEFInfo: { version: "0.6" },
57
+ xBRIEFInfo: { version: "0.8" },
58
58
  plan: {
59
59
  title: "Active scope",
60
60
  status: "running",
@@ -69,10 +69,10 @@ function writeActiveScope(root, repo, issueNumber, filename) {
69
69
  })}\n`, { encoding: "utf8" });
70
70
  }
71
71
  function writeBlockedScope(root, repo, issueNumber, filename) {
72
- const dir = join(root, "vbrief", "active");
72
+ const dir = join(root, "xbrief", "active");
73
73
  mkdirSync(dir, { recursive: true });
74
74
  writeFileSync(join(dir, filename), `${JSON.stringify({
75
- vBRIEFInfo: { version: "0.6" },
75
+ xBRIEFInfo: { version: "0.8" },
76
76
  plan: {
77
77
  title: "Blocked scope",
78
78
  status: "blocked",
@@ -87,7 +87,7 @@ function writeBlockedScope(root, repo, issueNumber, filename) {
87
87
  })}\n`, { encoding: "utf8" });
88
88
  }
89
89
  function writeSliceRecords(root, records) {
90
- const dir = join(root, "vbrief", ".eval");
90
+ const dir = join(root, "xbrief", ".triage-cache");
91
91
  mkdirSync(dir, { recursive: true });
92
92
  writeFileSync(join(dir, "slices.jsonl"), `${records.map((record) => JSON.stringify(record)).join("\n")}\n`, { encoding: "utf8" });
93
93
  }
@@ -95,7 +95,7 @@ function writeSliceRecords(root, records) {
95
95
  export function buildFixtureRepo(options = {}) {
96
96
  const root = mkdtempSync(join(tmpdir(), "deft-triage-queue-parity-"));
97
97
  const repo = options.repo ?? DEFAULT_REPO;
98
- mkdirSync(join(root, "vbrief"), { recursive: true });
98
+ mkdirSync(join(root, "xbrief"), { recursive: true });
99
99
  writeProjectDefinition(root, options.rankingLabels);
100
100
  for (const issue of options.issues ?? []) {
101
101
  writeCachedIssue(root, repo, issue);
@@ -104,10 +104,10 @@ export function buildFixtureRepo(options = {}) {
104
104
  writeAuditLog(root, repo, options.auditEntries);
105
105
  }
106
106
  for (const issueNumber of options.activeIssueNumbers ?? []) {
107
- writeActiveScope(root, repo, issueNumber, `active-${issueNumber}.vbrief.json`);
107
+ writeActiveScope(root, repo, issueNumber, `active-${issueNumber}.xbrief.json`);
108
108
  }
109
109
  for (const issueNumber of options.blockedIssueNumbers ?? []) {
110
- writeBlockedScope(root, repo, issueNumber, `blocked-${issueNumber}.vbrief.json`);
110
+ writeBlockedScope(root, repo, issueNumber, `blocked-${issueNumber}.xbrief.json`);
111
111
  }
112
112
  if (options.sliceRecords !== undefined && options.sliceRecords.length > 0) {
113
113
  writeSliceRecords(root, options.sliceRecords);
@@ -251,10 +251,10 @@ export function augmentParityArgv(testCase, root) {
251
251
  }
252
252
  const extras = [];
253
253
  if (testCase.fixture.auditEntries !== undefined && testCase.fixture.auditEntries.length > 0) {
254
- extras.push("--audit-log", join(root, "vbrief", ".eval", "candidates.jsonl"));
254
+ extras.push("--audit-log", join(root, "xbrief", ".triage-cache", "candidates.jsonl"));
255
255
  }
256
256
  if (testCase.fixture.sliceRecords !== undefined && testCase.fixture.sliceRecords.length > 0) {
257
- extras.push("--slices-log", join(root, "vbrief", ".eval", "slices.jsonl"));
257
+ extras.push("--slices-log", join(root, "xbrief", ".triage-cache", "slices.jsonl"));
258
258
  }
259
259
  return [...argv, ...extras];
260
260
  }
@@ -10,16 +10,16 @@ export function normalizeOutput(text) {
10
10
  .replace(/path=[^\s\n]+coverage\.json/g, "path=<ROOT>/coverage.json");
11
11
  }
12
12
  function writeProjectDefinition(root, policy = {}) {
13
- const dir = join(root, "vbrief");
13
+ const dir = join(root, "xbrief");
14
14
  mkdirSync(dir, { recursive: true });
15
- writeFileSync(join(dir, "PROJECT-DEFINITION.vbrief.json"), `${JSON.stringify({
16
- vBRIEFInfo: { version: "0.6" },
15
+ writeFileSync(join(dir, "PROJECT-DEFINITION.xbrief.json"), `${JSON.stringify({
16
+ xBRIEFInfo: { version: "0.8" },
17
17
  plan: { title: "T", status: "running", items: [], policy },
18
18
  }, null, 2)}\n`, "utf8");
19
19
  }
20
20
  export function buildFixtureRepo(options = {}) {
21
21
  const root = mkdtempSync(join(tmpdir(), "deft-triage-scope-parity-"));
22
- mkdirSync(join(root, "vbrief"), { recursive: true });
22
+ mkdirSync(join(root, "xbrief"), { recursive: true });
23
23
  writeProjectDefinition(root, options.policy ?? {});
24
24
  return root;
25
25
  }
@@ -49,7 +49,7 @@ export function buildFixtures(root) {
49
49
  for (const [label, folder, content] of PARITY_FIXTURES) {
50
50
  const dir = join(root, folder);
51
51
  mkdirSync(dir, { recursive: true });
52
- const file = join(dir, `${label}.vbrief.json`);
52
+ const file = join(dir, `${label}.xbrief.json`);
53
53
  writeFileSync(file, content, { encoding: "utf8" });
54
54
  paths.set(label, file);
55
55
  }
@@ -7,30 +7,30 @@ export function normalizeOutput(text) {
7
7
  return text.replace(/project_root=[^\s)]+/g, "project_root=<ROOT>");
8
8
  }
9
9
  function writeProjectDefinition(root, plan) {
10
- const dir = join(root, "vbrief");
10
+ const dir = join(root, "xbrief");
11
11
  mkdirSync(dir, { recursive: true });
12
- writeFileSync(join(dir, "PROJECT-DEFINITION.vbrief.json"), `${JSON.stringify({
13
- vBRIEFInfo: { version: "0.6" },
12
+ writeFileSync(join(dir, "PROJECT-DEFINITION.xbrief.json"), `${JSON.stringify({
13
+ xBRIEFInfo: { version: "0.8" },
14
14
  plan: { title: "T", status: "running", items: [], ...plan },
15
15
  }, null, 2)}\n`, { encoding: "utf8" });
16
16
  }
17
- function writeVbrief(root, folder, name) {
18
- const dir = join(root, "vbrief", folder);
17
+ function writeXbrief(root, folder, name) {
18
+ const dir = join(root, "xbrief", folder);
19
19
  mkdirSync(dir, { recursive: true });
20
- writeFileSync(join(dir, name), `${JSON.stringify({ vBRIEFInfo: { version: "0.6" }, plan: { status: "approved", title: "T", items: [] } })}\n`, { encoding: "utf8" });
20
+ writeFileSync(join(dir, name), `${JSON.stringify({ xBRIEFInfo: { version: "0.8" }, plan: { status: "approved", title: "T", items: [] } })}\n`, { encoding: "utf8" });
21
21
  }
22
22
  /** Build a throwaway project root with optional PROJECT-DEFINITION and WIP files. */
23
23
  export function buildFixtureRepo(options = {}) {
24
24
  const root = mkdtempSync(join(tmpdir(), "deft-wip-cap-parity-"));
25
- mkdirSync(join(root, "vbrief"), { recursive: true });
25
+ mkdirSync(join(root, "xbrief"), { recursive: true });
26
26
  if (options.plan !== undefined) {
27
27
  writeProjectDefinition(root, options.plan);
28
28
  }
29
29
  for (let i = 0; i < (options.pendingFiles ?? 0); i += 1) {
30
- writeVbrief(root, "pending", `pending-${i}.vbrief.json`);
30
+ writeXbrief(root, "pending", `pending-${i}.xbrief.json`);
31
31
  }
32
32
  for (let i = 0; i < (options.activeFiles ?? 0); i += 1) {
33
- writeVbrief(root, "active", `active-${i}.vbrief.json`);
33
+ writeXbrief(root, "active", `active-${i}.xbrief.json`);
34
34
  }
35
35
  return root;
36
36
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deftai/directive",
3
- "version": "0.72.0",
3
+ "version": "0.73.0",
4
4
  "description": "Directive CLI — npm install path for the Deft Directive framework.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -31,8 +31,8 @@
31
31
  "provenance": true
32
32
  },
33
33
  "dependencies": {
34
- "@deftai/directive-core": "^0.72.0",
35
- "@deftai/directive-content": "^0.72.0"
34
+ "@deftai/directive-core": "^0.73.0",
35
+ "@deftai/directive-content": "^0.73.0"
36
36
  },
37
37
  "scripts": {
38
38
  "build": "tsc -b"