@deftai/directive-core 0.104.0 → 0.105.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.
Files changed (225) hide show
  1. package/dist/authz/classify.js +526 -42
  2. package/dist/check/cached-orchestrator.d.ts +1 -1
  3. package/dist/check/cached-orchestrator.js +2 -2
  4. package/dist/check/named-cause.d.ts +1 -1
  5. package/dist/check/named-cause.js +33 -3
  6. package/dist/codebase/default-extractor.d.ts +5 -0
  7. package/dist/codebase/default-extractor.js +7 -15
  8. package/dist/deposit/copy-tree.js +60 -0
  9. package/dist/deposit/python-free.js +26 -18
  10. package/dist/doctor/checks.d.ts +8 -0
  11. package/dist/doctor/checks.js +37 -25
  12. package/dist/doctor/doctor-state.d.ts +4 -0
  13. package/dist/doctor/doctor-state.js +7 -1
  14. package/dist/doctor/main.js +9 -19
  15. package/dist/doctor/types.d.ts +9 -0
  16. package/dist/fs/contained-write.d.ts +115 -1
  17. package/dist/fs/contained-write.js +241 -5
  18. package/dist/fs/mutation-ledger.d.ts +54 -0
  19. package/dist/fs/mutation-ledger.js +133 -0
  20. package/dist/fs/non-product-dirs.d.ts +79 -0
  21. package/dist/fs/non-product-dirs.js +96 -0
  22. package/dist/hooks/dispatcher.d.ts +3 -1
  23. package/dist/hooks/dispatcher.js +14 -0
  24. package/dist/index.d.ts +1 -0
  25. package/dist/index.js +2 -0
  26. package/dist/init-deposit/agent-hooks.js +17 -15
  27. package/dist/init-deposit/core-guard-pin-content.d.ts +7 -0
  28. package/dist/init-deposit/core-guard-pin-content.js +393 -0
  29. package/dist/init-deposit/gitignore.js +9 -0
  30. package/dist/init-deposit/hygiene.d.ts +47 -11
  31. package/dist/init-deposit/hygiene.js +172 -37
  32. package/dist/init-deposit/legacy-detect.js +6 -2
  33. package/dist/init-deposit/refresh.d.ts +21 -1
  34. package/dist/init-deposit/refresh.js +106 -9
  35. package/dist/init-deposit/scaffold.js +28 -279
  36. package/dist/init-deposit/slash-deposit.js +13 -7
  37. package/dist/init-deposit/xbrief-projections.d.ts +8 -1
  38. package/dist/init-deposit/xbrief-projections.js +24 -11
  39. package/dist/intake/clause-derivation.d.ts +38 -1
  40. package/dist/intake/clause-derivation.js +211 -9
  41. package/dist/intake/issue-ingest.d.ts +3 -1
  42. package/dist/intake/issue-ingest.js +35 -6
  43. package/dist/lifecycle/completed-tracked-on-delivery.d.ts +5 -0
  44. package/dist/lifecycle/completed-tracked-on-delivery.js +85 -18
  45. package/dist/literal-acceptance/capture.d.ts +10 -0
  46. package/dist/literal-acceptance/capture.js +224 -75
  47. package/dist/literal-acceptance/evaluate.d.ts +29 -4
  48. package/dist/literal-acceptance/evaluate.js +70 -2
  49. package/dist/literal-acceptance/index.d.ts +3 -3
  50. package/dist/literal-acceptance/index.js +3 -3
  51. package/dist/literal-acceptance/safety.d.ts +41 -0
  52. package/dist/literal-acceptance/safety.js +126 -2
  53. package/dist/literal-acceptance/types.d.ts +8 -0
  54. package/dist/orphan-active/evaluate.d.ts +7 -1
  55. package/dist/orphan-active/evaluate.js +102 -23
  56. package/dist/platform/platform-capabilities.js +2 -3
  57. package/dist/policy/base-branch.d.ts +37 -0
  58. package/dist/policy/base-branch.js +114 -0
  59. package/dist/policy/branch-sync.d.ts +80 -0
  60. package/dist/policy/branch-sync.js +211 -0
  61. package/dist/policy/ceremony-dial-escalation.js +1 -0
  62. package/dist/policy/ceremony-dial.js +4 -14
  63. package/dist/policy/delivery-branch.d.ts +5 -3
  64. package/dist/policy/delivery-branch.js +7 -3
  65. package/dist/policy/file-size-thresholds.d.ts +24 -0
  66. package/dist/policy/file-size-thresholds.js +23 -0
  67. package/dist/policy/forge-outage-retry.d.ts +47 -0
  68. package/dist/policy/forge-outage-retry.js +157 -0
  69. package/dist/policy/index.d.ts +7 -0
  70. package/dist/policy/index.js +66 -7
  71. package/dist/policy/project-invariants.d.ts +50 -0
  72. package/dist/policy/project-invariants.js +205 -0
  73. package/dist/policy/sync-default.d.ts +129 -0
  74. package/dist/policy/sync-default.js +452 -0
  75. package/dist/policy/sync-max-files.d.ts +93 -0
  76. package/dist/policy/sync-max-files.js +192 -0
  77. package/dist/pr-monitor/absent-required.d.ts +11 -0
  78. package/dist/pr-monitor/absent-required.js +61 -0
  79. package/dist/pr-monitor/constants.d.ts +7 -0
  80. package/dist/pr-monitor/constants.js +7 -0
  81. package/dist/pr-monitor/index.d.ts +2 -1
  82. package/dist/pr-monitor/index.js +2 -1
  83. package/dist/pr-monitor/main.js +4 -0
  84. package/dist/pr-monitor/monitor.js +24 -1
  85. package/dist/pr-wait-mergeable/classify.js +6 -0
  86. package/dist/preflight/evaluate.d.ts +4 -0
  87. package/dist/preflight/evaluate.js +35 -1
  88. package/dist/preflight/index.d.ts +4 -0
  89. package/dist/preflight/index.js +2 -0
  90. package/dist/preflight/intended-placement.d.ts +62 -0
  91. package/dist/preflight/intended-placement.js +275 -0
  92. package/dist/preflight/project-invariants-gate.d.ts +29 -0
  93. package/dist/preflight/project-invariants-gate.js +82 -0
  94. package/dist/product-first-done-gate/acceptance-resolver.d.ts +128 -0
  95. package/dist/product-first-done-gate/acceptance-resolver.js +144 -0
  96. package/dist/product-first-done-gate/acceptance.d.ts +7 -4
  97. package/dist/product-first-done-gate/acceptance.js +79 -8
  98. package/dist/product-first-done-gate/empty-resolution.d.ts +4 -1
  99. package/dist/product-first-done-gate/empty-resolution.js +12 -1
  100. package/dist/product-first-done-gate/evaluate.d.ts +12 -0
  101. package/dist/product-first-done-gate/evaluate.js +254 -31
  102. package/dist/product-first-done-gate/index.d.ts +2 -0
  103. package/dist/product-first-done-gate/index.js +1 -0
  104. package/dist/release/build-dist.d.ts +101 -0
  105. package/dist/release/build-dist.js +428 -46
  106. package/dist/run-summary/emit.d.ts +16 -10
  107. package/dist/run-summary/emit.js +26 -15
  108. package/dist/run-summary/index.d.ts +3 -2
  109. package/dist/run-summary/index.js +2 -1
  110. package/dist/run-summary/session-id.d.ts +21 -0
  111. package/dist/run-summary/session-id.js +92 -0
  112. package/dist/run-summary/types.d.ts +29 -4
  113. package/dist/run-summary/types.js +1 -0
  114. package/dist/scope/acceptance-evidence.d.ts +19 -7
  115. package/dist/scope/acceptance-evidence.js +38 -11
  116. package/dist/scope/delivery-evidence.d.ts +3 -3
  117. package/dist/scope/delivery-evidence.js +22 -27
  118. package/dist/scope/index.d.ts +1 -0
  119. package/dist/scope/index.js +1 -0
  120. package/dist/scope/parent-lineage.js +7 -6
  121. package/dist/scope/project-invariant-coverage.d.ts +54 -0
  122. package/dist/scope/project-invariant-coverage.js +322 -0
  123. package/dist/scope/transition.js +1 -1
  124. package/dist/scope-provenance/compare-intent.d.ts +27 -0
  125. package/dist/scope-provenance/compare-intent.js +233 -0
  126. package/dist/scope-provenance/digest.d.ts +18 -1
  127. package/dist/scope-provenance/digest.js +16 -11
  128. package/dist/scope-provenance/evaluate.d.ts +5 -1
  129. package/dist/scope-provenance/evaluate.js +64 -4
  130. package/dist/scope-provenance/extract-intent.d.ts +43 -0
  131. package/dist/scope-provenance/extract-intent.js +262 -0
  132. package/dist/scope-provenance/index.d.ts +7 -1
  133. package/dist/scope-provenance/index.js +7 -1
  134. package/dist/scope-provenance/intent-digest.d.ts +12 -0
  135. package/dist/scope-provenance/intent-digest.js +33 -0
  136. package/dist/scope-provenance/intent-evaluate.d.ts +43 -0
  137. package/dist/scope-provenance/intent-evaluate.js +149 -0
  138. package/dist/scope-provenance/json-tokenizer.d.ts +19 -0
  139. package/dist/scope-provenance/json-tokenizer.js +225 -0
  140. package/dist/scope-provenance/known-machine.d.ts +38 -0
  141. package/dist/scope-provenance/known-machine.js +157 -0
  142. package/dist/scope-provenance/mint-artifacts.d.ts +102 -0
  143. package/dist/scope-provenance/mint-artifacts.js +425 -0
  144. package/dist/session/ac-pass-banking.d.ts +4 -36
  145. package/dist/session/ac-pass-banking.js +30 -77
  146. package/dist/session/ac-pass-reuse.d.ts +53 -0
  147. package/dist/session/ac-pass-reuse.js +95 -0
  148. package/dist/session/git.js +19 -4
  149. package/dist/session/index.d.ts +4 -0
  150. package/dist/session/index.js +4 -0
  151. package/dist/session/occupancy-stress-worker.d.ts +7 -0
  152. package/dist/session/occupancy-stress-worker.js +36 -0
  153. package/dist/session/occupancy.d.ts +97 -0
  154. package/dist/session/occupancy.js +422 -0
  155. package/dist/session/openclaw-soft-rebind-deposit.js +6 -6
  156. package/dist/session/product-state-hash.d.ts +26 -0
  157. package/dist/session/product-state-hash.js +683 -0
  158. package/dist/session/session-ready.d.ts +2 -0
  159. package/dist/session/session-ready.js +52 -30
  160. package/dist/session/session-start.d.ts +7 -0
  161. package/dist/session/session-start.js +71 -7
  162. package/dist/session/verify-ac-session-cache.d.ts +42 -0
  163. package/dist/session/verify-ac-session-cache.js +126 -0
  164. package/dist/session/verify-session-ritual.d.ts +5 -0
  165. package/dist/session/verify-session-ritual.js +9 -0
  166. package/dist/slash/openclaw-deposit.js +13 -9
  167. package/dist/slice/constants.d.ts +2 -2
  168. package/dist/slice/constants.js +2 -2
  169. package/dist/slice/existing.js +9 -3
  170. package/dist/slice/lock.d.ts +16 -1
  171. package/dist/slice/lock.js +137 -11
  172. package/dist/story-ready/evaluate.d.ts +2 -0
  173. package/dist/story-ready/evaluate.js +13 -0
  174. package/dist/swarm/complete-cohort.d.ts +3 -0
  175. package/dist/swarm/complete-cohort.js +59 -11
  176. package/dist/swarm/finalize-cohort.js +33 -2
  177. package/dist/swarm/launch.d.ts +22 -0
  178. package/dist/swarm/launch.js +155 -0
  179. package/dist/swarm/routing-set-cli.d.ts +11 -1
  180. package/dist/swarm/routing-set-cli.js +13 -3
  181. package/dist/swarm/routing-verify.d.ts +12 -0
  182. package/dist/swarm/routing-verify.js +59 -20
  183. package/dist/swarm/routing.d.ts +14 -0
  184. package/dist/swarm/routing.js +53 -3
  185. package/dist/telemetry-coverage/fake-trial.js +10 -0
  186. package/dist/telemetry-coverage/kinds.js +2 -0
  187. package/dist/triage/actions/index.js +4 -1
  188. package/dist/ts-check-lane/index.d.ts +3 -0
  189. package/dist/ts-check-lane/index.js +2 -0
  190. package/dist/ts-check-lane/progress-reporter.d.ts +17 -0
  191. package/dist/ts-check-lane/progress-reporter.js +38 -0
  192. package/dist/ts-check-lane/progress.d.ts +32 -0
  193. package/dist/ts-check-lane/progress.js +57 -0
  194. package/dist/ts-check-lane/run-lane.d.ts +3 -1
  195. package/dist/ts-check-lane/run-lane.js +8 -6
  196. package/dist/validate-content/validate-links.d.ts +8 -0
  197. package/dist/validate-content/validate-links.js +9 -15
  198. package/dist/value/feedback-file.js +12 -2
  199. package/dist/vbrief-build/index.d.ts +1 -0
  200. package/dist/vbrief-build/index.js +1 -0
  201. package/dist/vbrief-build/project-invariants-io.d.ts +16 -0
  202. package/dist/vbrief-build/project-invariants-io.js +41 -0
  203. package/dist/vbrief-reconcile/graph.js +18 -1
  204. package/dist/vbrief-reconcile/index.d.ts +1 -1
  205. package/dist/vbrief-reconcile/index.js +1 -1
  206. package/dist/vbrief-reconcile/types.d.ts +13 -0
  207. package/dist/vbrief-reconcile/umbrellas.d.ts +14 -0
  208. package/dist/vbrief-reconcile/umbrellas.js +261 -26
  209. package/dist/vbrief-validate/index.d.ts +1 -1
  210. package/dist/vbrief-validate/index.js +1 -1
  211. package/dist/vbrief-validate/plan-hooks.d.ts +4 -0
  212. package/dist/vbrief-validate/plan-hooks.js +68 -0
  213. package/dist/verify-ac/evaluate.d.ts +7 -1
  214. package/dist/verify-ac/evaluate.js +34 -26
  215. package/dist/verify-ac/flag.d.ts +4 -0
  216. package/dist/verify-ac/flag.js +16 -0
  217. package/dist/verify-ac/index.d.ts +2 -2
  218. package/dist/verify-ac/index.js +2 -2
  219. package/dist/verify-source/contained-writes.js +2 -0
  220. package/dist/verify-source/verify-stubs.d.ts +15 -1
  221. package/dist/verify-source/verify-stubs.js +20 -16
  222. package/dist/vitest-runner/win32-coverage-tmp-setup.d.ts +5 -6
  223. package/dist/vitest-runner/win32-coverage-tmp-setup.js +5 -6
  224. package/dist/xbrief-migrate/migrate-project.js +2 -5
  225. package/package.json +3 -3
