@curie-agent/core 0.4.1 → 0.4.3
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/.tsbuildinfo +1 -1
- package/dist/src/compaction.d.ts +76 -0
- package/dist/src/compaction.d.ts.map +1 -0
- package/dist/src/compaction.js +229 -0
- package/dist/src/compaction.js.map +1 -0
- package/dist/src/context-budget.d.ts +72 -0
- package/dist/src/context-budget.d.ts.map +1 -0
- package/dist/src/context-budget.js +132 -0
- package/dist/src/context-budget.js.map +1 -0
- package/dist/src/event-bus.d.ts +20 -0
- package/dist/src/event-bus.d.ts.map +1 -1
- package/dist/src/event-bus.js.map +1 -1
- package/dist/src/index.d.ts +6 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/settings.d.ts +13 -0
- package/dist/src/settings.d.ts.map +1 -1
- package/dist/src/settings.js +37 -12
- package/dist/src/settings.js.map +1 -1
- package/dist/src/subagent-executor.d.ts +8 -0
- package/dist/src/subagent-executor.d.ts.map +1 -1
- package/dist/src/subagent-executor.js +20 -6
- package/dist/src/subagent-executor.js.map +1 -1
- package/dist/src/turn-loop.d.ts +22 -2
- package/dist/src/turn-loop.d.ts.map +1 -1
- package/dist/src/turn-loop.js +222 -95
- package/dist/src/turn-loop.js.map +1 -1
- package/package.json +1 -1
- package/templates/settings.json +100 -91
- package/dist/src/cron-manager.d.ts +0 -92
- package/dist/src/cron-manager.d.ts.map +0 -1
- package/dist/src/cron-manager.js +0 -410
- package/dist/src/cron-manager.js.map +0 -1
- package/dist/src/task-executor.d.ts +0 -31
- package/dist/src/task-executor.d.ts.map +0 -1
- package/dist/src/task-executor.js +0 -91
- package/dist/src/task-executor.js.map +0 -1
- package/dist/src/token-monitor.d.ts +0 -50
- package/dist/src/token-monitor.d.ts.map +0 -1
- package/dist/src/token-monitor.js +0 -119
- package/dist/src/token-monitor.js.map +0 -1
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { estimateCost } from './pricing.js';
|
|
2
|
-
export { estimateCost, parseTieredPricing, selectTier } from './pricing.js';
|
|
3
|
-
export class TokenMonitor {
|
|
4
|
-
config;
|
|
5
|
-
cumulativeInputTokens;
|
|
6
|
-
lastTrackedTokens;
|
|
7
|
-
acknowledged = new Set();
|
|
8
|
-
constructor(config) {
|
|
9
|
-
this.config = config;
|
|
10
|
-
this.cumulativeInputTokens = 0;
|
|
11
|
-
this.lastTrackedTokens = 0;
|
|
12
|
-
}
|
|
13
|
-
getFillPct() {
|
|
14
|
-
if (this.config.contextWindowSize <= 0)
|
|
15
|
-
return 0;
|
|
16
|
-
return Math.min(100, Math.round((this.cumulativeInputTokens / this.config.contextWindowSize) * 100));
|
|
17
|
-
}
|
|
18
|
-
getStatus() {
|
|
19
|
-
const pct = this.getFillPct();
|
|
20
|
-
if (pct >= this.config.forcedThresholdPct)
|
|
21
|
-
return 'forced-compaction';
|
|
22
|
-
if (pct >= this.config.thresholdPct)
|
|
23
|
-
return 'compaction-needed';
|
|
24
|
-
if (pct >= this.config.warnThresholdPct)
|
|
25
|
-
return 'warning';
|
|
26
|
-
return 'ok';
|
|
27
|
-
}
|
|
28
|
-
parseTiers(tiersRaw) {
|
|
29
|
-
if (!tiersRaw || tiersRaw.length === 0)
|
|
30
|
-
return [];
|
|
31
|
-
return tiersRaw;
|
|
32
|
-
}
|
|
33
|
-
selectTier(tiers, totalTokens) {
|
|
34
|
-
let result = tiers[0] ?? { in: 0, out: 0 };
|
|
35
|
-
for (const tier of tiers) {
|
|
36
|
-
if (tier.threshold !== undefined && totalTokens >= tier.threshold) {
|
|
37
|
-
result = tier;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
// Find the tier just below the current one
|
|
41
|
-
let prev = tiers[0] ?? { in: 0, out: 0 };
|
|
42
|
-
for (let i = 0; i < tiers.length; i++) {
|
|
43
|
-
if (tiers[i] === result) {
|
|
44
|
-
prev = i > 0 ? tiers[i - 1] : tiers[0];
|
|
45
|
-
break;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
return [prev, result];
|
|
49
|
-
}
|
|
50
|
-
checkTierCrossing(tiersRaw) {
|
|
51
|
-
if (!this.config.pricingTierWarn)
|
|
52
|
-
return null;
|
|
53
|
-
const tiers = this.parseTiers(tiersRaw);
|
|
54
|
-
if (tiers.length < 2)
|
|
55
|
-
return null;
|
|
56
|
-
const [prevTier, newTier] = this.selectTier(tiers, this.cumulativeInputTokens);
|
|
57
|
-
if (prevTier.in === newTier.in)
|
|
58
|
-
return null;
|
|
59
|
-
const threshold = newTier.threshold ?? 0;
|
|
60
|
-
const key = `tier-${threshold}`;
|
|
61
|
-
if (this.acknowledged.has(key))
|
|
62
|
-
return null;
|
|
63
|
-
const oldRate = `$${prevTier.in.toFixed(2)}/$${prevTier.out.toFixed(2)} per 1M tokens`;
|
|
64
|
-
const newRate = `$${newTier.in.toFixed(2)}/$${newTier.out.toFixed(2)} per 1M tokens`;
|
|
65
|
-
const cost = estimateCost(this.config.model || 'claude-sonnet-4-6', this.cumulativeInputTokens, 0);
|
|
66
|
-
const oldCost = estimateCost(this.config.model || 'claude-sonnet-4-6', this.cumulativeInputTokens, 0, undefined);
|
|
67
|
-
return {
|
|
68
|
-
type: 'tier-warning',
|
|
69
|
-
threshold,
|
|
70
|
-
oldTier: prevTier,
|
|
71
|
-
newTier,
|
|
72
|
-
message: `⚠ Entering ${Math.round(threshold / 1000)}k+ tier — ${oldRate} -> ${newRate} (current session cost: $${cost.toFixed(2)})`,
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
addTokens(inputTokens, outputTokens, tiersRaw) {
|
|
76
|
-
this.cumulativeInputTokens += inputTokens;
|
|
77
|
-
const events = [];
|
|
78
|
-
const status = this.getStatus();
|
|
79
|
-
const pct = this.getFillPct();
|
|
80
|
-
if (status === 'warning') {
|
|
81
|
-
events.push({ type: 'context-warning', fillPct: pct, message: `Context window ${pct}% full (warning threshold: ${this.config.warnThresholdPct}%)` });
|
|
82
|
-
}
|
|
83
|
-
else if (status === 'compaction-needed') {
|
|
84
|
-
events.push({ type: 'context-compaction-needed', fillPct: pct, message: `Context window ${pct}% full (compaction threshold: ${this.config.thresholdPct}%)` });
|
|
85
|
-
}
|
|
86
|
-
else if (status === 'forced-compaction') {
|
|
87
|
-
events.push({ type: 'context-forced-compaction', fillPct: pct, message: `Context window ${pct}% full (forced compaction at ${this.config.forcedThresholdPct}%)` });
|
|
88
|
-
}
|
|
89
|
-
const tierEvent = this.checkTierCrossing(tiersRaw);
|
|
90
|
-
if (tierEvent) {
|
|
91
|
-
events.push(tierEvent);
|
|
92
|
-
}
|
|
93
|
-
if (events.length > 0) {
|
|
94
|
-
this.lastTrackedTokens = this.cumulativeInputTokens;
|
|
95
|
-
}
|
|
96
|
-
return events;
|
|
97
|
-
}
|
|
98
|
-
acknowledge(eventType) {
|
|
99
|
-
this.acknowledged.add(eventType);
|
|
100
|
-
}
|
|
101
|
-
reset() {
|
|
102
|
-
this.cumulativeInputTokens = 0;
|
|
103
|
-
this.lastTrackedTokens = 0;
|
|
104
|
-
this.acknowledged.clear();
|
|
105
|
-
}
|
|
106
|
-
setContextWindowSize(size) {
|
|
107
|
-
this.config.contextWindowSize = size;
|
|
108
|
-
}
|
|
109
|
-
setThresholdPct(pct) {
|
|
110
|
-
this.config.thresholdPct = pct;
|
|
111
|
-
}
|
|
112
|
-
setWarnThresholdPct(pct) {
|
|
113
|
-
this.config.warnThresholdPct = pct;
|
|
114
|
-
}
|
|
115
|
-
setForcedThresholdPct(pct) {
|
|
116
|
-
this.config.forcedThresholdPct = pct;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
//# sourceMappingURL=token-monitor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"token-monitor.js","sourceRoot":"","sources":["../../src/token-monitor.ts"],"names":[],"mappings":"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"}
|