@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
@@ -10,7 +10,10 @@ import { inboxPath } from './inbox.js';
10
10
  import { record } from './ledger.js';
11
11
  import { vibePath } from './paths.js';
12
12
  import { listRegressions } from './regress.js';
13
+ import { hostKey } from './research-queries.js';
14
+ import { CLAUDE_DIR, CODEX_DIR } from './locations.js';
13
15
  import { readState } from './state.js';
16
+ import { HTTP_OK } from './checks/http.js';
14
17
  /**
15
18
  * Project-local skills. Nothing accumulates globally: a skill lives in this repository's
16
19
  * `.vibe/skills/installed`, is registered in `.vibe/skills/registry.json`, and is
@@ -19,15 +22,29 @@ import { readState } from './state.js';
19
22
  */
20
23
  export const COMMON_SKILLS = ['vibe'];
21
24
  const SKILL_DIRS = ['.vibe/skills/installed'];
22
- const NAME_RE = /^[a-z][a-z0-9.-]{0,39}$/;
25
+ /** Where the host clients keep project skills; a pruned skill is removed from these too. */
26
+ const CLIENT_SKILL_DIRS = [`${CLAUDE_DIR}/skills`, `${CODEX_DIR}/skills`];
27
+ const NAME_MAX = 40;
28
+ const NAME_RE = new RegExp(`^[a-z][a-z0-9.-]{0,${NAME_MAX - 1}}$`);
29
+ const REGISTRY_DIR = 'skills';
30
+ const REGISTRY_FILE = 'registry.json';
31
+ const DISMISSED_FILE = 'dismissed.jsonl';
23
32
  const DEFAULT_UNUSED_RUNS = 10;
24
33
  const MAX_PROPOSALS = 3;
25
34
  const MAX_COMMANDS_SHOWN = 20;
35
+ /** A skill is proposed from a repeated signal: this many regressions on a scenario, or this many askings of a question. */
36
+ const REPEAT_SIGNAL = 2;
37
+ const QUESTION_TITLE_MAX = 60;
38
+ const SHORT_SHA = 7;
39
+ const PINNED_SHA = 12;
40
+ const DEFAULT_BRANCH = 'main';
41
+ /** Placeholder URL in a skill scaffolded with an http check. */
42
+ const TEMPLATE_URL = 'https://example.com/health';
26
43
  function registryPath(root) {
27
- return vibePath(root, 'skills', 'registry.json');
44
+ return vibePath(root, REGISTRY_DIR, REGISTRY_FILE);
28
45
  }
29
46
  function dismissedPath(root) {
30
- return vibePath(root, 'skills', 'dismissed.jsonl');
47
+ return vibePath(root, REGISTRY_DIR, DISMISSED_FILE);
31
48
  }