@@ -5,6 +5,6 @@
5
5
  * by editing the comparison. Deterministic surface is the flagged event.
6
6
  */
7
7
  export { deriveAcceptanceClauses, formatClauseWalkMessage, isScratchArtifactPath, readAcceptanceClauses, serializeAcceptanceClauses, stampDerivedClausesOnAcceptance, walkAcceptanceClauses, } from "./clauses.js";
8
- export { emitVerifyAcAttempts, evaluateProductOracleIntegrity, mergeOracleVerdict, VERIFY_AC_CHECK_ID_PREFIX, verifyAcCheckId, } from "./evaluate.js";
9
- export { flagPassAfterFailFromJsonl, flagPassAfterFailWithMethodChange, readVerificationAttempts, unresolvedMethodChangePasses, } from "./flag.js";
8
+ export { emitVerifyAcAttempts, evaluateProductOracleIntegrity, mergeOracleVerdict, methodFingerprintForWalk, VERIFY_AC_CHECK_ID_PREFIX, verifyAcCheckId, } from "./evaluate.js";
9
+ export { commandCountFromFingerprint, flagPassAfterFailFromJsonl, flagPassAfterFailWithMethodChange, readVerificationAttempts, unresolvedMethodChangePasses, } from "./flag.js";
10
10
  //# sourceMappingURL=index.js.map
