@su-record/vibe 4.2.34 → 4.2.36

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/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/dist/cli/common.js +4 -1
  5. package/dist/cli/common.js.map +1 -1
  6. package/dist/cli/heldout.js +10 -4
  7. package/dist/cli/heldout.js.map +1 -1
  8. package/dist/cli/human.js +8 -4
  9. package/dist/cli/human.js.map +1 -1
  10. package/dist/cli/internal.js +37 -24
  11. package/dist/cli/internal.js.map +1 -1
  12. package/dist/cli/ledger.js +67 -0
  13. package/dist/cli/ledger.js.map +1 -0
  14. package/dist/cli/map.js +5 -3
  15. package/dist/cli/map.js.map +1 -1
  16. package/dist/cli/memory.js +104 -74
  17. package/dist/cli/memory.js.map +1 -1
  18. package/dist/cli/risks.js +20 -3
  19. package/dist/cli/risks.js.map +1 -1
  20. package/dist/cli/session.js +4 -2
  21. package/dist/cli/session.js.map +1 -1
  22. package/dist/cli/setup.js +44 -13
  23. package/dist/cli/setup.js.map +1 -1
  24. package/dist/cli/verification.js +1 -1
  25. package/dist/cli/verification.js.map +1 -1
  26. package/dist/cli/work.js +75 -22
  27. package/dist/cli/work.js.map +1 -1
  28. package/dist/cli.js +18 -6
  29. package/dist/cli.js.map +1 -1
  30. package/dist/core/analyze.js +21 -7
  31. package/dist/core/analyze.js.map +1 -1
  32. package/dist/core/artifact-paths.js +14 -3
  33. package/dist/core/artifact-paths.js.map +1 -1
  34. package/dist/core/capabilities.js +69 -15
  35. package/dist/core/capabilities.js.map +1 -1
  36. package/dist/core/check-authorization.js +37 -0
  37. package/dist/core/check-authorization.js.map +1 -0
  38. package/dist/core/check-process.js +12 -4
  39. package/dist/core/check-process.js.map +1 -1
  40. package/dist/core/check-report.js +66 -0
  41. package/dist/core/check-report.js.map +1 -0
  42. package/dist/core/check-selection.js +4 -2
  43. package/dist/core/check-selection.js.map +1 -1
  44. package/dist/core/check.js +66 -130
  45. package/dist/core/check.js.map +1 -1
  46. package/dist/core/checks/changed.js +20 -6
  47. package/dist/core/checks/changed.js.map +1 -1
  48. package/dist/core/checks/eval.js +35 -10
  49. package/dist/core/checks/eval.js.map +1 -1
  50. package/dist/core/checks/file.js +26 -23
  51. package/dist/core/checks/file.js.map +1 -1
  52. package/dist/core/checks/fileRules.js +42 -16
  53. package/dist/core/checks/fileRules.js.map +1 -1
  54. package/dist/core/checks/http.js +35 -34
  55. package/dist/core/checks/http.js.map +1 -1
  56. package/dist/core/checks/packs.js +1 -1
  57. package/dist/core/checks/packs.js.map +1 -1
  58. package/dist/core/checks/review.js +75 -40
  59. package/dist/core/checks/review.js.map +1 -1
  60. package/dist/core/checks/run.js +5 -2
  61. package/dist/core/checks/run.js.map +1 -1
  62. package/dist/core/checks/schema.js +25 -0
  63. package/dist/core/checks/schema.js.map +1 -0
  64. package/dist/core/checks/source.js +11 -6
  65. package/dist/core/checks/source.js.map +1 -1
  66. package/dist/core/config.js +9 -2
  67. package/dist/core/config.js.map +1 -1
  68. package/dist/core/consent.js +24 -16
  69. package/dist/core/consent.js.map +1 -1
  70. package/dist/core/context-notes.js +15 -7
  71. package/dist/core/context-notes.js.map +1 -1
  72. package/dist/core/context.js +24 -12
  73. package/dist/core/context.js.map +1 -1
  74. package/dist/core/conventions.js +22 -9
  75. package/dist/core/conventions.js.map +1 -1
  76. package/dist/core/docs/cfb.js +81 -45
  77. package/dist/core/docs/cfb.js.map +1 -1
  78. package/dist/core/docs/html.js +14 -3
  79. package/dist/core/docs/html.js.map +1 -1
  80. package/dist/core/docs/hwp.js +44 -22
  81. package/dist/core/docs/hwp.js.map +1 -1
  82. package/dist/core/docs/office.js +20 -10
  83. package/dist/core/docs/office.js.map +1 -1
  84. package/dist/core/docs/pdf.js +10 -4
  85. package/dist/core/docs/pdf.js.map +1 -1
  86. package/dist/core/docs/read.js +32 -24
  87. package/dist/core/docs/read.js.map +1 -1
  88. package/dist/core/docs/zip.js +32 -15
  89. package/dist/core/docs/zip.js.map +1 -1
  90. package/dist/core/evidence.js +17 -7
  91. package/dist/core/evidence.js.map +1 -1
  92. package/dist/core/failure-message.js +35 -13
  93. package/dist/core/failure-message.js.map +1 -1
  94. package/dist/core/failure.js +49 -14
  95. package/dist/core/failure.js.map +1 -1
  96. package/dist/core/github.js +3 -1
  97. package/dist/core/github.js.map +1 -1
  98. package/dist/core/handoff.js +20 -7
  99. package/dist/core/handoff.js.map +1 -1
  100. package/dist/core/heldout-run.js +6 -3
  101. package/dist/core/heldout-run.js.map +1 -1
  102. package/dist/core/heldout.js +24 -13
  103. package/dist/core/heldout.js.map +1 -1
  104. package/dist/core/inbox.js +3 -1
  105. package/dist/core/inbox.js.map +1 -1
  106. package/dist/core/inputs.js +76 -0
  107. package/dist/core/inputs.js.map +1 -0
  108. package/dist/core/inspect.js +61 -20
  109. package/dist/core/inspect.js.map +1 -1
  110. package/dist/core/intent.js +50 -12
  111. package/dist/core/intent.js.map +1 -1
  112. package/dist/core/knowledge-find.js +31 -12
  113. package/dist/core/knowledge-find.js.map +1 -1
  114. package/dist/core/knowledge.js +22 -12
  115. package/dist/core/knowledge.js.map +1 -1
  116. package/dist/core/lang.js +5 -2
  117. package/dist/core/lang.js.map +1 -1
  118. package/dist/core/ledger.js +44 -20
  119. package/dist/core/ledger.js.map +1 -1
  120. package/dist/core/locations.js +12 -0
  121. package/dist/core/locations.js.map +1 -0
  122. package/dist/core/map/imports.js +20 -9
  123. package/dist/core/map/imports.js.map +1 -1
  124. package/dist/core/map/index.js +28 -13
  125. package/dist/core/map/index.js.map +1 -1
  126. package/dist/core/map/symbols.js +27 -12
  127. package/dist/core/map/symbols.js.map +1 -1
  128. package/dist/core/output-capture.js +7 -4
  129. package/dist/core/output-capture.js.map +1 -1
  130. package/dist/core/paths.js +2 -1
  131. package/dist/core/paths.js.map +1 -1
  132. package/dist/core/performance.js +43 -17
  133. package/dist/core/performance.js.map +1 -1
  134. package/dist/core/profile.js +6 -3
  135. package/dist/core/profile.js.map +1 -1
  136. package/dist/core/reader.js +32 -16
  137. package/dist/core/reader.js.map +1 -1
  138. package/dist/core/readerSession.js +34 -14
  139. package/dist/core/readerSession.js.map +1 -1
  140. package/dist/core/recent.js +20 -6
  141. package/dist/core/recent.js.map +1 -1
  142. package/dist/core/regress.js +21 -12
  143. package/dist/core/regress.js.map +1 -1
  144. package/dist/core/repair.js +22 -4
  145. package/dist/core/repair.js.map +1 -1
  146. package/dist/core/research-queries.js +85 -0
  147. package/dist/core/research-queries.js.map +1 -0
  148. package/dist/core/research.js +89 -88
  149. package/dist/core/research.js.map +1 -1
  150. package/dist/core/results.js +89 -0
  151. package/dist/core/results.js.map +1 -0
  152. package/dist/core/risk-signals.js +55 -16
  153. package/dist/core/risk-signals.js.map +1 -1
  154. package/dist/core/run-id.js +10 -6
  155. package/dist/core/run-id.js.map +1 -1
  156. package/dist/core/scenarios.js +97 -57
  157. package/dist/core/scenarios.js.map +1 -1
  158. package/dist/core/session.js +3 -2
  159. package/dist/core/session.js.map +1 -1
  160. package/dist/core/size-gate.js +57 -0
  161. package/dist/core/size-gate.js.map +1 -0
  162. package/dist/core/size.js +32 -10
  163. package/dist/core/size.js.map +1 -1
  164. package/dist/core/skills.js +66 -28
  165. package/dist/core/skills.js.map +1 -1
  166. package/dist/core/skillsmp.js +26 -12
  167. package/dist/core/skillsmp.js.map +1 -1
  168. package/dist/core/source-basis.js +21 -9
  169. package/dist/core/source-basis.js.map +1 -1
  170. package/dist/core/status.js +26 -13
  171. package/dist/core/status.js.map +1 -1
  172. package/dist/core/table.js +8 -1
  173. package/dist/core/table.js.map +1 -1
  174. package/dist/core/tokens.js +20 -10
  175. package/dist/core/tokens.js.map +1 -1
  176. package/dist/core/tree.js +26 -16
  177. package/dist/core/tree.js.map +1 -1
  178. package/dist/core/verification-plan.js +26 -10
  179. package/dist/core/verification-plan.js.map +1 -1
  180. package/dist/core/verification.js +14 -7
  181. package/dist/core/verification.js.map +1 -1
  182. package/dist/core/view.js +93 -44
  183. package/dist/core/view.js.map +1 -1
  184. package/dist/install/global.js +37 -18
  185. package/dist/install/global.js.map +1 -1
  186. package/dist/install/hooks.js +17 -8
  187. package/dist/install/hooks.js.map +1 -1
  188. package/dist/install/manifest.js +11 -0
  189. package/dist/install/manifest.js.map +1 -0
  190. package/dist/install/mcpb.js +52 -23
  191. package/dist/install/mcpb.js.map +1 -1
  192. package/dist/install/plugin.js +73 -33
  193. package/dist/install/plugin.js.map +1 -1
  194. package/dist/install/project.js +8 -7
  195. package/dist/install/project.js.map +1 -1
  196. package/dist/install/register.js +83 -48
  197. package/dist/install/register.js.map +1 -1
  198. package/dist/install/tree.js +27 -11
  199. package/dist/install/tree.js.map +1 -1
  200. package/dist/install/update.js +46 -20
  201. package/dist/install/update.js.map +1 -1
  202. package/hooks/code-map.cjs +22 -9
  203. package/hooks/file-size.cjs +83 -0
  204. package/hooks/journal.cjs +28 -18
  205. package/hooks/knowledge-auto.cjs +55 -21
  206. package/hooks/knowledge-journal.cjs +47 -20
  207. package/hooks/knowledge-projects.cjs +50 -21
  208. package/hooks/knowledge-recall.cjs +16 -6
  209. package/hooks/knowledge-upkeep.cjs +22 -5
  210. package/hooks/locations.cjs +35 -0
  211. package/hooks/notify.js +52 -24
  212. package/hooks/obsidian.cjs +17 -7
  213. package/hooks/private-store.cjs +25 -10
  214. package/hooks/retest.cjs +39 -16
  215. package/hooks/session-context.cjs +30 -13
  216. package/hooks/session-files.cjs +44 -21
  217. package/hooks/session-repair.cjs +26 -11
  218. package/hooks/session-state.cjs +78 -38
  219. package/hooks/session.js +19 -8
  220. package/hooks/slice-command.cjs +38 -17
  221. package/hooks/slice-guard.cjs +20 -6
  222. package/hooks/slice-store.cjs +25 -12
  223. package/internal/guides/code.md +17 -0
  224. package/mcpb/server/index.js +40 -12
  225. package/package.json +1 -1