32
49
  export function readRegistry(root) {
33
50
  return readJson(registryPath(root)) ?? { skills: [] };
@@ -42,7 +59,7 @@ function templateCheck(type, name) {
42
59
  case 'file':
43
60
  return { type: 'file', path: `out/${name}.csv`, exists: true };
44
61
  case 'http':
45
- return { type: 'http', url: 'https://example.com/health', expect: { status: 200 } };
62
+ return { type: 'http', url: TEMPLATE_URL, expect: { status: HTTP_OK } };
46
63
  case 'eval':
47
64
  return { type: 'eval', cases: `evals/${name}.jsonl`, runner: `node scripts/${name}.js`, expect: { pass: 1 } };
48
65
  default:
@@ -50,12 +67,15 @@ function templateCheck(type, name) {
50
67
  }
51
68
  }
52
69
  function skillBody(name, check, from) {
53
- const scenario = YAML.stringify([{ id: name, then: from ? `[from scenario ${from}] fill in the success statement` : 'fill in the success statement', check }]).trim();
70
+ const then = from ? `[from scenario ${from}] fill in the success statement` : 'fill in the success statement';
71
+ const scenario = YAML.stringify([{ id: name, then, check }]).trim();
54
72
  return [
55
73
  '---', `name: ${name}`, 'description: "fill in — one line saying when this skill applies"', 'user-invocable: false', '---', '',
56
74
  `# ${name}`, '', '## When', '', 'fill in — the situation that repeats in this project', '', '## Procedure', '',
57
- `1. Run \`vibe skill used ${name}\` so the ledger knows the skill was applied.`, '2. fill in — the steps, each one checkable', '', '## Check', '',
58
- 'This skill is installed because it is bound to the check below. Add it to `scenarios.yaml` when the procedure is part of an intent.', '', '```yaml', scenario, '```', '',
75
+ `1. Run \`vibe skill used ${name}\` so the ledger knows the skill was applied.`, '2. fill in — the steps, each one checkable', '',
76
+ '## Check', '',
77
+ 'This skill is installed because it is bound to the check below.',
78
+ 'Add it to `scenarios.yaml` when the procedure is part of an intent.', '', '```yaml', scenario, '```', '',
59
79
  ].join('\n');
60
80
  }
61
81
  function writeSkillFiles(root, name, files) {
@@ -74,9 +94,12 @@ function register(root, skill) {
74
94
  registry.skills = [...registry.skills.filter((s) => s.name !== skill.name), skill];
75
95
  writeRegistry(root, registry);
76
96
  }
97
+ function newSkill(name, kind, source, check, license, run, paths) {
98
+ return { name, kind, source, check, license, installedAt: nowIso(), installedRun: run, lastUsedRun: null, lastUsedAt: null, paths };
99
+ }
77
100
  export function createSkill(root, input) {
78
101
  if (!NAME_RE.test(input.name))
79
- throw usage('skill name: 1-40 chars of lowercase letters, digits, dots, hyphens');
102
+ throw usage(`skill name: 1-${NAME_MAX} chars of lowercase letters, digits, dots, hyphens`);
80
103
  if (COMMON_SKILLS.includes(input.name))
81
104
  throw usage(`${input.name} is a common skill shipped with vibe`);
82
105
  let check;
@@ -95,7 +118,7 @@ export function createSkill(root, input) {
95
118
  }
96
119
  const paths = writeSkillFiles(root, input.name, { 'SKILL.md': skillBody(input.name, check, input.fromScenario ?? null) });
97
120
  const run = readState(root).runs;
98
- register(root, { name: input.name, kind: 'created', source: 'created', check, license: null, installedAt: nowIso(), installedRun: run, lastUsedRun: null, lastUsedAt: null, paths });
121
+ register(root, newSkill(input.name, 'created', 'created', check, null, run, paths));
99
122
  const edges = input.fromScenario ? [{ type: 'implements', from: `skill:${input.name}`, to: `scenario:${input.fromScenario}` }] : [];
100
123
  record(root, { event: 'skill', client: detectClient(), model: detectModel(), detail: `create ${input.name} (${check.type})`, edges });
101
124
  return { name: input.name, paths, check };
@@ -133,10 +156,11 @@ async function locateSkill(client, owner, repo, name, sha) {
133
156
  /* try the next layout */
134
157
  }
135
158
  }
136
- throw usage(`no SKILL.md found in ${owner}/${repo}${name ? ` for ${name}` : ''} at ${sha.slice(0, 7)}`);
159
+ throw usage(`no SKILL.md found in ${owner}/${repo}${name ? ` for ${name}` : ''} at ${sha.slice(0, SHORT_SHA)}`);
137
160
  }
138
161
  const MAX_SKILL_FILES = 200;
139
- const MAX_SKILL_BYTES = 5 * 1024 * 1024;
162
+ const BYTES_PER_MB = 1024 * 1024;
163
+ const MAX_SKILL_BYTES = 5 * BYTES_PER_MB;
140
164
  /** The whole skill directory — `references/`, `scripts/`, `assets/` and deeper — keyed by path relative to the skill, within a cap. */
141
165
  async function fetchFiles(client, owner, repo, entries, sha, base = '') {
142
166
  const files = {};
@@ -159,8 +183,10 @@ async function fetchFiles(client, owner, repo, entries, sha, base = '') {
159
183
  continue;
160
184
  const text = full.encoding === 'base64' ? Buffer.from(full.content, 'base64').toString('utf-8') : full.content;
161
185
  bytes += Buffer.byteLength(text);
162
- if (Object.keys(files).length >= MAX_SKILL_FILES || bytes > MAX_SKILL_BYTES)
163
- throw usage(`the skill is over the cap (${MAX_SKILL_FILES} files, ${MAX_SKILL_BYTES / 1024 / 1024} MB) at ${rel} — install it by hand if it is really that large`);
186
+ if (Object.keys(files).length >= MAX_SKILL_FILES || bytes > MAX_SKILL_BYTES) {
187
+ const cap = `${MAX_SKILL_FILES} files, ${MAX_SKILL_BYTES / BYTES_PER_MB} MB`;
188
+ throw usage(`the skill is over the cap (${cap}) at ${rel} — install it by hand if it is really that large`);
189
+ }
164
190
  files[rel] = text;
165
191
  }
166
192
  };
@@ -178,7 +204,7 @@ export async function addSkill(root, input, client = githubClient()) {
178
204
  const license = meta.license?.spdx_id ?? null;
179
205
  let sha = input.pin ?? null;
180
206
  if (!sha) {
181
- const branch = (await client.get(`/repos/${owner}/${repo}/branches/${meta.default_branch ?? 'main'}`));
207
+ const branch = (await client.get(`/repos/${owner}/${repo}/branches/${meta.default_branch ?? DEFAULT_BRANCH}`));
182
208
  sha = branch.commit?.sha ?? null;
183
209
  }
184
210
  if (!sha)
@@ -186,11 +212,11 @@ export async function addSkill(root, input, client = githubClient()) {
186
212
  const { entries } = await locateSkill(client, owner, repo, name, sha);
187
213
  const files = await fetchFiles(client, owner, repo, entries, sha);
188
214
  const commands = commandsIn(files['SKILL.md']);
189
- const ref = `${owner}/${repo}${name ? `@${name}` : ''}#${sha.slice(0, 12)}`;
215
+ const ref = `${owner}/${repo}${name ? `@${name}` : ''}#${sha.slice(0, PINNED_SHA)}`;
190
216
  if (!input.yes)
191
217
  return { installed: false, ref, sha, license, commands, files: Object.keys(files) };
192
218
  const paths = writeSkillFiles(root, skillName, files);
193
- register(root, { name: skillName, kind: 'added', source: ref, check: null, license, installedAt: nowIso(), installedRun: readState(root).runs, lastUsedRun: null, lastUsedAt: null, paths });
219
+ register(root, newSkill(skillName, 'added', ref, null, license, readState(root).runs, paths));
194
220
  record(root, { event: 'skill', client: detectClient(), model: detectModel(), detail: `add ${ref} (${license ?? 'no license'}) confirmed by --yes` });
195
221
  return { installed: true, ref, sha, license, commands, paths };
196
222
  }
@@ -214,13 +240,16 @@ export function pruneSkills(root, options = {}) {
214
240
  const registry = readRegistry(root);
215
241
  const stale = registry.skills.filter((s) => current - (s.lastUsedRun ?? s.installedRun) >= unusedRuns);
216
242
  if (!options.dryRun) {
217
- for (const s of stale)
218
- for (const dir of [...SKILL_DIRS, '.claude/skills', '.codex/skills'])
243
+ for (const s of stale) {
244
+ for (const dir of [...SKILL_DIRS, ...CLIENT_SKILL_DIRS])
219
245
  fs.rmSync(path.join(root, dir, s.name), { recursive: true, force: true });
246
+ }
220
247
  registry.skills = registry.skills.filter((s) => !stale.includes(s));
221
248
  writeRegistry(root, registry);
222
- if (stale.length > 0)
223
- record(root, { event: 'skill', client: detectClient(), model: detectModel(), detail: `prune ${stale.map((s) => s.name).join(', ')} (unused ${unusedRuns} runs)` });
249
+ if (stale.length > 0) {
250
+ const names = stale.map((s) => s.name).join(', ');
251
+ record(root, { event: 'skill', client: detectClient(), model: detectModel(), detail: `prune ${names} (unused ${unusedRuns} runs)` });
252
+ }
224
253
  }
225
254
  return { removed: stale.map((s) => s.name), kept: registry.skills.filter((s) => !stale.includes(s)).map((s) => s.name), threshold: unusedRuns };
226
255
  }
@@ -237,15 +266,16 @@ function hostSignals(root, project) {
237
266
  continue;
238
267
  let key;
239
268
  try {
240
- key = new URL(s.check.url).hostname.replace(/^(www|api)\./, '').split('.')[0] ?? '';
269
+ key = hostKey(s.check.url) ?? '';
241
270
  }
242
271
  catch {
243
272
  continue;
244
273
  }
245
274
  if (!key || key === 'localhost' || /^\d+$/.test(key) || project.some((p) => p.name.includes(key)))
246
275
  continue;
247
- if (!out.some((p) => p.ref.endsWith(key)))
248
- out.push({ kind: 'import', ref: `vibe skill search ${key}`, why: `scenario ${s.id} targets ${key}; no project skill covers it`, source: 'scenarios' });
276
+ if (out.some((p) => p.ref.endsWith(key)))
277
+ continue;
278
+ out.push({ kind: 'import', ref: `vibe skill search ${key}`, why: `scenario ${s.id} targets ${key}; no project skill covers it`, source: 'scenarios' });
249
279
  }
250
280
  return out;
251
281
  }
@@ -260,9 +290,10 @@ function regressionSignals(root, project) {
260
290
  const out = [];
261
291
  for (const [id, n] of bySource) {
262
292
  const scenario = scenarios.find((s) => s.id === id);
263
- if (n < 2 || !scenario || scenario.check.type === 'human' || project.some((p) => p.name === `${id}-guard`))
293
+ if (n < REPEAT_SIGNAL || !scenario || scenario.check.type === 'human' || project.some((p) => p.name === `${id}-guard`))
264
294
  continue;
265
- out.push({ kind: 'create', ref: `vibe skill create ${id}-guard --from-scenario ${id}`, why: `${n} regressions trace to scenario ${id}`, source: 'regressions' });
295
+ const ref = `vibe skill create ${id}-guard --from-scenario ${id}`;
296
+ out.push({ kind: 'create', ref, why: `${n} regressions trace to scenario ${id}`, source: 'regressions' });
266
297
  }
267
298
  return out;
268
299
  }
@@ -273,19 +304,26 @@ function questionSignals(root) {
273
304
  continue;
274
305
  counts.set(e.question, (counts.get(e.question) ?? 0) + 1);
275
306
  }
276
- return [...counts.entries()].filter(([, n]) => n >= 2).map(([q, n]) => ({ kind: 'knowledge', ref: `vibe knowledge add --title ${JSON.stringify(q.slice(0, 60))}`, why: `the same question was asked ${n} times — an answer in knowledge/ stops it`, source: 'inbox' }));
307
+ return [...counts.entries()].filter(([, n]) => n >= REPEAT_SIGNAL).map(([q, n]) => ({
308
+ kind: 'knowledge', ref: `vibe knowledge add --title ${JSON.stringify(q.slice(0, QUESTION_TITLE_MAX))}`,
309
+ why: `the same question was asked ${n} times — an answer in knowledge/ stops it`, source: 'inbox',
310
+ }));
277
311
  }
