@nac3/forge-cli 1.0.69 → 1.0.70
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/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctrine_digest.d.ts","sourceRoot":"","sources":["../../src/chat/doctrine_digest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,eAAe,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"doctrine_digest.d.ts","sourceRoot":"","sources":["../../src/chat/doctrine_digest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,eAAe,EAAE,mBAAmB,EAsGhD,CAAC;AAEF,6DAA6D;AAC7D,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAEtC;AAED,MAAM,WAAW,qBAAqB;IACpC;4EACwE;IACxE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;uEACuE;AACvE,wBAAgB,wBAAwB,CAAC,IAAI,GAAE,qBAA0B,GAAG,MAAM,EAAE,CAiBnF"}
|
|
@@ -23,7 +23,11 @@ export const DOCTRINE_DIGEST = [
|
|
|
23
23
|
+ 'regression before claiming it guards; cover EVERY row of a '
|
|
24
24
|
+ 'data/config table, not a sample; claims proportional to what '
|
|
25
25
|
+ 'the code enforces; when reporting, separate VERIFIED '
|
|
26
|
-
+ '(ran/read/reproduced) from BELIEVED (assumed).'
|
|
26
|
+
+ '(ran/read/reproduced) from BELIEVED (assumed). ENVIRONMENT '
|
|
27
|
+
+ 'claims too: NEVER say a tool (gh, docker, a remote) is '
|
|
28
|
+
+ '"not connected/not available in this environment" from memory '
|
|
29
|
+
+ '-- read the TOOL STATUS section (live-probed) or probe it '
|
|
30
|
+
+ 'yourself in-turn before claiming.',
|
|
27
31
|
},
|
|
28
32
|
{
|
|
29
33
|
slugs: ['testing-policy'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctrine_digest.js","sourceRoot":"","sources":["../../src/chat/doctrine_digest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AASH,MAAM,CAAC,MAAM,eAAe,GAA0B;IACpD;QACE,KAAK,EAAE,CAAC,sBAAsB,CAAC;QAC/B,IAAI,EACF,8DAA8D;cAC5D,6DAA6D;cAC7D,+DAA+D;cAC/D,uDAAuD;cACvD,
|
|
1
|
+
{"version":3,"file":"doctrine_digest.js","sourceRoot":"","sources":["../../src/chat/doctrine_digest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* html_doc_kind -- server-side enforcement: a GENERATED report that is a
|
|
3
|
+
* full HTML document must render as a document (kind=html, sandboxed
|
|
4
|
+
* iframe), never as source code (Pablo 2026-07-10: "ocasionalmente lo abre
|
|
5
|
+
* en kind=CODE y eso lo hace ilegible en el pizarron").
|
|
6
|
+
*
|
|
7
|
+
* Mirror of the flow->BPMN rule: the doctrine already says documents render
|
|
8
|
+
* as HTML, some brains ignore it; enforcement beats prompt. Deliberately
|
|
9
|
+
* narrow so user-requested formats survive:
|
|
10
|
+
* - only kind=code (the broken combo) is promoted;
|
|
11
|
+
* - only when the content IS a full HTML document (<!DOCTYPE html> or
|
|
12
|
+
* <html...> at the top) -- snippets stay code;
|
|
13
|
+
* - never when a file_path is present (an opened project file is a code
|
|
14
|
+
* EDITOR tab, promoting it would break editing);
|
|
15
|
+
* - md/markdown/table/etc. are untouched (the user may have asked for
|
|
16
|
+
* those explicitly).
|
|
17
|
+
*
|
|
18
|
+
* ASCII-only.
|
|
19
|
+
*/
|
|
20
|
+
/** Is this content a complete HTML document (not a snippet)? */
|
|
21
|
+
export declare function isFullHtmlDocument(content: string): boolean;
|
|
22
|
+
export interface DocKindInput {
|
|
23
|
+
kind: string;
|
|
24
|
+
content: string;
|
|
25
|
+
file_path?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface DocKindResult {
|
|
28
|
+
kind: string;
|
|
29
|
+
promoted: boolean;
|
|
30
|
+
}
|
|
31
|
+
/** Promote a generated full-HTML-document report from kind=code to
|
|
32
|
+
* kind=html. Pass-through for everything else. Never throws. */
|
|
33
|
+
export declare function maybePromoteHtmlDoc(input: DocKindInput): DocKindResult;
|
|
34
|
+
//# sourceMappingURL=html_doc_kind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html_doc_kind.d.ts","sourceRoot":"","sources":["../../src/chat/html_doc_kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,gEAAgE;AAChE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;iEACiE;AACjE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CAMtE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* html_doc_kind -- server-side enforcement: a GENERATED report that is a
|
|
3
|
+
* full HTML document must render as a document (kind=html, sandboxed
|
|
4
|
+
* iframe), never as source code (Pablo 2026-07-10: "ocasionalmente lo abre
|
|
5
|
+
* en kind=CODE y eso lo hace ilegible en el pizarron").
|
|
6
|
+
*
|
|
7
|
+
* Mirror of the flow->BPMN rule: the doctrine already says documents render
|
|
8
|
+
* as HTML, some brains ignore it; enforcement beats prompt. Deliberately
|
|
9
|
+
* narrow so user-requested formats survive:
|
|
10
|
+
* - only kind=code (the broken combo) is promoted;
|
|
11
|
+
* - only when the content IS a full HTML document (<!DOCTYPE html> or
|
|
12
|
+
* <html...> at the top) -- snippets stay code;
|
|
13
|
+
* - never when a file_path is present (an opened project file is a code
|
|
14
|
+
* EDITOR tab, promoting it would break editing);
|
|
15
|
+
* - md/markdown/table/etc. are untouched (the user may have asked for
|
|
16
|
+
* those explicitly).
|
|
17
|
+
*
|
|
18
|
+
* ASCII-only.
|
|
19
|
+
*/
|
|
20
|
+
const FULL_HTML_DOC_RE = /^\s*(?:<!doctype\s+html[\s>]|<html[\s>])/i;
|
|
21
|
+
/** Is this content a complete HTML document (not a snippet)? */
|
|
22
|
+
export function isFullHtmlDocument(content) {
|
|
23
|
+
return FULL_HTML_DOC_RE.test(String(content || '').slice(0, 400));
|
|
24
|
+
}
|
|
25
|
+
/** Promote a generated full-HTML-document report from kind=code to
|
|
26
|
+
* kind=html. Pass-through for everything else. Never throws. */
|
|
27
|
+
export function maybePromoteHtmlDoc(input) {
|
|
28
|
+
const kind = String(input.kind || '').trim().toLowerCase();
|
|
29
|
+
if (kind !== 'code')
|
|
30
|
+
return { kind: input.kind, promoted: false };
|
|
31
|
+
if (input.file_path)
|
|
32
|
+
return { kind: input.kind, promoted: false };
|
|
33
|
+
if (!isFullHtmlDocument(input.content))
|
|
34
|
+
return { kind: input.kind, promoted: false };
|
|
35
|
+
return { kind: 'html', promoted: true };
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=html_doc_kind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html_doc_kind.js","sourceRoot":"","sources":["../../src/chat/html_doc_kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,gBAAgB,GAAG,2CAA2C,CAAC;AAErE,gEAAgE;AAChE,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACpE,CAAC;AAaD;iEACiE;AACjE,MAAM,UAAU,mBAAmB,CAAC,KAAmB;IACrD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3D,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClE,IAAI,KAAK,CAAC,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACrF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC1C,CAAC"}
|
|
@@ -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;
|
|
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;AAiB1H,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,CAochF;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;AAkgKD,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,GAAG,EACR,IAAI,GAAE,SAAuB,EAC7B,UAAU,GAAE;IAAE,eAAe,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAErF;AACD;;;qDAGqD;AACrD,KAAK,CAAC,EAAE;IAAE,IAAI,EAAE,KAAK,GAAG,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACrE;;;;;2CAK2C;AAC3C,sBAAsB,GAAE,MAAW;AACnC;;;;;;;4DAO4D;AAC5D,YAAY,GAAE,OAAe;AAC7B;;;;;;;uDAOuD;AACvD,mBAAmB,GAAE,MAAW;AAChC;;;;kEAIkE;AAClE,gBAAgB,GAAE,MAAW;AAC7B;;;;;;;;;;;+BAW+B;AAC/B,SAAS,GAAE,QAAQ,GAAG,YAAY,GAAG,MAAiB;AACtD;;;;;mEAKmE;AACnE,eAAe,CAAC,EAAE,eAAe;AACjC;;;yEAGyE;AACzE,iBAAiB,GAAE,OAAe,GACjC,MAAM,CAiiBR;AAED;;;;2EAI2E;AAC3E,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,CAoB5F"}
|
package/dist/chat/server.js
CHANGED
|
@@ -43,6 +43,7 @@ import { readProjectIdentityCached, formatProjectIdentityLines } from '../core/p
|
|
|
43
43
|
import { buildDoctrineDigestLines } from './doctrine_digest.js';
|
|
44
44
|
import { profilePromptLines, initProfile } from '../core/forge_profile.js';
|
|
45
45
|
import { isAllowedSlot, listAllowedSlots } from '../core/provider_keys.js';
|
|
46
|
+
import { toolStatusSection, startToolStatusRefresh } from './tool_status.js';
|
|
46
47
|
import { RelayPublisher } from '../relay/relay_publisher.js';
|
|
47
48
|
import { isMobilePaired, relayGate } from '../core/mobile_pairing_state.js';
|
|
48
49
|
import { relayPoll } from '../relay/relay_client.js';
|
|
@@ -102,6 +103,13 @@ export async function startChatServer(opts) {
|
|
|
102
103
|
catch { /* noop */ }
|
|
103
104
|
}
|
|
104
105
|
}
|
|
106
|
+
/* TOOL STATUS (Pablo 2026-07-10): probe gh/git/node/npm/docker at boot +
|
|
107
|
+
* every 10 min, injected into the prompt so the brain never claims from
|
|
108
|
+
* memory that a connected tool "is not connected". */
|
|
109
|
+
try {
|
|
110
|
+
startToolStatusRefresh();
|
|
111
|
+
}
|
|
112
|
+
catch { /* best-effort */ }
|
|
105
113
|
/* alpha.59u.2 -- distinct slug (machine id) vs projectName (display).
|
|
106
114
|
* Identity queries against the semantic graph use the slug so
|
|
107
115
|
* CLI + panel converge. */
|
|
@@ -3685,6 +3693,16 @@ async function handlePanelInvoke(req, res, ctx) {
|
|
|
3685
3693
|
dispatchArgs.kind = decision.kind;
|
|
3686
3694
|
dispatchArgs.content = decision.content;
|
|
3687
3695
|
}
|
|
3696
|
+
/* Generated full-HTML reports must render as documents, not as source
|
|
3697
|
+
* code (unreadable in the pizarron) -- Pablo 2026-07-10. */
|
|
3698
|
+
const { maybePromoteHtmlDoc } = await import('./html_doc_kind.js');
|
|
3699
|
+
const docFix = maybePromoteHtmlDoc({
|
|
3700
|
+
kind: String(dispatchArgs.kind || ''),
|
|
3701
|
+
content: String(dispatchArgs.content || ''),
|
|
3702
|
+
file_path: String(dispatchArgs.file_path || '') || undefined,
|
|
3703
|
+
});
|
|
3704
|
+
if (docFix.promoted)
|
|
3705
|
+
dispatchArgs.kind = docFix.kind;
|
|
3688
3706
|
}
|
|
3689
3707
|
const { enqueuePanelDispatch } = await import('./panel_queue.js');
|
|
3690
3708
|
const seq = enqueuePanelDispatch(shortVerb, payload ? { ...dispatchArgs, server_payload: payload } : dispatchArgs, new Date().toISOString());
|
|
@@ -5302,7 +5320,7 @@ async function handleChat(req, res, ctx) {
|
|
|
5302
5320
|
ctx.chatProvider === 'claude-code-cli'
|
|
5303
5321
|
? (ctx.panelPushToken ? 'mcp-bridge' : 'none')
|
|
5304
5322
|
: 'native', projectIdentity, multiagentEnabled),
|
|
5305
|
-
systemDynamic: recentSessionsRecap + projectContextSection + snapshotSection + graphSection + wiringSection + toolingSection + workflowSection + approvalPostureSection,
|
|
5323
|
+
systemDynamic: recentSessionsRecap + projectContextSection + snapshotSection + graphSection + wiringSection + toolingSection + workflowSection + approvalPostureSection + toolStatusSection(),
|
|
5306
5324
|
maxTokens: _maxTokensPerTurn,
|
|
5307
5325
|
/* Plan/CLI uses Claude Code's native tools (FORGE_TOOL_SPECS = just
|
|
5308
5326
|
* nac3_invoke via the MCP bridge); the HTTP path (BYOK/Console + managed)
|