@antseed/cli 0.1.196 → 0.1.198
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/cli/commands/buyer/start.d.ts.map +1 -1
- package/dist/cli/commands/buyer/start.js +1 -0
- package/dist/cli/commands/buyer/start.js.map +1 -1
- package/dist/cli/commands/gateway/activity.d.ts.map +1 -1
- package/dist/cli/commands/gateway/activity.js +26 -5
- package/dist/cli/commands/gateway/activity.js.map +1 -1
- package/dist/config/types.d.ts +2 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/gateway/accounting.d.ts +118 -6
- package/dist/gateway/accounting.d.ts.map +1 -1
- package/dist/gateway/accounting.js +319 -21
- package/dist/gateway/accounting.js.map +1 -1
- package/dist/gateway/console-api/handlers/favorites.d.ts +9 -0
- package/dist/gateway/console-api/handlers/favorites.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/favorites.js +44 -0
- package/dist/gateway/console-api/handlers/favorites.js.map +1 -0
- package/dist/gateway/console-api/handlers/favorites.test.d.ts +2 -0
- package/dist/gateway/console-api/handlers/favorites.test.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/favorites.test.js +41 -0
- package/dist/gateway/console-api/handlers/favorites.test.js.map +1 -0
- package/dist/gateway/console-api/handlers/index.d.ts.map +1 -1
- package/dist/gateway/console-api/handlers/index.js +2 -0
- package/dist/gateway/console-api/handlers/index.js.map +1 -1
- package/dist/gateway/console-api/handlers/network-mapping.d.ts +7 -1
- package/dist/gateway/console-api/handlers/network-mapping.d.ts.map +1 -1
- package/dist/gateway/console-api/handlers/network-mapping.js +46 -0
- package/dist/gateway/console-api/handlers/network-mapping.js.map +1 -1
- package/dist/gateway/console-api/handlers/network.d.ts.map +1 -1
- package/dist/gateway/console-api/handlers/network.js +19 -3
- package/dist/gateway/console-api/handlers/network.js.map +1 -1
- package/dist/gateway/console-api/handlers/network.test.js +70 -8
- package/dist/gateway/console-api/handlers/network.test.js.map +1 -1
- package/dist/gateway/console-api/handlers/usage.d.ts.map +1 -1
- package/dist/gateway/console-api/handlers/usage.js +2 -1
- package/dist/gateway/console-api/handlers/usage.js.map +1 -1
- package/dist/gateway/console-api/types.d.ts +75 -1
- package/dist/gateway/console-api/types.d.ts.map +1 -1
- package/dist/gateway/console-api/types.js.map +1 -1
- package/dist/gateway/gateway.test.js +829 -3
- package/dist/gateway/gateway.test.js.map +1 -1
- package/dist/gateway/request-errors.test.js +30 -0
- package/dist/gateway/request-errors.test.js.map +1 -1
- package/dist/gateway/routing-through-gateway.test.js +120 -4
- package/dist/gateway/routing-through-gateway.test.js.map +1 -1
- package/dist/gateway/runtime.d.ts.map +1 -1
- package/dist/gateway/runtime.js +4 -0
- package/dist/gateway/runtime.js.map +1 -1
- package/dist/gateway/server.d.ts +20 -0
- package/dist/gateway/server.d.ts.map +1 -1
- package/dist/gateway/server.js +181 -25
- package/dist/gateway/server.js.map +1 -1
- package/dist/gateway/services/network.d.ts +6 -1
- package/dist/gateway/services/network.d.ts.map +1 -1
- package/dist/gateway/services/network.js +12 -1
- package/dist/gateway/services/network.js.map +1 -1
- package/dist/gateway/services/usage.d.ts +2 -0
- package/dist/gateway/services/usage.d.ts.map +1 -1
- package/dist/gateway/services/usage.js +19 -5
- package/dist/gateway/services/usage.js.map +1 -1
- package/dist/gateway/spend-feed.d.ts +4 -1
- package/dist/gateway/spend-feed.d.ts.map +1 -1
- package/dist/gateway/spend-feed.js +7 -0
- package/dist/gateway/spend-feed.js.map +1 -1
- package/dist/gateway/store-data.test.js +1 -1
- package/dist/gateway/store-data.test.js.map +1 -1
- package/dist/gateway/store-migrations.d.ts.map +1 -1
- package/dist/gateway/store-migrations.js +40 -0
- package/dist/gateway/store-migrations.js.map +1 -1
- package/dist/gateway/store.d.ts +63 -1
- package/dist/gateway/store.d.ts.map +1 -1
- package/dist/gateway/store.js +142 -21
- package/dist/gateway/store.js.map +1 -1
- package/dist/gateway/video-jobs.d.ts +12 -0
- package/dist/gateway/video-jobs.d.ts.map +1 -0
- package/dist/gateway/video-jobs.js +24 -0
- package/dist/gateway/video-jobs.js.map +1 -0
- package/dist/proxy/buyer-proxy.d.ts +15 -0
- package/dist/proxy/buyer-proxy.d.ts.map +1 -1
- package/dist/proxy/buyer-proxy.js +166 -19
- package/dist/proxy/buyer-proxy.js.map +1 -1
- package/dist/proxy/buyer-proxy.test.js +158 -1
- package/dist/proxy/buyer-proxy.test.js.map +1 -1
- package/dist/proxy/gateway-policy.test.js +75 -1
- package/dist/proxy/gateway-policy.test.js.map +1 -1
- package/dist/proxy/request-utils.d.ts +4 -0
- package/dist/proxy/request-utils.d.ts.map +1 -1
- package/dist/proxy/request-utils.js +4 -0
- package/dist/proxy/request-utils.js.map +1 -1
- package/dist/proxy/resource-routes.d.ts +2 -0
- package/dist/proxy/resource-routes.d.ts.map +1 -1
- package/dist/proxy/resource-routes.js +4 -0
- package/dist/proxy/resource-routes.js.map +1 -1
- package/dist/proxy/route-selection.d.ts +79 -0
- package/dist/proxy/route-selection.d.ts.map +1 -0
- package/dist/proxy/route-selection.js +79 -0
- package/dist/proxy/route-selection.js.map +1 -0
- package/dist/proxy/spend-attribution.d.ts +17 -1
- package/dist/proxy/spend-attribution.d.ts.map +1 -1
- package/dist/proxy/spend-attribution.js +45 -10
- package/dist/proxy/spend-attribution.js.map +1 -1
- package/dist/proxy/spend-attribution.test.d.ts +2 -0
- package/dist/proxy/spend-attribution.test.d.ts.map +1 -0
- package/dist/proxy/spend-attribution.test.js +63 -0
- package/dist/proxy/spend-attribution.test.js.map +1 -0
- package/dist/proxy/telemetry.d.ts +15 -0
- package/dist/proxy/telemetry.d.ts.map +1 -1
- package/dist/proxy/telemetry.js +26 -3
- package/dist/proxy/telemetry.js.map +1 -1
- package/dist/proxy/video-download.d.ts +9 -1
- package/dist/proxy/video-download.d.ts.map +1 -1
- package/dist/proxy/video-download.js +41 -6
- package/dist/proxy/video-download.js.map +1 -1
- package/dist/proxy/video-download.test.js +33 -3
- package/dist/proxy/video-download.test.js.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/** Buyer → gateway, on the response of a model-routed request. */
|
|
2
|
+
export const ROUTE_SELECTION_HEADER = 'x-antseed-route-selection';
|
|
3
|
+
const PICKS = new Set(['spread', 'best', 'conversation', 'exploration', 'failover', 'order']);
|
|
4
|
+
const RECORDS = new Set(['model', 'other-models', 'none']);
|
|
5
|
+
const CHANNELS = new Set(['open', 'new', 'free']);
|
|
6
|
+
const ORDERINGS = new Set(['expected-cost', 'trust', 'price', 'latency']);
|
|
7
|
+
const MAX_HEADER_BYTES = 2048;
|
|
8
|
+
export function encodeServedSelection(selection) {
|
|
9
|
+
return Buffer.from(JSON.stringify(selection), 'utf8').toString('base64url');
|
|
10
|
+
}
|
|
11
|
+
/** The served selection from a header value, or null when it is absent or malformed. */
|
|
12
|
+
export function decodeServedSelection(value) {
|
|
13
|
+
const raw = Array.isArray(value) ? value[0] : value;
|
|
14
|
+
if (!raw || raw.length > MAX_HEADER_BYTES)
|
|
15
|
+
return null;
|
|
16
|
+
try {
|
|
17
|
+
return parseServedSelection(JSON.parse(Buffer.from(raw, 'base64url').toString('utf8')));
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const num = (v) => (typeof v === 'number' && Number.isFinite(v) ? v : null);
|
|
24
|
+
const count = (v) => (Number.isSafeInteger(v) && v >= 0 ? v : null);
|
|
25
|
+
/** A route selection read back from JSON (the buyer's preview, or the request log), or null when malformed. */
|
|
26
|
+
export function parseRouteSelection(value) {
|
|
27
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
28
|
+
return null;
|
|
29
|
+
const s = value;
|
|
30
|
+
const expectedCostUsd = num(s.expectedCostUsd);
|
|
31
|
+
const expectedSeconds = num(s.expectedSeconds);
|
|
32
|
+
const successRate = num(s.successRate);
|
|
33
|
+
const observations = num(s.observations);
|
|
34
|
+
const poolSize = count(s.poolSize);
|
|
35
|
+
const inFlight = count(s.inFlight);
|
|
36
|
+
if (expectedCostUsd === null || expectedSeconds === null || successRate === null || observations === null
|
|
37
|
+
|| poolSize === null || inFlight === null || !RECORDS.has(s.record)
|
|
38
|
+
|| !ORDERINGS.has(s.ordering))
|
|
39
|
+
return null;
|
|
40
|
+
const share = num(s.trafficShare);
|
|
41
|
+
return {
|
|
42
|
+
expectedCostUsd,
|
|
43
|
+
expectedPriceUsd: num(s.expectedPriceUsd),
|
|
44
|
+
expectedSeconds,
|
|
45
|
+
successRate: Math.min(1, Math.max(0, successRate)),
|
|
46
|
+
observations: Math.max(0, observations),
|
|
47
|
+
record: s.record,
|
|
48
|
+
firstTokenMs: num(s.firstTokenMs),
|
|
49
|
+
tokensPerSecond: num(s.tokensPerSecond),
|
|
50
|
+
lastSuccessAt: num(s.lastSuccessAt),
|
|
51
|
+
lastFailureAt: num(s.lastFailureAt),
|
|
52
|
+
lastFailureReason: typeof s.lastFailureReason === 'string' ? s.lastFailureReason.slice(0, 200) : null,
|
|
53
|
+
failing: s.failing === true,
|
|
54
|
+
coolingDown: s.coolingDown === true,
|
|
55
|
+
stale: s.stale === true,
|
|
56
|
+
ordering: s.ordering,
|
|
57
|
+
sharesTraffic: s.sharesTraffic === true,
|
|
58
|
+
trafficShare: share === null ? null : Math.min(1, Math.max(0, share)),
|
|
59
|
+
poolSize,
|
|
60
|
+
channel: CHANNELS.has(s.channel) ? s.channel : null,
|
|
61
|
+
inFlight,
|
|
62
|
+
maxConcurrency: count(s.maxConcurrency),
|
|
63
|
+
routeChainPosition: count(s.routeChainPosition),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/** A served selection read back from JSON, or null when malformed. */
|
|
67
|
+
export function parseServedSelection(value) {
|
|
68
|
+
const base = parseRouteSelection(value);
|
|
69
|
+
if (!base)
|
|
70
|
+
return null;
|
|
71
|
+
const s = value;
|
|
72
|
+
const rank = count(s.rank);
|
|
73
|
+
const of = count(s.of);
|
|
74
|
+
const attempt = count(s.attempt);
|
|
75
|
+
if (rank === null || of === null || attempt === null || !PICKS.has(s.pick))
|
|
76
|
+
return null;
|
|
77
|
+
return { ...base, rank, of, attempt, pick: s.pick };
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=route-selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-selection.js","sourceRoot":"","sources":["../../src/proxy/route-selection.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,17 @@ export interface AttributedSpendEvent {
|
|
|
21
21
|
outputTokens: string;
|
|
22
22
|
outputImages: string;
|
|
23
23
|
at: number;
|
|
24
|
+
/** `routing`: the spend paid a routing service for a ranking, not a seller for inference. */
|
|
25
|
+
purpose?: SpendPurpose;
|
|
24
26
|
}
|
|
27
|
+
/** What a request's spend paid for; inference when unset. */
|
|
28
|
+
export type SpendPurpose = 'routing';
|
|
29
|
+
/**
|
|
30
|
+
* The buyer refuses a video priced above the gateway's `x-antseed-max-video-usdc`
|
|
31
|
+
* before it starts, and reports the price it accepted. A gateway applies a
|
|
32
|
+
* key's caps to video creates only through a buyer that says so.
|
|
33
|
+
*/
|
|
34
|
+
export declare const VIDEO_BUDGET_CAPABILITY = "video-budget";
|
|
25
35
|
export interface AttributedSpendPage {
|
|
26
36
|
/**
|
|
27
37
|
* Identifies the event sequence. A feed backed by a file keeps it (and its
|
|
@@ -34,6 +44,8 @@ export interface AttributedSpendPage {
|
|
|
34
44
|
/** Pass back as `after` on the next poll. */
|
|
35
45
|
cursor: number;
|
|
36
46
|
events: AttributedSpendEvent[];
|
|
47
|
+
/** What this buyer supports for the gateway (absent on older buyers). */
|
|
48
|
+
capabilities?: string[];
|
|
37
49
|
}
|
|
38
50
|
export interface SpendAttributionFeedOptions {
|
|
39
51
|
/**
|
|
@@ -60,6 +72,9 @@ export declare class SpendAttributionFeed {
|
|
|
60
72
|
private readonly _track;
|
|
61
73
|
private readonly _lookup;
|
|
62
74
|
private readonly _pruneTags;
|
|
75
|
+
private readonly _trackPurpose;
|
|
76
|
+
private readonly _clearPurpose;
|
|
77
|
+
private readonly _prunePurposes;
|
|
63
78
|
private readonly _insert;
|
|
64
79
|
private readonly _select;
|
|
65
80
|
private readonly _oldest;
|
|
@@ -69,7 +84,8 @@ export declare class SpendAttributionFeed {
|
|
|
69
84
|
private readonly _recentTagsBySeller;
|
|
70
85
|
private _lastPruneAt;
|
|
71
86
|
constructor(_now?: () => number, options?: SpendAttributionFeedOptions);
|
|
72
|
-
|
|
87
|
+
/** `purpose` marks a request whose spend buys something other than inference (a router's ranking). */
|
|
88
|
+
track(requestId: string, tag: string, purpose?: SpendPurpose | null): void;
|
|
73
89
|
close(): void;
|
|
74
90
|
record(event: {
|
|
75
91
|
requestId: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spend-attribution.d.ts","sourceRoot":"","sources":["../../src/proxy/spend-attribution.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,8BAA8B,CAAA;AAEnE,wDAAwD;AACxD,eAAO,MAAM,yBAAyB,wBAAwB,CAAA;AAgB9D,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,oDAAoD;IACpD,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,EAAE,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"spend-attribution.d.ts","sourceRoot":"","sources":["../../src/proxy/spend-attribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,12 @@ const ACKED_RETENTION_MS = 60 * 60 * 1000;
|
|
|
24
24
|
/** Unacknowledged events are kept this long, for a gateway that is down. */
|
|
25
25
|
const UNACKED_RETENTION_MS = 7 * 24 * 60 * 60 * 1000;
|
|
26
26
|
const PRUNE_INTERVAL_MS = 60 * 1000;
|
|
27
|
+
/**
|
|
28
|
+
* The buyer refuses a video priced above the gateway's `x-antseed-max-video-usdc`
|
|
29
|
+
* before it starts, and reports the price it accepted. A gateway applies a
|
|
30
|
+
* key's caps to video creates only through a buyer that says so.
|
|
31
|
+
*/
|
|
32
|
+
export const VIDEO_BUDGET_CAPABILITY = 'video-budget';
|
|
27
33
|
export function parseSpendAttributionTag(value) {
|
|
28
34
|
const tag = value?.trim() ?? '';
|
|
29
35
|
return TAG_PATTERN.test(tag) ? tag : null;
|
|
@@ -43,6 +49,9 @@ export class SpendAttributionFeed {
|
|
|
43
49
|
_track;
|
|
44
50
|
_lookup;
|
|
45
51
|
_pruneTags;
|
|
52
|
+
_trackPurpose;
|
|
53
|
+
_clearPurpose;
|
|
54
|
+
_prunePurposes;
|
|
46
55
|
_insert;
|
|
47
56
|
_select;
|
|
48
57
|
_oldest;
|
|
@@ -73,14 +82,24 @@ export class SpendAttributionFeed {
|
|
|
73
82
|
);
|
|
74
83
|
CREATE INDEX IF NOT EXISTS spend_events_time ON spend_events(at);
|
|
75
84
|
`);
|
|
85
|
+
// Added after the first release. Routing purchases get their own table rather than a request_tags
|
|
86
|
+
// column, so an older buyer (one rolled back to) can still write request_tags by position.
|
|
87
|
+
this._db.exec('CREATE TABLE IF NOT EXISTS request_purposes (request_id TEXT PRIMARY KEY, purpose TEXT NOT NULL, tracked_at INTEGER NOT NULL)');
|
|
88
|
+
addColumnIfMissing(this._db, 'spend_events', 'purpose TEXT');
|
|
76
89
|
this._db.prepare("INSERT OR IGNORE INTO feed_meta VALUES ('feed_id', ?), ('acked_seq', '0')").run(randomUUID());
|
|
77
90
|
this.bootId = this._db.prepare("SELECT value FROM feed_meta WHERE key = 'feed_id'").get().value;
|
|
78
|
-
this._track = this._db.prepare('INSERT OR REPLACE INTO request_tags VALUES (?, ?, ?)');
|
|
91
|
+
this._track = this._db.prepare('INSERT OR REPLACE INTO request_tags (request_id, tag, tracked_at) VALUES (?, ?, ?)');
|
|
92
|
+
this._trackPurpose = this._db.prepare('INSERT OR REPLACE INTO request_purposes (request_id, purpose, tracked_at) VALUES (?, ?, ?)');
|
|
93
|
+
this._clearPurpose = this._db.prepare('DELETE FROM request_purposes WHERE request_id = ?');
|
|
79
94
|
this._pruneTags = this._db.prepare('DELETE FROM request_tags WHERE tracked_at < ?');
|
|
80
|
-
this.
|
|
95
|
+
this._prunePurposes = this._db.prepare('DELETE FROM request_purposes WHERE tracked_at < ?');
|
|
96
|
+
this._lookup = this._db.prepare(`
|
|
97
|
+
SELECT t.tag, p.purpose FROM request_tags t LEFT JOIN request_purposes p ON p.request_id = t.request_id
|
|
98
|
+
WHERE t.request_id = ? AND t.tracked_at >= ?
|
|
99
|
+
`);
|
|
81
100
|
this._insert = this._db.prepare(`
|
|
82
|
-
INSERT INTO spend_events (tag, request_id, buyer_identity, seller_peer_id, amount_usdc, input_tokens, cached_input_tokens, output_tokens, output_images, at)
|
|
83
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
101
|
+
INSERT INTO spend_events (tag, request_id, buyer_identity, seller_peer_id, amount_usdc, input_tokens, cached_input_tokens, output_tokens, output_images, at, purpose)
|
|
102
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
84
103
|
`);
|
|
85
104
|
this._select = this._db.prepare('SELECT * FROM spend_events WHERE seq > ? ORDER BY seq LIMIT ?');
|
|
86
105
|
// The next seq when the table is empty: sqlite_sequence remembers the last one handed out.
|
|
@@ -97,12 +116,17 @@ export class SpendAttributionFeed {
|
|
|
97
116
|
`);
|
|
98
117
|
this._prune(this._now());
|
|
99
118
|
}
|
|
100
|
-
|
|
119
|
+
/** `purpose` marks a request whose spend buys something other than inference (a router's ranking). */
|
|
120
|
+
track(requestId, tag, purpose = null) {
|
|
101
121
|
if (!this._db.open)
|
|
102
122
|
return;
|
|
103
123
|
const now = this._now();
|
|
104
124
|
this._prune(now);
|
|
105
125
|
this._track.run(requestId, tag, now);
|
|
126
|
+
if (purpose)
|
|
127
|
+
this._trackPurpose.run(requestId, purpose, now);
|
|
128
|
+
else
|
|
129
|
+
this._clearPurpose.run(requestId);
|
|
106
130
|
}
|
|
107
131
|
close() {
|
|
108
132
|
if (this._db.open)
|
|
@@ -119,15 +143,16 @@ export class SpendAttributionFeed {
|
|
|
119
143
|
recentTags.delete(recentTag);
|
|
120
144
|
// Without a request id the spend can only be attributed when exactly one
|
|
121
145
|
// tag (one gateway key's request) is using this identity on this seller.
|
|
122
|
-
const
|
|
123
|
-
? this._lookup.get(event.requestId, now - TAG_RETENTION_MS)
|
|
124
|
-
:
|
|
146
|
+
const tracked = event.requestId
|
|
147
|
+
? this._lookup.get(event.requestId, now - TAG_RETENTION_MS)
|
|
148
|
+
: undefined;
|
|
149
|
+
const tag = event.requestId ? tracked?.tag : recentTags.size === 1 ? [...recentTags.keys()][0] : undefined;
|
|
125
150
|
if (!tag)
|
|
126
151
|
return;
|
|
127
152
|
recentTags.set(tag, now);
|
|
128
153
|
this._recentTagsBySeller.set(sellerKey, recentTags);
|
|
129
154
|
this._prune(now);
|
|
130
|
-
this._insert.run(tag, event.requestId, event.buyerIdentity ?? 'default', event.sellerPeerId, event.amountUsdc, event.inputTokens, event.cachedInputTokens, event.outputTokens, event.outputImages, now);
|
|
155
|
+
this._insert.run(tag, event.requestId, event.buyerIdentity ?? 'default', event.sellerPeerId, event.amountUsdc, event.inputTokens, event.cachedInputTokens, event.outputTokens, event.outputImages, now, tracked?.purpose ?? null);
|
|
131
156
|
}
|
|
132
157
|
/**
|
|
133
158
|
* Events after `after`. With `ack` (an authenticated gateway poll), `after`
|
|
@@ -136,8 +161,9 @@ export class SpendAttributionFeed {
|
|
|
136
161
|
*/
|
|
137
162
|
page(after, options = {}) {
|
|
138
163
|
const cursorIn = Number.isSafeInteger(after) ? Math.max(after, 0) : 0;
|
|
164
|
+
const capabilities = [VIDEO_BUDGET_CAPABILITY];
|
|
139
165
|
if (!this._db.open)
|
|
140
|
-
return { bootId: this.bootId, oldestSeq: cursorIn + 1, cursor: cursorIn, events: [] };
|
|
166
|
+
return { bootId: this.bootId, oldestSeq: cursorIn + 1, cursor: cursorIn, events: [], capabilities };
|
|
141
167
|
if (options.ack && cursorIn > 0)
|
|
142
168
|
this._ack.run(cursorIn, cursorIn);
|
|
143
169
|
const rows = this._select.all(cursorIn, MAX_EVENTS_PER_PAGE);
|
|
@@ -148,6 +174,7 @@ export class SpendAttributionFeed {
|
|
|
148
174
|
oldestSeq: this._oldest.get().seq,
|
|
149
175
|
cursor: last ? last.seq : cursorIn,
|
|
150
176
|
events,
|
|
177
|
+
capabilities,
|
|
151
178
|
};
|
|
152
179
|
}
|
|
153
180
|
_prune(now) {
|
|
@@ -155,6 +182,7 @@ export class SpendAttributionFeed {
|
|
|
155
182
|
return;
|
|
156
183
|
this._lastPruneAt = now;
|
|
157
184
|
this._pruneTags.run(now - TAG_RETENTION_MS);
|
|
185
|
+
this._prunePurposes.run(now - TAG_RETENTION_MS);
|
|
158
186
|
this._pruneEvents.run(now - ACKED_RETENTION_MS, now - UNACKED_RETENTION_MS, MAX_STORED_EVENTS);
|
|
159
187
|
}
|
|
160
188
|
}
|
|
@@ -171,8 +199,15 @@ function toEvent(row) {
|
|
|
171
199
|
outputTokens: row.output_tokens,
|
|
172
200
|
outputImages: row.output_images,
|
|
173
201
|
at: row.at,
|
|
202
|
+
...(row.purpose ? { purpose: row.purpose } : {}),
|
|
174
203
|
};
|
|
175
204
|
}
|
|
205
|
+
function addColumnIfMissing(db, table, column) {
|
|
206
|
+
const name = column.split(' ')[0];
|
|
207
|
+
const columns = db.prepare(`SELECT name FROM pragma_table_info(?)`).all(table);
|
|
208
|
+
if (!columns.some((existing) => existing.name === name))
|
|
209
|
+
db.exec(`ALTER TABLE ${table} ADD COLUMN ${column}`);
|
|
210
|
+
}
|
|
176
211
|
/** The feed's database file, or a temporary one when it has none or the file cannot be opened. */
|
|
177
212
|
function openFeedDatabase(options) {
|
|
178
213
|
if (options.path) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spend-attribution.js","sourceRoot":"","sources":["../../src/proxy/spend-attribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,2BAA2B,CAAA;AAEnE,wDAAwD;AACxD,MAAM,CAAC,MAAM,yBAAyB,GAAG,qBAAqB,CAAA;AAE9D,MAAM,WAAW,GAAG,yBAAyB,CAAA;AAC7C,kEAAkE;AAClE,MAAM,iBAAiB,GAAG,OAAO,CAAA;AACjC,MAAM,mBAAmB,GAAG,IAAI,CAAA;AAChC,4EAA4E;AAC5E,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AACvC,6GAA6G;AAC7G,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AAC9C,oFAAoF;AACpF,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AACzC,4EAA4E;AAC5E,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AACpD,MAAM,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"spend-attribution.js","sourceRoot":"","sources":["../../src/proxy/spend-attribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spend-attribution.test.d.ts","sourceRoot":"","sources":["../../src/proxy/spend-attribution.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { mkdtempSync, rmSync } from 'node:fs';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { test } from 'node:test';
|
|
6
|
+
import Database from 'better-sqlite3';
|
|
7
|
+
import { SpendAttributionFeed } from './spend-attribution.js';
|
|
8
|
+
const spend = (requestId) => ({
|
|
9
|
+
requestId, sellerPeerId: 'a'.repeat(40), amountUsdc: '1000',
|
|
10
|
+
inputTokens: '0', cachedInputTokens: '0', outputTokens: '0', outputImages: '0',
|
|
11
|
+
});
|
|
12
|
+
test('spend of a request tracked as routing is reported as a routing purchase', () => {
|
|
13
|
+
const feed = new SpendAttributionFeed();
|
|
14
|
+
try {
|
|
15
|
+
feed.track('rank-1', 'gw_tag', 'routing');
|
|
16
|
+
feed.track('infer-1', 'gw_tag');
|
|
17
|
+
feed.record(spend('rank-1'));
|
|
18
|
+
feed.record(spend('infer-1'));
|
|
19
|
+
const events = feed.page(0).events;
|
|
20
|
+
assert.deepEqual(events.map((event) => [event.requestId, event.purpose]), [['rank-1', 'routing'], ['infer-1', undefined]]);
|
|
21
|
+
}
|
|
22
|
+
finally {
|
|
23
|
+
feed.close();
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
test('a feed database from before routing purposes gains the column and keeps its events', () => {
|
|
27
|
+
const dir = mkdtempSync(join(tmpdir(), 'antseed-spend-feed-'));
|
|
28
|
+
const path = join(dir, 'attributed-spend.db');
|
|
29
|
+
try {
|
|
30
|
+
const old = new Database(path);
|
|
31
|
+
old.exec(`
|
|
32
|
+
CREATE TABLE request_tags (request_id TEXT PRIMARY KEY, tag TEXT NOT NULL, tracked_at INTEGER NOT NULL);
|
|
33
|
+
CREATE TABLE feed_meta (key TEXT PRIMARY KEY, value TEXT NOT NULL);
|
|
34
|
+
CREATE TABLE spend_events (
|
|
35
|
+
seq INTEGER PRIMARY KEY AUTOINCREMENT, tag TEXT NOT NULL, request_id TEXT, buyer_identity TEXT NOT NULL,
|
|
36
|
+
seller_peer_id TEXT NOT NULL, amount_usdc TEXT NOT NULL, input_tokens TEXT NOT NULL, cached_input_tokens TEXT NOT NULL,
|
|
37
|
+
output_tokens TEXT NOT NULL, output_images TEXT NOT NULL, at INTEGER NOT NULL
|
|
38
|
+
);
|
|
39
|
+
`);
|
|
40
|
+
old.prepare("INSERT INTO spend_events (tag, request_id, buyer_identity, seller_peer_id, amount_usdc, input_tokens, cached_input_tokens, output_tokens, output_images, at) VALUES ('gw_old', 'r0', 'default', ?, '5', '0', '0', '0', '0', ?)")
|
|
41
|
+
.run('a'.repeat(40), Date.now());
|
|
42
|
+
old.close();
|
|
43
|
+
const feed = new SpendAttributionFeed(undefined, { path });
|
|
44
|
+
try {
|
|
45
|
+
feed.track('rank-1', 'gw_new', 'routing');
|
|
46
|
+
feed.record(spend('rank-1'));
|
|
47
|
+
assert.deepEqual(feed.page(0).events.map((event) => [event.tag, event.purpose]), [['gw_old', undefined], ['gw_new', 'routing']]);
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
feed.close();
|
|
51
|
+
}
|
|
52
|
+
// A buyer rolled back to the older version still writes and reads the same file as it did.
|
|
53
|
+
const older = new Database(path);
|
|
54
|
+
older.prepare('INSERT OR REPLACE INTO request_tags VALUES (?, ?, ?)').run('r1', 'gw_after_rollback', Date.now());
|
|
55
|
+
older.prepare('INSERT INTO spend_events (tag, request_id, buyer_identity, seller_peer_id, amount_usdc, input_tokens, cached_input_tokens, output_tokens, output_images, at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)')
|
|
56
|
+
.run('gw_after_rollback', 'r1', 'default', 'a'.repeat(40), '5', '0', '0', '0', '0', Date.now());
|
|
57
|
+
older.close();
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
rmSync(dir, { recursive: true, force: true });
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
//# sourceMappingURL=spend-attribution.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spend-attribution.test.js","sourceRoot":"","sources":["../../src/proxy/spend-attribution.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,21 @@ export type ResponseTelemetry = {
|
|
|
23
23
|
estimatedCostUsd: number | null;
|
|
24
24
|
};
|
|
25
25
|
export declare function computeResponseTelemetry(request: SerializedHttpRequest, responseHeaders: Record<string, string>, responseBody: Uint8Array, selectedPeer: PeerInfo): ResponseTelemetry;
|
|
26
|
+
/**
|
|
27
|
+
* Response headers of a request a routing service ranked: the router's peer
|
|
28
|
+
* and service, and which of its recommendations (1 = its first pick) was tried
|
|
29
|
+
* last: it served the request, unless the response is the last refusal. A
|
|
30
|
+
* failed ranking carries the router's peer and service only.
|
|
31
|
+
*/
|
|
32
|
+
export declare const ROUTER_PEER_ID_HEADER = "x-antseed-router-peer-id";
|
|
33
|
+
export declare const ROUTER_SERVICE_HEADER = "x-antseed-router-service";
|
|
34
|
+
export declare const ROUTER_RANK_HEADER = "x-antseed-router-rank";
|
|
35
|
+
/**
|
|
36
|
+
* A seller's headers without the buyer's routing headers: only the buyer says
|
|
37
|
+
* which router ranked a request and why its seller was picked, so a seller can
|
|
38
|
+
* neither change nor invent that.
|
|
39
|
+
*/
|
|
40
|
+
export declare function withoutRouterHeaders(headers: Record<string, string>): Record<string, string>;
|
|
26
41
|
export declare function attachAntseedTelemetryHeaders(upstreamHeaders: Record<string, string>, selectedPeer: PeerInfo, telemetry: ResponseTelemetry, requestId: string, latencyMs: number): Record<string, string>;
|
|
27
42
|
/**
|
|
28
43
|
* Streamed responses carry the seller's advertised prices too (a gateway tells
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/proxy/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/proxy/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAQpE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAA;IACnB,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAA;IACxB,4DAA4D;IAC5D,iBAAiB,EAAE,MAAM,CAAA;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,GAAG,WAAW,CAAA;CAC9B,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAA;CACxC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,iBAAiB,CAAA;IACxB,OAAO,EAAE,cAAc,CAAA;IACvB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;CAChC,CAAA;AA+OD,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,qBAAqB,EAC9B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,YAAY,EAAE,UAAU,EACxB,YAAY,EAAE,QAAQ,GACrB,iBAAiB,CA6CnB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,6BAA6B,CAAA;AAC/D,eAAO,MAAM,qBAAqB,6BAA6B,CAAA;AAC/D,eAAO,MAAM,kBAAkB,0BAA0B,CAAA;AAKzD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE5F;AAED,wBAAgB,6BAA6B,CAC3C,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,YAAY,EAAE,QAAQ,EACtB,SAAS,EAAE,iBAAiB,EAC5B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBxB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,YAAY,EAAE,QAAQ,EACtB,OAAO,EAAE,qBAAqB,EAC9B,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASxB"}
|
package/dist/proxy/telemetry.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ROUTE_SELECTION_HEADER } from './route-selection.js';
|
|
1
2
|
import { extractUsage, toNonNegativeInt } from '@antseed/api-adapter';
|
|
2
3
|
import { pickProviderForPeer } from './routing.js';
|
|
3
4
|
import { extractRequestedService } from './request-utils.js';
|
|
@@ -237,8 +238,27 @@ export function computeResponseTelemetry(request, responseHeaders, responseBody,
|
|
|
237
238
|
estimatedCostUsd,
|
|
238
239
|
};
|
|
239
240
|
}
|
|
241
|
+
/**
|
|
242
|
+
* Response headers of a request a routing service ranked: the router's peer
|
|
243
|
+
* and service, and which of its recommendations (1 = its first pick) was tried
|
|
244
|
+
* last: it served the request, unless the response is the last refusal. A
|
|
245
|
+
* failed ranking carries the router's peer and service only.
|
|
246
|
+
*/
|
|
247
|
+
export const ROUTER_PEER_ID_HEADER = 'x-antseed-router-peer-id';
|
|
248
|
+
export const ROUTER_SERVICE_HEADER = 'x-antseed-router-service';
|
|
249
|
+
export const ROUTER_RANK_HEADER = 'x-antseed-router-rank';
|
|
250
|
+
/** Headers only the buyer sets: which router ranked a request, and why routing picked its seller. */
|
|
251
|
+
const BUYER_ROUTING_HEADERS = new Set([ROUTER_PEER_ID_HEADER, ROUTER_SERVICE_HEADER, ROUTER_RANK_HEADER, ROUTE_SELECTION_HEADER]);
|
|
252
|
+
/**
|
|
253
|
+
* A seller's headers without the buyer's routing headers: only the buyer says
|
|
254
|
+
* which router ranked a request and why its seller was picked, so a seller can
|
|
255
|
+
* neither change nor invent that.
|
|
256
|
+
*/
|
|
257
|
+
export function withoutRouterHeaders(headers) {
|
|
258
|
+
return Object.fromEntries(Object.entries(headers).filter(([name]) => !BUYER_ROUTING_HEADERS.has(name.toLowerCase())));
|
|
259
|
+
}
|
|
240
260
|
export function attachAntseedTelemetryHeaders(upstreamHeaders, selectedPeer, telemetry, requestId, latencyMs) {
|
|
241
|
-
const headers =
|
|
261
|
+
const headers = withoutRouterHeaders(upstreamHeaders);
|
|
242
262
|
headers['x-antseed-request-id'] = requestId;
|
|
243
263
|
headers['x-antseed-latency-ms'] = String(Math.max(0, Math.floor(latencyMs)));
|
|
244
264
|
setPeerIdentityHeaders(headers, selectedPeer);
|
|
@@ -265,12 +285,15 @@ export function attachAntseedTelemetryHeaders(upstreamHeaders, selectedPeer, tel
|
|
|
265
285
|
* a free seller by them), and the time from sending to the seller's first frame.
|
|
266
286
|
*/
|
|
267
287
|
export function attachStreamingAntseedHeaders(upstreamHeaders, selectedPeer, request, firstTokenMs) {
|
|
268
|
-
const headers =
|
|
288
|
+
const headers = withoutRouterHeaders(upstreamHeaders);
|
|
269
289
|
headers['x-antseed-request-id'] = request.requestId;
|
|
270
290
|
if (firstTokenMs !== undefined)
|
|
271
291
|
headers['x-antseed-first-token-ms'] = String(Math.max(0, Math.floor(firstTokenMs)));
|
|
272
292
|
setPeerIdentityHeaders(headers, selectedPeer);
|
|
273
|
-
|
|
293
|
+
const service = extractRequestedService(request);
|
|
294
|
+
if (service)
|
|
295
|
+
headers['x-antseed-service'] = service;
|
|
296
|
+
setPricingHeaders(headers, resolvePeerPricing(selectedPeer, pickProviderForPeer(selectedPeer, request), service));
|
|
274
297
|
return headers;
|
|
275
298
|
}
|
|
276
299
|
//# sourceMappingURL=telemetry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/proxy/telemetry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/proxy/telemetry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAE5D,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;AAoCjC,MAAM,WAAW,GAAgB;IAC/B,WAAW,EAAE,CAAC;IACd,gBAAgB,EAAE,CAAC;IACnB,iBAAiB,EAAE,CAAC;IACpB,YAAY,EAAE,CAAC;IACf,WAAW,EAAE,CAAC;CACf,CAAA;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,4EAA4E;IAC5E,wEAAwE;IACxE,0EAA0E;IAC1E,4EAA4E;IAC5E,yDAAyD;IACzD,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IAEhD,MAAM,KAAK,GAAG,KAAgC,CAAA;IAC9C,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;IAClG,IAAI,KAAK,GAAG,gBAAgB,CAC1B,KAAK,CAAC,WAAW;WACd,KAAK,CAAC,YAAY;WAClB,KAAK,CAAC,YAAY;WAClB,KAAK,CAAC,aAAa;WACnB,KAAK,CAAC,iBAAiB;WACvB,KAAK,CAAC,kBAAkB;WACxB,KAAK,CAAC,2BAA2B;WACjC,KAAK,CAAC,uBAAuB,CACjC,CAAA;IACD,IAAI,MAAM,GAAG,gBAAgB,CAC3B,KAAK,CAAC,YAAY;WACf,KAAK,CAAC,aAAa;WACnB,KAAK,CAAC,gBAAgB;WACtB,KAAK,CAAC,iBAAiB;WACvB,KAAK,CAAC,kBAAkB;WACxB,KAAK,CAAC,sBAAsB,CAChC,CAAA;IAED,wEAAwE;IACxE,0EAA0E;IAC1E,0DAA0D;IAC1D,IAAI,SAAS,CAAC,WAAW,GAAG,CAAC;QAAE,KAAK,GAAG,SAAS,CAAC,WAAW,CAAA;IAC5D,IAAI,SAAS,CAAC,YAAY,GAAG,CAAC;QAAE,MAAM,GAAG,SAAS,CAAC,YAAY,CAAA;IAE/D,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,GAAG,KAAK,CAAA;QAChB,CAAC;aAAM,IAAI,MAAM,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;YACvD,MAAM,GAAG,KAAK,GAAG,KAAK,CAAA;QACxB,CAAC;aAAM,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;YACxD,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;QACxB,CAAC;IACH,CAAC;IAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAA;IACtE,OAAO;QACL,WAAW,EAAE,KAAK;QAClB,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,iBAAiB,CAAC;QACxD,iBAAiB;QACjB,YAAY,EAAE,MAAM;QACpB,WAAW,EAAE,KAAK,GAAG,MAAM;KAC5B,CAAA;AACH,CAAC;AAED,kGAAkG;AAClG,MAAM,wBAAwB,GAAG,CAAC,CAAA;AAElC,SAAS,uBAAuB,CAAC,UAAkB,EAAE,WAAmB;IACtE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAA;IAC/F,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAA;IACjG,OAAO;QACL,WAAW;QACX,gBAAgB,EAAE,WAAW;QAC7B,iBAAiB,EAAE,CAAC;QACpB,YAAY;QACZ,WAAW,EAAE,WAAW,GAAG,YAAY;QACvC,MAAM,EAAE,WAAW;KACpB,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAgB;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,IAAI,iBAAiB,GAAG,CAAC,CAAA;IAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAC3B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,SAAQ;QAE1C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACvC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,KAAK,QAAQ;YAAE,SAAQ;QAE1D,IAAI,MAA+B,CAAA;QACnC,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAA;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,SAAQ;QACV,CAAC;QAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAClD,IAAI,WAAW,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YAChC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,CAAA;YAC5D,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;YAC/D,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,CAAA;YAC5D,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAA;QAChF,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;QAC9B,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAE,OAAmC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QACtI,IAAI,YAAY,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YACjC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,WAAW,CAAC,CAAA;YAC7D,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;YAChE,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,WAAW,CAAC,CAAA;YAC7D,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAA;QACjF,CAAC;IACH,CAAC;IAED,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,WAAW,GAAG,WAAW,GAAG,YAAY,CAAA;IAC1C,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAA;IACvD,OAAO;QACL,WAAW;QACX,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;QACnD,iBAAiB,EAAE,MAAM;QACzB,YAAY;QACZ,WAAW;KACZ,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAgB;IACtC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAA4B,CAAA;QAC1E,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC7C,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,MAAM,CAAA;QACf,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;QAC9B,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,gBAAgB,CAAE,OAAmC,CAAC,KAAK,CAAC,CAAA;YAC3E,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,MAAM,CAAA;YACf,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QAC5B,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,gBAAgB,CAAE,MAAkC,CAAC,KAAK,CAAC,CAAA;YAC1E,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,MAAM,CAAA;YACf,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAA;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,WAAW,CAAA;IACpB,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;AAC3E,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAA+B,EAC/B,IAAY,EACZ,KAAc;IAEd,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;IAC1C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,OAA+B,EAAE,YAAsB;IACrF,OAAO,CAAC,mBAAmB,CAAC,GAAG,YAAY,CAAC,MAAM,CAAA;IAClD,IAAI,YAAY,CAAC,aAAa,EAAE,CAAC;QAC/B,OAAO,CAAC,wBAAwB,CAAC,GAAG,YAAY,CAAC,aAAa,CAAA;IAChE,CAAC;IACD,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,0BAA0B,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxE,CAAC;AACH,CAAC;AAQD,SAAS,iBAAiB,CAAC,OAA+B,EAAE,OAAwB;IAClF,qBAAqB,CAAC,OAAO,EAAE,iCAAiC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC7F,qBAAqB,CAAC,OAAO,EAAE,kCAAkC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAC/F,qBAAqB,CAAC,OAAO,EAAE,wCAAwC,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAA;AAC5G,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAc,EAAE,QAAgB,EAAE,OAAsB;IAClF,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;IACxD,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAChF,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO;gBACL,kBAAkB,EAAE,oBAAoB,CAAC,cAAc,CAAC,kBAAkB,CAAC;gBAC3E,mBAAmB,EAAE,oBAAoB,CAAC,cAAc,CAAC,mBAAmB,CAAC;gBAC7E,wBAAwB,EAAE,oBAAoB,CAAC,cAAc,CAAC,wBAAwB,CAAC;aACxF,CAAA;QACH,CAAC;QACD,OAAO;YACL,kBAAkB,EAAE,oBAAoB,CAAC,eAAe,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YACrF,mBAAmB,EAAE,oBAAoB,CAAC,eAAe,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACvF,wBAAwB,EAAE,oBAAoB,CAAC,eAAe,CAAC,QAAQ,CAAC,wBAAwB,CAAC;SAClG,CAAA;IACH,CAAC;IAED,OAAO;QACL,kBAAkB,EAAE,oBAAoB,CAAC,IAAI,CAAC,yBAAyB,CAAC;QACxE,mBAAmB,EAAE,oBAAoB,CAAC,IAAI,CAAC,0BAA0B,CAAC;QAC1E,wBAAwB,EAAE,oBAAoB,CAAC,IAAI,CAAC,+BAA+B,CAAC;KACrF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAA8B,EAC9B,eAAuC,EACvC,YAAwB,EACxB,YAAsB;IAEtB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAC3D,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAA;IAChD,MAAM,OAAO,GAAG,kBAAkB,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IACnE,MAAM,WAAW,GAAG,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IAEzE,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC7D,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC;QAC7B,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAA;IAEhC,IAAI,KAAwB,CAAA;IAC5B,IAAI,aAAa,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,GAAG,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAC/C,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAA;IAC3E,CAAC;IAED,IAAI,gBAAgB,GAAkB,IAAI,CAAA;IAC1C,IACE,OAAO,CAAC,kBAAkB,KAAK,IAAI;QACnC,OAAO,CAAC,mBAAmB,KAAK,IAAI;QACpC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC3C,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAC5C,CAAC;QACD,0EAA0E;QAC1E,2CAA2C;QAC3C,MAAM,mBAAmB,GAAG,OAAO,CAAC,wBAAwB,IAAI,OAAO,CAAC,kBAAkB,CAAA;QAC1F,gBAAgB,GAAG,CACjB,KAAK,CAAC,gBAAgB,GAAG,OAAO,CAAC,kBAAkB;cACjD,KAAK,CAAC,iBAAiB,GAAG,mBAAmB;cAC7C,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,mBAAmB,CACnD,GAAG,SAAS,CAAA;IACf,CAAC;IAED,OAAO;QACL,KAAK;QACL,OAAO,EAAE;YACP,QAAQ;YACR,OAAO;YACP,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;YAC9C,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,wBAAwB,EAAE,OAAO,CAAC,wBAAwB;SAC3D;QACD,gBAAgB;KACjB,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,0BAA0B,CAAA;AAC/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,0BAA0B,CAAA;AAC/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,uBAAuB,CAAA;AAEzD,qGAAqG;AACrG,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,sBAAsB,CAAC,CAAC,CAAA;AAEjI;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAA+B;IAClE,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAA;AACvH,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,eAAuC,EACvC,YAAsB,EACtB,SAA4B,EAC5B,SAAiB,EACjB,SAAiB;IAEjB,MAAM,OAAO,GAA2B,oBAAoB,CAAC,eAAe,CAAC,CAAA;IAC7E,OAAO,CAAC,sBAAsB,CAAC,GAAG,SAAS,CAAA;IAC3C,OAAO,CAAC,sBAAsB,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAC5E,sBAAsB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;IAC7C,qBAAqB,CAAC,OAAO,EAAE,2BAA2B,EAAE,YAAY,CAAC,eAAe,CAAC,CAAA;IACzF,qBAAqB,CAAC,OAAO,EAAE,6BAA6B,EAAE,YAAY,CAAC,WAAW,CAAC,CAAA;IACvF,qBAAqB,CAAC,OAAO,EAAE,gCAAgC,EAAE,YAAY,CAAC,cAAc,CAAC,CAAA;IAC7F,OAAO,CAAC,oBAAoB,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAA;IAC1D,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAA;IAC1D,CAAC;IACD,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;IAC7C,OAAO,CAAC,wBAAwB,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAA;IAC1D,OAAO,CAAC,wBAAwB,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACvE,OAAO,CAAC,+BAA+B,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACpF,OAAO,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IACzE,OAAO,CAAC,wBAAwB,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACvE,IAAI,SAAS,CAAC,gBAAgB,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACvF,OAAO,CAAC,8BAA8B,CAAC,GAAG,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACjF,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAC3C,eAAuC,EACvC,YAAsB,EACtB,OAA8B,EAC9B,YAAqB;IAErB,MAAM,OAAO,GAA2B,oBAAoB,CAAC,eAAe,CAAC,CAAA;IAC7E,OAAO,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,SAAS,CAAA;IACnD,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,CAAC,0BAA0B,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IACnH,sBAAsB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAA;IAChD,IAAI,OAAO;QAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAA;IACnD,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,CAAC,YAAY,EAAE,mBAAmB,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;IACjH,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
|
@@ -11,6 +11,14 @@ type SendDownload = (request: SerializedHttpRequest, callbacks: RequestStreamCal
|
|
|
11
11
|
export type VideoJobStatus = 'processing' | 'failed' | 'completed' | 'unknown' | 'seller_unreachable';
|
|
12
12
|
export declare function normalizeVideoStatus(status: unknown): VideoJobStatus | null;
|
|
13
13
|
/** Streams a finished video from the seller that owns the job to the client. */
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Streams a finished video, or answers the job's status. Before an answer that
|
|
16
|
+
* ends the job (it failed, including a JSON `completed` with no video, or the
|
|
17
|
+
* seller answers 404/410: it no longer has the job), `retire` must durably
|
|
18
|
+
* retire it; that answer then carries VIDEO_JOB_RETIRED_HEADER. When the job
|
|
19
|
+
* cannot be retired, the answer is a retryable `unknown` instead, so no caller
|
|
20
|
+
* treats the job as finished while it can still be charged.
|
|
21
|
+
*/
|
|
22
|
+
export declare function downloadVideo(request: SerializedHttpRequest, response: ServerResponse, send: SendDownload, clientSignal: AbortSignal, retire?: () => Promise<boolean>): Promise<void>;
|
|
15
23
|
export {};
|
|
16
24
|
//# sourceMappingURL=video-download.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video-download.d.ts","sourceRoot":"","sources":["../../src/proxy/video-download.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,
|
|
1
|
+
{"version":3,"file":"video-download.d.ts","sourceRoot":"","sources":["../../src/proxy/video-download.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,EAAsK,KAAK,sBAAsB,EAAE,KAAK,qBAAqB,EAAE,KAAK,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAExR,KAAK,YAAY,GAAG,CAAC,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAA;AAe/I;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,oBAAoB,CAAA;AAErG,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAO3E;AAsCD,gFAAgF;AAChF;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,YAAY,EAClB,YAAY,EAAE,WAAW,EACzB,MAAM,GAAE,MAAM,OAAO,CAAC,OAAO,CAAoB,GAChD,OAAO,CAAC,IAAI,CAAC,CAiFf"}
|