@@ -3,7 +3,21 @@ import { artifactPathsValid } from './artifact-paths.js';
3
3
  import { bindRiskChecks, riskReason } from './verification.js';
4
4
  import { mutationOf } from './checks/mutation.js';
5
5
  const CHECK_TYPES = new Set(['run', 'file', 'http', 'eval', 'review', 'human']);
6
- const ID_RE = /^[a-z][a-z0-9-]{0,39}$/;
6
+ /** The longest scenario id; a regression id (`r-<n>-<slug>`) keeps to it too. */
7
+ export const SCENARIO_ID_MAX = 40;
8
+ const ID_RE = new RegExp(`^[a-z][a-z0-9-]{0,${SCENARIO_ID_MAX - 1}}$`);
9
+ const EXIT_CODE_MAX = 255;
10
+ /** A reviewer pack is a `reviewers/` directory name: lowercase words joined by single hyphens. */
11
+ const PACK_NAME = /^[a-z0-9]+(-[a-z0-9]+)*$/;
12
+ /** The mark and the Mermaid stroke of each result on the work graph. */
13
+ const GRAPH_MARK = { pass: '✔', fail: '✘', blocked: '⊘', pending: '?', never: '·' };
14
+ const GRAPH_STYLES = [
15
+ ' classDef pass stroke:#2e7d32',
16
+ ' classDef fail stroke:#c62828',
17
+ ' classDef blocked stroke:#ef6c00,stroke-dasharray:4',
18
+ ' classDef pending stroke:#6a1b9a',
19
+ ' classDef never stroke:#9e9e9e',
20
+ ];
7
21
  function isRecord(value) {
8
22
  return typeof value === 'object' && value !== null && !Array.isArray(value);
9
23
  }
