@adonis-agora/agent 0.42.0 → 0.44.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 +18 -0
- package/dist/providers/agent_provider.d.ts.map +1 -1
- package/dist/providers/agent_provider.js +145 -16
- package/dist/providers/agent_provider.js.map +1 -1
- package/dist/src/agent-deps-factory.d.ts +3 -1
- package/dist/src/agent-deps-factory.d.ts.map +1 -1
- package/dist/src/agent-deps-factory.js +4 -0
- package/dist/src/agent-deps-factory.js.map +1 -1
- package/dist/src/agent-loop.d.ts +1 -1
- package/dist/src/agent-loop.d.ts.map +1 -1
- package/dist/src/agent-loop.js +12 -1
- package/dist/src/agent-loop.js.map +1 -1
- package/dist/src/agent-service.d.ts +76 -2
- package/dist/src/agent-service.d.ts.map +1 -1
- package/dist/src/agent-service.js +149 -6
- package/dist/src/agent-service.js.map +1 -1
- package/dist/src/ai-sdk/ai-sdk-model.d.ts +7 -0
- package/dist/src/ai-sdk/ai-sdk-model.d.ts.map +1 -1
- package/dist/src/ai-sdk/ai-sdk-model.js +10 -2
- package/dist/src/ai-sdk/ai-sdk-model.js.map +1 -1
- package/dist/src/define_config.d.ts +18 -2
- package/dist/src/define_config.d.ts.map +1 -1
- package/dist/src/define_config.js.map +1 -1
- package/dist/src/in-process-sink.d.ts +1 -0
- package/dist/src/in-process-sink.d.ts.map +1 -1
- package/dist/src/in-process-sink.js +3 -0
- package/dist/src/in-process-sink.js.map +1 -1
- package/dist/src/index.d.ts +5 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/redis-token-stream-sink.d.ts +1 -0
- package/dist/src/redis-token-stream-sink.d.ts.map +1 -1
- package/dist/src/redis-token-stream-sink.js +5 -0
- package/dist/src/redis-token-stream-sink.js.map +1 -1
- package/dist/src/spi/agent-store.d.ts +33 -1
- package/dist/src/spi/agent-store.d.ts.map +1 -1
- package/dist/src/spi/model-catalog.d.ts +67 -0
- package/dist/src/spi/model-catalog.d.ts.map +1 -0
- package/dist/src/spi/model-catalog.js +41 -0
- package/dist/src/spi/model-catalog.js.map +1 -0
- package/dist/src/spi/model-provider.d.ts +6 -0
- package/dist/src/spi/model-provider.d.ts.map +1 -1
- package/dist/src/spi/quota-provider.d.ts +60 -0
- package/dist/src/spi/quota-provider.d.ts.map +1 -0
- package/dist/src/spi/quota-provider.js +47 -0
- package/dist/src/spi/quota-provider.js.map +1 -0
- package/dist/src/spi/token-stream-sink.d.ts +7 -0
- package/dist/src/spi/token-stream-sink.d.ts.map +1 -1
- package/dist/src/spi/token-stream-sink.js.map +1 -1
- package/dist/src/sse.d.ts +16 -1
- package/dist/src/sse.d.ts.map +1 -1
- package/dist/src/sse.js +33 -4
- package/dist/src/sse.js.map +1 -1
- package/dist/src/stores/factory.d.ts +15 -1
- package/dist/src/stores/factory.d.ts.map +1 -1
- package/dist/src/stores/factory.js +17 -0
- package/dist/src/stores/factory.js.map +1 -1
- package/dist/src/stores/ledger-quota-provider.d.ts +32 -0
- package/dist/src/stores/ledger-quota-provider.d.ts.map +1 -0
- package/dist/src/stores/ledger-quota-provider.js +55 -0
- package/dist/src/stores/ledger-quota-provider.js.map +1 -0
- package/dist/src/stores/lucid-schema.d.ts.map +1 -1
- package/dist/src/stores/lucid-schema.js +4 -0
- package/dist/src/stores/lucid-schema.js.map +1 -1
- package/dist/src/stores/lucid.d.ts +9 -2
- package/dist/src/stores/lucid.d.ts.map +1 -1
- package/dist/src/stores/lucid.js +41 -0
- package/dist/src/stores/lucid.js.map +1 -1
- package/dist/src/testing/in-memory-sink.d.ts +1 -0
- package/dist/src/testing/in-memory-sink.d.ts.map +1 -1
- package/dist/src/testing/in-memory-sink.js +3 -0
- package/dist/src/testing/in-memory-sink.js.map +1 -1
- package/dist/src/testing/in-memory-store.d.ts +8 -1
- package/dist/src/testing/in-memory-store.d.ts.map +1 -1
- package/dist/src/testing/in-memory-store.js +42 -1
- package/dist/src/testing/in-memory-store.js.map +1 -1
- package/dist/src/types.d.ts +27 -0
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** A catalog that answers the same view to everyone — for a fixed list of models. */
|
|
2
|
+
export function staticModelCatalog(view) {
|
|
3
|
+
return { list: () => view };
|
|
4
|
+
}
|
|
5
|
+
/** Accept a catalog or a fixed view (the `config/agent.ts` shorthand). */
|
|
6
|
+
export function toModelCatalog(value) {
|
|
7
|
+
return typeof value.list === 'function'
|
|
8
|
+
? value
|
|
9
|
+
: staticModelCatalog(value);
|
|
10
|
+
}
|
|
11
|
+
/** The entry `id` names in `view`, or `undefined`. */
|
|
12
|
+
export function findCatalogModel(view, id) {
|
|
13
|
+
for (const group of view.providers) {
|
|
14
|
+
const found = group.models.find((model) => model.id === id);
|
|
15
|
+
if (found !== undefined)
|
|
16
|
+
return found;
|
|
17
|
+
}
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* A provider that runs every turn on `model` — what the loop wraps the bound provider in when a
|
|
22
|
+
* turn has a selected model, so every call it makes (the answer, a structured-output pass, the
|
|
23
|
+
* follow-up suggestions) goes to the same one. A provider that does not read `args.model` runs its
|
|
24
|
+
* own default, unchanged.
|
|
25
|
+
*/
|
|
26
|
+
export function withSelectedModel(provider, model) {
|
|
27
|
+
return {
|
|
28
|
+
runTurn: (args) => provider.runTurn({ ...args, model }),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* A request named a model the catalog does not offer to this caller right now — or there is no
|
|
33
|
+
* catalog to offer one. The routes answer `400` with its message.
|
|
34
|
+
*/
|
|
35
|
+
export class ModelNotAllowedError extends Error {
|
|
36
|
+
constructor(message) {
|
|
37
|
+
super(message);
|
|
38
|
+
this.name = 'ModelNotAllowedError';
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=model-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-catalog.js","sourceRoot":"","sources":["../../../src/spi/model-catalog.ts"],"names":[],"mappings":"AAoDA,qFAAqF;AACrF,MAAM,UAAU,kBAAkB,CAAC,IAAsB;IACvD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,cAAc,CAAC,KAAsC;IACnE,OAAO,OAAQ,KAAsB,CAAC,IAAI,KAAK,UAAU;QACvD,CAAC,CAAE,KAAsB;QACzB,CAAC,CAAC,kBAAkB,CAAC,KAAyB,CAAC,CAAC;AACpD,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,gBAAgB,CAC9B,IAAsB,EACtB,EAAU;IAEV,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;IACxC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAuB,EAAE,KAAa;IACtE,OAAO;QACL,OAAO,EAAE,CAAC,IAAmB,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC;KACvE,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF"}
|
|
@@ -19,6 +19,12 @@ export interface ModelTurnArgs {
|
|
|
19
19
|
* reply either way, reading the JSON out of the text when no `object` comes back.
|
|
20
20
|
*/
|
|
21
21
|
outputSchema?: StandardSchemaV1;
|
|
22
|
+
/**
|
|
23
|
+
* The model the caller picked for this turn — a `ModelCatalogEntry` id the server already checked
|
|
24
|
+
* against the catalog (a per-send `model`, else the thread's pinned one). Absent → the provider's
|
|
25
|
+
* own default. A provider serving a single model may ignore it.
|
|
26
|
+
*/
|
|
27
|
+
model?: string;
|
|
22
28
|
}
|
|
23
29
|
/** The outcome of ONE assistant turn. The loop — not the model — drives tool execution. */
|
|
24
30
|
export interface ModelTurnResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-provider.d.ts","sourceRoot":"","sources":["../../../src/spi/model-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC/F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,uEAAuE;IACvE,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"model-provider.d.ts","sourceRoot":"","sources":["../../../src/spi/model-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC/F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,uEAAuE;IACvE,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,2FAA2F;AAC3F,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,KAAK,EAAE,YAAY,CAAC;IACpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qGAAqG;IACrG,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CACxD"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { Actor } from '../types.js';
|
|
2
|
+
/** The span a quota window counts over, in UTC. */
|
|
3
|
+
export type QuotaPeriod = 'day' | 'month';
|
|
4
|
+
/** One budget window: what was spent in it, and the ceiling when there is one. */
|
|
5
|
+
export interface QuotaWindow {
|
|
6
|
+
period: QuotaPeriod;
|
|
7
|
+
usedTokens: number;
|
|
8
|
+
/** Absent → no token ceiling on this window. */
|
|
9
|
+
limitTokens?: number;
|
|
10
|
+
usedUsd: number;
|
|
11
|
+
/** Absent → no spend ceiling on this window. */
|
|
12
|
+
limitUsd?: number;
|
|
13
|
+
/** ISO-8601 instant the window starts over (next UTC midnight, first of next month). */
|
|
14
|
+
resetsAt?: string;
|
|
15
|
+
}
|
|
16
|
+
/** Which window stopped the actor, when one did. */
|
|
17
|
+
export interface QuotaBlock {
|
|
18
|
+
period: QuotaPeriod;
|
|
19
|
+
/** Words a client can show ("Monthly AI budget reached"). */
|
|
20
|
+
reason?: string;
|
|
21
|
+
}
|
|
22
|
+
/** What `GET <base>/quota` answers. */
|
|
23
|
+
export interface QuotaReport {
|
|
24
|
+
windows: QuotaWindow[];
|
|
25
|
+
/** Present when a window is exhausted — a send will be refused until it resets. */
|
|
26
|
+
blocked?: QuotaBlock;
|
|
27
|
+
}
|
|
28
|
+
export interface QuotaQuery {
|
|
29
|
+
actor: Actor;
|
|
30
|
+
/** The instant to report for; defaults to now. */
|
|
31
|
+
now?: Date;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The actor's budget across windows — the read behind `GET <path>/quota` and, when `quota` in
|
|
35
|
+
* `config/agent.ts` resolves to one (`quotas.windows({ … })`, or your own), the gate a send passes: a
|
|
36
|
+
* report with `blocked` refuses the turn with `429` before it starts.
|
|
37
|
+
*
|
|
38
|
+
* Without one the provider reports from the usage ledger (`LedgerQuotaProvider`), informational
|
|
39
|
+
* only. A host with its own budget (an AI-gateway spend cap, a plan's monthly allowance) implements
|
|
40
|
+
* this. The shape is `@dudousxd/nestjs-agent-core`'s, copied.
|
|
41
|
+
*/
|
|
42
|
+
export interface QuotaProvider {
|
|
43
|
+
report(query: QuotaQuery): Promise<QuotaReport>;
|
|
44
|
+
}
|
|
45
|
+
/** The first window whose token or spend ceiling is reached, as a {@link QuotaBlock}. */
|
|
46
|
+
export declare function exhaustedWindow(windows: readonly QuotaWindow[]): QuotaBlock | undefined;
|
|
47
|
+
/** The UTC day range (`YYYY-MM-DD`, inclusive) and reset instant of `period` around `now`. */
|
|
48
|
+
export declare function quotaPeriodRange(period: QuotaPeriod, now: Date): {
|
|
49
|
+
fromDay: string;
|
|
50
|
+
toDay: string;
|
|
51
|
+
resetsAt: string;
|
|
52
|
+
};
|
|
53
|
+
/** Is this a {@link QuotaProvider} (rather than a daily `QuotaStore`)? */
|
|
54
|
+
export declare function isQuotaProvider(value: unknown): value is QuotaProvider;
|
|
55
|
+
/** A send refused because a budget window is exhausted — the chat route's `429 quota_exceeded`. */
|
|
56
|
+
export declare class QuotaBlockedError extends Error {
|
|
57
|
+
readonly period: QuotaPeriod;
|
|
58
|
+
constructor(period: QuotaPeriod, message: string);
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=quota-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quota-provider.d.ts","sourceRoot":"","sources":["../../../src/spi/quota-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,mDAAmD;AACnD,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,OAAO,CAAC;AAE1C,kFAAkF;AAClF,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,oDAAoD;AACpD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,WAAW,CAAC;IACpB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,uCAAuC;AACvC,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,mFAAmF;IACnF,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,kDAAkD;IAClD,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACjD;AAED,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,GAAG,UAAU,GAAG,SAAS,CAYvF;AAED,8FAA8F;AAC9F,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,IAAI,GACR;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAetD;AAED,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAMtE;AAED,mGAAmG;AACnG,qBAAa,iBAAkB,SAAQ,KAAK;IAExC,QAAQ,CAAC,MAAM,EAAE,WAAW;IAD9B,YACW,MAAM,EAAE,WAAW,EAC5B,OAAO,EAAE,MAAM,EAIhB;CACF"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/** The first window whose token or spend ceiling is reached, as a {@link QuotaBlock}. */
|
|
2
|
+
export function exhaustedWindow(windows) {
|
|
3
|
+
for (const window of windows) {
|
|
4
|
+
const tokensOut = window.limitTokens !== undefined && window.usedTokens >= window.limitTokens;
|
|
5
|
+
const spendOut = window.limitUsd !== undefined && window.usedUsd >= window.limitUsd;
|
|
6
|
+
if (tokensOut || spendOut) {
|
|
7
|
+
return {
|
|
8
|
+
period: window.period,
|
|
9
|
+
reason: `${window.period === 'day' ? 'Daily' : 'Monthly'} ${spendOut ? 'spend' : 'token'} limit reached`,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
/** The UTC day range (`YYYY-MM-DD`, inclusive) and reset instant of `period` around `now`. */
|
|
16
|
+
export function quotaPeriodRange(period, now) {
|
|
17
|
+
const year = now.getUTCFullYear();
|
|
18
|
+
const month = now.getUTCMonth();
|
|
19
|
+
const day = now.toISOString().slice(0, 10);
|
|
20
|
+
if (period === 'day') {
|
|
21
|
+
const next = new Date(Date.UTC(year, month, now.getUTCDate() + 1));
|
|
22
|
+
return { fromDay: day, toDay: day, resetsAt: next.toISOString() };
|
|
23
|
+
}
|
|
24
|
+
const first = new Date(Date.UTC(year, month, 1));
|
|
25
|
+
const last = new Date(Date.UTC(year, month + 1, 0));
|
|
26
|
+
return {
|
|
27
|
+
fromDay: first.toISOString().slice(0, 10),
|
|
28
|
+
toDay: last.toISOString().slice(0, 10),
|
|
29
|
+
resetsAt: new Date(Date.UTC(year, month + 1, 1)).toISOString(),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** Is this a {@link QuotaProvider} (rather than a daily `QuotaStore`)? */
|
|
33
|
+
export function isQuotaProvider(value) {
|
|
34
|
+
return (typeof value === 'object' &&
|
|
35
|
+
value !== null &&
|
|
36
|
+
typeof value.report === 'function');
|
|
37
|
+
}
|
|
38
|
+
/** A send refused because a budget window is exhausted — the chat route's `429 quota_exceeded`. */
|
|
39
|
+
export class QuotaBlockedError extends Error {
|
|
40
|
+
period;
|
|
41
|
+
constructor(period, message) {
|
|
42
|
+
super(message);
|
|
43
|
+
this.period = period;
|
|
44
|
+
this.name = 'QuotaBlockedError';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=quota-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quota-provider.js","sourceRoot":"","sources":["../../../src/spi/quota-provider.ts"],"names":[],"mappings":"AAmDA,yFAAyF;AACzF,MAAM,UAAU,eAAe,CAAC,OAA+B;IAC7D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,WAAW,CAAC;QAC9F,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;QACpF,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;YAC1B,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,gBAAgB;aACzG,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,gBAAgB,CAC9B,MAAmB,EACnB,GAAS;IAET,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3C,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACnE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;IACpE,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACzC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACtC,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;KAC/D,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAQ,KAAuB,CAAC,MAAM,KAAK,UAAU,CACtD,CAAC;AACJ,CAAC;AAED,mGAAmG;AACnG,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAE/B,MAAM;IADjB,YACW,MAAmB,EAC5B,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;sBAHN,MAAM;QAIf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -90,6 +90,13 @@ export interface TokenStreamSink {
|
|
|
90
90
|
subscribe(runId: string): AsyncIterable<StreamFrame>;
|
|
91
91
|
/** Drop any buffer/resources for the run. */
|
|
92
92
|
close(runId: string): void | Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* OPTIONAL: does this sink hold anything for the run — a buffer it opened, frames, an end marker?
|
|
95
|
+
* `GET <path>/chat/:runId/stream` answers `404` when it says no, which a client reads as "nothing to
|
|
96
|
+
* resume" (the run ended while it was away, or the buffer went with a restarted process) instead of
|
|
97
|
+
* waiting forever on a stream nobody will write. Absent → the route subscribes regardless.
|
|
98
|
+
*/
|
|
99
|
+
has?(runId: string): boolean | Promise<boolean>;
|
|
93
100
|
}
|
|
94
101
|
/**
|
|
95
102
|
* Wrap a {@link SinkWriter} so a DELEGATED run forwards its frames into its top-level ancestor's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-stream-sink.d.ts","sourceRoot":"","sources":["../../../src/spi/token-stream-sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAElF;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE;AAC1B;;;;GAIG;GACD;IAAE,CAAC,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE;AACnF;;;;GAIG;GACD;IAAE,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE;AACzC;;;GAGG;GACD;IAAE,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,oBAAoB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAC7D;;;;;;;;;GASG;GACD;IAAE,CAAC,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE;AAC9E;;;;;;;;GAQG;GACD;IACE,CAAC,EAAE,UAAU,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,0GAA0G;IAC1G,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEN,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,uDAAuD;IACvD,GAAG,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,6CAA6C;IAC7C,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtD,8EAA8E;IAC9E,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IACrD,6CAA6C;IAC7C,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"token-stream-sink.d.ts","sourceRoot":"","sources":["../../../src/spi/token-stream-sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAElF;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE;AAC1B;;;;GAIG;GACD;IAAE,CAAC,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE;AACnF;;;;GAIG;GACD;IAAE,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE;AACzC;;;GAGG;GACD;IAAE,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,oBAAoB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAC7D;;;;;;;;;GASG;GACD;IAAE,CAAC,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE;AAC9E;;;;;;;;GAQG;GACD;IACE,CAAC,EAAE,UAAU,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,0GAA0G;IAC1G,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEN,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,uDAAuD;IACvD,GAAG,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,6CAA6C;IAC7C,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtD,8EAA8E;IAC9E,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IACrD,6CAA6C;IAC7C,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C;;;;;OAKG;IACH,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjD;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAO7D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-stream-sink.js","sourceRoot":"","sources":["../../../src/spi/token-stream-sink.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"token-stream-sink.js","sourceRoot":"","sources":["../../../src/spi/token-stream-sink.ts"],"names":[],"mappings":"AAoFA;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,KAAiB;IAC/C,OAAO;QACL,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QACpC,GAAG,EAAE,GAAG,EAAE;YACR,kCAAkC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/src/sse.d.ts
CHANGED
|
@@ -20,6 +20,11 @@ export type StreamProtocol = 'agent' | 'legacy';
|
|
|
20
20
|
* was. An agent-protocol-only frame (`t: 'event'`) has no spelling here and yields `''`.
|
|
21
21
|
*/
|
|
22
22
|
export declare function frameToSse(frame: StreamFrame): string;
|
|
23
|
+
/**
|
|
24
|
+
* A reconnect cursor from `?after=` or the `Last-Event-ID` header: a non-negative integer, or
|
|
25
|
+
* `undefined` for anything else (absent, malformed).
|
|
26
|
+
*/
|
|
27
|
+
export declare function parseStreamCursor(raw: unknown): number | undefined;
|
|
23
28
|
/**
|
|
24
29
|
* The agent-protocol events one {@link StreamFrame} stands for. Pure: the same frame at the same
|
|
25
30
|
* position always yields the same events, which is what lets a re-attaching reader number them the
|
|
@@ -31,11 +36,21 @@ export declare function frameToSse(frame: StreamFrame): string;
|
|
|
31
36
|
export declare function frameToEvents(frame: StreamFrame, position: number): AgentStreamEvent[];
|
|
32
37
|
/**
|
|
33
38
|
* Writes a run's frames in the agent protocol, one `data:` frame per event. Stateful only in the
|
|
34
|
-
*
|
|
39
|
+
* positions it counts, so feed it every frame of the run in buffer order.
|
|
40
|
+
*
|
|
41
|
+
* Every event carries an SSE `id:` — its 1-based sequence number within the run. The number is a
|
|
42
|
+
* pure function of the run's buffered stream (every sink replays a run from its first frame, in
|
|
43
|
+
* write order, and {@link frameToEvents} is pure), so the same event gets the same number on the
|
|
44
|
+
* POST that started the run and on any later `GET …/stream`, whichever replica serves it. Events at
|
|
45
|
+
* or below `after` — what a reconnecting client already has — are counted but not written. `meta`,
|
|
46
|
+
* `done` and `error` carry no id.
|
|
35
47
|
*/
|
|
36
48
|
export declare class AgentSseEncoder {
|
|
49
|
+
private readonly after;
|
|
37
50
|
private position;
|
|
51
|
+
private seq;
|
|
38
52
|
private failed;
|
|
53
|
+
constructor(after?: number);
|
|
39
54
|
/** The SSE text for the next frame of the run (possibly `''`). */
|
|
40
55
|
encode(frame: StreamFrame): string;
|
|
41
56
|
/**
|
package/dist/src/sse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/sse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAiBrD;
|
|
1
|
+
{"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/sse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAiBrD;AAOD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAOlE;AAMD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE,CA0CtF;AAED;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;IAKd,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJlC,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,MAAM,CAAS;IAEvB,YAA6B,KAAK,SAAI,EAAI;IAE1C,kEAAkE;IAClE,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAejC;IAED;;;OAGG;IACH,KAAK,IAAI,MAAM,CAEd;CACF"}
|
package/dist/src/sse.js
CHANGED
|
@@ -29,6 +29,18 @@ export function frameToSse(frame) {
|
|
|
29
29
|
function withExtra(event, extra) {
|
|
30
30
|
return { ...extra, ...event };
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* A reconnect cursor from `?after=` or the `Last-Event-ID` header: a non-negative integer, or
|
|
34
|
+
* `undefined` for anything else (absent, malformed).
|
|
35
|
+
*/
|
|
36
|
+
export function parseStreamCursor(raw) {
|
|
37
|
+
const value = Array.isArray(raw) ? raw[0] : raw;
|
|
38
|
+
if (typeof value !== 'string' || !/^\d+$/.test(value.trim())) {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
const parsed = Number(value.trim());
|
|
42
|
+
return Number.isSafeInteger(parsed) ? parsed : undefined;
|
|
43
|
+
}
|
|
32
44
|
function isRecord(value) {
|
|
33
45
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
34
46
|
}
|
|
@@ -79,11 +91,23 @@ export function frameToEvents(frame, position) {
|
|
|
79
91
|
}
|
|
80
92
|
/**
|
|
81
93
|
* Writes a run's frames in the agent protocol, one `data:` frame per event. Stateful only in the
|
|
82
|
-
*
|
|
94
|
+
* positions it counts, so feed it every frame of the run in buffer order.
|
|
95
|
+
*
|
|
96
|
+
* Every event carries an SSE `id:` — its 1-based sequence number within the run. The number is a
|
|
97
|
+
* pure function of the run's buffered stream (every sink replays a run from its first frame, in
|
|
98
|
+
* write order, and {@link frameToEvents} is pure), so the same event gets the same number on the
|
|
99
|
+
* POST that started the run and on any later `GET …/stream`, whichever replica serves it. Events at
|
|
100
|
+
* or below `after` — what a reconnecting client already has — are counted but not written. `meta`,
|
|
101
|
+
* `done` and `error` carry no id.
|
|
83
102
|
*/
|
|
84
103
|
export class AgentSseEncoder {
|
|
104
|
+
after;
|
|
85
105
|
position = 0;
|
|
106
|
+
seq = 0;
|
|
86
107
|
failed = false;
|
|
108
|
+
constructor(after = 0) {
|
|
109
|
+
this.after = after;
|
|
110
|
+
}
|
|
87
111
|
/** The SSE text for the next frame of the run (possibly `''`). */
|
|
88
112
|
encode(frame) {
|
|
89
113
|
const position = this.position;
|
|
@@ -92,9 +116,14 @@ export class AgentSseEncoder {
|
|
|
92
116
|
this.failed = true;
|
|
93
117
|
return `event: error\ndata: ${JSON.stringify({ code: frame.code, message: frame.message })}\n\n`;
|
|
94
118
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
.
|
|
119
|
+
let out = '';
|
|
120
|
+
for (const event of frameToEvents(frame, position)) {
|
|
121
|
+
this.seq += 1;
|
|
122
|
+
if (this.seq > this.after) {
|
|
123
|
+
out += `id: ${this.seq}\ndata: ${JSON.stringify(event)}\n\n`;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return out;
|
|
98
127
|
}
|
|
99
128
|
/**
|
|
100
129
|
* The closing frame: `event: done` for a run that ended, nothing after an `event: error` — a
|
package/dist/src/sse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/sse.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/sse.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,9 +10,11 @@ import type { AttachmentStagingStore } from '../spi/attachment-staging.js';
|
|
|
10
10
|
import type { EmbeddingProvider } from '../spi/embedding-provider.js';
|
|
11
11
|
import type { AgentGovernanceQueries } from '../spi/governance-queries.js';
|
|
12
12
|
import type { AgentPricingStore } from '../spi/pricing-store.js';
|
|
13
|
+
import type { QuotaProvider } from '../spi/quota-provider.js';
|
|
13
14
|
import type { QuotaStore } from '../spi/quota-store.js';
|
|
14
15
|
import type { Retriever } from '../spi/retriever.js';
|
|
15
16
|
import type { TokenStreamSink } from '../spi/token-stream-sink.js';
|
|
17
|
+
import type { QuotaLimits } from './ledger-quota-provider.js';
|
|
16
18
|
import type { LucidDatabaseLike } from './lucid.js';
|
|
17
19
|
/**
|
|
18
20
|
* Runtime context a {@link StoreFactory} thunk receives when the agent provider builds the configured
|
|
@@ -83,7 +85,7 @@ export interface QuotaContext extends StoreContext {
|
|
|
83
85
|
* budgeting (fail-open). A plain `() => new InMemoryQuotaStore()` still satisfies this — the context
|
|
84
86
|
* arg is optional to consume.
|
|
85
87
|
*/
|
|
86
|
-
export type QuotaFactory = (ctx: QuotaContext) => QuotaStore | Promise<QuotaStore>;
|
|
88
|
+
export type QuotaFactory = (ctx: QuotaContext) => QuotaStore | QuotaProvider | Promise<QuotaStore | QuotaProvider>;
|
|
87
89
|
/** Options for both bundled quota stores — the daily per-actor token budget. */
|
|
88
90
|
export interface QuotaConfig {
|
|
89
91
|
/** Daily token budget per actor. */
|
|
@@ -108,6 +110,18 @@ export declare const quotas: {
|
|
|
108
110
|
* truth across replicas, with no double-counting. Pairs with any {@link AgentStore}.
|
|
109
111
|
*/
|
|
110
112
|
ledger(config: QuotaConfig): QuotaFactory;
|
|
113
|
+
/**
|
|
114
|
+
* Budget windows off the usage ledger — per day and per month, in tokens and/or recorded spend:
|
|
115
|
+
*
|
|
116
|
+
* ```ts
|
|
117
|
+
* quota: quotas.windows({ day: { tokens: 200_000 }, month: { usd: 20 } })
|
|
118
|
+
* ```
|
|
119
|
+
*
|
|
120
|
+
* `GET <path>/quota` reports every window, and a send while one is exhausted is refused with `429`
|
|
121
|
+
* `{ code: 'quota_exceeded', period }` before the turn starts. Spend is the provider-reported cost
|
|
122
|
+
* the usage rows recorded (a gateway), so a `usd` ceiling binds only where cost is reported.
|
|
123
|
+
*/
|
|
124
|
+
windows(limits: QuotaLimits): QuotaFactory;
|
|
111
125
|
};
|
|
112
126
|
/** Runtime context a {@link PricingFactory} thunk receives — the booted application. */
|
|
113
127
|
export type PricingContext = StoreContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/stores/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,kBAAkB,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAwCtE;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAIhF;AAED,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,qEAAqE;AACrE,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEtD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,MAAM;IACjB,2FAA2F;IAC3F,MAAM,WAAU,iBAAiB,GAAQ,YAAY;IAOrD,8EAA8E;IAC9E,KAAK,UAAS,gBAAgB,GAAQ,YAAY;CAgBnD,CAAC;AAIF;;;;GAIG;AACH,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/stores/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -98,6 +98,23 @@ export const quotas = {
|
|
|
98
98
|
return new LedgerQuotaStore(store, config.limitTokens);
|
|
99
99
|
};
|
|
100
100
|
},
|
|
101
|
+
/**
|
|
102
|
+
* Budget windows off the usage ledger — per day and per month, in tokens and/or recorded spend:
|
|
103
|
+
*
|
|
104
|
+
* ```ts
|
|
105
|
+
* quota: quotas.windows({ day: { tokens: 200_000 }, month: { usd: 20 } })
|
|
106
|
+
* ```
|
|
107
|
+
*
|
|
108
|
+
* `GET <path>/quota` reports every window, and a send while one is exhausted is refused with `429`
|
|
109
|
+
* `{ code: 'quota_exceeded', period }` before the turn starts. Spend is the provider-reported cost
|
|
110
|
+
* the usage rows recorded (a gateway), so a `usd` ceiling binds only where cost is reported.
|
|
111
|
+
*/
|
|
112
|
+
windows(limits) {
|
|
113
|
+
return async ({ store }) => {
|
|
114
|
+
const { LedgerQuotaProvider } = await import('./ledger-quota-provider.js');
|
|
115
|
+
return new LedgerQuotaProvider(store, undefined, limits);
|
|
116
|
+
};
|
|
117
|
+
},
|
|
101
118
|
};
|
|
102
119
|
/**
|
|
103
120
|
* The pricing factory namespace used in `config/agent.ts`, mirroring {@link stores}:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/stores/factory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/stores/factory.ts"],"names":[],"mappings":"AA0DA,KAAK,UAAU,oBAAoB,CAAC,GAAuB;IACzD,OAAO,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAA0C,CAAC;AACzF,CAAC;AAED;;;;GAIG;AACH,MAAM,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;AAExF,SAAS,aAAa,CAAC,OAAqB,EAAE,UAA8B;IAC1E,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,sBAAsB,EAAE;QACrD,KAAK,EAAE,UAAU,IAAI,IAAI;QACzB,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,IAAI,OAAO,OAAO,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC;IACpD,MAAM,KAAK,GAAI,OAA8C,CAAC,sBAAsB,CAAC,CAAC;IACtF,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,KAAuB,CAAC;AACpE,CAAC;AAiBD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,2FAA2F;IAC3F,MAAM,CAAC,OAAO,GAAsB,EAAE;QACpC,OAAO,KAAK,IAAI,EAAE;YAChB,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;YAC7E,OAAO,IAAI,kBAAkB,EAAE,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,MAAM,GAAqB,EAAE;QACjC,MAAM,OAAO,GAAiB,KAAK,EAAE,GAAG,EAAE,EAAE;YAC1C,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;gBAC7C,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;gBAClC,CAAC,CAAC,EAAE,CAAiC,CAAC;YACxC,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE;gBACjC,GAAG,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS;oBACvC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE;oBAC/C,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;QACL,CAAC,CAAC;QACF,yFAAyF;QACzF,OAAO,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;CACF,CAAC;AA4BF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,kGAAkG;IAClG,MAAM,CAAC,MAAmB;QACxB,OAAO,KAAK,IAAI,EAAE;YAChB,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;YAC7E,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACpD,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,MAAmB;QACxB,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YACzB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC/D,OAAO,IAAI,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACzD,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAAmB;QACzB,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YACzB,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;YAC3E,OAAO,IAAI,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC3D,CAAC,CAAC;IACJ,CAAC;CACF,CAAC;AAuBF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,gEAAgE;IAChE,MAAM;QACJ,OAAO,KAAK,IAAI,EAAE;YAChB,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;YACjF,OAAO,IAAI,oBAAoB,EAAE,CAAC;QACpC,CAAC,CAAC;IACJ,CAAC;IAED,+FAA+F;IAC/F,KAAK,CAAC,MAAM,GAAuB,EAAE;QACnC,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE;YACnB,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACjE,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;gBAC7C,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;gBAClC,CAAC,CAAC,EAAE,CAAiC,CAAC;YACxC,OAAO,IAAI,iBAAiB,CAAC,MAAM,EAAE;gBACnC,GAAG,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS;oBACvC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE;oBAC/C,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;CACF,CAAC;AAqCF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,sGAAsG;IACtG,KAAK,CAAC,MAAM,GAA0B,EAAE;QACtC,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE;YACnB,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;YACjF,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;gBAC7C,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;gBAClC,CAAC,CAAC,EAAE,CAAiC,CAAC;YACxC,OAAO,IAAI,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,YAAY,EAAE;gBAC1D,GAAG,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS;oBACvC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE;oBAC/C,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;CACF,CAAC;AA0GF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,uGAAuG;IACvG,MAAM,CAAC,MAA6B;QAClC,OAAO,KAAK,IAAI,EAAE;YAChB,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;YAC5E,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;YAC7E,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC7D,MAAM,QAAQ,GACZ,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;YACpF,MAAM,KAAK,GAAG,IAAI,iBAAiB,EAAE,CAAC;YACtC,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClE,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE;oBACtC,QAAQ;oBACR,KAAK;oBACL,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1E,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACrE,CAAC,CAAC;YACL,CAAC;YACD,OAAO,IAAI,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,MAA+B;QACtC,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE;YACnB,MAAM,EAAE,oBAAoB,EAAE,aAAa,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAC7E,2BAA2B,CAC5B,CAAC;YACF,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC7D,MAAM,QAAQ,GACZ,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;YACpF,MAAM,EAAE,GACN,MAAM,CAAC,EAAE;gBACT,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;oBACjB,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACtD,OAAO,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;wBACrC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;wBACzC,CAAC,CAAC,SAAS,CAAiC,CAAC;gBACjD,CAAC,CAAC,EAAE,CAAC,CAAC;YACR,MAAM,YAAY,GAAyB;gBACzC,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9D,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjE,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,MAAM,CAAC,kBAAkB,KAAK,SAAS;oBACzC,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE;oBACnD,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtF,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,GAAG,CAAC,MAAM,CAAC,eAAe,KAAK,SAAS;oBACtC,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE;oBAC7C,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;YACF,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;YACrE,MAAM,OAAO,GACX,MAAM,CAAC,QAAQ,KAAK,SAAS;gBAC3B,CAAC,CAAC,IAAI,oBAAoB,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,QAAQ,EAAE,CAAC;gBAC7D,CAAC,CAAC,SAAS,CAAC;YAChB,MAAM,KAAK,GAAG,OAAO,IAAI,IAAI,aAAa,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;YAC7D,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;gBACjC,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC;YAC7B,CAAC;YACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClE,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE;oBACtC,QAAQ;oBACR,KAAK;oBACL,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1E,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACrE,CAAC,CAAC;YACL,CAAC;YACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;gBACvE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;gBACzE,OAAO,IAAI,eAAe,CACxB,CAAC,IAAI,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC,EACzE,aAAa,CACd,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChD,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,MAA6B;QAClC,OAAO,KAAK,IAAI,EAAE;YAChB,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;YAChF,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC7D,MAAM,QAAQ,GACZ,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;YACpF,MAAM,MAAM,GACV,MAAM,CAAC,MAAM;gBACb,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;oBACjB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;oBACnD,OAAO,IAAI,GAAG,CAAC,YAAY,CAAC;wBAC1B,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,uBAAuB;wBAC1C,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAClE,CAAgC,CAAC;gBACpC,CAAC,CAAC,EAAE,CAAC,CAAC;YACR,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE;gBACpC,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7E,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClE,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;gBACrC,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACjC,CAAC;YACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClE,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE;oBACtC,QAAQ;oBACR,KAAK;oBACL,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1E,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACrE,CAAC,CAAC;YACL,CAAC;YACD,OAAO,IAAI,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC,CAAC;IACJ,CAAC;CACF,CAAC;AAiBF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B;;;OAGG;IACH,MAAM;QACJ,OAAO,KAAK,IAAI,EAAE;YAChB,MAAM,EAAE,8BAA8B,EAAE,GAAG,MAAM,MAAM,CACrD,4CAA4C,CAC7C,CAAC;YACF,OAAO,IAAI,8BAA8B,EAAE,CAAC;QAC9C,CAAC,CAAC;IACJ,CAAC;CACF,CAAC;AAgCF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,2GAA2G;IAC3G,MAAM;QACJ,OAAO,KAAK,IAAI,EAAE;YAChB,MAAM,EAAE,wBAAwB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAC3E,OAAO,IAAI,wBAAwB,EAAE,CAAC;QACxC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,GAAyB,EAAE;QACrC,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE;YACnB,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,sBAAsB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;YAC3F,OAAO,IAAI,oBAAoB,CAAC,MAAM,EAAE;gBACtC,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9E,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,mCAAmC;AACnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAwB3C;;;;;;;;;GASG;AACH,KAAK,UAAU,sBAAsB,CACnC,GAAuB,EACvB,UAAmB;IAEnB,MAAM,SAAS,GAAG,GAAG,CAAC,SAErB,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;IAC1F,OAAO,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACzC,CAAC;AAED,+GAA+G;AAC/G,SAAS,YAAY,CAAC,EAAe;IACnC,OAAO;QACL,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;YAC1B,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;QACzD,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;YACxB,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;QACD,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;YAClC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;QACD,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;YACtC,MAAM,UAAU,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,CAAC,QAAgB,EAAE,OAAe,EAAE,EAAE;gBACrD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;oBACzB,SAAS,CAAC,OAAO,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC;YACF,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACnC,MAAM,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACpC,OAAO,KAAK,IAAI,EAAE;gBAChB,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACpC,MAAM,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBACtC,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;YAC1B,CAAC,CAAC;QACJ,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;YACrB,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;YAC7B,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC;KACF,CAAC;AACJ,CAAC;AAiBD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,uFAAuF;IACvF,MAAM,CAAC,MAAM,GAA+B,EAAE;QAC5C,OAAO,KAAK,IAAI,EAAE;YAChB,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,yCAAyC,CAAC,CAAC;YAC3F,OAAO,IAAI,sBAAsB,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { AgentStore } from '../spi/agent-store.js';
|
|
2
|
+
import { type QuotaProvider, type QuotaQuery, type QuotaReport } from '../spi/quota-provider.js';
|
|
3
|
+
import type { QuotaStore } from '../spi/quota-store.js';
|
|
4
|
+
/** Ceilings for one window. Either, both or neither. */
|
|
5
|
+
export interface QuotaWindowLimits {
|
|
6
|
+
tokens?: number;
|
|
7
|
+
usd?: number;
|
|
8
|
+
}
|
|
9
|
+
/** Ceilings per window — what `quotas.windows({ … })` takes. */
|
|
10
|
+
export interface QuotaLimits {
|
|
11
|
+
day?: QuotaWindowLimits;
|
|
12
|
+
month?: QuotaWindowLimits;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* A {@link QuotaProvider} over the usage ledger: a day window (tokens from `quotaToday`, spend from
|
|
16
|
+
* `usageBetween` when the store has it), and a month window when the store implements
|
|
17
|
+
* `usageBetween`. Ceilings come from `limits`; a {@link QuotaStore} passed alongside lends the day
|
|
18
|
+
* window its own token ceiling when `limits.day.tokens` does not set one.
|
|
19
|
+
*
|
|
20
|
+
* Spend is what the usage rows recorded — the provider-reported cost of a gateway — so a USD ceiling
|
|
21
|
+
* only binds where the provider reports cost.
|
|
22
|
+
*/
|
|
23
|
+
export declare class LedgerQuotaProvider implements QuotaProvider {
|
|
24
|
+
private readonly store;
|
|
25
|
+
private readonly quota?;
|
|
26
|
+
private readonly limits;
|
|
27
|
+
constructor(store: AgentStore, quota?: QuotaStore | undefined, limits?: QuotaLimits);
|
|
28
|
+
report(query: QuotaQuery): Promise<QuotaReport>;
|
|
29
|
+
private dayWindow;
|
|
30
|
+
private window;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=ledger-quota-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger-quota-provider.d.ts","sourceRoot":"","sources":["../../../src/stores/ledger-quota-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,EAGjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,gEAAgE;AAChE,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IAErD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHzB,YACmB,KAAK,EAAE,UAAU,EACjB,KAAK,CAAC,EAAE,UAAU,YAAA,EAClB,MAAM,GAAE,WAAgB,EACvC;IAEE,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAWpD;YAEa,SAAS;IAavB,OAAO,CAAC,MAAM;CAgBf"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { exhaustedWindow, quotaPeriodRange, } from '../spi/quota-provider.js';
|
|
2
|
+
/**
|
|
3
|
+
* A {@link QuotaProvider} over the usage ledger: a day window (tokens from `quotaToday`, spend from
|
|
4
|
+
* `usageBetween` when the store has it), and a month window when the store implements
|
|
5
|
+
* `usageBetween`. Ceilings come from `limits`; a {@link QuotaStore} passed alongside lends the day
|
|
6
|
+
* window its own token ceiling when `limits.day.tokens` does not set one.
|
|
7
|
+
*
|
|
8
|
+
* Spend is what the usage rows recorded — the provider-reported cost of a gateway — so a USD ceiling
|
|
9
|
+
* only binds where the provider reports cost.
|
|
10
|
+
*/
|
|
11
|
+
export class LedgerQuotaProvider {
|
|
12
|
+
store;
|
|
13
|
+
quota;
|
|
14
|
+
limits;
|
|
15
|
+
constructor(store, quota, limits = {}) {
|
|
16
|
+
this.store = store;
|
|
17
|
+
this.quota = quota;
|
|
18
|
+
this.limits = limits;
|
|
19
|
+
}
|
|
20
|
+
async report(query) {
|
|
21
|
+
const now = query.now ?? new Date();
|
|
22
|
+
const actorRef = query.actor.id;
|
|
23
|
+
const windows = [await this.dayWindow(actorRef, now)];
|
|
24
|
+
if (this.store.usageBetween !== undefined) {
|
|
25
|
+
const range = quotaPeriodRange('month', now);
|
|
26
|
+
const used = await this.store.usageBetween(actorRef, range.fromDay, range.toDay);
|
|
27
|
+
windows.push(this.window('month', used.usedTokens, used.costUsd, range.resetsAt));
|
|
28
|
+
}
|
|
29
|
+
const blocked = exhaustedWindow(windows);
|
|
30
|
+
return { windows, ...(blocked !== undefined ? { blocked } : {}) };
|
|
31
|
+
}
|
|
32
|
+
async dayWindow(actorRef, now) {
|
|
33
|
+
const range = quotaPeriodRange('day', now);
|
|
34
|
+
const used = this.store.usageBetween !== undefined
|
|
35
|
+
? await this.store.usageBetween(actorRef, range.fromDay, range.toDay)
|
|
36
|
+
: { ...(await this.store.quotaToday(actorRef, range.fromDay)), costUsd: 0 };
|
|
37
|
+
const window = this.window('day', used.usedTokens, used.costUsd, range.resetsAt);
|
|
38
|
+
if (this.quota !== undefined && window.limitTokens === undefined) {
|
|
39
|
+
window.limitTokens = (await this.quota.check(actorRef, range.fromDay)).limitTokens;
|
|
40
|
+
}
|
|
41
|
+
return window;
|
|
42
|
+
}
|
|
43
|
+
window(period, usedTokens, usedUsd, resetsAt) {
|
|
44
|
+
const limits = this.limits[period] ?? {};
|
|
45
|
+
return {
|
|
46
|
+
period,
|
|
47
|
+
usedTokens,
|
|
48
|
+
...(limits.tokens !== undefined ? { limitTokens: limits.tokens } : {}),
|
|
49
|
+
usedUsd,
|
|
50
|
+
...(limits.usd !== undefined ? { limitUsd: limits.usd } : {}),
|
|
51
|
+
resetsAt,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=ledger-quota-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger-quota-provider.js","sourceRoot":"","sources":["../../../src/stores/ledger-quota-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lucid-schema.d.ts","sourceRoot":"","sources":["../../../src/stores/lucid-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,YAAY;aACvB,OAAO,EAAE,cAAc;aACvB,QAAQ,EAAE,eAAe;aACzB,SAAS,EAAE,iBAAiB;aAC5B,UAAU,EAAE,mBAAmB;aAC/B,YAAY,EAAE,qBAAqB;aACnC,IAAI,EAAE,WAAW;CACT,CAAC;AAEX;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"lucid-schema.d.ts","sourceRoot":"","sources":["../../../src/stores/lucid-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,YAAY;aACvB,OAAO,EAAE,cAAc;aACvB,QAAQ,EAAE,eAAe;aACzB,SAAS,EAAE,iBAAiB;aAC5B,UAAU,EAAE,mBAAmB;aAC/B,YAAY,EAAE,qBAAqB;aACnC,IAAI,EAAE,WAAW;CACT,CAAC;AAEX;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CA6GhD;AAmDD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA6B7E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAK9C;AAED,+GAA+G;AAC/G,wBAAsB,eAAe,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvE;AAWD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAanE"}
|