acp-kernel 0.0.18 → 0.0.20

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.
@@ -1 +1 @@
1
- {"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAQpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAOvD,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;AAED,wBAAgB,UAAU,CAAC,KAAK,GAAE,KAAU,GAAG,eAAe,CAoO7D;AAurBD,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAQpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAOvD,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;AAED,wBAAgB,UAAU,CAAC,KAAK,GAAE,KAAU,GAAG,eAAe,CAoO7D;AA6sBD,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -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,CAoCR;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CA0BvD"}
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,CAoCR;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CA+BvD"}
package/dist/index.js CHANGED
@@ -300,20 +300,20 @@ function defaultConfig(modelContextLimit, overrides = {}) {
300
300
  const base = {
301
301
  tiers: { enabled: true, tier2Trigger: 5, tier3Trigger: 10 },
302
302
  nudge: {
303
- maxContextLimitPct: 0.55,
303
+ maxContextLimitPct: 0.75,
304
304
  minContextLimitPct: 0.45,
305
305
  frequency: 5,
306
306
  iterationThreshold: 15,
307
307
  force: "soft",
308
308
  growthRatio: 0.05,
309
- growthFloor: Math.max(2e4, Math.round(modelContextLimit * 0.05)),
309
+ growthFloor: 5e4,
310
310
  growthCap: 5e4,
311
311
  minGrowthFloor: 2e4,
312
312
  minGrowthRatio: 0.45,
313
- emergencyThresholdPct: 0.8
313
+ emergencyThresholdPct: 0.95
314
314
  },
315
315
  promotionThreshold: 5,
316
- truncate: { threshold: 1 },
316
+ truncate: { threshold: 0.95 },
317
317
  compress: {
318
318
  minCompressRange: 5e3,
319
319
  maxSummaryLength: 2e4,
@@ -343,6 +343,11 @@ function validateConfig(config) {
343
343
  "nudge.minContextLimitPct must not exceed nudge.maxContextLimitPct"
344
344
  );
345
345
  }
346
+ if (config.nudge.maxContextLimitPct > config.nudge.emergencyThresholdPct) {
347
+ errors.push(
348
+ "nudge.maxContextLimitPct must not exceed nudge.emergencyThresholdPct"
349
+ );
350
+ }
346
351
  if (config.promotionThreshold < 1) {
347
352
  errors.push("promotionThreshold must be >= 1");
348
353
  }
@@ -1543,6 +1548,7 @@ function decideNudge(input) {
1543
1548
  const limit = config.modelContextLimit;
1544
1549
  const usage = limit > 0 ? tokenCount / limit : 0;
1545
1550
  const nudgeGrowthTokens = resolveAdaptiveGrowth(limit, config.nudge);
1551
+ const overLimit = usage >= config.nudge.maxContextLimitPct;
1546
1552
  const emergencyOverride = usage >= config.nudge.emergencyThresholdPct;
1547
1553
  const baseline = state.nudge.lastPerMessageNudgeTokens;
1548
1554
  const hadPendingNudge = state.nudge.lastNudgeShownTokens > 0;
@@ -1559,7 +1565,7 @@ function decideNudge(input) {
1559
1565
  let injectedTier = null;
1560
1566
  let injectedReason = "";
1561
1567
  const growthReady = growthSinceReference >= growthFloor;
1562
- if (!emergencyOverride && growthReady) {
1568
+ if (!overLimit && growthReady) {
1563
1569
  for (const tier of [1, 2, 3]) {
1564
1570
  if (!config.tiers.enabled && tier > 1) break;
1565
1571
  const info = tiers[tier];
@@ -1571,11 +1577,26 @@ function decideNudge(input) {
1571
1577
  injectedReason = tier === 1 ? `T1 compressible ${info.pending} >= ${nudgeGrowthTokens}, growth ${growthSinceReference}, usage ${Math.round(usage * 100)}%` : `T${tier} distill ready: ${info.targetBlocks.length} tier-${tier - 1} blocks (${info.pending} tokens) >= ${nudgeGrowthTokens}, usage ${Math.round(usage * 100)}%`;
1572
1578
  break;
1573
1579
  }
1580
+ } else if (overLimit) {
1581
+ for (const tier of [1, 2, 3]) {
1582
+ if (!config.tiers.enabled && tier > 1) break;
1583
+ const info = tiers[tier];
1584
+ if (!info || info.pending < 1) continue;
1585
+ injectedTier = tier;
1586
+ injectedReason = emergencyOverride ? `EMERGENCY: usage ${Math.round(usage * 100)}% >= ${Math.round(config.nudge.emergencyThresholdPct * 100)}%, T${tier} pending ${info.pending}` : `OVER-LIMIT: usage ${Math.round(usage * 100)}% >= ${Math.round(config.nudge.maxContextLimitPct * 100)}%, T${tier} pending ${info.pending}`;
1587
+ break;
1588
+ }
1574
1589
  }
1575
- const shouldInject = emergencyOverride || injectedTier !== null;
1590
+ const shouldInject = overLimit || injectedTier !== null;
1576
1591
  let reason;
1577
- if (emergencyOverride) {
1578
- reason = `EMERGENCY: usage ${Math.round(usage * 100)}% >= ${Math.round(config.nudge.emergencyThresholdPct * 100)}%`;
1592
+ if (emergencyOverride && injectedTier !== null) {
1593
+ reason = injectedReason;
1594
+ } else if (emergencyOverride) {
1595
+ reason = `EMERGENCY: usage ${Math.round(usage * 100)}% >= ${Math.round(config.nudge.emergencyThresholdPct * 100)}% (no compressible content)`;
1596
+ } else if (overLimit && injectedTier !== null) {
1597
+ reason = injectedReason;
1598
+ } else if (overLimit) {
1599
+ reason = `OVER-LIMIT: usage ${Math.round(usage * 100)}% >= ${Math.round(config.nudge.maxContextLimitPct * 100)}% (no compressible content)`;
1579
1600
  } else if (injectedTier !== null) {
1580
1601
  reason = injectedReason;
1581
1602
  } else {
@@ -1611,6 +1632,7 @@ function decideNudge(input) {
1611
1632
  nudgeGrowthTokens,
1612
1633
  growthFloor,
1613
1634
  hasPendingNudge: hasPendingNudge ? 1 : 0,
1635
+ overLimit: overLimit ? 1 : 0,
1614
1636
  emergencyOverride: emergencyOverride ? 1 : 0,
1615
1637
  pendingT1: tiers[1].pending,
1616
1638
  pendingT2: tiers[2].pending,