278
312
  function handoffSignals(root, project) {
279
313
  if (readState(root).state !== 'DONE')
280
314
  return [];
281
315
  return loadScenarios(root)
282
316
  .filter((s) => s.irreversible && s.check.type !== 'human' && !project.some((p) => p.name === `run-${s.id}`))
283
- .map((s) => ({ kind: 'create', ref: `vibe skill create run-${s.id} --from-scenario ${s.id}`, why: `handoff: ${s.id} is irreversible (${s.irreversible}) — the operator needs the procedure with its check`, source: 'state' }));
317
+ .map((s) => ({
318
+ kind: 'create', ref: `vibe skill create run-${s.id} --from-scenario ${s.id}`,
319
+ why: `handoff: ${s.id} is irreversible (${s.irreversible}) — the operator needs the procedure with its check`, source: 'state',
320
+ }));
284
321
  }
285
322
  export function suggestSkills(root, all = false) {
286
323
  const project = readRegistry(root).skills;
287
324
  const dismissed = new Set(readJsonl(dismissedPath(root)).map((d) => d.ref));
288
- const proposals = [...handoffSignals(root, project), ...regressionSignals(root, project), ...hostSignals(root, project), ...questionSignals(root)].filter((p) => !dismissed.has(p.ref));
325
+ const signals = [...handoffSignals(root, project), ...regressionSignals(root, project), ...hostSignals(root, project), ...questionSignals(root)];
326
+ const proposals = signals.filter((p) => !dismissed.has(p.ref));
289
327
  return all ? proposals : proposals.slice(0, MAX_PROPOSALS);
290
328
  }
