acp-kernel 0.0.69-pr.283.149 → 0.0.69-pr.284.147
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/{chunk-HVB3QSSH.js → chunk-5TQA7ZQM.js} +2 -1
- package/dist/chunk-5TQA7ZQM.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +92 -89
- package/dist/index.js.map +1 -1
- package/dist/persist/index.js +4 -2
- package/dist/persist/index.js.map +1 -1
- package/dist/persist/state-merge.d.ts.map +1 -1
- package/dist/protected.d.ts +4 -4
- package/dist/protected.d.ts.map +1 -1
- package/dist/rules.d.ts +28 -69
- package/dist/rules.d.ts.map +1 -1
- package/dist/state.d.ts.map +1 -1
- package/dist/types.d.ts +9 -16
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-HVB3QSSH.js.map +0 -1
|
@@ -14,6 +14,7 @@ function createInitialState() {
|
|
|
14
14
|
stats: { tokensCompressed: 0, compressionCount: 0, absorbedTokens: 0 },
|
|
15
15
|
absorbed: [],
|
|
16
16
|
rules: [],
|
|
17
|
+
nextRuleId: 1,
|
|
17
18
|
nextBlockId: 1,
|
|
18
19
|
nextRunId: 1
|
|
19
20
|
};
|
|
@@ -69,4 +70,4 @@ export {
|
|
|
69
70
|
highestActiveTier,
|
|
70
71
|
advanceSurvival
|
|
71
72
|
};
|
|
72
|
-
//# sourceMappingURL=chunk-
|
|
73
|
+
//# sourceMappingURL=chunk-5TQA7ZQM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/state.ts"],"sourcesContent":["import type { CompressionBlock, CompressionState } from \"./types.js\";\n\nexport function createInitialState(): CompressionState {\n return {\n blocks: [],\n messageRefs: { byRaw: {}, byRef: {} },\n tokenSnapshot: {},\n nudge: {\n lastPerMessageNudgeTokens: 0,\n lastNudgeShownTokens: 0,\n baselineTokens: 0,\n anchors: {},\n lastShownByTier: {},\n },\n stats: { tokensCompressed: 0, compressionCount: 0, absorbedTokens: 0 },\n absorbed: [],\n rules: [],\n nextRuleId: 1,\n nextBlockId: 1,\n nextRunId: 1,\n };\n}\n\nexport function allocateBlockId(state: CompressionState): string {\n const id = state.nextBlockId;\n state.nextBlockId = Math.max(1, id) + 1;\n return `b${id}`;\n}\n\nexport function allocateRunId(state: CompressionState): string {\n const id = state.nextRunId;\n state.nextRunId = Math.max(1, id) + 1;\n return `r${id}`;\n}\n\nexport function blockById(\n state: CompressionState,\n blockId: string,\n): CompressionBlock | undefined {\n return state.blocks.find((block) => block.blockId === blockId);\n}\n\nexport function activeBlocks(state: CompressionState): CompressionBlock[] {\n return state.blocks.filter((block) => block.active);\n}\n\nexport function coveredMessageIds(state: CompressionState): Set<string> {\n const covered = new Set<string>();\n for (const block of state.blocks) {\n if (!block.active) continue;\n for (const id of block.effectiveMessageIds) covered.add(id);\n }\n return covered;\n}\n\nexport function highestActiveTier(state: CompressionState): 0 | 1 | 2 | 3 {\n let highest: 0 | 1 | 2 | 3 = 0;\n for (const block of state.blocks) {\n if (block.active && block.tier > highest) highest = block.tier;\n }\n return highest;\n}\n\nexport function advanceSurvival(\n state: CompressionState,\n promotionThreshold: number,\n): void {\n for (const block of state.blocks) {\n if (!block.active) continue;\n block.survivedCount += 1;\n if (block.survivedCount >= promotionThreshold) {\n block.generation = \"old\";\n }\n }\n}\n"],"mappings":";AAEO,SAAS,qBAAuC;AACrD,SAAO;AAAA,IACL,QAAQ,CAAC;AAAA,IACT,aAAa,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,EAAE;AAAA,IACpC,eAAe,CAAC;AAAA,IAChB,OAAO;AAAA,MACL,2BAA2B;AAAA,MAC3B,sBAAsB;AAAA,MACtB,gBAAgB;AAAA,MAChB,SAAS,CAAC;AAAA,MACV,iBAAiB,CAAC;AAAA,IACpB;AAAA,IACA,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,GAAG,gBAAgB,EAAE;AAAA,IACrE,UAAU,CAAC;AAAA,IACX,OAAO,CAAC;AAAA,IACR,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,WAAW;AAAA,EACb;AACF;AAEO,SAAS,gBAAgB,OAAiC;AAC/D,QAAM,KAAK,MAAM;AACjB,QAAM,cAAc,KAAK,IAAI,GAAG,EAAE,IAAI;AACtC,SAAO,IAAI,EAAE;AACf;AAEO,SAAS,cAAc,OAAiC;AAC7D,QAAM,KAAK,MAAM;AACjB,QAAM,YAAY,KAAK,IAAI,GAAG,EAAE,IAAI;AACpC,SAAO,IAAI,EAAE;AACf;AAEO,SAAS,UACd,OACA,SAC8B;AAC9B,SAAO,MAAM,OAAO,KAAK,CAAC,UAAU,MAAM,YAAY,OAAO;AAC/D;AAEO,SAAS,aAAa,OAA6C;AACxE,SAAO,MAAM,OAAO,OAAO,CAAC,UAAU,MAAM,MAAM;AACpD;AAEO,SAAS,kBAAkB,OAAsC;AACtE,QAAM,UAAU,oBAAI,IAAY;AAChC,aAAW,SAAS,MAAM,QAAQ;AAChC,QAAI,CAAC,MAAM,OAAQ;AACnB,eAAW,MAAM,MAAM,oBAAqB,SAAQ,IAAI,EAAE;AAAA,EAC5D;AACA,SAAO;AACT;AAEO,SAAS,kBAAkB,OAAwC;AACxE,MAAI,UAAyB;AAC7B,aAAW,SAAS,MAAM,QAAQ;AAChC,QAAI,MAAM,UAAU,MAAM,OAAO,QAAS,WAAU,MAAM;AAAA,EAC5D;AACA,SAAO;AACT;AAEO,SAAS,gBACd,OACA,oBACM;AACN,aAAW,SAAS,MAAM,QAAQ;AAChC,QAAI,CAAC,MAAM,OAAQ;AACnB,UAAM,iBAAiB;AACvB,QAAI,MAAM,iBAAiB,oBAAoB;AAC7C,YAAM,aAAa;AAAA,IACrB;AAAA,EACF;AACF;","names":[]}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,wBAAgB,aAAa,CAC3B,iBAAiB,EAAE,MAAM,EACzB,SAAS,GAAE,OAAO,CAAC,MAAM,CAAM,GAC9B,MAAM,CA+CR;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,wBAAgB,aAAa,CAC3B,iBAAiB,EAAE,MAAM,EACzB,SAAS,GAAE,OAAO,CAAC,MAAM,CAAM,GAC9B,MAAM,CA+CR;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAuDvD"}
|
package/dist/index.d.ts
CHANGED
|
@@ -33,8 +33,8 @@ export type { HideConsumedResult } from "./hide-consumed.js";
|
|
|
33
33
|
export { ABSORB_TOOL_NAME, ABSORB_TOOL, ABSORB_TOOL_OPENAI, } from "./compress-tools.js";
|
|
34
34
|
export { ABSORB_PROMPT_MARKER, DEFAULT_ABSORB_CONFIG, resolveAbsorbConfig, buildAbsorbPrompt, buildAbsorbSystemPrompt, isAbsorbCandidate, hideAbsorbedMessages, appendAbsorbPrompts, parseAbsorbInput, applyAbsorb, } from "./absorb.js";
|
|
35
35
|
export type { AbsorbInput, AbsorbOutcome, ParsedAbsorb, AppendAbsorbPromptsResult, } from "./absorb.js";
|
|
36
|
-
export { RULE_TOOL_NAME,
|
|
37
|
-
export type { RuleLimits, AddRuleResult } from "./rules.js";
|
|
36
|
+
export { RULE_TOOL_NAME, DEFAULT_RULE_LIMITS, RULES_USAGE_PROMPT, listRules, allocateRuleId, addRule, removeRule, clearRules, formatRulesForPrompt, } from "./rules.js";
|
|
37
|
+
export type { RuleLimits, RuleOpResult, AddRuleResult } from "./rules.js";
|
|
38
38
|
export { rebuildCompressionState } from "./rebuild.js";
|
|
39
39
|
export type { RebuildResult, RebuildPorts } from "./rebuild.js";
|
|
40
40
|
export { parseCompressArgs } from "./parse-compress-input.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":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EACV,KAAK,EACL,eAAe,EACf,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5D,cAAc,qBAAqB,CAAC;AACpC,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,KAAK,EACL,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAChE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9D,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,WAAW,EACX,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,QAAQ,EACR,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,cAAc,EACd,WAAW,EACX,IAAI,EACJ,UAAU,EACV,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EACL,eAAe,EACf,6BAA6B,EAC7B,kBAAkB,EAClB,eAAe,EACf,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1E,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,WAAW,EACX,aAAa,EACb,YAAY,EACZ,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,OAAO,EACP,UAAU,EACV,UAAU,EACV,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAClH,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,YAAY,EACZ,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EACL,WAAW,EACX,MAAM,EACN,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,WAAW,GACjB,MAAM,eAAe,CAAC;AACvB,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
coveredMessageIds,
|
|
25
25
|
createInitialState,
|
|
26
26
|
highestActiveTier
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-5TQA7ZQM.js";
|
|
28
28
|
|
|
29
29
|
// src/refs.ts
|
|
30
30
|
var REF_WIDTH = 5;
|
|
@@ -388,14 +388,6 @@ function validateConfig(config) {
|
|
|
388
388
|
errors.push("absorb.contextThresholdPct must be in [0, 1]");
|
|
389
389
|
}
|
|
390
390
|
}
|
|
391
|
-
if (config.rules) {
|
|
392
|
-
if (config.rules.maxRules !== void 0 && (!Number.isFinite(config.rules.maxRules) || config.rules.maxRules < 1)) {
|
|
393
|
-
errors.push("rules.maxRules must be >= 1");
|
|
394
|
-
}
|
|
395
|
-
if (config.rules.maxRuleChars !== void 0 && (!Number.isFinite(config.rules.maxRuleChars) || config.rules.maxRuleChars < 1)) {
|
|
396
|
-
errors.push("rules.maxRuleChars must be >= 1");
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
391
|
return errors;
|
|
400
392
|
}
|
|
401
393
|
|
|
@@ -3797,105 +3789,121 @@ function matchSession(sessions, selector, labelOf) {
|
|
|
3797
3789
|
// src/rules.ts
|
|
3798
3790
|
var RULE_TOOL_NAME = "acp_rule";
|
|
3799
3791
|
var DEFAULT_RULE_LIMITS = Object.freeze({
|
|
3800
|
-
|
|
3801
|
-
|
|
3792
|
+
maxChars: 300,
|
|
3793
|
+
maxCount: 50
|
|
3802
3794
|
});
|
|
3803
|
-
function rulesEnabled(config) {
|
|
3804
|
-
return config.rules?.enabled === true;
|
|
3805
|
-
}
|
|
3806
|
-
function resolveRuleLimits(config) {
|
|
3807
|
-
return {
|
|
3808
|
-
maxRules: config.rules?.maxRules ?? DEFAULT_RULE_LIMITS.maxRules,
|
|
3809
|
-
maxRuleChars: config.rules?.maxRuleChars ?? DEFAULT_RULE_LIMITS.maxRuleChars
|
|
3810
|
-
};
|
|
3811
|
-
}
|
|
3812
3795
|
function listRules(state) {
|
|
3813
3796
|
return state.rules ?? [];
|
|
3814
3797
|
}
|
|
3815
|
-
var RULE_ID_RE = /^rule
|
|
3816
|
-
function
|
|
3817
|
-
let
|
|
3798
|
+
var RULE_ID_RE = /^rule(\d+)$/;
|
|
3799
|
+
function highestRuleNumber(state) {
|
|
3800
|
+
let highest = 0;
|
|
3818
3801
|
for (const rule of state.rules ?? []) {
|
|
3819
|
-
const
|
|
3820
|
-
if (
|
|
3802
|
+
const match = RULE_ID_RE.exec(rule.id);
|
|
3803
|
+
if (match) highest = Math.max(highest, Number(match[1]));
|
|
3821
3804
|
}
|
|
3822
|
-
return
|
|
3805
|
+
return highest;
|
|
3806
|
+
}
|
|
3807
|
+
function allocateRuleId(state) {
|
|
3808
|
+
const next = Math.max(state.nextRuleId ?? 1, highestRuleNumber(state) + 1);
|
|
3809
|
+
return `rule${next}`;
|
|
3823
3810
|
}
|
|
3824
3811
|
function addRule(state, text, limits = {}) {
|
|
3825
|
-
const
|
|
3826
|
-
const
|
|
3827
|
-
const
|
|
3828
|
-
if (
|
|
3829
|
-
return {
|
|
3812
|
+
const maxChars = limits.maxChars ?? DEFAULT_RULE_LIMITS.maxChars;
|
|
3813
|
+
const maxCount = limits.maxCount ?? DEFAULT_RULE_LIMITS.maxCount;
|
|
3814
|
+
const trimmed = (text ?? "").trim();
|
|
3815
|
+
if (!trimmed) {
|
|
3816
|
+
return {
|
|
3817
|
+
state,
|
|
3818
|
+
ok: false,
|
|
3819
|
+
resultText: "acp_rule failed: text is empty \u2014 provide the reminder to remember."
|
|
3820
|
+
};
|
|
3830
3821
|
}
|
|
3831
|
-
if (
|
|
3822
|
+
if (trimmed.length > maxChars) {
|
|
3832
3823
|
return {
|
|
3824
|
+
state,
|
|
3833
3825
|
ok: false,
|
|
3834
|
-
|
|
3826
|
+
resultText: `acp_rule failed: ${trimmed.length} chars exceeds the ${maxChars}-char limit \u2014 keep rules short and principle-level.`
|
|
3835
3827
|
};
|
|
3836
3828
|
}
|
|
3837
|
-
const
|
|
3838
|
-
const
|
|
3839
|
-
if (
|
|
3840
|
-
return {
|
|
3829
|
+
const rules = listRules(state);
|
|
3830
|
+
const duplicate = rules.find((rule2) => rule2.text === trimmed);
|
|
3831
|
+
if (duplicate) {
|
|
3832
|
+
return {
|
|
3833
|
+
state,
|
|
3834
|
+
ok: false,
|
|
3835
|
+
resultText: `acp_rule failed: identical rule already exists (${duplicate.id}) \u2014 no change.`
|
|
3836
|
+
};
|
|
3841
3837
|
}
|
|
3842
|
-
if (
|
|
3838
|
+
if (rules.length >= maxCount) {
|
|
3843
3839
|
return {
|
|
3840
|
+
state,
|
|
3844
3841
|
ok: false,
|
|
3845
|
-
|
|
3842
|
+
resultText: `acp_rule failed: rule limit reached (${maxCount}) \u2014 remove or clear outdated rules first.`
|
|
3846
3843
|
};
|
|
3847
3844
|
}
|
|
3848
|
-
const
|
|
3849
|
-
|
|
3850
|
-
|
|
3845
|
+
const next = Math.max(state.nextRuleId ?? 1, highestRuleNumber(state) + 1);
|
|
3846
|
+
const rule = { id: `rule${next}`, text: trimmed };
|
|
3847
|
+
const stateAfter = {
|
|
3848
|
+
...state,
|
|
3849
|
+
rules: [...rules, rule],
|
|
3850
|
+
nextRuleId: next + 1
|
|
3851
|
+
};
|
|
3852
|
+
return {
|
|
3853
|
+
state: stateAfter,
|
|
3854
|
+
ok: true,
|
|
3855
|
+
resultText: `rule recorded as ${rule.id}. It stays in the system prompt every turn and is protected from compression.`,
|
|
3856
|
+
rule
|
|
3857
|
+
};
|
|
3851
3858
|
}
|
|
3852
3859
|
function removeRule(state, id) {
|
|
3853
|
-
const
|
|
3854
|
-
const
|
|
3855
|
-
if (
|
|
3856
|
-
|
|
3857
|
-
|
|
3860
|
+
const rules = listRules(state);
|
|
3861
|
+
const target = rules.find((rule) => rule.id === id.trim());
|
|
3862
|
+
if (!target) {
|
|
3863
|
+
return {
|
|
3864
|
+
state,
|
|
3865
|
+
ok: false,
|
|
3866
|
+
resultText: `acp_rule failed: no rule with id "${id}" (use action "list" to see current rules).`
|
|
3867
|
+
};
|
|
3868
|
+
}
|
|
3869
|
+
const stateAfter = {
|
|
3870
|
+
...state,
|
|
3871
|
+
rules: rules.filter((rule) => rule.id !== target.id)
|
|
3872
|
+
};
|
|
3873
|
+
return {
|
|
3874
|
+
state: stateAfter,
|
|
3875
|
+
ok: true,
|
|
3876
|
+
resultText: `rule removed (${target.id}). Its id will never be re-issued.`
|
|
3877
|
+
};
|
|
3858
3878
|
}
|
|
3859
3879
|
function clearRules(state) {
|
|
3860
|
-
const
|
|
3861
|
-
|
|
3862
|
-
|
|
3880
|
+
const rules = listRules(state);
|
|
3881
|
+
if (rules.length === 0) {
|
|
3882
|
+
return { state, ok: true, resultText: "no rules to clear." };
|
|
3883
|
+
}
|
|
3884
|
+
const stateAfter = { ...state, rules: [] };
|
|
3885
|
+
return {
|
|
3886
|
+
state: stateAfter,
|
|
3887
|
+
ok: true,
|
|
3888
|
+
resultText: `all ${rules.length} rule(s) cleared. Issued ids will never be re-issued.`
|
|
3889
|
+
};
|
|
3863
3890
|
}
|
|
3864
|
-
function
|
|
3891
|
+
function formatRulesForPrompt(state) {
|
|
3892
|
+
const rules = listRules(state);
|
|
3865
3893
|
if (rules.length === 0) return "";
|
|
3866
|
-
const lines = rules.map((
|
|
3867
|
-
return `
|
|
3894
|
+
const lines = rules.map((rule) => `- [${rule.id}] ${rule.text}`);
|
|
3895
|
+
return `PERSISTENT USER RULES (${RULE_TOOL_NAME}) \u2014 these reminders apply to every turn of this session and take precedence over default behavior:
|
|
3868
3896
|
${lines.join("\n")}`;
|
|
3869
3897
|
}
|
|
3870
|
-
var
|
|
3871
|
-
|
|
3872
|
-
|
|
3873
|
-
|
|
3874
|
-
|
|
3875
|
-
|
|
3876
|
-
|
|
3877
|
-
|
|
3878
|
-
|
|
3879
|
-
};
|
|
3880
|
-
var RULE_TOOL = {
|
|
3881
|
-
name: RULE_TOOL_NAME,
|
|
3882
|
-
description: RULE_TOOL_DESCRIPTION,
|
|
3883
|
-
input_schema: RULE_PARAMETERS
|
|
3884
|
-
};
|
|
3885
|
-
var RULE_TOOL_OPENAI = {
|
|
3886
|
-
type: "function",
|
|
3887
|
-
function: {
|
|
3888
|
-
name: RULE_TOOL_NAME,
|
|
3889
|
-
description: RULE_TOOL_DESCRIPTION,
|
|
3890
|
-
parameters: RULE_PARAMETERS
|
|
3891
|
-
}
|
|
3892
|
-
};
|
|
3893
|
-
var RULE_TOOL_RESPONSES = {
|
|
3894
|
-
type: "function",
|
|
3895
|
-
name: RULE_TOOL_NAME,
|
|
3896
|
-
description: RULE_TOOL_DESCRIPTION,
|
|
3897
|
-
parameters: RULE_PARAMETERS
|
|
3898
|
-
};
|
|
3898
|
+
var RULES_USAGE_PROMPT = `PERSISTENT REMINDERS (${RULE_TOOL_NAME})
|
|
3899
|
+
|
|
3900
|
+
You can record persistent reminders that are injected into your system prompt for every remaining turn of this session. Call ${RULE_TOOL_NAME}({ action: "add", text }) when:
|
|
3901
|
+
- the user singles out a lesson, constraint, or preference ("remember this", "never do X again");
|
|
3902
|
+
- the user emphasizes the same point repeatedly;
|
|
3903
|
+
- the user asks you to remember a behavior or setting;
|
|
3904
|
+
- you hit a significant pitfall worth not repeating (build failure, wrong assumption, environment quirk).
|
|
3905
|
+
|
|
3906
|
+
Rules must be SHORT and principle-level (max ${DEFAULT_RULE_LIMITS.maxChars} chars each, ${DEFAULT_RULE_LIMITS.maxCount} total) \u2014 record the rule, not the incident. Check existing rules first (action: "list") and never add duplicates. Drop outdated rules with action: "remove" (pass the rule id) or wipe all with action: "clear". Recorded rules survive context compression: their tool calls are hard-protected.`;
|
|
3899
3907
|
|
|
3900
3908
|
// src/parse-compress-input.ts
|
|
3901
3909
|
function parseCompressArgs(input, opts) {
|
|
@@ -4808,11 +4816,8 @@ export {
|
|
|
4808
4816
|
DEFAULT_RULE_LIMITS,
|
|
4809
4817
|
HOW_TO_COMPRESS_RULES,
|
|
4810
4818
|
LEAN_HOW_TO_COMPRESS,
|
|
4811
|
-
|
|
4812
|
-
RULE_TOOL_DESCRIPTION,
|
|
4819
|
+
RULES_USAGE_PROMPT,
|
|
4813
4820
|
RULE_TOOL_NAME,
|
|
4814
|
-
RULE_TOOL_OPENAI,
|
|
4815
|
-
RULE_TOOL_RESPONSES,
|
|
4816
4821
|
SEARCH_CONTEXT_TOOL,
|
|
4817
4822
|
SEARCH_CONTEXT_TOOL_NAME,
|
|
4818
4823
|
SEARCH_CONTEXT_TOOL_OPENAI,
|
|
@@ -4873,7 +4878,7 @@ export {
|
|
|
4873
4878
|
findBlocksOverlappingMessages,
|
|
4874
4879
|
formatCreatedBlocks,
|
|
4875
4880
|
formatRanges,
|
|
4876
|
-
|
|
4881
|
+
formatRulesForPrompt,
|
|
4877
4882
|
getMessageFilter,
|
|
4878
4883
|
getSearchAlgorithm,
|
|
4879
4884
|
hideAbsorbedMessages,
|
|
@@ -4916,9 +4921,7 @@ export {
|
|
|
4916
4921
|
resolveBlockSpan,
|
|
4917
4922
|
resolveBoundaries,
|
|
4918
4923
|
resolvePrompts,
|
|
4919
|
-
resolveRuleLimits,
|
|
4920
4924
|
resolveTransformChannel,
|
|
4921
|
-
rulesEnabled,
|
|
4922
4925
|
runPipeline,
|
|
4923
4926
|
sanitizePackSurface,
|
|
4924
4927
|
searchBlocks,
|