opencode-acp 1.14.27-pr.367.104 → 1.14.27-pr.370.105

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 CHANGED
@@ -909,6 +909,8 @@ var VALID_CONFIG_KEYS = /* @__PURE__ */ new Set([
909
909
  "compress.preserveRecentMessages",
910
910
  "compress.preserveRecentTokens",
911
911
  "compress.preserveLastUserMessage",
912
+ "compress.stripProtectedReasoning",
913
+ "compress.stripProtectedReasoningThreshold",
912
914
  "gc",
913
915
  "gc.algorithm",
914
916
  "gc.promotionThreshold",
@@ -1262,6 +1264,20 @@ function validateConfigTypes(config) {
1262
1264
  actual: typeof compress.preserveLastUserMessage
1263
1265
  });
1264
1266
  }
1267
+ if (compress.stripProtectedReasoning !== void 0 && typeof compress.stripProtectedReasoning !== "boolean") {
1268
+ errors.push({
1269
+ key: "compress.stripProtectedReasoning",
1270
+ expected: "boolean",
1271
+ actual: typeof compress.stripProtectedReasoning
1272
+ });
1273
+ }
1274
+ if (compress.stripProtectedReasoningThreshold !== void 0 && (typeof compress.stripProtectedReasoningThreshold !== "number" || !Number.isFinite(compress.stripProtectedReasoningThreshold) || compress.stripProtectedReasoningThreshold < 0)) {
1275
+ errors.push({
1276
+ key: "compress.stripProtectedReasoningThreshold",
1277
+ expected: "number (>= 0)",
1278
+ actual: JSON.stringify(compress.stripProtectedReasoningThreshold)
1279
+ });
1280
+ }
1265
1281
  if (typeof compress.iterationNudgeThreshold === "number" && compress.iterationNudgeThreshold < 1) {
1266
1282
  errors.push({
1267
1283
  key: "compress.iterationNudgeThreshold",
@@ -1659,7 +1675,9 @@ var defaultConfig = {
1659
1675
  lastSegmentSoftBlock: true,
1660
1676
  preserveRecentMessages: 5,
1661
1677
  preserveRecentTokens: 5e3,
1662
- preserveLastUserMessage: true
1678
+ preserveLastUserMessage: true,
1679
+ stripProtectedReasoning: true,
1680
+ stripProtectedReasoningThreshold: 2048
1663
1681
  },
1664
1682
  gc: {
1665
1683
  algorithm: "truncate",
@@ -1829,7 +1847,9 @@ function mergeCompress(base, override) {
1829
1847
  lastSegmentSoftBlock: override.lastSegmentSoftBlock ?? base.lastSegmentSoftBlock,
1830
1848
  preserveRecentMessages: override.preserveRecentMessages ?? base.preserveRecentMessages,
1831
1849
  preserveRecentTokens: override.preserveRecentTokens ?? base.preserveRecentTokens,
1832
- preserveLastUserMessage: override.preserveLastUserMessage ?? base.preserveLastUserMessage
1850
+ preserveLastUserMessage: override.preserveLastUserMessage ?? base.preserveLastUserMessage,
1851
+ stripProtectedReasoning: override.stripProtectedReasoning ?? base.stripProtectedReasoning,
1852
+ stripProtectedReasoningThreshold: override.stripProtectedReasoningThreshold ?? base.stripProtectedReasoningThreshold
1833
1853
  };
1834
1854
  }
1835
1855
  function mergeCommands(base, override) {
@@ -8262,6 +8282,58 @@ function stripStaleMetadata(messages) {
8262
8282
  });
8263
8283
  });
8264
8284
  }