@@ -27,16 +41,21 @@ function strList(value) {
27
41
  * Checkability — a scenario is stored only when bound to exactly one check type.
28
42
  * Prose that cannot be checked is not part of the contract (principle ①).
29
43
  */
44
+ /** File-check keys that hold a text rule (the others are `exists`, `a11y` and `sum`). */
45
+ const FILE_RULES = ['pattern', 'contains', 'absent', 'traceable', 'schema'];
30
46
  function checkReason(check) {
31
47
  if (!isRecord(check))
32
48
  return 'missing check — one check type (run·file·http·eval·review·human) is required';
33
49
  const type = check['type'];
34
50
  if (typeof type !== 'string' || !CHECK_TYPES.has(type))
35
51
  return `unknown check type: ${String(type)}`;
36
- if (check['timeoutMs'] !== undefined && (typeof check['timeoutMs'] !== 'number' || !Number.isFinite(check['timeoutMs']) || check['timeoutMs'] <= 0))
52
+ const timeout = check['timeoutMs'];
53
+ if (timeout !== undefined && (typeof timeout !== 'number' || !Number.isFinite(timeout) || timeout <= 0))
37
54
  return 'timeoutMs must be a positive finite number';
38
- if (type === 'run' && check['expect'] !== undefined && (!Number.isInteger(check['expect']) || Number(check['expect']) < 0 || Number(check['expect']) > 255))
39
- return 'run expect must be an exit code from 0 to 255';
55
+ const expected = check['expect'];
56
+ if (type === 'run' && expected !== undefined && (!Number.isInteger(expected) || Number(expected) < 0 || Number(expected) > EXIT_CODE_MAX)) {
57
+ return `run expect must be an exit code from 0 to ${EXIT_CODE_MAX}`;
58
+ }
40
59
  if (type === 'run' && check['cwd'] !== undefined && !str(check['cwd']))
41
60
  return 'run cwd must be a nonempty directory path';
42
61
  switch (type) {
@@ -46,9 +65,10 @@ function checkReason(check) {
46
65
  if (!str(check['path']))
47
66
  return 'file check requires path';
48
67
  const sum = check['sum'];
49
- if (sum !== undefined && !(isRecord(sum) && str(sum['column']) && typeof sum['equals'] === 'number'))
68
+ const sumValid = isRecord(sum) && str(sum['column']) && typeof sum['equals'] === 'number';
69
+ if (sum !== undefined && !sumValid)
50
70
  return 'file sum requires column and equals (a number)';
51
- const hasRule = check['exists'] !== undefined || str(check['pattern']) || str(check['contains']) || str(check['absent']) || str(check['traceable']) || check['a11y'] === true || str(check['schema']) || sum !== undefined;
71
+ const hasRule = check['exists'] !== undefined || FILE_RULES.some((rule) => str(check[rule])) || check['a11y'] === true || sum !== undefined;
52
72
  return hasRule ? null : 'file check requires one of exists·pattern·contains·absent·traceable·a11y·schema·sum';
53
73
  }
54
74
  case 'http':
@@ -63,7 +83,7 @@ function checkReason(check) {
63
83
  if (!str(check['path']))
64
84
  return 'review check requires path (the manuscript)';
65
85
  const pack = check['pack'];
66
- if (pack !== undefined && (typeof pack !== 'string' || !/^[a-z0-9]+(-[a-z0-9]+)*$/.test(pack)))
86
+ if (pack !== undefined && (typeof pack !== 'string' || !PACK_NAME.test(pack)))
67
87
  return 'review pack must be a reviewers/ directory name';
68
88
  const changed = check['changed'];
69
89
  if (changed !== undefined && changed !== true && !str(changed))
@@ -79,6 +99,65 @@ function checkReason(check) {
79
99
  return null;
80
100
  }
81
101
  }
102
+ /** Declared inputs: project-relative files or directories, never the whole project; null when any is not. */
103
+ function inputPaths(value) {
104
+ const inputs = strList(value);
105
+ const outside = (p) => p.startsWith('/') || p.split(/[\\/]/).includes('..') || p.includes('\\') || p === '.';
106
+ return inputs === null || inputs.some(outside) ? null : inputs;
107
+ }
108
+ const ARTIFACTS_REASON = 'artifacts must contain 1–16 project-relative file paths outside .git and .vibe';
109
+ /** One list entry: the scenario it declares, or why it is rejected. `seen` holds the ids already taken. */
110
+ function parseItem(item, index, seen) {
111
+ const label = isRecord(item) && typeof item['id'] === 'string' ? item['id'] : `#${index + 1}`;
112
+ if (!isRecord(item))
113
+ return { id: label, reason: 'item is not an object' };
114
+ const id = str(item['id']);
115
+ if (!id || !ID_RE.test(id)) {
116
+ return { id: label, reason: `id must be 1-${SCENARIO_ID_MAX} chars of lowercase letters, digits, hyphens` };
117
+ }
118
+ if (seen.has(id))
119
+ return { id, reason: 'duplicate id' };
120
+ const then = str(item['then']);
121
+ if (!then)
122
+ return { id, reason: 'then (the success statement) is required' };
123
+ const reason = checkReason(item['check']);
124
+ if (reason)
125
+ return { id, reason };
126
+ const needs = strList(item['needs']);
127
+ if (needs === null)
128
+ return { id, reason: 'needs must be a list of scenario ids' };
129
+ const verifiers = strList(item['verifiers']);
130
+ if (verifiers === null)
131
+ return { id, reason: 'verifiers must be a list of file paths' };
132
+ if (item['artifacts'] !== undefined && !artifactPathsValid(item['artifacts']))
133
+ return { id, reason: ARTIFACTS_REASON };
134
+ const inputs = inputPaths(item['inputs']);
135
+ if (inputs === null)
136
+ return { id, reason: 'inputs must be project-relative files or directories, not the whole project' };
137
+ const invalidRisk = item['risk'] === undefined ? null : riskReason(item['risk']);
138
+ if (invalidRisk)
139
+ return { id, reason: invalidRisk };
140
+ seen.add(id);
141
+ const scenario = { id, then, check: item['check'], ...(inputs.length > 0 ? { inputs } : {}) };
142
+ const given = str(item['given']);
143
+ const when = str(item['when']);
144
+ const irreversible = str(item['irreversible']);
145
+ if (item['risk'] !== undefined)
146
+ scenario.risk = item['risk'];
147
+ if (given)
148
+ scenario.given = given;
149
+ if (when)
150
+ scenario.when = when;
151
+ if (irreversible)
152
+ scenario.irreversible = irreversible;
153
+ if (needs.length > 0)
154
+ scenario.needs = needs;
155
+ if (verifiers.length > 0)
156
+ scenario.verifiers = verifiers;
157
+ if (item['artifacts'] !== undefined)
158
+ scenario.artifacts = item['artifacts'];
159
+ return scenario;
160
+ }
82
161
  export function parseScenarios(text) {
83
162
  let raw;
84
163
  try {
@@ -93,51 +172,11 @@ export function parseScenarios(text) {
93
172
  const rejections = [];
94
173
  const seen = new Set();
95
174
  raw.forEach((item, index) => {
96
- const label = isRecord(item) && typeof item['id'] === 'string' ? item['id'] : `#${index + 1}`;
97
- if (!isRecord(item))
98
- return void rejections.push({ id: label, reason: 'item is not an object' });
99
- const id = str(item['id']);
100
- if (!id || !ID_RE.test(id))
101
- return void rejections.push({ id: label, reason: 'id must be 1-40 chars of lowercase letters, digits, hyphens' });
102
- if (seen.has(id))
103
- return void rejections.push({ id, reason: 'duplicate id' });
104
- const then = str(item['then']);
105
- if (!then)
106
- return void rejections.push({ id, reason: 'then (the success statement) is required' });
107
- const reason = checkReason(item['check']);
108
- if (reason)
109
- return void rejections.push({ id, reason });
110
- const needs = strList(item['needs']);
111
- if (needs === null)
112
- return void rejections.push({ id, reason: 'needs must be a list of scenario ids' });
113
- const verifiers = strList(item['verifiers']);
114
- if (verifiers === null)
115
- return void rejections.push({ id, reason: 'verifiers must be a list of file paths' });
116
- if (item['artifacts'] !== undefined && !artifactPathsValid(item['artifacts']))
117
- return void rejections.push({ id, reason: 'artifacts must contain 1–16 project-relative file paths outside .git and .vibe' });
118
- const invalidRisk = item['risk'] === undefined ? null : riskReason(item['risk']);
119
- if (invalidRisk)
120
- return void rejections.push({ id, reason: invalidRisk });
121
- seen.add(id);
122
- const scenario = { id, then, check: item['check'] };
123
- const given = str(item['given']);
124
- const when = str(item['when']);
125
- const irreversible = str(item['irreversible']);
126
- if (item['risk'] !== undefined)
127
- scenario.risk = item['risk'];
128
- if (given)
129
- scenario.given = given;
130
- if (when)
131
- scenario.when = when;
132
- if (irreversible)
133
- scenario.irreversible = irreversible;
134
- if (needs.length > 0)
135
- scenario.needs = needs;
136
- if (verifiers.length > 0)
137
- scenario.verifiers = verifiers;
138
- if (item['artifacts'] !== undefined)
139
- scenario.artifacts = item['artifacts'];
140
- scenarios.push(scenario);
175
+ const parsed = parseItem(item, index, seen);
176
+ if ('reason' in parsed)
177
+ rejections.push(parsed);
178
+ else
179
+ scenarios.push(parsed);
141
180
  });
142
181
  detectMutations(scenarios);
143
182
  bindRiskChecks(scenarios, rejections);
@@ -169,8 +208,9 @@ function rejectBadEdges(scenarios, rejections) {
169
208
  rejections.push({ id: s.id, reason: `needs unknown scenario: ${need}` });
170
209
  else if (need === s.id)
171
210
  rejections.push({ id: s.id, reason: 'a scenario cannot need itself' });
172
- else if (parent.check.type === 'human')
211
+ else if (parent.check.type === 'human') {
173
212
  rejections.push({ id: s.id, reason: `needs ${need}, a human scenario — it has no verdict and would block forever` });
213
+ }
174
214
  else
175
215
  continue;
176
216
  bad.add(s.id);
@@ -186,10 +226,11 @@ function rejectBadEdges(scenarios, rejections) {
186
226
  }
187
227
  function cycleMembers(scenarios) {
188
228
  const indegree = new Map(scenarios.map((s) => [s.id, 0]));
189
- for (const s of scenarios)
229
+ for (const s of scenarios) {
190
230
  for (const need of s.needs ?? [])
191
231
  if (indegree.has(need))
192
232
  indegree.set(s.id, (indegree.get(s.id) ?? 0) + 1);
233
+ }
193
234
  const queue = scenarios.filter((s) => indegree.get(s.id) === 0).map((s) => s.id);
194
235
  const seen = new Set();
195
236
  while (queue.length > 0) {
@@ -224,16 +265,15 @@ export function ancestorsOf(scenarios, ids) {
224
265
  }
225
266
  /** The work graph as mermaid — one node per scenario, one edge per `needs` entry, the last result on each node. */
226
267
  export function graphMermaid(scenarios, lastOf) {
227
- const mark = { pass: '✔', fail: '✘', blocked: '⊘', pending: '?', never: '·' };
228
268
  const lines = ['graph LR'];
229
269
  for (const s of scenarios) {
230
270
  const last = lastOf(s.id);
231
- lines.push(` ${s.id}["${s.id} ${mark[last] ?? last}"]:::${last}`);
271
+ lines.push(` ${s.id}["${s.id} ${GRAPH_MARK[last] ?? last}"]:::${last}`);
232
272
  }
233
273
  for (const s of scenarios)
234
274
  for (const need of s.needs ?? [])
235
275
  lines.push(` ${need} --> ${s.id}`);
236
- lines.push(' classDef pass stroke:#2e7d32', ' classDef fail stroke:#c62828', ' classDef blocked stroke:#ef6c00,stroke-dasharray:4', ' classDef pending stroke:#6a1b9a', ' classDef never stroke:#9e9e9e');
276
+ lines.push(...GRAPH_STYLES);
237
277
  return lines.join('\n');
238
278
  }
239
279
  export function isHuman(scenario) {
@@ -1 +1 @@
1
- {"version":3,"file":"scenarios.js","sourceRoot":"","sources":["../../src/core/scenarios.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scenarios.js","sourceRoot":"","sources":["../../src/core/scenarios.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,15 @@
1
1
  import { createRequire } from 'node:module';
2
+ import { vibePath } from './paths.js';
2
3
  import { denied } from './errors.js';
3
4
  import { inspectContract } from './inspect.js';
4
5
  import { listRegressions, regressionProblems } from './regress.js';
5
6
  import fs from 'node:fs';
6
- import path from 'node:path';
7
+ const SCENARIOS_FILE = 'scenarios.yaml';
7
8
  const runtime = createRequire(import.meta.url)('../../hooks/session-state.cjs');
8
9
  export function bindSession(root, requested) {
9
10
  try {
10
11
  const id = runtime.identity(requested ? { session_id: requested } : {});
11
- const contract = fs.existsSync(path.join(root, '.vibe/scenarios.yaml')) ? inspectContract(root) : { scenarios: [], rejections: [] };
12
+ const contract = fs.existsSync(vibePath(root, SCENARIOS_FILE)) ? inspectContract(root) : { scenarios: [], rejections: [] };
12
13
  if (contract.rejections.length || regressionProblems(root).length)
13
14
  throw denied('cannot bind an invalid contract; inspect and correct it first');
14
15
  return runtime.bindSession(root, id, [...contract.scenarios, ...listRegressions(root)]);
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,eAAe,EAAsB,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAY7B,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,+BAA+B,CAK7E,CAAC;AACF,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,SAAkB;IAC1D,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QACpI,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,MAAM;YAAE,MAAM,MAAM,CAAC,+DAA+D,CAAC,CAAC;QACjJ,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,SAAS,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,MAAM,MAAM,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;IAAC,CAAC;AAC7D,CAAC;AACD,MAAM,UAAU,aAAa,CAAC,SAAkB,IAAiB,OAAO,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5I,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,KAAwB;IACvE,IAAI,CAAC;QAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAAC,CAAC;IAChD,OAAO,KAAK,EAAE,CAAC;QAAC,MAAM,MAAM,CAAC,yCAA0C,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IAAC,CAAC;AACtG,CAAC"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,eAAe,EAAsB,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAYxC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,+BAA+B,CAK7E,CAAC;AACF,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,SAAkB;IAC1D,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QAC3H,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,MAAM;YAAE,MAAM,MAAM,CAAC,+DAA+D,CAAC,CAAC;QACjJ,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,SAAS,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,MAAM,MAAM,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;IAAC,CAAC;AAC7D,CAAC;AACD,MAAM,UAAU,aAAa,CAAC,SAAkB,IAAiB,OAAO,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5I,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,KAAwB;IACvE,IAAI,CAAC;QAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAAC,CAAC;IAChD,OAAO,KAAK,EAAE,CAAC;QAAC,MAAM,MAAM,CAAC,yCAA0C,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IAAC,CAAC;AACtG,CAAC"}
@@ -0,0 +1,57 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { spawnSync } from 'node:child_process';
4
+ import { changedPaths, riskBase } from './risk-signals.js';
5
+ import { limited, lineCount, MAX_FILE_LINES } from './size.js';
6
+ export const SIZE_GATE = 'file-size';
7
+ const SIZE_FAILURE = 'size-limit';
8
+ const GIT_TIMEOUT_MS = 5000;
9
+ /** Room for one large source file as it stood at the baseline. */
10
+ const GIT_OUTPUT_BYTES = 64 * 1024 * 1024;
11
+ function gitShow(root, args) {
12
+ const r = spawnSync('git', args, { cwd: root, encoding: 'utf8', timeout: GIT_TIMEOUT_MS, maxBuffer: GIT_OUTPUT_BYTES });
13
+ return r.status === 0 ? r.stdout : null;
14
+ }
15
+ /**
16
+ * Source files this work grew past the limit: a new one over it, or a changed one longer than at the
17
+ * task's baseline commit. A file that was already over the limit and did not grow is not this work's
18
+ * doing. Outside Git there is no baseline, so nothing is judged.
19
+ */
20
+ export function grownPastLimit(root) {
21
+ if (gitShow(root, ['rev-parse', '--show-toplevel']) === null)
22
+ return [];
23
+ const head = riskBase(root)?.head ?? null;
24
+ const grown = [];
25
+ for (const file of changedPaths(root)) {
26
+ if (!limited(file))
27
+ continue;
28
+ let text;
29
+ try {
30
+ text = fs.readFileSync(path.join(root, file), 'utf8');
31
+ }
32
+ catch {
33
+ continue;
34
+ } // deleted
35
+ const lines = lineCount(text);
36
+ if (lines <= MAX_FILE_LINES)
37
+ continue;
38
+ const before = head ? gitShow(root, ['show', `${head}:${file}`]) : null;
39
+ const was = before === null ? null : lineCount(before);
40
+ if (was === null)
41
+ grown.push(`${file} (${lines} lines, new)`);
42
+ else if (lines > was)
43
+ grown.push(`${file} (${was} → ${lines} lines)`);
44
+ }
45
+ return grown;
46
+ }
47
+ /** The size gate of `vibe check --all`: an outcome when it fails, or when it clears its earlier failure; otherwise none. */
48
+ export function sizeGate(root, previous) {
49
+ const started = Date.now();
50
+ const grown = grownPastLimit(root);
51
+ const ms = Date.now() - started;
52
+ if (grown.length === 0)
53
+ return previous === 'fail' ? [{ id: SIZE_GATE, type: 'size', status: 'pass', exit: null, ms, tail: '' }] : [];
54
+ const tail = `Grown past ${MAX_FILE_LINES} lines: ${grown.join(', ')}. Split each file along its responsibilities, or move the new code into a new module.`;
55
+ return [{ id: SIZE_GATE, type: 'size', status: 'fail', exit: null, ms, tail, failureCode: SIZE_FAILURE, reason: SIZE_FAILURE }];
56
+ }
57
+ //# sourceMappingURL=size-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"size-gate.js","sourceRoot":"","sources":["../../src/core/size-gate.ts"],"names":[],"mappings":"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"}
package/dist/core/size.js CHANGED
@@ -1,10 +1,22 @@
1
1
  import fs from 'node:fs';
2
+ import { createRequire } from 'node:module';
2
3
  import path from 'node:path';
3
4
  import { relPosix } from './paths.js';
4
- export const SOURCE = /\.(ts|tsx|js|jsx|mjs|cjs|py|go|java|kt|rs|swift|rb|cs|php)$/;
5
- export const DEFAULT_EXCLUDE = /(^|\/)(node_modules|dist|build|out|\.git|\.vibe|vendor|coverage)(\/|$)|\.(test|spec)\.[jt]sx?$|_test\.(go|py)$/;
6
- /** A function-like header for the brace languages: a named function, `func`/`fn` with an optional receiver, an arrow assigned to a binding, or a bare `name(...) {` method. */
7
- export const BRACE_HEADER = /^\s*(?:export\s+)?(?:default\s+)?(?:async\s+)?(?:function\s*\*?\s*([A-Za-z_$][\w$]*)|(?:public|private|protected|static|override|final|\s)*\s*(?:func|fn)\s+(?:\([^)]*\)\s*)?([A-Za-z_$][\w$]*)|(?:const|let|var)\s+([A-Za-z_$][\w$]*)\s*=\s*(?:async\s*)?(?:\([^)]*\)|[A-Za-z_$][\w$]*)\s*(?::[^=]+)?=>\s*\{\s*$|(?:public|private|protected|static|async|override|\s)*\s*([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::\s*[^{]+)?\{\s*$)/;
5
+ // The edit hook ships without dist, so the patterns and the limit live in its dependency-free module.
6
+ const limit = createRequire(import.meta.url)('../../hooks/file-size.cjs');
7
+ export const { MAX_FILE_LINES, SOURCE, DEFAULT_EXCLUDE, limited, lineCount } = limit;
8
+ const IDENT = String.raw `[A-Za-z_$][\w$]*`;
9
+ const BRACE_HEADER_ALTERNATIVES = [
10
+ String.raw `function\s*\*?\s*(${IDENT})`,
11
+ String.raw `(?:public|private|protected|static|override|final|\s)*\s*(?:func|fn)\s+(?:\([^)]*\)\s*)?(${IDENT})`,
12
+ String.raw `(?:const|let|var)\s+(${IDENT})\s*=\s*(?:async\s*)?(?:\([^)]*\)|${IDENT})\s*(?::[^=]+)?=>\s*\{\s*$`,
13
+ String.raw `(?:public|private|protected|static|async|override|\s)*\s*(${IDENT})\s*\([^)]*\)\s*(?::\s*[^{]+)?\{\s*$`,
14
+ ];
15
+ /**
16
+ * A function-like header for the brace languages: a named function, `func`/`fn` with an optional receiver,
17
+ * an arrow assigned to a binding, or a bare `name(...) {` method.
18
+ */
19
+ export const BRACE_HEADER = new RegExp(String.raw `^\s*(?:export\s+)?(?:default\s+)?(?:async\s+)?(?:${BRACE_HEADER_ALTERNATIVES.join('|')})`);
8
20
  /** A Python `def`, indentation-delimited. */
9
21
  export const INDENT_HEADER = /^(\s*)(?:async\s+)?def\s+([A-Za-z_]\w*)\s*\(/;
10
22
  /** Every source file under `dir`, skipping `exclude`. */
@@ -41,14 +53,23 @@ function stepCode(ch, st) {
41
53
  }
42
54
  return 0;
43
55
  }
56
+ /** Characters after which a `/` opens a regex literal rather than dividing. */
57
+ const REGEX_AFTER_PUNCTUATION = '(,=:[!&|?{};+-*%<>~^';
58
+ /** Control-flow words that look like a method header (`if (x) {`) and are not one. */
59
+ const NOT_A_FUNCTION = ['if', 'for', 'while', 'switch', 'catch', 'else', 'return', 'with'];
60
+ const DEFAULT_PATHS = ['.'];
61
+ const ANONYMOUS = '(anonymous)';
44
62
  const REGEX_AFTER_WORD = new Set(['return', 'typeof', 'case', 'do', 'else', 'in', 'of', 'instanceof', 'void', 'delete', 'throw', 'await', 'yield']);
45
- /** A `/` starts a regex literal where an expression can start: after an operator, an opener, a separator, a keyword, or at the start of the line — not after a value. */
63
+ /**
64
+ * A `/` starts a regex literal where an expression can start: after an operator, an opener, a separator, a keyword,
65
+ * or at the start of the line — not after a value.
66
+ */
46
67
  function regexCanStart(line, i) {
47
68
  const before = line.slice(0, i).replace(/\s+$/, '');
48
69
  if (before === '')
49
70
  return true;
50
71
  const last = before.at(-1);
51
- if ('(,=:[!&|?{};+-*%<>~^'.includes(last))
72
+ if (REGEX_AFTER_PUNCTUATION.includes(last))
52
73
  return true;
53
74
  const word = /([A-Za-z_$][\w$]*)$/.exec(before)?.[1];
54
75
  return word !== undefined && REGEX_AFTER_WORD.has(word);
@@ -114,8 +135,8 @@ function braceFunctions(lines) {
114
135
  const m = BRACE_HEADER.exec(lines[i]);
115
136
  if (!m || !lines[i].includes('{'))
116
137
  continue;
117
- const name = m[1] ?? m[2] ?? m[3] ?? m[4] ?? '(anonymous)';
118
- if (['if', 'for', 'while', 'switch', 'catch', 'else', 'return', 'with'].includes(name))
138
+ const name = m[1] ?? m[2] ?? m[3] ?? m[4] ?? ANONYMOUS;
139
+ if (NOT_A_FUNCTION.includes(name))
119
140
  continue;
120
141
  let depth = 0;
121
142
  let end = i;
@@ -153,7 +174,7 @@ function indentFunctions(lines) {
153
174
  export function measureSize(root, paths, options) {
154
175
  const exclude = options.exclude ?? DEFAULT_EXCLUDE;
155
176
  const files = [];
156
- for (const p of paths.length ? paths : ['.']) {
177
+ for (const p of paths.length ? paths : DEFAULT_PATHS) {
157
178
  const full = path.resolve(root, p);
158
179
  if (!fs.existsSync(full))
159
180
  continue;
@@ -174,9 +195,10 @@ export function measureSize(root, paths, options) {
174
195
  if (lines.length > options.maxFile)
175
196
  findings.push({ file: rel, kind: 'file', name: rel, lines: lines.length, limit: options.maxFile });
176
197
  const fns = /\.py$/.test(file) ? indentFunctions(lines) : braceFunctions(lines);
177
- for (const fn of fns)
198
+ for (const fn of fns) {
178
199
  if (fn.lines > options.maxFunction)
179
200
  findings.push({ file: rel, kind: 'function', name: fn.name, lines: fn.lines, limit: options.maxFunction });
201
+ }
180
202
  }
181
203
  return { files: files.length, totalLines, largestFile: largest, findings };
182
204
  }
@@ -1 +1 @@
1
- {"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/core/size.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/core/size.ts"],"names":[],"mappings":"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"}