291
329
  //# sourceMappingURL=skills.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,27 @@
1
1
  const ENDPOINT = 'https://skillsmp.com/api/v1/skills/search';
2
- const MAX_BYTES = 131_072;
2
+ const API_KEY_ENV = 'SKILLSMP_API_KEY';
3
+ /** Largest response read; a bigger one is refused. */
4
+ const MAX_BYTES = 128 * 1024;
5
+ const REQUEST_TIMEOUT_MS = 5000;
6
+ /** Skills asked of the catalog and kept from its answer. */
7
+ const RESULT_LIMIT = 5;
8
+ const QUERY_MAX = 500;
9
+ const DESCRIPTION_MAX = 400;
10
+ const GITHUB_URL_MAX = 1000;
11
+ /** Every catalog hit scores the same: the catalog gives no quality signal, so discovery hints rank after scored candidates. */
12
+ const HINT_SCORE = 3;
13
+ /** A GitHub repository URL, optionally pointing at a `tree/` directory or a `blob/` file inside it. */
14
+ const GITHUB_SKILL_URL = /^https:\/\/github\.com\/([\w-]+)\/([\w.-]+)(?:\/(tree|blob)\/([\w.-]+)\/([\w./-]+))?\/?$/;
15
+ /** Shown for any failure; a response body or transport error could hold the API key, so neither is copied. */
16
+ export const SKILLSMP_UNAVAILABLE = 'SkillsMP unavailable, limited or invalid; using existing GitHub search';
3
17
  /** Catalog metadata is a discovery hint. Installation still resolves and previews GitHub source. */
