opencode-acp 1.14.16-pr.302.9 → 1.14.16-pr.303.11

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
@@ -2075,7 +2075,7 @@ THE FORMAT OF COMPRESS
2075
2075
  ]
2076
2076
  }
2077
2077
  \`\`\`
2078
- Each entry MAY have a topic. Missing topics fall back to the top-level topic, then to an automatic one derived from the summary.`;
2078
+ Each entry needs a topic \u2014 either its own or the top-level fallback.`;
2079
2079
 
2080
2080
  // lib/state/persistence.ts
2081
2081
  import * as fs from "fs/promises";
@@ -3756,11 +3756,8 @@ function filterProtectedRecentMessages(selection, searchContext, state, compress
3756
3756
 
3757
3757
  // lib/compress/range-utils.ts
3758
3758
  var BLOCK_PLACEHOLDER_REGEX = /\(b(\d+)\)|\{block_(\d+)\}/gi;
3759
- function deriveFallbackTopic(summary) {
3760
- const firstLine = summary.split("\n").map((line) => line.replace(/^#{1,6}\s*/, "").trim()).find((line) => line.length > 0) ?? "compressed range";
3761
- return firstLine.length > 80 ? `${firstLine.slice(0, 77)}...` : firstLine;
3762
- }
3763
3759
  function validateArgs(args) {
3760
+ const hasTopLevelTopic = typeof args.topic === "string" && args.topic.trim().length > 0;
3764
3761
  if (!Array.isArray(args.content) || args.content.length === 0) {
3765
3762
  throw new Error("content is required and must be a non-empty array");
3766
3763
  }
@@ -3776,12 +3773,18 @@ function validateArgs(args) {
3776
3773
  if (typeof entry?.summary !== "string" || entry.summary.trim().length === 0) {
3777
3774
  throw new Error(`${prefix}.summary is required and must be a non-empty string`);
3778
3775
  }
3776
+ const hasEntryTopic = typeof entry?.topic === "string" && entry.topic.trim().length > 0;
3777
+ if (!hasEntryTopic && !hasTopLevelTopic) {
3778
+ throw new Error(
3779
+ `${prefix} needs a topic \u2014 provide ${prefix}.topic or the top-level topic`
3780
+ );
3781
+ }
3779
3782
  }
3780
3783
  }
3781
3784
  function resolveRanges(args, searchContext, state, logger) {
3782
3785
  return args.content.map((entry, index) => {
3783
3786
  const normalizedEntry = {
3784
- topic: typeof entry.topic === "string" && entry.topic.trim().length > 0 ? entry.topic.trim() : typeof args.topic === "string" && args.topic.trim().length > 0 ? void 0 : deriveFallbackTopic(entry.summary),
3787
+ topic: typeof entry.topic === "string" && entry.topic.trim().length > 0 ? entry.topic.trim() : void 0,
3785
3788
  startId: entry.startId.trim(),
3786
3789
  endId: entry.endId.trim(),
3787
3790
  summary: entry.summary
@@ -8944,7 +8947,7 @@ import { writeFile as writeFile2, mkdir as mkdir2 } from "fs/promises";
8944
8947
  import { join as join3 } from "path";
8945
8948
  import { existsSync as existsSync3 } from "fs";
8946
8949
  import { homedir as homedir3 } from "os";
8947
- var LOG_VERSION = true ? "1.14.16-pr.302.9" : "dev";
8950
+ var LOG_VERSION = true ? "1.14.16-pr.303.11" : "dev";
8948
8951
  var Logger = class {
8949
8952
  logDir;
8950
8953
  enabled;
@@ -9272,7 +9275,7 @@ Rules:
9272
9275
  BATCHING
9273
9276
  When multiple independent ranges are ready and their boundaries do not overlap, include all of them as separate entries in the \`content\` array of a single tool call. Each entry should have its own \`startId\`, \`endId\`, and \`summary\`.
9274
9277
 
9275
- When the ranges cover unrelated topics, give each entry its own \`topic\` for better summary quality \u2014 do not force unrelated content under a single shared topic. The top-level \`topic\` is an optional fallback; when no topic is provided at all, one is derived from the summary's first line automatically.
9278
+ When the ranges cover unrelated topics, give each entry its own \`topic\` for better summary quality \u2014 do not force unrelated content under a single shared topic. Omit the top-level \`topic\` when every entry has its own. Use the top-level \`topic\` only as a fallback when entries don't specify one.
9276
9279
 
9277
9280
  \`\`\`
9278
9281
  compress({ content: [