@deftai/directive-core 0.105.0 → 0.107.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 (173) hide show
  1. package/dist/authz/classify.js +591 -34
  2. package/dist/check/gate-lists.js +2 -0
  3. package/dist/check/named-cause.js +1 -1
  4. package/dist/design-critique/exclusive-chip.d.ts +33 -0
  5. package/dist/design-critique/exclusive-chip.js +68 -0
  6. package/dist/design-critique/parent-audit.d.ts +59 -0
  7. package/dist/design-critique/parent-audit.js +121 -0
  8. package/dist/doctor/checks.d.ts +6 -0
  9. package/dist/doctor/checks.js +35 -0
  10. package/dist/forward-coverage/diff-coverage.d.ts +39 -0
  11. package/dist/forward-coverage/diff-coverage.js +112 -0
  12. package/dist/forward-coverage/diff-lines.d.ts +19 -0
  13. package/dist/forward-coverage/diff-lines.js +173 -0
  14. package/dist/forward-coverage/evaluate.d.ts +24 -9
  15. package/dist/forward-coverage/evaluate.js +125 -19
  16. package/dist/hooks/dest-form.d.ts +46 -0
  17. package/dist/hooks/dest-form.js +575 -0
  18. package/dist/hooks/dispatcher.d.ts +17 -1
  19. package/dist/hooks/dispatcher.js +82 -11
  20. package/dist/hooks/index.d.ts +1 -0
  21. package/dist/hooks/index.js +1 -0
  22. package/dist/init-deposit/agent-hooks.d.ts +1 -1
  23. package/dist/init-deposit/agent-hooks.js +1 -1
  24. package/dist/intake/clause-derivation.d.ts +9 -0
  25. package/dist/intake/clause-derivation.js +30 -3
  26. package/dist/intake/github-auth-modes-cli.js +14 -2
  27. package/dist/intake/github-auth-modes.d.ts +54 -9
  28. package/dist/intake/github-auth-modes.js +326 -123
  29. package/dist/lifecycle/completed-tracked-on-delivery.d.ts +26 -0
  30. package/dist/lifecycle/completed-tracked-on-delivery.js +37 -14
  31. package/dist/lifecycle/completed-write-guard.d.ts +48 -0
  32. package/dist/lifecycle/completed-write-guard.js +373 -0
  33. package/dist/lifecycle/index.d.ts +1 -0
  34. package/dist/lifecycle/index.js +1 -0
  35. package/dist/lifecycle-visible/evaluate.d.ts +98 -0
  36. package/dist/lifecycle-visible/evaluate.js +710 -0
  37. package/dist/lifecycle-visible/index.d.ts +2 -0
  38. package/dist/lifecycle-visible/index.js +2 -0
  39. package/dist/literal-acceptance/capture.d.ts +16 -0
  40. package/dist/literal-acceptance/capture.js +78 -10
  41. package/dist/literal-acceptance/evaluate.js +25 -3
  42. package/dist/literal-acceptance/index.d.ts +2 -2
  43. package/dist/literal-acceptance/index.js +2 -2
  44. package/dist/literal-acceptance/run.js +9 -3
  45. package/dist/literal-acceptance/types.d.ts +6 -0
  46. package/dist/literal-acceptance/types.js +6 -0
  47. package/dist/orchestration/judgment-policy.d.ts +13 -0
  48. package/dist/orchestration/judgment-policy.js +15 -0
  49. package/dist/orchestration/probe-session.js +13 -8
  50. package/dist/orchestration/verify-judgment-gates.d.ts +4 -0
  51. package/dist/orchestration/verify-judgment-gates.js +43 -11
  52. package/dist/policy/ceremony-dial.js +7 -7
  53. package/dist/policy/host-hooks.d.ts +20 -0
  54. package/dist/policy/host-hooks.js +121 -2
  55. package/dist/policy/org-force-on-migration.js +2 -1
  56. package/dist/policy/plan-extensions.d.ts +1 -1
  57. package/dist/policy/plan-extensions.js +2 -0
  58. package/dist/policy/product-signal.js +6 -7
  59. package/dist/policy/require-human-merge.js +8 -6
  60. package/dist/policy/resolve.d.ts +7 -2
  61. package/dist/policy/resolve.js +25 -8
  62. package/dist/policy/runtime-authority.d.ts +18 -0
  63. package/dist/policy/runtime-authority.js +11 -0
  64. package/dist/policy/value-feedback.js +7 -8
  65. package/dist/policy/write-fence.js +3 -0
  66. package/dist/preflight-cache/evaluate.d.ts +12 -0
  67. package/dist/preflight-cache/evaluate.js +24 -4
  68. package/dist/preflight-cache/index.d.ts +1 -1
  69. package/dist/preflight-cache/index.js +1 -1
  70. package/dist/product-first-done-gate/evaluate.d.ts +4 -0
  71. package/dist/product-first-done-gate/evaluate.js +82 -10
  72. package/dist/release/closed-verb-gate.d.ts +12 -0
  73. package/dist/release/closed-verb-gate.js +51 -0
  74. package/dist/release/index.d.ts +1 -0
  75. package/dist/release/index.js +1 -0
  76. package/dist/release/pipeline.js +7 -0
  77. package/dist/release/types.d.ts +12 -0
  78. package/dist/render/constants.d.ts +2 -1
  79. package/dist/render/constants.js +2 -1
  80. package/dist/render/framework-commands.js +4 -0
  81. package/dist/render/spec-validate.js +23 -12
  82. package/dist/run-summary/types.d.ts +4 -0
  83. package/dist/scm/design-critique-chip.d.ts +37 -0
  84. package/dist/scm/design-critique-chip.js +171 -0
  85. package/dist/scm/index.d.ts +1 -0
  86. package/dist/scm/index.js +1 -0
  87. package/dist/scm/main.d.ts +3 -0
  88. package/dist/scm/main.js +15 -1
  89. package/dist/scm/readiness-cli.d.ts +2 -0
  90. package/dist/scm/readiness-cli.js +42 -1
  91. package/dist/scm/readiness.d.ts +2 -1
  92. package/dist/scm/readiness.js +7 -1
  93. package/dist/scope/decompose.js +2 -1
  94. package/dist/scope/delivery-evidence.d.ts +27 -1
  95. package/dist/scope/index.d.ts +1 -0
  96. package/dist/scope/index.js +1 -0
  97. package/dist/scope/lifecycle-write.d.ts +24 -0
  98. package/dist/scope/lifecycle-write.js +64 -0
  99. package/dist/scope/main.js +18 -6
  100. package/dist/scope/promote-from-issue.js +5 -5
  101. package/dist/scope/transition.js +90 -11
  102. package/dist/scope-provenance/evaluate.js +8 -4
  103. package/dist/session/ac-pass-banking.d.ts +5 -0
  104. package/dist/session/ac-pass-banking.js +3 -2
  105. package/dist/session/git.d.ts +18 -0
  106. package/dist/session/git.js +81 -1
  107. package/dist/session/occupancy.d.ts +2 -1
  108. package/dist/session/occupancy.js +11 -4
  109. package/dist/session/process-cost.d.ts +32 -10
  110. package/dist/session/process-cost.js +189 -1
  111. package/dist/session/product-state-hash.js +41 -24
  112. package/dist/session/ritual-entrypoint.js +16 -1
  113. package/dist/session/session-start.d.ts +18 -0
  114. package/dist/session/session-start.js +49 -2
  115. package/dist/session/verify-session-ritual.d.ts +46 -4
  116. package/dist/session/verify-session-ritual.js +118 -10
  117. package/dist/swarm/finalize-cohort-cli.d.ts +7 -2
  118. package/dist/swarm/finalize-cohort-cli.js +165 -35
  119. package/dist/swarm/finalize-cohort.d.ts +1 -0
  120. package/dist/swarm/finalize-cohort.js +14 -2
  121. package/dist/swarm/launch.d.ts +69 -0
  122. package/dist/swarm/launch.js +191 -1
  123. package/dist/swarm/routing-set-cli.js +2 -0
  124. package/dist/swarm/routing-verify.d.ts +1 -1
  125. package/dist/swarm/routing-verify.js +2 -2
  126. package/dist/triage/actions/index.d.ts +4 -0
  127. package/dist/triage/actions/index.js +6 -0
  128. package/dist/triage/bootstrap/index.js +6 -6
  129. package/dist/triage/evaluate/evaluate.d.ts +11 -0
  130. package/dist/triage/evaluate/evaluate.js +169 -0
  131. package/dist/triage/evaluate/github.d.ts +16 -0
  132. package/dist/triage/evaluate/github.js +153 -0
  133. package/dist/triage/evaluate/index.d.ts +9 -0
  134. package/dist/triage/evaluate/index.js +8 -0
  135. package/dist/triage/evaluate/paths.d.ts +7 -0
  136. package/dist/triage/evaluate/paths.js +25 -0
  137. package/dist/triage/evaluate/sink.d.ts +5 -0
  138. package/dist/triage/evaluate/sink.js +52 -0
  139. package/dist/triage/evaluate/types.d.ts +93 -0
  140. package/dist/triage/evaluate/types.js +13 -0
  141. package/dist/triage/evaluate/validity.d.ts +8 -0
  142. package/dist/triage/evaluate/validity.js +87 -0
  143. package/dist/triage/evaluate/value.d.ts +12 -0
  144. package/dist/triage/evaluate/value.js +33 -0
  145. package/dist/triage/evaluate/wip-census.d.ts +5 -0
  146. package/dist/triage/evaluate/wip-census.js +39 -0
  147. package/dist/triage/evaluate/worktrees.d.ts +8 -0
  148. package/dist/triage/evaluate/worktrees.js +68 -0
  149. package/dist/triage/evaluate/xbrief-refs.d.ts +8 -0
  150. package/dist/triage/evaluate/xbrief-refs.js +60 -0
  151. package/dist/triage/help/registry-data.d.ts +22 -8
  152. package/dist/triage/help/registry-data.js +54 -6
  153. package/dist/triage/index.d.ts +1 -0
  154. package/dist/triage/index.js +1 -0
  155. package/dist/triage/welcome/writers.d.ts +1 -1
  156. package/dist/triage/welcome/writers.js +10 -5
  157. package/dist/value/feedback-file.d.ts +17 -2
  158. package/dist/value/feedback-file.js +80 -6
  159. package/dist/value/readback.d.ts +4 -1
  160. package/dist/value/readback.js +51 -12
  161. package/dist/vbrief-reconcile/labels.d.ts +1 -0
  162. package/dist/vbrief-reconcile/labels.js +30 -0
  163. package/dist/vbrief-validate/schema.d.ts +4 -0
  164. package/dist/vbrief-validate/schema.js +1 -1
  165. package/dist/vbrief-validation/story-quality.d.ts +7 -0
  166. package/dist/vbrief-validation/story-quality.js +8 -1
  167. package/dist/verify-env/agent-hook-readiness.d.ts +2 -2
  168. package/dist/verify-env/agent-hook-readiness.js +12 -8
  169. package/dist/verify-env/agent-hooks-live-probe.d.ts +5 -1
  170. package/dist/verify-env/agent-hooks-live-probe.js +26 -5
  171. package/dist/verify-env/agent-hooks.js +3 -4
  172. package/dist/xbrief-migrate/agents-header.js +69 -7
  173. package/package.json +7 -3
