@cristiancorreau/forge 2.10.1 → 2.12.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 (39) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +29 -2
  3. package/assets/manifest.json +1 -1
  4. package/assets/templates/wiki/synthesis/_template.md +24 -0
  5. package/dist/cli.js +16 -0
  6. package/dist/cli.js.map +1 -1
  7. package/dist/commands/audit.d.ts +24 -0
  8. package/dist/commands/audit.d.ts.map +1 -1
  9. package/dist/commands/audit.js +29 -7
  10. package/dist/commands/audit.js.map +1 -1
  11. package/dist/commands/doctor.d.ts +23 -0
  12. package/dist/commands/doctor.d.ts.map +1 -1
  13. package/dist/commands/doctor.js +79 -0
  14. package/dist/commands/doctor.js.map +1 -1
  15. package/dist/commands/init.d.ts.map +1 -1
  16. package/dist/commands/init.js +15 -0
  17. package/dist/commands/init.js.map +1 -1
  18. package/dist/commands/panel.d.ts +2 -0
  19. package/dist/commands/panel.d.ts.map +1 -0
  20. package/dist/commands/panel.js +297 -0
  21. package/dist/commands/panel.js.map +1 -0
  22. package/dist/commands/wiki.d.ts +2 -0
  23. package/dist/commands/wiki.d.ts.map +1 -1
  24. package/dist/commands/wiki.js +129 -22
  25. package/dist/commands/wiki.js.map +1 -1
  26. package/dist/lib/panel-data.d.ts +91 -0
  27. package/dist/lib/panel-data.d.ts.map +1 -0
  28. package/dist/lib/panel-data.js +243 -0
  29. package/dist/lib/panel-data.js.map +1 -0
  30. package/dist/lib/yaml.d.ts +9 -0
  31. package/dist/lib/yaml.d.ts.map +1 -1
  32. package/dist/lib/yaml.js.map +1 -1
  33. package/dist/tui/panel.d.ts +2 -0
  34. package/dist/tui/panel.d.ts.map +1 -0
  35. package/dist/tui/panel.js +398 -0
  36. package/dist/tui/panel.js.map +1 -0
  37. package/dist/version.d.ts +1 -1
  38. package/dist/version.js +1 -1
  39. package/package.json +2 -2
@@ -1,6 +1,7 @@
1
1
  import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, copyFileSync, statSync, } from 'fs';
2
2
  import { join, basename, relative } from 'path';
3
3
  import { findProjectYaml, projectRoot } from '../lib/yaml.js';
4
+ import { resolveForgeRoot } from '../lib/paths.js';
4
5
  import { bold, dim, green, red, yellow, cyan, gray, icons } from '../ui/colors.js';
5
6
  import { box } from '../ui/box.js';
6
7
  const HELP = `Usage: forge wiki <subcommand> [options]
@@ -8,20 +9,29 @@ const HELP = `Usage: forge wiki <subcommand> [options]
8
9
  Manage the project knowledge base in <projectRoot>/wiki/.
9
10
 
10
11
  Subcommands:
12
+ init [--force] Scaffold the full templated wiki structure (idempotent)
11
13
  status Show wiki structure: page counts, control files, index health
12
14
  ingest <file> Copy a source file into wiki/raw/ for later AI compilation
