acp-kernel 0.0.69-pr.283.149 → 0.0.69-pr.284.148
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/compress.d.ts.map +1 -1
- 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 +96 -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/sync.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/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;AAgBhF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAUvD,OAAO,EAGL,KAAK,YAAY,EAElB,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,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;CAC7B;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;AA2DD,wBAAgB,UAAU,CAAC,KAAK,GAAE,KAAU,GAAG,eAAe,CAyU7D;
|
|
1
|
+
{"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkC,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAgBhF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAUvD,OAAO,EAGL,KAAK,YAAY,EAElB,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,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;CAC7B;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;AA2DD,wBAAgB,UAAU,CAAC,KAAK,GAAE,KAAU,GAAG,eAAe,CAyU7D;AA2gCD,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|
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":"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"}
|
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;
|
|
@@ -262,6 +262,8 @@ function syncBlocks(messages, state) {
|
|
|
262
262
|
nudge: { ...state.nudge, anchors: { ...state.nudge.anchors } },
|
|
263
263
|
stats: { ...state.stats },
|
|
264
264
|
absorbed: (state.absorbed ?? []).map((record) => ({ ...record })),
|
|
265
|
+
rules: (state.rules ?? []).map((rule) => ({ ...rule })),
|
|
266
|
+
nextRuleId: state.nextRuleId,
|
|
265
267
|
nextBlockId: state.nextBlockId,
|
|
266
268
|
nextRunId: state.nextRunId
|
|
267
269
|
};
|
|
@@ -388,14 +390,6 @@ function validateConfig(config) {
|
|
|
388
390
|
errors.push("absorb.contextThresholdPct must be in [0, 1]");
|
|
389
391
|
}
|
|
390
392
|
}
|
|
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
393
|
return errors;
|
|
400
394
|
}
|
|
401
395
|
|
|
@@ -3028,6 +3022,8 @@ function cloneState(state) {
|
|
|
3028
3022
|
nudge: { ...state.nudge, anchors: { ...state.nudge.anchors } },
|
|
3029
3023
|
stats: { ...state.stats },
|
|
3030
3024
|
absorbed: (state.absorbed ?? []).map((record) => ({ ...record })),
|
|
3025
|
+
rules: (state.rules ?? []).map((rule) => ({ ...rule })),
|
|
3026
|
+
nextRuleId: state.nextRuleId,
|
|
3031
3027
|
nextBlockId: state.nextBlockId,
|
|
3032
3028
|
nextRunId: state.nextRunId
|
|
3033
3029
|
};
|
|
@@ -3797,105 +3793,121 @@ function matchSession(sessions, selector, labelOf) {
|
|
|
3797
3793
|
// src/rules.ts
|
|
3798
3794
|
var RULE_TOOL_NAME = "acp_rule";
|
|
3799
3795
|
var DEFAULT_RULE_LIMITS = Object.freeze({
|
|
3800
|
-
|
|
3801
|
-
|
|
3796
|
+
maxChars: 300,
|
|
3797
|
+
maxCount: 50
|
|
3802
3798
|
});
|
|
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
3799
|
function listRules(state) {
|
|
3813
3800
|
return state.rules ?? [];
|
|
3814
3801
|
}
|
|
3815
|
-
var RULE_ID_RE = /^rule
|
|
3816
|
-
function
|
|
3817
|
-
let
|
|
3802
|
+
var RULE_ID_RE = /^rule(\d+)$/;
|
|
3803
|
+
function highestRuleNumber(state) {
|
|
3804
|
+
let highest = 0;
|
|
3818
3805
|
for (const rule of state.rules ?? []) {
|
|
3819
|
-
const
|
|
3820
|
-
if (
|
|
3806
|
+
const match = RULE_ID_RE.exec(rule.id);
|
|
3807
|
+
if (match) highest = Math.max(highest, Number(match[1]));
|
|
3821
3808
|
}
|
|
3822
|
-
return
|
|
3809
|
+
return highest;
|
|
3810
|
+
}
|
|
3811
|
+
function allocateRuleId(state) {
|
|
3812
|
+
const next = Math.max(state.nextRuleId ?? 1, highestRuleNumber(state) + 1);
|
|
3813
|
+
return `rule${next}`;
|
|
3823
3814
|
}
|
|
3824
3815
|
function addRule(state, text, limits = {}) {
|
|
3825
|
-
const
|
|
3826
|
-
const
|
|
3827
|
-
const
|
|
3828
|
-
if (
|
|
3829
|
-
return {
|
|
3816
|
+
const maxChars = limits.maxChars ?? DEFAULT_RULE_LIMITS.maxChars;
|
|
3817
|
+
const maxCount = limits.maxCount ?? DEFAULT_RULE_LIMITS.maxCount;
|
|
3818
|
+
const trimmed = (text ?? "").trim();
|
|
3819
|
+
if (!trimmed) {
|
|
3820
|
+
return {
|
|
3821
|
+
state,
|
|
3822
|
+
ok: false,
|
|
3823
|
+
resultText: "acp_rule failed: text is empty \u2014 provide the reminder to remember."
|
|
3824
|
+
};
|
|
3830
3825
|
}
|
|
3831
|
-
if (
|
|
3826
|
+
if (trimmed.length > maxChars) {
|
|
3832
3827
|
return {
|
|
3828
|
+
state,
|
|
3833
3829
|
ok: false,
|
|
3834
|
-
|
|
3830
|
+
resultText: `acp_rule failed: ${trimmed.length} chars exceeds the ${maxChars}-char limit \u2014 keep rules short and principle-level.`
|
|
3835
3831
|
};
|
|
3836
3832
|
}
|
|
3837
|
-
const
|
|
3838
|
-
const
|
|
3839
|
-
if (
|
|
3840
|
-
return {
|
|
3833
|
+
const rules = listRules(state);
|
|
3834
|
+
const duplicate = rules.find((rule2) => rule2.text === trimmed);
|
|
3835
|
+
if (duplicate) {
|
|
3836
|
+
return {
|
|
3837
|
+
state,
|
|
3838
|
+
ok: false,
|
|
3839
|
+
resultText: `acp_rule failed: identical rule already exists (${duplicate.id}) \u2014 no change.`
|
|
3840
|
+
};
|
|
3841
3841
|
}
|
|
3842
|
-
if (
|
|
3842
|
+
if (rules.length >= maxCount) {
|
|
3843
3843
|
return {
|
|
3844
|
+
state,
|
|
3844
3845
|
ok: false,
|
|
3845
|
-
|
|
3846
|
+
resultText: `acp_rule failed: rule limit reached (${maxCount}) \u2014 remove or clear outdated rules first.`
|
|
3846
3847
|
};
|
|
3847
3848
|
}
|
|
3848
|
-
const
|
|
3849
|
-
|
|
3850
|
-
|
|
3849
|
+
const next = Math.max(state.nextRuleId ?? 1, highestRuleNumber(state) + 1);
|
|
3850
|
+
const rule = { id: `rule${next}`, text: trimmed };
|
|
3851
|
+
const stateAfter = {
|
|
3852
|
+
...state,
|
|
3853
|
+
rules: [...rules, rule],
|
|
3854
|
+
nextRuleId: next + 1
|
|
3855
|
+
};
|
|
3856
|
+
return {
|
|
3857
|
+
state: stateAfter,
|
|
3858
|
+
ok: true,
|
|
3859
|
+
resultText: `rule recorded as ${rule.id}. It stays in the system prompt every turn and is protected from compression.`,
|
|
3860
|
+
rule
|
|
3861
|
+
};
|
|
3851
3862
|
}
|
|
3852
3863
|
function removeRule(state, id) {
|
|
3853
|
-
const
|
|
3854
|
-
const
|
|
3855
|
-
if (
|
|
3856
|
-
|
|
3857
|
-
|
|
3864
|
+
const rules = listRules(state);
|
|
3865
|
+
const target = rules.find((rule) => rule.id === id.trim());
|
|
3866
|
+
if (!target) {
|
|
3867
|
+
return {
|
|
3868
|
+
state,
|
|
3869
|
+
ok: false,
|
|
3870
|
+
resultText: `acp_rule failed: no rule with id "${id}" (use action "list" to see current rules).`
|
|
3871
|
+
};
|
|
3872
|
+
}
|
|
3873
|
+
const stateAfter = {
|
|
3874
|
+
...state,
|
|
3875
|
+
rules: rules.filter((rule) => rule.id !== target.id)
|
|
3876
|
+
};
|
|
3877
|
+
return {
|
|
3878
|
+
state: stateAfter,
|
|
3879
|
+
ok: true,
|
|
3880
|
+
resultText: `rule removed (${target.id}). Its id will never be re-issued.`
|
|
3881
|
+
};
|
|
3858
3882
|
}
|
|
3859
3883
|
function clearRules(state) {
|
|
3860
|
-
const
|
|
3861
|
-
|
|
3862
|
-
|
|
3884
|
+
const rules = listRules(state);
|
|
3885
|
+
if (rules.length === 0) {
|
|
3886
|
+
return { state, ok: true, resultText: "no rules to clear." };
|
|
3887
|
+
}
|
|
3888
|
+
const stateAfter = { ...state, rules: [] };
|
|
3889
|
+
return {
|
|
3890
|
+
state: stateAfter,
|
|
3891
|
+
ok: true,
|
|
3892
|
+
resultText: `all ${rules.length} rule(s) cleared. Issued ids will never be re-issued.`
|
|
3893
|
+
};
|
|
3863
3894
|
}
|
|
3864
|
-
function
|
|
3895
|
+
function formatRulesForPrompt(state) {
|
|
3896
|
+
const rules = listRules(state);
|
|
3865
3897
|
if (rules.length === 0) return "";
|
|
3866
|
-
const lines = rules.map((
|
|
3867
|
-
return `
|
|
3898
|
+
const lines = rules.map((rule) => `- [${rule.id}] ${rule.text}`);
|
|
3899
|
+
return `PERSISTENT USER RULES (${RULE_TOOL_NAME}) \u2014 these reminders apply to every turn of this session and take precedence over default behavior:
|
|
3868
3900
|
${lines.join("\n")}`;
|
|
3869
3901
|
}
|
|
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
|
-
};
|
|
3902
|
+
var RULES_USAGE_PROMPT = `PERSISTENT REMINDERS (${RULE_TOOL_NAME})
|
|
3903
|
+
|
|
3904
|
+
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:
|
|
3905
|
+
- the user singles out a lesson, constraint, or preference ("remember this", "never do X again");
|
|
3906
|
+
- the user emphasizes the same point repeatedly;
|
|
3907
|
+
- the user asks you to remember a behavior or setting;
|
|
3908
|
+
- you hit a significant pitfall worth not repeating (build failure, wrong assumption, environment quirk).
|
|
3909
|
+
|
|
3910
|
+
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
3911
|
|
|
3900
3912
|
// src/parse-compress-input.ts
|
|
3901
3913
|
function parseCompressArgs(input, opts) {
|
|
@@ -4808,11 +4820,8 @@ export {
|
|
|
4808
4820
|
DEFAULT_RULE_LIMITS,
|
|
4809
4821
|
HOW_TO_COMPRESS_RULES,
|
|
4810
4822
|
LEAN_HOW_TO_COMPRESS,
|
|
4811
|
-
|
|
4812
|
-
RULE_TOOL_DESCRIPTION,
|
|
4823
|
+
RULES_USAGE_PROMPT,
|
|
4813
4824
|
RULE_TOOL_NAME,
|
|
4814
|
-
RULE_TOOL_OPENAI,
|
|
4815
|
-
RULE_TOOL_RESPONSES,
|
|
4816
4825
|
SEARCH_CONTEXT_TOOL,
|
|
4817
4826
|
SEARCH_CONTEXT_TOOL_NAME,
|
|
4818
4827
|
SEARCH_CONTEXT_TOOL_OPENAI,
|
|
@@ -4873,7 +4882,7 @@ export {
|
|
|
4873
4882
|
findBlocksOverlappingMessages,
|
|
4874
4883
|
formatCreatedBlocks,
|
|
4875
4884
|
formatRanges,
|
|
4876
|
-
|
|
4885
|
+
formatRulesForPrompt,
|
|
4877
4886
|
getMessageFilter,
|
|
4878
4887
|
getSearchAlgorithm,
|
|
4879
4888
|
hideAbsorbedMessages,
|
|
@@ -4916,9 +4925,7 @@ export {
|
|
|
4916
4925
|
resolveBlockSpan,
|
|
4917
4926
|
resolveBoundaries,
|
|
4918
4927
|
resolvePrompts,
|
|
4919
|
-
resolveRuleLimits,
|
|
4920
4928
|
resolveTransformChannel,
|
|
4921
|
-
rulesEnabled,
|
|
4922
4929
|
runPipeline,
|
|
4923
4930
|
sanitizePackSurface,
|
|
4924
4931
|
searchBlocks,
|