@nac3/forge-cli 1.0.51 → 1.0.52
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/README.md +466 -390
- package/dist/chat/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +315 -94
- package/dist/chat/panel.js.map +1 -1
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +77 -5
- package/dist/chat/server.js.map +1 -1
- package/dist/commands/chat.d.ts +4 -4
- package/dist/commands/chat.js +1 -1
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/pilot.d.ts.map +1 -1
- package/dist/commands/pilot.js +3 -1
- package/dist/commands/pilot.js.map +1 -1
- package/dist/core/file_tree.d.ts +27 -0
- package/dist/core/file_tree.d.ts.map +1 -0
- package/dist/core/file_tree.js +87 -0
- package/dist/core/file_tree.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/src/i18n/catalogs/ar.json +13 -3
- package/src/i18n/catalogs/de.json +13 -3
- package/src/i18n/catalogs/en.json +13 -3
- package/src/i18n/catalogs/es.json +13 -3
- package/src/i18n/catalogs/fr.json +13 -3
- package/src/i18n/catalogs/hi.json +13 -3
- package/src/i18n/catalogs/it.json +13 -3
- package/src/i18n/catalogs/ja.json +13 -3
- package/src/i18n/catalogs/pt.json +13 -3
- package/src/i18n/catalogs/zh.json +13 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/chat/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAA2D,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAKjG,OAAO,EAAoD,KAAK,aAAa,EAAoB,MAAM,aAAa,CAAC;AAErH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAInD,OAAO,EAEL,KAAK,SAAS,EACf,MAAM,iBAAiB,CAAC;AAczB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAsBjD,OAAO,EAAyD,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAc1H,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;;;;;;wDAQoD;IACpD,YAAY,CAAC,EAAE,eAAe,GAAG,iBAAiB,CAAC;IACnD;;2DAEuD;IACvD,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B;+CAC2C;IAC3C,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;kEAG8D;IAC9D,OAAO,CAAC,EAAE,OAAO,sBAAsB,EAAE,OAAO,CAAC;IACjD;;;;;;;iDAO6C;IAC7C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ;qEACiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,eAAe,CAAC;IACvB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B;;;oCAGgC;IAChC,MAAM,CAAC,EAAE,OAAO,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;CACpD;AAqBD,wBAAsB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAobhF;AAED,UAAU,GAAG;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,eAAe,CAAC;IAIvB,OAAO,CAAC,EAAE,OAAO,sBAAsB,EAAE,OAAO,CAAC;IAMjD,YAAY,CAAC,EAAE,eAAe,GAAG,iBAAiB,CAAC;IAKnD,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAG3G,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAGlE,MAAM,CAAC,EAAE,OAAO,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;CACpD;AA0BD;;;;+EAI+E;AAC/E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAOV;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/chat/server.ts"],"names":[],"mappings":"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"}
|
package/dist/chat/server.js
CHANGED
|
@@ -1942,6 +1942,18 @@ async function route(req, res, ctx) {
|
|
|
1942
1942
|
await handleProjectsAdd(req, res);
|
|
1943
1943
|
return;
|
|
1944
1944
|
}
|
|
1945
|
+
if (req.method === 'POST' && url.pathname === '/api/forge/projects/remove') {
|
|
1946
|
+
await handleProjectsRemove(req, res);
|
|
1947
|
+
return;
|
|
1948
|
+
}
|
|
1949
|
+
if (req.method === 'GET' && url.pathname === '/api/forge/files-tree') {
|
|
1950
|
+
await handleFilesTree(res, ctx);
|
|
1951
|
+
return;
|
|
1952
|
+
}
|
|
1953
|
+
if (req.method === 'POST' && url.pathname === '/api/forge/open-native') {
|
|
1954
|
+
await handleOpenNative(req, res, ctx);
|
|
1955
|
+
return;
|
|
1956
|
+
}
|
|
1945
1957
|
if (req.method === 'POST' && url.pathname.startsWith('/api/vault/test/')) {
|
|
1946
1958
|
const slot = url.pathname.slice('/api/vault/test/'.length);
|
|
1947
1959
|
await handleVaultTest(req, res, slot);
|
|
@@ -3779,11 +3791,6 @@ async function handleStartupTabs(_req, res, ctx, url) {
|
|
|
3779
3791
|
const gNodes = nodes.map((n) => ({ id: n.id, label: n.name || n.id, weight: n.weight, kind: n.kind, confidence: n.confidence, detail: n.purpose || '' }));
|
|
3780
3792
|
const gEdges = edges.map((e) => ({ from: e.from_id, to: e.to_id, kind: e.kind }));
|
|
3781
3793
|
tabs.push({ key: 'startup_graph', title: t('startup.tab.graph'), kind: 'graph', content: JSON.stringify({ nodes: gNodes, edges: gEdges }) });
|
|
3782
|
-
/* Vista funcional -- misma data, marcada mode:'functional'. El panel
|
|
3783
|
-
* la renderiza centrada en las funcionalidades de front-end (nodos
|
|
3784
|
-
* del grupo 'frontend') con un selector para filtrar el subgrafo que
|
|
3785
|
-
* cada funcionalidad toca. Reusa el mismo renderer de grafo. */
|
|
3786
|
-
tabs.push({ key: 'startup_graph_func', title: t('startup.tab.graphFunc'), kind: 'graph', content: JSON.stringify({ nodes: gNodes, edges: gEdges, mode: 'functional' }) });
|
|
3787
3794
|
/* Grafo semantico = misma data en markdown (tabla de nodos por
|
|
3788
3795
|
* peso + conteo de aristas), con la confianza para distinguir lo
|
|
3789
3796
|
* declarado (claimed) de lo derivado del codigo (auto). */
|
|
@@ -3844,6 +3851,15 @@ async function handleStartupTabs(_req, res, ctx, url) {
|
|
|
3844
3851
|
kind: 'tasks',
|
|
3845
3852
|
content: '',
|
|
3846
3853
|
});
|
|
3854
|
+
/* 6: File explorer -- the tree is fetched live by the panel from
|
|
3855
|
+
* /api/forge/files-tree (so the 12s startup-tabs refresh does NOT
|
|
3856
|
+
* re-scan the repo); the content is a stable placeholder. */
|
|
3857
|
+
tabs.push({
|
|
3858
|
+
key: 'startup_files',
|
|
3859
|
+
title: t('startup.tab.files'),
|
|
3860
|
+
kind: 'files',
|
|
3861
|
+
content: '{}',
|
|
3862
|
+
});
|
|
3847
3863
|
sendJson(res, 200, { ok: true, enabled: true, tabs });
|
|
3848
3864
|
}
|
|
3849
3865
|
/** Formato de id de pending para display (PND-NNN). */
|
|
@@ -4401,6 +4417,62 @@ async function handleProjectsAdd(req, res) {
|
|
|
4401
4417
|
const reg = await readRegistry();
|
|
4402
4418
|
sendJson(res, 200, { ok: true, slug, registry: reg });
|
|
4403
4419
|
}
|
|
4420
|
+
/** Remove a project from the local registry (the panel "X"). Never touches
|
|
4421
|
+
* the repo on disk -- removeProject only edits projects.json (and clears
|
|
4422
|
+
* active_slug if the removed one was active). */
|
|
4423
|
+
async function handleProjectsRemove(req, res) {
|
|
4424
|
+
let body;
|
|
4425
|
+
try {
|
|
4426
|
+
body = JSON.parse(await readBody(req));
|
|
4427
|
+
}
|
|
4428
|
+
catch {
|
|
4429
|
+
sendJson(res, 400, { ok: false, error: 'invalid JSON' });
|
|
4430
|
+
return;
|
|
4431
|
+
}
|
|
4432
|
+
if (typeof body.slug !== 'string' || body.slug.trim() === '') {
|
|
4433
|
+
sendJson(res, 400, { ok: false, error: 'slug (string) required' });
|
|
4434
|
+
return;
|
|
4435
|
+
}
|
|
4436
|
+
const { removeProject } = await import('../core/projects.js');
|
|
4437
|
+
const reg = await removeProject(body.slug);
|
|
4438
|
+
sendJson(res, 200, { ok: true, active: reg.active_slug, registry: reg });
|
|
4439
|
+
}
|
|
4440
|
+
/** Directory tree of the active project, for the file-explorer tab. */
|
|
4441
|
+
async function handleFilesTree(res, ctx) {
|
|
4442
|
+
try {
|
|
4443
|
+
const { listProjectFiles } = await import('../core/file_tree.js');
|
|
4444
|
+
const tree = await listProjectFiles(ctx.projectRoot);
|
|
4445
|
+
sendJson(res, 200, { ok: true, root_name: tree.root.name, tree: tree.root, truncated: tree.truncated, node_count: tree.node_count });
|
|
4446
|
+
}
|
|
4447
|
+
catch (err) {
|
|
4448
|
+
sendJson(res, 500, { ok: false, error: err instanceof Error ? err.message : String(err) });
|
|
4449
|
+
}
|
|
4450
|
+
}
|
|
4451
|
+
/** Open a project file with the OS-associated application (the file-explorer
|
|
4452
|
+
* click). Delegates to desktop_open.openNative, which gates the path to the
|
|
4453
|
+
* project root and refuses executable/script extensions. */
|
|
4454
|
+
async function handleOpenNative(req, res, ctx) {
|
|
4455
|
+
let body;
|
|
4456
|
+
try {
|
|
4457
|
+
body = JSON.parse(await readBody(req));
|
|
4458
|
+
}
|
|
4459
|
+
catch {
|
|
4460
|
+
sendJson(res, 400, { ok: false, error: 'invalid JSON' });
|
|
4461
|
+
return;
|
|
4462
|
+
}
|
|
4463
|
+
if (typeof body.path !== 'string' || body.path.trim() === '') {
|
|
4464
|
+
sendJson(res, 400, { ok: false, error: 'path (string) required' });
|
|
4465
|
+
return;
|
|
4466
|
+
}
|
|
4467
|
+
try {
|
|
4468
|
+
const { openNative } = await import('../core/desktop_open.js');
|
|
4469
|
+
const result = await openNative(body.path, ctx.projectRoot);
|
|
4470
|
+
sendJson(res, result.ok ? 200 : 400, result);
|
|
4471
|
+
}
|
|
4472
|
+
catch (err) {
|
|
4473
|
+
sendJson(res, 500, { ok: false, error: err instanceof Error ? err.message : String(err) });
|
|
4474
|
+
}
|
|
4475
|
+
}
|
|
4404
4476
|
async function handleTargetGet(res, ctx) {
|
|
4405
4477
|
const r = await resolveTarget(ctx.projectRoot);
|
|
4406
4478
|
sendJson(res, 200, {
|