13
15
  query <q> Search wiki pages (simple text match over wiki/*.md)
14
16
  lint Check wiki integrity: broken links, orphans, index coverage
15
17
 
16
18
  Options:
19
+ --force (init) Overwrite existing control files (index.md, log.md)
17
20
  -h, --help Show this help
18
21
 
19
22
  The wiki lives at <projectRoot>/wiki/ with index.md, log.md, raw/ and subdirs
20
23
  (concepts/, entities/, sources/, synthesis/). Knowledge compilation from raw
21
24
  sources is performed by the AI agent via the /wiki-ingest skill.
22
25
  `;
23
- const SUBDIRS = ['raw', 'concepts', 'entities', 'sources', 'synthesis'];
26
+ /** Subdirectories that get a curated _template.md seed (raw/ stays empty). */
27
+ const TEMPLATED_SUBDIRS = ['concepts', 'entities', 'sources', 'synthesis'];
28
+ const SUBDIRS = ['raw', ...TEMPLATED_SUBDIRS];
24
29
  const CONTROL_FILES = ['index.md', 'log.md'];
30
+ /** Minimal fallback seeds, used only when a bundled template is unavailable. */
31
+ const FALLBACK_CONTROL = {
32
+ 'index.md': '# Wiki Index\n\n<!-- generado por forge wiki -->\n',
33
+ 'log.md': '# Wiki Log\n\n<!-- ingesta registrada aquí -->\n',
34
+ };
25
35
  /** Resolve the project root, falling back to cwd when no project.yaml exists. */
26
36
  function resolveProjectRoot() {
27
37
  const yamlPath = findProjectYaml(process.cwd());
@@ -30,6 +40,23 @@ function resolveProjectRoot() {
30
40
  function wikiRoot() {
31
41
  return join(resolveProjectRoot(), 'wiki');
32
42
  }
43
+ /**
44
+ * True for a real wiki page: any .md under the wiki except raw/ sources,
45
+ * the control files, and the `_template.md` scaffolding seeds (placeholders
46
+ * that `forge wiki init` lays down — they are not knowledge pages, so they
47
+ * must not count toward index coverage or trip the wikilink linter).
48
+ */
49
+ function isWikiPage(root, path) {
50
+ const sep = process.platform === 'win32' ? '\\' : '/';
51
+ if (path.startsWith(join(root, 'raw') + sep))
52
+ return false;
53
+ const name = basename(path);
54
+ if (name === '_template.md')
55
+ return false;
56
+ if (CONTROL_FILES.includes(name))
57
+ return false;
58
+ return true;
59
+ }
33
60
  /** Recursively collect every .md file under a directory (absolute paths). */
34
61
  function collectMarkdown(dir) {
35
62
  if (!existsSync(dir))
@@ -130,7 +157,7 @@ function wikiStatus() {
130
157
  const indexPath = join(root, 'index.md');
131
158
  if (existsSync(indexPath)) {
132
159
  const indexContent = readFileSync(indexPath, 'utf-8');
133
- const pages = collectMarkdown(root).filter(p => !p.startsWith(join(root, 'raw')) && !CONTROL_FILES.includes(basename(p)));
160
+ const pages = collectMarkdown(root).filter(p => isWikiPage(root, p));
134
161
  const linked = pages.filter(p => {
135
162
  const rel = relative(root, p).replace(/\.md$/, '');
136
163
  const name = basename(p, '.md');
@@ -151,27 +178,107 @@ function wikiStatus() {
151
178
  // ---------------------------------------------------------------------------
152
179
  // ingest
153
180
  // ---------------------------------------------------------------------------
154
- function ensureWikiStructure(root) {
155
- let created = false;
181
+ /**
182
+ * Locate the bundled wiki templates directory (<forgeRoot>/templates/wiki/).
183
+ * Returns null if the forge root can't be resolved (e.g. running outside an
184
+ * install), so callers fall back to the minimal inline seeds.
185
+ */
186
+ function wikiTemplatesDir() {
187
+ try {
188
+ return join(resolveForgeRoot(), 'templates', 'wiki');
189
+ }
190
+ catch {
191
+ return null;
192
+ }
193
+ }
194
+ /** Copy a bundled template file when present; otherwise write `fallback`. */
195
+ function seedFile(dest, templatePath, fallback, force = false) {
196
+ if (existsSync(dest) && !force)
197
+ return false;
198
+ if (templatePath && existsSync(templatePath)) {
199
+ try {
200
+ copyFileSync(templatePath, dest);
201
+ return true;
202
+ }
203
+ catch {
204
+ // fall through to inline fallback
205
+ }
206
+ }
207
+ writeFileSync(dest, fallback, 'utf-8');
208
+ return true;
209
+ }
210
+ /**
211
+ * Scaffolds the full templated wiki structure under `root`:
212
+ * - the 5 subdirs (raw/ stays empty; concepts/entities/sources/synthesis each
213
+ * get their _template.md),
214
+ * - index.md and log.md copied from the bundled templates/wiki/.
215
+ * Idempotent: existing files are never overwritten unless `force` is set (force
216
+ * only applies to the control files index.md/log.md). Returns true if anything
217
+ * was created or overwritten. Falls back to minimal seeds when a template is
218
+ * missing so the wiki is always usable.
219
+ */
220
+ function scaffoldWiki(root, force = false) {
221
+ const tplDir = wikiTemplatesDir();
222
+ let changed = false;
156
223
  for (const sub of SUBDIRS) {
157
224
  const dirPath = join(root, sub);
158
225
  if (!existsSync(dirPath)) {
159
226
  mkdirSync(dirPath, { recursive: true });
160
- created = true;
227
+ changed = true;
161
228
  }
162
229
  }
163
- const seeds = [
164
- ['index.md', '# Wiki Index\n\n<!-- generado por forge wiki ingest -->\n'],
165
- ['log.md', '# Wiki Log\n\n<!-- ingesta registrada aquí -->\n'],
166
- ];
167
- for (const [fname, content] of seeds) {
168
- const fpath = join(root, fname);
169
- if (!existsSync(fpath)) {
170
- writeFileSync(fpath, content, 'utf-8');
171
- created = true;
230
+ // Control files: index.md, log.md (force may overwrite these).
231
+ for (const fname of CONTROL_FILES) {
232
+ const tpl = tplDir ? join(tplDir, fname) : null;
233
+ if (seedFile(join(root, fname), tpl, FALLBACK_CONTROL[fname], force))
234
+ changed = true;
235
+ }
236
+ // Subdir _template.md seeds (never force-overwritten — they are starting points).
237
+ for (const sub of TEMPLATED_SUBDIRS) {
238
+ const tpl = tplDir ? join(tplDir, sub, '_template.md') : null;
239
+ const dest = join(root, sub, '_template.md');
240
+ if (existsSync(dest))
241
+ continue;
242
+ if (tpl && existsSync(tpl)) {
243
+ try {
244
+ copyFileSync(tpl, dest);
245
+ changed = true;
246
+ }
247
+ catch {
248
+ // a missing/unreadable subdir template is non-fatal
249
+ }
172
250
  }
173
251
  }
174
- return created;
252
+ return changed;
253
+ }
254
+ /** Back-compat shim used by ingest: ensure the templated structure exists. */
255
+ function ensureWikiStructure(root) {
256
+ return scaffoldWiki(root, false);
257
+ }
258
+ /** Public scaffolder for other commands (e.g. forge init) — see scaffoldWiki. */
259
+ export function scaffoldWikiStructure(projectRootDir, force = false) {
260
+ return scaffoldWiki(join(projectRootDir, 'wiki'), force);
261
+ }
262
+ // ---------------------------------------------------------------------------
263
+ // init
264
+ // ---------------------------------------------------------------------------
265
+ function wikiInit(force) {
266
+ console.log(cyan(bold('forge wiki init')) + '\n');
267
+ const root = wikiRoot();
268
+ const existed = existsSync(root);
269
+ scaffoldWiki(root, force);
270
+ const lines = [
271
+ `index.md, log.md ${force ? '(reescritos)' : '(desde templates)'}`,
272
+ `subdirs: ${SUBDIRS.join(', ')}`,
273
+ `seeds: ${TEMPLATED_SUBDIRS.map(s => `${s}/_template.md`).join(', ')}`,
274
+ ];
275
+ const title = existed && !force ? green('Wiki actualizado') : green('Wiki inicializado');
276
+ console.log(box(title, lines));
277
+ console.log(`\n ${bold('Próximos pasos:')}`);
278
+ console.log(` Agregar una fuente: ${cyan('forge wiki ingest <archivo>')}`);
279
+ console.log(` En Claude Code: ${cyan('/wiki-ingest')} ${dim('compila el conocimiento')}`);
280
+ console.log(` ${cyan('/wiki-query')} ${dim('responde con citas · ')}${cyan('/wiki-lint')} ${dim('verifica integridad')}\n`);
281
+ return 0;
175
282
  }
176
283
  function wikiIngest(file) {
177
284
  console.log(cyan(bold('forge wiki ingest')) + '\n');
@@ -191,7 +298,7 @@ function wikiIngest(file) {
191
298
  }
192
299
  const root = wikiRoot();
193
300
  if (ensureWikiStructure(root)) {
194
- console.log(` ${green('Estructura creada.')} wiki/ inicializado con index.md y log.md.\n`);
301
+ console.log(` ${green('Estructura creada.')} wiki/ inicializado desde los templates.\n`);
195
302
  }
196
303
  const stamp = todayStamp();
197
304
  const slug = slugify(basename(source));
@@ -241,8 +348,8 @@ function wikiQuery(queryArg) {
241
348
  return 0;
242
349
  }
243
350
  const query = queryArg.toLowerCase();
244
- // search wiki pages (exclude raw/ those are unprocessed sources)
245
- const pages = collectMarkdown(root).filter(p => !p.startsWith(join(root, 'raw') + (process.platform === 'win32' ? '\\' : '/')));
351
+ // search wiki pages (exclude raw/ sources, control files and template seeds)
352
+ const pages = collectMarkdown(root).filter(p => isWikiPage(root, p));
246
353
  const matches = [];
247
354
  for (const page of pages) {
248
355
  let content;
@@ -301,10 +408,8 @@ function wikiLint() {
301
408
  }
302
409
  const indexPath = join(root, 'index.md');
303
410
  const indexContent = existsSync(indexPath) ? readFileSync(indexPath, 'utf-8') : '';
304
- // wiki pages = all .md except raw/ and control files
305
- const sep = process.platform === 'win32' ? '\\' : '/';
306
- const pages = collectMarkdown(root).filter(p => !p.startsWith(join(root, 'raw') + sep) &&
307
- !CONTROL_FILES.includes(basename(p)));
411
+ // wiki pages = all .md except raw/ sources, control files and template seeds
412
+ const pages = collectMarkdown(root).filter(p => isWikiPage(root, p));
308
413
  // 2. broken wikilinks [[ruta/nombre]]
309
414
  const linkRe = /\[\[([^\]]+)\]\]/g;
310
415
  let brokenLinks = 0;
@@ -381,6 +486,8 @@ export async function wiki(args) {
381
486
  const sub = args[0];
382
487
  const rest = args.slice(1);
383
488
  switch (sub) {
489
+ case 'init':
490
+ return wikiInit(rest.includes('--force'));
384
491
  case 'status':
385
492
  return wikiStatus();
386
493
  case 'ingest':
@@ -1 +1 @@
1
- {"version":3,"file":"wiki.js","sourceRoot":"","sources":["../../src/commands/wiki.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wiki.js","sourceRoot":"","sources":["../../src/commands/wiki.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ import { type SkillInfo } from './catalog.js';
2
+ export interface SkillRow extends SkillInfo {
3
+ active: boolean;
4
+ }
5
+ /** Read the active skill ids from a project.yaml (skills:), normalising slashes. */
6
+ export declare function loadActiveSkillIds(root: string): Set<string>;
7
+ /**
8
+ * Filter the skill catalog by a free-text query. Matches (case-insensitive,
9
+ * substring) against id, command, category, purpose and trigger. An empty query
10
+ * returns the whole catalog. Each row is marked `active` if it is enabled in the
11
+ * given project.yaml (resolved from `root`).
12
+ */
13
+ export declare function searchSkills(query: string, root?: string): SkillRow[];
14
+ export interface HookEntry {
15
+ /** Hook file name, e.g. pre-edit-check.js. */
16
+ hook: string;
17
+ /** Claude Code lifecycle event (PreToolUse | Stop | SessionStart | …). */
18
+ event: string;
19
+ /** Tool matcher (Edit|Write, Bash, …) — empty when the event has no matcher. */
20
+ matcher: string;
21
+ /** Human description of what the hook does (from the registry). */
22
+ description: string;
23
+ /** Which group the hook belongs to: universal | standard | unknown. */
24
+ mode: 'universal' | 'standard' | 'unknown';
25
+ /** True when the hook file is actually present in .claude/hooks/. */
26
+ installed: boolean;
27
+ }
28
+ interface RegistryHook {
29
+ hook: string;
30
+ event?: string;
31
+ matcher?: string;
32
+ description?: string;
33
+ }
34
+ interface HooksRegistry {
35
+ universal?: RegistryHook[];
36
+ standard?: RegistryHook[];
37
+ }
38
+ /** Parse core/hooks/hooks-registry.yaml from the forge root. Returns {} on error. */
39
+ export declare function loadHooksRegistry(forgeRoot: string): HooksRegistry;
40
+ /**
41
+ * Build the unified hook list: every hook declared in the registry plus any
42
+ * extra hook found on disk in `<projectRoot>/.claude/hooks/` that the registry
43
+ * doesn't know about. Each entry carries its event/matcher/mode and whether it
44
+ * is installed in the project.
45
+ */
46
+ export declare function listInstalledHooks(projectRoot: string, forgeRoot: string | null): HookEntry[];
47
+ export interface TemplateEntry {
48
+ /** Display name. */
49
+ name: string;
50
+ /** Category bucket: wiki | spec | mode | claude-md. */
51
+ category: 'wiki' | 'spec' | 'mode' | 'claude-md';
52
+ /** Path relative to the forge root. */
53
+ relPath: string;
54
+ /** Short human description. */
55
+ description: string;
56
+ }
57
+ /**
58
+ * List the templates bundled with forge: wiki seeds, the spec template, the
59
+ * project.yaml mode templates and the claude-md templates. Paths are relative to
60
+ * `forgeRoot`. Returns [] if `forgeRoot` is null.
61
+ */
62
+ export declare function listTemplates(forgeRoot: string | null): TemplateEntry[];
63
+ export interface ConfigSummary {
64
+ found: boolean;
65
+ yamlPath: string | null;
66
+ name: string;
67
+ mode: string;
68
+ language: string;
69
+ stack: Array<{
70
+ key: string;
71
+ value: string;
72
+ }>;
73
+ agentsActive: string[];
74
+ agentsSpecialized: string[];
75
+ agentsCompliance: string[];
76
+ profiles: string[];
77
+ skills: string[];
78
+ runtimes: string[];
79
+ compliance: string[];
80
+ deploy: {
81
+ provider?: string;
82
+ url?: string;
83
+ } | null;
84
+ }
85
+ /**
86
+ * Build a structured, view-friendly summary of a project's project.yaml. When no
87
+ * config is found, `found` is false and the rest of the fields are empty.
88
+ */
89
+ export declare function getConfigSummary(root?: string): ConfigSummary;
90
+ export {};
91
+ //# sourceMappingURL=panel-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-data.d.ts","sourceRoot":"","sources":["../../src/lib/panel-data.ts"],"names":[],"mappings":"AAUA,OAAO,EAAU,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAKtD,MAAM,WAAW,QAAS,SAAQ,SAAS;IACzC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAU5D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAsB,GAAG,QAAQ,EAAE,CAYpF;AAID,MAAM,WAAW,SAAS;IACxB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,qEAAqE;IACrE,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AACD,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CASlE;AAOD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,CAuC7F;AAID,MAAM,WAAW,aAAa;IAC5B,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC;IACjD,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;CACrB;AAmCD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,EAAE,CAiDvE;AAID,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACpD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,MAAsB,GAAG,aAAa,CAkD5E"}
@@ -0,0 +1,243 @@
1
+ /**
2
+ * Non-interactive data layer for `forge panel`.
3
+ *
4
+ * Every function here is pure-ish (reads the filesystem, never prints, never
5
+ * touches a TTY) so the OpenTUI panel, the @clack fallback and the test suite
6
+ * can all share the same logic. See SPEC-033.
7
+ */
8
+ import { existsSync, readFileSync, readdirSync, statSync } from 'fs';
9
+ import { join } from 'path';
10
+ import yaml from 'js-yaml';
11
+ import { SKILLS } from './catalog.js';
12
+ import { findProjectYaml, loadProjectYaml } from './yaml.js';
13
+ /** Read the active skill ids from a project.yaml (skills:), normalising slashes. */
14
+ export function loadActiveSkillIds(root) {
15
+ const yamlPath = findProjectYaml(root);
16
+ if (!yamlPath)
17
+ return new Set();
18
+ try {
19
+ const config = loadProjectYaml(yamlPath);
20
+ const raw = Array.isArray(config.skills) ? config.skills : [];
21
+ return new Set(raw.map(s => String(s).replace(/^\//, '')));
22
+ }
23
+ catch {
24
+ return new Set();
25
+ }
26
+ }
27
+ /**
28
+ * Filter the skill catalog by a free-text query. Matches (case-insensitive,
29
+ * substring) against id, command, category, purpose and trigger. An empty query
30
+ * returns the whole catalog. Each row is marked `active` if it is enabled in the
31
+ * given project.yaml (resolved from `root`).
32
+ */
33
+ export function searchSkills(query, root = process.cwd()) {
34
+ const activeIds = loadActiveSkillIds(root);
35
+ const q = query.trim().toLowerCase();
36
+ const rows = SKILLS.map(s => ({ ...s, active: activeIds.has(s.id) }));
37
+ if (!q)
38
+ return rows;
39
+ return rows.filter(s => s.id.toLowerCase().includes(q) ||
40
+ s.command.toLowerCase().includes(q) ||
41
+ s.category.toLowerCase().includes(q) ||
42
+ s.purpose.toLowerCase().includes(q) ||
43
+ s.trigger.toLowerCase().includes(q));
44
+ }
45
+ /** Parse core/hooks/hooks-registry.yaml from the forge root. Returns {} on error. */
46
+ export function loadHooksRegistry(forgeRoot) {
47
+ const path = join(forgeRoot, 'core', 'hooks', 'hooks-registry.yaml');
48
+ if (!existsSync(path))
49
+ return {};
50
+ try {
51
+ const data = yaml.load(readFileSync(path, 'utf-8'));
52
+ return data && typeof data === 'object' ? data : {};
53
+ }
54
+ catch {
55
+ return {};
56
+ }
57
+ }
58
+ /** Collapse a multi-line YAML folded description into a single line. */
59
+ function oneLine(s) {
60
+ return (s ?? '').replace(/\s+/g, ' ').trim();
61
+ }
62
+ /**
63
+ * Build the unified hook list: every hook declared in the registry plus any
64
+ * extra hook found on disk in `<projectRoot>/.claude/hooks/` that the registry
65
+ * doesn't know about. Each entry carries its event/matcher/mode and whether it
66
+ * is installed in the project.
67
+ */
68
+ export function listInstalledHooks(projectRoot, forgeRoot) {
69
+ const registry = forgeRoot ? loadHooksRegistry(forgeRoot) : {};
70
+ const hooksDir = join(projectRoot, '.claude', 'hooks');
71
+ const onDisk = new Set(existsSync(hooksDir)
72
+ ? readdirSync(hooksDir).filter(f => statSync(join(hooksDir, f)).isFile())
73
+ : []);
74
+ const entries = [];
75
+ const seen = new Set();
76
+ const pushGroup = (group, mode) => {
77
+ for (const h of group ?? []) {
78
+ if (!h?.hook)
79
+ continue;
80
+ seen.add(h.hook);
81
+ entries.push({
82
+ hook: h.hook,
83
+ event: h.event ?? '—',
84
+ matcher: h.matcher ?? '',
85
+ description: oneLine(h.description),
86
+ mode,
87
+ installed: onDisk.has(h.hook),
88
+ });
89
+ }
90
+ };
91
+ pushGroup(registry.universal, 'universal');
92
+ pushGroup(registry.standard, 'standard');
93
+ // Hooks present on disk but not declared in the registry.
94
+ for (const f of [...onDisk].sort()) {
95
+ if (seen.has(f))
96
+ continue;
97
+ entries.push({
98
+ hook: f, event: '—', matcher: '', description: '(no documentado en el registry)',
99
+ mode: 'unknown', installed: true,
100
+ });
101
+ }
102
+ return entries;
103
+ }
104
+ const MODE_DESCRIPTIONS = {
105
+ 'startup.yaml.tpl': 'Modo startup — overhead mínimo, equipo pequeño',
106
+ 'enterprise.yaml.tpl': 'Modo enterprise — compliance, auditoría, multi-equipo',
107
+ 'multi-runtime.yaml.tpl': 'Multi-runtime — un project.yaml para los 4 runtimes',
108
+ 'new-stack.yaml.tpl': 'Stack nuevo — plantilla base para empezar de cero',
109
+ };
110
+ const WIKI_DESCRIPTIONS = {
111
+ 'index.md': 'Índice raíz del wiki del proyecto',
112
+ 'log.md': 'Bitácora de ingestas del wiki',
113
+ 'concepts/_template.md': 'Plantilla de nota de concepto',
114
+ 'entities/_template.md': 'Plantilla de nota de entidad',
115
+ 'sources/_template.md': 'Plantilla de nota de fuente',
116
+ 'synthesis/_template.md': 'Plantilla de nota de síntesis',
117
+ };
118
+ const CLAUDE_MD_DESCRIPTIONS = {
119
+ 'project.md': 'CLAUDE.md base de un proyecto forge',
120
+ 'global.md': 'Instrucciones globales (~/.claude/CLAUDE.md)',
121
+ 'architecture.rules': 'Reglas de arquitectura del proyecto',
122
+ };
123
+ /** Recursively collect files under a dir, returning paths relative to `base`. */
124
+ function walkRel(base, dir, acc = []) {
125
+ if (!existsSync(dir))
126
+ return acc;
127
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
128
+ const full = join(dir, entry.name);
129
+ if (entry.isDirectory())
130
+ walkRel(base, full, acc);
131
+ else
132
+ acc.push(full.slice(base.length + 1).split('\\').join('/'));
133
+ }
134
+ return acc;
135
+ }
136
+ /**
137
+ * List the templates bundled with forge: wiki seeds, the spec template, the
138
+ * project.yaml mode templates and the claude-md templates. Paths are relative to
139
+ * `forgeRoot`. Returns [] if `forgeRoot` is null.
140
+ */
141
+ export function listTemplates(forgeRoot) {
142
+ if (!forgeRoot)
143
+ return [];
144
+ const out = [];
145
+ // Spec template.
146
+ const specPath = join(forgeRoot, 'core', 'templates', 'spec-template.md');
147
+ if (existsSync(specPath)) {
148
+ out.push({
149
+ name: 'spec-template.md', category: 'spec',
150
+ relPath: 'core/templates/spec-template.md',
151
+ description: 'Plantilla de spec SDD (docs/specs/_template.md)',
152
+ });
153
+ }
154
+ // Mode templates (templates/modes/*).
155
+ const modesDir = join(forgeRoot, 'templates', 'modes');
156
+ if (existsSync(modesDir)) {
157
+ for (const f of readdirSync(modesDir).sort()) {
158
+ out.push({
159
+ name: f, category: 'mode',
160
+ relPath: `templates/modes/${f}`,
161
+ description: MODE_DESCRIPTIONS[f] ?? 'Plantilla de project.yaml',
162
+ });
163
+ }
164
+ }
165
+ // Wiki templates (templates/wiki/**).
166
+ const wikiDir = join(forgeRoot, 'templates', 'wiki');
167
+ for (const rel of walkRel(wikiDir, wikiDir).sort()) {
168
+ out.push({
169
+ name: rel, category: 'wiki',
170
+ relPath: `templates/wiki/${rel}`,
171
+ description: WIKI_DESCRIPTIONS[rel] ?? 'Plantilla de página de wiki',
172
+ });
173
+ }
174
+ // claude-md templates (core/templates/claude-md/*).
175
+ const cmDir = join(forgeRoot, 'core', 'templates', 'claude-md');
176
+ if (existsSync(cmDir)) {
177
+ for (const f of readdirSync(cmDir).sort()) {
178
+ out.push({
179
+ name: f, category: 'claude-md',
180
+ relPath: `core/templates/claude-md/${f}`,
181
+ description: CLAUDE_MD_DESCRIPTIONS[f] ?? 'Plantilla CLAUDE.md',
182
+ });
183
+ }
184
+ }
185
+ return out;
186
+ }
187
+ /**
188
+ * Build a structured, view-friendly summary of a project's project.yaml. When no
189
+ * config is found, `found` is false and the rest of the fields are empty.
190
+ */
191
+ export function getConfigSummary(root = process.cwd()) {
192
+ const empty = {
193
+ found: false, yamlPath: null, name: '', mode: '', language: '',
194
+ stack: [], agentsActive: [], agentsSpecialized: [], agentsCompliance: [],
195
+ profiles: [], skills: [], runtimes: [], compliance: [], deploy: null,
196
+ };
197
+ const yamlPath = findProjectYaml(root);
198
+ if (!yamlPath)
199
+ return empty;
200
+ let config;
201
+ try {
202
+ config = loadProjectYaml(yamlPath);
203
+ }
204
+ catch {
205
+ return { ...empty, yamlPath };
206
+ }
207
+ const stack = [];
208
+ const s = config.stack ?? {};
209
+ const pushStack = (key, value) => {
210
+ if (value === undefined || value === null)
211
+ return;
212
+ if (Array.isArray(value)) {
213
+ if (value.length)
214
+ stack.push({ key, value: value.join(', ') });
215
+ }
216
+ else {
217
+ stack.push({ key, value: String(value) });
218
+ }
219
+ };
220
+ pushStack('backend', s.backend);
221
+ pushStack('frontend', s.frontend);
222
+ pushStack('database', s.database);
223
+ pushStack('orm', s.orm);
224
+ pushStack('package_manager', s.package_manager);
225
+ pushStack('testing', s.testing);
226
+ return {
227
+ found: true,
228
+ yamlPath,
229
+ name: config.project?.name ?? '(sin nombre)',
230
+ mode: config.project?.mode ?? '(sin mode)',
231
+ language: config.project?.language ?? '(sin lenguaje)',
232
+ stack,
233
+ agentsActive: config.agents?.active ?? [],
234
+ agentsSpecialized: config.agents?.specialized ?? [],
235
+ agentsCompliance: config.agents?.compliance ?? [],
236
+ profiles: config.agents?.profiles ?? [],
237
+ skills: Array.isArray(config.skills) ? config.skills.map(x => String(x)) : [],
238
+ runtimes: config.runtimes?.active ?? [],
239
+ compliance: config.compliance?.frameworks ?? [],
240
+ deploy: config.deploy ? { provider: config.deploy.provider, url: config.deploy.production_url } : null,
241
+ };
242
+ }
243
+ //# sourceMappingURL=panel-data.js.map