opencode-acp 1.18.0-pr.394.154 → 1.18.0-pr.397.156
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 +107 -116
- package/dist/index.js.map +1 -1
- package/dist/lib/compress/quality-gate/rejection.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -6309,109 +6309,6 @@ function evaluatePreCommitQuality(rawMessages, messageIds, messageTokenById, sum
|
|
|
6309
6309
|
}
|
|
6310
6310
|
}
|
|
6311
6311
|
|
|
6312
|
-
// node_modules/context-compress-algorithms/dist/chunk-YCHW53QG.js
|
|
6313
|
-
var COMPRESS_PHILOSOPHY = `Compression Philosophy:
|
|
6314
|
-
- All compression serves the primary task, but be frugal.
|
|
6315
|
-
- Context capacity is precious. Save context by compressing consumed outputs, not by avoiding tools.
|
|
6316
|
-
- Compress by need, not by percentage.
|
|
6317
|
-
- Work from summaries, not raw tool outputs. All listed ranges (user prompts, tool outputs, code, logs, exploration, intermediate steps) should be compressed to summary format \u2014 the ONLY exceptions are protected content, content the current step is actively using, or critical content you cannot reconstruct.
|
|
6318
|
-
- Curate summaries like a well-structured document. User prompts, compressed tool outputs, code, logs, or skill-call intermediate results that are critically important should be preserved \u2014 not by exempting them from compression, but by embedding them in the summary via [[KEEP:mNNNNN]] (auto-expanded verbatim) and [[REF:mNNNNN|description]] (compact link).`;
|
|
6319
|
-
var HOW_TO_COMPRESS_RULES = `HOW TO COMPRESS
|
|
6320
|
-
|
|
6321
|
-
When you call \`compress\`, the summary you write becomes the only record of the replaced conversation. Make it self-contained and complete: every user request, experiment purpose, and work task in the range must be accurately captured. A later reader (or you, after decompressing) should be able to continue the task WITHOUT needing the original.
|
|
6322
|
-
|
|
6323
|
-
KEEP VERBATIM \u2014 never paraphrase or abbreviate these:
|
|
6324
|
-
- Full file paths with line numbers, directory prefix on every mention (\`lib/hooks.ts:347\`, \`src/index.ts:12-18\`, \`gatenet_v3/model.py:45\`). Never abbreviate to a bare filename (\`hooks.ts\`, \`model.py\`) \u2014 they are ambiguous and cannot be grepped or decompressed-to later.
|
|
6325
|
-
- Function, class, and type signatures (exact names, params, return types) AND critical code lines that encode logic \u2014 the line that IS the finding, not just the function name (e.g. \`kv_keys += define_gate * a_key[i](emb)\` is more useful than "see model_kvnet.py").
|
|
6326
|
-
- Error messages and stack traces (exact text \u2014 you need the literal string to grep for it later).
|
|
6327
|
-
- Key details from reports and analyses \u2014 not just the conclusion. Keep the comparison numbers and the mechanism, not "X is worse" alone (write "1.76\xD7 PPL gap because KV store is static", not "KVNet underperforms").
|
|
6328
|
-
- Decisions and their rationale ("chose X over Y because Z" \u2014 the "because" is load-bearing; without it the decision looks arbitrary).
|
|
6329
|
-
- Constraints discovered ("must support Node 22", "no new dependencies", "AGENTS.md forbids \`as any\`").
|
|
6330
|
-
- Exact values: versions, config keys, thresholds, magic numbers.
|
|
6331
|
-
- User intent \u2014 quote short user messages verbatim. When the message is too long to quote, preserve intent with extra care: do not change scope, constraints, priorities, acceptance criteria, or requested outcomes. Mark them clearly as past quotes (e.g., "User said: ..."), not as current directives. Losing these changes the task itself.
|
|
6332
|
-
- The user's overall goal and any changes to it \u2014 the big-picture objective plus how it evolved during the compressed range. Each summary must reflect the goal as it stood at the end of the range, including pivots (e.g., "initially: fix bug X \u2192 pivoted to: refactor module Y after discovering root cause"). Losing the goal or its evolution makes all subsequent work appear unmotivated.
|
|
6333
|
-
- Purpose behind each significant action \u2014 preserve not just what was done but why: the hypothesis behind each experiment, the question behind each exploration, the task goal behind each work action. Without purpose, the summary reads as disconnected technical steps with no through-line.
|
|
6334
|
-
- Open questions and unresolved TODOs \u2014 losing these changes what work appears to remain.
|
|
6335
|
-
- Message refs of key anchors (\`m00420\`, \`m00510\u2013m00520\`) \u2014 they let you or a later reader jump back via decompress to the exact original.
|
|
6336
|
-
|
|
6337
|
-
DROP \u2014 extract the signal, discard the vessel:
|
|
6338
|
-
- Verbose logs (build/test/\`npm\` output) once you have captured the error line or the result.
|
|
6339
|
-
- Duplicate file reads once the needed content is recorded.
|
|
6340
|
-
- Consumed exploration \u2014 search hits, agent return values, successful tool outputs \u2014 once you have extracted the facts you need (same rule as dead-ends, but nothing went wrong; the content is simply spent).
|
|
6341
|
-
- Dead-end exploration \u2014 but PRESERVE the lesson in one line: "tried X, failed because Y".
|
|
6342
|
-
- Back-and-forth discussion and self-corrections once the final position is captured (keep the outcome, drop the journey to it).
|
|
6343
|
-
- Repeated status checks (\`git status\`, \`ls\`) once state is known.
|
|
6344
|
-
|
|
6345
|
-
For each significant item you DROP (scripts, reports, large analyses, long tool outputs), add a one-line CONTENT description of what it covers \u2014 not where it lives. Bad: "probe script at /path/probe_kvnet.py". Good: "probe_kvnet.py: tests n-gram baseline, generation quality, long-range dependency, position sensitivity, op pipeline, QUERY attention." This lets a later decompress target the right block by relevance, not by guessing locations.
|
|
6346
|
-
|
|
6347
|
-
KEEP MARKERS: \`[[KEEP:mNNNNN]]\` expands original message content into the summary (truncated to a max length). Do NOT use KEEP for verbose command output, diagnostic scripts, log dumps, or any content whose value is in the conclusion rather than the raw output \u2014 summarize these or use \`[[REF:mNNNNN|desc]]\` instead.
|
|
6348
|
-
|
|
6349
|
-
PRIORITY \u2014 when the summary must be compact, preserve in this order:
|
|
6350
|
-
1. User's overall goal, goal evolution, intent, and hard constraints (losing these changes the task).
|
|
6351
|
-
2. Decisions and rationale.
|
|
6352
|
-
3. Exact technical artifacts: paths, signatures, errors, values.
|
|
6353
|
-
4. Conclusions and key findings.
|
|
6354
|
-
5. Lessons learned: what failed and why.
|
|
6355
|
-
|
|
6356
|
-
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.`;
|
|
6357
|
-
var TIER2_DISTILL_RULES = `TIER 2 COMPRESSION \u2014 DISTILLATION
|
|
6358
|
-
|
|
6359
|
-
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.
|
|
6360
|
-
|
|
6361
|
-
KEEP \u2014 these are the only things that survive distillation:
|
|
6362
|
-
- Decisions and their rationale ("chose X over Y because Z" \u2014 the "because" is load-bearing).
|
|
6363
|
-
- Final outcomes: version numbers shipped, PR numbers merged/closed, bugs fixed or deferred.
|
|
6364
|
-
- Key lessons: what failed and why ("tried X, failed because Y"). These prevent repeating mistakes.
|
|
6365
|
-
- Critical constraints discovered ("must support Node 22", "AGENTS.md forbids as any").
|
|
6366
|
-
- Design decisions with architectural impact ("chose compress-as-anchor over synthetic messages because prefix cache").
|
|
6367
|
-
- Whether content is OBSOLETE or SUPERSEDED \u2014 mark with one line: "[SUPERSEDED by PR #NNN]" or "[OBSOLETE: deleted in vX.Y.Z]".
|
|
6368
|
-
- 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.
|
|
6369
|
-
- Exploration findings: if a block was exploratory with no decision, keep the CONCLUSION in one line.
|
|
6370
|
-
|
|
6371
|
-
DROP \u2014 these were useful during the work but are no longer needed:
|
|
6372
|
-
- Exact line numbers, diffs, verbose function signatures, full code listings.
|
|
6373
|
-
- Build/deploy process details, test execution steps.
|
|
6374
|
-
- Review process details (who reviewed, what rounds, test counts).
|
|
6375
|
-
- Verbose logs, command output, intermediate debugging steps.
|
|
6376
|
-
|
|
6377
|
-
FORMAT:
|
|
6378
|
-
- Write a HOLISTIC summary grouped by THEME, not by source block.
|
|
6379
|
-
- NO per-block headers. NO "Source: bN" lines. This is a review of what happened, not a catalog of blocks.
|
|
6380
|
-
- Group related work together: all releases in one section, all bug fixes in another, all architecture decisions in a third.
|
|
6381
|
-
- Start with the most important outcomes (shipped releases, merged PRs, critical bugs).
|
|
6382
|
-
- Dense, scannable bullets \u2014 no narrative prose.
|
|
6383
|
-
- Most blocks will collapse into 1-2 bullets within a theme group. Many will have nothing worth keeping \u2014 omit them entirely.`;
|
|
6384
|
-
var TIER3_CONDENSE_RULES = `TIER 3 COMPRESSION \u2014 ULTRA-CONDENSATION
|
|
6385
|
-
|
|
6386
|
-
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.
|
|
6387
|
-
|
|
6388
|
-
PRIORITY \u2014 keep in this order:
|
|
6389
|
-
1. Shipped outcomes (versions released, PRs merged) \u2014 these are permanent record.
|
|
6390
|
-
2. Open work (PRs/issues still pending) \u2014 these may need follow-up.
|
|
6391
|
-
3. Key decisions with architectural impact ("chose X over Y because Z").
|
|
6392
|
-
4. Critical constraints ("must support Node 22").
|
|
6393
|
-
Drop everything else. Tier 3 is a lookup index, not a knowledge base.
|
|
6394
|
-
|
|
6395
|
-
FORMAT:
|
|
6396
|
-
- Write a HOLISTIC list of bare facts, grouped by theme \u2014 not by source block.
|
|
6397
|
-
- NO per-block headers. NO "Source: bN" lines.
|
|
6398
|
-
- Each fact is a single line: "[PR/Issue/Version] \u2014 [outcome in \u22648 words]"
|
|
6399
|
-
- Merge related facts aggressively. If multiple blocks concern the same release/feature/bug, output ONE line covering all of them.
|
|
6400
|
-
- No explanations, no rationale, no process \u2014 just the fact.
|
|
6401
|
-
|
|
6402
|
-
EXAMPLES:
|
|
6403
|
-
- "v1.13.0 shipped \u2014 quality gate + GC fix (7 PRs)"
|
|
6404
|
-
- "PR #196 merged \u2014 preserve-first-user (supersedes #169)"
|
|
6405
|
-
- "Bug 1214 fixed \u2014 compress consumed all user messages"
|
|
6406
|
-
- "Chose compress-as-anchor \u2014 prefix cache benefit over synthetic injection"
|
|
6407
|
-
- "Constraint: AGENTS.md forbids as any \u2014 never suppress types"
|
|
6408
|
-
|
|
6409
|
-
DROP:
|
|
6410
|
-
- Multi-sentence context. If a fact needs >1 sentence, it's too detailed for Tier 3.
|
|
6411
|
-
- Lessons learned ("tried X, failed because Y") \u2014 drop UNLESS the failure is likely to recur and the block is <30 days old.
|
|
6412
|
-
- Design rationale details \u2014 keep the decision, drop the "because" unless it's a critical constraint.
|
|
6413
|
-
- Anything marked [OBSOLETE] or [SUPERSEDED] \u2014 drop entirely, note "[N blocks obsolete]" at the end.`;
|
|
6414
|
-
|
|
6415
6312
|
// lib/compress/quality-gate/rejection.ts
|
|
6416
6313
|
function formatMetric(result, name) {
|
|
6417
6314
|
const m = result.metrics.find((x) => x.name === name);
|
|
@@ -6438,6 +6335,7 @@ function computeStats(plan) {
|
|
|
6438
6335
|
function buildQualityRejectionError(plan, result) {
|
|
6439
6336
|
const stats = computeStats(plan);
|
|
6440
6337
|
const metrics = [
|
|
6338
|
+
`Reason: ${result.reason || "unknown"}`,
|
|
6441
6339
|
`Original: ~${stats.originalTokens} tokens`,
|
|
6442
6340
|
`Summary: ${stats.summaryChars} chars`,
|
|
6443
6341
|
`Ratio: ${stats.ratio}:1`,
|
|
@@ -6451,17 +6349,7 @@ function buildQualityRejectionError(plan, result) {
|
|
|
6451
6349
|
Range: ${plan.startId}\u2013${plan.endId}
|
|
6452
6350
|
${metrics.join("\n")}
|
|
6453
6351
|
|
|
6454
|
-
\
|
|
6455
|
-
Once a compression is accepted, the original messages are permanently removed from visible context.
|
|
6456
|
-
Your summary becomes the SOLE record. If it fails, subsequent work is built on a broken foundation \u2014
|
|
6457
|
-
memory loss \u2192 wrong assumptions \u2192 entire reasoning chain collapse.
|
|
6458
|
-
Treat every compression with maximum care.
|
|
6459
|
-
|
|
6460
|
-
${HOW_TO_COMPRESS_RULES}
|
|
6461
|
-
|
|
6462
|
-
To retry: rewrite a more complete summary that preserves critical details (file paths, decisions,
|
|
6463
|
-
exact values, errors). Then add "acknowledgeRisk": true to the compress tool call parameters.
|
|
6464
|
-
Without acknowledgeRisk: true, the compression will be rejected again.`;
|
|
6352
|
+
Retry: rewrite a more complete summary that preserves critical details (file paths, decisions, exact values, errors) and call compress again on the same range \u2014 the gate re-evaluates automatically. Full compression rules are already in your system prompt. If you are confident the summary is correct despite the metrics, add "acknowledgeRisk": true to bypass this rejection once.`;
|
|
6465
6353
|
return new Error(message);
|
|
6466
6354
|
}
|
|
6467
6355
|
|
|
@@ -8333,6 +8221,109 @@ var ITERATION_CANDIDATE_GUIDANCE = `
|
|
|
8333
8221
|
MICRO candidates are complete large messages or tool transactions. EPISODE candidates are contiguous historical segments. They are independent suggestions and may be batched, but preserve anything still needed for the current task. Do not compress active work or every candidate.
|
|
8334
8222
|
`;
|
|
8335
8223
|
|
|
8224
|
+
// node_modules/context-compress-algorithms/dist/chunk-YCHW53QG.js
|
|
8225
|
+
var COMPRESS_PHILOSOPHY = `Compression Philosophy:
|
|
8226
|
+
- All compression serves the primary task, but be frugal.
|
|
8227
|
+
- Context capacity is precious. Save context by compressing consumed outputs, not by avoiding tools.
|
|
8228
|
+
- Compress by need, not by percentage.
|
|
8229
|
+
- Work from summaries, not raw tool outputs. All listed ranges (user prompts, tool outputs, code, logs, exploration, intermediate steps) should be compressed to summary format \u2014 the ONLY exceptions are protected content, content the current step is actively using, or critical content you cannot reconstruct.
|
|
8230
|
+
- Curate summaries like a well-structured document. User prompts, compressed tool outputs, code, logs, or skill-call intermediate results that are critically important should be preserved \u2014 not by exempting them from compression, but by embedding them in the summary via [[KEEP:mNNNNN]] (auto-expanded verbatim) and [[REF:mNNNNN|description]] (compact link).`;
|
|
8231
|
+
var HOW_TO_COMPRESS_RULES = `HOW TO COMPRESS
|
|
8232
|
+
|
|
8233
|
+
When you call \`compress\`, the summary you write becomes the only record of the replaced conversation. Make it self-contained and complete: every user request, experiment purpose, and work task in the range must be accurately captured. A later reader (or you, after decompressing) should be able to continue the task WITHOUT needing the original.
|
|
8234
|
+
|
|
8235
|
+
KEEP VERBATIM \u2014 never paraphrase or abbreviate these:
|
|
8236
|
+
- Full file paths with line numbers, directory prefix on every mention (\`lib/hooks.ts:347\`, \`src/index.ts:12-18\`, \`gatenet_v3/model.py:45\`). Never abbreviate to a bare filename (\`hooks.ts\`, \`model.py\`) \u2014 they are ambiguous and cannot be grepped or decompressed-to later.
|
|
8237
|
+
- Function, class, and type signatures (exact names, params, return types) AND critical code lines that encode logic \u2014 the line that IS the finding, not just the function name (e.g. \`kv_keys += define_gate * a_key[i](emb)\` is more useful than "see model_kvnet.py").
|
|
8238
|
+
- Error messages and stack traces (exact text \u2014 you need the literal string to grep for it later).
|
|
8239
|
+
- Key details from reports and analyses \u2014 not just the conclusion. Keep the comparison numbers and the mechanism, not "X is worse" alone (write "1.76\xD7 PPL gap because KV store is static", not "KVNet underperforms").
|
|
8240
|
+
- Decisions and their rationale ("chose X over Y because Z" \u2014 the "because" is load-bearing; without it the decision looks arbitrary).
|
|
8241
|
+
- Constraints discovered ("must support Node 22", "no new dependencies", "AGENTS.md forbids \`as any\`").
|
|
8242
|
+
- Exact values: versions, config keys, thresholds, magic numbers.
|
|
8243
|
+
- User intent \u2014 quote short user messages verbatim. When the message is too long to quote, preserve intent with extra care: do not change scope, constraints, priorities, acceptance criteria, or requested outcomes. Mark them clearly as past quotes (e.g., "User said: ..."), not as current directives. Losing these changes the task itself.
|
|
8244
|
+
- The user's overall goal and any changes to it \u2014 the big-picture objective plus how it evolved during the compressed range. Each summary must reflect the goal as it stood at the end of the range, including pivots (e.g., "initially: fix bug X \u2192 pivoted to: refactor module Y after discovering root cause"). Losing the goal or its evolution makes all subsequent work appear unmotivated.
|
|
8245
|
+
- Purpose behind each significant action \u2014 preserve not just what was done but why: the hypothesis behind each experiment, the question behind each exploration, the task goal behind each work action. Without purpose, the summary reads as disconnected technical steps with no through-line.
|
|
8246
|
+
- Open questions and unresolved TODOs \u2014 losing these changes what work appears to remain.
|
|
8247
|
+
- Message refs of key anchors (\`m00420\`, \`m00510\u2013m00520\`) \u2014 they let you or a later reader jump back via decompress to the exact original.
|
|
8248
|
+
|
|
8249
|
+
DROP \u2014 extract the signal, discard the vessel:
|
|
8250
|
+
- Verbose logs (build/test/\`npm\` output) once you have captured the error line or the result.
|
|
8251
|
+
- Duplicate file reads once the needed content is recorded.
|
|
8252
|
+
- Consumed exploration \u2014 search hits, agent return values, successful tool outputs \u2014 once you have extracted the facts you need (same rule as dead-ends, but nothing went wrong; the content is simply spent).
|
|
8253
|
+
- Dead-end exploration \u2014 but PRESERVE the lesson in one line: "tried X, failed because Y".
|
|
8254
|
+
- Back-and-forth discussion and self-corrections once the final position is captured (keep the outcome, drop the journey to it).
|
|
8255
|
+
- Repeated status checks (\`git status\`, \`ls\`) once state is known.
|
|
8256
|
+
|
|
8257
|
+
For each significant item you DROP (scripts, reports, large analyses, long tool outputs), add a one-line CONTENT description of what it covers \u2014 not where it lives. Bad: "probe script at /path/probe_kvnet.py". Good: "probe_kvnet.py: tests n-gram baseline, generation quality, long-range dependency, position sensitivity, op pipeline, QUERY attention." This lets a later decompress target the right block by relevance, not by guessing locations.
|
|
8258
|
+
|
|
8259
|
+
KEEP MARKERS: \`[[KEEP:mNNNNN]]\` expands original message content into the summary (truncated to a max length). Do NOT use KEEP for verbose command output, diagnostic scripts, log dumps, or any content whose value is in the conclusion rather than the raw output \u2014 summarize these or use \`[[REF:mNNNNN|desc]]\` instead.
|
|
8260
|
+
|
|
8261
|
+
PRIORITY \u2014 when the summary must be compact, preserve in this order:
|
|
8262
|
+
1. User's overall goal, goal evolution, intent, and hard constraints (losing these changes the task).
|
|
8263
|
+
2. Decisions and rationale.
|
|
8264
|
+
3. Exact technical artifacts: paths, signatures, errors, values.
|
|
8265
|
+
4. Conclusions and key findings.
|
|
8266
|
+
5. Lessons learned: what failed and why.
|
|
8267
|
+
|
|
8268
|
+
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.`;
|
|
8269
|
+
var TIER2_DISTILL_RULES = `TIER 2 COMPRESSION \u2014 DISTILLATION
|
|
8270
|
+
|
|
8271
|
+
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.
|
|
8272
|
+
|
|
8273
|
+
KEEP \u2014 these are the only things that survive distillation:
|
|
8274
|
+
- Decisions and their rationale ("chose X over Y because Z" \u2014 the "because" is load-bearing).
|
|
8275
|
+
- Final outcomes: version numbers shipped, PR numbers merged/closed, bugs fixed or deferred.
|
|
8276
|
+
- Key lessons: what failed and why ("tried X, failed because Y"). These prevent repeating mistakes.
|
|
8277
|
+
- Critical constraints discovered ("must support Node 22", "AGENTS.md forbids as any").
|
|
8278
|
+
- Design decisions with architectural impact ("chose compress-as-anchor over synthetic messages because prefix cache").
|
|
8279
|
+
- Whether content is OBSOLETE or SUPERSEDED \u2014 mark with one line: "[SUPERSEDED by PR #NNN]" or "[OBSOLETE: deleted in vX.Y.Z]".
|
|
8280
|
+
- 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.
|
|
8281
|
+
- Exploration findings: if a block was exploratory with no decision, keep the CONCLUSION in one line.
|
|
8282
|
+
|
|
8283
|
+
DROP \u2014 these were useful during the work but are no longer needed:
|
|
8284
|
+
- Exact line numbers, diffs, verbose function signatures, full code listings.
|
|
8285
|
+
- Build/deploy process details, test execution steps.
|
|
8286
|
+
- Review process details (who reviewed, what rounds, test counts).
|
|
8287
|
+
- Verbose logs, command output, intermediate debugging steps.
|
|
8288
|
+
|
|
8289
|
+
FORMAT:
|
|
8290
|
+
- Write a HOLISTIC summary grouped by THEME, not by source block.
|
|
8291
|
+
- NO per-block headers. NO "Source: bN" lines. This is a review of what happened, not a catalog of blocks.
|
|
8292
|
+
- Group related work together: all releases in one section, all bug fixes in another, all architecture decisions in a third.
|
|
8293
|
+
- Start with the most important outcomes (shipped releases, merged PRs, critical bugs).
|
|
8294
|
+
- Dense, scannable bullets \u2014 no narrative prose.
|
|
8295
|
+
- Most blocks will collapse into 1-2 bullets within a theme group. Many will have nothing worth keeping \u2014 omit them entirely.`;
|
|
8296
|
+
var TIER3_CONDENSE_RULES = `TIER 3 COMPRESSION \u2014 ULTRA-CONDENSATION
|
|
8297
|
+
|
|
8298
|
+
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.
|
|
8299
|
+
|
|
8300
|
+
PRIORITY \u2014 keep in this order:
|
|
8301
|
+
1. Shipped outcomes (versions released, PRs merged) \u2014 these are permanent record.
|
|
8302
|
+
2. Open work (PRs/issues still pending) \u2014 these may need follow-up.
|
|
8303
|
+
3. Key decisions with architectural impact ("chose X over Y because Z").
|
|
8304
|
+
4. Critical constraints ("must support Node 22").
|
|
8305
|
+
Drop everything else. Tier 3 is a lookup index, not a knowledge base.
|
|
8306
|
+
|
|
8307
|
+
FORMAT:
|
|
8308
|
+
- Write a HOLISTIC list of bare facts, grouped by theme \u2014 not by source block.
|
|
8309
|
+
- NO per-block headers. NO "Source: bN" lines.
|
|
8310
|
+
- Each fact is a single line: "[PR/Issue/Version] \u2014 [outcome in \u22648 words]"
|
|
8311
|
+
- Merge related facts aggressively. If multiple blocks concern the same release/feature/bug, output ONE line covering all of them.
|
|
8312
|
+
- No explanations, no rationale, no process \u2014 just the fact.
|
|
8313
|
+
|
|
8314
|
+
EXAMPLES:
|
|
8315
|
+
- "v1.13.0 shipped \u2014 quality gate + GC fix (7 PRs)"
|
|
8316
|
+
- "PR #196 merged \u2014 preserve-first-user (supersedes #169)"
|
|
8317
|
+
- "Bug 1214 fixed \u2014 compress consumed all user messages"
|
|
8318
|
+
- "Chose compress-as-anchor \u2014 prefix cache benefit over synthetic injection"
|
|
8319
|
+
- "Constraint: AGENTS.md forbids as any \u2014 never suppress types"
|
|
8320
|
+
|
|
8321
|
+
DROP:
|
|
8322
|
+
- Multi-sentence context. If a fact needs >1 sentence, it's too detailed for Tier 3.
|
|
8323
|
+
- Lessons learned ("tried X, failed because Y") \u2014 drop UNLESS the failure is likely to recur and the block is <30 days old.
|
|
8324
|
+
- Design rationale details \u2014 keep the decision, drop the "because" unless it's a critical constraint.
|
|
8325
|
+
- Anything marked [OBSOLETE] or [SUPERSEDED] \u2014 drop entirely, note "[N blocks obsolete]" at the end.`;
|
|
8326
|
+
|
|
8336
8327
|
// lib/messages/inject/candidates.ts
|
|
8337
8328
|
function partToolNames(message) {
|
|
8338
8329
|
const names = /* @__PURE__ */ new Set();
|
|
@@ -10553,7 +10544,7 @@ import { writeFile as writeFile2, mkdir as mkdir2 } from "fs/promises";
|
|
|
10553
10544
|
import { join as join4 } from "path";
|
|
10554
10545
|
import { existsSync as existsSync4 } from "fs";
|
|
10555
10546
|
import { homedir as homedir3 } from "os";
|
|
10556
|
-
var LOG_VERSION = true ? "1.18.0-pr.
|
|
10547
|
+
var LOG_VERSION = true ? "1.18.0-pr.397.156" : "dev";
|
|
10557
10548
|
var LEVEL_RANK = {
|
|
10558
10549
|
debug: 10,
|
|
10559
10550
|
info: 20,
|
|
@@ -13236,7 +13227,7 @@ var server = (async (ctx) => {
|
|
|
13236
13227
|
}
|
|
13237
13228
|
const logger = new Logger(config.debug, config.debug ? "debug" : config.logLevel);
|
|
13238
13229
|
logger.info("ACP plugin initialized", {
|
|
13239
|
-
version: true ? "1.18.0-pr.
|
|
13230
|
+
version: true ? "1.18.0-pr.397.156" : "dev",
|
|
13240
13231
|
workspace: ctx.directory,
|
|
13241
13232
|
logLevel: logger.level,
|
|
13242
13233
|
debug: config.debug,
|