@nac3/forge-cli 1.4.0 → 1.7.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 (103) hide show
  1. package/dist/bin/heap_bootstrap.d.ts +34 -0
  2. package/dist/bin/heap_bootstrap.d.ts.map +1 -0
  3. package/dist/bin/heap_bootstrap.js +134 -0
  4. package/dist/bin/heap_bootstrap.js.map +1 -0
  5. package/dist/bin/yf.js +30 -21
  6. package/dist/bin/yf.js.map +1 -1
  7. package/dist/chat/claude.d.ts +12 -0
  8. package/dist/chat/claude.d.ts.map +1 -1
  9. package/dist/chat/claude.js +39 -1
  10. package/dist/chat/claude.js.map +1 -1
  11. package/dist/chat/claude_cli.d.ts +5 -0
  12. package/dist/chat/claude_cli.d.ts.map +1 -1
  13. package/dist/chat/claude_cli.js +106 -5
  14. package/dist/chat/claude_cli.js.map +1 -1
  15. package/dist/chat/graph_auto_ingest.d.ts +3 -0
  16. package/dist/chat/graph_auto_ingest.d.ts.map +1 -1
  17. package/dist/chat/graph_auto_ingest.js +18 -0
  18. package/dist/chat/graph_auto_ingest.js.map +1 -1
  19. package/dist/chat/graph_component_watcher.d.ts +41 -0
  20. package/dist/chat/graph_component_watcher.d.ts.map +1 -1
  21. package/dist/chat/graph_component_watcher.js +144 -2
  22. package/dist/chat/graph_component_watcher.js.map +1 -1
  23. package/dist/chat/graph_snapshot.d.ts +8 -0
  24. package/dist/chat/graph_snapshot.d.ts.map +1 -1
  25. package/dist/chat/graph_snapshot.js +142 -44
  26. package/dist/chat/graph_snapshot.js.map +1 -1
  27. package/dist/chat/panel.d.ts.map +1 -1
  28. package/dist/chat/panel.js +12842 -12719
  29. package/dist/chat/panel.js.map +1 -1
  30. package/dist/chat/persistence.d.ts.map +1 -1
  31. package/dist/chat/persistence.js +18 -8
  32. package/dist/chat/persistence.js.map +1 -1
  33. package/dist/chat/server.d.ts.map +1 -1
  34. package/dist/chat/server.js +81 -10
  35. package/dist/chat/server.js.map +1 -1
  36. package/dist/chat/session_store.d.ts +13 -0
  37. package/dist/chat/session_store.d.ts.map +1 -1
  38. package/dist/chat/session_store.js +36 -1
  39. package/dist/chat/session_store.js.map +1 -1
  40. package/dist/chat/turn_steering.d.ts +87 -0
  41. package/dist/chat/turn_steering.d.ts.map +1 -0
  42. package/dist/chat/turn_steering.js +120 -0
  43. package/dist/chat/turn_steering.js.map +1 -0
  44. package/dist/commands/chat.d.ts.map +1 -1
  45. package/dist/commands/chat.js +59 -0
  46. package/dist/commands/chat.js.map +1 -1
  47. package/dist/core/brain_behaviour.d.ts.map +1 -1
  48. package/dist/core/brain_behaviour.js +8 -1
  49. package/dist/core/brain_behaviour.js.map +1 -1
  50. package/dist/core/brain_config.d.ts +23 -0
  51. package/dist/core/brain_config.d.ts.map +1 -1
  52. package/dist/core/brain_config.js +33 -0
  53. package/dist/core/brain_config.js.map +1 -1
  54. package/dist/core/federation_config.js +1 -1
  55. package/dist/core/federation_config.js.map +1 -1
  56. package/dist/core/heap_watch.d.ts +33 -0
  57. package/dist/core/heap_watch.d.ts.map +1 -0
  58. package/dist/core/heap_watch.js +82 -0
  59. package/dist/core/heap_watch.js.map +1 -0
  60. package/dist/core/keys_envelope.d.ts +1 -1
  61. package/dist/core/keys_envelope.d.ts.map +1 -1
  62. package/dist/core/keys_envelope.js.map +1 -1
  63. package/dist/core/provider_models.d.ts +5 -0
  64. package/dist/core/provider_models.d.ts.map +1 -1
  65. package/dist/core/provider_models.js +17 -4
  66. package/dist/core/provider_models.js.map +1 -1
  67. package/dist/lan/announce.d.ts +53 -0
  68. package/dist/lan/announce.d.ts.map +1 -0
  69. package/dist/lan/announce.js +111 -0
  70. package/dist/lan/announce.js.map +1 -0
  71. package/dist/llm/cohere_client.d.ts.map +1 -1
  72. package/dist/llm/cohere_client.js +13 -3
  73. package/dist/llm/cohere_client.js.map +1 -1
  74. package/dist/llm/context_compaction.d.ts +25 -0
  75. package/dist/llm/context_compaction.d.ts.map +1 -1
  76. package/dist/llm/context_compaction.js +81 -13
  77. package/dist/llm/context_compaction.js.map +1 -1
  78. package/dist/llm/deepseek_client.d.ts +10 -3
  79. package/dist/llm/deepseek_client.d.ts.map +1 -1
  80. package/dist/llm/deepseek_client.js +12 -2
  81. package/dist/llm/deepseek_client.js.map +1 -1
  82. package/dist/llm/gemini_client.d.ts.map +1 -1
  83. package/dist/llm/gemini_client.js +0 -0
  84. package/dist/llm/gemini_client.js.map +1 -1
  85. package/dist/llm/mistral_client.d.ts.map +1 -1
  86. package/dist/llm/mistral_client.js +13 -3
  87. package/dist/llm/mistral_client.js.map +1 -1
  88. package/dist/llm/ollama_client.d.ts.map +1 -1
  89. package/dist/llm/ollama_client.js +13 -3
  90. package/dist/llm/ollama_client.js.map +1 -1
  91. package/dist/llm/openai_client.d.ts.map +1 -1
  92. package/dist/llm/openai_client.js +13 -3
  93. package/dist/llm/openai_client.js.map +1 -1
  94. package/dist/llm/xai_client.d.ts.map +1 -1
  95. package/dist/llm/xai_client.js +13 -3
  96. package/dist/llm/xai_client.js.map +1 -1
  97. package/dist/qa/brain_matrix/brains.json +80 -80
  98. package/dist/semantic_graph/store.d.ts.map +1 -1
  99. package/dist/semantic_graph/store.js +119 -88
  100. package/dist/semantic_graph/store.js.map +1 -1
  101. package/dist/version.d.ts +1 -1
  102. package/dist/version.js +1 -1
  103. package/package.json +18 -20
