@glbgpt/cli 0.2.2 → 0.2.4
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 +62 -3
- package/dist/src/coding/bashTool.js +27 -11
- package/dist/src/coding/bashTool.js.map +1 -1
- package/dist/src/coding/deliveryCheck.d.ts +7 -0
- package/dist/src/coding/deliveryCheck.js +143 -0
- package/dist/src/coding/deliveryCheck.js.map +1 -0
- package/dist/src/coding/permissionGate.d.ts +6 -0
- package/dist/src/coding/permissionGate.js +8 -2
- package/dist/src/coding/permissionGate.js.map +1 -1
- package/dist/src/coding/projectContext.js +11 -1
- package/dist/src/coding/projectContext.js.map +1 -1
- package/dist/src/commands/configCommand.js +20 -1
- package/dist/src/commands/configCommand.js.map +1 -1
- package/dist/src/commands/execCommand.js +18 -1
- package/dist/src/commands/execCommand.js.map +1 -1
- package/dist/src/config/configFile.d.ts +8 -0
- package/dist/src/config/configFile.js +8 -0
- package/dist/src/config/configFile.js.map +1 -1
- package/dist/src/core/compaction.d.ts +6 -1
- package/dist/src/core/compaction.js +23 -5
- package/dist/src/core/compaction.js.map +1 -1
- package/dist/src/core/contextPrune.d.ts +18 -6
- package/dist/src/core/contextPrune.js +108 -20
- package/dist/src/core/contextPrune.js.map +1 -1
- package/dist/src/core/httpChatBackend.js +72 -20
- package/dist/src/core/httpChatBackend.js.map +1 -1
- package/dist/src/core/progressGuard.d.ts +16 -0
- package/dist/src/core/progressGuard.js +197 -0
- package/dist/src/core/progressGuard.js.map +1 -0
- package/dist/src/core/runChat.d.ts +9 -1
- package/dist/src/core/runChat.js +31 -10
- package/dist/src/core/runChat.js.map +1 -1
- package/dist/src/core/tokenBudget.d.ts +45 -0
- package/dist/src/core/tokenBudget.js +111 -0
- package/dist/src/core/tokenBudget.js.map +1 -0
- package/dist/src/core/turnLimits.d.ts +5 -0
- package/dist/src/core/turnLimits.js +28 -0
- package/dist/src/core/turnLimits.js.map +1 -0
- package/dist/src/core/turnLoop.d.ts +8 -2
- package/dist/src/core/turnLoop.js +201 -89
- package/dist/src/core/turnLoop.js.map +1 -1
- package/dist/src/core/types.d.ts +24 -1
- package/dist/src/exec/output.d.ts +7 -1
- package/dist/src/exec/output.js +29 -13
- package/dist/src/exec/output.js.map +1 -1
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/tui/App.js +8 -5
- package/dist/src/tui/App.js.map +1 -1
- package/dist/src/tui/chatController.d.ts +15 -3
- package/dist/src/tui/chatController.js +108 -42
- package/dist/src/tui/chatController.js.map +1 -1
- package/dist/src/tui/run.js +1 -0
- package/dist/src/tui/run.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execCommand.js","sourceRoot":"","sources":["../../../src/commands/execCommand.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"execCommand.js","sourceRoot":"","sources":["../../../src/commands/execCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,14 @@ export declare const CONFIG_KEYS: {
|
|
|
27
27
|
readonly env: "GLBGPT_MAX_CREDITS";
|
|
28
28
|
readonly help: "Session credit budget for unattended media generation (mcp/exec); default 4000; 0 disables media generation";
|
|
29
29
|
};
|
|
30
|
+
readonly 'max-tool-calls': {
|
|
31
|
+
readonly env: "GLBGPT_MAX_TOOL_CALLS";
|
|
32
|
+
readonly help: "Maximum tool calls per chat turn (0–1000); default 40; 0 disables tool calls; not a credit limit";
|
|
33
|
+
};
|
|
34
|
+
readonly 'max-turn-tokens': {
|
|
35
|
+
readonly env: "GLBGPT_MAX_TURN_TOKENS";
|
|
36
|
+
readonly help: "Cumulative chat tokens per turn (1000–10000000); default 200000; pauses further requests; estimates missing usage; not a credit limit";
|
|
37
|
+
};
|
|
30
38
|
readonly 'update-check': {
|
|
31
39
|
readonly env: "GLBGPT_UPDATE_CHECK";
|
|
32
40
|
readonly help: "Set to \"false\" to disable the startup check for newer published versions";
|
|
@@ -22,6 +22,14 @@ export const CONFIG_KEYS = {
|
|
|
22
22
|
env: 'GLBGPT_MAX_CREDITS',
|
|
23
23
|
help: 'Session credit budget for unattended media generation (mcp/exec); default 4000; 0 disables media generation',
|
|
24
24
|
},
|
|
25
|
+
'max-tool-calls': {
|
|
26
|
+
env: 'GLBGPT_MAX_TOOL_CALLS',
|
|
27
|
+
help: 'Maximum tool calls per chat turn (0–1000); default 40; 0 disables tool calls; not a credit limit',
|
|
28
|
+
},
|
|
29
|
+
'max-turn-tokens': {
|
|
30
|
+
env: 'GLBGPT_MAX_TURN_TOKENS',
|
|
31
|
+
help: 'Cumulative chat tokens per turn (1000–10000000); default 200000; pauses further requests; estimates missing usage; not a credit limit',
|
|
32
|
+
},
|
|
25
33
|
'update-check': {
|
|
26
34
|
env: 'GLBGPT_UPDATE_CHECK',
|
|
27
35
|
help: 'Set to "false" to disable the startup check for newer published versions',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configFile.js","sourceRoot":"","sources":["../../../src/config/configFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC;;;;;;GAMG;AAEH,wEAAwE;AACxE,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,cAAc,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,4CAA4C,EAAE;IAC9F,cAAc,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,qCAAqC,EAAE;IACtF,IAAI,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,sCAAsC,EAAE;IAC1E,iBAAiB,EAAE;QACjB,GAAG,EAAE,wBAAwB;QAC7B,IAAI,EAAE,mFAAmF;KAC1F;IACD,aAAa,EAAE;QACb,GAAG,EAAE,oBAAoB;QACzB,IAAI,EAAE,6GAA6G;KACpH;IACD,cAAc,EAAE;QACd,GAAG,EAAE,qBAAqB;QAC1B,IAAI,EAAE,0EAA0E;KACjF;CACO,CAAC;AAIX,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,IAAI;IACX,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,CAAC;AAC/C,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QAC1D,MAAM,GAAG,GAAuC,EAAE,CAAC;QACnD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAgB,EAAE,CAAC;YAC1D,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAW,CAAC;QACxE,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,kBAAkB,CAAC,GAAc;IAC/C,OAAO,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAc,EAAE,KAAyB;IAC9E,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;;QACxC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC1B,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9E,CAAC"}
|
|
1
|
+
{"version":3,"file":"configFile.js","sourceRoot":"","sources":["../../../src/config/configFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC;;;;;;GAMG;AAEH,wEAAwE;AACxE,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,cAAc,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,4CAA4C,EAAE;IAC9F,cAAc,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,qCAAqC,EAAE;IACtF,IAAI,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,sCAAsC,EAAE;IAC1E,iBAAiB,EAAE;QACjB,GAAG,EAAE,wBAAwB;QAC7B,IAAI,EAAE,mFAAmF;KAC1F;IACD,aAAa,EAAE;QACb,GAAG,EAAE,oBAAoB;QACzB,IAAI,EAAE,6GAA6G;KACpH;IACD,gBAAgB,EAAE;QAChB,GAAG,EAAE,uBAAuB;QAC5B,IAAI,EAAE,kGAAkG;KACzG;IACD,iBAAiB,EAAE;QACjB,GAAG,EAAE,wBAAwB;QAC7B,IAAI,EAAE,uIAAuI;KAC9I;IACD,cAAc,EAAE;QACd,GAAG,EAAE,qBAAqB;QAC1B,IAAI,EAAE,0EAA0E;KACjF;CACO,CAAC;AAIX,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,IAAI;IACX,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,CAAC;AAC/C,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QAC1D,MAAM,GAAG,GAAuC,EAAE,CAAC;QACnD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAgB,EAAE,CAAC;YAC1D,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAW,CAAC;QACxE,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,kBAAkB,CAAC,GAAc;IAC/C,OAAO,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAc,EAAE,KAAyB;IAC9E,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;;QACxC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC1B,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { TurnTokenBudget } from './tokenBudget.js';
|
|
2
|
+
import type { EngineEvent } from './types.js';
|
|
1
3
|
import type { ChatBackend, ChatMessage } from './types.js';
|
|
2
4
|
/**
|
|
3
5
|
* Context compaction (spec lineage: pi B1 blueprint, 2026-08-08 调研; implemented
|
|
@@ -48,5 +50,8 @@ export declare function applyCompaction(messages: ChatMessage[], c: CompactionSt
|
|
|
48
50
|
* Summarize `toSummarize` (which already embeds any prior summary note via the
|
|
49
51
|
* projection) with a plain, tool-less model call. Returns the summary text.
|
|
50
52
|
*/
|
|
51
|
-
export declare function summarizeForCompaction(backend: ChatBackend, model: string, toSummarize: ChatMessage[], signal?: AbortSignal
|
|
53
|
+
export declare function summarizeForCompaction(backend: ChatBackend, model: string, toSummarize: ChatMessage[], signal?: AbortSignal, protection?: {
|
|
54
|
+
budget: TurnTokenBudget;
|
|
55
|
+
emit: (event: EngineEvent) => void;
|
|
56
|
+
}): Promise<string>;
|
|
52
57
|
export declare function isContextOverflowError(message: string): boolean;
|
|
@@ -107,7 +107,7 @@ const SUMMARIZE_SYSTEM = 'You summarize a conversation so it can continue seamle
|
|
|
107
107
|
* Summarize `toSummarize` (which already embeds any prior summary note via the
|
|
108
108
|
* projection) with a plain, tool-less model call. Returns the summary text.
|
|
109
109
|
*/
|
|
110
|
-
export async function summarizeForCompaction(backend, model, toSummarize, signal) {
|
|
110
|
+
export async function summarizeForCompaction(backend, model, toSummarize, signal, protection) {
|
|
111
111
|
const req = {
|
|
112
112
|
model,
|
|
113
113
|
messages: [
|
|
@@ -120,11 +120,29 @@ export async function summarizeForCompaction(backend, model, toSummarize, signal
|
|
|
120
120
|
],
|
|
121
121
|
stream: true,
|
|
122
122
|
};
|
|
123
|
+
if (protection && !protection.budget.preflight(req).allowed) {
|
|
124
|
+
throw new Error('Compaction skipped: the summary request exceeds the remaining turn token budget.');
|
|
125
|
+
}
|
|
123
126
|
let text = '';
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
127
|
+
let usage;
|
|
128
|
+
try {
|
|
129
|
+
for await (const chunk of backend.stream(req, signal)) {
|
|
130
|
+
if (chunk.usage)
|
|
131
|
+
usage = chunk.usage;
|
|
132
|
+
const t = chunk.choices?.[0]?.delta?.content;
|
|
133
|
+
if (typeof t === 'string')
|
|
134
|
+
text += t;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
finally {
|
|
138
|
+
if (protection) {
|
|
139
|
+
const snapshot = protection.budget.recordCall(req, { content: text }, usage);
|
|
140
|
+
if (usage)
|
|
141
|
+
protection.emit({ type: 'usage', promptTokens: usage.prompt_tokens ?? 0, completionTokens: usage.completion_tokens ?? 0 });
|
|
142
|
+
protection.emit({ type: 'token_budget', ...snapshot });
|
|
143
|
+
if (protection.budget.takeWarning())
|
|
144
|
+
protection.emit({ type: 'notice', message: "Context compaction has used at least 80% of this turn's token budget. Further requests will be checked against the remaining budget." });
|
|
145
|
+
}
|
|
128
146
|
}
|
|
129
147
|
const trimmed = text.trim();
|
|
130
148
|
if (trimmed.length === 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../../src/core/compaction.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../../src/core/compaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
import type { ChatMessage } from './types.js';
|
|
2
|
+
import type { Session } from './session.js';
|
|
2
3
|
/**
|
|
3
|
-
* The ids to clear at this trigger:
|
|
4
|
-
*
|
|
4
|
+
* The ids to clear at this trigger: old eligible results except the most recent
|
|
5
|
+
* PRUNE_KEEP_RECENT and ALL results in the latest batch. A parallel batch can exceed
|
|
6
|
+
* the keep count and must reach the model once before any of its results are cleared.
|
|
5
7
|
*/
|
|
6
|
-
export declare function selectPrunable(messages: ChatMessage[], alreadyPruned: ReadonlySet<string>): string[];
|
|
8
|
+
export declare function selectPrunable(messages: ChatMessage[], alreadyPruned: ReadonlySet<string>, protectedIds?: ReadonlySet<string>): string[];
|
|
7
9
|
/**
|
|
8
|
-
* The request-time projection:
|
|
9
|
-
*
|
|
10
|
-
*
|
|
10
|
+
* The request-time projection: replace old read results or shorten old command output.
|
|
11
|
+
* Assistant calls and their arguments stay intact, along with mutation confirmations.
|
|
12
|
+
* Returns the input
|
|
11
13
|
* array unchanged when the set is empty (zero-cost fast path).
|
|
12
14
|
*/
|
|
13
15
|
export declare function applyPruning(messages: ChatMessage[], prunedIds: ReadonlySet<string>): ChatMessage[];
|
|
16
|
+
/**
|
|
17
|
+
* Apply the shared pruning policy before a model request, including tool rounds within
|
|
18
|
+
* one user turn. Real prompt usage catches tokenizer/schema overhead; the current
|
|
19
|
+
* projection estimate also catches new tool output and providers that omit usage.
|
|
20
|
+
* The full transcript stays intact for persistence and recovery.
|
|
21
|
+
*/
|
|
22
|
+
export declare function pruneSessionContext(session: Session, lastPromptTokens?: number): {
|
|
23
|
+
ids: string[];
|
|
24
|
+
clearedBytes: number;
|
|
25
|
+
} | null;
|
|
@@ -1,26 +1,48 @@
|
|
|
1
1
|
import { FS_TOOL_NAMES } from '../fs/index.js';
|
|
2
2
|
import { CODING_TOOL_NAMES } from '../coding/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import { cutToBytesFromEnd } from '../coding/truncate.js';
|
|
4
|
+
import { PRUNE_KEEP_RECENT, PRUNE_MIN_CONTENT_BYTES, PRUNE_PLACEHOLDER, PRUNE_TRIGGER_TOKENS } from '../fs/limits.js';
|
|
5
|
+
import { estimateMessageTokens } from './compaction.js';
|
|
6
|
+
import { getConfigValueSync } from '../config/configFile.js';
|
|
4
7
|
/**
|
|
5
8
|
* Microcompact selection and projection (spec: 2026-07-19-context-pruning-design.md).
|
|
6
9
|
*
|
|
7
|
-
*
|
|
10
|
+
* Selection and projection are pure. Selection runs only at trigger events (context over
|
|
8
11
|
* threshold); the returned ids join the session's persisted decision set, which
|
|
9
12
|
* only ever grows — so between triggers the projection is byte-stable and the
|
|
10
13
|
* upstream prompt cache keeps hitting.
|
|
11
14
|
*/
|
|
12
15
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
16
|
+
* Read results can be fetched again at no cost. Commands need a different projection:
|
|
17
|
+
* retain their outcome and output tail without suggesting a repeat of side effects.
|
|
18
|
+
* web_search stays intact because repeating it bills again.
|
|
15
19
|
*/
|
|
16
|
-
// Coding tool results are prunable too: bash output goes stale quickly, and edit/write
|
|
17
|
-
// results are one-line confirmations whose loss costs nothing.
|
|
18
20
|
const PRUNABLE_TOOL_NAMES = new Set([
|
|
19
21
|
...FS_TOOL_NAMES,
|
|
20
|
-
|
|
22
|
+
'bash',
|
|
23
|
+
'bash_output',
|
|
21
24
|
'web_fetch',
|
|
22
25
|
]);
|
|
23
|
-
|
|
26
|
+
const COMMAND_OUTPUT_TAIL_BYTES = 1024;
|
|
27
|
+
const COMMAND_PRUNE_NOTICE = 'This tool already ran. Earlier output was omitted to save context; the output tail is retained. ' +
|
|
28
|
+
'Do not repeat commands to recover omitted output. Read the saved output file if one is shown.';
|
|
29
|
+
/** Preserve metadata and the terminal status/log-file footnote at the end of command output. */
|
|
30
|
+
function compactCommandResult(result) {
|
|
31
|
+
if ('error' in result || 'task_id' in result)
|
|
32
|
+
return null;
|
|
33
|
+
const projected = { ...result };
|
|
34
|
+
let changed = false;
|
|
35
|
+
for (const key of ['output', 'stdout', 'stderr']) {
|
|
36
|
+
const value = result[key];
|
|
37
|
+
if (typeof value === 'string' &&
|
|
38
|
+
Buffer.byteLength(value, 'utf8') > COMMAND_OUTPUT_TAIL_BYTES + PRUNE_MIN_CONTENT_BYTES) {
|
|
39
|
+
projected[key] = `[Earlier output omitted]\n${cutToBytesFromEnd(value, COMMAND_OUTPUT_TAIL_BYTES)}`;
|
|
40
|
+
changed = true;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return changed ? JSON.stringify({ ...projected, context_pruning_notice: COMMAND_PRUNE_NOTICE }) : null;
|
|
44
|
+
}
|
|
45
|
+
/** True for a tool result whose output can shrink without losing execution/task anchors. */
|
|
24
46
|
function isPrunable(m) {
|
|
25
47
|
if (m.role !== 'tool' || typeof m.content !== 'string' || !m.tool_call_id)
|
|
26
48
|
return false;
|
|
@@ -30,10 +52,14 @@ function isPrunable(m) {
|
|
|
30
52
|
return false;
|
|
31
53
|
try {
|
|
32
54
|
const parsed = JSON.parse(m.content);
|
|
33
|
-
if (typeof parsed !== 'object' || parsed === null)
|
|
55
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed))
|
|
34
56
|
return false;
|
|
35
|
-
if ('error' in parsed)
|
|
57
|
+
if ('error' in parsed || 'task_id' in parsed)
|
|
36
58
|
return false;
|
|
59
|
+
if (m.name === 'bash' || m.name === 'bash_output') {
|
|
60
|
+
const compacted = compactCommandResult(parsed);
|
|
61
|
+
return compacted !== null && Buffer.byteLength(compacted, 'utf8') < Buffer.byteLength(m.content, 'utf8');
|
|
62
|
+
}
|
|
37
63
|
}
|
|
38
64
|
catch {
|
|
39
65
|
return false; // unparseable content: leave it alone
|
|
@@ -41,10 +67,11 @@ function isPrunable(m) {
|
|
|
41
67
|
return true;
|
|
42
68
|
}
|
|
43
69
|
/**
|
|
44
|
-
* The ids to clear at this trigger:
|
|
45
|
-
*
|
|
70
|
+
* The ids to clear at this trigger: old eligible results except the most recent
|
|
71
|
+
* PRUNE_KEEP_RECENT and ALL results in the latest batch. A parallel batch can exceed
|
|
72
|
+
* the keep count and must reach the model once before any of its results are cleared.
|
|
46
73
|
*/
|
|
47
|
-
export function selectPrunable(messages, alreadyPruned) {
|
|
74
|
+
export function selectPrunable(messages, alreadyPruned, protectedIds = latestToolBatchIds(messages)) {
|
|
48
75
|
const candidates = [];
|
|
49
76
|
for (const m of messages) {
|
|
50
77
|
// Cheap O(1) set check FIRST: already-pruned messages keep their full raw
|
|
@@ -55,19 +82,80 @@ export function selectPrunable(messages, alreadyPruned) {
|
|
|
55
82
|
if (isPrunable(m))
|
|
56
83
|
candidates.push(m.tool_call_id);
|
|
57
84
|
}
|
|
58
|
-
return candidates
|
|
85
|
+
return candidates
|
|
86
|
+
.slice(0, Math.max(0, candidates.length - PRUNE_KEEP_RECENT))
|
|
87
|
+
.filter((id) => !protectedIds.has(id));
|
|
88
|
+
}
|
|
89
|
+
function latestToolBatchIds(messages) {
|
|
90
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
91
|
+
const message = messages[i];
|
|
92
|
+
if (message.role === 'assistant' && message.tool_calls?.length) {
|
|
93
|
+
return new Set(message.tool_calls.map((call) => call.id));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return new Set();
|
|
59
97
|
}
|
|
60
98
|
/**
|
|
61
|
-
* The request-time projection:
|
|
62
|
-
*
|
|
63
|
-
*
|
|
99
|
+
* The request-time projection: replace old read results or shorten old command output.
|
|
100
|
+
* Assistant calls and their arguments stay intact, along with mutation confirmations.
|
|
101
|
+
* Returns the input
|
|
64
102
|
* array unchanged when the set is empty (zero-cost fast path).
|
|
65
103
|
*/
|
|
66
104
|
export function applyPruning(messages, prunedIds) {
|
|
67
105
|
if (prunedIds.size === 0)
|
|
68
106
|
return messages;
|
|
69
|
-
return messages.map((m) =>
|
|
70
|
-
|
|
71
|
-
|
|
107
|
+
return messages.map((m) => {
|
|
108
|
+
if (m.role !== 'tool' || !m.tool_call_id || !prunedIds.has(m.tool_call_id))
|
|
109
|
+
return m;
|
|
110
|
+
if (m.name && CODING_TOOL_NAMES.has(m.name)) {
|
|
111
|
+
// Old snapshots may include write/edit/kill or background-start IDs. Restore their
|
|
112
|
+
// confirmations verbatim instead of applying the former generic re-run placeholder.
|
|
113
|
+
if (m.name !== 'bash' && m.name !== 'bash_output')
|
|
114
|
+
return m;
|
|
115
|
+
if (typeof m.content !== 'string')
|
|
116
|
+
return m;
|
|
117
|
+
try {
|
|
118
|
+
const parsed = JSON.parse(m.content);
|
|
119
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed))
|
|
120
|
+
return m;
|
|
121
|
+
const content = compactCommandResult(parsed);
|
|
122
|
+
return content ? { ...m, content } : m;
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return m;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return { ...m, content: PRUNE_PLACEHOLDER };
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Apply the shared pruning policy before a model request, including tool rounds within
|
|
133
|
+
* one user turn. Real prompt usage catches tokenizer/schema overhead; the current
|
|
134
|
+
* projection estimate also catches new tool output and providers that omit usage.
|
|
135
|
+
* The full transcript stays intact for persistence and recovery.
|
|
136
|
+
*/
|
|
137
|
+
export function pruneSessionContext(session, lastPromptTokens = 0) {
|
|
138
|
+
const messages = session.requestMessages();
|
|
139
|
+
if (lastPromptTokens <= PRUNE_TRIGGER_TOKENS &&
|
|
140
|
+
messages.reduce((sum, m) => sum + estimateMessageTokens(m), 0) <= PRUNE_TRIGGER_TOKENS) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
// Match config precedence: an explicit environment value overrides the stored value.
|
|
144
|
+
const enabled = process.env.GLBGPT_CONTEXT_PRUNING ?? getConfigValueSync('context-pruning');
|
|
145
|
+
if (enabled === 'false')
|
|
146
|
+
return null;
|
|
147
|
+
// Select from the projection so already summarized history cannot trigger a trim note.
|
|
148
|
+
const ids = selectPrunable(messages, session.prunedToolCallIds);
|
|
149
|
+
if (ids.length === 0)
|
|
150
|
+
return null;
|
|
151
|
+
const idSet = new Set(ids);
|
|
152
|
+
const projected = applyPruning(messages, idSet);
|
|
153
|
+
const clearedBytes = messages.reduce((sum, m, i) => sum +
|
|
154
|
+
(m.role === 'tool' && m.tool_call_id && idSet.has(m.tool_call_id) && typeof m.content === 'string'
|
|
155
|
+
? Math.max(0, Buffer.byteLength(m.content, 'utf8') - Buffer.byteLength(String(projected[i].content), 'utf8'))
|
|
156
|
+
: 0), 0);
|
|
157
|
+
for (const id of ids)
|
|
158
|
+
session.prunedToolCallIds.add(id);
|
|
159
|
+
return { ids, clearedBytes };
|
|
72
160
|
}
|
|
73
161
|
//# sourceMappingURL=contextPrune.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contextPrune.js","sourceRoot":"","sources":["../../../src/core/contextPrune.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"contextPrune.js","sourceRoot":"","sources":["../../../src/core/contextPrune.ts"],"names":[],"mappings":"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"}
|
|
@@ -95,14 +95,18 @@ export class HttpChatBackend {
|
|
|
95
95
|
// Business error path: the gateway returns HTTP 200 + a JSON body with a `code`
|
|
96
96
|
// (401 expired/invalid, 402 payment) — never trust the HTTP status.
|
|
97
97
|
const text = await res.text();
|
|
98
|
-
let
|
|
98
|
+
let parsed;
|
|
99
99
|
try {
|
|
100
|
-
|
|
100
|
+
parsed = JSON.parse(text);
|
|
101
101
|
}
|
|
102
102
|
catch {
|
|
103
103
|
/* non-JSON */
|
|
104
104
|
}
|
|
105
|
-
|
|
105
|
+
const body = asObject(parsed);
|
|
106
|
+
const usage = body && errorUsage(body);
|
|
107
|
+
if (usage)
|
|
108
|
+
yield usage;
|
|
109
|
+
throw payloadError(body) ?? businessError(undefined, nonEmptyString(body?.message) ?? (text || `status ${res.status}`));
|
|
106
110
|
}
|
|
107
111
|
if (!res.body) {
|
|
108
112
|
throw new Error('Chat response has no body');
|
|
@@ -115,14 +119,18 @@ export class HttpChatBackend {
|
|
|
115
119
|
while ((idx = buffer.indexOf('\n')) >= 0) {
|
|
116
120
|
const line = buffer.slice(0, idx).trim();
|
|
117
121
|
buffer = buffer.slice(idx + 1);
|
|
118
|
-
const
|
|
119
|
-
if (chunk)
|
|
120
|
-
yield chunk;
|
|
122
|
+
const parsed = parseSseLine(line);
|
|
123
|
+
if (parsed?.chunk)
|
|
124
|
+
yield parsed.chunk;
|
|
125
|
+
if (parsed?.error)
|
|
126
|
+
throw parsed.error;
|
|
121
127
|
}
|
|
122
128
|
}
|
|
123
129
|
const tail = parseSseLine(buffer.trim());
|
|
124
|
-
if (tail)
|
|
125
|
-
yield tail;
|
|
130
|
+
if (tail?.chunk)
|
|
131
|
+
yield tail.chunk;
|
|
132
|
+
if (tail?.error)
|
|
133
|
+
throw tail.error;
|
|
126
134
|
}
|
|
127
135
|
}
|
|
128
136
|
/** The `message` of a gateway 5xx JSON body, when it has one (never throws; empty on non-JSON/no body). */
|
|
@@ -131,8 +139,8 @@ async function upstreamBrief(res) {
|
|
|
131
139
|
const text = typeof res.text === 'function' ? await res.text() : '';
|
|
132
140
|
if (!text)
|
|
133
141
|
return '';
|
|
134
|
-
const body = JSON.parse(text);
|
|
135
|
-
return
|
|
142
|
+
const body = asObject(JSON.parse(text));
|
|
143
|
+
return nonEmptyString(body?.message) ?? providerErrorMessage(body?.error) ?? '';
|
|
136
144
|
}
|
|
137
145
|
catch {
|
|
138
146
|
return '';
|
|
@@ -160,11 +168,8 @@ function businessError(code, message, data) {
|
|
|
160
168
|
return new Error(`Chat request failed: ${message}`);
|
|
161
169
|
}
|
|
162
170
|
/**
|
|
163
|
-
* Parse one SSE line
|
|
164
|
-
*
|
|
165
|
-
* The gateway can also reject WITHIN the stream: an `event: error` frame whose data is
|
|
166
|
-
* `{code, message}` with no `choices` (e.g. a model outside the backend whitelist). Silently
|
|
167
|
-
* ignoring it would make the turn complete with no output at all, so it throws instead.
|
|
171
|
+
* Parse one SSE data line. Errors can accompany choices/usage; return their usage separately
|
|
172
|
+
* so the caller can emit it before throwing, without treating an error as normal completion.
|
|
168
173
|
*/
|
|
169
174
|
function parseSseLine(line) {
|
|
170
175
|
if (!line.startsWith('data:'))
|
|
@@ -179,11 +184,58 @@ function parseSseLine(line) {
|
|
|
179
184
|
catch {
|
|
180
185
|
return null;
|
|
181
186
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
187
|
+
const body = asObject(parsed);
|
|
188
|
+
if (!body)
|
|
189
|
+
return null;
|
|
190
|
+
const error = payloadError(body);
|
|
191
|
+
return error ? { chunk: errorUsage(body), error } : { chunk: body };
|
|
192
|
+
}
|
|
193
|
+
function payloadError(body) {
|
|
194
|
+
if (!body)
|
|
195
|
+
return undefined;
|
|
196
|
+
if (typeof body.code === 'number' &&
|
|
197
|
+
(body.code >= 400 || (body.choices === undefined && body.usage === undefined))) {
|
|
198
|
+
// Preserve the gateway's actionable login/payment/rate-limit messages.
|
|
199
|
+
return businessError(body.code, nonEmptyString(body.message) ?? `code ${body.code}`, asObject(body.data));
|
|
200
|
+
}
|
|
201
|
+
const failedResponse = body.type === 'response.failed';
|
|
202
|
+
const providerError = body.error ?? (failedResponse ? asObject(body.response)?.error : undefined);
|
|
203
|
+
if (asObject(providerError) || nonEmptyString(providerError) || failedResponse || body.type === 'error') {
|
|
204
|
+
// Provider codes describe an upstream failure, not the user's GlobalGPT login or balance.
|
|
205
|
+
return businessError(undefined, providerErrorMessage(providerError) ?? nonEmptyString(body.message) ??
|
|
206
|
+
'The model provider reported an error.');
|
|
186
207
|
}
|
|
187
|
-
return
|
|
208
|
+
return undefined;
|
|
209
|
+
}
|
|
210
|
+
function errorUsage(body) {
|
|
211
|
+
const usage = asObject(body.usage) ?? asObject(asObject(body.response)?.usage);
|
|
212
|
+
if (!usage)
|
|
213
|
+
return undefined;
|
|
214
|
+
const prompt = usage.prompt_tokens ?? usage.input_tokens;
|
|
215
|
+
const completion = usage.completion_tokens ?? usage.output_tokens;
|
|
216
|
+
const valid = (value) => typeof value === 'number' && Number.isSafeInteger(value) && value >= 0;
|
|
217
|
+
if (!valid(prompt) && !valid(completion))
|
|
218
|
+
return undefined;
|
|
219
|
+
return {
|
|
220
|
+
choices: [],
|
|
221
|
+
usage: {
|
|
222
|
+
...(valid(prompt) ? { prompt_tokens: prompt } : {}),
|
|
223
|
+
...(valid(completion) ? { completion_tokens: completion } : {}),
|
|
224
|
+
},
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
function providerErrorMessage(value) {
|
|
228
|
+
const plain = nonEmptyString(value);
|
|
229
|
+
if (plain)
|
|
230
|
+
return plain;
|
|
231
|
+
const error = asObject(value);
|
|
232
|
+
return nonEmptyString(error?.message) ?? nonEmptyString(error?.type) ?? nonEmptyString(error?.code);
|
|
233
|
+
}
|
|
234
|
+
function asObject(value) {
|
|
235
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value)
|
|
236
|
+
? value : undefined;
|
|
237
|
+
}
|
|
238
|
+
function nonEmptyString(value) {
|
|
239
|
+
return typeof value === 'string' && value.trim() ? value.trim() : undefined;
|
|
188
240
|
}
|
|
189
241
|
//# sourceMappingURL=httpChatBackend.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpChatBackend.js","sourceRoot":"","sources":["../../../src/core/httpChatBackend.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"httpChatBackend.js","sourceRoot":"","sources":["../../../src/core/httpChatBackend.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface ProgressNotice {
|
|
2
|
+
kind: 'warning' | 'pause';
|
|
3
|
+
message: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Per-turn evidence of repetition, not a judgment that the overall task is solved.
|
|
7
|
+
* Unrelated reads/planning do not erase a stalled operation. A changed result resets
|
|
8
|
+
* that operation; a successful new file mutation makes earlier observations stale.
|
|
9
|
+
* Store only bounded maps of hashes, never complete commands or tool output.
|
|
10
|
+
*/
|
|
11
|
+
export declare class ProgressGuard {
|
|
12
|
+
private readonly observations;
|
|
13
|
+
private readonly mutations;
|
|
14
|
+
observe(name: string, rawArgs: string, result: Record<string, unknown>): ProgressNotice | undefined;
|
|
15
|
+
private record;
|
|
16
|
+
}
|