@@ -6,14 +6,14 @@ import { MIGRATED_ARTIFACT_DIR } from "./constants.js";
6
6
  import { isDirectory } from "./fs-helpers.js";
7
7
  /**
8
8
  * Bounded, ordered set of legacy crossover tokens rewritten in the UNMANAGED
9
- * region of a consumer AGENTS.md after `migrate:xbrief` (#2154 / Option A).
9
+ * region of a consumer AGENTS.md after `migrate:xbrief` (#2154 / Option A / #3637).
10
10
  *
11
11
  * Each entry is a mechanical path / verb literal — NOT freeform prose. The
12
12
  * casing-only `vBRIEF format` product-description token from the issue table is
13
- * intentionally excluded so freeform prose survives untouched. The tokens are
14
- * disjoint substrings (`.vbrief.json` has no trailing slash, `vbrief:preflight`
15
- * uses a colon, `vbrief/` requires a slash), so replacement order does not
16
- * change the result and a second pass is a guaranteed no-op (idempotent).
13
+ * intentionally excluded so freeform prose survives untouched. `.vbrief.json`
14
+ * and `vbrief:preflight` are substring hits. `vbrief/` is left-bound and only
15
+ * a hard hit when a child segment follows (`vbrief/active/...`); bare
16
+ * `vbrief/` and `x-vbrief/` are not rewritten. A second pass is a no-op.
17
17
  */
