@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.
- package/dist/bin/heap_bootstrap.d.ts +34 -0
- package/dist/bin/heap_bootstrap.d.ts.map +1 -0
- package/dist/bin/heap_bootstrap.js +134 -0
- package/dist/bin/heap_bootstrap.js.map +1 -0
- package/dist/bin/yf.js +30 -21
- package/dist/bin/yf.js.map +1 -1
- package/dist/chat/claude.d.ts +12 -0
- package/dist/chat/claude.d.ts.map +1 -1
- package/dist/chat/claude.js +39 -1
- package/dist/chat/claude.js.map +1 -1
- package/dist/chat/claude_cli.d.ts +5 -0
- package/dist/chat/claude_cli.d.ts.map +1 -1
- package/dist/chat/claude_cli.js +106 -5
- package/dist/chat/claude_cli.js.map +1 -1
- package/dist/chat/graph_auto_ingest.d.ts +3 -0
- package/dist/chat/graph_auto_ingest.d.ts.map +1 -1
- package/dist/chat/graph_auto_ingest.js +18 -0
- package/dist/chat/graph_auto_ingest.js.map +1 -1
- package/dist/chat/graph_component_watcher.d.ts +41 -0
- package/dist/chat/graph_component_watcher.d.ts.map +1 -1
- package/dist/chat/graph_component_watcher.js +144 -2
- package/dist/chat/graph_component_watcher.js.map +1 -1
- package/dist/chat/graph_snapshot.d.ts +8 -0
- package/dist/chat/graph_snapshot.d.ts.map +1 -1
- package/dist/chat/graph_snapshot.js +142 -44
- package/dist/chat/graph_snapshot.js.map +1 -1
- package/dist/chat/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +12842 -12719
- package/dist/chat/panel.js.map +1 -1
- package/dist/chat/persistence.d.ts.map +1 -1
- package/dist/chat/persistence.js +18 -8
- package/dist/chat/persistence.js.map +1 -1
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +81 -10
- package/dist/chat/server.js.map +1 -1
- package/dist/chat/session_store.d.ts +13 -0
- package/dist/chat/session_store.d.ts.map +1 -1
- package/dist/chat/session_store.js +36 -1
- package/dist/chat/session_store.js.map +1 -1
- package/dist/chat/turn_steering.d.ts +87 -0
- package/dist/chat/turn_steering.d.ts.map +1 -0
- package/dist/chat/turn_steering.js +120 -0
- package/dist/chat/turn_steering.js.map +1 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +59 -0
- package/dist/commands/chat.js.map +1 -1
- package/dist/core/brain_behaviour.d.ts.map +1 -1
- package/dist/core/brain_behaviour.js +8 -1
- package/dist/core/brain_behaviour.js.map +1 -1
- package/dist/core/brain_config.d.ts +23 -0
- package/dist/core/brain_config.d.ts.map +1 -1
- package/dist/core/brain_config.js +33 -0
- package/dist/core/brain_config.js.map +1 -1
- package/dist/core/federation_config.js +1 -1
- package/dist/core/federation_config.js.map +1 -1
- package/dist/core/heap_watch.d.ts +33 -0
- package/dist/core/heap_watch.d.ts.map +1 -0
- package/dist/core/heap_watch.js +82 -0
- package/dist/core/heap_watch.js.map +1 -0
- package/dist/core/keys_envelope.d.ts +1 -1
- package/dist/core/keys_envelope.d.ts.map +1 -1
- package/dist/core/keys_envelope.js.map +1 -1
- package/dist/core/provider_models.d.ts +5 -0
- package/dist/core/provider_models.d.ts.map +1 -1
- package/dist/core/provider_models.js +17 -4
- package/dist/core/provider_models.js.map +1 -1
- package/dist/lan/announce.d.ts +53 -0
- package/dist/lan/announce.d.ts.map +1 -0
- package/dist/lan/announce.js +111 -0
- package/dist/lan/announce.js.map +1 -0
- package/dist/llm/cohere_client.d.ts.map +1 -1
- package/dist/llm/cohere_client.js +13 -3
- package/dist/llm/cohere_client.js.map +1 -1
- package/dist/llm/context_compaction.d.ts +25 -0
- package/dist/llm/context_compaction.d.ts.map +1 -1
- package/dist/llm/context_compaction.js +81 -13
- package/dist/llm/context_compaction.js.map +1 -1
- package/dist/llm/deepseek_client.d.ts +10 -3
- package/dist/llm/deepseek_client.d.ts.map +1 -1
- package/dist/llm/deepseek_client.js +12 -2
- package/dist/llm/deepseek_client.js.map +1 -1
- package/dist/llm/gemini_client.d.ts.map +1 -1
- package/dist/llm/gemini_client.js +0 -0
- package/dist/llm/gemini_client.js.map +1 -1
- package/dist/llm/mistral_client.d.ts.map +1 -1
- package/dist/llm/mistral_client.js +13 -3
- package/dist/llm/mistral_client.js.map +1 -1
- package/dist/llm/ollama_client.d.ts.map +1 -1
- package/dist/llm/ollama_client.js +13 -3
- package/dist/llm/ollama_client.js.map +1 -1
- package/dist/llm/openai_client.d.ts.map +1 -1
- package/dist/llm/openai_client.js +13 -3
- package/dist/llm/openai_client.js.map +1 -1
- package/dist/llm/xai_client.d.ts.map +1 -1
- package/dist/llm/xai_client.js +13 -3
- package/dist/llm/xai_client.js.map +1 -1
- package/dist/qa/brain_matrix/brains.json +80 -80
- package/dist/semantic_graph/store.d.ts.map +1 -1
- package/dist/semantic_graph/store.js +119 -88
- package/dist/semantic_graph/store.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- 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
|
-
|
|
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
|
-
|
|
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;
|
|
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
|
-
|
|
23
|
-
*
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
'
|
|
37
|
-
'
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
lines.push(
|
|
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
|
-
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,MAAM,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"graph_snapshot.js","sourceRoot":"","sources":["../../src/chat/graph_snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,MAAM,MAAM,aAAa,CAAC;AAyCjC;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,GAA2B;IAC1C,IAAI,EAAQ,MAAM;IAClB,MAAM,EAAM,SAAS;IACrB,SAAS,EAAG,aAAa;IACzB,OAAO,EAAK,SAAS;IACrB,OAAO,EAAK,WAAW;IACvB,MAAM,EAAM,UAAU;IACtB,QAAQ,EAAI,WAAW;IACvB,SAAS,EAAG,YAAY;IACxB,OAAO,EAAK,WAAW;IACvB,KAAK,EAAO,QAAQ;IACpB,QAAQ,EAAI,WAAW;IACvB,QAAQ,EAAI,WAAW;IACvB,QAAQ,EAAI,WAAW;CACxB,CAAC;AACF,MAAM,aAAa,GAAsB;IACvC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW;IAChE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU;CAC7E,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACnC,CAAC;AAED;wCACwC;AACxC,MAAM,UAAU,UAAU,CAAC,KAAuB;IAChD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvC,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAC3C,IAAI,EAAE,KAAK,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;QACzB,IAAI,EAAE,KAAK,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QACxB,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;iBAIiB;AACjB,MAAM,MAAM,GAAG;IACb,EAAE;IACF,0EAA0E;IAC1E,uEAAuE;IACvE,8DAA8D;IAC9D,sEAAsE;CACvE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AASb,MAAM,KAAK,GAA4B,IAAI,GAAG,EAAE,CAAC;AAEjD,MAAM,UAAU,2BAA2B;IACzC,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED,iEAAiE;AACjE,SAAS,kBAAkB,CAAC,MAAc;IACxC,OAAO,MAAM,GAAG,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,cAAc,CAAC,KAA0B,EAAE,SAAiB,EAAE,IAAY,EAAE,SAAiB;IACpG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B;;0CAEsC;IACtC,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,KAAK,CAAC,IAAI,CAAC,mCAAmC,GAAG,EAAE,GAAG,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/F,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;IAChE,qDAAqD;IACrD,MAAM,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAEvE;;;;;;;iEAO6D;IAC7D,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAEnF,MAAM,WAAW,GAAG,IAAI,GAAG,EAAoB,CAAC;IAChD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb;;uCAEmC;IACnC,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAG,sCAAsC;IAEzE;;;8DAG0D;IAC1D,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,SAAS;QACtC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;QACzC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,GAAG,SAAS;YAAE,SAAS;QAClF,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,IAAI,CAAC;IACf,CAAC;IACD;;+EAE2E;IAC3E,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACzB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;;+DAG2D;IAC3D,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,SAAS,CAAwB,qCAAqC;QAClF,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK;YAAE,SAAS,CAAG,iBAAiB;QAC3E,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAe,kBAAkB;QAC/D,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,cAAc,CAAC,GAAG,SAAS;YAAE,SAAS;QAC5E,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,IAAI,IAAI,IAAI,CAAC;IACf,CAAC;IAED;;;;;sEAKkE;IAClE,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC;QACpD,MAAM,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;QACpC;;8EAEsE;QACtE,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC;YACvB,CAAC,CAAC,UAAU,GAAG,MAAM,GAAG,4CAA4C;kBAChE,IAAI,GAAG,WAAW,GAAG,KAAK,GAAG,KAAK;YACtC,CAAC,CAAC,EAAE,CAAC;QACP,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,SAAS,CAAC,KAA0B;IAC3C;0BACsB;IACtB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5D,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAAe;IAC7D,MAAM,IAAI,GAAM,IAAI,CAAC,YAAY,CAAC;IAClC;;;qEAGiE;IACjE,MAAM,KAAK,GAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;IACxC,MAAM,GAAG,GAAO,IAAI,CAAC,MAAM,IAAQ,OAAO,CAAC;IAC3C,MAAM,GAAG,GAAO,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAE3C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,MAAM,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,EAAE,CAAC;QAC9C,OAAO;YACL,EAAE,EAAM,IAAI;YACZ,IAAI,EAAI,MAAM,CAAC,IAAI;YACnB,IAAI,EAAI,MAAM,CAAC,IAAI;YACnB,KAAK,EAAG,MAAM,CAAC,KAAK;YACpB,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,IAAI,OAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACrE,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACrE,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IAE7D,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;IACvE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACvE,CAAC;AAED;;kEAEkE;AAElE,MAAM,UAAU,GAA6B;IAC3C,QAAQ,EAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC;IAC3F,OAAO,EAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC;IAC9C,KAAK,EAAO,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;IAC5D,MAAM,EAAM,CAAC,UAAU,EAAE,UAAU,CAAC;IACpC,UAAU,EAAE,CAAC,UAAU,CAAC;CACzB,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,QAA6B,EAAE,IAAY;IAC/E,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC;;8DAE0D;IAC1D,MAAM,KAAK,GAAG,OAAO;QACnB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;IACnB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACvD,OAAO,IAAI,CAAC,OAAO,CACjB,2CAA2C,EAC3C,uCAAuC,GAAG,IAAI,GAAG,IAAI,CACtD,CAAC;AACJ,CAAC"}
|
package/dist/chat/panel.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|