@nac3/forge-cli 1.0.69 → 1.0.71
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/chat/doctrine_digest.d.ts.map +1 -1
- package/dist/chat/doctrine_digest.js +5 -1
- package/dist/chat/doctrine_digest.js.map +1 -1
- package/dist/chat/html_doc_kind.d.ts +34 -0
- package/dist/chat/html_doc_kind.d.ts.map +1 -0
- package/dist/chat/html_doc_kind.js +37 -0
- package/dist/chat/html_doc_kind.js.map +1 -0
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +19 -1
- package/dist/chat/server.js.map +1 -1
- package/dist/chat/tool_status.d.ts +24 -0
- package/dist/chat/tool_status.d.ts.map +1 -0
- package/dist/chat/tool_status.js +112 -0
- package/dist/chat/tool_status.js.map +1 -0
- package/dist/chat/tools/pizarron.d.ts.map +1 -1
- package/dist/chat/tools/pizarron.js +6 -0
- package/dist/chat/tools/pizarron.js.map +1 -1
- package/dist/core/forge_profile.d.ts +11 -2
- package/dist/core/forge_profile.d.ts.map +1 -1
- package/dist/core/forge_profile.js +35 -13
- package/dist/core/forge_profile.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface ProbeResult {
|
|
2
|
+
id: string;
|
|
3
|
+
ok: boolean;
|
|
4
|
+
summary: string;
|
|
5
|
+
}
|
|
6
|
+
interface RunOut {
|
|
7
|
+
code: number;
|
|
8
|
+
stdout: string;
|
|
9
|
+
stderr: string;
|
|
10
|
+
}
|
|
11
|
+
export type Runner = (cmd: string, args: string[], timeoutMs: number) => Promise<RunOut>;
|
|
12
|
+
/** Parse `gh auth status` output into a one-line verdict. Exit 0 = logged
|
|
13
|
+
* in; the account line looks like "Logged in to github.com account X". */
|
|
14
|
+
export declare function parseGhAuth(code: number, stdout: string, stderr: string): ProbeResult;
|
|
15
|
+
/** Run all probes now and cache the result. */
|
|
16
|
+
export declare function refreshToolStatus(runner?: Runner): Promise<ProbeResult[]>;
|
|
17
|
+
/** Boot hook: probe now (fire-and-forget) + refresh every 10 min. */
|
|
18
|
+
export declare function startToolStatusRefresh(runner?: Runner): void;
|
|
19
|
+
/** For tests. */
|
|
20
|
+
export declare function _resetToolStatusForTest(): void;
|
|
21
|
+
/** Prompt section from the cached probes ('' before the first probe). */
|
|
22
|
+
export declare function toolStatusSection(): string;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=tool_status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool_status.d.ts","sourceRoot":"","sources":["../../src/chat/tool_status.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,MAAM;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACjE,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAgBzF;2EAC2E;AAC3E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAOrF;AA8BD,+CAA+C;AAC/C,wBAAsB,iBAAiB,CAAC,MAAM,GAAE,MAAsB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAI9F;AAED,qEAAqE;AACrE,wBAAgB,sBAAsB,CAAC,MAAM,GAAE,MAAsB,GAAG,IAAI,CAK3E;AAED,iBAAiB;AACjB,wBAAgB,uBAAuB,IAAI,IAAI,CAG9C;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,IAAI,MAAM,CAe1C"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tool_status -- VERIFIED environment/tool connectivity for the system
|
|
3
|
+
* prompt (Pablo 2026-07-10).
|
|
4
|
+
*
|
|
5
|
+
* Problem: the brain answered from memory that tools were disconnected
|
|
6
|
+
* ("gh no esta conectada en este entorno") when they WERE connected -- and
|
|
7
|
+
* only re-checked after the user pushed back. State must live VERIFIED in
|
|
8
|
+
* the prompt, not in the model's priors (same principle as the read-only
|
|
9
|
+
* gate: enforcement/facts over vibes).
|
|
10
|
+
*
|
|
11
|
+
* Design: cheap probes (gh auth status, git, node, npm, docker) run in
|
|
12
|
+
* PARALLEL at chat-server boot and refresh in the background every 10 min;
|
|
13
|
+
* the cached result renders as a TOOL STATUS section appended to
|
|
14
|
+
* systemDynamic each turn, stamped with the probe time. The section tells
|
|
15
|
+
* the brain: trust this over memory; re-probe live only if it changed.
|
|
16
|
+
*
|
|
17
|
+
* Failure mode: graceful -- a probe that errors/timeouts reports the tool
|
|
18
|
+
* as NOT AVAILABLE (which is exactly what a failed probe means); the
|
|
19
|
+
* section renders whatever was measured. Nothing here ever throws.
|
|
20
|
+
*
|
|
21
|
+
* ASCII-only.
|
|
22
|
+
*/
|
|
23
|
+
import { execFile } from 'node:child_process';
|
|
24
|
+
const defaultRunner = (cmd, args, timeoutMs) => new Promise((resolve) => {
|
|
25
|
+
try {
|
|
26
|
+
execFile(cmd, args, { timeout: timeoutMs, windowsHide: true, shell: process.platform === 'win32' }, (err, stdout, stderr) => {
|
|
27
|
+
const code = err ? (typeof err.code === 'number' ? err.code : 1) : 0;
|
|
28
|
+
resolve({ code, stdout: String(stdout || ''), stderr: String(stderr || '') });
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
resolve({ code: 1, stdout: '', stderr: 'spawn failed' });
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
const PROBE_TIMEOUT_MS = 4000;
|
|
36
|
+
const REFRESH_MS = 10 * 60 * 1000;
|
|
37
|
+
/** Parse `gh auth status` output into a one-line verdict. Exit 0 = logged
|
|
38
|
+
* in; the account line looks like "Logged in to github.com account X". */
|
|
39
|
+
export function parseGhAuth(code, stdout, stderr) {
|
|
40
|
+
const text = stdout + '\n' + stderr; /* gh prints to stderr historically */
|
|
41
|
+
if (code === 0) {
|
|
42
|
+
const m = /account\s+(\S+)/i.exec(text) || /as\s+(\S+)/i.exec(text);
|
|
43
|
+
return { id: 'gh', ok: true, summary: 'CONECTADO' + (m ? ' (cuenta ' + m[1] + ')' : '') };
|
|
44
|
+
}
|
|
45
|
+
return { id: 'gh', ok: false, summary: 'NO autenticado (gh auth login)' };
|
|
46
|
+
}
|
|
47
|
+
function versionProbe(id, code, stdout) {
|
|
48
|
+
if (code === 0) {
|
|
49
|
+
const v = String(stdout).trim().split('\n')[0] || '';
|
|
50
|
+
return { id, ok: true, summary: 'disponible' + (v ? ' (' + v.slice(0, 60) + ')' : '') };
|
|
51
|
+
}
|
|
52
|
+
return { id, ok: false, summary: 'no disponible' };
|
|
53
|
+
}
|
|
54
|
+
async function runProbes(runner) {
|
|
55
|
+
const jobs = [
|
|
56
|
+
runner('gh', ['auth', 'status'], PROBE_TIMEOUT_MS)
|
|
57
|
+
.then((r) => parseGhAuth(r.code, r.stdout, r.stderr)),
|
|
58
|
+
runner('git', ['--version'], PROBE_TIMEOUT_MS)
|
|
59
|
+
.then((r) => versionProbe('git', r.code, r.stdout)),
|
|
60
|
+
runner('node', ['--version'], PROBE_TIMEOUT_MS)
|
|
61
|
+
.then((r) => versionProbe('node', r.code, r.stdout)),
|
|
62
|
+
runner('npm', ['--version'], PROBE_TIMEOUT_MS)
|
|
63
|
+
.then((r) => versionProbe('npm', r.code, r.stdout)),
|
|
64
|
+
runner('docker', ['--version'], PROBE_TIMEOUT_MS)
|
|
65
|
+
.then((r) => versionProbe('docker', r.code, r.stdout)),
|
|
66
|
+
];
|
|
67
|
+
return Promise.all(jobs.map((p) => p.catch(() => ({ id: '?', ok: false, summary: 'probe error' }))));
|
|
68
|
+
}
|
|
69
|
+
let STATE = null;
|
|
70
|
+
let TIMER = null;
|
|
71
|
+
/** Run all probes now and cache the result. */
|
|
72
|
+
export async function refreshToolStatus(runner = defaultRunner) {
|
|
73
|
+
const results = await runProbes(runner);
|
|
74
|
+
STATE = { at: Date.now(), results };
|
|
75
|
+
return results;
|
|
76
|
+
}
|
|
77
|
+
/** Boot hook: probe now (fire-and-forget) + refresh every 10 min. */
|
|
78
|
+
export function startToolStatusRefresh(runner = defaultRunner) {
|
|
79
|
+
void refreshToolStatus(runner);
|
|
80
|
+
if (TIMER)
|
|
81
|
+
return;
|
|
82
|
+
TIMER = setInterval(() => { void refreshToolStatus(runner); }, REFRESH_MS);
|
|
83
|
+
if (typeof TIMER.unref === 'function')
|
|
84
|
+
TIMER.unref();
|
|
85
|
+
}
|
|
86
|
+
/** For tests. */
|
|
87
|
+
export function _resetToolStatusForTest() {
|
|
88
|
+
STATE = null;
|
|
89
|
+
if (TIMER) {
|
|
90
|
+
clearInterval(TIMER);
|
|
91
|
+
TIMER = null;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/** Prompt section from the cached probes ('' before the first probe). */
|
|
95
|
+
export function toolStatusSection() {
|
|
96
|
+
if (!STATE)
|
|
97
|
+
return '';
|
|
98
|
+
const hhmm = new Date(STATE.at).toISOString().slice(11, 16);
|
|
99
|
+
const lines = [
|
|
100
|
+
'',
|
|
101
|
+
'',
|
|
102
|
+
'TOOL STATUS (SONDEADO EN VIVO a las ' + hhmm + ' UTC -- esto es estado',
|
|
103
|
+
'VERIFICADO del entorno; conta con el, NO respondas de memoria que una',
|
|
104
|
+
'herramienta "no esta conectada". Si necesitas re-verificar, sondea vos',
|
|
105
|
+
'mismo (p.ej. shell `gh auth status`) en lugar de asumir):',
|
|
106
|
+
];
|
|
107
|
+
for (const r of STATE.results) {
|
|
108
|
+
lines.push(' - ' + r.id + ': ' + r.summary);
|
|
109
|
+
}
|
|
110
|
+
return lines.join('\n');
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=tool_status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool_status.js","sourceRoot":"","sources":["../../src/chat/tool_status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pizarron.d.ts","sourceRoot":"","sources":["../../../src/chat/tools/pizarron.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"pizarron.d.ts","sourceRoot":"","sources":["../../../src/chat/tools/pizarron.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIrE,eAAO,MAAM,qBAAqB,EAAE,QAkEnC,CAAC;AAMF,wBAAsB,iBAAiB,CACrC,IAAI,EAAE;IACJ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,EACD,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,UAAU,CAAC,CAyErB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { decideFlowTab } from '../flow_bpmn.js';
|
|
2
|
+
import { maybePromoteHtmlDoc } from '../html_doc_kind.js';
|
|
2
3
|
export const SHOW_IN_PIZARRON_SPEC = {
|
|
3
4
|
name: 'forge_show_in_pizarron',
|
|
4
5
|
description: 'Surface STRUCTURED CONTENT (code, table, markdown doc, '
|
|
@@ -122,6 +123,11 @@ export async function runShowInPizarron(args, _ctx) {
|
|
|
122
123
|
kind = decision.kind;
|
|
123
124
|
content = decision.content;
|
|
124
125
|
}
|
|
126
|
+
/* Generated full-HTML reports render as documents, never as source code
|
|
127
|
+
* (unreadable in the pizarron) -- Pablo 2026-07-10. */
|
|
128
|
+
const docFix = maybePromoteHtmlDoc({ kind, content, file_path: args.file_path });
|
|
129
|
+
if (docFix.promoted)
|
|
130
|
+
kind = docFix.kind;
|
|
125
131
|
}
|
|
126
132
|
/* Generate a stable-ish item id for the panel to use as a
|
|
127
133
|
* data-nac-id later. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pizarron.js","sourceRoot":"","sources":["../../../src/chat/tools/pizarron.ts"],"names":[],"mappings":"AA+BA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"pizarron.js","sourceRoot":"","sources":["../../../src/chat/tools/pizarron.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,19 @@ export interface ForgeProfile {
|
|
|
3
3
|
name?: string;
|
|
4
4
|
read_only?: boolean;
|
|
5
5
|
mission_file?: string;
|
|
6
|
+
/** Single report dir (legacy form; kept for back-compat). */
|
|
6
7
|
allow_report_dir?: string;
|
|
8
|
+
/** Report dirs (preferred form). Writing REPORTS is part of the embedded
|
|
9
|
+
* assistant's PRIMARY function (Pablo 2026-07-10), so under read_only
|
|
10
|
+
* these default to ['docs', '.forge/diagnostics'] when unspecified. */
|
|
11
|
+
allow_report_dirs?: string[];
|
|
7
12
|
/** Slice 2 (PND-146): when true the project root cannot be re-anchored. */
|
|
8
13
|
pinned_root?: boolean;
|
|
9
14
|
}
|
|
15
|
+
/** Default report dirs for a read_only profile with no explicit config. */
|
|
16
|
+
export declare const DEFAULT_REPORT_DIRS: readonly ["docs", ".forge/diagnostics"];
|
|
17
|
+
/** Effective report dirs: explicit array + legacy string, or the default. */
|
|
18
|
+
export declare function reportDirs(p: ForgeProfile): string[];
|
|
10
19
|
/**
|
|
11
20
|
* Load the profile for a project root. Resolution order (Pablo 2026-07-09):
|
|
12
21
|
*
|
|
@@ -47,6 +56,6 @@ export interface ProfileGateDecision {
|
|
|
47
56
|
* present in this mode, unlike agent sub-sessions).
|
|
48
57
|
*/
|
|
49
58
|
export declare function profileVerbGate(verbId: string, args?: Record<string, unknown>): ProfileGateDecision;
|
|
50
|
-
/** Resolve the absolute report
|
|
51
|
-
export declare function
|
|
59
|
+
/** Resolve the absolute report dirs (for callers that need them). */
|
|
60
|
+
export declare function reportDirsAbs(): string[];
|
|
52
61
|
//# sourceMappingURL=forge_profile.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forge_profile.d.ts","sourceRoot":"","sources":["../../src/core/forge_profile.ts"],"names":[],"mappings":"AAoCA,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAYD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAgBpE;AAED;8EAC8E;AAC9E,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAapE;AAED,iBAAiB;AACjB,wBAAgB,oBAAoB,IAAI,IAAI,CAAuD;AAEnG,wBAAgB,aAAa,IAAI,YAAY,GAAG,IAAI,CAA2B;AAE/E;;qEAEqE;AACrE,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"forge_profile.d.ts","sourceRoot":"","sources":["../../src/core/forge_profile.ts"],"names":[],"mappings":"AAoCA,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;4EAEwE;IACxE,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,2EAA2E;AAC3E,eAAO,MAAM,mBAAmB,yCAA0C,CAAC;AAE3E,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,EAAE,CAQpD;AAYD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAgBpE;AAED;8EAC8E;AAC9E,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAapE;AAED,iBAAiB;AACjB,wBAAgB,oBAAoB,IAAI,IAAI,CAAuD;AAEnG,wBAAgB,aAAa,IAAI,YAAY,GAAG,IAAI,CAA2B;AAE/E;;qEAEqE;AACrE,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAuC7C;AAyBD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,gBAAgB,CAAC;AAErE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAeD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,mBAAmB,CA2BrB;AAED,qEAAqE;AACrE,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAIxC"}
|
|
@@ -33,6 +33,22 @@
|
|
|
33
33
|
*/
|
|
34
34
|
import { readFileSync } from 'node:fs';
|
|
35
35
|
import { isAbsolute, join, normalize, resolve } from 'node:path';
|
|
36
|
+
/** Default report dirs for a read_only profile with no explicit config. */
|
|
37
|
+
export const DEFAULT_REPORT_DIRS = ['docs', '.forge/diagnostics'];
|
|
38
|
+
/** Effective report dirs: explicit array + legacy string, or the default. */
|
|
39
|
+
export function reportDirs(p) {
|
|
40
|
+
const dirs = [];
|
|
41
|
+
if (Array.isArray(p.allow_report_dirs)) {
|
|
42
|
+
for (const d of p.allow_report_dirs)
|
|
43
|
+
if (d && typeof d === 'string')
|
|
44
|
+
dirs.push(d);
|
|
45
|
+
}
|
|
46
|
+
if (p.allow_report_dir && typeof p.allow_report_dir === 'string')
|
|
47
|
+
dirs.push(p.allow_report_dir);
|
|
48
|
+
if (dirs.length === 0 && p.read_only === true)
|
|
49
|
+
return [...DEFAULT_REPORT_DIRS];
|
|
50
|
+
return dirs;
|
|
51
|
+
}
|
|
36
52
|
const MISSION_MAX_CHARS = 8000;
|
|
37
53
|
let ACTIVE = { profile: null, mission: '', root: '' };
|
|
38
54
|
/**
|
|
@@ -108,9 +124,8 @@ export function profilePromptLines() {
|
|
|
108
124
|
lines.push('=================================================================', 'MISSION (operator-configured -- .forge profile "' + (p.name || 'default') + '")', '=================================================================', '', ACTIVE.mission, '');
|
|
109
125
|
}
|
|
110
126
|
if (p.read_only) {
|
|
111
|
-
lines.push('=================================================================', 'READ-ONLY DIAGNOSTIC POSTURE (mechanically enforced)', '=================================================================', '', 'This deployment is a DIAGNOSTIC assistant for THIS system. Mutating', 'verbs (file writes, git commit/push/pull, lifecycle, office writes,', 'unsafe shell) are BLOCKED at the dispatcher -- do not attempt them.', 'Your job instead:', ' 1. DIAGNOSE with evidence: read code/config/logs, query the graph,', ' cite file:line for every claim.', ' 2. Emit PRECISE instructions the operator can apply by hand:', ' "set field <X> to value <V> in <file/table>, then verify with', ' <command/check>". One instruction per change, in order.', ' 3. Record findings as pendings (yujin.pending.add) so nothing is', ' lost between sessions.', (
|
|
112
|
-
|
|
113
|
-
: 'You cannot write files at all in this posture.'), '');
|
|
127
|
+
lines.push('=================================================================', 'READ-ONLY DIAGNOSTIC POSTURE (mechanically enforced)', '=================================================================', '', 'This deployment is a DIAGNOSTIC assistant for THIS system. Mutating', 'verbs (file writes, git commit/push/pull, lifecycle, office writes,', 'unsafe shell) are BLOCKED at the dispatcher -- do not attempt them.', 'Your job instead:', ' 1. DIAGNOSE with evidence: read code/config/logs, query the graph,', ' cite file:line for every claim.', ' 2. Emit PRECISE instructions the operator can apply by hand:', ' "set field <X> to value <V> in <file/table>, then verify with', ' <command/check>". One instruction per change, in order.', ' 3. Record findings as pendings (yujin.pending.add) so nothing is', ' lost between sessions.', ' 4. WRITE REPORTS -- part of your PRIMARY function. You MAY write', ' reports of any type (HTML/md/csv/...) under: '
|
|
128
|
+
+ reportDirs(p).map((d) => '"' + d + '/"').join(', ') + '.', ' Everything else on disk stays read-only.', '');
|
|
114
129
|
}
|
|
115
130
|
return lines;
|
|
116
131
|
}
|
|
@@ -135,15 +150,21 @@ const RO_BLOCKED = new Set([
|
|
|
135
150
|
'office.excel.write', 'office.excel.update-cell', 'office.excel.append-sheet',
|
|
136
151
|
'office.word.write',
|
|
137
152
|
]);
|
|
138
|
-
/** True when a write path falls inside the profile's
|
|
153
|
+
/** True when a write path falls inside ANY of the profile's report dirs. */
|
|
139
154
|
function underReportDir(p, relPath) {
|
|
140
|
-
if (!
|
|
155
|
+
if (!relPath)
|
|
141
156
|
return false;
|
|
142
|
-
const base = normalize(p.allow_report_dir).replace(/\\/g, '/').replace(/^\/+|\/+$/g, '');
|
|
143
157
|
const rel = normalize(String(relPath)).replace(/\\/g, '/').replace(/^\/+/, '');
|
|
144
158
|
if (rel.indexOf('..') >= 0)
|
|
145
159
|
return false;
|
|
146
|
-
|
|
160
|
+
for (const dir of reportDirs(p)) {
|
|
161
|
+
const base = normalize(dir).replace(/\\/g, '/').replace(/^\/+|\/+$/g, '');
|
|
162
|
+
if (!base)
|
|
163
|
+
continue;
|
|
164
|
+
if (rel === base || rel.indexOf(base + '/') === 0)
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
return false;
|
|
147
168
|
}
|
|
148
169
|
/**
|
|
149
170
|
* Gate a verb under the ACTIVE profile. No profile / read_only off -> pass.
|
|
@@ -176,18 +197,19 @@ export function profileVerbGate(verbId, args) {
|
|
|
176
197
|
if (underReportDir(p, rel))
|
|
177
198
|
return { action: 'pass' };
|
|
178
199
|
}
|
|
200
|
+
const rds = reportDirs(p);
|
|
179
201
|
return {
|
|
180
202
|
action: 'reject',
|
|
181
203
|
reason: 'read-only diagnostic profile: verb "' + verbId + '" mutates the system. '
|
|
182
204
|
+ 'Diagnose and emit the precise instruction for the operator instead'
|
|
183
|
-
+ (
|
|
205
|
+
+ (rds.length ? ' (reports may be written under ' + rds.map((d) => '"' + d + '/"').join(', ') + ')' : '') + '.',
|
|
184
206
|
};
|
|
185
207
|
}
|
|
186
|
-
/** Resolve the absolute report
|
|
187
|
-
export function
|
|
208
|
+
/** Resolve the absolute report dirs (for callers that need them). */
|
|
209
|
+
export function reportDirsAbs() {
|
|
188
210
|
const p = ACTIVE.profile;
|
|
189
|
-
if (!p
|
|
190
|
-
return
|
|
191
|
-
return resolve(ACTIVE.root,
|
|
211
|
+
if (!p)
|
|
212
|
+
return [];
|
|
213
|
+
return reportDirs(p).map((d) => resolve(ACTIVE.root, d));
|
|
192
214
|
}
|
|
193
215
|
//# sourceMappingURL=forge_profile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forge_profile.js","sourceRoot":"","sources":["../../src/core/forge_profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"forge_profile.js","sourceRoot":"","sources":["../../src/core/forge_profile.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Yujin Forge CLI version. Kept in sync with package.json by the npm
|
|
3
3
|
* "version" lifecycle (scripts/sync_version.mjs) so the two never drift.
|
|
4
4
|
*/
|
|
5
|
-
export declare const VERSION = "1.0.
|
|
5
|
+
export declare const VERSION = "1.0.71";
|
|
6
6
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nac3/forge-cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.71",
|
|
4
4
|
"description": "Yujin Forge -- voice-first NAC-3 React development framework. CLI + chat panel + spec ingest + 10-format document reader + voice loop.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": "Pablo Kuschnirof <pablo@rpaforce.com>",
|