@cat-factory/server 0.316.0 → 0.318.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/ContainerAgentExecutor.d.ts +24 -20
- package/dist/agents/ContainerAgentExecutor.d.ts.map +1 -1
- package/dist/agents/ContainerAgentExecutor.js +61 -113
- package/dist/agents/ContainerAgentExecutor.js.map +1 -1
- package/dist/agents/ContainerEnvironmentProbeAgent.d.ts +95 -29
- package/dist/agents/ContainerEnvironmentProbeAgent.d.ts.map +1 -1
- package/dist/agents/ContainerEnvironmentProbeAgent.js +177 -61
- package/dist/agents/ContainerEnvironmentProbeAgent.js.map +1 -1
- package/dist/agents/ModelRouter.d.ts +40 -4
- package/dist/agents/ModelRouter.d.ts.map +1 -1
- package/dist/agents/ModelRouter.js +1 -1
- package/dist/agents/ModelRouter.js.map +1 -1
- package/dist/agents/containerJobAccounting.d.ts +10 -3
- package/dist/agents/containerJobAccounting.d.ts.map +1 -1
- package/dist/agents/containerJobAccounting.js +11 -4
- package/dist/agents/containerJobAccounting.js.map +1 -1
- package/dist/agents/containerJobAuth.d.ts +146 -0
- package/dist/agents/containerJobAuth.d.ts.map +1 -0
- package/dist/agents/containerJobAuth.js +171 -0
- package/dist/agents/containerJobAuth.js.map +1 -0
- package/dist/agents/dispatchPromptContext.d.ts +30 -0
- package/dist/agents/dispatchPromptContext.d.ts.map +1 -0
- package/dist/agents/dispatchPromptContext.js +23 -0
- package/dist/agents/dispatchPromptContext.js.map +1 -0
- package/dist/agents/singleKindModel.d.ts +46 -0
- package/dist/agents/singleKindModel.d.ts.map +1 -0
- package/dist/agents/singleKindModel.js +59 -0
- package/dist/agents/singleKindModel.js.map +1 -0
- package/dist/agents/testCredentials.d.ts +25 -0
- package/dist/agents/testCredentials.d.ts.map +1 -0
- package/dist/agents/testCredentials.js +23 -0
- package/dist/agents/testCredentials.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/modules/environments/EnvironmentController.d.ts.map +1 -1
- package/dist/modules/environments/EnvironmentController.js +39 -2
- package/dist/modules/environments/EnvironmentController.js.map +1 -1
- package/dist/persistence/rpc-allowlist.d.ts.map +1 -1
- package/dist/persistence/rpc-allowlist.js +9 -0
- package/dist/persistence/rpc-allowlist.js.map +1 -1
- package/dist/runtime/keyDrift.js +1 -1
- package/dist/runtime/keyDrift.js.map +1 -1
- package/dist/runtime/platformHealth.js +4 -2
- package/dist/runtime/platformHealth.js.map +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContainerEnvironmentProbeAgent.d.ts","sourceRoot":"","sources":["../../src/agents/ContainerEnvironmentProbeAgent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ContainerEnvironmentProbeAgent.d.ts","sourceRoot":"","sources":["../../src/agents/ContainerEnvironmentProbeAgent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,qBAAqB,EACrB,6BAA6B,EAC7B,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,4BAA4B,EAC5B,wBAAwB,EAIxB,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAQ5B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,6BAA6B,CAAA;AAGpC,OAAO,KAAK,EAAE,sBAAsB,EAAmB,MAAM,sBAAsB,CAAA;AACnF,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAElF,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AA8DnF,MAAM,WAAW,0CAA0C;IACzD,iGAAiG;IACjG,gBAAgB,EAAE,sBAAsB,CAAA;IACxC,gGAAgG;IAChG,sBAAsB,EAAE,IAAI,CAAC,4BAA4B,EAAE,gBAAgB,CAAC,CAAA;IAC5E;;;;OAIG;IACH,cAAc,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAA;IACtD,kFAAkF;IAClF,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C;;;;;;;;;;OAUG;IACH,YAAY,EAAE,sBAAsB,CAAA;IACpC;;;;;;;;;OASG;IACH,IAAI,EAAE,wBAAwB,CAAA;IAC9B;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,0BAA0B,CAAA;IACvC;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,EAAE,CAAC,CAAA;IACzF;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,qBAAa,8BAA+B,YAAW,qBAAqB;IAI9D,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IAEnD,YAA6B,IAAI,EAAE,0CAA0C,EAG5E;IAED;;;;;;;;;;;OAWG;IACG,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,CAItF;IAED;;;;;;;;;;;;;;OAcG;IACG,iBAAiB,CAAC,OAAO,EAAE;QAC/B,WAAW,EAAE,MAAM,CAAA;QACnB,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,uBAAuB,CAAA;QAChC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;KAC3B,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAczC;IAEK,KAAK,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAsJ7E;IAEK,IAAI,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA2D1E;IAED;;;;;;;;;;;;;OAaG;YACW,gBAAgB;IAW9B;;;;;;;OAOG;IACH,OAAO,CAAC,SAAS;IAkBX,IAAI,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAExD;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,YAAY;IAYpB;;;OAGG;IACH,OAAO,CAAC,GAAG;IAKX;;;;;OAKG;YACW,gBAAgB;CAa/B"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { failureKindFromHarnessCause,
|
|
2
|
-
import { environmentProbeSystemPrompt, environmentProbeUserPrompt, ENVIRONMENT_PROBE_SHAPE_HINT,
|
|
3
|
-
import {
|
|
1
|
+
import { failureKindFromHarnessCause, getErrorMessage } from '@cat-factory/kernel';
|
|
2
|
+
import { environmentProbeSystemPrompt, environmentProbeUserPrompt, ENVIRONMENT_PROBE_SHAPE_HINT, } from '@cat-factory/agents';
|
|
3
|
+
import { environmentProbeAgentKind, isEnvironmentProbeReportPayload } from '@cat-factory/contracts';
|
|
4
|
+
import { ContainerJobAccounting, } from './containerJobAccounting.js';
|
|
5
|
+
import { providerOf } from './containerJobAddressing.js';
|
|
6
|
+
import { resolveTestCredentials } from './testCredentials.js';
|
|
4
7
|
import { githubRepoOrigin } from './containerAgentBody.js';
|
|
5
8
|
import { RunnerJobClient } from './RunnerJobClient.js';
|
|
6
9
|
import { logger } from '../observability/logger.js';
|
|
@@ -25,15 +28,31 @@ import { logger } from '../observability/logger.js';
|
|
|
25
28
|
// and release. A per-run container backend puts a differently-imaged job in its own container,
|
|
26
29
|
// so a poll that forgot the variant polls a container that was never started, and a release
|
|
27
30
|
// that forgot it leaves a browser container running for its full lifetime.
|
|
28
|
-
// - The MODEL is
|
|
29
|
-
//
|
|
30
|
-
//
|
|
31
|
+
// - The MODEL is resolved PER DISPATCH, by the same precedence a pipeline step's is (the frame's
|
|
32
|
+
// pin, else the workspace's model preset for this prober's kind, else the deployment's env
|
|
33
|
+
// routing), and with it the HARNESS and the credential that opens it. Read at wiring from the
|
|
34
|
+
// env routing instead, it is whatever that deployment defaults to: a workspace running
|
|
35
|
+
// everything on its Claude preset had its dry run dispatched at Qwen, which the LLM proxy then
|
|
36
|
+
// refused for having no key, and the prober's subscription was never asked for at all.
|
|
31
37
|
// - The TEST SECRETS are resolved ONCE here: the values go on the body's dedicated `testSecrets`
|
|
32
38
|
// field (the harness turns them into the agent process's environment) and the key +
|
|
33
39
|
// description pairs of that SAME list are what the prompt advertises. One resolution, so the
|
|
34
40
|
// prompt cannot name a variable the container does not carry, and the three states that
|
|
35
41
|
// resolution can END in are stated to the prober rather than collapsed into an empty list.
|
|
42
|
+
// - What the dispatch RESOLVED rides back on the handle and is persisted by the caller, and what
|
|
43
|
+
// the job SPENT is filed through the same `ContainerJobAccounting` a pipeline step's is. A
|
|
44
|
+
// subscription-routed dry run talks straight to the vendor, so the LLM proxy meters none of it:
|
|
45
|
+
// with no accounting here its whole burn was absent from `llm_call_metrics`, from the leased
|
|
46
|
+
// token's usage-aware rotation, and from the modeled quota cycle. Free and invisible, on the one
|
|
47
|
+
// flow whose own admission gate is a budget.
|
|
36
48
|
// ---------------------------------------------------------------------------
|
|
49
|
+
/**
|
|
50
|
+
* The `provider:model` label a dispatch is recorded under, spelled the same way the step path
|
|
51
|
+
* spells it (`ContainerAgentExecutor`'s `buildJobBody`), so one reader can parse either.
|
|
52
|
+
*/
|
|
53
|
+
function modelLabel(ref) {
|
|
54
|
+
return `${ref.provider}:${ref.model}`;
|
|
55
|
+
}
|
|
37
56
|
/** Which executor image each surface needs. */
|
|
38
57
|
const IMAGE_BY_SURFACE = {
|
|
39
58
|
// The plain harness image: `curl` and the repo's own runtime are all an HTTP prober needs.
|
|
@@ -44,17 +63,14 @@ const IMAGE_BY_SURFACE = {
|
|
|
44
63
|
// environment.
|
|
45
64
|
ui: 'ui',
|
|
46
65
|
};
|
|
47
|
-
/** The telemetry agent kind each surface's spend is filed under. */
|
|
48
|
-
const KIND_BY_SURFACE = {
|
|
49
|
-
api: ENVIRONMENT_PROBE_API_AGENT_KIND,
|
|
50
|
-
ui: ENVIRONMENT_PROBE_UI_AGENT_KIND,
|
|
51
|
-
};
|
|
52
66
|
export class ContainerEnvironmentProbeAgent {
|
|
53
67
|
deps;
|
|
54
68
|
jobs;
|
|
69
|
+
accounting;
|
|
55
70
|
constructor(deps) {
|
|
56
71
|
this.deps = deps;
|
|
57
72
|
this.jobs = new RunnerJobClient(deps.resolveTransport);
|
|
73
|
+
this.accounting = new ContainerJobAccounting(deps.accounting ?? {});
|
|
58
74
|
}
|
|
59
75
|
/**
|
|
60
76
|
* Whether the workspace's resolved runner backend can serve this surface's executor image.
|
|
@@ -74,6 +90,37 @@ export class ContainerEnvironmentProbeAgent {
|
|
|
74
90
|
return false;
|
|
75
91
|
return transport.supportsImage?.(IMAGE_BY_SURFACE[surface]) ?? true;
|
|
76
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Whether the model this frame's dry run resolves to can actually be dispatched, run at ADMISSION
|
|
95
|
+
* over the same two steps `start` takes: resolve the model (which refuses a provider the LLM proxy
|
|
96
|
+
* cannot serve), then ask the auth resolver whether the harness that model names has a credential
|
|
97
|
+
* to open it.
|
|
98
|
+
*
|
|
99
|
+
* Asked here rather than left to the dispatch because both answers are already knowable, and
|
|
100
|
+
* neither is knowable cheaply later: reached from inside `stage.dispatch`, each one fails the run
|
|
101
|
+
* at `probing` after a throwaway branch, a full provision and a teardown, to report something the
|
|
102
|
+
* workspace's own preset said before anything was created.
|
|
103
|
+
*
|
|
104
|
+
* A resolution that THROWS is the refusal, carried verbatim: `resolveDispatchRef`'s message
|
|
105
|
+
* already names the fix (pick a Workers AI model, configure a provider key, add a local runner),
|
|
106
|
+
* and re-wording it here would hand the operator two spellings of one problem.
|
|
107
|
+
*/
|
|
108
|
+
async checkDispatchable(subject) {
|
|
109
|
+
let resolved;
|
|
110
|
+
try {
|
|
111
|
+
resolved = await this.resolveModel(subject, subject.surface);
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
return { ok: false, detail: getErrorMessage(error) };
|
|
115
|
+
}
|
|
116
|
+
const gap = await this.deps.auth.describeAuthGap({
|
|
117
|
+
harness: resolved.harness,
|
|
118
|
+
subscriptionVendor: resolved.subscriptionVendor,
|
|
119
|
+
workspaceId: subject.workspaceId,
|
|
120
|
+
...(subject.initiatedBy ? { initiatedByUserId: subject.initiatedBy } : {}),
|
|
121
|
+
});
|
|
122
|
+
return gap ? { ok: false, detail: gap } : { ok: true, model: modelLabel(resolved.ref) };
|
|
123
|
+
}
|
|
77
124
|
async start(request) {
|
|
78
125
|
const { workspaceId, jobId, surface, repo, environment } = request;
|
|
79
126
|
const log = logger.child({
|
|
@@ -87,18 +134,36 @@ export class ContainerEnvironmentProbeAgent {
|
|
|
87
134
|
throw new Error(`Workspace '${workspaceId}' is not connected to a source-control provider, so the ` +
|
|
88
135
|
'agent dry run has no repository to read.');
|
|
89
136
|
}
|
|
90
|
-
const model = this.deps.models[surface];
|
|
91
|
-
if (!isProxyableProvider(model.provider)) {
|
|
92
|
-
throw new Error(`An agent dry run needs a model the LLM proxy can serve (Workers AI, or a direct ` +
|
|
93
|
-
`OpenAI-compatible provider); the '${surface}' prober is routed to ` +
|
|
94
|
-
`'${model.provider}', which is not supported.`);
|
|
95
|
-
}
|
|
96
137
|
if (!environment.url) {
|
|
97
138
|
throw new Error('The environment exposed no URL, so there is nothing for an agent to drive.');
|
|
98
139
|
}
|
|
140
|
+
const agentKind = environmentProbeAgentKind(surface);
|
|
141
|
+
// The model this dispatch runs, then the credential that opens it. Both per dispatch, and in
|
|
142
|
+
// this order: the harness the model names decides which auth channel there is to resolve.
|
|
143
|
+
const { ref, harness, subscriptionVendor } = await this.resolveModel(request, surface);
|
|
144
|
+
const { auth, subscriptionTokenId } = await this.deps.auth.resolve({
|
|
145
|
+
harness,
|
|
146
|
+
ref,
|
|
147
|
+
subscriptionVendor,
|
|
148
|
+
workspaceId,
|
|
149
|
+
// The self-test run IS this flow's run, so its id is what the container's calls are metered
|
|
150
|
+
// under, and (for an individual-usage vendor) the id the initiator's credential activation
|
|
151
|
+
// was minted against by the start gate.
|
|
152
|
+
executionId: jobId,
|
|
153
|
+
agentKind,
|
|
154
|
+
...(request.initiatedBy ? { initiatedByUserId: request.initiatedBy } : {}),
|
|
155
|
+
});
|
|
99
156
|
// ONE resolution, two consumers: the values become the container's environment variables and
|
|
100
157
|
// the keys + descriptions of the same list are what the prompt advertises. See the class note.
|
|
101
|
-
|
|
158
|
+
// The SAME resolution the tester step's dispatch uses: one read, two projections (the values
|
|
159
|
+
// for the container, the state for the prompt). Shared because a dry run's claim is that it
|
|
160
|
+
// predicts what a tester will be handed, which it cannot do from a different read.
|
|
161
|
+
const secrets = await resolveTestCredentials({
|
|
162
|
+
...(this.deps.resolveTestSecrets ? { resolve: this.deps.resolveTestSecrets } : {}),
|
|
163
|
+
workspaceId,
|
|
164
|
+
blockId: request.blockId,
|
|
165
|
+
logger: log,
|
|
166
|
+
});
|
|
102
167
|
const repoIds = await this.resolveRepoScope(workspaceId, repo.owner, repo.name);
|
|
103
168
|
const ghToken = await this.deps.mintInstallationToken(installation.installationId, {
|
|
104
169
|
executionId: jobId,
|
|
@@ -106,14 +171,6 @@ export class ContainerEnvironmentProbeAgent {
|
|
|
106
171
|
repoIds,
|
|
107
172
|
...(request.initiatedBy ? { initiatedBy: request.initiatedBy } : {}),
|
|
108
173
|
});
|
|
109
|
-
const agentKind = KIND_BY_SURFACE[surface];
|
|
110
|
-
const sessionToken = await this.deps.sessionService.mint({
|
|
111
|
-
workspaceId,
|
|
112
|
-
executionId: jobId,
|
|
113
|
-
agentKind,
|
|
114
|
-
provider: model.provider,
|
|
115
|
-
model: model.model,
|
|
116
|
-
});
|
|
117
174
|
const origin = (this.deps.resolveRepoOrigin ?? githubRepoOrigin)({
|
|
118
175
|
installationId: installation.installationId,
|
|
119
176
|
repoId: repoIds[0] ?? '',
|
|
@@ -143,10 +200,10 @@ export class ContainerEnvironmentProbeAgent {
|
|
|
143
200
|
...(repo.serviceDirectory ? { serviceDirectory: repo.serviceDirectory } : {}),
|
|
144
201
|
},
|
|
145
202
|
}),
|
|
146
|
-
model:
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
203
|
+
model: ref.model,
|
|
204
|
+
// The resolved auth channel, spread exactly as a pipeline step's body spreads it, so the
|
|
205
|
+
// harness cannot tell a dry run's dispatch from a step's by how it was authenticated.
|
|
206
|
+
...auth,
|
|
150
207
|
ghToken,
|
|
151
208
|
repo: {
|
|
152
209
|
owner: repo.owner,
|
|
@@ -192,13 +249,32 @@ export class ContainerEnvironmentProbeAgent {
|
|
|
192
249
|
],
|
|
193
250
|
});
|
|
194
251
|
log.info('environment dry run: container accepted job');
|
|
195
|
-
return {
|
|
252
|
+
return {
|
|
253
|
+
workspaceId,
|
|
254
|
+
jobId,
|
|
255
|
+
surface,
|
|
256
|
+
blockId: request.blockId,
|
|
257
|
+
initiatedBy: request.initiatedBy,
|
|
258
|
+
// What only THIS moment knows, handed back for the caller to persist: see
|
|
259
|
+
// `EnvironmentProbeDispatch`. The leased pooled token id in particular has no second source,
|
|
260
|
+
// and it is the row the settled job's tokens are attributed back to.
|
|
261
|
+
dispatch: {
|
|
262
|
+
model: modelLabel(ref),
|
|
263
|
+
...(subscriptionTokenId ? { subscriptionTokenId } : {}),
|
|
264
|
+
...(subscriptionVendor ? { subscriptionVendor } : {}),
|
|
265
|
+
},
|
|
266
|
+
};
|
|
196
267
|
}
|
|
197
268
|
async poll(handle) {
|
|
198
269
|
const view = await this.jobs.poll(handle.workspaceId, this.ref(handle.jobId, handle.surface));
|
|
270
|
+
// What the job has SPENT, filed on every poll and on every terminal state alike, exactly as the
|
|
271
|
+
// step path files it. See `settleAccounting` for why the failed branches below are not
|
|
272
|
+
// shortcuts past it.
|
|
273
|
+
await this.accounting.recordCalls(this.jobHandle(handle), view.callMetrics);
|
|
199
274
|
if (view.state === 'running') {
|
|
200
275
|
return view.progress ? { state: 'running', subtasks: view.progress } : { state: 'running' };
|
|
201
276
|
}
|
|
277
|
+
await this.settleAccounting(handle, view);
|
|
202
278
|
if (view.state === 'failed') {
|
|
203
279
|
return {
|
|
204
280
|
state: 'failed',
|
|
@@ -236,16 +312,84 @@ export class ContainerEnvironmentProbeAgent {
|
|
|
236
312
|
'established about the environment.',
|
|
237
313
|
};
|
|
238
314
|
}
|
|
239
|
-
|
|
315
|
+
// The model the container RAN, as the dispatch recorded it and the caller handed it back: never
|
|
316
|
+
// re-resolved here. A fresh poll process asking the frame and the preset again would answer
|
|
317
|
+
// about them as they are NOW, so a pin cleared while the container worked stamps the report
|
|
318
|
+
// with a model nobody ran, which is the one label an operator weighs the verdict by. Absent is
|
|
319
|
+
// a state the report already documents ("absent when the dispatch did not say"), so a handle
|
|
320
|
+
// that carries none leaves the field off rather than guessing at one.
|
|
240
321
|
return {
|
|
241
322
|
state: 'done',
|
|
242
323
|
report: result.custom,
|
|
243
|
-
model
|
|
324
|
+
...(handle.dispatch?.model ? { model: handle.dispatch.model } : {}),
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Everything a SETTLED job owes the ledger, run once the poll knows the job is terminal and
|
|
329
|
+
* BEFORE any of the failure branches return.
|
|
330
|
+
*
|
|
331
|
+
* Before them deliberately: a dry run that spent tokens and then failed (an evicted container, a
|
|
332
|
+
* reply with no JSON) is exactly the run an operator most needs the spend for, and it is the one
|
|
333
|
+
* whose numbers a `return` above this line would drop. The three writes are the step path's own,
|
|
334
|
+
* each idempotent per job id, so the durable driver's replay of a terminal poll cannot
|
|
335
|
+
* double-count.
|
|
336
|
+
*
|
|
337
|
+
* A Pi job reports none of this: the LLM proxy is its single metering point and files its rows
|
|
338
|
+
* itself, so every call here is a no-op for it and the whole method exists for the subscription
|
|
339
|
+
* harnesses, which talk to the vendor direct and are metered nowhere else.
|
|
340
|
+
*/
|
|
341
|
+
async settleAccounting(handle, view) {
|
|
342
|
+
const job = this.jobHandle(handle);
|
|
343
|
+
const result = view.result ?? {};
|
|
344
|
+
await this.accounting.recordCallsOnce(job, result);
|
|
345
|
+
await this.accounting.recordPooledUsageOnce(job, result);
|
|
346
|
+
await this.accounting.recordQuotaUsageOnce(job, result);
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* The dry run's handle as the shared accounting reads one.
|
|
350
|
+
*
|
|
351
|
+
* A self-test is a SINGLE-JOB flow, so the run and the job are one row and `runId` is the job id
|
|
352
|
+
* (which is what makes the recorded rows join to the self-test run the SPA renders). The model,
|
|
353
|
+
* the leased token and the initiator all come off the persisted dispatch attribution rather than
|
|
354
|
+
* being re-derived, for the reason `EnvironmentProbeDispatch` states.
|
|
355
|
+
*/
|
|
356
|
+
jobHandle(handle) {
|
|
357
|
+
const model = handle.dispatch?.model;
|
|
358
|
+
return {
|
|
359
|
+
jobId: handle.jobId,
|
|
360
|
+
runId: handle.jobId,
|
|
361
|
+
workspaceId: handle.workspaceId,
|
|
362
|
+
agentKind: environmentProbeAgentKind(handle.surface),
|
|
363
|
+
...(model ? { model, provider: providerOf(model) } : {}),
|
|
364
|
+
...(handle.dispatch?.subscriptionTokenId
|
|
365
|
+
? { subscriptionTokenId: handle.dispatch.subscriptionTokenId }
|
|
366
|
+
: {}),
|
|
367
|
+
...(handle.dispatch?.subscriptionVendor
|
|
368
|
+
? { subscriptionVendor: handle.dispatch.subscriptionVendor }
|
|
369
|
+
: {}),
|
|
370
|
+
...(handle.initiatedBy ? { initiatedByUserId: handle.initiatedBy } : {}),
|
|
244
371
|
};
|
|
245
372
|
}
|
|
246
373
|
async stop(handle) {
|
|
247
374
|
await this.jobs.release(handle.workspaceId, this.ref(handle.jobId, handle.surface));
|
|
248
375
|
}
|
|
376
|
+
/**
|
|
377
|
+
* The model + harness + vendor this surface's prober runs on, asked under the prober's OWN agent
|
|
378
|
+
* kind.
|
|
379
|
+
*
|
|
380
|
+
* Its own kind rather than the tester's, which is what {@link environmentProbeAgentKind}
|
|
381
|
+
* documents: a workspace routes its probers by editing the preset entry named after them, and
|
|
382
|
+
* the START gate resolves an individual-usage vendor for that same kind. Borrowing `tester-api`
|
|
383
|
+
* here would put the gate and the dispatch on two different questions.
|
|
384
|
+
*/
|
|
385
|
+
resolveModel(subject, surface) {
|
|
386
|
+
return this.deps.resolveModel({
|
|
387
|
+
workspaceId: subject.workspaceId,
|
|
388
|
+
blockId: subject.blockId,
|
|
389
|
+
agentKind: environmentProbeAgentKind(surface),
|
|
390
|
+
...(subject.initiatedBy ? { initiatedByUserId: subject.initiatedBy } : {}),
|
|
391
|
+
});
|
|
392
|
+
}
|
|
249
393
|
/**
|
|
250
394
|
* The job's address. The IMAGE is part of it on every call, not only the dispatch: see the
|
|
251
395
|
* class note on why a poll or release that drops it addresses the wrong container.
|
|
@@ -254,34 +398,6 @@ export class ContainerEnvironmentProbeAgent {
|
|
|
254
398
|
const image = IMAGE_BY_SURFACE[surface];
|
|
255
399
|
return { runId: jobId, jobId, ...(image ? { image } : {}) };
|
|
256
400
|
}
|
|
257
|
-
/**
|
|
258
|
-
* The service frame's sealed test credentials, as the two projections this dispatch needs: the
|
|
259
|
-
* values for the container, and a BRIEF the prompt states out loud.
|
|
260
|
-
*
|
|
261
|
-
* Best-effort in the sense that a store that will not open still runs the dry run WITHOUT
|
|
262
|
-
* credentials, because an operator learns more from a report naming what was missing than from a
|
|
263
|
-
* stage that refused to run. It is NOT best-effort in what it SAYS: `runBestEffort` returning
|
|
264
|
-
* `undefined` is an OUTAGE, and folding that into the same empty list as "this service has none
|
|
265
|
-
* configured" makes the prober file the platform's failure as a board-configuration gap and send
|
|
266
|
-
* someone to re-enter secrets that are already there. The brief keeps the three states apart;
|
|
267
|
-
* the warn still carries the cause.
|
|
268
|
-
*/
|
|
269
|
-
async resolveSecrets(workspaceId, blockId, log) {
|
|
270
|
-
const resolve = this.deps.resolveTestSecrets;
|
|
271
|
-
if (!resolve)
|
|
272
|
-
return { env: [], brief: { status: 'unwired' } };
|
|
273
|
-
const entries = await runBestEffort(log, 'resolve dry-run test secrets', () => resolve(workspaceId, blockId));
|
|
274
|
-
if (!entries)
|
|
275
|
-
return { env: [], brief: { status: 'unreadable' } };
|
|
276
|
-
const refs = entries.map((entry) => ({
|
|
277
|
-
key: entry.key,
|
|
278
|
-
description: entry.description,
|
|
279
|
-
}));
|
|
280
|
-
return {
|
|
281
|
-
env: entries.map((entry) => ({ key: entry.key, value: entry.value })),
|
|
282
|
-
brief: { status: 'resolved', refs },
|
|
283
|
-
};
|
|
284
|
-
}
|
|
285
401
|
/**
|
|
286
402
|
* The repo the prober's token may reach, as the neutral id the mint's scope speaks in. An empty
|
|
287
403
|
* result is returned rather than thrown, for the reason the repairer states: a projection
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContainerEnvironmentProbeAgent.js","sourceRoot":"","sources":["../../src/agents/ContainerEnvironmentProbeAgent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ContainerEnvironmentProbeAgent.js","sourceRoot":"","sources":["../../src/agents/ContainerEnvironmentProbeAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,42 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LocalModelDeclarations, ModelFlavor, ModelRef, SubscriptionVendor } from '@cat-factory/kernel';
|
|
2
2
|
import type { HarnessKind } from '@cat-factory/kernel';
|
|
3
3
|
import { type AgentRouting } from '@cat-factory/agents';
|
|
4
|
+
/**
|
|
5
|
+
* Everything the router reads to pick a model: the agent kind, the workspace, whatever the block
|
|
6
|
+
* pins, and who started the work.
|
|
7
|
+
*
|
|
8
|
+
* A structural SUBSET of {@link import('@cat-factory/kernel').AgentRunContext}, which is what the
|
|
9
|
+
* pipeline path still passes. The point is the caller that has no run context to pass: the AGENT
|
|
10
|
+
* DRY RUN's prober is not an `ExecutionInstance`: it has a workspace, a frame and an initiator, and
|
|
11
|
+
* nothing else the run context describes. Asking it for a whole `AgentRunContext` would have it
|
|
12
|
+
* fabricate a pipeline name, a step index and a final-step flag, and a fabricated run context is a
|
|
13
|
+
* thing later code reads as one. Taking the subset instead is what lets that dispatch resolve its
|
|
14
|
+
* model through THIS precedence rather than reaching for the deployment's env routing directly,
|
|
15
|
+
* which is a model nobody's preset chose.
|
|
16
|
+
*
|
|
17
|
+
* The two OTHER single-job container flows still read the env routing at WIRING and do not come
|
|
18
|
+
* through here: the env-config repairer pins `coder`'s routed ref (and disables itself when it is
|
|
19
|
+
* not proxyable), and the repo bootstrapper pins `architect`'s. Neither has a frame to resolve
|
|
20
|
+
* against (`EnvConfigRepairRequest` and a bootstrap both name a REPOSITORY, and a bootstrap runs
|
|
21
|
+
* before the board has a service block at all), so giving them this precedence is a change to their
|
|
22
|
+
* ports, not a change here.
|
|
23
|
+
*/
|
|
24
|
+
export interface StepModelSelection {
|
|
25
|
+
agentKind: string;
|
|
26
|
+
/** Absent ⇒ no workspace defaults are consulted and the env routing decides. */
|
|
27
|
+
workspaceId?: string;
|
|
28
|
+
/** Whoever started the work: whose personal (individual-usage) subscription may be leased. */
|
|
29
|
+
initiatedByUserId?: string;
|
|
30
|
+
/** The route order the preset in force states; absent ⇒ the deployment's default order. */
|
|
31
|
+
providerPreference?: readonly ModelFlavor[];
|
|
32
|
+
/** The initiator's local-runner declarations, folded onto the resolved ref. */
|
|
33
|
+
localModelDeclarations?: readonly LocalModelDeclarations[];
|
|
34
|
+
/** What the block itself pins, if anything. `{}` for a caller whose subject pins nothing. */
|
|
35
|
+
block: {
|
|
36
|
+
modelId?: string;
|
|
37
|
+
modelPresetId?: string;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
4
40
|
/** The collaborators {@link ModelRouter} needs to resolve a step's model + subscription path. */
|
|
5
41
|
export interface ModelRouterDependencies {
|
|
6
42
|
/** Default model routing; used when the block pins no (usable) model. */
|
|
@@ -43,7 +79,7 @@ export declare class ModelRouter {
|
|
|
43
79
|
* workspace per-kind default > env routing). Side-effect-free and dispatch-free,
|
|
44
80
|
* so it backs both the up-front `resolveModel` preview and `buildJobBody`.
|
|
45
81
|
*/
|
|
46
|
-
resolveRef(context:
|
|
82
|
+
resolveRef(context: StepModelSelection): Promise<ModelRef>;
|
|
47
83
|
/**
|
|
48
84
|
* The canonical catalog model id the step resolves to (block pin > workspace
|
|
49
85
|
* per-kind default), or undefined when it falls through to the env routing
|
|
@@ -62,7 +98,7 @@ export declare class ModelRouter {
|
|
|
62
98
|
* base. So a subscriber runs GLM on their plan while a non-subscriber on the same
|
|
63
99
|
* workspace falls back to Cloudflare GLM.
|
|
64
100
|
*/
|
|
65
|
-
resolveEffectiveRef(context:
|
|
101
|
+
resolveEffectiveRef(context: StepModelSelection, workspaceId: string): Promise<{
|
|
66
102
|
ref: ModelRef;
|
|
67
103
|
subscriptionVendor?: SubscriptionVendor;
|
|
68
104
|
}>;
|
|
@@ -78,7 +114,7 @@ export declare class ModelRouter {
|
|
|
78
114
|
* harnesses (Claude Code / Codex) talk direct to the vendor with a pooled token, so the
|
|
79
115
|
* proxyable guard does not apply to them.
|
|
80
116
|
*/
|
|
81
|
-
resolveDispatchRef(context:
|
|
117
|
+
resolveDispatchRef(context: StepModelSelection, workspaceId: string): Promise<{
|
|
82
118
|
ref: ModelRef;
|
|
83
119
|
harness: HarnessKind;
|
|
84
120
|
subscriptionVendor?: SubscriptionVendor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelRouter.d.ts","sourceRoot":"","sources":["../../src/agents/ModelRouter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"ModelRouter.d.ts","sourceRoot":"","sources":["../../src/agents/ModelRouter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,WAAW,EACX,QAAQ,EACR,kBAAkB,EACnB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,OAAO,EAAE,KAAK,YAAY,EAA4C,MAAM,qBAAqB,CAAA;AAEjG;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8FAA8F;IAC9F,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,2FAA2F;IAC3F,kBAAkB,CAAC,EAAE,SAAS,WAAW,EAAE,CAAA;IAC3C,+EAA+E;IAC/E,sBAAsB,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAA;IAC1D,6FAA6F;IAC7F,KAAK,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACpD;AAED,iGAAiG;AACjG,MAAM,WAAW,uBAAuB;IACtC,yEAAyE;IACzE,YAAY,EAAE,YAAY,CAAA;IAC1B,2FAA2F;IAC3F,iBAAiB,EAAE,CACjB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,kBAAkB,CAAC,EAAE,SAAS,WAAW,EAAE,KACxC,QAAQ,GAAG,SAAS,CAAA;IACzB;;;OAGG;IACH,4BAA4B,CAAC,EAAE,CAC7B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,KACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAChC;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC5F;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC3F;AAED;;;;;;GAMG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,uBAAuB,EAAI;IAE9D;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC,CA4BzD;IAED;;;;;OAKG;YACW,uBAAuB;IAcrC;;;;;;;;;;OAUG;IACG,mBAAmB,CACvB,OAAO,EAAE,kBAAkB,EAC3B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;QAAE,GAAG,EAAE,QAAQ,CAAC;QAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;KAAE,CAAC,CA2BrE;IAED;;;;;;;;;;;OAWG;IACG,kBAAkB,CACtB,OAAO,EAAE,kBAAkB,EAC3B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;QAAE,GAAG,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,WAAW,CAAC;QAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;KAAE,CAAC,CAa3F;CACF"}
|
|
@@ -110,7 +110,7 @@ export class ModelRouter {
|
|
|
110
110
|
const { ref, subscriptionVendor } = await this.resolveEffectiveRef(context, workspaceId);
|
|
111
111
|
const harness = ref.harness ?? 'pi';
|
|
112
112
|
if (harness === 'pi' && !isProxyableProvider(ref.provider)) {
|
|
113
|
-
throw new Error(`
|
|
113
|
+
throw new Error(`A container dispatch needs a model the LLM proxy can serve ` +
|
|
114
114
|
`(Workers AI, a direct OpenAI-compatible provider, or a local runner); ` +
|
|
115
115
|
`'${ref.provider}' is not supported. Pick a Workers AI model, configure a ` +
|
|
116
116
|
`provider key (QWEN_API_KEY / DEEPSEEK_API_KEY / MOONSHOT_API_KEY), or add a local ` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelRouter.js","sourceRoot":"","sources":["../../src/agents/ModelRouter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC/E,OAAO,EAAqB,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"ModelRouter.js","sourceRoot":"","sources":["../../src/agents/ModelRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -104,9 +104,16 @@ export declare class ContainerJobAccounting {
|
|
|
104
104
|
/**
|
|
105
105
|
* Fold the SAME subscription usage into the modeled quota-cycle counters (Part B), for
|
|
106
106
|
* BOTH pooled and personal runs. A subscription run is the one reporting per-call
|
|
107
|
-
* metrics (Pi is proxy-metered and has none)
|
|
108
|
-
*
|
|
109
|
-
*
|
|
107
|
+
* metrics (Pi is proxy-metered and has none). Scope = the leased pool token when present,
|
|
108
|
+
* else the run initiator (personal). Best-effort, once per job id so a replayed poll can't
|
|
109
|
+
* double-count.
|
|
110
|
+
*
|
|
111
|
+
* Keyed on the VENDOR the dispatch resolved, and only then on the provider parsed off the
|
|
112
|
+
* model. The two differ for four of the five vendors (`claude`⇄`anthropic`, `codex`⇄`openai`,
|
|
113
|
+
* `glm`⇄`zai`, `kimi`⇄`moonshot`), so a fold that took the provider alone matched DeepSeek and
|
|
114
|
+
* silently counted nothing for the rest: a quota cycle that reported zero for the vendors the
|
|
115
|
+
* feature exists to track. The provider stays as the fallback, so a handle minted before the
|
|
116
|
+
* dispatch carried a vendor still folds exactly as it used to.
|
|
110
117
|
*/
|
|
111
118
|
recordQuotaUsageOnce(handle: AgentJobHandle, result: RunnerJobResult): Promise<void>;
|
|
112
119
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containerJobAccounting.d.ts","sourceRoot":"","sources":["../../src/agents/containerJobAccounting.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAE7B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAoBzE,wFAAwF;AACxF,MAAM,WAAW,0BAA0B;IACzC,0FAA0F;IAC1F,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtE,uEAAuE;IACvE,uBAAuB,CAAC,EAAE,CACxB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,KACjD,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,mFAAmF;IACnF,4BAA4B,CAAC,EAAE,CAC7B,MAAM,EAAE,uBAAuB,EAC/B,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,KACjD,OAAO,CAAC,IAAI,CAAC,CAAA;CACnB;AAED,qBAAa,sBAAsB;IA4CrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IA3CjC;;;;;;;;;OASG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IAEtD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAoB;IAE3D;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiC;IAElE;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IAEtD,YAA6B,IAAI,EAAE,0BAA0B,EAAI;IAEjE;;;;;;;;;;;;;;OAcG;IACG,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB/F;IAED;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;;;;;;;;;;OAWG;IACG,eAAe,CACnB,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE;QAAE,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAA;KAAE,GAC5C,OAAO,CAAC,IAAI,CAAC,CAYf;IAED;;;;;OAKG;IACG,qBAAqB,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB1F;IAED
|
|
1
|
+
{"version":3,"file":"containerJobAccounting.d.ts","sourceRoot":"","sources":["../../src/agents/containerJobAccounting.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAE7B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAoBzE,wFAAwF;AACxF,MAAM,WAAW,0BAA0B;IACzC,0FAA0F;IAC1F,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtE,uEAAuE;IACvE,uBAAuB,CAAC,EAAE,CACxB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,KACjD,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,mFAAmF;IACnF,4BAA4B,CAAC,EAAE,CAC7B,MAAM,EAAE,uBAAuB,EAC/B,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,KACjD,OAAO,CAAC,IAAI,CAAC,CAAA;CACnB;AAED,qBAAa,sBAAsB;IA4CrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IA3CjC;;;;;;;;;OASG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IAEtD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAoB;IAE3D;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiC;IAElE;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IAEtD,YAA6B,IAAI,EAAE,0BAA0B,EAAI;IAEjE;;;;;;;;;;;;;;OAcG;IACG,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB/F;IAED;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;;;;;;;;;;OAWG;IACG,eAAe,CACnB,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE;QAAE,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAA;KAAE,GAC5C,OAAO,CAAC,IAAI,CAAC,CAYf;IAED;;;;;OAKG;IACG,qBAAqB,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB1F;IAED;;;;;;;;;;;;;OAaG;IACG,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBzF;CACF"}
|
|
@@ -162,12 +162,19 @@ export class ContainerJobAccounting {
|
|
|
162
162
|
/**
|
|
163
163
|
* Fold the SAME subscription usage into the modeled quota-cycle counters (Part B), for
|
|
164
164
|
* BOTH pooled and personal runs. A subscription run is the one reporting per-call
|
|
165
|
-
* metrics (Pi is proxy-metered and has none)
|
|
166
|
-
*
|
|
167
|
-
*
|
|
165
|
+
* metrics (Pi is proxy-metered and has none). Scope = the leased pool token when present,
|
|
166
|
+
* else the run initiator (personal). Best-effort, once per job id so a replayed poll can't
|
|
167
|
+
* double-count.
|
|
168
|
+
*
|
|
169
|
+
* Keyed on the VENDOR the dispatch resolved, and only then on the provider parsed off the
|
|
170
|
+
* model. The two differ for four of the five vendors (`claude`⇄`anthropic`, `codex`⇄`openai`,
|
|
171
|
+
* `glm`⇄`zai`, `kimi`⇄`moonshot`), so a fold that took the provider alone matched DeepSeek and
|
|
172
|
+
* silently counted nothing for the rest: a quota cycle that reported zero for the vendors the
|
|
173
|
+
* feature exists to track. The provider stays as the fallback, so a handle minted before the
|
|
174
|
+
* dispatch carried a vendor still folds exactly as it used to.
|
|
168
175
|
*/
|
|
169
176
|
async recordQuotaUsageOnce(handle, result) {
|
|
170
|
-
const quotaVendor = handle.provider ?? providerOf(handle.model);
|
|
177
|
+
const quotaVendor = handle.subscriptionVendor ?? handle.provider ?? providerOf(handle.model);
|
|
171
178
|
if (result.callMetrics &&
|
|
172
179
|
result.callMetrics.length > 0 &&
|
|
173
180
|
result.usage &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containerJobAccounting.js","sourceRoot":"","sources":["../../src/agents/containerJobAccounting.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"containerJobAccounting.js","sourceRoot":"","sources":["../../src/agents/containerJobAccounting.ts"],"names":[],"mappings":"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"}
|