opencode-acp 1.14.8-dev.4 → 1.14.8-dev.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/README.md CHANGED
@@ -492,6 +492,15 @@ For the complete list with root cause analysis, see the [bug tracker](https://gi
492
492
 
493
493
  ## Changelog
494
494
 
495
+ ### v1.14.8-dev.5 — Dev Prerelease (1 PR since v1.14.8-dev.4)
496
+
497
+ Dev prerelease covering PR #257. Published to `dev` npm tag for early testing.
498
+
499
+ **PRs included**:
500
+ - **#257** — Bump `context-compress-algorithms` from 1.2.1 to 1.3.0. cc-alg 1.3.0 ships holistic TIER2/TIER3 compression prompts — summarize by theme instead of per-block. The old per-block format (Source header + 3-5 bullets + 50-150 tokens per block) caused length overflow when compressing 70+ T1 blocks (~30K chars exceeding `maxSummaryLengthHard`). No source code changes needed (prompts consumed from dependency).
501
+
502
+ **Install**: `opencode plugin opencode-acp@dev --global`
503
+
495
504
  ### v1.14.8-dev.4 — Dev Prerelease (1 PR since v1.14.8-dev.3)
496
505
 
497
506
  Dev prerelease covering PR #252. Published to `dev` npm tag for early testing.
package/README.zh-CN.md CHANGED
@@ -446,6 +446,15 @@ ACP 是 DCP 的直接替代品。迁移步骤:
446
446
 
447
447
  ## 更新日志
448
448
 
449
+ ### v1.14.8-dev.5 — Dev 预发布(v1.14.8-dev.4 以来 1 个 PR)
450
+
451
+ Dev 预发布,涵盖 PR #257。发布到 `dev` npm tag 供早期测试。
452
+
453
+ **包含的 PR**:
454
+ - **#257** — 升级 `context-compress-algorithms` 从 1.2.1 到 1.3.0。cc-alg 1.3.0 提供整体式 TIER2/TIER3 压缩提示——按主题综合而非逐块处理。旧的逐块格式(Source 头 + 每块 3-5 条 + 每块 50-150 tokens)在压缩 70+ 个 T1 块时导致长度溢出(~30K 字符超过 `maxSummaryLengthHard`)。无需源码修改(提示从依赖中获取)。
455
+
456
+ **安装**: `opencode plugin opencode-acp@dev --global`
457
+
449
458
  ### v1.14.8-dev.4 — Dev 预发布(v1.14.8-dev.3 以来 1 个 PR)
450
459
 
451
460
  Dev 预发布,涵盖 PR #252。发布到 `dev` npm tag 供早期测试。
package/dist/index.js CHANGED
@@ -5500,7 +5500,7 @@ function evaluatePreCommitQuality(rawMessages, messageIds, messageTokenById, sum
5500
5500
  }
5501
5501
  }
5502
5502
 
5503
- // node_modules/context-compress-algorithms/dist/chunk-EBKMI537.js
5503
+ // node_modules/context-compress-algorithms/dist/chunk-YCHW53QG.js
5504
5504
  var COMPRESS_PHILOSOPHY = `Compression Philosophy:
5505
5505
  - All compression serves the primary task, but be frugal.
5506
5506
  - Context capacity is precious. Save context by compressing consumed outputs, not by avoiding tools.
@@ -5547,7 +5547,7 @@ PRIORITY \u2014 when the summary must be compact, preserve in this order:
5547
5547
  Write dense, scannable bullets \u2014 not narrative prose. If the range spans distinct concerns (request \u2192 findings \u2192 decision), group bullets under short thematic headers so a reader can scan to the part they need. Every line must earn its place. Do not mimic the style of existing summaries in context; follow these rules.`;
