@curie-agent/core 0.4.2 → 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.
Files changed (42) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/src/compaction.d.ts +76 -0
  3. package/dist/src/compaction.d.ts.map +1 -0
  4. package/dist/src/compaction.js +229 -0
  5. package/dist/src/compaction.js.map +1 -0
  6. package/dist/src/context-budget.d.ts +72 -0
  7. package/dist/src/context-budget.d.ts.map +1 -0
  8. package/dist/src/context-budget.js +132 -0
  9. package/dist/src/context-budget.js.map +1 -0
  10. package/dist/src/event-bus.d.ts +20 -0
  11. package/dist/src/event-bus.d.ts.map +1 -1
  12. package/dist/src/event-bus.js.map +1 -1
  13. package/dist/src/index.d.ts +6 -3
  14. package/dist/src/index.d.ts.map +1 -1
  15. package/dist/src/index.js +4 -2
  16. package/dist/src/index.js.map +1 -1
  17. package/dist/src/settings.d.ts +13 -0
  18. package/dist/src/settings.d.ts.map +1 -1
  19. package/dist/src/settings.js +37 -12
  20. package/dist/src/settings.js.map +1 -1
  21. package/dist/src/subagent-executor.d.ts +8 -0
  22. package/dist/src/subagent-executor.d.ts.map +1 -1
  23. package/dist/src/subagent-executor.js +20 -6
  24. package/dist/src/subagent-executor.js.map +1 -1
  25. package/dist/src/turn-loop.d.ts +22 -2
  26. package/dist/src/turn-loop.d.ts.map +1 -1
  27. package/dist/src/turn-loop.js +222 -95
  28. package/dist/src/turn-loop.js.map +1 -1
  29. package/package.json +1 -1
  30. package/templates/settings.json +100 -91
  31. package/dist/src/cron-manager.d.ts +0 -92
  32. package/dist/src/cron-manager.d.ts.map +0 -1
  33. package/dist/src/cron-manager.js +0 -410
  34. package/dist/src/cron-manager.js.map +0 -1
  35. package/dist/src/task-executor.d.ts +0 -31
  36. package/dist/src/task-executor.d.ts.map +0 -1
  37. package/dist/src/task-executor.js +0 -91
  38. package/dist/src/task-executor.js.map +0 -1
  39. package/dist/src/token-monitor.d.ts +0 -50
  40. package/dist/src/token-monitor.d.ts.map +0 -1
  41. package/dist/src/token-monitor.js +0 -119
  42. 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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"}