4
18
  export function skillsmpCandidate(value) {
5
19
  if (!value || typeof value !== 'object')
6
20
  return null;
7
21
  const item = value;
8
- if (typeof item.githubUrl !== 'string' || item.githubUrl.length > 1000)
22
+ if (typeof item.githubUrl !== 'string' || item.githubUrl.length > GITHUB_URL_MAX)
9
23
  return null;
10
- const match = /^https:\/\/github\.com\/([\w-]+)\/([\w.-]+)(?:\/(tree|blob)\/([\w.-]+)\/([\w./-]+))?\/?$/.exec(item.githubUrl);
24
+ const match = GITHUB_SKILL_URL.exec(item.githubUrl);
11
25
  if (!match)
12
26
  return null;
13
27
  let dir = (match[5] ?? '').replace(/\/$/, '');
@@ -20,21 +34,21 @@ export function skillsmpCandidate(value) {
20
34
  return null;
21
35
  const name = dir.replace(/^skills\//, '');
22
36
  const ref = `${match[1]}/${match[2]}${name ? `@${name}` : ''}`;
23
- const description = typeof item.description === 'string' ? item.description.replace(/[\r\n\t|]/g, ' ').slice(0, 400) : '';
37
+ const description = typeof item.description === 'string' ? item.description.replace(/[\r\n\t|]/g, ' ').slice(0, DESCRIPTION_MAX) : '';
24
38
  return { kind: 'skill', ref, url: item.githubUrl, why: `SkillsMP discovery (unverified): ${description}`,
25
- stars: null, updatedAt: null, license: null, action: `vibe skill add ${ref}`, score: 3 };
39
+ stars: null, updatedAt: null, license: null, action: `vibe skill add ${ref}`, score: HINT_SCORE };
26
40
  }
27
41
  export function skillsmpClient(request = fetch) {
28
42
  return { search: async (query) => {
29
43
  const headers = { Accept: 'application/json' };
30
- const key = process.env['SKILLSMP_API_KEY']?.trim();
44
+ const key = process.env[API_KEY_ENV]?.trim();
31
45
  if (key)
32
46
  headers.Authorization = `Bearer ${key}`;
33
47
  const url = new URL(ENDPOINT);
34
- url.searchParams.set('q', query.slice(0, 500));
35
- url.searchParams.set('limit', '5');
48
+ url.searchParams.set('q', query.slice(0, QUERY_MAX));
49
+ url.searchParams.set('limit', String(RESULT_LIMIT));
36
50
  try {
37
- const response = await request(url, { headers, redirect: 'error', signal: AbortSignal.timeout(5000) });
51
+ const response = await request(url, { headers, redirect: 'error', signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS) });
38
52
  if (!response.ok)
39
53
  throw new Error(`HTTP ${response.status}`);
40
54
  const reader = response.body?.getReader();
@@ -59,11 +73,11 @@ export function skillsmpClient(request = fetch) {
59
73
  const doc = JSON.parse(Buffer.concat(chunks).toString('utf8'));
60
74
  if (doc?.success !== true || !Array.isArray(doc.data?.skills))
61
75
  throw new Error('invalid response');
62
- return doc.data.skills.slice(0, 5).map(skillsmpCandidate).filter((c) => c !== null);
76
+ return doc.data.skills.slice(0, RESULT_LIMIT).map(skillsmpCandidate)
77
+ .filter((c) => c !== null);
63
78
  }
64
79
  catch {
65
- // Never copy response bodies or transport errors: either may contain the API key.
66
- throw new Error('SkillsMP unavailable, limited or invalid; using existing GitHub search');
80
+ throw new Error(SKILLSMP_UNAVAILABLE);
67
81
  }
68
82
  } };
69
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"skillsmp.js","sourceRoot":"","sources":["../../src/core/skillsmp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skillsmp.js","sourceRoot":"","sources":["../../src/core/skillsmp.ts"],"names":[],"mappings":"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"}
@@ -2,13 +2,20 @@ import { createHash } from 'node:crypto';
2
2
  import fs from 'node:fs';
3
3
  import path from 'node:path';
4
4
  import { denied, usage } from './errors.js';
5
- import { vibePath } from './paths.js';
5
+ import { VIBE_DIR, vibePath } from './paths.js';
6
6
  import { writeJson } from './store.js';
7
+ const SOURCE_BASIS_FILE = 'source-basis.json';
8
+ const SHA256_HEX = /^[a-f0-9]{64}$/;
9
+ /** Project bookkeeping folders that are never an input. */
10
+ const BOOKKEEPING = [VIBE_DIR, '.git'];
11
+ /** File-system error codes that mean the source is gone rather than unreadable. */
12
+ const GONE_CODES = ['ENOENT', 'ENOTDIR'];
7
13
  function relativeInput(root, file) {
8
14
  const relative = path.relative(path.resolve(root), path.resolve(root, file));
9
- if (!relative || relative === '..' || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative))
15
+ const outside = !relative || relative === '..' || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative);
16
+ if (outside)
10
17
  throw usage(`source must be a regular file inside the project: ${file}`);
11
- if (['.vibe', '.git'].includes(relative.split(path.sep)[0] ?? ''))
18
+ if (BOOKKEEPING.includes(relative.split(path.sep)[0] ?? ''))
12
19
  throw usage(`source must be an input file, not project bookkeeping: ${file}`);
13
20
  return relative.split(path.sep).join('/');
14
21
  }