@@ -34,9 +34,45 @@ import { promises as fs, watch } from 'node:fs';
34
34
  import path from 'node:path';
35
35
  import { upsertNodes } from '../semantic_graph/store.js';
36
36
  import { extractExportsAst } from '../semantic_graph/ast_extract.js';
37
- const WATCHED_DIRS = ['src/components', 'src/hooks', 'src/lib', 'src/core'];
37
+ /**
38
+ * Raices donde buscar codigo. Mismo criterio que `derive.ts` usa para
39
+ * descubrir modulos, asi las dos mitades del grafo miran el mismo arbol.
40
+ *
41
+ * 2026-09-22 -- esto ERA una lista fija con forma de app React
42
+ * (`src/components`, `src/hooks`, `src/lib`, `src/core`). Venia de cuando
43
+ * Forge solo generaba apps React, y para cualquier otra forma de proyecto
44
+ * no vigilaba casi nada. Medido sobre el propio yujin-forge: de sus 37
45
+ * directorios bajo src/, el unico que caia en la lista era `core` -- los
46
+ * 224 nodos de detalle del grafo eran TODOS de src/core, y src/chat (el
47
+ * corazon del producto) no tenia ninguno.
48
+ */
49
+ const SOURCE_ROOTS = ['src', 'packages', 'apps', 'app', 'components', 'lib', 'hooks'];
38
50
  const ALLOWED_EXT = new Set(['.ts', '.tsx', '.js', '.jsx']);
