@namzu/sdk 21.1.0 → 22.0.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/CHANGELOG.md +90 -0
- package/dist/advisory/executor.d.ts +9 -4
- package/dist/advisory/executor.d.ts.map +1 -1
- package/dist/advisory/executor.js +16 -9
- package/dist/advisory/executor.js.map +1 -1
- package/dist/constants/limits.d.ts +13 -0
- package/dist/constants/limits.d.ts.map +1 -1
- package/dist/constants/limits.js +14 -2
- package/dist/constants/limits.js.map +1 -1
- package/dist/manager/agent/lifecycle.d.ts +2 -2
- package/dist/manager/run/persistence.d.ts +37 -2
- package/dist/manager/run/persistence.d.ts.map +1 -1
- package/dist/manager/run/persistence.js +48 -7
- package/dist/manager/run/persistence.js.map +1 -1
- package/dist/pricing/catalogue.generated.d.ts +15 -0
- package/dist/pricing/catalogue.generated.d.ts.map +1 -0
- package/dist/pricing/catalogue.generated.js +293 -0
- package/dist/pricing/catalogue.generated.js.map +1 -0
- package/dist/pricing/index.d.ts +46 -0
- package/dist/pricing/index.d.ts.map +1 -0
- package/dist/pricing/index.js +70 -0
- package/dist/pricing/index.js.map +1 -0
- package/dist/public-runtime.d.ts +2 -1
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +6 -1
- package/dist/public-runtime.js.map +1 -1
- package/dist/public-types.d.ts +3 -1
- package/dist/public-types.d.ts.map +1 -1
- package/dist/run/LimitChecker.d.ts +10 -0
- package/dist/run/LimitChecker.d.ts.map +1 -1
- package/dist/run/LimitChecker.js +14 -2
- package/dist/run/LimitChecker.js.map +1 -1
- package/dist/runtime/query/checkpoint.d.ts +23 -2
- package/dist/runtime/query/checkpoint.d.ts.map +1 -1
- package/dist/runtime/query/checkpoint.js +24 -3
- package/dist/runtime/query/checkpoint.js.map +1 -1
- package/dist/runtime/query/guard.d.ts.map +1 -1
- package/dist/runtime/query/guard.js +1 -0
- package/dist/runtime/query/guard.js.map +1 -1
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +42 -0
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/iteration/index.d.ts.map +1 -1
- package/dist/runtime/query/iteration/index.js +15 -2
- package/dist/runtime/query/iteration/index.js.map +1 -1
- package/dist/runtime/query/iteration/phases/advisory.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/advisory.js +9 -1
- package/dist/runtime/query/iteration/phases/advisory.js.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction.js +11 -2
- package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
- package/dist/store/run/conformance.d.ts.map +1 -1
- package/dist/store/run/conformance.js +8 -2
- package/dist/store/run/conformance.js.map +1 -1
- package/dist/types/common/index.d.ts +38 -2
- package/dist/types/common/index.d.ts.map +1 -1
- package/dist/types/run/stop-reason.d.ts +31 -1
- package/dist/types/run/stop-reason.d.ts.map +1 -1
- package/dist/utils/cost.d.ts +60 -2
- package/dist/utils/cost.d.ts.map +1 -1
- package/dist/utils/cost.js +126 -11
- package/dist/utils/cost.js.map +1 -1
- package/package.json +1 -1
- package/src/advisory/executor.ts +16 -9
- package/src/constants/limits.ts +14 -2
- package/src/manager/agent/lifecycle.ts +2 -2
- package/src/manager/run/persistence.ts +67 -7
- package/src/pricing/catalogue.generated.ts +308 -0
- package/src/pricing/index.ts +78 -0
- package/src/pricing/rates.source.json +206 -0
- package/src/public-runtime.ts +8 -0
- package/src/public-types.ts +3 -1
- package/src/run/LimitChecker.ts +24 -2
- package/src/runtime/query/checkpoint.ts +24 -3
- package/src/runtime/query/guard.ts +1 -0
- package/src/runtime/query/index.ts +42 -0
- package/src/runtime/query/iteration/index.ts +15 -2
- package/src/runtime/query/iteration/phases/advisory.ts +9 -1
- package/src/runtime/query/iteration/phases/compaction.ts +12 -2
- package/src/store/run/conformance.ts +8 -2
- package/src/types/common/index.ts +38 -2
- package/src/types/run/stop-reason.ts +30 -0
- package/src/utils/cost.ts +186 -16
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,95 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 22.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- a4bcbc9: Runs report what they cost, and a cost limit that cannot be measured is refused
|
|
8
|
+
|
|
9
|
+
Every run reported `$0.00`. `calculateCost` existed and `CostInfo` was carried on
|
|
10
|
+
the run, the step, the checkpoint and the `token_usage_updated` event — but a
|
|
11
|
+
turn was only priced when the host passed `pricing` to `query()`, and no shipped
|
|
12
|
+
surface passed one. The accumulation branch was dead everywhere.
|
|
13
|
+
|
|
14
|
+
`runConfig.costLimitUsd` is enforced against that same total, so a host that set
|
|
15
|
+
a cost cap did not have one, and nothing said so.
|
|
16
|
+
|
|
17
|
+
**`@namzu/sdk` now ships a price catalogue** — `packages/sdk/src/pricing/`, a
|
|
18
|
+
module generated from a reviewed in-tree source table and checked in, so a cost
|
|
19
|
+
number is reproducible from a commit and an offline run still prices correctly.
|
|
20
|
+
Rates are looked up per turn against the driver and model that actually served
|
|
21
|
+
it. No configuration is needed to get a real number.
|
|
22
|
+
|
|
23
|
+
## What every caller sees change
|
|
24
|
+
|
|
25
|
+
**A run that reported zero now reports a real number.** If you compare, store,
|
|
26
|
+
bill from, or assert on `Run.costInfo.totalCost`, the value moves on the same
|
|
27
|
+
inputs. Nothing about your code has to change for this — but nothing warns you
|
|
28
|
+
either, so check anywhere a zero was being relied upon.
|
|
29
|
+
|
|
30
|
+
**A `costLimitUsd` that was inert now enforces, or refuses.** This is the change
|
|
31
|
+
most likely to break a working deployment, and it can do so at two moments:
|
|
32
|
+
|
|
33
|
+
- `query()` throws `invalid_config` at the start of a run when `costLimitUsd` is
|
|
34
|
+
set, no `pricing` is supplied, and the configured model has no rate. Same
|
|
35
|
+
config, same model, previously-completing run — now a startup failure.
|
|
36
|
+
- A run stops with the new `cost_unmeasurable` stop reason when a step or a
|
|
37
|
+
provider-chain member swaps to a model with no rate mid-run.
|
|
38
|
+
|
|
39
|
+
To keep a run working, do one of: pass `pricing` to declare the rate yourself;
|
|
40
|
+
add the model to `packages/sdk/src/pricing/rates.source.json` and regenerate;
|
|
41
|
+
or drop `costLimitUsd` and bound the run with `tokenBudget`, which is always
|
|
42
|
+
measurable. Removing the limit is the honest option if the model cannot be
|
|
43
|
+
priced — a budget you cannot measure was never enforcing anything.
|
|
44
|
+
|
|
45
|
+
## Breaking API changes
|
|
46
|
+
|
|
47
|
+
- **`CostInfo.inputCostPer1M` and `CostInfo.outputCostPer1M` are now optional.**
|
|
48
|
+
Absent means no single rate card describes the total — the run spanned two
|
|
49
|
+
models, or part of it ran at no known rate. Readers that treated these as
|
|
50
|
+
`number` need a `?? ` or a branch. They were previously required and reported
|
|
51
|
+
whichever card was applied last, which was a claim about the whole total that
|
|
52
|
+
was true of only part of it.
|
|
53
|
+
- **`CostInfo` gains a required `unpricedTokens: number`.** Any code that
|
|
54
|
+
constructs a `CostInfo` must supply it. Zero means nothing is unaccounted for.
|
|
55
|
+
This is what lets a consumer tell "this run cost nothing" from "nobody knows
|
|
56
|
+
what this run cost" — previously both were `totalCost: 0`.
|
|
57
|
+
- **`calculateCost` and `accumulateCost` lost their trailing `cacheDiscount`
|
|
58
|
+
parameter.** It defaulted to `0`, no caller in the tree ever passed it, and
|
|
59
|
+
the value it produced was subtracted from the total. `cacheDiscount` is now
|
|
60
|
+
computed from the rate card and _reported_ rather than subtracted — it is what
|
|
61
|
+
the cache reads saved against the full input rate, and the saving is already
|
|
62
|
+
inside `totalCost`. Callers passing a fourth argument get a compile error;
|
|
63
|
+
drop it.
|
|
64
|
+
- **`StopReason` gains `cost_unmeasurable`.** Exhaustive switches over
|
|
65
|
+
`StopReason` will not compile until they handle it.
|
|
66
|
+
- **`RunPersistence.accumulateUsage` and `recordTurnUsage` take a second
|
|
67
|
+
required argument** naming who served the tokens. Required so a call site
|
|
68
|
+
cannot silently misattribute; pass `{ providerId, model }`.
|
|
69
|
+
- **`projectEmergencyToCheckpoint` no longer reports zero cost.** A dump
|
|
70
|
+
preserves a real `tokenUsage` and records no cost, so the projection now
|
|
71
|
+
states that those tokens are unpriced rather than that they were free.
|
|
72
|
+
|
|
73
|
+
## Also fixed
|
|
74
|
+
|
|
75
|
+
- The advisory executor reported `totalCost: 0` for an advisor with no pricing
|
|
76
|
+
table — zero-as-unknown, the same defect one file over. It now reports the
|
|
77
|
+
tokens as unpriced, and falls back to the catalogue before giving up.
|
|
78
|
+
- Cache tokens are priced. The drivers in this repository disagree about whether
|
|
79
|
+
the prompt-token count already contains cache reads (two exclude them, one
|
|
80
|
+
includes them), so that fact is declared per driver in the rate source and the
|
|
81
|
+
arithmetic reads it. Previously cache reads were charged at the full input
|
|
82
|
+
rate or not at all, depending on the driver, and `cacheDiscount` was dead.
|
|
83
|
+
|
|
84
|
+
## `@namzu/anthropic`
|
|
85
|
+
|
|
86
|
+
The driver's offline model menu moves to an exported `OFFLINE_MODEL_CATALOGUE`
|
|
87
|
+
so a test can read it without a client. Two of the three models it offers had no
|
|
88
|
+
rate in the catalogue — a lookup-key mismatch that reads as "cost unknown" and
|
|
89
|
+
that the generator's own regeneration check is structurally blind to. Both rates
|
|
90
|
+
are added and a conformance test now holds the two lists together. No behaviour
|
|
91
|
+
change for callers.
|
|
92
|
+
|
|
3
93
|
## 21.1.0
|
|
4
94
|
|
|
5
95
|
### Minor Changes
|
|
@@ -32,11 +32,16 @@ export declare class AdvisoryExecutor {
|
|
|
32
32
|
private buildContext;
|
|
33
33
|
private truncateMessages;
|
|
34
34
|
/**
|
|
35
|
-
* Cost for one call, from the advisor's own pricing.
|
|
35
|
+
* Cost for one call, from the advisor's own pricing, then the catalogue.
|
|
36
36
|
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
37
|
+
* When neither has a rate this reports the tokens as UNPRICED rather than
|
|
38
|
+
* as a cost of zero. The previous version returned a zero rate card and a
|
|
39
|
+
* zero total, defended on the grounds that a cost CAP over unpriced
|
|
40
|
+
* advisors is refused at construction so nothing enforces against it — true
|
|
41
|
+
* of the cap, and beside the point for the reader. `AdvisoryResult.cost` is
|
|
42
|
+
* reported to the host, and `$0.00` for a call that cost real money is the
|
|
43
|
+
* exact defect this change exists to remove; it does not become acceptable
|
|
44
|
+
* because the number happens to be unenforced.
|
|
40
45
|
*/
|
|
41
46
|
private computeCost;
|
|
42
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/advisory/executor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/advisory/executor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAClF,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACpE,OAAO,EAAE,KAAK,OAAO,EAA0C,MAAM,2BAA2B,CAAA;AAChG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE3D,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,oBAAoB,CAAA;AAgB/D,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;IAC5B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,EAAE,CAAA;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC3B;AAED,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;gBAEvC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc;IAKpD;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAOtB,OAAO,CACZ,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,mBAAmB,GAC1B,OAAO,CAAC,uBAAuB,CAAC;IAkDnC,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,YAAY;IA6CpB,OAAO,CAAC,gBAAgB;IAqBxB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,WAAW;CAOnB"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { CHARS_PER_TOKEN } from '../constants/limits.js';
|
|
1
|
+
import { CHARS_PER_TOKEN, ZERO_COST } from '../constants/limits.js';
|
|
2
2
|
import { assembleSystemPrompt } from '../persona/assembler.js';
|
|
3
|
+
import { resolveModelPricing } from '../pricing/index.js';
|
|
3
4
|
import { collect } from '../provider/collect.js';
|
|
4
5
|
import { createSystemMessage, createUserMessage } from '../types/message/index.js';
|
|
5
|
-
import { calculateCost } from '../utils/cost.js';
|
|
6
|
+
import { accumulateUnpricedCost, calculateCost } from '../utils/cost.js';
|
|
6
7
|
import { getRootLogger } from '../utils/logger.js';
|
|
7
8
|
import { ADVISORY_RESPONSE_CONTRACT, parseAdvisoryResponse } from './parse.js';
|
|
8
9
|
/**
|
|
@@ -158,17 +159,23 @@ export class AdvisoryExecutor {
|
|
|
158
159
|
return result;
|
|
159
160
|
}
|
|
160
161
|
/**
|
|
161
|
-
* Cost for one call, from the advisor's own pricing.
|
|
162
|
+
* Cost for one call, from the advisor's own pricing, then the catalogue.
|
|
162
163
|
*
|
|
163
|
-
*
|
|
164
|
-
*
|
|
165
|
-
*
|
|
164
|
+
* When neither has a rate this reports the tokens as UNPRICED rather than
|
|
165
|
+
* as a cost of zero. The previous version returned a zero rate card and a
|
|
166
|
+
* zero total, defended on the grounds that a cost CAP over unpriced
|
|
167
|
+
* advisors is refused at construction so nothing enforces against it — true
|
|
168
|
+
* of the cap, and beside the point for the reader. `AdvisoryResult.cost` is
|
|
169
|
+
* reported to the host, and `$0.00` for a call that cost real money is the
|
|
170
|
+
* exact defect this change exists to remove; it does not become acceptable
|
|
171
|
+
* because the number happens to be unenforced.
|
|
166
172
|
*/
|
|
167
173
|
computeCost(advisor, usage) {
|
|
168
|
-
|
|
169
|
-
|
|
174
|
+
const pricing = advisor.pricing ?? resolveModelPricing(advisor.provider.id, advisor.model);
|
|
175
|
+
if (!pricing) {
|
|
176
|
+
return accumulateUnpricedCost(ZERO_COST, usage);
|
|
170
177
|
}
|
|
171
|
-
return calculateCost(usage,
|
|
178
|
+
return calculateCost(usage, pricing);
|
|
172
179
|
}
|
|
173
180
|
}
|
|
174
181
|
//# sourceMappingURL=executor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/advisory/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/advisory/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,17 @@
|
|
|
1
1
|
import type { CostInfo, TokenUsage } from '../types/common/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* The starting value for a run: nothing accumulated, nothing unpriced.
|
|
4
|
+
*
|
|
5
|
+
* Carries NO rate fields, and that is load-bearing rather than tidy. It is what
|
|
6
|
+
* lets {@link import('../utils/cost.js').accumulateCost} tell "fresh" from
|
|
7
|
+
* "already spans two rate cards" without a separate marker: a fresh total has
|
|
8
|
+
* no rates AND no unpriced tokens AND a zero total, and no accumulated one can
|
|
9
|
+
* have all three.
|
|
10
|
+
*
|
|
11
|
+
* It also stops reading as a rate card of zero. `inputCostPer1M: 0` on a run
|
|
12
|
+
* nobody has priced says the model is free, which was exactly the confusion
|
|
13
|
+
* `unpricedTokens` was added to end.
|
|
14
|
+
*/
|
|
2
15
|
export declare const ZERO_COST: CostInfo;
|
|
3
16
|
export declare const CHARS_PER_TOKEN = 4;
|
|
4
17
|
export declare const EMPTY_TOKEN_USAGE: TokenUsage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/constants/limits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAEpE,eAAO,MAAM,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/constants/limits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAEpE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,SAAS,EAAE,QAIvB,CAAA;AAED,eAAO,MAAM,eAAe,IAAI,CAAA;AAEhC,eAAO,MAAM,iBAAiB,EAAE,UAM/B,CAAA"}
|
package/dist/constants/limits.js
CHANGED
|
@@ -1,8 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The starting value for a run: nothing accumulated, nothing unpriced.
|
|
3
|
+
*
|
|
4
|
+
* Carries NO rate fields, and that is load-bearing rather than tidy. It is what
|
|
5
|
+
* lets {@link import('../utils/cost.js').accumulateCost} tell "fresh" from
|
|
6
|
+
* "already spans two rate cards" without a separate marker: a fresh total has
|
|
7
|
+
* no rates AND no unpriced tokens AND a zero total, and no accumulated one can
|
|
8
|
+
* have all three.
|
|
9
|
+
*
|
|
10
|
+
* It also stops reading as a rate card of zero. `inputCostPer1M: 0` on a run
|
|
11
|
+
* nobody has priced says the model is free, which was exactly the confusion
|
|
12
|
+
* `unpricedTokens` was added to end.
|
|
13
|
+
*/
|
|
1
14
|
export const ZERO_COST = {
|
|
2
|
-
inputCostPer1M: 0,
|
|
3
|
-
outputCostPer1M: 0,
|
|
4
15
|
totalCost: 0,
|
|
5
16
|
cacheDiscount: 0,
|
|
17
|
+
unpricedTokens: 0,
|
|
6
18
|
};
|
|
7
19
|
export const CHARS_PER_TOKEN = 4;
|
|
8
20
|
export const EMPTY_TOKEN_USAGE = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../src/constants/limits.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAa;IAClC,
|
|
1
|
+
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../src/constants/limits.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,SAAS,GAAa;IAClC,SAAS,EAAE,CAAC;IACZ,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,CAAC;CACjB,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAA;AAEhC,MAAM,CAAC,MAAM,iBAAiB,GAAe;IAC5C,YAAY,EAAE,CAAC;IACf,gBAAgB,EAAE,CAAC;IACnB,WAAW,EAAE,CAAC;IACd,YAAY,EAAE,CAAC;IACf,gBAAgB,EAAE,CAAC;CACnB,CAAA"}
|
|
@@ -20,8 +20,8 @@ import type { ThreadManager } from '../thread/lifecycle.js';
|
|
|
20
20
|
*
|
|
21
21
|
* Phase 9 Known Delta #5: fields are now unconditional required. The legacy
|
|
22
22
|
* "run without deps" compat branch was removed; every `AgentManager` consumer
|
|
23
|
-
* (SDK internals
|
|
24
|
-
* full set before instantiating. Convention #0 (no workarounds): the
|
|
23
|
+
* (SDK internals and `@namzu/cli`; the list here once also named two packages
|
|
24
|
+
* that do not exist) MUST wire the full set before instantiating. Convention #0 (no workarounds): the
|
|
25
25
|
* partially-wired mode was a migration-window bridge; 0.2.0 closes it.
|
|
26
26
|
*
|
|
27
27
|
* `workspaceRegistry` is required but may be empty — spawns without a
|
|
@@ -7,6 +7,18 @@ import type { EmergencySaveData } from '../../types/run/emergency.js';
|
|
|
7
7
|
import type { Run, RunPersistenceConfig, StepResult, StopReason } from '../../types/run/index.js';
|
|
8
8
|
import type { RunStore } from '../../types/run/store.js';
|
|
9
9
|
import type { ProjectId, ThreadId } from '../../types/session/ids.js';
|
|
10
|
+
/**
|
|
11
|
+
* The pair a rate lookup needs: which driver, running which model.
|
|
12
|
+
*
|
|
13
|
+
* `model` may be absent because a driver can be pointed at whatever the host
|
|
14
|
+
* configured and some report nothing back. Absent resolves to no rate, which
|
|
15
|
+
* is the honest answer, EXCEPT for a driver that bills nothing whatever it
|
|
16
|
+
* runs — see `resolveModelPricing`.
|
|
17
|
+
*/
|
|
18
|
+
export interface PricingSubject {
|
|
19
|
+
readonly providerId: string;
|
|
20
|
+
readonly model: string | undefined;
|
|
21
|
+
}
|
|
10
22
|
export declare class RunPersistence {
|
|
11
23
|
private run;
|
|
12
24
|
private runStore;
|
|
@@ -81,7 +93,18 @@ export declare class RunPersistence {
|
|
|
81
93
|
setLastError(error: string): void;
|
|
82
94
|
incrementIteration(): number;
|
|
83
95
|
pushMessage(message: Message): void;
|
|
84
|
-
|
|
96
|
+
/**
|
|
97
|
+
* Who served the tokens being accumulated, so a rate can be found for them.
|
|
98
|
+
*
|
|
99
|
+
* Both fields are required. The previous signature took usage alone and
|
|
100
|
+
* priced it from one table the run was constructed with, which is why the
|
|
101
|
+
* only way to get a non-zero cost was for a host to pass that table — and
|
|
102
|
+
* no shipped surface did. Naming the subject at every call site is what
|
|
103
|
+
* lets the catalogue answer, and it makes a site that cannot say who served
|
|
104
|
+
* a compile error rather than a silent misattribution.
|
|
105
|
+
*/
|
|
106
|
+
private resolvePricing;
|
|
107
|
+
accumulateUsage(usage: TokenUsage, servedBy: PricingSubject): void;
|
|
85
108
|
/**
|
|
86
109
|
* Accumulate usage from a MAIN-LOOP turn, and remember its prompt size.
|
|
87
110
|
*
|
|
@@ -95,7 +118,7 @@ export declare class RunPersistence {
|
|
|
95
118
|
* plain {@link accumulateUsage} instead: their prompts are not the
|
|
96
119
|
* run's context, and letting them write here would corrupt the signal.
|
|
97
120
|
*/
|
|
98
|
-
recordTurnUsage(usage: TokenUsage): void;
|
|
121
|
+
recordTurnUsage(usage: TokenUsage, servedBy: PricingSubject): void;
|
|
99
122
|
/**
|
|
100
123
|
* Forget the last prompt measurement. Called after compaction: the
|
|
101
124
|
* reading described the context that was just replaced, so leaving it
|
|
@@ -174,6 +197,18 @@ export declare class RunPersistence {
|
|
|
174
197
|
* `steps[].servedBy`.
|
|
175
198
|
*/
|
|
176
199
|
setServingProvider(providerId: string): void;
|
|
200
|
+
/**
|
|
201
|
+
* Who is serving right now, for a side-channel call that has no provenance
|
|
202
|
+
* of its own.
|
|
203
|
+
*
|
|
204
|
+
* The main loop does not use this — it reads `servedBy` off the turn, which
|
|
205
|
+
* is exact. Compaction and the closing summary go through the same wrapped
|
|
206
|
+
* provider without recording who answered, and this is the best available
|
|
207
|
+
* answer for them: the fallback decorator reports the head member's id
|
|
208
|
+
* whoever is actually serving, so asking the provider would hand back the
|
|
209
|
+
* declaration rather than the fact.
|
|
210
|
+
*/
|
|
211
|
+
get servingProviderId(): string;
|
|
177
212
|
clearLastPromptTokens(): void;
|
|
178
213
|
/**
|
|
179
214
|
* Provider-reported size of the most recent main-loop prompt, or
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../src/manager/run/persistence.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../src/manager/run/persistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { AUTO_CONTINUATION_USER_MESSAGE } from '../../constants/continuation.js';
|
|
2
2
|
import { EMPTY_TOKEN_USAGE } from '../../constants/limits.js';
|
|
3
|
+
import { resolveModelPricing } from '../../pricing/index.js';
|
|
3
4
|
import { DiskCheckpointStore } from '../../store/run/checkpoint-disk.js';
|
|
4
5
|
import { RunDiskStore } from '../../store/run/disk.js';
|
|
5
6
|
import { accumulateTokenUsage } from '../../types/common/index.js';
|
|
6
|
-
import { ZERO_COST, accumulateCost } from '../../utils/cost.js';
|
|
7
|
+
import { ZERO_COST, accumulateCost, accumulateUnpricedCost, } from '../../utils/cost.js';
|
|
7
8
|
import { generateEmergencySaveId } from '../../utils/id.js';
|
|
8
9
|
export class RunPersistence {
|
|
9
10
|
run;
|
|
@@ -219,11 +220,37 @@ export class RunPersistence {
|
|
|
219
220
|
pushMessage(message) {
|
|
220
221
|
this.run.messages.push(message);
|
|
221
222
|
}
|
|
222
|
-
|
|
223
|
+
/**
|
|
224
|
+
* Who served the tokens being accumulated, so a rate can be found for them.
|
|
225
|
+
*
|
|
226
|
+
* Both fields are required. The previous signature took usage alone and
|
|
227
|
+
* priced it from one table the run was constructed with, which is why the
|
|
228
|
+
* only way to get a non-zero cost was for a host to pass that table — and
|
|
229
|
+
* no shipped surface did. Naming the subject at every call site is what
|
|
230
|
+
* lets the catalogue answer, and it makes a site that cannot say who served
|
|
231
|
+
* a compile error rather than a silent misattribution.
|
|
232
|
+
*/
|
|
233
|
+
resolvePricing(servedBy) {
|
|
234
|
+
// A host-supplied table wins. It is a deliberate declaration about this
|
|
235
|
+
// run, and `query()` already refuses to accept one alongside a provider
|
|
236
|
+
// chain of more than one member, so it cannot be silently spread across
|
|
237
|
+
// two rate cards here.
|
|
238
|
+
if (this.pricing)
|
|
239
|
+
return this.pricing;
|
|
240
|
+
return resolveModelPricing(servedBy.providerId, servedBy.model);
|
|
241
|
+
}
|
|
242
|
+
accumulateUsage(usage, servedBy) {
|
|
223
243
|
this.run.tokenUsage = accumulateTokenUsage(this.run.tokenUsage, usage);
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
244
|
+
const pricing = this.resolvePricing(servedBy);
|
|
245
|
+
// No rate is not the same as a rate of zero, and the difference is the
|
|
246
|
+
// whole point of this change. Tokens nobody can price are counted as
|
|
247
|
+
// such, so `costInfo.unpricedTokens` distinguishes "this cost nothing"
|
|
248
|
+
// from "nobody knows what this cost" — and so the budget guard can
|
|
249
|
+
// refuse rather than pass a limit it cannot measure.
|
|
250
|
+
this.run.costInfo =
|
|
251
|
+
pricing === undefined
|
|
252
|
+
? accumulateUnpricedCost(this.run.costInfo, usage)
|
|
253
|
+
: accumulateCost(this.run.costInfo, usage, pricing);
|
|
227
254
|
}
|
|
228
255
|
/**
|
|
229
256
|
* Accumulate usage from a MAIN-LOOP turn, and remember its prompt size.
|
|
@@ -238,8 +265,8 @@ export class RunPersistence {
|
|
|
238
265
|
* plain {@link accumulateUsage} instead: their prompts are not the
|
|
239
266
|
* run's context, and letting them write here would corrupt the signal.
|
|
240
267
|
*/
|
|
241
|
-
recordTurnUsage(usage) {
|
|
242
|
-
this.accumulateUsage(usage);
|
|
268
|
+
recordTurnUsage(usage, servedBy) {
|
|
269
|
+
this.accumulateUsage(usage, servedBy);
|
|
243
270
|
this._lastPromptTokens = usage.promptTokens;
|
|
244
271
|
// How much of the history that number covers. The loop pushes the
|
|
245
272
|
// assistant message and its tool results AFTER this call, so without
|
|
@@ -339,6 +366,20 @@ export class RunPersistence {
|
|
|
339
366
|
setServingProvider(providerId) {
|
|
340
367
|
this.run.metadata.servingProvider = providerId;
|
|
341
368
|
}
|
|
369
|
+
/**
|
|
370
|
+
* Who is serving right now, for a side-channel call that has no provenance
|
|
371
|
+
* of its own.
|
|
372
|
+
*
|
|
373
|
+
* The main loop does not use this — it reads `servedBy` off the turn, which
|
|
374
|
+
* is exact. Compaction and the closing summary go through the same wrapped
|
|
375
|
+
* provider without recording who answered, and this is the best available
|
|
376
|
+
* answer for them: the fallback decorator reports the head member's id
|
|
377
|
+
* whoever is actually serving, so asking the provider would hand back the
|
|
378
|
+
* declaration rather than the fact.
|
|
379
|
+
*/
|
|
380
|
+
get servingProviderId() {
|
|
381
|
+
return this.run.metadata.servingProvider ?? this.run.metadata.provider;
|
|
382
|
+
}
|
|
342
383
|
clearLastPromptTokens() {
|
|
343
384
|
this._lastPromptTokens = undefined;
|
|
344
385
|
this._lastPromptMessageCount = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../src/manager/run/persistence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAA;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAkC,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AASlG,OAAO,
|
|
1
|
+
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../src/manager/run/persistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ModelPricing } from '../utils/cost.js';
|
|
2
|
+
export interface VendorRates {
|
|
3
|
+
/** Matched against `LLMProvider.id`. */
|
|
4
|
+
readonly providerId: string;
|
|
5
|
+
/**
|
|
6
|
+
* This driver bills nothing for a token, whatever the model — local
|
|
7
|
+
* inference. Its runs are priced at zero, which is KNOWN-free and so
|
|
8
|
+
* distinct from a model nobody has a rate for.
|
|
9
|
+
*/
|
|
10
|
+
readonly unmetered: boolean;
|
|
11
|
+
/** Keyed by normalised model id. Empty when `unmetered`. */
|
|
12
|
+
readonly models: ReadonlyMap<string, ModelPricing>;
|
|
13
|
+
}
|
|
14
|
+
export declare const VENDOR_RATES: readonly VendorRates[];
|
|
15
|
+
//# sourceMappingURL=catalogue.generated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalogue.generated.d.ts","sourceRoot":"","sources":["../../src/pricing/catalogue.generated.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD,MAAM,WAAW,WAAW;IAC3B,wCAAwC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CAClD;AAED,eAAO,MAAM,YAAY,EAAE,SAAS,WAAW,EA2R9C,CAAA"}
|