@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.
- package/CHANGELOG.md +25 -0
- package/README.md +29 -2
- package/assets/manifest.json +1 -1
- package/assets/templates/wiki/synthesis/_template.md +24 -0
- package/dist/cli.js +16 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/audit.d.ts +24 -0
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +29 -7
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/doctor.d.ts +23 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +79 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +15 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/panel.d.ts +2 -0
- package/dist/commands/panel.d.ts.map +1 -0
- package/dist/commands/panel.js +297 -0
- package/dist/commands/panel.js.map +1 -0
- package/dist/commands/wiki.d.ts +2 -0
- package/dist/commands/wiki.d.ts.map +1 -1
- package/dist/commands/wiki.js +129 -22
- package/dist/commands/wiki.js.map +1 -1
- package/dist/lib/panel-data.d.ts +91 -0
- package/dist/lib/panel-data.d.ts.map +1 -0
- package/dist/lib/panel-data.js +243 -0
- package/dist/lib/panel-data.js.map +1 -0
- package/dist/lib/yaml.d.ts +9 -0
- package/dist/lib/yaml.d.ts.map +1 -1
- package/dist/lib/yaml.js.map +1 -1
- package/dist/tui/panel.d.ts +2 -0
- package/dist/tui/panel.d.ts.map +1 -0
- package/dist/tui/panel.js +398 -0
- package/dist/tui/panel.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
package/dist/commands/wiki.js
CHANGED
|
@@ -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
|
-
|
|
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 =>
|
|
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
|
-
|
|
155
|
-
|
|
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
|
-
|
|
227
|
+
changed = true;
|
|
161
228
|
}
|
|
162
229
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
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
|
|
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
|
|
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/
|
|
245
|
-
const pages = collectMarkdown(root).filter(p =>
|
|
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/
|
|
305
|
-
const
|
|
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
|