acp-kernel 0.0.69-pr.284.147 → 0.0.69-pr.288.151
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-5TQA7ZQM.js → chunk-UX4LINT7.js} +1 -3
- package/dist/chunk-UX4LINT7.js.map +1 -0
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -130
- package/dist/index.js.map +1 -1
- package/dist/persist/index.js +2 -4
- package/dist/persist/index.js.map +1 -1
- package/dist/persist/state-merge.d.ts.map +1 -1
- package/dist/protected.d.ts +2 -4
- package/dist/protected.d.ts.map +1 -1
- package/dist/state.d.ts.map +1 -1
- package/dist/types.d.ts +0 -14
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-5TQA7ZQM.js.map +0 -1
- package/dist/rules.d.ts +0 -36
- package/dist/rules.d.ts.map +0 -1
|
@@ -13,8 +13,6 @@ function createInitialState() {
|
|
|
13
13
|
},
|
|
14
14
|
stats: { tokensCompressed: 0, compressionCount: 0, absorbedTokens: 0 },
|
|
15
15
|
absorbed: [],
|
|
16
|
-
rules: [],
|
|
17
|
-
nextRuleId: 1,
|
|
18
16
|
nextBlockId: 1,
|
|
19
17
|
nextRunId: 1
|
|
20
18
|
};
|
|
@@ -70,4 +68,4 @@ export {
|
|
|
70
68
|
highestActiveTier,
|
|
71
69
|
advanceSurvival
|
|
72
70
|
};
|
|
73
|
-
//# sourceMappingURL=chunk-
|
|
71
|
+
//# sourceMappingURL=chunk-UX4LINT7.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 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,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/index.d.ts
CHANGED
|
@@ -33,8 +33,6 @@ 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, 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
36
|
export { rebuildCompressionState } from "./rebuild.js";
|
|
39
37
|
export type { RebuildResult, RebuildPorts } from "./rebuild.js";
|
|
40
38
|
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-UX4LINT7.js";
|
|
28
28
|
|
|
29
29
|
// src/refs.ts
|
|
30
30
|
var REF_WIDTH = 5;
|
|
@@ -1274,7 +1274,7 @@ var ABSORB_TOOL_OPENAI = {
|
|
|
1274
1274
|
};
|
|
1275
1275
|
|
|
1276
1276
|
// src/protected.ts
|
|
1277
|
-
var ALWAYS_PROTECTED_TOOLS = ["compress"
|
|
1277
|
+
var ALWAYS_PROTECTED_TOOLS = ["compress"];
|
|
1278
1278
|
var NEVER_PRESERVE_RECENT_TOOLS = [
|
|
1279
1279
|
"decompress",
|
|
1280
1280
|
"search_context",
|
|
@@ -3786,125 +3786,6 @@ function matchSession(sessions, selector, labelOf) {
|
|
|
3786
3786
|
return sessions.filter((s) => s.id.startsWith(selector) || (labelOf(s) ?? "").startsWith(selector));
|
|
3787
3787
|
}
|
|
3788
3788
|
|
|
3789
|
-
// src/rules.ts
|
|
3790
|
-
var RULE_TOOL_NAME = "acp_rule";
|
|
3791
|
-
var DEFAULT_RULE_LIMITS = Object.freeze({
|
|
3792
|
-
maxChars: 300,
|
|
3793
|
-
maxCount: 50
|
|
3794
|
-
});
|
|
3795
|
-
function listRules(state) {
|
|
3796
|
-
return state.rules ?? [];
|
|
3797
|
-
}
|
|
3798
|
-
var RULE_ID_RE = /^rule(\d+)$/;
|
|
3799
|
-
function highestRuleNumber(state) {
|
|
3800
|
-
let highest = 0;
|
|
3801
|
-
for (const rule of state.rules ?? []) {
|
|
3802
|
-
const match = RULE_ID_RE.exec(rule.id);
|
|
3803
|
-
if (match) highest = Math.max(highest, Number(match[1]));
|
|
3804
|
-
}
|
|
3805
|
-
return highest;
|
|
3806
|
-
}
|
|
3807
|
-
function allocateRuleId(state) {
|
|
3808
|
-
const next = Math.max(state.nextRuleId ?? 1, highestRuleNumber(state) + 1);
|
|
3809
|
-
return `rule${next}`;
|
|
3810
|
-
}
|
|
3811
|
-
function addRule(state, text, limits = {}) {
|
|
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
|
-
};
|
|
3821
|
-
}
|
|
3822
|
-
if (trimmed.length > maxChars) {
|
|
3823
|
-
return {
|
|
3824
|
-
state,
|
|
3825
|
-
ok: false,
|
|
3826
|
-
resultText: `acp_rule failed: ${trimmed.length} chars exceeds the ${maxChars}-char limit \u2014 keep rules short and principle-level.`
|
|
3827
|
-
};
|
|
3828
|
-
}
|
|
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
|
-
};
|
|
3837
|
-
}
|
|
3838
|
-
if (rules.length >= maxCount) {
|
|
3839
|
-
return {
|
|
3840
|
-
state,
|
|
3841
|
-
ok: false,
|
|
3842
|
-
resultText: `acp_rule failed: rule limit reached (${maxCount}) \u2014 remove or clear outdated rules first.`
|
|
3843
|
-
};
|
|
3844
|
-
}
|
|
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
|
-
};
|
|
3858
|
-
}
|
|
3859
|
-
function removeRule(state, id) {
|
|
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
|
-
};
|
|
3878
|
-
}
|
|
3879
|
-
function clearRules(state) {
|
|
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
|
-
};
|
|
3890
|
-
}
|
|
3891
|
-
function formatRulesForPrompt(state) {
|
|
3892
|
-
const rules = listRules(state);
|
|
3893
|
-
if (rules.length === 0) 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:
|
|
3896
|
-
${lines.join("\n")}`;
|
|
3897
|
-
}
|
|
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.`;
|
|
3907
|
-
|
|
3908
3789
|
// src/parse-compress-input.ts
|
|
3909
3790
|
function parseCompressArgs(input, opts) {
|
|
3910
3791
|
const callId = opts?.callId;
|
|
@@ -4813,11 +4694,8 @@ export {
|
|
|
4813
4694
|
DEFAULT_ABSORB_CONFIG,
|
|
4814
4695
|
DEFAULT_ALGORITHM,
|
|
4815
4696
|
DEFAULT_ROLE_WEIGHTS,
|
|
4816
|
-
DEFAULT_RULE_LIMITS,
|
|
4817
4697
|
HOW_TO_COMPRESS_RULES,
|
|
4818
4698
|
LEAN_HOW_TO_COMPRESS,
|
|
4819
|
-
RULES_USAGE_PROMPT,
|
|
4820
|
-
RULE_TOOL_NAME,
|
|
4821
4699
|
SEARCH_CONTEXT_TOOL,
|
|
4822
4700
|
SEARCH_CONTEXT_TOOL_NAME,
|
|
4823
4701
|
SEARCH_CONTEXT_TOOL_OPENAI,
|
|
@@ -4828,10 +4706,8 @@ export {
|
|
|
4828
4706
|
VIABLE_RANGE_MIN_TOKENS,
|
|
4829
4707
|
activeBlockSpans,
|
|
4830
4708
|
activeBlocks,
|
|
4831
|
-
addRule,
|
|
4832
4709
|
advanceSurvival,
|
|
4833
4710
|
allocateBlockId,
|
|
4834
|
-
allocateRuleId,
|
|
4835
4711
|
allocateRunId,
|
|
4836
4712
|
appendAbsorbPrompts,
|
|
4837
4713
|
applyAbsorb,
|
|
@@ -4853,7 +4729,6 @@ export {
|
|
|
4853
4729
|
builtinSource,
|
|
4854
4730
|
clearDocFeatures,
|
|
4855
4731
|
clearMessageFilters,
|
|
4856
|
-
clearRules,
|
|
4857
4732
|
cloneWithDescriptions,
|
|
4858
4733
|
collectBlockContent,
|
|
4859
4734
|
countMessageTokens,
|
|
@@ -4878,7 +4753,6 @@ export {
|
|
|
4878
4753
|
findBlocksOverlappingMessages,
|
|
4879
4754
|
formatCreatedBlocks,
|
|
4880
4755
|
formatRanges,
|
|
4881
|
-
formatRulesForPrompt,
|
|
4882
4756
|
getMessageFilter,
|
|
4883
4757
|
getSearchAlgorithm,
|
|
4884
4758
|
hideAbsorbedMessages,
|
|
@@ -4893,7 +4767,6 @@ export {
|
|
|
4893
4767
|
isValidPackName,
|
|
4894
4768
|
leanPack,
|
|
4895
4769
|
listMessageFilters,
|
|
4896
|
-
listRules,
|
|
4897
4770
|
listSearchAlgorithms,
|
|
4898
4771
|
makeIO,
|
|
4899
4772
|
matchSession,
|
|
@@ -4911,7 +4784,6 @@ export {
|
|
|
4911
4784
|
refToIndex,
|
|
4912
4785
|
registerMessageFilter,
|
|
4913
4786
|
registerSearchAlgorithm,
|
|
4914
|
-
removeRule,
|
|
4915
4787
|
renderHandoff,
|
|
4916
4788
|
renderMessage2 as renderMessage,
|
|
4917
4789
|
renderNudgeText,
|