5548
5548
  var TIER2_DISTILL_RULES = `TIER 2 COMPRESSION \u2014 DISTILLATION
5549
5549
 
5550
- You are compressing historical summaries (not raw conversation). These summaries have already captured the details. Your job is to DISTILL them: extract only what matters for future work, discard the process.
5550
+ You are compressing historical summaries (not raw conversation). These summaries have already captured the details. Your job is to DISTILL them: write a holistic summary of what matters for future work, discarding the process.
5551
5551
 
5552
5552
  KEEP \u2014 these are the only things that survive distillation:
5553
5553
  - Decisions and their rationale ("chose X over Y because Z" \u2014 the "because" is load-bearing).
@@ -5555,9 +5555,9 @@ KEEP \u2014 these are the only things that survive distillation:
5555
5555
  - Key lessons: what failed and why ("tried X, failed because Y"). These prevent repeating mistakes.
5556
5556
  - Critical constraints discovered ("must support Node 22", "AGENTS.md forbids as any").
5557
5557
  - Design decisions with architectural impact ("chose compress-as-anchor over synthetic messages because prefix cache").
5558
- - Whether content is OBSOLETE or SUPERSEDED \u2014 mark with one line: "[SUPERSEDED by PR #NNN]" or "[OBSOLETE: deleted in vX.Y.Z]". Do NOT keep the obsolete content's details \u2014 just the marker and reason.
5559
- - Function/class/type names and module paths that are the SUBJECT of the work \u2014 e.g., "fixed filterCompressedRanges in prune.ts", "added SessionStateRegistry in state.ts". Not exact line numbers or full signatures \u2014 just enough to LOCATE the code without searching.
5560
- - Exploration findings: if a block was exploratory with no decision, keep the CONCLUSION in one line ("explored X, not viable because Y"). Do not keep the exploration process.
5558
+ - Whether content is OBSOLETE or SUPERSEDED \u2014 mark with one line: "[SUPERSEDED by PR #NNN]" or "[OBSOLETE: deleted in vX.Y.Z]".
5559
+ - Function/class/type names and module paths that are the SUBJECT of the work \u2014 e.g., "fixed filterCompressedRanges in prune.ts". Not exact line numbers or full signatures \u2014 just enough to LOCATE the code.
5560
+ - Exploration findings: if a block was exploratory with no decision, keep the CONCLUSION in one line.
5561
5561
 
5562
5562
  DROP \u2014 these were useful during the work but are no longer needed:
5563
5563
  - Exact line numbers, diffs, verbose function signatures, full code listings.
@@ -5566,20 +5566,17 @@ DROP \u2014 these were useful during the work but are no longer needed:
5566
5566
  - Verbose logs, command output, intermediate debugging steps.
5567
5567
 
5568
5568
  FORMAT:
5569
- - Start each distilled block with a source header line:
5570
- \`Source: bN+bM+... (XK\u2192YK tok, Zx). [original topic]\`
5571
- Example: \`Source: b5+b7 (56K+44K\u2192268 tok, 375x). [Tool-result recap + publish]\`
5572
- - 3-5 bullet points per source block, each a self-contained fact.
5573
- - Dense, scannable \u2014 no narrative prose.
5574
- - Start with the outcome, not the process: "v1.13.0 shipped (7 PRs bundled)" not "implemented 7 PRs then reviewed then merged".
5575
- - Cross-block synthesis: if multiple source blocks cover the same topic (same PR, same feature, same bug), MERGE them into a single group of bullets. Do not repeat the same fact from different blocks \u2014 keep it once under the most relevant source header.
5576
-
5577
- SIZE TARGET: 50-150 tokens per source block (excluding the header). If you can't fit it in 150 tokens, you're keeping too much process. If a block has nothing worth keeping (pure noise), output just the header followed by "[no actionable content]".`;
5569
+ - Write a HOLISTIC summary grouped by THEME, not by source block.
5570
+ - NO per-block headers. NO "Source: bN" lines. This is a review of what happened, not a catalog of blocks.
5571
+ - Group related work together: all releases in one section, all bug fixes in another, all architecture decisions in a third.
5572
+ - Start with the most important outcomes (shipped releases, merged PRs, critical bugs).
5573
+ - Dense, scannable bullets \u2014 no narrative prose.
5574
+ - Most blocks will collapse into 1-2 bullets within a theme group. Many will have nothing worth keeping \u2014 omit them entirely.`;
5578
5575
  var TIER3_CONDENSE_RULES = `TIER 3 COMPRESSION \u2014 ULTRA-CONDENSATION