51
+ /** Nunca entrar aca: no es codigo del proyecto y cuesta carisimo. */
52
+ const SKIP_DIRS = new Set([
53
+ 'node_modules', 'dist', 'build', 'out', 'coverage', '.git', '.next',
54
+ '__pycache__', '.venv', 'venv', 'vendor', '.turbo', '.expo', 'android', 'ios',
55
+ ]);
39
56
  const DEBOUNCE_MS = 2000;
57
+ /** Directorios de codigo reales del proyecto, descubiertos. Devuelve rutas
58
+ * RELATIVAS a project_root. Nunca lanza: un proyecto sin ninguna de las
59
+ * raices simplemente no tiene nada que vigilar. */
60
+ export async function discoverSourceDirs(projectRoot) {
61
+ const out = [];
62
+ for (const root of SOURCE_ROOTS) {
63
+ const abs = path.join(projectRoot, root);
64
+ try {
65
+ const st = await fs.stat(abs);
66
+ if (!st.isDirectory())
67
+ continue;
68
+ }
69
+ catch {
70
+ continue;
71
+ }
72
+ out.push(root);
73
+ }
74
+ return out;
75
+ }
40
76
  /** PND-020 Phase 2a -- AST-based extraction. The earlier regex
41
77
  * implementation is gone; the public shape is preserved so callers
42
78
  * (including the watcher + the test suite) work unchanged. types
@@ -101,6 +137,88 @@ async function nodesForFile(projectRoot, _projectSlug, filePath) {
101
137
  };
102
138
  });
103
139
  }
140
+ /* ---------------- barrido de puesta al dia ---------------- */
141
+ /** Archivos de codigo bajo `dirs`, con su mtime. Salta los directorios
142
+ * pesados (node_modules, dist, ...). */
143
+ export async function listSourceFiles(projectRoot, dirs) {
144
+ const out = [];
145
+ const walk = async (absDir) => {
146
+ let entries;
147
+ try {
148
+ entries = await fs.readdir(absDir, { withFileTypes: true });
149
+ }
150
+ catch {
151
+ return;
152
+ }
153
+ for (const e of entries) {
154
+ if (e.name.startsWith('.') && e.name !== '.')
155
+ continue;
156
+ const abs = path.join(absDir, e.name);
157
+ if (e.isDirectory()) {
158
+ if (SKIP_DIRS.has(e.name))
159
+ continue;
160
+ await walk(abs);
161
+ continue;
162
+ }
163
+ if (!ALLOWED_EXT.has(path.extname(e.name)))
164
+ continue;
165
+ try {
166
+ const st = await fs.stat(abs);
167
+ out.push({ path: abs, mtimeMs: st.mtimeMs });
168
+ }
169
+ catch { /* archivo que desaparecio entre readdir y stat */ }
170
+ }
171
+ };
172
+ for (const d of dirs)
173
+ await walk(path.join(projectRoot, d));
174
+ return out;
175
+ }
176
+ /**
177
+ * Barrido INCREMENTAL al arranque.
178
+ *
179
+ * El watcher solo ve eventos mientras el panel corre. Todo lo que cambia
180
+ * con el panel apagado -- otro editor, un `git pull`, otra sesion, un
181
+ * agente -- no entraba NUNCA, porque la regeneracion de boot solo deriva
182
+ * modulos por directorio y aristas, no nodos de archivo. Medido sobre
183
+ * yujin-forge: el nodo mas nuevo del grafo tenia una semana y modulos de
184
+ * julio no figuraban.
185
+ *
186
+ * Solo procesa archivos con mtime posterior a la ultima pasada, asi el
187
+ * primer barrido es completo y los siguientes cuestan casi nada.
188
+ */
189
+ export async function sweepChangedFiles(opts) {
190
+ const log = opts.log ?? (() => undefined);
191
+ const dirs = await discoverSourceDirs(opts.project_root);
192
+ const all = await listSourceFiles(opts.project_root, dirs);
193
+ let newest = opts.since_ms;
194
+ for (const f of all)
195
+ if (f.mtimeMs > newest)
196
+ newest = f.mtimeMs;
197
+ const changed = all
198
+ .filter((f) => f.mtimeMs > opts.since_ms)
199
+ .sort((a, b) => b.mtimeMs - a.mtimeMs)
200
+ .slice(0, opts.max_files ?? 4000);
201
+ if (changed.length === 0)
202
+ return { files: 0, nodes: 0, newest_mtime_ms: newest };
203
+ const nodes = [];
204
+ for (const f of changed) {
205
+ try {
206
+ for (const n of await nodesForFile(opts.project_root, opts.project_slug, f.path))
207
+ nodes.push(n);
208
+ }
209
+ catch { /* un archivo que no parsea no puede frenar el barrido */ }
210
+ }
211
+ if (nodes.length > 0) {
212
+ try {
213
+ await upsertNodes(opts.project_slug, nodes);
214
+ }
215
+ catch (err) {
216
+ log('[component-watcher] sweep upsert error: ' + (err instanceof Error ? err.message : String(err)));
217
+ }
218
+ }
219
+ log('[component-watcher] sweep: ' + changed.length + ' archivo(s) cambiado(s) -> ' + nodes.length + ' nodo(s)');
220
+ return { files: changed.length, nodes: nodes.length, newest_mtime_ms: newest };
221
+ }
104
222
  /** Start watching the project's source dirs. Returns a handle
105
223
  * with .stop() to close all watchers on server shutdown.
106
224
  * NEVER throws. */