18
18
  /** Refuse migrate header writes that escape via repo-controlled symlinks (#2668). */
19
19
  function projectionTarget(projectDir, ...relSegments) {
@@ -26,6 +26,8 @@ export const LEGACY_HEADER_TOKENS = [
26
26
  { legacy: "vbrief:preflight", migrated: "xbrief:preflight" },
27
27
  { legacy: "vbrief/", migrated: "xbrief/" },
28
28
  ];
29
+ const VBRIEF_DIR = "vbrief/";
30
+ const XBRIEF_DIR = "xbrief/";
29
31
  function countOccurrences(haystack, needle) {
30
32
  if (needle.length === 0)
31
33
  return 0;
@@ -37,10 +39,70 @@ function countOccurrences(haystack, needle) {
37
39
  }
38
40
  return count;
39
41
  }
42
+ /** `x-vbrief/` is not a `vbrief/` hit; ident/hyphen continue the token. */
43
+ function isLeftBoundAt(text, index) {
44
+ if (index === 0)
45
+ return true;
46
+ return !/[A-Za-z0-9_-]/.test(text[index - 1]);
47
+ }
48
+ /** Child path segment after `vbrief/` — not whitespace, fence close, or EOS. */
49
+ function hasVbriefChildSegment(text, index) {
50
+ const after = index + VBRIEF_DIR.length;
51
+ if (after >= text.length)
52
+ return false;
53
+ const ch = text[after];
54
+ return ch !== "/" && ch !== "`" && !/\s/.test(ch);
55
+ }
56
+ function isHardVbriefDirHit(text, index) {
57
+ return isLeftBoundAt(text, index) && hasVbriefChildSegment(text, index);
58
+ }
59
+ function hasHardVbriefDirHit(text) {
60
+ let index = text.indexOf(VBRIEF_DIR);
61
+ while (index !== -1) {
62
+ if (isHardVbriefDirHit(text, index))
63
+ return true;
64
+ index = text.indexOf(VBRIEF_DIR, index + VBRIEF_DIR.length);
65
+ }
66
+ return false;
67
+ }
68
+ /** Rewrite left-bound `vbrief/` + child; leave bare `vbrief/` and `x-vbrief/`. */
69
+ function rewriteLeftBoundVbriefDir(slice) {
70
+ let out = "";
71
+ let cursor = 0;
72
+ let count = 0;
73
+ let index = slice.indexOf(VBRIEF_DIR);
74
+ while (index !== -1) {
75
+ out += slice.slice(cursor, index);
76
+ if (isHardVbriefDirHit(slice, index)) {
77
+ out += XBRIEF_DIR;
78
+ count += 1;
79
+ }
80
+ else {
81
+ out += VBRIEF_DIR;
82
+ }
83
+ cursor = index + VBRIEF_DIR.length;
84
+ index = slice.indexOf(VBRIEF_DIR, cursor);
85
+ }
86
+ out += slice.slice(cursor);
87
+ return { next: out, count };
88
+ }
89
+ function unmanagedHitsLegacyToken(unmanaged, legacy) {
90
+ if (legacy === VBRIEF_DIR)
91
+ return hasHardVbriefDirHit(unmanaged);
92
+ return unmanaged.includes(legacy);
93
+ }
40
94
  /** Rewrite the bounded legacy tokens inside a single unmanaged text slice. */
41
95
  function rewriteSlice(slice, tally) {
42
96
  let next = slice;
43
97
  for (const { legacy, migrated } of LEGACY_HEADER_TOKENS) {
98
+ if (legacy === VBRIEF_DIR) {
99
+ const rewritten = rewriteLeftBoundVbriefDir(next);
100
+ if (rewritten.count === 0)
101
+ continue;
102
+ tally.set(legacy, (tally.get(legacy) ?? 0) + rewritten.count);
103
+ next = rewritten.next;
104
+ continue;
105
+ }
44
106
  const occurrences = countOccurrences(next, legacy);
45
107
  if (occurrences === 0)
46
108
  continue;
@@ -172,7 +234,7 @@ export function detectStaleUnmanagedHeader(projectRoot, readText = (path) => {
172
234
  cursor = end;
173
235
  }
174
236
  unmanaged += content.slice(cursor);
175
- const matches = LEGACY_HEADER_TOKENS.filter((t) => unmanaged.includes(t.legacy)).map((t) => t.legacy);
237
+ const matches = LEGACY_HEADER_TOKENS.filter((t) => unmanagedHitsLegacyToken(unmanaged, t.legacy)).map((t) => t.legacy);
176
238
  return { stale: matches.length > 0, matches };
177
239
  }
178
240
  /** One-line doctor / ritual signpost for the #2154 stale-header regression. */
@@ -183,6 +245,6 @@ export function renderStaleHeaderLine(projectRoot, readText) {
183
245
  }
184
246
  return (`AGENTS.md header drift: xbrief/ tree present but the unmanaged AGENTS.md header still ` +
185
247
  `references legacy token(s) ${matches.join(", ")}. ` +
186
- "Run `deft migrate:xbrief` (idempotent) to rewrite them, or hand-edit the header.");
248
+ "Hand-edit the unmanaged header path literals.");
187
249
  }
188
250
  //# sourceMappingURL=agents-header.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deftai/directive-core",
3
- "version": "0.105.0",
3
+ "version": "0.107.0",
4
4
  "description": "TypeScript engine core for the Directive framework.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -283,6 +283,10 @@
283
283
  "types": "./dist/lifecycle/index.d.ts",
284
284
  "default": "./dist/lifecycle/index.js"
285
285
  },
286
+ "./lifecycle-visible": {
287
+ "types": "./dist/lifecycle-visible/index.d.ts",
288
+ "default": "./dist/lifecycle-visible/index.js"
289
+ },
286
290
  "./literal-acceptance": {
287
291
  "types": "./dist/literal-acceptance/index.d.ts",
288
292
  "default": "./dist/literal-acceptance/index.js"
@@ -382,8 +386,8 @@
382
386
  "provenance": true
383
387
  },
384
388
  "dependencies": {
385
- "@deftai/directive-content": "^0.105.0",
386
- "@deftai/directive-types": "^0.105.0",
389
+ "@deftai/directive-content": "^0.107.0",
390
+ "@deftai/directive-types": "^0.107.0",
387
391
  "archiver": "^8.0.0"
388
392
  },
389
393
  "scripts": {