@@ -23,8 +30,9 @@ function sourceHash(root, file) {
23
30
  export function captureSources(root, sources) {
24
31
  if (sources === undefined)
25
32
  return [];
26
- if (!Array.isArray(sources) || sources.some((file) => typeof file !== 'string' || !file.trim()))
33
+ if (!Array.isArray(sources) || sources.some((file) => typeof file !== 'string' || !file.trim())) {
27
34
  throw usage('sources must be an array of nonempty file paths');
35
+ }
28
36
  const paths = [...new Set(sources.map((file) => relativeInput(root, file)))].sort();
29
37
  return paths.map((file) => {
30
38
  try {
@@ -36,12 +44,15 @@ export function captureSources(root, sources) {
36
44
  });
37
45
  }
38
46
  export function readSourceBasis(root) {
39
- const file = vibePath(root, 'source-basis.json');
47
+ const file = vibePath(root, SOURCE_BASIS_FILE);
40
48
  if (!fs.existsSync(file))
41
49
  return [];
42
50
  try {
43
51
  const value = JSON.parse(fs.readFileSync(file, 'utf-8'));
44
- if (!Array.isArray(value) || value.some((entry) => !entry || typeof entry.path !== 'string' || !/^[a-f0-9]{64}$/.test(entry.sha256)))
52
+ const invalid = (entry) => {
53
+ return !entry || typeof entry.path !== 'string' || !SHA256_HEX.test(entry.sha256 ?? '');
54
+ };
55
+ if (!Array.isArray(value) || value.some(invalid))
45
56
  throw new Error('invalid source record');
46
57
  return value;
47
58
  }
@@ -50,7 +61,7 @@ export function readSourceBasis(root) {
50
61
  }
51
62
  }
52
63
  export function saveSourceBasis(root, sources) {
53
- const file = vibePath(root, 'source-basis.json');
64
+ const file = vibePath(root, SOURCE_BASIS_FILE);
54
65
  if (sources.length)
55
66
  writeJson(file, sources);
56
67
  else
@@ -66,10 +77,11 @@ export function sourceValidity(root, basis = readSourceBasis(root)) {
66
77
  }
67
78
  catch (error) {
68
79
  const code = error.code;
69
- return { ...source, currentSha256: null, status: code === 'ENOENT' || code === 'ENOTDIR' ? 'missing' : 'unreadable' };
80
+ return { ...source, currentSha256: null, status: GONE_CODES.includes(code ?? '') ? 'missing' : 'unreadable' };
70
81
  }
71
82
  });
72
83
  const paths = (status) => sources.filter((source) => source.status === status).map((source) => source.path);
73
- return { sources, valid: sources.every((source) => source.status === 'unchanged'), changed: paths('changed'), missing: paths('missing'), unreadable: paths('unreadable') };
84
+ const valid = sources.every((source) => source.status === 'unchanged');
85
+ return { sources, valid, changed: paths('changed'), missing: paths('missing'), unreadable: paths('unreadable') };
74
86
  }
75
87
  //# sourceMappingURL=source-basis.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"source-basis.js","sourceRoot":"","sources":["../../src/core/source-basis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"source-basis.js","sourceRoot":"","sources":["../../src/core/source-basis.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,36 @@
1
1
  import fs from 'node:fs';
2
- import os from 'node:os';
3
2
  import { readResults } from './check.js';
4
3
  import { readConfig } from './config.js';
5
4
  import { openQuestions } from './inbox.js';
6
5
  import { loadScenarios } from './intent.js';
7
6
  import { globalKnowledgeDir, knowledgeSettings } from './knowledge.js';
8
7
  import { projectName } from './knowledge-projects.js';
8
+ import { RUN_PREFIX } from './run-id.js';
9
+ import { defaultHome } from './locations.js';
9
10
  import { isHuman } from './scenarios.js';
10
11
  import { readState } from './state.js';
11
12
  import { retestSummary } from './retest.js';
12
13
  import { readText } from './store.js';
13
14
  import path from 'node:path';
14
- const WEEK_MS = 7 * 24 * 60 * 60 * 1000;
15
+ const MINUTE_MS = 60 * 1000;
16
+ const WEEK_DAYS = 7;
17
+ const WEEK_MS = WEEK_DAYS * 24 * 60 * MINUTE_MS;
18
+ const WIKI_LOG = 'log.md';
19
+ /** A wiki log line: `- 2026-01-31 09:30 UTC · …`; the group is the time. */
20
+ const LOG_LINE = /^- (\d{4}-\d{2}-\d{2} \d{2}:\d{2}) UTC · /;
21
+ const MINUTES_PER_HOUR = 60;
22
+ /** Ages show in minutes below an hour, in hours up to this many, then in days. */
23
+ const HOURS_BEFORE_DAYS = 48;
24
+ const HOURS_PER_DAY = 24;
15
25
  /** Knowledge turns this project had in the last week, counted from the wiki's log; null when the log cannot be read. */
16
26
  function knowledgeTurns(root, home, now) {
17
27
  try {
18
- const log = readText(path.join(globalKnowledgeDir(home), 'log.md'));
28
+ const log = readText(path.join(globalKnowledgeDir(home), WIKI_LOG));
19
29
  if (log === null)
20
30
  return 0;
21
31
  const link = `[[projects/${projectName(fs.realpathSync(root), home, false)}]]`;
22
32
  return log.split('\n').filter((line) => {
23
- const at = /^- (\d{4}-\d{2}-\d{2} \d{2}:\d{2}) UTC · /.exec(line)?.[1];
33
+ const at = LOG_LINE.exec(line)?.[1];
24
34
  return at && line.includes(link) && now.getTime() - Date.parse(`${at.replace(' ', 'T')}:00Z`) <= WEEK_MS;
25
35
  }).length;
26
36
  }
@@ -48,27 +58,30 @@ export function projectSummary(root, home, now = new Date()) {
48
58
  tokens: readConfig(root).tokens,
49
59
  knowledge: knowledge.auto,
50
60
  journal: knowledge.journal,
51
- knowledgeTurns: knowledge.auto ? knowledgeTurns(root, home ?? process.env['VIBE_HOME_DIR'] ?? os.homedir(), now) : null,
61
+ knowledgeTurns: knowledge.auto ? knowledgeTurns(root, home ?? defaultHome(), now) : null,
52
62
  retest: retestSummary(root, home).mode,
53
63
  },
54
64
  questions: openQuestions(root).filter((q) => !q.answer?.trim()).map((q) => q.question),
55
65
  };
56
66
  }
