@lexwdex-org/opencode-dcp 3.4.4 → 3.4.5
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/index.js +55 -10
- package/dist/index.js.map +1 -1
- package/dist/lib/messages/inject/utils.d.ts.map +1 -1
- package/dist/lib/prompts/extensions/nudge.d.ts +2 -1
- package/dist/lib/prompts/extensions/nudge.d.ts.map +1 -1
- package/dist/lib/prompts/system.d.ts +1 -1
- package/dist/lib/prompts/system.d.ts.map +1 -1
- package/dist/lib/state/utils.d.ts +1 -1
- package/dist/lib/state/utils.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2929,8 +2929,18 @@ function getActiveSummaryTokenUsage(state) {
|
|
|
2929
2929
|
}
|
|
2930
2930
|
return total;
|
|
2931
2931
|
}
|
|
2932
|
-
function resetOnCompaction(state) {
|
|
2932
|
+
function resetOnCompaction(state, messages = []) {
|
|
2933
2933
|
state.toolParameters.clear();
|
|
2934
|
+
if (messages.length === 0) {
|
|
2935
|
+
return;
|
|
2936
|
+
}
|
|
2937
|
+
const liveMessageIds = new Set(messages.map((msg) => msg.info.id));
|
|
2938
|
+
for (const [ref, rawId] of state.messageIds.byRef) {
|
|
2939
|
+
if (!liveMessageIds.has(rawId)) {
|
|
2940
|
+
state.messageIds.byRef.delete(ref);
|
|
2941
|
+
state.messageIds.byRawId.delete(rawId);
|
|
2942
|
+
}
|
|
2943
|
+
}
|
|
2934
2944
|
}
|
|
2935
2945
|
|
|
2936
2946
|
// lib/state/persistence.ts
|
|
@@ -3157,7 +3167,7 @@ var checkSession = async (client, state, logger, messages, manualModeDefault) =>
|
|
|
3157
3167
|
const lastCompactionTimestamp = findLastCompactionTimestamp(messages);
|
|
3158
3168
|
if (lastCompactionTimestamp > state.lastCompaction) {
|
|
3159
3169
|
state.lastCompaction = lastCompactionTimestamp;
|
|
3160
|
-
resetOnCompaction(state);
|
|
3170
|
+
resetOnCompaction(state, messages);
|
|
3161
3171
|
logger.info("Detected compaction - reset stale state", {
|
|
3162
3172
|
timestamp: lastCompactionTimestamp
|
|
3163
3173
|
});
|
|
@@ -5149,7 +5159,7 @@ Hard constraints
|
|
|
5149
5159
|
- If context needs compression, call \`compress\`. Do not write summaries inline.
|
|
5150
5160
|
- Use Markdown headings (e.g. \`## Analysis\`, \`## Summary\`) to organize information. Never use XML tags.
|
|
5151
5161
|
|
|
5152
|
-
|
|
5162
|
+
\`<dcp-message-id>\` and \`<dcp-system-reminder>\` are environment-injected metadata. Do not output them.
|
|
5153
5163
|
|
|
5154
5164
|
When to compress
|
|
5155
5165
|
|
|
@@ -6107,6 +6117,31 @@ function buildCompressedBlockGuidance(state) {
|
|
|
6107
6117
|
"- \u5982\u679C\u4F60\u9009\u62E9\u7684\u538B\u7F29\u8303\u56F4\u5305\u542B\u4EFB\u4F55\u5217\u51FA\u7684\u5757\uFF0C\u5728\u6458\u8981\u4E2D\u4F7F\u7528 `(bN)` \u6070\u597D\u5305\u542B\u6BCF\u4E2A\u5FC5\u9700\u7684\u5360\u4F4D\u7B26\u4E00\u6B21\u3002"
|
|
6108
6118
|
].join("\n");
|
|
6109
6119
|
}
|
|
6120
|
+
function buildAvailableMessageIdGuidance(state, messages) {
|
|
6121
|
+
const visibleIds = new Set(
|
|
6122
|
+
messages.filter((msg) => !isIgnoredUserMessage(msg) && !isMessageCompacted(state, msg)).map((msg) => msg.info.id)
|
|
6123
|
+
);
|
|
6124
|
+
const refs = [];
|
|
6125
|
+
for (const [ref, rawId] of state.messageIds.byRef) {
|
|
6126
|
+
if (visibleIds.has(rawId)) {
|
|
6127
|
+
refs.push(ref);
|
|
6128
|
+
}
|
|
6129
|
+
}
|
|
6130
|
+
refs.sort((a, b) => {
|
|
6131
|
+
const numA = Number.parseInt(a.slice(1), 10);
|
|
6132
|
+
const numB = Number.parseInt(b.slice(1), 10);
|
|
6133
|
+
return numA - numB;
|
|
6134
|
+
});
|
|
6135
|
+
if (refs.length === 0) {
|
|
6136
|
+
return "";
|
|
6137
|
+
}
|
|
6138
|
+
const refList = refs.length <= 15 ? refs.join(", ") : `${refs[0]} \u5230 ${refs[refs.length - 1]}\uFF08\u5171 ${refs.length} \u4E2A\uFF09`;
|
|
6139
|
+
return [
|
|
6140
|
+
"\u53EF\u7528\u6D88\u606F\u8FB9\u754C ID\uFF1A",
|
|
6141
|
+
`- \u5F53\u524D\u4E0A\u4E0B\u6587\u4E2D\u53EF\u4F5C\u4E3A compress \u8FB9\u754C\u7684\u5408\u6CD5\u6D88\u606F ID\uFF1A${refList}`,
|
|
6142
|
+
"- \u53EA\u4ECE\u4EE5\u4E0A\u5217\u8868\u4E2D\u9009\u53D6 startId \u548C endId\u3002\u4E0D\u8981\u53D1\u660E\u3001\u5916\u63A8\u6216\u4F7F\u7528\u4E0D\u5728\u5217\u8868\u4E2D\u7684 ID\u3002"
|
|
6143
|
+
].join("\n");
|
|
6144
|
+
}
|
|
6110
6145
|
function renderMessagePriorityGuidance(priorityLabel, refs) {
|
|
6111
6146
|
const refList = refs.length > 0 ? refs.join(", ") : "\u65E0";
|
|
6112
6147
|
const normalized = priorityLabel.toLowerCase();
|
|
@@ -6373,8 +6408,9 @@ function collectTurnNudgeAnchors2(state, config, messages) {
|
|
|
6373
6408
|
}
|
|
6374
6409
|
return turnNudgeAnchors;
|
|
6375
6410
|
}
|
|
6376
|
-
function applyRangeModeAnchoredNudge(anchorMessageIds, messages, baseNudgeText, compressedBlockGuidance) {
|
|
6377
|
-
const
|
|
6411
|
+
function applyRangeModeAnchoredNudge(anchorMessageIds, messages, baseNudgeText, compressedBlockGuidance, availableMessageIdGuidance) {
|
|
6412
|
+
const combinedGuidance = [availableMessageIdGuidance, compressedBlockGuidance].filter((g) => g.trim().length > 0).join("\n\n");
|
|
6413
|
+
const nudgeText = appendGuidanceToDcpTag(baseNudgeText, combinedGuidance);
|
|
6378
6414
|
if (!nudgeText.trim()) {
|
|
6379
6415
|
return;
|
|
6380
6416
|
}
|
|
@@ -6382,7 +6418,7 @@ function applyRangeModeAnchoredNudge(anchorMessageIds, messages, baseNudgeText,
|
|
|
6382
6418
|
injectAnchoredNudge(message, nudgeText);
|
|
6383
6419
|
}
|
|
6384
6420
|
}
|
|
6385
|
-
function applyMessageModeAnchoredNudge(anchorMessageIds, messages, baseNudgeText, compressionPriorities) {
|
|
6421
|
+
function applyMessageModeAnchoredNudge(anchorMessageIds, messages, baseNudgeText, availableMessageIdGuidance, compressionPriorities) {
|
|
6386
6422
|
for (const { message, index } of collectAnchoredMessages(anchorMessageIds, messages)) {
|
|
6387
6423
|
const priorityGuidance = buildMessagePriorityGuidance(
|
|
6388
6424
|
messages,
|
|
@@ -6390,51 +6426,60 @@ function applyMessageModeAnchoredNudge(anchorMessageIds, messages, baseNudgeText
|
|
|
6390
6426
|
index,
|
|
6391
6427
|
MESSAGE_MODE_NUDGE_PRIORITY
|
|
6392
6428
|
);
|
|
6393
|
-
const
|
|
6429
|
+
const combinedGuidance = [availableMessageIdGuidance, priorityGuidance].filter((g) => g.trim().length > 0).join("\n\n");
|
|
6430
|
+
const nudgeText = appendGuidanceToDcpTag(baseNudgeText, combinedGuidance);
|
|
6394
6431
|
injectAnchoredNudge(message, nudgeText);
|
|
6395
6432
|
}
|
|
6396
6433
|
}
|
|
6397
6434
|
function applyAnchoredNudges(state, config, messages, prompts, compressionPriorities) {
|
|
6398
6435
|
const turnNudgeAnchors = collectTurnNudgeAnchors2(state, config, messages);
|
|
6399
6436
|
if (config.compress.mode === "message") {
|
|
6437
|
+
const availableMessageIdGuidance2 = buildAvailableMessageIdGuidance(state, messages);
|
|
6400
6438
|
applyMessageModeAnchoredNudge(
|
|
6401
6439
|
state.nudges.contextLimitAnchors,
|
|
6402
6440
|
messages,
|
|
6403
6441
|
prompts.contextLimitNudge,
|
|
6442
|
+
availableMessageIdGuidance2,
|
|
6404
6443
|
compressionPriorities
|
|
6405
6444
|
);
|
|
6406
6445
|
applyMessageModeAnchoredNudge(
|
|
6407
6446
|
turnNudgeAnchors,
|
|
6408
6447
|
messages,
|
|
6409
6448
|
prompts.turnNudge,
|
|
6449
|
+
availableMessageIdGuidance2,
|
|
6410
6450
|
compressionPriorities
|
|
6411
6451
|
);
|
|
6412
6452
|
applyMessageModeAnchoredNudge(
|
|
6413
6453
|
state.nudges.iterationNudgeAnchors,
|
|
6414
6454
|
messages,
|
|
6415
6455
|
prompts.iterationNudge,
|
|
6456
|
+
availableMessageIdGuidance2,
|
|
6416
6457
|
compressionPriorities
|
|
6417
6458
|
);
|
|
6418
6459
|
return;
|
|
6419
6460
|
}
|
|
6420
6461
|
const compressedBlockGuidance = buildCompressedBlockGuidance(state);
|
|
6462
|
+
const availableMessageIdGuidance = buildAvailableMessageIdGuidance(state, messages);
|
|
6421
6463
|
applyRangeModeAnchoredNudge(
|
|
6422
6464
|
state.nudges.contextLimitAnchors,
|
|
6423
6465
|
messages,
|
|
6424
6466
|
prompts.contextLimitNudge,
|
|
6425
|
-
compressedBlockGuidance
|
|
6467
|
+
compressedBlockGuidance,
|
|
6468
|
+
availableMessageIdGuidance
|
|
6426
6469
|
);
|
|
6427
6470
|
applyRangeModeAnchoredNudge(
|
|
6428
6471
|
turnNudgeAnchors,
|
|
6429
6472
|
messages,
|
|
6430
6473
|
prompts.turnNudge,
|
|
6431
|
-
compressedBlockGuidance
|
|
6474
|
+
compressedBlockGuidance,
|
|
6475
|
+
availableMessageIdGuidance
|
|
6432
6476
|
);
|
|
6433
6477
|
applyRangeModeAnchoredNudge(
|
|
6434
6478
|
state.nudges.iterationNudgeAnchors,
|
|
6435
6479
|
messages,
|
|
6436
6480
|
prompts.iterationNudge,
|
|
6437
|
-
compressedBlockGuidance
|
|
6481
|
+
compressedBlockGuidance,
|
|
6482
|
+
availableMessageIdGuidance
|
|
6438
6483
|
);
|
|
6439
6484
|
}
|
|
6440
6485
|
|