@sema-agent/server 3.6.1 → 3.7.0
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/fleet-client.d.ts +6 -7
- package/dist/fleet-client.js +11 -11
- package/package.json +2 -2
package/dist/fleet-client.d.ts
CHANGED
|
@@ -25,13 +25,12 @@ export declare class FleetUsageAccumulator {
|
|
|
25
25
|
private cells;
|
|
26
26
|
private runsSeen;
|
|
27
27
|
/**
|
|
28
|
-
* 🔴 RB-368
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* 在那之前,请**不要**把这个 `?? 0` 读成「已裁定未知=0」——裁定见 budget.ts 的 #59/RB-368 块。
|
|
28
|
+
* 🔴 RB-368(core 2.3.0;registry-core 0.11.0 收口,[2103]):`d.costMicroUsd` **可缺席 = 未知**
|
|
29
|
+
* (unpriced 部署,budget.ts 如实不带键)。wire 自 0.11.0 起有缺席位(UsageEntry.costMicroUsd
|
|
30
|
+
* optional)⇒ 本处**整键透传缺席**,不再折 0 低估。cell 级累加语义与 budget.ts ModelUsageTracker
|
|
31
|
+
* 同款=**传染**(同为单 producer 累加器:已知+未知=未知);center 聚合面的「下界 + costUnknown
|
|
32
|
+
* 标记」语义在 registry-core aggregateUsage(跨 worker 审计总账层,两层判据见 [2103])。
|
|
33
|
+
* 配额轴(weightedTokens)不受影响,仍逐笔精确。
|
|
35
34
|
*/
|
|
36
35
|
record(principal: string | undefined, model: string, taskId: string, d: {
|
|
37
36
|
inputTokens: number;
|
package/dist/fleet-client.js
CHANGED
|
@@ -25,13 +25,12 @@ export class FleetUsageAccumulator {
|
|
|
25
25
|
cells = new Map(); // key = principal <NUL> model
|
|
26
26
|
runsSeen = new Set(); // taskId per window → runs count (first brain.call of a run in this window)
|
|
27
27
|
/**
|
|
28
|
-
* 🔴 RB-368
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* 在那之前,请**不要**把这个 `?? 0` 读成「已裁定未知=0」——裁定见 budget.ts 的 #59/RB-368 块。
|
|
28
|
+
* 🔴 RB-368(core 2.3.0;registry-core 0.11.0 收口,[2103]):`d.costMicroUsd` **可缺席 = 未知**
|
|
29
|
+
* (unpriced 部署,budget.ts 如实不带键)。wire 自 0.11.0 起有缺席位(UsageEntry.costMicroUsd
|
|
30
|
+
* optional)⇒ 本处**整键透传缺席**,不再折 0 低估。cell 级累加语义与 budget.ts ModelUsageTracker
|
|
31
|
+
* 同款=**传染**(同为单 producer 累加器:已知+未知=未知);center 聚合面的「下界 + costUnknown
|
|
32
|
+
* 标记」语义在 registry-core aggregateUsage(跨 worker 审计总账层,两层判据见 [2103])。
|
|
33
|
+
* 配额轴(weightedTokens)不受影响,仍逐笔精确。
|
|
35
34
|
*/
|
|
36
35
|
record(principal, model, taskId, d) {
|
|
37
36
|
const p = principal ?? "__anonymous__"; // single-user turnkey: no principal — still meter, under a stable bucket
|
|
@@ -45,7 +44,8 @@ export class FleetUsageAccumulator {
|
|
|
45
44
|
if (cur) {
|
|
46
45
|
cur.inputTokens += d.inputTokens;
|
|
47
46
|
cur.outputTokens += d.outputTokens;
|
|
48
|
-
|
|
47
|
+
// 缺席=未知 ⇒ 传染(见上方旁注);两边都已知才相加
|
|
48
|
+
cur.costMicroUsd = cur.costMicroUsd === undefined || d.costMicroUsd === undefined ? undefined : cur.costMicroUsd + d.costMicroUsd;
|
|
49
49
|
cur.weightedTokens += d.weightedTokens ?? 0;
|
|
50
50
|
if (d.quotaWeightAtUse !== undefined)
|
|
51
51
|
cur.quotaWeightAtUse = d.quotaWeightAtUse; // 审计尾迹=最新倍率(窗口内基本恒定)
|
|
@@ -53,7 +53,7 @@ export class FleetUsageAccumulator {
|
|
|
53
53
|
cur.runs += 1;
|
|
54
54
|
}
|
|
55
55
|
else {
|
|
56
|
-
this.cells.set(key, { inputTokens: d.inputTokens, outputTokens: d.outputTokens, costMicroUsd: d.costMicroUsd
|
|
56
|
+
this.cells.set(key, { inputTokens: d.inputTokens, outputTokens: d.outputTokens, costMicroUsd: d.costMicroUsd, weightedTokens: d.weightedTokens ?? 0, quotaWeightAtUse: d.quotaWeightAtUse ?? 1, runs: firstOfRun ? 1 : 0 });
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
/** Drain the window into UsageReport entries and RESET. Empty window → []. */
|
|
@@ -61,7 +61,7 @@ export class FleetUsageAccumulator {
|
|
|
61
61
|
const out = [];
|
|
62
62
|
for (const [key, c] of this.cells) {
|
|
63
63
|
const sep = key.indexOf("\u0000");
|
|
64
|
-
out.push({ principal: key.slice(0, sep), model: key.slice(sep + 1), inputTokens: c.inputTokens, outputTokens: c.outputTokens, costMicroUsd: c.costMicroUsd, weightedTokens: c.weightedTokens, quotaWeightAtUse: c.quotaWeightAtUse, ...(c.runs > 0 ? { runs: c.runs } : {}) });
|
|
64
|
+
out.push({ principal: key.slice(0, sep), model: key.slice(sep + 1), inputTokens: c.inputTokens, outputTokens: c.outputTokens, ...(c.costMicroUsd !== undefined ? { costMicroUsd: c.costMicroUsd } : {}), weightedTokens: c.weightedTokens, quotaWeightAtUse: c.quotaWeightAtUse, ...(c.runs > 0 ? { runs: c.runs } : {}) });
|
|
65
65
|
}
|
|
66
66
|
this.cells.clear();
|
|
67
67
|
this.runsSeen.clear();
|
|
@@ -80,7 +80,7 @@ export class FleetUsageAccumulator {
|
|
|
80
80
|
if (cur) {
|
|
81
81
|
cur.inputTokens += e.inputTokens;
|
|
82
82
|
cur.outputTokens += e.outputTokens;
|
|
83
|
-
cur.costMicroUsd
|
|
83
|
+
cur.costMicroUsd = cur.costMicroUsd === undefined || e.costMicroUsd === undefined ? undefined : cur.costMicroUsd + e.costMicroUsd; // 回携未知同款传染
|
|
84
84
|
cur.weightedTokens += w;
|
|
85
85
|
if (qw !== undefined)
|
|
86
86
|
cur.quotaWeightAtUse = qw;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sema-agent/server",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.0",
|
|
4
4
|
"description": "Sema Server — the server/API implementation layer for Sema, wiring core, registry, model providers, and cloud agent execution. Built on @sema-agent/core.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "BUSL-1.1",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
56
|
"@sema-agent/core": "^2.3.0",
|
|
57
|
-
"@sema-agent/registry-core": "^0.
|
|
57
|
+
"@sema-agent/registry-core": "^0.11.0",
|
|
58
58
|
"e2b": "^2.28.0",
|
|
59
59
|
"libsodium-wrappers": "^0.8.4",
|
|
60
60
|
"mysql2": "^3.22.4",
|