@@ -164,7 +282,30 @@ export async function startComponentWatcher(opts) {
164
282
  clearTimeout(debounceTimer);
165
283
  debounceTimer = setTimeout(() => { void flush(); }, DEBOUNCE_MS);
166
284
  }
167
- for (const sub of WATCHED_DIRS) {
285
+ /* Puesta al dia ANTES de empezar a escuchar: lo que cambio con el panel
286
+ * apagado no genera ningun evento, y hasta ahora no entraba nunca.
287
+ * Fire-and-forget para no demorar el arranque -- el primer barrido de un
288
+ * repo grande recorre todo; los siguientes son incrementales. */
289
+ let swept;
290
+ try {
291
+ const { readSourceSweepMark, writeSourceSweepMark } = await import('./graph_auto_ingest.js');
292
+ const since = await readSourceSweepMark(opts.project_slug);
293
+ const r = await sweepChangedFiles({
294
+ project_root: opts.project_root,
295
+ project_slug: opts.project_slug,
296
+ since_ms: since,
297
+ log,
298
+ });
299
+ if (r.newest_mtime_ms > since)
300
+ await writeSourceSweepMark(opts.project_slug, r.newest_mtime_ms);
301
+ swept = { files: r.files, nodes: r.nodes, skipped: false };
302
+ }
303
+ catch (err) {
304
+ log('[component-watcher] sweep error: ' + (err instanceof Error ? err.message : String(err)));
305
+ swept = { files: 0, nodes: 0, skipped: true };
306
+ }
307
+ const dirs = await discoverSourceDirs(opts.project_root);
308
+ for (const sub of dirs) {
168
309
  const dir = path.join(opts.project_root, sub);
169
310
  try {
170
311
  const st = await fs.stat(dir);
@@ -206,6 +347,7 @@ export async function startComponentWatcher(opts) {
206
347
  }
207
348
  }
208
349
  return {
350
+ ...(swept ? { swept } : {}),
209
351
  stop: async () => {
210
352
  if (debounceTimer) {
211
353
  clearTimeout(debounceTimer);
@@ -1 +1 @@
1
- {"version":3,"file":"graph_component_watcher.js","sourceRoot":"","sources":["../../src/chat/graph_component_watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph_component_watcher.js","sourceRoot":"","sources":["../../src/chat/graph_component_watcher.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,10 @@ export interface GraphSnapshotNode {
2
2
  id: string;
3
3
  kind: string;
4
4
  label?: string;
5
+ /** Peso del nodo en el grafo (0..1). Decide QUIEN entra cuando el
6
+ * presupuesto no alcanza: el snapshot se llena con lo mas pesado del
7
+ * proyecto entero, no con los primeros de cada kind. */
8
+ weight?: number;
5
9
  }
6
10
  export interface FetcherResult {
7
11
  ok: boolean;
@@ -28,6 +32,10 @@ export interface GraphSnapshotResult {
28
32
  nodes: GraphSnapshotNode[];
29
33
  cached: boolean;
30
34
  }
35
+ export declare function kindLabel(kind: string): string;
36
+ /** Orden de presentacion: los kinds conocidos en su prioridad, despues
37
+ * cualquier kind nuevo, alfabetico. */
38
+ export declare function orderKinds(kinds: Iterable<string>): string[];
31
39
  export declare function _resetSnapshotCacheForTests(): void;
32
40
  /**
33
41
  * Build the snapshot section for a project, with per-slug hash cache.
@@ -1 +1 @@
1
- {"version":3,"file":"graph_snapshot.d.ts","sourceRoot":"","sources":["../../src/chat/graph_snapshot.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAM,MAAM,CAAC;IACf,IAAI,EAAI,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAK,OAAO,CAAC;IACf,KAAK,EAAE,iBAAiB,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAE/E,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAO,eAAe,CAAC;IAC9B;gEAC4D;IAC5D,UAAU,CAAC,EAAG,MAAM,CAAC;IACrB,wDAAwD;IACxD,MAAM,CAAC,EAAO,MAAM,CAAC;IACrB,iDAAiD;IACjD,KAAK,CAAC,EAAQ,MAAM,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC;sEACkE;IAClE,EAAE,EAAM,OAAO,CAAC;IAChB,IAAI,EAAI,MAAM,CAAC;IACf,IAAI,EAAI,MAAM,CAAC;IACf,KAAK,EAAG,iBAAiB,EAAE,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;CACjB;AA8BD,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AA6DD;;;GAGG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAgC7F;AAcD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBzF"}
1
+ {"version":3,"file":"graph_snapshot.d.ts","sourceRoot":"","sources":["../../src/chat/graph_snapshot.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAM,MAAM,CAAC;IACf,IAAI,EAAI,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;6DAEyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAK,OAAO,CAAC;IACf,KAAK,EAAE,iBAAiB,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAE/E,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAO,eAAe,CAAC;IAC9B;gEAC4D;IAC5D,UAAU,CAAC,EAAG,MAAM,CAAC;IACrB,wDAAwD;IACxD,MAAM,CAAC,EAAO,MAAM,CAAC;IACrB,iDAAiD;IACjD,KAAK,CAAC,EAAQ,MAAM,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC;sEACkE;IAClE,EAAE,EAAM,OAAO,CAAC;IAChB,IAAI,EAAI,MAAM,CAAC;IACf,IAAI,EAAI,MAAM,CAAC;IACf,KAAK,EAAG,iBAAiB,EAAE,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;CACjB;AAqCD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;wCACwC;AACxC,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAS5D;AAwBD,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AA6GD;;;GAGG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAoC7F;AAcD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBzF"}
@@ -19,22 +19,69 @@
19
19
  * ASCII-only.
20
20
  */
21
21
  import crypto from 'node:crypto';
22
- /* The kinds we render, in order. New worker-side kinds appear
23
- * under "other" so the snapshot is forward-compatible. */
24
- const KIND_ORDER = [
25
- { key: 'entity', label: 'entities' },
26
- { key: 'endpoint', label: 'endpoints' },
27
- { key: 'component', label: 'components' },
28
- { key: 'utility', label: 'utilities' },
29
- { key: 'agent', label: 'agents' },
30
- { key: 'doctrine', label: 'doctrines' },
31
- { key: 'template', label: 'templates' },
22
+ /**
23
+ * Etiqueta legible por kind + orden preferido.
24
+ *
25
+ * 2026-09-22 -- esto ERA una lista cerrada (entity/endpoint/component/
26
+ * utility/agent/doctrine/template) y el render filtraba `kind === key`.
27
+ * Los kinds que el grafo produce hoy son otros (root/datamodel/tooling/
28
+ * module/library), asi que NINGUN grupo matcheaba y el snapshot se
29
+ * inyectaba VACIO: encabezado, linea en blanco y pie. Meses de prompts con
30
+ * una seccion hueca que encima le ordenaba al modelo usar IDs que no
31
+ * estaban.
32
+ *
33
+ * Ahora los grupos salen de los nodos que llegan: esta tabla solo aporta
34
+ * nombre legible y prioridad de presentacion, y un kind desconocido se
35
+ * renderiza igual. Agregar un kind al grafo ya no requiere tocar esto.
36
+ */
37
+ const KIND_LABELS = {
38
+ root: 'root',
39
+ module: 'modules',
40
+ datamodel: 'data models',
41
+ tooling: 'tooling',
42
+ library: 'libraries',
43
+ entity: 'entities',
44
+ endpoint: 'endpoints',
45
+ component: 'components',
46
+ utility: 'utilities',
47
+ agent: 'agents',
48
+ doctrine: 'doctrines',
49
+ template: 'templates',
50
+ protocol: 'protocols',
51
+ };
52
+ const KIND_PRIORITY = [
53
+ 'root', 'entity', 'datamodel', 'endpoint', 'module', 'component',
54
+ 'protocol', 'utility', 'tooling', 'library', 'agent', 'doctrine', 'template',
32
55
  ];
56
+ export function kindLabel(kind) {
57
+ return KIND_LABELS[kind] ?? kind;
58
+ }
59
+ /** Orden de presentacion: los kinds conocidos en su prioridad, despues
60
+ * cualquier kind nuevo, alfabetico. */
61
+ export function orderKinds(kinds) {
62
+ return [...new Set(kinds)].sort((a, b) => {
63
+ const ia = KIND_PRIORITY.indexOf(a);
64
+ const ib = KIND_PRIORITY.indexOf(b);
65
+ if (ia !== -1 && ib !== -1)
66
+ return ia - ib;
67
+ if (ia !== -1)
68
+ return -1;
69
+ if (ib !== -1)
70
+ return 1;
71
+ return a.localeCompare(b);
72
+ });
73
+ }
74
+ /* El pie nombraba `yujin.semantic-graph.get`, un verbo que ya no existe en
75
+ * el manifiesto: si el modelo le hacia caso, invocaba algo inexistente. Los
76
+ * vigentes son yujin.graph.list-relevant / summary / list-edges. Y ahora
77
+ * explica que una rama truncada NO es la rama completa: trae la llamada que
78
+ * la recorre. */
33
79
  const FOOTER = [
34
80
  '',
35
- 'When you reference a primitive from this snapshot, USE that ID.',
36
- 'Do NOT reinvent. For full schema of one primitive, call',
37
- 'yujin.semantic-graph.get({id}).',
81
+ 'When you reference a primitive from this snapshot, USE that ID -- do NOT',
82
+ 'reinvent it. A line ending in [+N more: <call>] is TRUNCATED, not the',
83
+ 'whole branch: that call returns the rest, ordered by weight.',
84
+ 'For the relations of a node, call yujin.graph.list-edges({node_id}).',
38
85
  ].join('\n');
39
86
  const CACHE = new Map();
40
87
  export function _resetSnapshotCacheForTests() {
@@ -56,37 +103,84 @@ function renderSnapshot(nodes, maxTokens, hash, fetchedAt) {
56
103
  lines.push('');
57
104
  const charBudget = Math.max(200, tokenBudgetToChars(maxTokens));
58
105
  /* Reserve room for the footer + the header lines. */
59
- let charsLeft = charBudget - FOOTER.length - lines.join('\n').length;
60
- for (const { key, label } of KIND_ORDER) {
61
- const kindNodes = nodes.filter((n) => n.kind === key);
62
- if (kindNodes.length === 0)
106
+ const charsLeft = charBudget - FOOTER.length - lines.join('\n').length;
107
+ /* --- Quien entra: los mas pesados del PROYECTO, no de cada kind ---
108
+ *
109
+ * Antes el presupuesto se gastaba kind por kind en orden fijo, asi que
110
+ * los primeros kinds se lo comian y los ultimos podian quedar en cero
111
+ * (habia un `if (charsLeft < 40) break`). Ahora se recorre la lista
112
+ * ordenada por peso DESCENDENTE una sola vez y cada nodo se asigna a su
113
+ * grupo mientras quede lugar: el snapshot termina siendo "lo mas pesado
114
+ * del proyecto", que es lo que uno quiere de un panorama. */
115
+ const ranked = [...nodes].sort((a, b) => (b.weight ?? 0) - (a.weight ?? 0));
116
+ const totalByKind = new Map();
117
+ for (const n of nodes)
118
+ totalByKind.set(n.kind, (totalByKind.get(n.kind) ?? 0) + 1);
119
+ const shownByKind = new Map();
120
+ let used = 0;
121
+ /* Lo que ocupa el marcador "[+N more: <call>]" de una rama truncada. Se
122
+ * reserva por grupo abierto para no quedarse sin lugar justo cuando hay
123
+ * que avisar que la rama sigue. */
124
+ const MARKER_RESERVE = 72;
125
+ const ROW_OVERHEAD = 2 + 14 + 1; /* sangria + etiqueta del kind + \n */
126
+ /* Paso 1 -- semilla: el nodo MAS PESADO de cada kind entra primero.
127
+ * Asi un presupuesto chico no deja el snapshot vacio: sigue diciendo que
128
+ * tipos de cosa existen en el proyecto y, via el marcador, como traer el
129
+ * resto. Un snapshot minimo util es mejor que ninguno. */
130
+ for (const n of ranked) {
131
+ if (shownByKind.has(n.kind))
132
+ continue;
133
+ const label = n.label || n.id;
134
+ const grow = ROW_OVERHEAD + label.length;
135
+ if (used + grow + ((shownByKind.size + 1) * MARKER_RESERVE) > charsLeft)
136
+ continue;
137
+ shownByKind.set(n.kind, [label]);
138
+ used += grow;
139
+ }
140
+ /* Presupuesto agotado antes de poder sembrar nada: mostrar al menos el
141
+ * kind mas pesado, aunque se pase un poco. El marcador es el texto mas
142
+ * valioso de la linea, y el presupuesto es una aproximacion (4 ch/tok). */
143
+ if (shownByKind.size === 0 && ranked.length > 0) {
144
+ const first = ranked[0];
145
+ shownByKind.set(first.kind, [first.label || first.id]);
146
+ }
147
+ /* Paso 2 -- relleno por peso global: se recorre la lista ordenada una
148
+ * sola vez y cada nodo cae en su grupo mientras quede lugar. Antes el
149
+ * presupuesto se gastaba kind por kind en orden fijo, asi que los
150
+ * primeros se lo comian y los ultimos quedaban en cero. */
151
+ for (const n of ranked) {
152
+ const shown = shownByKind.get(n.kind);
153
+ if (!shown)
154
+ continue; /* kind que no entro en la semilla */
155
+ const label = n.label || n.id;
156
+ if (shown.length === 1 && shown[0] === label)
157
+ continue; /* ya sembrado */
158
+ const grow = 2 + label.length; /* ", " + label */
159
+ if (used + grow + (shownByKind.size * MARKER_RESERVE) > charsLeft)
63
160
  continue;
64
- const labels = kindNodes.map((n) => n.label || n.id);
65
- /* Pad header label to a fixed width for alignment when read in
66
- * raw text. */
67
- const padded = (label + ' ').slice(0, 14);
68
- let row = ' ' + padded + labels.join(', ');
69
- if (row.length + 1 > charsLeft) {
70
- /* Truncate the list, append "... +N more" so the LLM knows
71
- * there are more nodes than rendered. */
72
- const head = [];
73
- let used = (' ' + padded).length;
74
- let kept = 0;
75
- for (const lab of labels) {
76
- const grow = head.length === 0 ? lab.length : 2 + lab.length;
77
- if (used + grow + 12 > charsLeft)
78
- break;
79
- head.push(lab);
80
- used += grow;
81
- kept += 1;
82
- }
83
- const remainder = labels.length - kept;
84
- row = ' ' + padded + head.join(', ') + (remainder > 0 ? ', ... +' + remainder + ' more' : '');
85
- }
86
- lines.push(row);
87
- charsLeft -= (row.length + 1);
88
- if (charsLeft < 40)
89
- break;
161
+ shown.push(label);
162
+ used += grow;
163
+ }
164
+ /* --- Como se avisa lo que NO entro ---
165
+ *
166
+ * El marcador viejo era "... +N more": un callejon sin salida, el modelo
167
+ * sabia que faltaban nodos pero no como traerlos. Ahora cada rama
168
+ * truncada lleva la llamada EXACTA que la recorre entera, ordenada por
169
+ * peso. La rama deja de ser un limite y pasa a ser una puerta. */
170
+ for (const kind of orderKinds(shownByKind.keys())) {
171
+ const shown = shownByKind.get(kind) ?? [];
172
+ const total = totalByKind.get(kind) ?? shown.length;
173
+ const hidden = total - shown.length;
174
+ /* Pad a ancho fijo para que se lea como columna, pero SIN cortar: un
175
+ * kind de nombre largo salia truncado ("kind-que-no-ex") y no coincidia
176
+ * con el que lleva el marcador de expansion, que usa el kind real. */
177
+ const lbl = kindLabel(kind);
178
+ const padded = lbl.length >= 14 ? lbl + ' ' : (lbl + ' ').slice(0, 14);
179
+ const marker = hidden > 0
180
+ ? ', ... [+' + hidden + ' more: yujin.graph.list-relevant({kinds:["'
181
+ + kind + '"],limit:' + total + '})]'
182
+ : '';
183
+ lines.push(' ' + padded + shown.join(', ') + marker);
90
184
  }
91
185
  lines.push(FOOTER);
92
186
  return lines.join('\n');
@@ -103,7 +197,11 @@ function hashNodes(nodes) {
103
197
  */
104
198
  export async function buildGraphSnapshotSection(opts) {
105
199
  const slug = opts.project_slug;
106
- const maxTk = opts.max_tokens ?? 400;
200
+ /* 2.4k (Pablo, 2026-09-22). El analisis de julio proponia ~2k medido
201
+ * sobre un proyecto de 271 nodos; los de hoy tienen 643-689, donde
202
+ * "todos los labels+kind" costaria ~5.1k. 2.4k con truncado por peso
203
+ * entra lo importante y deja el resto a un call de distancia. */
204
+ const maxTk = opts.max_tokens ?? 2400;
107
205
  const ttl = opts.ttl_ms ?? 300_000;
108
206
  const now = (opts.clock ?? Date.now)();
109
207
  const cached = CACHE.get(slug);
@@ -1 +1 @@
1
- {"version":3,"file":"graph_snapshot.js","sourceRoot":"","sources":["../../src/chat/graph_snapshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph_snapshot.js","sourceRoot":"","sources":["../../src/chat/graph_snapshot.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/chat/panel.ts"],"names":[],"mappings":"AAmBA,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb;;;;;2BAKuB;IACvB,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CA2tZxD"}
1
+ {"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/chat/panel.ts"],"names":[],"mappings":"AAmBA,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb;;;;;2BAKuB;IACvB,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAs1ZxD"}