5579
5576
 
5580
5577
  You are compressing distilled summaries (Tier 2) into ultra-condensed facts (Tier 3). The distilled summaries already contain only decisions and outcomes. Your job is to reduce them to bare factual references.
5581
5578
 
5582
- PRIORITY \u2014 when a source block has more facts than the size target allows, keep in this order:
5579
+ PRIORITY \u2014 keep in this order:
5583
5580
  1. Shipped outcomes (versions released, PRs merged) \u2014 these are permanent record.
5584
5581
  2. Open work (PRs/issues still pending) \u2014 these may need follow-up.
5585
5582
  3. Key decisions with architectural impact ("chose X over Y because Z").
@@ -5587,12 +5584,11 @@ PRIORITY \u2014 when a source block has more facts than the size target allows,
5587
5584
  Drop everything else. Tier 3 is a lookup index, not a knowledge base.
5588
5585
 
5589
5586
  FORMAT:
5590
- - Start with a source header line:
5591
- \`Source: bN+bM+... (XK\u2192YK tok, Zx). [original topic]\`
5592
- - Output 1-3 facts per source block. Each fact is a single line: subject + outcome.
5587
+ - Write a HOLISTIC list of bare facts, grouped by theme \u2014 not by source block.
5588
+ - NO per-block headers. NO "Source: bN" lines.
5589
+ - Each fact is a single line: "[PR/Issue/Version] \u2014 [outcome in \u22648 words]"
5590
+ - Merge related facts aggressively. If multiple blocks concern the same release/feature/bug, output ONE line covering all of them.
5593
5591
  - No explanations, no rationale, no process \u2014 just the fact.
5594
- - Format: "[PR/Issue/Version] \u2014 [outcome in \u22648 words]"
5595
- - Merge related facts from different source blocks if they concern the same topic.
5596
5592
 
5597
5593
  EXAMPLES:
5598
5594
  - "v1.13.0 shipped \u2014 quality gate + GC fix (7 PRs)"
@@ -5605,9 +5601,7 @@ DROP:
5605
5601
  - Multi-sentence context. If a fact needs >1 sentence, it's too detailed for Tier 3.
5606
5602
  - Lessons learned ("tried X, failed because Y") \u2014 drop UNLESS the failure is likely to recur and the block is <30 days old.
5607
5603
  - Design rationale details \u2014 keep the decision, drop the "because" unless it's a critical constraint.
5608
- - Anything marked [OBSOLETE] or [SUPERSEDED] \u2014 drop entirely, note "[N blocks obsolete]" in the summary.
5609
-
5610
- SIZE TARGET: 30-60 tokens per source block (including header). For a batch of N source blocks, total output \u2248 N \xD7 40 tokens. If a source block has only one trivial fact, output just the header + one line.`;
5604
+ - Anything marked [OBSOLETE] or [SUPERSEDED] \u2014 drop entirely, note "[N blocks obsolete]" at the end.`;
5611
5605
 
5612
5606
  // lib/compress/quality-gate/rejection.ts
5613
5607
  function formatMetric(result, name) {
@@ -8836,7 +8830,7 @@ import { writeFile as writeFile2, mkdir as mkdir2 } from "fs/promises";
8836
8830
  import { join as join3 } from "path";
8837
8831
  import { existsSync as existsSync3 } from "fs";
8838
8832
  import { homedir as homedir3 } from "os";
8839
- var LOG_VERSION = true ? "1.14.8-dev.4" : "dev";
8833
+ var LOG_VERSION = true ? "1.14.8-dev.5" : "dev";
8840
8834
  var Logger = class {
8841
8835
  logDir;
8842
8836
  enabled;