@@ -46,6 +46,8 @@ export const CONTAINED_WRITES_ALLOWLIST = [
46
46
  // Implementation modules for containment + contained write.
47
47
  "packages/core/src/fs/contained-write.ts",
48
48
  "packages/core/src/fs/projection-containment.ts",
49
+ // #3424: read-only O_NOFOLLOW fd pin in intended-placement inspect (not a write sink).
50
+ "packages/core/src/preflight/intended-placement.ts",
49
51
  // Deposit tree copy / contain primitives (low-level install sinks).
50
52
  "packages/core/src/deposit/copy-tree.ts",
51
53
  "packages/core/src/deposit/contain.ts",
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Shared "not product source" core (#3487) plus the directories only the stub
3
+ * scan treats as non-product: fixtures/tests, vendored trees, the history
4
+ * archive, and operator scripts.
5
+ */
1
6
  export declare const EXCLUDE_DIRS: Set<string>;
2
7
  export declare const EXTENSIONS: Set<string>;
3
8
  export interface StubFinding {
@@ -6,7 +11,16 @@ export interface StubFinding {
6
11
  readonly label: string;
7
12
  readonly text: string;
8
13
  }
9
- /** Recursive sorted rglob mirroring `sorted(Path(".").rglob("*"))`. */
14
+ /**
15
+ * Recursive sorted rglob mirroring `sorted(Path(".").rglob("*"))`, pruning
16
+ * `EXCLUDE_DIRS` before recursing.
17
+ *
18
+ * Pruning is load-bearing, not an optimisation of a filter applied later: on a
19
+ * host with a populated `.deft-scratch/` the unpruned walk enumerates every
20
+ * swarm worktree (millions of entries) only to discard them per-file. #2953
21
+ * added `.deft-scratch` / `swarm-worktrees` to `EXCLUDE_DIRS` for exactly this
22
+ * reason but left the walk descending into them (#3481).
23
+ */
10
24
  export declare function sortedRglob(root: string): string[];
11
25
  export declare function scanFileForStubs(relPath: string, fullPath: string): StubFinding[];
12
26
  export interface VerifyStubsResult {
@@ -1,20 +1,12 @@
1
1
  import { readdirSync, readFileSync, statSync } from "node:fs";
2
2
  import { join, resolve } from "node:path";
3
- export const EXCLUDE_DIRS = new Set([
4
- "tests",
5
- "vendor",
6
- ".git",
7
- "backup",
8
- "history",
9
- "node_modules",
10
- ".venv",
11
- "__pycache__",
12
- "dist",
13
- "scripts",
14
- // Swarm / agent worktrees are not product source (#2953, #1656).
15
- ".deft-scratch",
16
- "swarm-worktrees",
17
- ]);
3
+ import { NON_PRODUCT_DIRS } from "../fs/non-product-dirs.js";
4
+ /**
5
+ * Shared "not product source" core (#3487) plus the directories only the stub
6
+ * scan treats as non-product: fixtures/tests, vendored trees, the history
7
+ * archive, and operator scripts.
8
+ */
9
+ export const EXCLUDE_DIRS = new Set([...NON_PRODUCT_DIRS, "tests", "vendor", "history", "scripts"]);
18
10
  export const EXTENSIONS = new Set([".py", ".go", ".sh"]);
19
11
  function isWordChar(ch) {
20
12
  if (ch.length === 0) {
@@ -73,7 +65,16 @@ function hasReturnNull(text) {
73
65
  }
74
66
  return false;
75
67
  }
76
- /** Recursive sorted rglob mirroring `sorted(Path(".").rglob("*"))`. */
68
+ /**
69
+ * Recursive sorted rglob mirroring `sorted(Path(".").rglob("*"))`, pruning
70
+ * `EXCLUDE_DIRS` before recursing.
71
+ *
72
+ * Pruning is load-bearing, not an optimisation of a filter applied later: on a
73
+ * host with a populated `.deft-scratch/` the unpruned walk enumerates every
74
+ * swarm worktree (millions of entries) only to discard them per-file. #2953
75
+ * added `.deft-scratch` / `swarm-worktrees` to `EXCLUDE_DIRS` for exactly this
76
+ * reason but left the walk descending into them (#3481).
77
+ */
77
78
  export function sortedRglob(root) {
78
79
  const out = [];
79
80
  function walk(dir, relPrefix) {
@@ -95,6 +96,9 @@ export function sortedRglob(root) {
95
96
  continue;
96
97
  }
97
98
  if (st.isDirectory()) {
99
+ if (EXCLUDE_DIRS.has(name)) {
100
+ continue;
101
+ }
98
102
  walk(full, rel);
99
103
  }
100
104
  else {
@@ -3,18 +3,17 @@ export declare const COVERAGE_TMP_CHUNK_RE: RegExp;
3
3
  export declare function isCoverageTmpChunkPath(filePath: string): boolean;
4
4
  export declare function ensureCoverageTmpDir(coverageTmpDir?: string): void;
5
5
  /**
6
- * Vitest 3.2.x writes coverage chunks without mkdir'ing the parent directory
7
- * (fixed upstream in vitest 4.x — vitest-dev/vitest#10117). On Windows the
8
- * directory can disappear between clean() and writeFile under release-scale
6
+ * Vitest 4.x includes the upstream mkdir (vitest-dev/vitest#10117). On Windows the
7
+ * directory can still disappear between clean() and writeFile under release-scale
9
8
  * load; mkdir immediately before chunk writes closes that race without
10
- * soft-failing real threshold failures (#2634).
9
+ * soft-failing real threshold failures (#2634 / #3480).
11
10
  */
12
11
  export declare function installCoverageTmpWriteGuard(): () => void;
13
12
  /**
14
13
  * Win32 globalSetup for coverage runs (#2580, hardened #2634).
15
14
  *
16
- * Keepalive mkdir plus a writeFile guard mirror vitest 4's defensive mkdir until
17
- * directive upgrades past vitest@3 (see vitest.config.ts #2634 upgrade note).
15
+ * Keepalive mkdir plus a writeFile guard remain until a full win32 coverage
16
+ * run proves vitest 4's #10117 mkdir is enough on its own (#3480).
18
17
  */
19
18
  export default function setup(): () => void;
20
19
  //# sourceMappingURL=win32-coverage-tmp-setup.d.ts.map
@@ -10,11 +10,10 @@ export function ensureCoverageTmpDir(coverageTmpDir = defaultCoverageTmp) {
10
10
  mkdirSync(coverageTmpDir, { recursive: true });
11
11
  }
12
12
  /**
13
- * Vitest 3.2.x writes coverage chunks without mkdir'ing the parent directory
14
- * (fixed upstream in vitest 4.x — vitest-dev/vitest#10117). On Windows the
15
- * directory can disappear between clean() and writeFile under release-scale
13
+ * Vitest 4.x includes the upstream mkdir (vitest-dev/vitest#10117). On Windows the
14
+ * directory can still disappear between clean() and writeFile under release-scale
16
15
  * load; mkdir immediately before chunk writes closes that race without
17
- * soft-failing real threshold failures (#2634).
16
+ * soft-failing real threshold failures (#2634 / #3480).
18
17
  */
19
18
  export function installCoverageTmpWriteGuard() {
20
19
  const originalWriteFile = fsPromises.writeFile.bind(fsPromises);
@@ -33,8 +32,8 @@ export function installCoverageTmpWriteGuard() {
33
32
  /**
34
33
  * Win32 globalSetup for coverage runs (#2580, hardened #2634).
35
34
  *
36
- * Keepalive mkdir plus a writeFile guard mirror vitest 4's defensive mkdir until
37
- * directive upgrades past vitest@3 (see vitest.config.ts #2634 upgrade note).
35
+ * Keepalive mkdir plus a writeFile guard remain until a full win32 coverage
36
+ * run proves vitest 4's #10117 mkdir is enough on its own (#3480).
38
37
  */
39
38
  export default function setup() {
40
39
  if (process.platform !== "win32")
@@ -1,6 +1,6 @@
1
1
  import { cpSync, existsSync, mkdirSync, readdirSync, readFileSync, rmSync } from "node:fs";
2
2
  import { join, relative, resolve } from "node:path";
3
- import { containedWrite } from "../fs/contained-write.js";
3
+ import { containedRemove, containedWrite } from "../fs/contained-write.js";
4
4
  import { assertWriteTargetSafe, ProjectionContainmentError } from "../fs/projection-containment.js";
5
5
  import { checkGitClean } from "../migrate-preflight/index.js";
6
6
  import { applyAgentsRefresh } from "../platform/agents-md.js";
@@ -36,10 +36,7 @@ export function shouldOmitLegacyMigrationFile(relativePath) {
36
36
  */
37
37
  export function removeStaleMigratedFrameworkNarrative(projectRoot) {
38
38
  const stale = join(projectRoot, MIGRATED_ARTIFACT_DIR, OBSOLETE_FRAMEWORK_NARRATIVE_FILENAME);
39
- if (!existsSync(stale))
40
- return false;
41
- rmSync(stale, { force: true });
42
- return true;
39
+ return containedRemove({ root: projectRoot, target: stale }).removed;
43
40
  }
44
41
  function mapRelativePath(relativePath) {
45
42
  return relativePath
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deftai/directive-core",
3
- "version": "0.104.0",
3
+ "version": "0.105.0",
4
4
  "description": "TypeScript engine core for the Directive framework.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -382,8 +382,8 @@
382
382
  "provenance": true
383
383
  },
384
384
  "dependencies": {
385
- "@deftai/directive-content": "^0.104.0",
386
- "@deftai/directive-types": "^0.104.0",
385
+ "@deftai/directive-content": "^0.105.0",
386
+ "@deftai/directive-types": "^0.105.0",
387
387
  "archiver": "^8.0.0"
388
388
  },
389
389
  "scripts": {