@mce-bt/microagents-completion 0.1.2 → 0.2.1
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/manager.d.ts +13 -0
- package/dist/manager.d.ts.map +1 -1
- package/dist/manager.js +17 -3
- package/dist/manager.js.map +1 -1
- package/package.json +1 -1
package/dist/manager.d.ts
CHANGED
|
@@ -2,6 +2,14 @@ import type { CompletionRequest, CompletionResponse, CompletionChunk, EmbeddingR
|
|
|
2
2
|
export interface CompletionManagerConfig {
|
|
3
3
|
default: ProviderConfig;
|
|
4
4
|
tiers?: Record<string, ProviderConfig>;
|
|
5
|
+
/**
|
|
6
|
+
* Called after every completed (non-streaming) LLM call with the full call
|
|
7
|
+
* record. Wired by bootstrap to observability's TokenTracker; a throw here
|
|
8
|
+
* (e.g. BudgetExceededError) propagates and fails the call.
|
|
9
|
+
*/
|
|
10
|
+
onUsage?: (record: LLMCallRecord & {
|
|
11
|
+
provider: string;
|
|
12
|
+
}) => void;
|
|
5
13
|
}
|
|
6
14
|
/**
|
|
7
15
|
* Completion Manager — orchestrates multiple adapters with model tiering.
|
|
@@ -12,10 +20,13 @@ export interface CompletionManagerConfig {
|
|
|
12
20
|
* // Uses the 'reasoning' tier if configured, otherwise falls back to default.
|
|
13
21
|
*/
|
|
14
22
|
export declare class CompletionManager {
|
|
23
|
+
/** Retained call records — a ring so week-long agents don't grow unbounded */
|
|
24
|
+
private static readonly MAX_CALL_HISTORY;
|
|
15
25
|
private adapters;
|
|
16
26
|
private configs;
|
|
17
27
|
private totalUsage;
|
|
18
28
|
private callHistory;
|
|
29
|
+
private onUsage?;
|
|
19
30
|
constructor(config: CompletionManagerConfig);
|
|
20
31
|
private createAdapter;
|
|
21
32
|
private getAdapter;
|
|
@@ -40,10 +51,12 @@ export declare class CompletionManager {
|
|
|
40
51
|
getUsage(): TokenUsage;
|
|
41
52
|
/**
|
|
42
53
|
* Get per-call LLM history with model, tier, tokens, and duration.
|
|
54
|
+
* Windowed to the most recent 500 calls.
|
|
43
55
|
*/
|
|
44
56
|
getCallHistory(): LLMCallRecord[];
|
|
45
57
|
/**
|
|
46
58
|
* Get usage summary broken down by model and tier.
|
|
59
|
+
* `total` is all-time; byModel/byTier are windowed to retained history.
|
|
47
60
|
*/
|
|
48
61
|
getUsageSummary(): {
|
|
49
62
|
total: TokenUsage;
|
package/dist/manager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,aAAa,EACd,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,aAAa,EACd,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACvC;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAClE;AAED;;;;;;;GAOG;AACH,qBAAa,iBAAiB;IAC5B,8EAA8E;IAC9E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAO;IAE/C,OAAO,CAAC,QAAQ,CAA6C;IAC7D,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,UAAU,CAAwE;IAC1F,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,OAAO,CAAC,CAAqC;gBAEzC,MAAM,EAAE,uBAAuB;IAa3C,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACG,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,EACvC,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAC5C,OAAO,CAAC,kBAAkB,CAAC;IAmC9B;;OAEG;IACI,MAAM,CACX,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,EACvC,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAC5C,aAAa,CAAC,eAAe,CAAC;IAKjC;;OAEG;IACG,KAAK,CACT,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1C,OAAO,CAAC,iBAAiB,CAAC;IAQ7B;;OAEG;IACH,QAAQ,IAAI,UAAU;IAItB;;;OAGG;IACH,cAAc,IAAI,aAAa,EAAE;IAIjC;;;OAGG;IACH,eAAe,IAAI;QACjB,KAAK,EAAE,UAAU,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,YAAY,EAAE,MAAM,CAAC;YAAC,gBAAgB,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,aAAa,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACvI,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,YAAY,EAAE,MAAM,CAAC;YAAC,gBAAgB,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChH;IA6CD;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;;OAGG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAK1E"}
|
package/dist/manager.js
CHANGED
|
@@ -9,10 +9,13 @@ import { AnthropicAdapter } from './anthropic-adapter.js';
|
|
|
9
9
|
* // Uses the 'reasoning' tier if configured, otherwise falls back to default.
|
|
10
10
|
*/
|
|
11
11
|
export class CompletionManager {
|
|
12
|
+
/** Retained call records — a ring so week-long agents don't grow unbounded */
|
|
13
|
+
static MAX_CALL_HISTORY = 500;
|
|
12
14
|
adapters = new Map();
|
|
13
15
|
configs = new Map();
|
|
14
16
|
totalUsage = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };
|
|
15
17
|
callHistory = [];
|
|
18
|
+
onUsage;
|
|
16
19
|
constructor(config) {
|
|
17
20
|
// Adapters are constructed lazily on first use: a missing API key must
|
|
18
21
|
// fail the request that needs the LLM, not the boot of an agent whose
|
|
@@ -23,6 +26,7 @@ export class CompletionManager {
|
|
|
23
26
|
this.configs.set(tier, providerConfig);
|
|
24
27
|
}
|
|
25
28
|
}
|
|
29
|
+
this.onUsage = config.onUsage;
|
|
26
30
|
}
|
|
27
31
|
createAdapter(config) {
|
|
28
32
|
switch (config.provider) {
|
|
@@ -55,8 +59,8 @@ export class CompletionManager {
|
|
|
55
59
|
this.totalUsage.promptTokens += response.usage.promptTokens;
|
|
56
60
|
this.totalUsage.completionTokens += response.usage.completionTokens;
|
|
57
61
|
this.totalUsage.totalTokens += response.usage.totalTokens;
|
|
58
|
-
// Track per-call history
|
|
59
|
-
|
|
62
|
+
// Track per-call history (bounded; totalUsage above stays all-time)
|
|
63
|
+
const record = {
|
|
60
64
|
id: response.id,
|
|
61
65
|
model: response.model,
|
|
62
66
|
tier: tier ?? 'default',
|
|
@@ -65,7 +69,15 @@ export class CompletionManager {
|
|
|
65
69
|
totalTokens: response.usage.totalTokens,
|
|
66
70
|
durationMs,
|
|
67
71
|
timestamp: new Date().toISOString(),
|
|
68
|
-
}
|
|
72
|
+
};
|
|
73
|
+
this.callHistory.push(record);
|
|
74
|
+
if (this.callHistory.length > CompletionManager.MAX_CALL_HISTORY) {
|
|
75
|
+
this.callHistory.splice(0, this.callHistory.length - CompletionManager.MAX_CALL_HISTORY);
|
|
76
|
+
}
|
|
77
|
+
if (this.onUsage) {
|
|
78
|
+
const resolvedTier = tier && this.configs.has(tier) ? tier : 'default';
|
|
79
|
+
this.onUsage({ ...record, provider: this.configs.get(resolvedTier).provider });
|
|
80
|
+
}
|
|
69
81
|
return response;
|
|
70
82
|
}
|
|
71
83
|
/**
|
|
@@ -93,12 +105,14 @@ export class CompletionManager {
|
|
|
93
105
|
}
|
|
94
106
|
/**
|
|
95
107
|
* Get per-call LLM history with model, tier, tokens, and duration.
|
|
108
|
+
* Windowed to the most recent 500 calls.
|
|
96
109
|
*/
|
|
97
110
|
getCallHistory() {
|
|
98
111
|
return [...this.callHistory];
|
|
99
112
|
}
|
|
100
113
|
/**
|
|
101
114
|
* Get usage summary broken down by model and tier.
|
|
115
|
+
* `total` is all-time; byModel/byTier are windowed to retained history.
|
|
102
116
|
*/
|
|
103
117
|
getUsageSummary() {
|
|
104
118
|
const byModel = {};
|
package/dist/manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
|