8285
+ function stripProtectedReasoning(messages, protectedTools, threshold) {
8286
+ if (protectedTools.length === 0) {
8287
+ return 0;
8288
+ }
8289
+ const lastUserMessage = getLastUserMessage(messages);
8290
+ if (!lastUserMessage || lastUserMessage.info.role !== "user") {
8291
+ return 0;
8292
+ }
8293
+ let lastUserIndex = -1;
8294
+ for (let i = messages.length - 1; i >= 0; i--) {
8295
+ if (messages[i] === lastUserMessage) {
8296
+ lastUserIndex = i;
8297
+ break;
8298
+ }
8299
+ }
8300
+ if (lastUserIndex <= 0) {
8301
+ return 0;
8302
+ }
8303
+ const protectedSet = new Set(protectedTools);
8304
+ let removed = 0;
8305
+ for (let i = 0; i < lastUserIndex; i++) {
8306
+ const message = messages[i];
8307
+ if (!message || message.info.role !== "assistant") {
8308
+ continue;
8309
+ }
8310
+ const parts = Array.isArray(message.parts) ? message.parts : [];
8311
+ let hasProtectedTool = false;
8312
+ let reasoningLength = 0;
8313
+ for (const part of parts) {
8314
+ if (part.type === "tool") {
8315
+ if (protectedSet.has(part.tool)) {
8316
+ hasProtectedTool = true;
8317
+ }
8318
+ } else if (part.type === "reasoning") {
8319
+ reasoningLength += part.text.length;
8320
+ }
8321
+ }
8322
+ if (!hasProtectedTool) {
8323
+ continue;
8324
+ }
8325
+ if (reasoningLength <= threshold) {
8326
+ continue;
8327
+ }
8328
+ const filtered = parts.filter((part) => part.type !== "reasoning");
8329
+ if (filtered.length === parts.length) {
8330
+ continue;
8331
+ }
8332
+ message.parts = filtered;
8333
+ removed += parts.length - filtered.length;
8334
+ }
8335
+ return removed;
8336
+ }
8265
8337
 
8266
8338
  // lib/messages/priority.ts
8267
8339
  function buildPriorityMap(_config, _state, _messages) {
@@ -9378,7 +9450,7 @@ import { writeFile as writeFile2, mkdir as mkdir2 } from "fs/promises";
9378
9450
  import { join as join3 } from "path";
9379
9451
  import { existsSync as existsSync3 } from "fs";
9380
9452
  import { homedir as homedir3 } from "os";
9381
- var LOG_VERSION = true ? "1.14.27-pr.367.104" : "dev";
9453
+ var LOG_VERSION = true ? "1.14.27-pr.370.105" : "dev";
9382
9454
  var LEVEL_RANK = {
9383
9455
  debug: 10,
9384
9456
  info: 20,
@@ -11395,6 +11467,18 @@ function createChatMessageTransformHandler(client, registry4, logger, config, pr
11395
11467
  prune(state, logger, config, output.messages);
11396
11468
  truncateLargeToolOutputs(state, config, logger, output.messages);
11397
11469
  hideConsumedCompressCalls(state, output.messages);
11470
+ if (config.compress.stripProtectedReasoning !== false) {
11471
+ const removedReasoning = stripProtectedReasoning(
11472
+ output.messages,
11473
+ config.compress.protectedTools,
11474
+ config.compress.stripProtectedReasoningThreshold ?? 2048
11475
+ );
11476
+ if (removedReasoning > 0) {
11477
+ logger.debug("stripProtectedReasoning: removed reasoning parts from historical protected messages", {
11478
+ removed: removedReasoning
11479
+ });
11480
+ }
11481
+ }
11398
11482
  assignMessageRefs(state, output.messages);
11399
11483
  const compressionPriorities = buildPriorityMap(config, state, output.messages);
11400
11484
  prompts.reload();
@@ -11851,7 +11935,7 @@ var server = (async (ctx) => {
11851
11935
  }
11852
11936
  const logger = new Logger(config.debug, config.debug ? "debug" : config.logLevel);
11853
11937
  logger.info("ACP plugin initialized", {
11854
- version: true ? "1.14.27-pr.367.104" : "dev",
11938
+ version: true ? "1.14.27-pr.370.105" : "dev",
11855
11939
  workspace: ctx.directory,
11856
11940
  logLevel: logger.level,
11857
11941
  debug: config.debug,