acp-kernel 0.0.84 → 0.0.85-pr.378.237
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/absorb.d.ts +2 -2
- package/dist/absorb.d.ts.map +1 -1
- package/dist/ccr.d.ts.map +1 -1
- package/dist/compress.d.ts.map +1 -1
- package/dist/crush.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +204 -108
- package/dist/index.js.map +1 -1
- package/dist/protected.d.ts +43 -5
- package/dist/protected.d.ts.map +1 -1
- package/dist/recommend.d.ts.map +1 -1
- package/dist/rules.d.ts +6 -3
- package/dist/rules.d.ts.map +1 -1
- package/dist/types.d.ts +5 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/wire/index.js +19 -2
- package/dist/wire/index.js.map +1 -1
- package/dist/wire/openai.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/absorb.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type LatestProtected } from "./protected.js";
|
|
1
|
+
import { type LatestProtected, type RulePairProtection } from "./protected.js";
|
|
2
2
|
import type { AbsorbConfig, Config, CompressionState, CoreMessage } from "./types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Instant tool-result absorption ("absorb") — the middle layer between
|
|
@@ -18,7 +18,7 @@ export declare function buildAbsorbPrompt(ref: string, tokens: number, toolName?
|
|
|
18
18
|
export declare function buildAbsorbSystemPrompt(toolName?: string): string;
|
|
19
19
|
/** True when a tool-result message is in scope for absorption prompting:
|
|
20
20
|
* a tool-result of a non-ACP, non-excluded, non-protected tool. */
|
|
21
|
-
export declare function isAbsorbCandidate(msg: CoreMessage, config: Config, latest?: LatestProtected): boolean;
|
|
21
|
+
export declare function isAbsorbCandidate(msg: CoreMessage, config: Config, latest?: LatestProtected, rule?: RulePairProtection): boolean;
|
|
22
22
|
/** Drop tool-call + tool-result pairs recorded in state.absorbed. Both halves
|
|
23
23
|
* go together so the provider-visible conversation stays structurally valid;
|
|
24
24
|
* prune's orphan stripping cleans up any straddling leftovers. */
|
package/dist/absorb.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"absorb.d.ts","sourceRoot":"","sources":["../src/absorb.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"absorb.d.ts","sourceRoot":"","sources":["../src/absorb.ts"],"names":[],"mappings":"AAGA,OAAO,EAOL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,YAAY,EAEZ,MAAM,EACN,gBAAgB,EAChB,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;GASG;AAEH,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAEnD,eAAO,MAAM,qBAAqB,EAAE,YAQnC,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAEhE;AAQD,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAyB,GAClC,MAAM,CAQR;AAED,8DAA8D;AAC9D,wBAAgB,uBAAuB,CACrC,QAAQ,GAAE,MAAyB,GAClC,MAAM,CAIR;AAWD;oEACoE;AACpE,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,eAAe,EACxB,IAAI,CAAC,EAAE,kBAAkB,GACxB,OAAO,CAYT;AAED;;mEAEmE;AACnE,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,WAAW,EAAE,EACvB,KAAK,EAAE,gBAAgB,GACtB,WAAW,EAAE,CASf;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;sEAGsE;AACtE,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,WAAW,EAAE,EACvB,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GACpC,yBAAyB,CAqC3B;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;4DAE4D;AAC5D,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACjC,YAAY,GAAG,IAAI,CA+BrB;AAaD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,gBAAgB,CAAC;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;0DAE0D;AAC1D,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa,CA6G7D"}
|
package/dist/ccr.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ccr.d.ts","sourceRoot":"","sources":["../src/ccr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,WAAW,EACZ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"ccr.d.ts","sourceRoot":"","sources":["../src/ccr.ts"],"names":[],"mappings":"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"}
|
package/dist/compress.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkC,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAehF,OAAO,KAAK,EAAE,mBAAmB,EAAa,MAAM,UAAU,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkC,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAehF,OAAO,KAAK,EAAE,mBAAmB,EAAa,MAAM,UAAU,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAiBvD,OAAO,EAGL,KAAK,YAAY,EAGlB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAEhB,MAAM,EAEN,WAAW,EAGX,iBAAiB,EAEjB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,KAAK;IACpB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAAC;IACxD;mEAC+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACvE,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,sBAAsB,CAAC;IACvE,YAAY,IAAI,YAAY,EAAE,CAAC;IAC/B,UAAU,CACR,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,gBAAgB,GACtB,gBAAgB,GAAG,SAAS,CAAC;IAChC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IACnE,MAAM,CACJ,KAAK,EAAE,gBAAgB,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,YAAY,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B;8DAC0D;IAC1D,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,EAAE,CAAC;IACJ,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACnC;AA2GD,wBAAgB,UAAU,CAAC,KAAK,GAAE,KAAU,GAAG,eAAe,CAmW7D;AAqpCD,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|
package/dist/crush.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crush.d.ts","sourceRoot":"","sources":["../src/crush.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"crush.d.ts","sourceRoot":"","sources":["../src/crush.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -58,7 +58,7 @@ export { searchBlocks, searchBlocksAsync, blockDocs, messageDocs, } from "./sear
|
|
|
58
58
|
export { clearDocFeatures, docCacheInfo, docFeatures, setDocCacheCap, } from "./search.js";
|
|
59
59
|
export type { SearchResult, SearchOptions, SearchAlgorithm, AsyncSearchAlgorithm, AnySearchAlgorithm, SearchDoc, SearchDocKind, ScoredBlock, MessageRole, RoleWeights, MessageInput, } from "./search.js";
|
|
60
60
|
export { DEFAULT_ALGORITHM, DEFAULT_ROLE_WEIGHTS, registerSearchAlgorithm, getSearchAlgorithm, listSearchAlgorithms, } from "./search.js";
|
|
61
|
-
export { collectLatestProtected, isMessageLatestProtected, isMessageProtected, matchToolPattern, type LatestProtected, } from "./protected.js";
|
|
61
|
+
export { collectLatestProtected, collectRulePairProtection, hasMediaPayload, isMessageLatestProtected, isMessageProtected, isMessageRuleProtected, matchToolPattern, type LatestProtected, type RulePairProtection, } from "./protected.js";
|
|
62
62
|
export { runPipeline, makeIO, type PipelineNode, type PipelineContext, type NodeIO, type NodeEffects, } from "./pipeline.js";
|
|
63
63
|
export * from "./filter/index.js";
|
|
64
64
|
export { VIABLE_RANGE_MIN_TOKENS, viableRanges } from "./viable.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1175,8 +1175,107 @@ var RETRIEVE_TOOL_RESPONSES = {
|
|
|
1175
1175
|
parameters: RETRIEVE_PARAMETERS
|
|
1176
1176
|
};
|
|
1177
1177
|
|
|
1178
|
+
// src/rules.ts
|
|
1179
|
+
var RULE_TOOL_NAME = "acp_rule";
|
|
1180
|
+
var DEFAULT_RULE_LIMITS = Object.freeze({
|
|
1181
|
+
maxRules: 50,
|
|
1182
|
+
maxRuleChars: 300
|
|
1183
|
+
});
|
|
1184
|
+
var RULES_USAGE_PROMPT = [
|
|
1185
|
+
"Use the acp_rule tool to record short, principle-level reminders that must survive context compression:",
|
|
1186
|
+
"- behavioral corrections the user has had to repeat more than once,",
|
|
1187
|
+
"- project invariants the user explicitly asked you to remember,",
|
|
1188
|
+
"- pitfalls you ran into once and must not run into again.",
|
|
1189
|
+
"Rules are re-injected into the system prompt every turn. Omit the text argument to list recorded rules."
|
|
1190
|
+
].join("\n");
|
|
1191
|
+
function listRules(state) {
|
|
1192
|
+
return state.rules ?? [];
|
|
1193
|
+
}
|
|
1194
|
+
function resolveRuleLimits(config) {
|
|
1195
|
+
return {
|
|
1196
|
+
maxRules: config?.rules?.maxRules ?? DEFAULT_RULE_LIMITS.maxRules,
|
|
1197
|
+
maxRuleChars: config?.rules?.maxRuleChars ?? DEFAULT_RULE_LIMITS.maxRuleChars
|
|
1198
|
+
};
|
|
1199
|
+
}
|
|
1200
|
+
var RULE_ID_RE = /^rule(\d+)$/;
|
|
1201
|
+
function highestRuleNumber(state) {
|
|
1202
|
+
let highest = 0;
|
|
1203
|
+
for (const rule of state.rules ?? []) {
|
|
1204
|
+
const match = RULE_ID_RE.exec(rule.id);
|
|
1205
|
+
if (match) highest = Math.max(highest, Number(match[1]));
|
|
1206
|
+
}
|
|
1207
|
+
return highest;
|
|
1208
|
+
}
|
|
1209
|
+
function allocateRuleId(state) {
|
|
1210
|
+
return `rule${Math.max(state.nextRuleId ?? 1, highestRuleNumber(state) + 1)}`;
|
|
1211
|
+
}
|
|
1212
|
+
function addRule(state, text, limits = {}) {
|
|
1213
|
+
const maxRules = limits.maxRules ?? DEFAULT_RULE_LIMITS.maxRules;
|
|
1214
|
+
const maxRuleChars = limits.maxRuleChars ?? DEFAULT_RULE_LIMITS.maxRuleChars;
|
|
1215
|
+
const trimmed = (text ?? "").trim();
|
|
1216
|
+
if (!trimmed) {
|
|
1217
|
+
return {
|
|
1218
|
+
ok: false,
|
|
1219
|
+
error: "rule text is empty \u2014 provide the reminder to record."
|
|
1220
|
+
};
|
|
1221
|
+
}
|
|
1222
|
+
if (trimmed.length > maxRuleChars) {
|
|
1223
|
+
return {
|
|
1224
|
+
ok: false,
|
|
1225
|
+
error: `${trimmed.length} chars exceeds the ${maxRuleChars}-char limit \u2014 keep rules short and principle-level.`
|
|
1226
|
+
};
|
|
1227
|
+
}
|
|
1228
|
+
const rules = listRules(state);
|
|
1229
|
+
const duplicate = rules.find((rule2) => rule2.text === trimmed);
|
|
1230
|
+
if (duplicate) {
|
|
1231
|
+
return {
|
|
1232
|
+
ok: false,
|
|
1233
|
+
error: `identical rule already exists (${duplicate.id}) \u2014 no change.`
|
|
1234
|
+
};
|
|
1235
|
+
}
|
|
1236
|
+
if (rules.length >= maxRules) {
|
|
1237
|
+
return {
|
|
1238
|
+
ok: false,
|
|
1239
|
+
error: `rule limit reached (${maxRules}) \u2014 remove or clear outdated rules first.`
|
|
1240
|
+
};
|
|
1241
|
+
}
|
|
1242
|
+
const next = Math.max(state.nextRuleId ?? 1, highestRuleNumber(state) + 1);
|
|
1243
|
+
const rule = { id: `rule${next}`, text: trimmed };
|
|
1244
|
+
state.rules = [...rules, rule];
|
|
1245
|
+
state.nextRuleId = next + 1;
|
|
1246
|
+
return { ok: true, rule };
|
|
1247
|
+
}
|
|
1248
|
+
function removeRule(state, id) {
|
|
1249
|
+
const rules = listRules(state);
|
|
1250
|
+
const target = rules.find((rule) => rule.id === id.trim());
|
|
1251
|
+
if (!target) {
|
|
1252
|
+
return {
|
|
1253
|
+
ok: false,
|
|
1254
|
+
error: `no rule with id "${id.trim()}" \u2014 list current rules first (omit the text argument).`
|
|
1255
|
+
};
|
|
1256
|
+
}
|
|
1257
|
+
state.rules = rules.filter((rule) => rule.id !== target.id);
|
|
1258
|
+
return { ok: true, rule: target };
|
|
1259
|
+
}
|
|
1260
|
+
function clearRules(state) {
|
|
1261
|
+
const count = listRules(state).length;
|
|
1262
|
+
state.rules = [];
|
|
1263
|
+
return { ok: true, count };
|
|
1264
|
+
}
|
|
1265
|
+
function formatRulesForPrompt(state) {
|
|
1266
|
+
const rules = listRules(state);
|
|
1267
|
+
if (rules.length === 0) return "";
|
|
1268
|
+
return [
|
|
1269
|
+
"# Persistent rules (recorded via acp_rule \u2014 kept across compression)",
|
|
1270
|
+
...rules.map((rule) => `- [${rule.id}] ${rule.text}`)
|
|
1271
|
+
].join("\n");
|
|
1272
|
+
}
|
|
1273
|
+
function formatRulesList(rules) {
|
|
1274
|
+
return rules.map((rule, i) => `${i + 1}. [${rule.id}] ${rule.text}`).join("\n");
|
|
1275
|
+
}
|
|
1276
|
+
|
|
1178
1277
|
// src/protected.ts
|
|
1179
|
-
var ALWAYS_PROTECTED_TOOLS = ["compress"
|
|
1278
|
+
var ALWAYS_PROTECTED_TOOLS = ["compress"];
|
|
1180
1279
|
var NEVER_PRESERVE_RECENT_TOOLS = [
|
|
1181
1280
|
"decompress",
|
|
1182
1281
|
"search_context",
|
|
@@ -1250,6 +1349,77 @@ function isMessageLatestProtected(msg, latest) {
|
|
|
1250
1349
|
}
|
|
1251
1350
|
return false;
|
|
1252
1351
|
}
|
|
1352
|
+
function hasMediaPayload(msg) {
|
|
1353
|
+
const m = msg;
|
|
1354
|
+
if (typeof m.imageBase64 === "string" && m.imageBase64.length > 0) return true;
|
|
1355
|
+
if (m.rawOpenaiContent != null) return true;
|
|
1356
|
+
if (Array.isArray(m.rawOpenaiContentParts) && m.rawOpenaiContentParts.length > 0)
|
|
1357
|
+
return true;
|
|
1358
|
+
if (isObjWith(m.rawAnthropicBlock, "type", "image")) return true;
|
|
1359
|
+
const item = m.rawResponsesItem;
|
|
1360
|
+
if (isObjWith(item, "type", "input_image")) return true;
|
|
1361
|
+
if (item && typeof item === "object") {
|
|
1362
|
+
const content = item.content;
|
|
1363
|
+
if (Array.isArray(content)) {
|
|
1364
|
+
return content.some((p) => isObjWith(p, "type", "input_image"));
|
|
1365
|
+
}
|
|
1366
|
+
}
|
|
1367
|
+
return false;
|
|
1368
|
+
}
|
|
1369
|
+
function isObjWith(v, key, value) {
|
|
1370
|
+
return typeof v === "object" && v !== null && v[key] === value;
|
|
1371
|
+
}
|
|
1372
|
+
var RULE_RECORD_RESULT_RE = /^Recorded (rule\d+): /;
|
|
1373
|
+
var RULE_REMOVE_RESULT_RE = /^Removed (rule\d+): /;
|
|
1374
|
+
var RULE_CLEAR_RESULT_RE = /^Cleared \d+ rule\(s\)\./;
|
|
1375
|
+
function collectRulePairProtection(messages) {
|
|
1376
|
+
const callNameById = /* @__PURE__ */ new Map();
|
|
1377
|
+
for (const m of messages) {
|
|
1378
|
+
if (m.contentType === "tool-call" && m.toolCallId && m.toolName) {
|
|
1379
|
+
callNameById.set(m.toolCallId, m.toolName);
|
|
1380
|
+
}
|
|
1381
|
+
}
|
|
1382
|
+
const isRuleResult = (m) => m.contentType === "tool-result" && (m.toolName === RULE_TOOL_NAME || m.toolCallId != null && callNameById.get(m.toolCallId) === RULE_TOOL_NAME);
|
|
1383
|
+
const live = /* @__PURE__ */ new Set();
|
|
1384
|
+
const malformedMsgIds = /* @__PURE__ */ new Set();
|
|
1385
|
+
const callIds = /* @__PURE__ */ new Set();
|
|
1386
|
+
for (const m of messages) {
|
|
1387
|
+
if (!isRuleResult(m)) continue;
|
|
1388
|
+
const text = m.text ?? "";
|
|
1389
|
+
const removedId = RULE_REMOVE_RESULT_RE.exec(text)?.[1];
|
|
1390
|
+
if (removedId !== void 0) {
|
|
1391
|
+
live.delete(removedId);
|
|
1392
|
+
continue;
|
|
1393
|
+
}
|
|
1394
|
+
if (RULE_CLEAR_RESULT_RE.test(text)) {
|
|
1395
|
+
live.clear();
|
|
1396
|
+
continue;
|
|
1397
|
+
}
|
|
1398
|
+
const recordedId = RULE_RECORD_RESULT_RE.exec(text)?.[1];
|
|
1399
|
+
if (recordedId !== void 0) {
|
|
1400
|
+
live.add(recordedId);
|
|
1401
|
+
} else if (text.startsWith("Recorded ")) {
|
|
1402
|
+
malformedMsgIds.add(m.id);
|
|
1403
|
+
if (m.toolCallId) callIds.add(m.toolCallId);
|
|
1404
|
+
}
|
|
1405
|
+
}
|
|
1406
|
+
const msgIds = new Set(malformedMsgIds);
|
|
1407
|
+
for (const m of messages) {
|
|
1408
|
+
if (!isRuleResult(m)) continue;
|
|
1409
|
+
const recordedId = RULE_RECORD_RESULT_RE.exec(m.text ?? "")?.[1];
|
|
1410
|
+
if (recordedId === void 0 || !live.has(recordedId)) continue;
|
|
1411
|
+
if (m.toolCallId) callIds.add(m.toolCallId);
|
|
1412
|
+
else msgIds.add(m.id);
|
|
1413
|
+
}
|
|
1414
|
+
return { callIds, msgIds };
|
|
1415
|
+
}
|
|
1416
|
+
function isMessageRuleProtected(msg, protection) {
|
|
1417
|
+
if (msg.contentType !== "tool-call" && msg.contentType !== "tool-result") {
|
|
1418
|
+
return false;
|
|
1419
|
+
}
|
|
1420
|
+
if (protection.msgIds.has(msg.id)) return true;
|
|
1421
|
+
return msg.toolCallId != null && protection.callIds.has(msg.toolCallId);
|
|
1422
|
+
}
|
|
1253
1423
|
|
|
1254
1424
|
// src/content-store.ts
|
|
1255
1425
|
import { createHash } from "crypto";
|
|
@@ -1427,6 +1597,7 @@ function storeLargeResults(input) {
|
|
|
1427
1597
|
callById.set(message.toolCallId, message);
|
|
1428
1598
|
}
|
|
1429
1599
|
}
|
|
1600
|
+
const ruleProt = collectRulePairProtection(input.messages);
|
|
1430
1601
|
const updated = input.messages.map((message) => {
|
|
1431
1602
|
if (message.contentType !== "tool-result") return message;
|
|
1432
1603
|
const text = message.text ?? "";
|
|
@@ -1440,7 +1611,8 @@ function storeLargeResults(input) {
|
|
|
1440
1611
|
if (toolName && cfg.excludeTools.some((pattern) => matchToolPattern(toolName, pattern))) {
|
|
1441
1612
|
return message;
|
|
1442
1613
|
}
|
|
1443
|
-
if (isMessageProtected(message, input.config)
|
|
1614
|
+
if (isMessageProtected(message, input.config) || isMessageRuleProtected(message, ruleProt))
|
|
1615
|
+
return message;
|
|
1444
1616
|
const tokens = input.countTokens(text);
|
|
1445
1617
|
if (tokens < cfg.minToolTokens) return message;
|
|
1446
1618
|
const ref = refForRaw(input.state.messageRefs, message.id);
|
|
@@ -2005,13 +2177,14 @@ function isAcpOrConfiguredTool(toolName, cfg) {
|
|
|
2005
2177
|
if (toolName === cfg.toolName) return true;
|
|
2006
2178
|
return ACP_TOOL_NAMES.has(toolName);
|
|
2007
2179
|
}
|
|
2008
|
-
function isAbsorbCandidate(msg, config, latest) {
|
|
2180
|
+
function isAbsorbCandidate(msg, config, latest, rule) {
|
|
2009
2181
|
if (msg.contentType !== "tool-result" || !msg.toolCallId) return false;
|
|
2010
2182
|
if (isStoredPlaceholderText(msg.text ?? "")) return false;
|
|
2011
2183
|
const cfg = resolveAbsorbConfig(config);
|
|
2012
2184
|
if (isAcpOrConfiguredTool(msg.toolName, cfg)) return false;
|
|
2013
2185
|
if (isMessageProtected(msg, config)) return false;
|
|
2014
2186
|
if (latest && isMessageLatestProtected(msg, latest)) return false;
|
|
2187
|
+
if (rule && isMessageRuleProtected(msg, rule)) return false;
|
|
2015
2188
|
for (const pattern of cfg.excludeTools) {
|
|
2016
2189
|
if (msg.toolName && matchToolPattern(msg.toolName, pattern)) return false;
|
|
2017
2190
|
}
|
|
@@ -2040,8 +2213,9 @@ function appendAbsorbPrompts(messages, state, config, tokenCount, countTokens) {
|
|
|
2040
2213
|
}
|
|
2041
2214
|
let promptedCount = 0;
|
|
2042
2215
|
const latest = collectLatestProtected(messages, config);
|
|
2216
|
+
const ruleProt = collectRulePairProtection(messages);
|
|
2043
2217
|
const out = messages.map((msg) => {
|
|
2044
|
-
if (!isAbsorbCandidate(msg, config, latest)) return msg;
|
|
2218
|
+
if (!isAbsorbCandidate(msg, config, latest, ruleProt)) return msg;
|
|
2045
2219
|
if (absorbedIds.has(msg.id)) return msg;
|
|
2046
2220
|
const text = msg.text ?? "";
|
|
2047
2221
|
if (text.includes(ABSORB_PROMPT_MARKER)) return msg;
|
|
@@ -2150,7 +2324,7 @@ function applyAbsorb(input) {
|
|
|
2150
2324
|
if (isMessageProtected(target, input.config) || isMessageLatestProtected(
|
|
2151
2325
|
target,
|
|
2152
2326
|
collectLatestProtected(input.messages, input.config)
|
|
2153
|
-
)) {
|
|
2327
|
+
) || isMessageRuleProtected(target, collectRulePairProtection(input.messages))) {
|
|
2154
2328
|
return {
|
|
2155
2329
|
state: input.state,
|
|
2156
2330
|
ok: false,
|
|
@@ -3485,8 +3659,9 @@ function applyCrushToMessages(messages, config, tokenCount, countTokens) {
|
|
|
3485
3659
|
let distilledCount = 0;
|
|
3486
3660
|
let changed = false;
|
|
3487
3661
|
const out = [];
|
|
3662
|
+
const ruleProt = collectRulePairProtection(messages);
|
|
3488
3663
|
for (const msg of messages) {
|
|
3489
|
-
if (!isAbsorbCandidate(msg, config)) {
|
|
3664
|
+
if (!isAbsorbCandidate(msg, config, void 0, ruleProt)) {
|
|
3490
3665
|
out.push(msg);
|
|
3491
3666
|
continue;
|
|
3492
3667
|
}
|
|
@@ -3983,6 +4158,7 @@ function buildCompressibleRanges(messages, state, config, protectedZoneRefs, cou
|
|
|
3983
4158
|
const protectedCallIds = collectProtectedToolCallIds(messages, config);
|
|
3984
4159
|
const latest = collectLatestProtected(messages, config);
|
|
3985
4160
|
for (const id of latest.callIds) protectedCallIds.add(id);
|
|
4161
|
+
const ruleProt = collectRulePairProtection(messages);
|
|
3986
4162
|
let skipSinceCompressible = false;
|
|
3987
4163
|
let skipSinceProtected = false;
|
|
3988
4164
|
let msgIndex = -1;
|
|
@@ -3995,7 +4171,12 @@ function buildCompressibleRanges(messages, state, config, protectedZoneRefs, cou
|
|
|
3995
4171
|
skipSinceProtected = true;
|
|
3996
4172
|
continue;
|
|
3997
4173
|
}
|
|
3998
|
-
if (
|
|
4174
|
+
if (hasMediaPayload(msg)) {
|
|
4175
|
+
skipSinceCompressible = true;
|
|
4176
|
+
skipSinceProtected = true;
|
|
4177
|
+
continue;
|
|
4178
|
+
}
|
|
4179
|
+
if (isMessageProtectedWithPairing(msg, config, protectedCallIds) || isMessageLatestProtected(msg, latest) || isMessageRuleProtected(msg, ruleProt)) {
|
|
3999
4180
|
protectedMsgs.push({
|
|
4000
4181
|
ref,
|
|
4001
4182
|
gapBefore: skipSinceProtected,
|
|
@@ -4519,7 +4700,8 @@ var assignRefsNode = {
|
|
|
4519
4700
|
run(io, ctx) {
|
|
4520
4701
|
const hasProtection = ctx.config.protectedTools.length > 0 || !!ctx.config.isToolProtected || (ctx.config.protectedLatestTools?.length ?? 0) > 0;
|
|
4521
4702
|
const latest = hasProtection ? collectLatestProtected(io.messages, ctx.config) : void 0;
|
|
4522
|
-
const
|
|
4703
|
+
const ruleProt = collectRulePairProtection(io.messages);
|
|
4704
|
+
const protectedFn = (m) => hasMediaPayload(m) || isMessageRuleProtected(m, ruleProt) || (hasProtection ? isMessageProtected(m, ctx.config) || (latest ? isMessageLatestProtected(m, latest) : false) : false);
|
|
4523
4705
|
const refResult = assignRefs(io.messages, {
|
|
4524
4706
|
existing: io.state.messageRefs,
|
|
4525
4707
|
nextIndex: highestUsedIndex(io.state.messageRefs) + 1,
|
|
@@ -4802,6 +4984,15 @@ function applySingleRange(input) {
|
|
|
4802
4984
|
if (!kept.has(id)) effectiveMessageIds.delete(id);
|
|
4803
4985
|
}
|
|
4804
4986
|
}
|
|
4987
|
+
const mediaExcluded = directMessageIds.filter((id) => {
|
|
4988
|
+
const msg = input.messages.find((m) => m.id === id);
|
|
4989
|
+
return !!msg && hasMediaPayload(msg);
|
|
4990
|
+
});
|
|
4991
|
+
if (mediaExcluded.length > 0) {
|
|
4992
|
+
warnings.push(
|
|
4993
|
+
`Excluded ${mediaExcluded.length} message(s) carrying image/attachment payload(s) from compression range \u2014 their bytes are unrecoverable once folded (billion-context#1188); enable stripImages to release old ones.`
|
|
4994
|
+
);
|
|
4995
|
+
}
|
|
4805
4996
|
const protectedRefs = input.protectedMessageIds;
|
|
4806
4997
|
const hitProtectedRaw = protectedRefs ? filteredIds.filter((id) => {
|
|
4807
4998
|
const ref = input.state.messageRefs.byRaw[id];
|
|
@@ -4959,6 +5150,7 @@ function filterProtectedToolMessages(directMessageIds, messages, config) {
|
|
|
4959
5150
|
const removedIds = /* @__PURE__ */ new Set();
|
|
4960
5151
|
const latest = collectLatestProtected(messages, config);
|
|
4961
5152
|
for (const id of latest.callIds) protectedCallIds.add(id);
|
|
5153
|
+
const ruleProt = collectRulePairProtection(messages);
|
|
4962
5154
|
for (const msg of messages) {
|
|
4963
5155
|
if (isMessageProtected(msg, config) && msg.toolCallId) {
|
|
4964
5156
|
protectedCallIds.add(msg.toolCallId);
|
|
@@ -4967,7 +5159,7 @@ function filterProtectedToolMessages(directMessageIds, messages, config) {
|
|
|
4967
5159
|
for (const id of directMessageIds) {
|
|
4968
5160
|
const msg = messages.find((m) => m.id === id);
|
|
4969
5161
|
if (!msg) continue;
|
|
4970
|
-
if (isMessageProtected(msg, config) || isMessageLatestProtected(msg, latest)) {
|
|
5162
|
+
if (hasMediaPayload(msg) || isMessageProtected(msg, config) || isMessageLatestProtected(msg, latest) || isMessageRuleProtected(msg, ruleProt)) {
|
|
4971
5163
|
removedIds.add(id);
|
|
4972
5164
|
if (msg.toolCallId) protectedCallIds.add(msg.toolCallId);
|
|
4973
5165
|
}
|
|
@@ -6427,105 +6619,6 @@ function matchSession(sessions, selector, labelOf) {
|
|
|
6427
6619
|
return sessions.filter((s) => s.id.startsWith(selector) || (labelOf(s) ?? "").startsWith(selector));
|
|
6428
6620
|
}
|
|
6429
6621
|
|
|
6430
|
-
// src/rules.ts
|
|
6431
|
-
var RULE_TOOL_NAME = "acp_rule";
|
|
6432
|
-
var DEFAULT_RULE_LIMITS = Object.freeze({
|
|
6433
|
-
maxRules: 50,
|
|
6434
|
-
maxRuleChars: 300
|
|
6435
|
-
});
|
|
6436
|
-
var RULES_USAGE_PROMPT = [
|
|
6437
|
-
"Use the acp_rule tool to record short, principle-level reminders that must survive context compression:",
|
|
6438
|
-
"- behavioral corrections the user has had to repeat more than once,",
|
|
6439
|
-
"- project invariants the user explicitly asked you to remember,",
|
|
6440
|
-
"- pitfalls you ran into once and must not run into again.",
|
|
6441
|
-
"Rules are re-injected into the system prompt every turn. Omit the text argument to list recorded rules."
|
|
6442
|
-
].join("\n");
|
|
6443
|
-
function listRules(state) {
|
|
6444
|
-
return state.rules ?? [];
|
|
6445
|
-
}
|
|
6446
|
-
function resolveRuleLimits(config) {
|
|
6447
|
-
return {
|
|
6448
|
-
maxRules: config?.rules?.maxRules ?? DEFAULT_RULE_LIMITS.maxRules,
|
|
6449
|
-
maxRuleChars: config?.rules?.maxRuleChars ?? DEFAULT_RULE_LIMITS.maxRuleChars
|
|
6450
|
-
};
|
|
6451
|
-
}
|
|
6452
|
-
var RULE_ID_RE = /^rule(\d+)$/;
|
|
6453
|
-
function highestRuleNumber(state) {
|
|
6454
|
-
let highest = 0;
|
|
6455
|
-
for (const rule of state.rules ?? []) {
|
|
6456
|
-
const match = RULE_ID_RE.exec(rule.id);
|
|
6457
|
-
if (match) highest = Math.max(highest, Number(match[1]));
|
|
6458
|
-
}
|
|
6459
|
-
return highest;
|
|
6460
|
-
}
|
|
6461
|
-
function allocateRuleId(state) {
|
|
6462
|
-
return `rule${Math.max(state.nextRuleId ?? 1, highestRuleNumber(state) + 1)}`;
|
|
6463
|
-
}
|
|
6464
|
-
function addRule(state, text, limits = {}) {
|
|
6465
|
-
const maxRules = limits.maxRules ?? DEFAULT_RULE_LIMITS.maxRules;
|
|
6466
|
-
const maxRuleChars = limits.maxRuleChars ?? DEFAULT_RULE_LIMITS.maxRuleChars;
|
|
6467
|
-
const trimmed = (text ?? "").trim();
|
|
6468
|
-
if (!trimmed) {
|
|
6469
|
-
return {
|
|
6470
|
-
ok: false,
|
|
6471
|
-
error: "rule text is empty \u2014 provide the reminder to record."
|
|
6472
|
-
};
|
|
6473
|
-
}
|
|
6474
|
-
if (trimmed.length > maxRuleChars) {
|
|
6475
|
-
return {
|
|
6476
|
-
ok: false,
|
|
6477
|
-
error: `${trimmed.length} chars exceeds the ${maxRuleChars}-char limit \u2014 keep rules short and principle-level.`
|
|
6478
|
-
};
|
|
6479
|
-
}
|
|
6480
|
-
const rules = listRules(state);
|
|
6481
|
-
const duplicate = rules.find((rule2) => rule2.text === trimmed);
|
|
6482
|
-
if (duplicate) {
|
|
6483
|
-
return {
|
|
6484
|
-
ok: false,
|
|
6485
|
-
error: `identical rule already exists (${duplicate.id}) \u2014 no change.`
|
|
6486
|
-
};
|
|
6487
|
-
}
|
|
6488
|
-
if (rules.length >= maxRules) {
|
|
6489
|
-
return {
|
|
6490
|
-
ok: false,
|
|
6491
|
-
error: `rule limit reached (${maxRules}) \u2014 remove or clear outdated rules first.`
|
|
6492
|
-
};
|
|
6493
|
-
}
|
|
6494
|
-
const next = Math.max(state.nextRuleId ?? 1, highestRuleNumber(state) + 1);
|
|
6495
|
-
const rule = { id: `rule${next}`, text: trimmed };
|
|
6496
|
-
state.rules = [...rules, rule];
|
|
6497
|
-
state.nextRuleId = next + 1;
|
|
6498
|
-
return { ok: true, rule };
|
|
6499
|
-
}
|
|
6500
|
-
function removeRule(state, id) {
|
|
6501
|
-
const rules = listRules(state);
|
|
6502
|
-
const target = rules.find((rule) => rule.id === id.trim());
|
|
6503
|
-
if (!target) {
|
|
6504
|
-
return {
|
|
6505
|
-
ok: false,
|
|
6506
|
-
error: `no rule with id "${id.trim()}" \u2014 list current rules first (omit the text argument).`
|
|
6507
|
-
};
|
|
6508
|
-
}
|
|
6509
|
-
state.rules = rules.filter((rule) => rule.id !== target.id);
|
|
6510
|
-
return { ok: true, rule: target };
|
|
6511
|
-
}
|
|
6512
|
-
function clearRules(state) {
|
|
6513
|
-
const count = listRules(state).length;
|
|
6514
|
-
state.rules = [];
|
|
6515
|
-
return { ok: true, count };
|
|
6516
|
-
}
|
|
6517
|
-
function formatRulesForPrompt(state) {
|
|
6518
|
-
const rules = listRules(state);
|
|
6519
|
-
if (rules.length === 0) return "";
|
|
6520
|
-
return [
|
|
6521
|
-
"# Persistent rules (recorded via acp_rule \u2014 kept across compression)",
|
|
6522
|
-
...rules.map((rule) => `- [${rule.id}] ${rule.text}`)
|
|
6523
|
-
].join("\n");
|
|
6524
|
-
}
|
|
6525
|
-
function formatRulesList(rules) {
|
|
6526
|
-
return rules.map((rule, i) => `${i + 1}. [${rule.id}] ${rule.text}`).join("\n");
|
|
6527
|
-
}
|
|
6528
|
-
|
|
6529
6622
|
// src/image-compress.ts
|
|
6530
6623
|
var DEFAULT_IMAGE_COMPRESSION_CONFIG = {
|
|
6531
6624
|
enabled: false,
|
|
@@ -7963,6 +8056,7 @@ export {
|
|
|
7963
8056
|
codeTrimPlugin,
|
|
7964
8057
|
collectBlockContent,
|
|
7965
8058
|
collectLatestProtected,
|
|
8059
|
+
collectRulePairProtection,
|
|
7966
8060
|
computeFoldEconomics,
|
|
7967
8061
|
contentStoreStats,
|
|
7968
8062
|
countMessageTokens,
|
|
@@ -8001,6 +8095,7 @@ export {
|
|
|
8001
8095
|
formatRulesList,
|
|
8002
8096
|
getMessageFilter,
|
|
8003
8097
|
getSearchAlgorithm,
|
|
8098
|
+
hasMediaPayload,
|
|
8004
8099
|
hasStoredRef,
|
|
8005
8100
|
hashContent,
|
|
8006
8101
|
hideAbsorbedMessages,
|
|
@@ -8013,6 +8108,7 @@ export {
|
|
|
8013
8108
|
isImageFullRestored,
|
|
8014
8109
|
isMessageLatestProtected,
|
|
8015
8110
|
isMessageProtected,
|
|
8111
|
+
isMessageRuleProtected,
|
|
8016
8112
|
isRenderedSummaryMessage,
|
|
8017
8113
|
isRetrievedMessage,
|
|
8018
8114
|
isStoredPlaceholderText,
|