@nac3/forge-cli 1.0.68 → 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 +44 -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/relay/board_snapshot.d.ts.map +1 -1
- package/dist/relay/board_snapshot.js +46 -27
- package/dist/relay/board_snapshot.js.map +1 -1
- package/dist/relay/relay_publisher.d.ts.map +1 -1
- package/dist/relay/relay_publisher.js +20 -2
- package/dist/relay/relay_publisher.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":"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,6DAA6D;cAC7D,yDAAyD;cACzD,gEAAgE;cAChE,4DAA4D;cAC5D,mCAAmC;KACxC;IACD;QACE,KAAK,EAAE,CAAC,gBAAgB,CAAC;QACzB,IAAI,EACF,gEAAgE;cAC9D,0DAA0D;cAC1D,4CAA4C;KACjD;IACD;QACE,KAAK,EAAE,CAAC,YAAY,CAAC;QACrB,IAAI,EAAE,2FAA2F;KAClG;IACD;QACE,KAAK,EAAE,CAAC,eAAe,CAAC;QACxB,IAAI,EAAE,2IAA2I;KAClJ;IACD;QACE,KAAK,EAAE,CAAC,OAAO,CAAC;QAChB,IAAI,EAAE,qFAAqF;KAC5F;IACD;QACE,KAAK,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC;QACtC,IAAI,EAAE,2IAA2I;KAClJ;IACD;QACE,KAAK,EAAE,CAAC,gBAAgB,CAAC;QACzB,IAAI,EAAE,0aAA0a;KACjb;IACD;QACE,KAAK,EAAE,CAAC,OAAO,CAAC;QAChB,IAAI,EAAE,iGAAiG;KACxG;IACD;QACE,KAAK,EAAE,CAAC,iBAAiB,CAAC;QAC1B,IAAI,EAAE,qFAAqF;KAC5F;IACD;QACE,KAAK,EAAE,CAAC,iBAAiB,CAAC;QAC1B,IAAI,EAAE,4GAA4G;KACnH;IACD;QACE,KAAK,EAAE,CAAC,sBAAsB,CAAC;QAC/B,IAAI,EAAE,kJAAkJ;KACzJ;IACD;QACE,KAAK,EAAE,CAAC,uBAAuB,CAAC;QAChC,IAAI,EAAE,mFAAmF;KAC1F;IACD;QACE,KAAK,EAAE,CAAC,mBAAmB,CAAC;QAC5B,IAAI,EACF,oEAAoE;cAClE,qEAAqE;cACrE,oEAAoE;cACpE,wEAAwE;cACxE,uEAAuE;cACvE,uEAAuE;cACvE,wEAAwE;cACxE,qEAAqE;cACrE,gBAAgB;KACrB;IACD;QACE,KAAK,EAAE,CAAC,kBAAkB,CAAC;QAC3B,IAAI,EAAE,+LAA+L;KACtM;IACD;QACE,KAAK,EAAE,CAAC,UAAU,CAAC;QACnB,IAAI,EAAE,gkCAAgkC;KACvkC;IACD;QACE,KAAK,EAAE,CAAC,UAAU,CAAC;QACnB,IAAI,EAAE,iFAAiF;KACxF;IACD;QACE,KAAK,EAAE,CAAC,uBAAuB,CAAC;QAChC,IAAI,EAAE,+UAA+U;KACtV;IACD;QACE,KAAK,EAAE,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;QACpD,IAAI,EAAE,wHAAwH;KAC/H;IACD;QACE,KAAK,EAAE,CAAC,cAAc,CAAC;QACvB,IAAI,EAAE,sXAAsX;KAC7X;IACD;QACE,KAAK,EAAE,CAAC,sBAAsB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,EAAE,kBAAkB,CAAC;QAC3G,IAAI,EAAE,gLAAgL;KACvL;CACF,CAAC;AAEF,6DAA6D;AAC7D,MAAM,UAAU,WAAW;IACzB,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACjD,CAAC;AAQD;uEACuE;AACvE,MAAM,UAAU,wBAAwB,CAAC,OAA8B,EAAE;IACvE,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3C,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAa;QACtB,mEAAmE;QACnE,2DAA2D;QAC3D,mEAAmE;QACnE,EAAE;QACF,gEAAgE;QAChE,6DAA6D;QAC7D,EAAE;KACH,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -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":"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"}
|
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. */
|
|
@@ -867,6 +875,31 @@ function publishBoardSnapshot() {
|
|
|
867
875
|
snap.activeProject = reg.active_slug || cx.slug || null;
|
|
868
876
|
}
|
|
869
877
|
catch { /* leave unset */ }
|
|
878
|
+
/* Relay budget (bug 2026-07-10): the worker rejects events over 32KB
|
|
879
|
+
* and one oversized event kills the whole append batch. _recentDocs
|
|
880
|
+
* holds up to 12 x 40KB of doc content -- trim the DOCS (shorter
|
|
881
|
+
* content, then fewer docs) until the board fits. The project list /
|
|
882
|
+
* workflow / pendings always survive; the docs are the ballast. */
|
|
883
|
+
{
|
|
884
|
+
const BOARD_BUDGET = 30 * 1024;
|
|
885
|
+
const bytesOf = (o) => Buffer.byteLength(JSON.stringify(o), 'utf8');
|
|
886
|
+
let contentCap = 4000;
|
|
887
|
+
let docs = snap.docs || [];
|
|
888
|
+
for (let i = 0; i < 8 && bytesOf(snap) > BOARD_BUDGET; i++) {
|
|
889
|
+
docs = docs.map((d) => ({ ...d, content: String(d.content || '').slice(0, contentCap) }));
|
|
890
|
+
snap.docs = docs;
|
|
891
|
+
if (bytesOf(snap) <= BOARD_BUDGET)
|
|
892
|
+
break;
|
|
893
|
+
if (contentCap > 500) {
|
|
894
|
+
contentCap = Math.floor(contentCap / 2);
|
|
895
|
+
continue;
|
|
896
|
+
}
|
|
897
|
+
docs = docs.slice(0, Math.max(0, docs.length - 2)); /* drop oldest-last pairs */
|
|
898
|
+
snap.docs = docs;
|
|
899
|
+
}
|
|
900
|
+
if (bytesOf(snap) > BOARD_BUDGET)
|
|
901
|
+
snap.docs = [];
|
|
902
|
+
}
|
|
870
903
|
pub.board(snap);
|
|
871
904
|
/* PND-094 ext -- publish the semantic graph as its OWN event so it
|
|
872
905
|
* is not capped by the board's 32KB budget. */
|
|
@@ -3660,6 +3693,16 @@ async function handlePanelInvoke(req, res, ctx) {
|
|
|
3660
3693
|
dispatchArgs.kind = decision.kind;
|
|
3661
3694
|
dispatchArgs.content = decision.content;
|
|
3662
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;
|
|
3663
3706
|
}
|
|
3664
3707
|
const { enqueuePanelDispatch } = await import('./panel_queue.js');
|
|
3665
3708
|
const seq = enqueuePanelDispatch(shortVerb, payload ? { ...dispatchArgs, server_payload: payload } : dispatchArgs, new Date().toISOString());
|
|
@@ -5277,7 +5320,7 @@ async function handleChat(req, res, ctx) {
|
|
|
5277
5320
|
ctx.chatProvider === 'claude-code-cli'
|
|
5278
5321
|
? (ctx.panelPushToken ? 'mcp-bridge' : 'none')
|
|
5279
5322
|
: 'native', projectIdentity, multiagentEnabled),
|
|
5280
|
-
systemDynamic: recentSessionsRecap + projectContextSection + snapshotSection + graphSection + wiringSection + toolingSection + workflowSection + approvalPostureSection,
|
|
5323
|
+
systemDynamic: recentSessionsRecap + projectContextSection + snapshotSection + graphSection + wiringSection + toolingSection + workflowSection + approvalPostureSection + toolStatusSection(),
|
|
5281
5324
|
maxTokens: _maxTokensPerTurn,
|
|
5282
5325
|
/* Plan/CLI uses Claude Code's native tools (FORGE_TOOL_SPECS = just
|
|
5283
5326
|
* nac3_invoke via the MCP bridge); the HTTP path (BYOK/Console + managed)
|