57
67
  function ago(at, now) {
58
- const minutes = Math.max(0, Math.round((now.getTime() - Date.parse(at)) / 60_000));
59
- if (minutes < 60)
68
+ const minutes = Math.max(0, Math.round((now.getTime() - Date.parse(at)) / MINUTE_MS));
69
+ if (minutes < MINUTES_PER_HOUR)
60
70
  return `${minutes} minute${minutes === 1 ? '' : 's'} ago`;
61
- const hours = Math.round(minutes / 60);
62
- if (hours < 48)
71
+ const hours = Math.round(minutes / MINUTES_PER_HOUR);
72
+ if (hours < HOURS_BEFORE_DAYS)
63
73
  return `${hours} hour${hours === 1 ? '' : 's'} ago`;
64
- return `${Math.round(hours / 24)} days ago`;
74
+ return `${Math.round(hours / HOURS_PER_DAY)} days ago`;
65
75
  }
66
76
  export function summaryLines(s, now = new Date()) {
67
77
  const c = s.checks;
68
- const run = c.at === null ? 'never run — `vibe check --all`' : `last run r-${c.run}, ${ago(c.at, now)}`;
78
+ const run = c.at === null ? 'never run — `vibe check --all`' : `last run ${RUN_PREFIX}${c.run}, ${ago(c.at, now)}`;
69
79
  const checks = c.total === 0 ? 'none yet — they are written when a piece of work is approved' : `${c.passed}/${c.total} passed · ${run}`;
70
- const failing = `${c.failing.length ? ` · failing: ${c.failing.join(', ')}` : ''}${c.stale.length ? ` · changed since it passed: ${c.stale.join(', ')}` : ''}`;
71
- const turns = s.settings.knowledgeTurns === null ? '' : `, ${s.settings.knowledgeTurns} knowledge turn${s.settings.knowledgeTurns === 1 ? '' : 's'} here in 7 days`;
80
+ const failed = c.failing.length ? ` · failing: ${c.failing.join(', ')}` : '';
81
+ const stale = c.stale.length ? ` · changed since it passed: ${c.stale.join(', ')}` : '';
82
+ const failing = `${failed}${stale}`;
83
+ const count = s.settings.knowledgeTurns;
84
+ const turns = count === null ? '' : `, ${count} knowledge turn${count === 1 ? '' : 's'} here in ${WEEK_DAYS} days`;
72
85
  const knowledge = s.settings.knowledge ? `knowledge on (journal ${s.settings.journal ? 'on' : 'off'})${turns}` : 'knowledge off';
73
86
  const waiting = s.questions.length;
74
87
  return [
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/core/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAaxC,wHAAwH;AACxH,SAAS,cAAc,CAAC,IAAY,EAAE,IAAY,EAAE,GAAS;IAC3D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;QACpE,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,cAAc,WAAW,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;QAC/E,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACrC,MAAM,EAAE,GAAG,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACvE,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC;QAC3G,CAAC,CAAC,CAAC,MAAM,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,IAAa,EAAE,MAAY,IAAI,IAAI,EAAE;IAChF,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5F,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO;QACL,MAAM,EAAE;YACN,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,MAAM;YAClE,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;YACrC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;YACxB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM;YAC/B,SAAS,EAAE,SAAS,CAAC,IAAI;YACzB,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,cAAc,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;YACvH,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI;SACvC;QACD,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;KACvF,CAAC;AACJ,CAAC;AAED,SAAS,GAAG,CAAC,EAAU,EAAE,GAAS;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACnF,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,OAAO,UAAU,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACvC,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,GAAG,KAAK,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IACpE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAiB,EAAE,MAAY,IAAI,IAAI,EAAE;IACpE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;IACxG,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,aAAa,GAAG,EAAE,CAAC;IACzI,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC/J,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,cAAc,kBAAkB,CAAC,CAAC,QAAQ,CAAC,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC;IACpK,MAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;IACjI,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;IACnC,OAAO;QACL,eAAe,MAAM,GAAG,OAAO,EAAE;QACjC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,MAAM,MAAM,SAAS,aAAa,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE;QACtF,eAAe,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,OAAO,sBAAsB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE;KAC5G,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/core/status.ts"],"names":[],"mappings":"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"}