neoctl 0.2.29 → 0.2.31
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 +40 -4
- package/dist/context/compaction.d.ts +20 -4
- package/dist/context/compaction.js +377 -186
- package/dist/context/compaction.js.map +1 -1
- package/dist/context/context-manager.d.ts +7 -1
- package/dist/context/context-manager.js +15 -11
- package/dist/context/context-manager.js.map +1 -1
- package/dist/context/prompts.js +2 -0
- package/dist/context/prompts.js.map +1 -1
- package/dist/context/smoke-context.js +266 -17
- package/dist/context/smoke-context.js.map +1 -1
- package/dist/core/assistant-output-filter.d.ts +1 -0
- package/dist/core/assistant-output-filter.js +54 -2
- package/dist/core/assistant-output-filter.js.map +1 -1
- package/dist/core/context-metrics.d.ts +1 -0
- package/dist/core/context-metrics.js +18 -12
- package/dist/core/context-metrics.js.map +1 -1
- package/dist/core/image-registry.d.ts +16 -3
- package/dist/core/image-registry.js +65 -30
- package/dist/core/image-registry.js.map +1 -1
- package/dist/core/image-storage.d.ts +15 -1
- package/dist/core/image-storage.js +140 -17
- package/dist/core/image-storage.js.map +1 -1
- package/dist/core/message-pipeline.js +18 -4
- package/dist/core/message-pipeline.js.map +1 -1
- package/dist/core/query-engine.d.ts +12 -2
- package/dist/core/query-engine.js +57 -8
- package/dist/core/query-engine.js.map +1 -1
- package/dist/core/query.d.ts +13 -2
- package/dist/core/query.js +56 -21
- package/dist/core/query.js.map +1 -1
- package/dist/core/smoke-core-loop.js +68 -3
- package/dist/core/smoke-core-loop.js.map +1 -1
- package/dist/core/smoke-image-integrity.d.ts +1 -0
- package/dist/core/smoke-image-integrity.js +67 -0
- package/dist/core/smoke-image-integrity.js.map +1 -0
- package/dist/core/state.d.ts +1 -1
- package/dist/core/state.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/model/model-metadata.json +4 -4
- package/dist/plugins/plugin-system.d.ts +61 -0
- package/dist/plugins/plugin-system.js +189 -0
- package/dist/plugins/plugin-system.js.map +1 -0
- package/dist/plugins/smoke-plugin-system.d.ts +1 -0
- package/dist/plugins/smoke-plugin-system.js +63 -0
- package/dist/plugins/smoke-plugin-system.js.map +1 -0
- package/dist/repl/index.js +8 -3
- package/dist/repl/index.js.map +1 -1
- package/dist/session/session-export.d.ts +2 -0
- package/dist/session/session-export.js +10 -0
- package/dist/session/session-export.js.map +1 -1
- package/dist/session/session-store.d.ts +41 -0
- package/dist/session/session-store.js +292 -59
- package/dist/session/session-store.js.map +1 -1
- package/dist/session/smoke-session.js +127 -7
- package/dist/session/smoke-session.js.map +1 -1
- package/dist/tools/builtins/exec-process-manager.d.ts +16 -2
- package/dist/tools/builtins/exec-process-manager.js +119 -25
- package/dist/tools/builtins/exec-process-manager.js.map +1 -1
- package/dist/tools/builtins/exec-tool.js +11 -2
- package/dist/tools/builtins/exec-tool.js.map +1 -1
- package/dist/tools/builtins/image-generation-tool.js +32 -42
- package/dist/tools/builtins/image-generation-tool.js.map +1 -1
- package/dist/tools/builtins/image-loader-tool.js +10 -4
- package/dist/tools/builtins/image-loader-tool.js.map +1 -1
- package/dist/tools/builtins/image-note-tool.js +8 -3
- package/dist/tools/builtins/image-note-tool.js.map +1 -1
- package/dist/tools/registry.d.ts +8 -1
- package/dist/tools/registry.js +37 -13
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/smoke-exec-process.js +88 -4
- package/dist/tools/smoke-exec-process.js.map +1 -1
- package/dist/tools/smoke-tool-system.js +24 -6
- package/dist/tools/smoke-tool-system.js.map +1 -1
- package/dist/types/events.d.ts +5 -1
- package/dist/types/messages.d.ts +13 -5
- package/dist/types/messages.js +4 -0
- package/dist/types/messages.js.map +1 -1
- package/dist/ui/display-message.d.ts +10 -2
- package/dist/ui/display-message.js +18 -9
- package/dist/ui/display-message.js.map +1 -1
- package/dist/web/index.d.ts +176 -11
- package/dist/web/index.js +986 -106
- package/dist/web/index.js.map +1 -1
- package/dist/web/runtime-context-protocol.d.ts +12 -1
- package/dist/web/runtime-context-protocol.js +16 -1
- package/dist/web/runtime-context-protocol.js.map +1 -1
- package/dist/web/smoke-runtime-context-protocol.js +3 -0
- package/dist/web/smoke-runtime-context-protocol.js.map +1 -1
- package/dist/web/smoke-web-history.d.ts +1 -0
- package/dist/web/smoke-web-history.js +121 -0
- package/dist/web/smoke-web-history.js.map +1 -0
- package/dist/web/smoke-web-terminal-tasks.d.ts +1 -0
- package/dist/web/smoke-web-terminal-tasks.js +90 -0
- package/dist/web/smoke-web-terminal-tasks.js.map +1 -0
- package/package.json +5 -1
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { ModelAPIError } from "../model/errors.js";
|
|
2
2
|
import { QueryEngine } from "../core/query-engine.js";
|
|
3
|
-
import {
|
|
3
|
+
import { buildContextMetrics, estimateTextTokens } from "../core/context-metrics.js";
|
|
4
|
+
import { resolveContextWindowTokens } from "../model/context-window.js";
|
|
5
|
+
import { applyRuntimeContextForPromptCache, applyToolResultBudget, ensureToolResultPairing, getMessagesAfterCompactBoundary, hasValidToolResultPairing, insertUserContextBeforeLatestUser } from "../core/message-pipeline.js";
|
|
4
6
|
import { ToolRegistry } from "../tools/registry.js";
|
|
5
7
|
import { createTextMessage, createThinkingMessage, createToolResultMessage } from "../types/messages.js";
|
|
6
|
-
import { CLEARED_TOOL_RESULT_CONTENT, DeterministicCompactor, ManualOnlyCompactor, microCompactIfNeeded, ModelDrivenCompactor } from "./compaction.js";
|
|
8
|
+
import { CLEARED_TOOL_RESULT_CONTENT, DeterministicCompactor, ManualOnlyCompactor, microCompactIfNeeded, ModelDrivenCompactor, withCompactionReport } from "./compaction.js";
|
|
7
9
|
import { AdditionalPromptContextManager, DefaultContextManager } from "./context-manager.js";
|
|
8
10
|
import { buildEffectiveSystemPrompt, splitSystemPromptPrefix, SYSTEM_PROMPT_DYNAMIC_BOUNDARY } from "./prompts.js";
|
|
9
11
|
class ContextOverflowThenSuccessGateway {
|
|
@@ -31,15 +33,48 @@ class ContextOverflowThenSuccessGateway {
|
|
|
31
33
|
class SummaryGateway {
|
|
32
34
|
compactCalls = 0;
|
|
33
35
|
requestText = "";
|
|
36
|
+
lastRequest;
|
|
34
37
|
async *stream(request) {
|
|
35
38
|
if (request.queryOrigin !== "compact")
|
|
36
39
|
throw new Error(`Unexpected query origin: ${request.queryOrigin}`);
|
|
37
40
|
this.compactCalls += 1;
|
|
41
|
+
this.lastRequest = request;
|
|
38
42
|
this.requestText += JSON.stringify(request.messages);
|
|
39
|
-
yield {
|
|
43
|
+
yield {
|
|
44
|
+
type: "assistant_delta",
|
|
45
|
+
text: "目标:提高压缩摘要质量。\n关键路径:C:\\Users\\qyq\\Desktop\\work\\codex\n当前状态:已完成调查。\n下一步:finish validation. AUTHORITY_SUMMARY_END",
|
|
46
|
+
};
|
|
40
47
|
yield { type: "response_completed", responseId: "compact_1", stopReason: "completed" };
|
|
41
48
|
}
|
|
42
49
|
}
|
|
50
|
+
class SequenceSummaryGateway {
|
|
51
|
+
requests = [];
|
|
52
|
+
async *stream(request) {
|
|
53
|
+
this.requests.push(request);
|
|
54
|
+
const text = this.requests.length === 1
|
|
55
|
+
? "Goal: original goal. Status: investigation pending. OLDER_CHECKPOINT"
|
|
56
|
+
: "Goal: corrected goal. Status: implementation approved and in progress. LATEST_CHECKPOINT";
|
|
57
|
+
yield { type: "assistant_delta", text };
|
|
58
|
+
yield { type: "response_completed", responseId: `compact_${this.requests.length}`, stopReason: "completed" };
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
class ThresholdAutoCompactGateway {
|
|
62
|
+
compactCalls = 0;
|
|
63
|
+
modelCalls = 0;
|
|
64
|
+
sawBoundary = false;
|
|
65
|
+
async *stream(request) {
|
|
66
|
+
if (request.queryOrigin === "compact") {
|
|
67
|
+
this.compactCalls += 1;
|
|
68
|
+
yield { type: "assistant_delta", text: "Goal: preserve the current request. Status: ready after automatic compaction." };
|
|
69
|
+
yield { type: "response_completed", responseId: "compact_threshold", stopReason: "completed" };
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this.modelCalls += 1;
|
|
73
|
+
this.sawBoundary = request.messages.some((message) => message.metadata?.compactBoundary === true);
|
|
74
|
+
yield { type: "assistant_message", message: createTextMessage("assistant", "automatic compact succeeded") };
|
|
75
|
+
yield { type: "response_completed", responseId: "response_threshold", stopReason: "completed" };
|
|
76
|
+
}
|
|
77
|
+
}
|
|
43
78
|
async function main() {
|
|
44
79
|
const prompt = buildEffectiveSystemPrompt([
|
|
45
80
|
{ name: "Stable", content: "cache me", cacheStable: true },
|
|
@@ -62,15 +97,30 @@ async function main() {
|
|
|
62
97
|
const secondHistory = [...firstHistory, createTextMessage("assistant", "answer"), createTextMessage("user", "second")];
|
|
63
98
|
const runtimeContextMessages = applyRuntimeContextForPromptCache(firstHistory, runtime.userContext, runtime.systemContext);
|
|
64
99
|
const nextRuntimeContextMessages = applyRuntimeContextForPromptCache(secondHistory, runtime.userContext, runtime.systemContext);
|
|
100
|
+
const changedCwdMessages = applyRuntimeContextForPromptCache(secondHistory, runtime.userContext, { ...runtime.systemContext, cwd: `${runtime.systemContext.cwd}-next` });
|
|
101
|
+
const cwdTransitionMessages = insertUserContextBeforeLatestUser(changedCwdMessages, { cwdTransition: { paths: ["A", "B", "C"], current: "C" } });
|
|
65
102
|
const lastRuntimeBlock = runtimeContextMessages.at(-1)?.blocks[0];
|
|
66
|
-
const
|
|
103
|
+
const firstRuntimeBlock = runtimeContextMessages[0]?.blocks[0];
|
|
104
|
+
const nextFirstRuntimeBlock = nextRuntimeContextMessages[0]?.blocks[0];
|
|
105
|
+
const changedFirstRuntimeBlock = changedCwdMessages[0]?.blocks[0];
|
|
106
|
+
const cwdTransitionBlock = cwdTransitionMessages.at(-2)?.blocks[0];
|
|
107
|
+
const toolBudgetPromptOccurrences = runtime.systemPrompt.split("Tool results use a default context budget").length - 1;
|
|
108
|
+
const contextOk = toolBudgetPromptOccurrences === 1 &&
|
|
109
|
+
runtime.systemPrompt.includes("48000 serialized characters") &&
|
|
110
|
+
runtime.systemPrompt.includes("within 1-200000") &&
|
|
111
|
+
runtime.userContext.currentDate === "2026-05-05" &&
|
|
67
112
|
Boolean(runtime.systemContext.cwd) &&
|
|
68
113
|
!runtime.systemPrompt.includes("## System Context") &&
|
|
69
114
|
runtimeContextMessages[0]?.metadata?.userContext === true &&
|
|
70
115
|
runtimeContextMessages[0]?.metadata?.systemContext === true &&
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
116
|
+
firstRuntimeBlock?.type === "text" &&
|
|
117
|
+
nextFirstRuntimeBlock?.type === "text" &&
|
|
118
|
+
changedFirstRuntimeBlock?.type === "text" &&
|
|
119
|
+
firstRuntimeBlock.text === nextFirstRuntimeBlock.text &&
|
|
120
|
+
firstRuntimeBlock.text === changedFirstRuntimeBlock.text &&
|
|
121
|
+
changedCwdMessages.at(-2)?.metadata?.cacheStableRuntimeContext === false &&
|
|
122
|
+
cwdTransitionBlock?.type === "text" &&
|
|
123
|
+
cwdTransitionBlock.text.includes('"paths":["A","B","C"]') === true &&
|
|
74
124
|
lastRuntimeBlock?.type === "text" &&
|
|
75
125
|
lastRuntimeBlock.text === "first";
|
|
76
126
|
const toolResult = createToolResultMessage({ id: "call_big", name: "big", input: {} }, true, "x".repeat(120));
|
|
@@ -84,11 +134,99 @@ async function main() {
|
|
|
84
134
|
autoCompactMaxChars: 1500,
|
|
85
135
|
keepRecentMessages: 4,
|
|
86
136
|
});
|
|
87
|
-
const
|
|
137
|
+
const reportedCompaction = withCompactionReport(compacted, longHistory.length);
|
|
138
|
+
const compactBoundary = reportedCompaction.messages.find((message) => message.metadata?.compactBoundary === true);
|
|
139
|
+
const preservedUsers = reportedCompaction.messages.filter((message) => message.metadata?.compactPreservedUser === true);
|
|
140
|
+
const compactReportOk = reportedCompaction.report?.sourceMessages === longHistory.length &&
|
|
141
|
+
reportedCompaction.report.preservedUserMessages === preservedUsers.length &&
|
|
142
|
+
reportedCompaction.report.newWindowMessages === reportedCompaction.messages.length &&
|
|
143
|
+
reportedCompaction.report.summary.length > 0 &&
|
|
144
|
+
reportedCompaction.report.continuationState.length > 0 &&
|
|
145
|
+
compactBoundary?.metadata?.compactionReport !== undefined;
|
|
88
146
|
const compactOk = compacted.changed &&
|
|
89
147
|
compactBoundary?.role === "system" &&
|
|
148
|
+
reportedCompaction.messages.at(-1)?.metadata?.compactBoundary === true &&
|
|
149
|
+
reportedCompaction.messages.slice(0, -1).every((message) => message.role === "user" && message.isMeta !== true) &&
|
|
150
|
+
getMessagesAfterCompactBoundary(reportedCompaction.messages).length === reportedCompaction.messages.length &&
|
|
90
151
|
JSON.stringify(compactBoundary).includes("Internal continuation state") &&
|
|
91
152
|
!JSON.stringify(compactBoundary).includes("Conversation summary");
|
|
153
|
+
const metaUser = { ...createTextMessage("user", "runtime metadata"), isMeta: true, metadata: { runtimeContext: true } };
|
|
154
|
+
const imageUser = {
|
|
155
|
+
...createTextMessage("user", "latest request with image"),
|
|
156
|
+
blocks: [
|
|
157
|
+
{ type: "text", text: "latest request with image" },
|
|
158
|
+
{ type: "image", mimeType: "image/png", data: "aGVsbG8=", label: "latest-image" },
|
|
159
|
+
],
|
|
160
|
+
};
|
|
161
|
+
const oversizedUser = createTextMessage("user", `old oversized request ${"long-token ".repeat(120)}`);
|
|
162
|
+
const budgetHistory = [
|
|
163
|
+
oversizedUser,
|
|
164
|
+
createTextMessage("assistant", "assistant content must not survive"),
|
|
165
|
+
createToolResultMessage({ id: "budget-tool", name: "read", input: {} }, true, "tool content must not survive"),
|
|
166
|
+
metaUser,
|
|
167
|
+
imageUser,
|
|
168
|
+
];
|
|
169
|
+
const budgetCompacted = await compactor.manualCompact(budgetHistory, { keepRecentTokenBudget: 80, summaryMaxChars: 2000 });
|
|
170
|
+
const budgetPreserved = budgetCompacted.messages.slice(0, -1);
|
|
171
|
+
const budgetPreservedTokens = budgetPreserved.reduce((total, message) => total + estimateTextTokens(message.blocks.map((block) => {
|
|
172
|
+
if (block.type === "text")
|
|
173
|
+
return block.text;
|
|
174
|
+
if (block.type === "image")
|
|
175
|
+
return `[image ${block.label ?? "unlabeled"} ${block.mimeType}; estimated visual token chars=340; pixels are not text-summarized]`;
|
|
176
|
+
return "";
|
|
177
|
+
}).join("\n")), 0);
|
|
178
|
+
const budgetWindowOk = budgetCompacted.messages.at(-1)?.metadata?.compactBoundary === true &&
|
|
179
|
+
budgetPreserved.every((message) => message.role === "user" && message.isMeta !== true) &&
|
|
180
|
+
budgetPreserved[0]?.id === oversizedUser.id &&
|
|
181
|
+
budgetPreserved.at(-1)?.id === imageUser.id &&
|
|
182
|
+
budgetPreserved.some((message) => message.blocks.some((block) => block.type === "image" && block.label === "latest-image")) &&
|
|
183
|
+
budgetPreserved.some((message) => message.blocks.some((block) => block.type === "text" && block.text.includes("truncated for compaction token budget"))) &&
|
|
184
|
+
budgetCompacted.summary?.includes("assistant content must not survive") === true &&
|
|
185
|
+
budgetCompacted.summary.includes("tool content must not survive") &&
|
|
186
|
+
budgetPreservedTokens <= 80 &&
|
|
187
|
+
!JSON.stringify(budgetPreserved).includes("assistant content must not survive") &&
|
|
188
|
+
!JSON.stringify(budgetPreserved).includes("tool content must not survive") &&
|
|
189
|
+
!JSON.stringify(budgetPreserved).includes("runtime metadata");
|
|
190
|
+
const defaultBudgetHistory = [
|
|
191
|
+
createTextMessage("user", `default budget boundary ${"token-word ".repeat(30_000)}`),
|
|
192
|
+
createTextMessage("assistant", "not preserved"),
|
|
193
|
+
];
|
|
194
|
+
const defaultBudgetCompacted = await compactor.manualCompact(defaultBudgetHistory, { summaryMaxChars: 500 });
|
|
195
|
+
const defaultBudgetTokens = defaultBudgetCompacted.messages.slice(0, -1)
|
|
196
|
+
.reduce((total, message) => total + estimateTextTokens(message.blocks.map((block) => block.type === "text" ? block.text : "").join("\n")), 0);
|
|
197
|
+
const defaultBudgetOk = defaultBudgetTokens <= 20_000 &&
|
|
198
|
+
defaultBudgetTokens >= 19_500 &&
|
|
199
|
+
defaultBudgetCompacted.messages.slice(0, -1).every((message) => message.role === "user") &&
|
|
200
|
+
defaultBudgetCompacted.messages.at(-1)?.metadata?.compactBoundary === true;
|
|
201
|
+
const fallbackToolUse = {
|
|
202
|
+
id: "assistant_fallback_tool",
|
|
203
|
+
role: "assistant",
|
|
204
|
+
createdAt: new Date().toISOString(),
|
|
205
|
+
blocks: [{ type: "tool_use", id: "fallback_call", name: "grep", input: { query: "codex" } }],
|
|
206
|
+
};
|
|
207
|
+
const fallbackHistory = [
|
|
208
|
+
createTextMessage("user", "提高摘要质量,参考仓库 C:\\Users\\qyq\\Desktop\\work\\codex,不要使用子代理。"),
|
|
209
|
+
createTextMessage("assistant", "已完成 Codex 调查,等待实施。"),
|
|
210
|
+
fallbackToolUse,
|
|
211
|
+
...Array.from({ length: 8 }, (_, index) => createToolResultMessage({ id: `fallback_fail_${index}`, name: "grep", input: {} }, false, `transient failure ${index}`)),
|
|
212
|
+
createToolResultMessage({ id: "fallback_call", name: "grep", input: {} }, true, "Codex compaction prompt located."),
|
|
213
|
+
];
|
|
214
|
+
const fallbackCompacted = await compactor.manualCompact(fallbackHistory, { keepRecentTokenBudget: 200, summaryMaxChars: 1800 });
|
|
215
|
+
const fallbackSummary = fallbackCompacted.summary ?? "";
|
|
216
|
+
const fallbackQualityOk = fallbackSummary.includes("提高摘要质量") &&
|
|
217
|
+
fallbackSummary.includes("C:\\Users\\qyq\\Desktop\\work\\codex") &&
|
|
218
|
+
fallbackSummary.includes("已完成 Codex 调查") &&
|
|
219
|
+
fallbackSummary.includes("Next step:") &&
|
|
220
|
+
!fallbackSummary.includes("Persistent facts:") &&
|
|
221
|
+
!fallbackSummary.includes("transient failure 0") &&
|
|
222
|
+
!fallbackSummary.includes("transient failure 7");
|
|
223
|
+
const consecutiveHistory = [...budgetCompacted.messages, createTextMessage("assistant", "new assistant"), createTextMessage("user", "newest real request")];
|
|
224
|
+
const secondCompacted = await compactor.manualCompact(consecutiveHistory, { keepRecentTokenBudget: 200, summaryMaxChars: 3000 });
|
|
225
|
+
const consecutiveCompactOk = secondCompacted.messages.at(-1)?.metadata?.compactBoundary === true &&
|
|
226
|
+
secondCompacted.messages.filter((message) => message.metadata?.compactBoundary === true).length === 1 &&
|
|
227
|
+
secondCompacted.messages.slice(0, -1).every((message) => message.role === "user" && message.isMeta !== true) &&
|
|
228
|
+
getMessagesAfterCompactBoundary(secondCompacted.messages).length === secondCompacted.messages.length &&
|
|
229
|
+
secondCompacted.summary?.includes("newest real request") === true;
|
|
92
230
|
const toolUseOld = {
|
|
93
231
|
id: "assistant_old_tool",
|
|
94
232
|
role: "assistant",
|
|
@@ -131,18 +269,99 @@ async function main() {
|
|
|
131
269
|
!grepOutput.includes('"truncated"');
|
|
132
270
|
const summaryGateway = new SummaryGateway();
|
|
133
271
|
const modelCompactor = new ModelDrivenCompactor(summaryGateway);
|
|
134
|
-
const
|
|
272
|
+
const summaryToolUse = {
|
|
273
|
+
id: "assistant_summary_tool",
|
|
274
|
+
role: "assistant",
|
|
275
|
+
createdAt: new Date().toISOString(),
|
|
276
|
+
blocks: [{ type: "tool_use", id: "summary_call", name: "read", input: { path: "C:\\Users\\qyq\\Desktop\\work\\codex" } }],
|
|
277
|
+
};
|
|
278
|
+
const summaryToolResult = createToolResultMessage({ id: "summary_call", name: "read", input: {} }, false, "temporary read failure");
|
|
279
|
+
const summaryImageUser = {
|
|
280
|
+
...createTextMessage("user", "historical image reference"),
|
|
281
|
+
blocks: [
|
|
282
|
+
{ type: "text", text: "historical image reference" },
|
|
283
|
+
{ type: "image", mimeType: "image/png", data: "aGVsbG8=", label: "summary-history-image" },
|
|
284
|
+
],
|
|
285
|
+
};
|
|
286
|
+
const largeSummaryToolUse = {
|
|
287
|
+
id: "assistant_large_summary_tool",
|
|
288
|
+
role: "assistant",
|
|
289
|
+
createdAt: new Date().toISOString(),
|
|
290
|
+
blocks: [{ type: "tool_use", id: "large_summary_call", name: "read", input: { path: "large.log" } }],
|
|
291
|
+
};
|
|
292
|
+
const largeSummaryToolResult = createToolResultMessage({ id: "large_summary_call", name: "read", input: {} }, true, `START_SENTINEL ${"large-output ".repeat(1500)} END_SENTINEL`);
|
|
293
|
+
const modelHistory = [
|
|
294
|
+
createTextMessage("user", "Please improve summary quality. Codex repository: C:\\Users\\qyq\\Desktop\\work\\codex"),
|
|
295
|
+
createThinkingMessage("private persisted reasoning"),
|
|
296
|
+
summaryImageUser,
|
|
297
|
+
summaryToolUse,
|
|
298
|
+
summaryToolResult,
|
|
299
|
+
largeSummaryToolUse,
|
|
300
|
+
largeSummaryToolResult,
|
|
301
|
+
...longHistory,
|
|
302
|
+
];
|
|
303
|
+
const modelCompacted = await modelCompactor.compact(modelHistory, {
|
|
135
304
|
snipMaxChars: 20000,
|
|
136
305
|
microCompactMaxChars: 19000,
|
|
137
306
|
autoCompactMaxChars: 1500,
|
|
138
307
|
keepRecentMessages: 3,
|
|
308
|
+
summaryMaxChars: 24,
|
|
139
309
|
});
|
|
310
|
+
const compactRequestMessages = summaryGateway.lastRequest?.messages ?? [];
|
|
311
|
+
const compactInstruction = compactRequestMessages.at(-1);
|
|
140
312
|
const modelCompactOk = summaryGateway.compactCalls === 1 &&
|
|
313
|
+
compactRequestMessages.length === modelHistory.length &&
|
|
314
|
+
compactRequestMessages[0]?.role === "user" &&
|
|
315
|
+
compactRequestMessages.some((message) => message.blocks.some((block) => block.type === "tool_use" && block.id === "summary_call")) &&
|
|
316
|
+
compactRequestMessages.some((message) => message.blocks.some((block) => block.type === "tool_result" && block.toolUseId === "summary_call")) &&
|
|
317
|
+
compactRequestMessages.some((message) => message.metadata?.compactInputNormalized === true && message.blocks.some((block) => block.type === "text" && block.text.includes("summary-history-image"))) &&
|
|
318
|
+
!compactRequestMessages.some((message) => message.blocks.some((block) => block.type === "image")) &&
|
|
319
|
+
summaryGateway.requestText.includes("Tool result normalized for compaction") &&
|
|
320
|
+
summaryGateway.requestText.includes("START_SENTINEL") &&
|
|
321
|
+
summaryGateway.requestText.includes("END_SENTINEL") &&
|
|
322
|
+
compactInstruction?.role === "user" &&
|
|
323
|
+
compactInstruction.metadata?.compactInstruction === true &&
|
|
324
|
+
compactInstruction.blocks.some((block) => block.type === "text" && block.text.includes("CONTEXT CHECKPOINT COMPACTION")) &&
|
|
325
|
+
summaryGateway.lastRequest?.instructions === undefined &&
|
|
326
|
+
summaryGateway.lastRequest?.toolChoice === "none" &&
|
|
141
327
|
!summaryGateway.requestText.includes("private persisted reasoning") &&
|
|
142
328
|
modelCompacted.changed &&
|
|
143
|
-
modelCompacted.summary?.includes("
|
|
329
|
+
modelCompacted.summary?.includes("C:\\Users\\qyq\\Desktop\\work\\codex") === true &&
|
|
330
|
+
modelCompacted.summary.includes("AUTHORITY_SUMMARY_END") &&
|
|
331
|
+
!modelCompacted.summary.includes("Persistent facts:") &&
|
|
144
332
|
modelCompacted.messages.some((message) => message.metadata?.modelDriven === true);
|
|
333
|
+
const sequenceGateway = new SequenceSummaryGateway();
|
|
334
|
+
const sequenceCompactor = new ModelDrivenCompactor(sequenceGateway);
|
|
335
|
+
const firstSequenceCompact = await sequenceCompactor.manualCompact?.([
|
|
336
|
+
createTextMessage("user", "original request"),
|
|
337
|
+
createTextMessage("assistant", "investigating"),
|
|
338
|
+
], { keepRecentTokenBudget: 200 });
|
|
339
|
+
const secondSequenceCompact = await sequenceCompactor.manualCompact?.([
|
|
340
|
+
...(firstSequenceCompact?.messages ?? []),
|
|
341
|
+
createTextMessage("user", "corrected request; implementation is approved"),
|
|
342
|
+
], { keepRecentTokenBudget: 200 });
|
|
343
|
+
const secondSequenceRequest = sequenceGateway.requests[1];
|
|
344
|
+
const consecutiveModelCompactOk = sequenceGateway.requests.length === 2 &&
|
|
345
|
+
secondSequenceRequest?.messages.some((message) => message.metadata?.compactBoundary === true && JSON.stringify(message).includes("OLDER_CHECKPOINT")) === true &&
|
|
346
|
+
secondSequenceRequest.messages.some((message) => message.role === "user" && JSON.stringify(message).includes("corrected request")) &&
|
|
347
|
+
secondSequenceRequest.messages.at(-1)?.metadata?.compactInstruction === true &&
|
|
348
|
+
secondSequenceCompact?.summary?.includes("LATEST_CHECKPOINT") === true &&
|
|
349
|
+
!secondSequenceCompact.summary.includes("OLDER_CHECKPOINT") &&
|
|
350
|
+
!secondSequenceCompact.summary.includes("Persistent facts:");
|
|
145
351
|
const manualOnly = new ManualOnlyCompactor(modelCompactor);
|
|
352
|
+
const gpt56WindowOk = resolveContextWindowTokens("gpt-5.6", {}).tokens === 256000
|
|
353
|
+
&& resolveContextWindowTokens("gpt-5.6-sol", {}).tokens === 256000
|
|
354
|
+
&& resolveContextWindowTokens("gpt-5.6-terra", {}).tokens === 256000
|
|
355
|
+
&& resolveContextWindowTokens("gpt-5.6-luna", {}).tokens === 256000;
|
|
356
|
+
const sessionWindowMetrics = buildContextMetrics({
|
|
357
|
+
model: "gpt-5.6",
|
|
358
|
+
contextWindowTokensOverride: 64000,
|
|
359
|
+
messages: [],
|
|
360
|
+
systemPrompt: "smoke",
|
|
361
|
+
tools: [],
|
|
362
|
+
});
|
|
363
|
+
const sessionWindowOk = sessionWindowMetrics.contextWindowTokens === 64000
|
|
364
|
+
&& sessionWindowMetrics.contextWindowSource === "session";
|
|
146
365
|
const automaticDisabled = await manualOnly.compact(longHistory, {
|
|
147
366
|
autoCompactMaxChars: 1,
|
|
148
367
|
estimatedInputTokens: 1000,
|
|
@@ -165,8 +384,18 @@ async function main() {
|
|
|
165
384
|
});
|
|
166
385
|
const events = [];
|
|
167
386
|
let telemetryOk = false;
|
|
387
|
+
let reactiveCompactionReportOk = false;
|
|
168
388
|
for await (const event of engine.sendUserText("trigger reactive compact")) {
|
|
169
389
|
events.push(event.type === "terminal" ? `${event.type}:${event.reason}` : event.type);
|
|
390
|
+
if (event.type === "context.compacted") {
|
|
391
|
+
reactiveCompactionReportOk =
|
|
392
|
+
event.compaction.reason === "reactive_compact" &&
|
|
393
|
+
event.compaction.sourceMessages > 0 &&
|
|
394
|
+
event.compaction.newWindowMessages > 0 &&
|
|
395
|
+
event.compaction.preservedUserMessages > 0 &&
|
|
396
|
+
event.compaction.summary.length > 0 &&
|
|
397
|
+
event.compaction.continuationState.length > 0;
|
|
398
|
+
}
|
|
170
399
|
if (event.type === "context.metrics") {
|
|
171
400
|
telemetryOk ||= Boolean(event.metrics.cacheDiagnostics?.systemPromptHash &&
|
|
172
401
|
event.metrics.cacheDiagnostics.stablePrefixHash &&
|
|
@@ -189,15 +418,35 @@ async function main() {
|
|
|
189
418
|
maxTurns: 4,
|
|
190
419
|
});
|
|
191
420
|
const defaultEvents = [];
|
|
192
|
-
for await (const event of defaultEngine.sendUserText("
|
|
421
|
+
for await (const event of defaultEngine.sendUserText("recover from a provider context error")) {
|
|
193
422
|
defaultEvents.push(event.type === "terminal" ? `${event.type}:${event.reason}` : event.type);
|
|
194
423
|
}
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
defaultEvents.includes("
|
|
198
|
-
defaultEvents.includes("terminal:
|
|
199
|
-
const
|
|
200
|
-
|
|
424
|
+
const defaultAutomaticEnabledOk = defaultGateway.calls === 3 &&
|
|
425
|
+
defaultGateway.sawBoundaryOnRetry &&
|
|
426
|
+
defaultEvents.includes("context.compacted") &&
|
|
427
|
+
defaultEvents.includes("terminal:completed");
|
|
428
|
+
const thresholdGateway = new ThresholdAutoCompactGateway();
|
|
429
|
+
const thresholdEngine = new QueryEngine({
|
|
430
|
+
model: "gpt-5.6-sol",
|
|
431
|
+
contextWindowTokensOverride: 1000,
|
|
432
|
+
modelGateway: thresholdGateway,
|
|
433
|
+
tools: new ToolRegistry(),
|
|
434
|
+
contextManager,
|
|
435
|
+
contextBudget: { autoCompactTriggerRatio: 0.92, keepRecentTokenBudget: 100 },
|
|
436
|
+
maxTurns: 2,
|
|
437
|
+
});
|
|
438
|
+
const thresholdEvents = [];
|
|
439
|
+
for await (const event of thresholdEngine.sendUserText("x".repeat(5000))) {
|
|
440
|
+
thresholdEvents.push(event.type === "terminal" ? `${event.type}:${event.reason}` : event.type);
|
|
441
|
+
}
|
|
442
|
+
const thresholdAutomaticOk = thresholdGateway.compactCalls === 1 &&
|
|
443
|
+
thresholdGateway.modelCalls === 1 &&
|
|
444
|
+
thresholdGateway.sawBoundary &&
|
|
445
|
+
thresholdEvents.includes("context.compacted") &&
|
|
446
|
+
thresholdEvents.includes("terminal:completed") &&
|
|
447
|
+
thresholdEngine.getHistoryMessages().some((message) => message.metadata?.compactBoundary === true);
|
|
448
|
+
const ok = promptOk && contextOk && extensionOk && budgetOk && compactOk && compactReportOk && budgetWindowOk && defaultBudgetOk && fallbackQualityOk && consecutiveCompactOk && microOk && pairingOk && grepRegressionOk && modelCompactOk && consecutiveModelCompactOk && gpt56WindowOk && sessionWindowOk && automaticDisabledOk && reactiveOk && reactiveCompactionReportOk && defaultAutomaticEnabledOk && thresholdAutomaticOk && telemetryOk;
|
|
449
|
+
console.log(JSON.stringify({ ok, promptOk, contextOk, extensionOk, budgetOk, compactOk, compactReportOk, budgetWindowOk, defaultBudgetOk, fallbackQualityOk, consecutiveCompactOk, microOk, pairingOk, grepRegressionOk, modelCompactOk, consecutiveModelCompactOk, gpt56WindowOk, sessionWindowOk, automaticDisabledOk, reactiveOk, reactiveCompactionReportOk, defaultAutomaticEnabledOk, thresholdAutomaticOk, telemetryOk, events, defaultEvents, thresholdEvents, calls: gateway.calls, defaultCalls: defaultGateway.calls, thresholdCompactCalls: thresholdGateway.compactCalls }, null, 2));
|
|
201
450
|
if (!ok)
|
|
202
451
|
process.exitCode = 1;
|
|
203
452
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smoke-context.js","sourceRoot":"","sources":["../../src/context/smoke-context.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"smoke-context.js","sourceRoot":"","sources":["../../src/context/smoke-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,18 @@
|
|
|
1
|
-
const
|
|
1
|
+
const REASONING_LEAK_MARKERS = [
|
|
2
|
+
"We need",
|
|
3
|
+
"Need answer",
|
|
4
|
+
"Need respond",
|
|
5
|
+
"Need final",
|
|
6
|
+
"Need maybe",
|
|
7
|
+
"Need check",
|
|
8
|
+
"Need mention",
|
|
9
|
+
"Need say",
|
|
10
|
+
"Final maybe",
|
|
11
|
+
"The transcript shows",
|
|
12
|
+
"Our final",
|
|
13
|
+
"User asked",
|
|
14
|
+
"I should",
|
|
15
|
+
];
|
|
2
16
|
export class AssistantOutputFilter {
|
|
3
17
|
buffer = "";
|
|
4
18
|
emittedLength = 0;
|
|
@@ -14,24 +28,47 @@ export class AssistantOutputFilter {
|
|
|
14
28
|
this.redacted = true;
|
|
15
29
|
return safe;
|
|
16
30
|
}
|
|
17
|
-
|
|
31
|
+
// Only retain a suffix that could become one of the leak markers when the
|
|
32
|
+
// provider's next chunk arrives. A fixed-size hold-back makes ordinary text
|
|
33
|
+
// appear frozen during model pauses and releases it only at a later tool or
|
|
34
|
+
// final-message boundary.
|
|
35
|
+
const safeEnd = this.buffer.length - reasoningLeakPrefixSuffixLength(this.buffer);
|
|
18
36
|
if (safeEnd <= this.emittedLength)
|
|
19
37
|
return "";
|
|
20
38
|
const safe = this.buffer.slice(this.emittedLength, safeEnd);
|
|
21
39
|
this.emittedLength = safeEnd;
|
|
22
40
|
return safe;
|
|
23
41
|
}
|
|
42
|
+
flush() {
|
|
43
|
+
if (this.redacted || this.emittedLength >= this.buffer.length)
|
|
44
|
+
return "";
|
|
45
|
+
const leakStart = findReasoningLeakStart(this.buffer);
|
|
46
|
+
const safeEnd = leakStart >= 0 ? leakStart : this.buffer.length;
|
|
47
|
+
const safe = this.buffer.slice(this.emittedLength, safeEnd);
|
|
48
|
+
this.emittedLength = safeEnd;
|
|
49
|
+
if (leakStart >= 0)
|
|
50
|
+
this.redacted = true;
|
|
51
|
+
return safe;
|
|
52
|
+
}
|
|
24
53
|
sanitizeMessage(message) {
|
|
25
54
|
let changed = false;
|
|
55
|
+
let hasFinalText = false;
|
|
26
56
|
const blocks = message.blocks.map((block) => {
|
|
27
57
|
if (block.type !== "text")
|
|
28
58
|
return block;
|
|
59
|
+
hasFinalText = true;
|
|
29
60
|
const text = stripLeakedReasoningText(block.text);
|
|
30
61
|
if (text === block.text)
|
|
31
62
|
return block;
|
|
32
63
|
changed = true;
|
|
33
64
|
return { ...block, text };
|
|
34
65
|
});
|
|
66
|
+
// A provider-finalized text block is authoritative and replaces the streamed
|
|
67
|
+
// line in consumers. Mark the hold-back buffer consumed so flush() cannot
|
|
68
|
+
// emit its tail a second time. Tool-only assistant messages deliberately do
|
|
69
|
+
// not consume it: their preceding streamed text still needs to be released.
|
|
70
|
+
if (hasFinalText)
|
|
71
|
+
this.emittedLength = this.buffer.length;
|
|
35
72
|
return changed ? { ...message, blocks, metadata: { ...message.metadata, outputSanitized: true } } : message;
|
|
36
73
|
}
|
|
37
74
|
}
|
|
@@ -41,6 +78,21 @@ export function stripLeakedReasoningText(text) {
|
|
|
41
78
|
return text;
|
|
42
79
|
return text.slice(0, leakStart).trimEnd();
|
|
43
80
|
}
|
|
81
|
+
function reasoningLeakPrefixSuffixLength(text) {
|
|
82
|
+
const lowerText = text.toLocaleLowerCase("en-US");
|
|
83
|
+
let longest = 0;
|
|
84
|
+
for (const marker of REASONING_LEAK_MARKERS) {
|
|
85
|
+
const lowerMarker = marker.toLocaleLowerCase("en-US");
|
|
86
|
+
const maxLength = Math.min(lowerText.length, lowerMarker.length - 1);
|
|
87
|
+
for (let length = maxLength; length > longest; length -= 1) {
|
|
88
|
+
if (lowerText.endsWith(lowerMarker.slice(0, length))) {
|
|
89
|
+
longest = length;
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return longest;
|
|
95
|
+
}
|
|
44
96
|
function findReasoningLeakStart(text) {
|
|
45
97
|
const candidates = [
|
|
46
98
|
/\bWe need\b/i,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assistant-output-filter.js","sourceRoot":"","sources":["../../src/core/assistant-output-filter.ts"],"names":[],"mappings":"AAEA,MAAM,sBAAsB,GAAG,
|
|
1
|
+
{"version":3,"file":"assistant-output-filter.js","sourceRoot":"","sources":["../../src/core/assistant-output-filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import type { ContextMetrics, PromptCacheDiagnostics } from "../types/events.js"
|
|
|
3
3
|
import { type Message } from "../types/messages.js";
|
|
4
4
|
export interface BuildContextMetricsInput {
|
|
5
5
|
model?: string;
|
|
6
|
+
contextWindowTokensOverride?: number;
|
|
6
7
|
messages: readonly Message[];
|
|
7
8
|
systemPrompt: string;
|
|
8
9
|
tools: readonly ToolDefinition[];
|
|
@@ -59,30 +59,36 @@ export function buildContextMetrics(input) {
|
|
|
59
59
|
estimatedChars = serialized.length;
|
|
60
60
|
estimatedInputTokens = estimateTextTokens(serialized);
|
|
61
61
|
}
|
|
62
|
-
const
|
|
62
|
+
const resolvedWindow = resolveContextWindowTokens(input.model);
|
|
63
|
+
const contextWindowTokensOverride = normalizePositiveInteger(input.contextWindowTokensOverride);
|
|
64
|
+
const contextWindowTokens = contextWindowTokensOverride ?? resolvedWindow.tokens;
|
|
65
|
+
const contextWindowSource = contextWindowTokensOverride ? "session" : resolvedWindow.source;
|
|
63
66
|
return {
|
|
64
67
|
model: input.model,
|
|
65
68
|
estimatedInputTokens,
|
|
66
69
|
estimatedChars,
|
|
67
70
|
messageCount: input.messages.length,
|
|
68
71
|
toolCount: input.tools.length,
|
|
69
|
-
contextWindowTokens
|
|
70
|
-
contextWindowSource
|
|
71
|
-
contextUsageRatio:
|
|
72
|
+
contextWindowTokens,
|
|
73
|
+
contextWindowSource,
|
|
74
|
+
contextUsageRatio: contextWindowTokens ? estimatedInputTokens / contextWindowTokens : undefined,
|
|
72
75
|
cacheDiagnostics: input.cacheDiagnostics,
|
|
73
|
-
modelMetadata:
|
|
76
|
+
modelMetadata: resolvedWindow.model
|
|
74
77
|
? {
|
|
75
|
-
id:
|
|
76
|
-
provider:
|
|
77
|
-
maxOutputTokens:
|
|
78
|
-
knowledgeCutoff:
|
|
79
|
-
reasoning:
|
|
80
|
-
imageInput:
|
|
81
|
-
source:
|
|
78
|
+
id: resolvedWindow.model.id,
|
|
79
|
+
provider: resolvedWindow.model.provider,
|
|
80
|
+
maxOutputTokens: resolvedWindow.model.maxOutputTokens,
|
|
81
|
+
knowledgeCutoff: resolvedWindow.model.knowledgeCutoff,
|
|
82
|
+
reasoning: resolvedWindow.model.reasoning,
|
|
83
|
+
imageInput: resolvedWindow.model.imageInput,
|
|
84
|
+
source: resolvedWindow.model.source,
|
|
82
85
|
}
|
|
83
86
|
: undefined,
|
|
84
87
|
};
|
|
85
88
|
}
|
|
89
|
+
function normalizePositiveInteger(value) {
|
|
90
|
+
return Number.isInteger(value) && Number(value) > 0 ? Number(value) : undefined;
|
|
91
|
+
}
|
|
86
92
|
export function estimateTextTokens(text) {
|
|
87
93
|
if (!text)
|
|
88
94
|
return 0;
|