@e2edev/e2e 0.2.0 → 0.4.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/README.md +32 -3
- package/dist/agent/act.d.ts.map +1 -1
- package/dist/agent/act.js +124 -71
- package/dist/agent/act.js.map +1 -1
- package/dist/agent/actions.d.ts +15 -0
- package/dist/agent/actions.d.ts.map +1 -1
- package/dist/agent/actions.js +59 -1
- package/dist/agent/actions.js.map +1 -1
- package/dist/agent/default-agent.d.ts +34 -4
- package/dist/agent/default-agent.d.ts.map +1 -1
- package/dist/agent/default-agent.js +28 -150
- package/dist/agent/default-agent.js.map +1 -1
- package/dist/agent/derived.d.ts +17 -0
- package/dist/agent/derived.d.ts.map +1 -0
- package/dist/agent/derived.js +45 -0
- package/dist/agent/derived.js.map +1 -0
- package/dist/agent/executor.d.ts +122 -2
- package/dist/agent/executor.d.ts.map +1 -1
- package/dist/agent/executor.js.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/invocation.d.ts +4 -8
- package/dist/agent/invocation.d.ts.map +1 -1
- package/dist/agent/invocation.js +16 -42
- package/dist/agent/invocation.js.map +1 -1
- package/dist/agent/ledger.d.ts +14 -4
- package/dist/agent/ledger.d.ts.map +1 -1
- package/dist/agent/ledger.js +26 -5
- package/dist/agent/ledger.js.map +1 -1
- package/dist/agent/loop-guards.d.ts +14 -1
- package/dist/agent/loop-guards.d.ts.map +1 -1
- package/dist/agent/loop-guards.js +11 -8
- package/dist/agent/loop-guards.js.map +1 -1
- package/dist/agent/observation.d.ts +28 -7
- package/dist/agent/observation.d.ts.map +1 -1
- package/dist/agent/observation.js +52 -5
- package/dist/agent/observation.js.map +1 -1
- package/dist/agent/primitives.d.ts +86 -0
- package/dist/agent/primitives.d.ts.map +1 -0
- package/dist/agent/primitives.js +255 -0
- package/dist/agent/primitives.js.map +1 -0
- package/dist/agent/prompts.d.ts.map +1 -1
- package/dist/agent/prompts.js.map +1 -1
- package/dist/agent/public.d.ts +6 -3
- package/dist/agent/public.d.ts.map +1 -1
- package/dist/agent/public.js +4 -2
- package/dist/agent/public.js.map +1 -1
- package/dist/agent/replay.d.ts +1 -1
- package/dist/agent/replay.d.ts.map +1 -1
- package/dist/agent/replay.js +19 -2
- package/dist/agent/replay.js.map +1 -1
- package/dist/agent/step-cache.d.ts +5 -2
- package/dist/agent/step-cache.d.ts.map +1 -1
- package/dist/agent/step-cache.js +37 -5
- package/dist/agent/step-cache.js.map +1 -1
- package/dist/agent/tool-loop.d.ts +59 -5
- package/dist/agent/tool-loop.d.ts.map +1 -1
- package/dist/agent/tool-loop.js +77 -105
- package/dist/agent/tool-loop.js.map +1 -1
- package/dist/agent/tool.d.ts +11 -16
- package/dist/agent/tool.d.ts.map +1 -1
- package/dist/agent/tool.js +19 -13
- package/dist/agent/tool.js.map +1 -1
- package/dist/agent/usage.d.ts +27 -0
- package/dist/agent/usage.d.ts.map +1 -0
- package/dist/agent/usage.js +54 -0
- package/dist/agent/usage.js.map +1 -0
- package/dist/backend/index.d.ts +72 -6
- package/dist/backend/index.d.ts.map +1 -1
- package/dist/backend/index.js +4 -1
- package/dist/backend/index.js.map +1 -1
- package/dist/backend/session.d.ts.map +1 -1
- package/dist/backend/session.js +1 -0
- package/dist/backend/session.js.map +1 -1
- package/dist/backend/surface.d.ts +2 -0
- package/dist/backend/surface.d.ts.map +1 -1
- package/dist/backend/timing.d.ts +3 -0
- package/dist/backend/timing.d.ts.map +1 -0
- package/dist/backend/timing.js +8 -0
- package/dist/backend/timing.js.map +1 -0
- package/dist/cache/recorder.d.ts +2 -0
- package/dist/cache/recorder.d.ts.map +1 -1
- package/dist/cache/recorder.js +4 -1
- package/dist/cache/recorder.js.map +1 -1
- package/dist/cache/relocate.d.ts.map +1 -1
- package/dist/cache/relocate.js +11 -2
- package/dist/cache/relocate.js.map +1 -1
- package/dist/cache/trace.d.ts +11 -0
- package/dist/cache/trace.d.ts.map +1 -1
- package/dist/cache/trace.js +9 -0
- package/dist/cache/trace.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +32 -22
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/backends.d.ts +75 -0
- package/dist/cli/init/backends.d.ts.map +1 -0
- package/dist/cli/init/backends.js +98 -0
- package/dist/cli/init/backends.js.map +1 -0
- package/dist/cli/init/package.d.ts +43 -0
- package/dist/cli/init/package.d.ts.map +1 -0
- package/dist/cli/init/package.js +64 -0
- package/dist/cli/init/package.js.map +1 -0
- package/dist/cli/init/scaffold.d.ts +12 -0
- package/dist/cli/init/scaffold.d.ts.map +1 -0
- package/dist/cli/init/scaffold.js +36 -0
- package/dist/cli/init/scaffold.js.map +1 -0
- package/dist/cli/init.d.ts +8 -3
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +99 -72
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/signals.d.ts +23 -0
- package/dist/cli/signals.d.ts.map +1 -0
- package/dist/cli/signals.js +42 -0
- package/dist/cli/signals.js.map +1 -0
- package/dist/collect/registry.d.ts +14 -4
- package/dist/collect/registry.d.ts.map +1 -1
- package/dist/collect/registry.js +10 -10
- package/dist/collect/registry.js.map +1 -1
- package/dist/config/app.d.ts +50 -0
- package/dist/config/app.d.ts.map +1 -0
- package/dist/config/app.js +168 -0
- package/dist/config/app.js.map +1 -0
- package/dist/config/esm.d.ts +4 -0
- package/dist/config/esm.d.ts.map +1 -0
- package/dist/config/esm.js +35 -0
- package/dist/config/esm.js.map +1 -0
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +4 -0
- package/dist/config/load.js.map +1 -1
- package/dist/config/resolve.d.ts +6 -16
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +18 -110
- package/dist/config/resolve.js.map +1 -1
- package/dist/config/validate.d.ts +3 -1
- package/dist/config/validate.d.ts.map +1 -1
- package/dist/config/validate.js +17 -1
- package/dist/config/validate.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/errors.d.ts +9 -0
- package/dist/internal/errors.d.ts.map +1 -1
- package/dist/internal/errors.js +15 -0
- package/dist/internal/errors.js.map +1 -1
- package/dist/internal/time.d.ts +10 -0
- package/dist/internal/time.d.ts.map +1 -1
- package/dist/internal/time.js +45 -0
- package/dist/internal/time.js.map +1 -1
- package/dist/internal/urls.d.ts +2 -1
- package/dist/internal/urls.d.ts.map +1 -1
- package/dist/internal/urls.js +22 -2
- package/dist/internal/urls.js.map +1 -1
- package/dist/locator/engine.d.ts +5 -3
- package/dist/locator/engine.d.ts.map +1 -1
- package/dist/locator/engine.js +7 -6
- package/dist/locator/engine.js.map +1 -1
- package/dist/report/build.d.ts +0 -1
- package/dist/report/build.d.ts.map +1 -1
- package/dist/report/build.js +2 -3
- package/dist/report/build.js.map +1 -1
- package/dist/report/junit.d.ts +11 -0
- package/dist/report/junit.d.ts.map +1 -0
- package/dist/report/junit.js +202 -0
- package/dist/report/junit.js.map +1 -0
- package/dist/report/list.d.ts +2 -0
- package/dist/report/list.d.ts.map +1 -1
- package/dist/report/list.js +15 -0
- package/dist/report/list.js.map +1 -1
- package/dist/report/live-status.d.ts.map +1 -1
- package/dist/report/live-status.js +2 -1
- package/dist/report/live-status.js.map +1 -1
- package/dist/report/write.d.ts +2 -0
- package/dist/report/write.d.ts.map +1 -1
- package/dist/report/write.js +7 -3
- package/dist/report/write.js.map +1 -1
- package/dist/run/budget.d.ts +25 -0
- package/dist/run/budget.d.ts.map +1 -0
- package/dist/run/budget.js +38 -0
- package/dist/run/budget.js.map +1 -0
- package/dist/run/events.d.ts +15 -0
- package/dist/run/events.d.ts.map +1 -1
- package/dist/run/events.js.map +1 -1
- package/dist/run/execute.d.ts +8 -0
- package/dist/run/execute.d.ts.map +1 -1
- package/dist/run/execute.js +53 -8
- package/dist/run/execute.js.map +1 -1
- package/dist/run/fixture-legacy.d.ts +36 -0
- package/dist/run/fixture-legacy.d.ts.map +1 -0
- package/dist/run/fixture-legacy.js +143 -0
- package/dist/run/fixture-legacy.js.map +1 -0
- package/dist/run/fixture-recording.d.ts +15 -0
- package/dist/run/fixture-recording.d.ts.map +1 -0
- package/dist/run/fixture-recording.js +75 -0
- package/dist/run/fixture-recording.js.map +1 -0
- package/dist/run/fixtures.d.ts +6 -3
- package/dist/run/fixtures.d.ts.map +1 -1
- package/dist/run/fixtures.js +32 -166
- package/dist/run/fixtures.js.map +1 -1
- package/dist/run/in-process.d.ts.map +1 -1
- package/dist/run/in-process.js +11 -2
- package/dist/run/in-process.js.map +1 -1
- package/dist/run/managed-process.d.ts +49 -0
- package/dist/run/managed-process.d.ts.map +1 -0
- package/dist/run/managed-process.js +202 -0
- package/dist/run/managed-process.js.map +1 -0
- package/dist/run/realm.d.ts +43 -8
- package/dist/run/realm.d.ts.map +1 -1
- package/dist/run/realm.js +67 -24
- package/dist/run/realm.js.map +1 -1
- package/dist/run/runner.d.ts +11 -1
- package/dist/run/runner.d.ts.map +1 -1
- package/dist/run/runner.js +151 -33
- package/dist/run/runner.js.map +1 -1
- package/dist/run/scheduler.d.ts +8 -0
- package/dist/run/scheduler.d.ts.map +1 -1
- package/dist/run/scheduler.js +37 -3
- package/dist/run/scheduler.js.map +1 -1
- package/dist/run/serial.d.ts +2 -0
- package/dist/run/serial.d.ts.map +1 -1
- package/dist/run/serial.js +10 -0
- package/dist/run/serial.js.map +1 -1
- package/dist/run/steps.d.ts +1 -1
- package/dist/run/steps.d.ts.map +1 -1
- package/dist/run/steps.js +12 -9
- package/dist/run/steps.js.map +1 -1
- package/dist/run/worker/entry.js +17 -2
- package/dist/run/worker/entry.js.map +1 -1
- package/dist/run/worker/protocol.d.ts +9 -1
- package/dist/run/worker/protocol.d.ts.map +1 -1
- package/dist/run/worker/protocol.js.map +1 -1
- package/dist/run/worker/session.d.ts +12 -0
- package/dist/run/worker/session.d.ts.map +1 -1
- package/dist/run/worker/session.js +23 -1
- package/dist/run/worker/session.js.map +1 -1
- package/dist/types.d.ts +33 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/run/app-process.d.ts +0 -18
- package/dist/run/app-process.d.ts.map +0 -1
- package/dist/run/app-process.js +0 -112
- package/dist/run/app-process.js.map +0 -1
package/dist/agent/tool-loop.js
CHANGED
|
@@ -10,46 +10,26 @@
|
|
|
10
10
|
* - the wind-down notice and forced conclusion on the final turns;
|
|
11
11
|
* - model-call accounting and a step transcript for `--debug`.
|
|
12
12
|
*/
|
|
13
|
-
import { z } from 'zod';
|
|
14
13
|
import { asSdkLanguageModel } from '../config/agent.js';
|
|
15
14
|
import { loadAiSdk } from './ai-sdk.js';
|
|
16
|
-
import { readCost } from './model/sdk.js';
|
|
17
15
|
import { AgentError, isAgentError } from './error.js';
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
'ACTION_FAILED',
|
|
23
|
-
'AUTOMATION_UNSUPPORTED',
|
|
24
|
-
'ASSERTION_FAILED',
|
|
25
|
-
'AUTHENTICATION_FAILED',
|
|
26
|
-
'AUTH_CREDENTIAL_UNAVAILABLE',
|
|
27
|
-
'AUTH_CREDENTIAL_INVALID',
|
|
28
|
-
'ENVIRONMENT_UNAVAILABLE',
|
|
29
|
-
'SEED_DATA_MISSING',
|
|
30
|
-
'TEST_SETUP_FAILED',
|
|
31
|
-
'APP_UNREACHABLE',
|
|
32
|
-
'APP_NOT_OPEN',
|
|
33
|
-
'POLICY_DENIED',
|
|
34
|
-
];
|
|
35
|
-
/** The model-pickable codes a blocked verdict accepts; derived, never restated. */
|
|
36
|
-
const MODEL_BLOCKABLE_CODES = MODEL_ERROR_CODES.filter((code) => BLOCKABLE_CODES.has(code));
|
|
37
|
-
const VERDICT_RULES = `Verdict rules:
|
|
38
|
-
- When the step's goal is achieved, or you are certain it cannot be, call complete_step exactly once.
|
|
39
|
-
- Verify outcomes with your tools before concluding; never guess success.
|
|
40
|
-
- "passed" means the application behaved as the step required. "failed" means it did not. "blocked" means credentials, the environment, or test setup prevented a product verdict — blocked says nothing about the product and requires an errorCode.`;
|
|
41
|
-
/** Turns remaining when the loop warns the model to wrap up. */
|
|
16
|
+
import { RUNTIME_CODES, } from './executor.js';
|
|
17
|
+
import { createVerdictTool, trackModelCalls, VERDICT_RULES } from './primitives.js';
|
|
18
|
+
import { checkLoopGuards, DEFAULT_LOOP_GUARD_THRESHOLDS, extractGuardCalls, } from './loop-guards.js';
|
|
19
|
+
/** Turns remaining when the loop warns the model to wrap up, by default. */
|
|
42
20
|
const WIND_DOWN_TURNS = 5;
|
|
43
21
|
/**
|
|
44
|
-
*
|
|
45
|
-
* can get. A slow provider turn runs tens of seconds; concluding
|
|
46
|
-
* model's own summary beats a verdict-less STEP_TIMEOUT every time.
|
|
47
|
-
* effective window is a quarter of the step's budget, capped here, so a
|
|
48
|
-
* step keeps most of its clock for work instead of losing half of it to
|
|
49
|
-
* wind-down.
|
|
22
|
+
* Default ceiling on the remaining step time under which the loop takes the
|
|
23
|
+
* verdict it can get. A slow provider turn runs tens of seconds; concluding
|
|
24
|
+
* with the model's own summary beats a verdict-less STEP_TIMEOUT every time.
|
|
25
|
+
* The effective window is a quarter of the step's budget, capped here, so a
|
|
26
|
+
* short step keeps most of its clock for work instead of losing half of it to
|
|
27
|
+
* the wind-down.
|
|
50
28
|
*/
|
|
51
29
|
const CLOCK_WIND_DOWN_MS = 60_000;
|
|
52
30
|
const CLOCK_WIND_DOWN_FRACTION = 4;
|
|
31
|
+
/** Turns from the budget ceiling at which only the conclusion tool is offered. */
|
|
32
|
+
const FORCED_CONCLUSION_TURNS = 2;
|
|
53
33
|
/** Transcript ceiling per step; enough for every turn without unbounded logs. */
|
|
54
34
|
const MAX_TRANSCRIPT_CHARS = 262_144;
|
|
55
35
|
/** Builds a step executor from a tool vocabulary and the shared loop chassis. */
|
|
@@ -79,14 +59,16 @@ class LoopRun {
|
|
|
79
59
|
options;
|
|
80
60
|
context;
|
|
81
61
|
model;
|
|
82
|
-
|
|
62
|
+
conclusion = createVerdictTool();
|
|
83
63
|
hardStop;
|
|
84
64
|
guardStop;
|
|
85
65
|
noticedGuardReason;
|
|
86
66
|
noticedLowClock = false;
|
|
87
67
|
transcript = [];
|
|
88
68
|
maxTurns;
|
|
89
|
-
|
|
69
|
+
/** Resolved wind-down thresholds; undefined when the executor disabled the notices. */
|
|
70
|
+
windDown;
|
|
71
|
+
guardThresholds;
|
|
90
72
|
constructor(ai, options, context, model) {
|
|
91
73
|
this.ai = ai;
|
|
92
74
|
this.options = options;
|
|
@@ -95,52 +77,53 @@ class LoopRun {
|
|
|
95
77
|
// Capped, never raised: the harness budget is the ceiling for any turns
|
|
96
78
|
// setting, so the loop cannot spend past what the step was given.
|
|
97
79
|
this.maxTurns = Math.min(options.maxTurns ?? context.budgets.maxModelCalls, context.budgets.maxModelCalls);
|
|
98
|
-
|
|
80
|
+
const windDown = options.windDown;
|
|
81
|
+
this.windDown =
|
|
82
|
+
windDown === false
|
|
83
|
+
? undefined
|
|
84
|
+
: {
|
|
85
|
+
turns: windDown?.turns ?? WIND_DOWN_TURNS,
|
|
86
|
+
clockMs: Math.min(windDown?.clockMs ?? CLOCK_WIND_DOWN_MS, Math.floor(context.budgets.remainingMs() / CLOCK_WIND_DOWN_FRACTION)),
|
|
87
|
+
};
|
|
88
|
+
this.guardThresholds =
|
|
89
|
+
options.loopGuards === false
|
|
90
|
+
? undefined
|
|
91
|
+
: { ...DEFAULT_LOOP_GUARD_THRESHOLDS, ...options.loopGuards };
|
|
99
92
|
}
|
|
100
93
|
async run() {
|
|
101
94
|
const helpers = this.helpers();
|
|
102
95
|
const tools = {
|
|
103
96
|
...this.options.tools(this.context, helpers),
|
|
104
|
-
complete_step: this.
|
|
97
|
+
complete_step: this.conclusion.tool,
|
|
105
98
|
};
|
|
106
99
|
const loop = new this.ai.ToolLoopAgent({
|
|
107
100
|
model: this.model,
|
|
108
101
|
instructions: this.instructions(),
|
|
109
102
|
tools,
|
|
110
103
|
toolChoice: 'required',
|
|
104
|
+
...(this.options.providerOptions === undefined
|
|
105
|
+
? {}
|
|
106
|
+
: { providerOptions: this.options.providerOptions }),
|
|
111
107
|
stopWhen: [
|
|
112
|
-
() => this.
|
|
108
|
+
() => this.conclusion.concluded() || this.hardStop !== undefined,
|
|
113
109
|
this.ai.stepCountIs(this.maxTurns),
|
|
114
110
|
],
|
|
115
|
-
prepareStep: ({ messages, stepNumber }) => this.prepareTurn(messages, stepNumber),
|
|
111
|
+
prepareStep: ({ messages, stepNumber, steps }) => this.prepareTurn(messages, stepNumber, steps.at(-1)),
|
|
116
112
|
});
|
|
117
|
-
const
|
|
113
|
+
const tracker = trackModelCalls(this.context, this.model);
|
|
118
114
|
const prompt = await this.options.buildPrompt(this.context);
|
|
119
|
-
let
|
|
115
|
+
let generated = [];
|
|
120
116
|
try {
|
|
121
|
-
await loop.generate({
|
|
117
|
+
const result = await loop.generate({
|
|
122
118
|
prompt,
|
|
123
119
|
abortSignal: this.context.signal,
|
|
124
|
-
onStepStart:
|
|
125
|
-
turnStartedMs = Date.now();
|
|
126
|
-
},
|
|
120
|
+
onStepStart: tracker.onStepStart,
|
|
127
121
|
onStepEnd: (step) => {
|
|
128
122
|
this.recordTurn(step);
|
|
129
|
-
|
|
130
|
-
this.context.budgets.recordModelCall({
|
|
131
|
-
...(step.usage.inputTokens === undefined
|
|
132
|
-
? {}
|
|
133
|
-
: { inputTokens: step.usage.inputTokens }),
|
|
134
|
-
...(step.usage.outputTokens === undefined
|
|
135
|
-
? {}
|
|
136
|
-
: { outputTokens: step.usage.outputTokens }),
|
|
137
|
-
durationMs: Date.now() - turnStartedMs,
|
|
138
|
-
...(typeof identity.provider === 'string' ? { provider: identity.provider } : {}),
|
|
139
|
-
...(typeof identity.modelId === 'string' ? { modelId: identity.modelId } : {}),
|
|
140
|
-
...(estimatedCostUsd === undefined ? {} : { estimatedCostUsd }),
|
|
141
|
-
});
|
|
123
|
+
tracker.onStepEnd(step);
|
|
142
124
|
},
|
|
143
125
|
});
|
|
126
|
+
generated = result.responseMessages;
|
|
144
127
|
}
|
|
145
128
|
catch (cause) {
|
|
146
129
|
this.attachTranscript();
|
|
@@ -154,8 +137,16 @@ class LoopRun {
|
|
|
154
137
|
throw new AgentError('MODEL_PROVIDER_FAILED', `the model provider failed: ${cause instanceof Error ? cause.message : String(cause)}`, { cause });
|
|
155
138
|
}
|
|
156
139
|
this.attachTranscript();
|
|
157
|
-
if (this.
|
|
158
|
-
|
|
140
|
+
if (this.options.onConclude !== undefined) {
|
|
141
|
+
const opening = typeof prompt === 'string' ? [{ role: 'user', content: prompt }] : prompt;
|
|
142
|
+
await this.options.onConclude(this.context, {
|
|
143
|
+
messages: [...opening, ...generated],
|
|
144
|
+
verdict: this.conclusion.verdict(),
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
const verdict = this.conclusion.verdict();
|
|
148
|
+
if (verdict !== undefined)
|
|
149
|
+
return verdict;
|
|
159
150
|
if (this.hardStop !== undefined) {
|
|
160
151
|
if (this.hardStop.code === 'CANCELLED')
|
|
161
152
|
throw this.hardStop;
|
|
@@ -169,12 +160,12 @@ class LoopRun {
|
|
|
169
160
|
}
|
|
170
161
|
helpers() {
|
|
171
162
|
return {
|
|
172
|
-
concluding: () => this.
|
|
163
|
+
concluding: () => this.conclusion.concluded() || this.hardStop !== undefined,
|
|
173
164
|
reportHardStop: (error) => {
|
|
174
165
|
this.hardStop ??= error;
|
|
175
166
|
},
|
|
176
167
|
guard: async (body) => {
|
|
177
|
-
if (this.
|
|
168
|
+
if (this.conclusion.concluded() || this.hardStop !== undefined) {
|
|
178
169
|
return 'The step is already concluding; no further actions run.';
|
|
179
170
|
}
|
|
180
171
|
try {
|
|
@@ -192,17 +183,33 @@ class LoopRun {
|
|
|
192
183
|
};
|
|
193
184
|
}
|
|
194
185
|
/**
|
|
195
|
-
* Per-turn policy, in order:
|
|
186
|
+
* Per-turn policy, in order: the executor's history preparation, the loop guards,
|
|
196
187
|
* inject the wind-down notice, and — near the budget or after a guard stop —
|
|
197
188
|
* offer only the conclusion tool. Two forced turns, not one, so a rejected
|
|
198
189
|
* verdict (blocked without a code) can be repaired.
|
|
199
190
|
*/
|
|
200
|
-
prepareTurn(messages, stepNumber) {
|
|
201
|
-
let prepared =
|
|
191
|
+
async prepareTurn(messages, stepNumber, previous) {
|
|
192
|
+
let prepared = messages;
|
|
193
|
+
if (this.options.prepareMessages !== undefined) {
|
|
194
|
+
const result = await this.options.prepareMessages(messages, {
|
|
195
|
+
stepNumber,
|
|
196
|
+
previousToolCalls: previous?.toolCalls.map((call) => call.toolName) ?? [],
|
|
197
|
+
});
|
|
198
|
+
if (Array.isArray(result)) {
|
|
199
|
+
prepared = result;
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
prepared = result.messages;
|
|
203
|
+
if (result.stop !== undefined && this.guardStop === undefined)
|
|
204
|
+
this.guardStop = result.stop;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
202
207
|
const turnsLeft = this.maxTurns - stepNumber;
|
|
203
208
|
// Never on the very first turn: a deliberately short step timeout still
|
|
204
209
|
// deserves one working turn before the clock takes the verdict.
|
|
205
|
-
const lowClock =
|
|
210
|
+
const lowClock = this.windDown !== undefined &&
|
|
211
|
+
stepNumber > 0 &&
|
|
212
|
+
this.context.budgets.remainingMs() < this.windDown.clockMs;
|
|
206
213
|
if (lowClock && this.noticedLowClock !== true) {
|
|
207
214
|
this.noticedLowClock = true;
|
|
208
215
|
prepared = appendNotice(prepared, '[SYSTEM] The step is nearly out of time. Call complete_step now with your best ' +
|
|
@@ -210,8 +217,8 @@ class LoopRun {
|
|
|
210
217
|
'misbehaved, blocked (with errorCode) if something outside the application ' +
|
|
211
218
|
'stopped you.');
|
|
212
219
|
}
|
|
213
|
-
if (this.guardStop === undefined) {
|
|
214
|
-
const guard = checkLoopGuards(extractGuardCalls(prepared, 'complete_step'));
|
|
220
|
+
if (this.guardStop === undefined && this.guardThresholds !== undefined) {
|
|
221
|
+
const guard = checkLoopGuards(extractGuardCalls(prepared, 'complete_step'), this.guardThresholds);
|
|
215
222
|
if (guard.kind === 'stop') {
|
|
216
223
|
this.guardStop = guard.reason;
|
|
217
224
|
}
|
|
@@ -227,13 +234,14 @@ class LoopRun {
|
|
|
227
234
|
'Call complete_step now with your best verdict: failed if the application misbehaved, ' +
|
|
228
235
|
'blocked (with errorCode) if something outside the application stopped you.');
|
|
229
236
|
}
|
|
230
|
-
|
|
237
|
+
const windDownTurn = this.windDown !== undefined && turnsLeft === this.windDown.turns;
|
|
238
|
+
if (windDownTurn && this.guardStop === undefined) {
|
|
231
239
|
prepared = appendNotice(prepared, `[SYSTEM NOTICE] Only ${turnsLeft} turns remain for this step. ` +
|
|
232
240
|
'Finish the remaining work now, or call complete_step with your best verdict: ' +
|
|
233
241
|
'failed if the application misbehaved, blocked (with errorCode) if something ' +
|
|
234
242
|
'outside the application stopped you.');
|
|
235
243
|
}
|
|
236
|
-
const forced = turnsLeft <=
|
|
244
|
+
const forced = turnsLeft <= FORCED_CONCLUSION_TURNS || this.guardStop !== undefined || lowClock;
|
|
237
245
|
return {
|
|
238
246
|
...(prepared === messages ? {} : { messages: prepared }),
|
|
239
247
|
...(forced
|
|
@@ -244,42 +252,6 @@ class LoopRun {
|
|
|
244
252
|
: {}),
|
|
245
253
|
};
|
|
246
254
|
}
|
|
247
|
-
concludeTool() {
|
|
248
|
-
const { tool } = this.ai;
|
|
249
|
-
return tool({
|
|
250
|
-
description: 'Conclude the step with the final verdict. passed = the application behaved as required and you verified it. failed = the application did not behave as required. blocked = credentials, environment, or test setup prevented a product verdict; blocked requires errorCode.',
|
|
251
|
-
inputSchema: z.object({
|
|
252
|
-
status: z.enum(['passed', 'failed', 'blocked']),
|
|
253
|
-
summary: z
|
|
254
|
-
.string()
|
|
255
|
-
.min(1)
|
|
256
|
-
.max(500)
|
|
257
|
-
.describe('What you did and what you saw, in plain language'),
|
|
258
|
-
errorCode: z.enum(MODEL_ERROR_CODES).optional(),
|
|
259
|
-
}),
|
|
260
|
-
execute: async (input) => {
|
|
261
|
-
if (this.verdict !== undefined)
|
|
262
|
-
return 'The step already concluded.';
|
|
263
|
-
if (input.status === 'blocked' &&
|
|
264
|
-
(input.errorCode === undefined ||
|
|
265
|
-
!MODEL_BLOCKABLE_CODES.includes(input.errorCode))) {
|
|
266
|
-
return ('Rejected: a blocked verdict requires errorCode naming what blocked you ' +
|
|
267
|
-
`(one of ${MODEL_BLOCKABLE_CODES.join(', ')}). ` +
|
|
268
|
-
'If the application itself misbehaved, use status "failed" instead.');
|
|
269
|
-
}
|
|
270
|
-
this.verdict = {
|
|
271
|
-
status: input.status,
|
|
272
|
-
summary: input.summary,
|
|
273
|
-
// A passed verdict never carries a code; a redundant one from the
|
|
274
|
-
// model is dropped rather than failing the step.
|
|
275
|
-
...(input.errorCode === undefined || input.status === 'passed'
|
|
276
|
-
? {}
|
|
277
|
-
: { errorCode: input.errorCode }),
|
|
278
|
-
};
|
|
279
|
-
return 'Step concluded.';
|
|
280
|
-
},
|
|
281
|
-
});
|
|
282
|
-
}
|
|
283
255
|
instructions() {
|
|
284
256
|
const parts = [];
|
|
285
257
|
if (this.options.system !== undefined && this.options.system.trim() !== '') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-loop.js","sourceRoot":"","sources":["../../src/agent/tool-loop.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool-loop.js","sourceRoot":"","sources":["../../src/agent/tool-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,kBAAkB,EAAyB,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAc,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EACL,aAAa,GAId,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EACL,eAAe,EACf,6BAA6B,EAC7B,iBAAiB,GAElB,MAAM,kBAAkB,CAAC;AAE1B,4EAA4E;AAC5E,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B;;;;;;;GAOG;AACH,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAEnC,kFAAkF;AAClF,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAUlC,iFAAiF;AACjF,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAiFrC,iFAAiF;AACjF,MAAM,UAAU,sBAAsB,CAAC,OAAgC;IACrE,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QACtE,KAAK,CAAC,OAAO,CAAC,OAA4B;YACxC,uEAAuE;YACvE,sDAAsD;YACtD,MAAM,EAAE,GAAG,MAAM,SAAS,EAAE,CAAC;YAC7B,uEAAuE;YACvE,mEAAmE;YACnE,MAAM,KAAK,GACT,OAAO,CAAC,KAAK;gBACb,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAChF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,UAAU,CAClB,mBAAmB,EACnB,QAAQ,OAAO,CAAC,IAAI,sFAAsF,CAC3G,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,MAAM,OAAO;IAaQ,EAAE;IACF,OAAO;IACP,OAAO;IACP,KAAK;IAfP,UAAU,GAAG,iBAAiB,EAAE,CAAC;IAC1C,QAAQ,CAAyB;IACjC,SAAS,CAAqB;IAC9B,kBAAkB,CAAqB;IACvC,eAAe,GAAG,KAAK,CAAC;IACf,UAAU,GAAa,EAAE,CAAC;IAC1B,QAAQ,CAAS;IAClC,uFAAuF;IACtE,QAAQ,CAAmE;IAC3E,eAAe,CAAkC;IAElE,YACmB,EAAS,EACT,OAAgC,EAChC,OAA4B,EAC5B,KAAoB;kBAHpB,EAAE;uBACF,OAAO;uBACP,OAAO;qBACP,KAAK;QAEtB,wEAAwE;QACxE,kEAAkE;QAClE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CACtB,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,EACjD,OAAO,CAAC,OAAO,CAAC,aAAa,CAC9B,CAAC;QACF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,QAAQ;YACX,QAAQ,KAAK,KAAK;gBAChB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC;oBACE,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,eAAe;oBACzC,OAAO,EAAE,IAAI,CAAC,GAAG,CACf,QAAQ,EAAE,OAAO,IAAI,kBAAkB,EACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,wBAAwB,CAAC,CACrE;iBACF,CAAC;QACR,IAAI,CAAC,eAAe;YAClB,OAAO,CAAC,UAAU,KAAK,KAAK;gBAC1B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,EAAE,GAAG,6BAA6B,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAY;YACrB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;YAC5C,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;SACpC,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;YACrC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;YACjC,KAAK;YACL,UAAU,EAAE,UAAU;YACtB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS;gBAC5C,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAwB,EAAE,CAAC;YAC/D,QAAQ,EAAE;gBACR,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;gBAChE,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;aACnC;YACD,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,CAC/C,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SACvD,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,eAAe,CAC7B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,KAAgD,CACtD,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,SAAS,GAAmB,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC;gBACjC,MAAM;gBACN,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;gBAChC,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;oBAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBACtB,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC1B,CAAC;aACF,CAAC,CAAC;YACH,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAChC,MAAM,IAAI,UAAU,CAAC,WAAW,EAAE,wBAAwB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;gBAAE,MAAM,IAAI,CAAC,QAAQ,CAAC;YACrD,IAAI,YAAY,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YACrC,MAAM,IAAI,UAAU,CAClB,uBAAuB,EACvB,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACtF,EAAE,KAAK,EAAE,CACV,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,OAAO,GACX,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC5E,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE;gBAC1C,QAAQ,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC;gBACpC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;aACnC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC1C,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;QAC1C,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,WAAW;gBAAE,MAAM,IAAI,CAAC,QAAQ,CAAC;YAC5D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC9F,CAAC;QACD,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,kBAAkB,IAAI,CAAC,QAAQ,wCAAwC;YAChF,SAAS,EAAE,oBAAoB;SAChC,CAAC;IACJ,CAAC;IAEO,OAAO;QACb,OAAO;YACL,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAC5E,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE;gBACxB,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC;YAC1B,CAAC;YACD,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACpB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC/D,OAAO,yDAAyD,CAAC;gBACnE,CAAC;gBACD,IAAI,CAAC;oBACH,OAAO,MAAM,IAAI,EAAE,CAAC;gBACtB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;wBACzD,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC;wBACxB,OAAO,cAAc,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;oBACvD,CAAC;oBACD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACvE,OAAO,kBAAkB,OAAO,EAAE,CAAC;gBACrC,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,WAAW,CACvB,QAAwB,EACxB,UAAkB,EAClB,QAAyC;QAMzC,IAAI,QAAQ,GAAG,QAAQ,CAAC;QACxB,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE;gBAC1D,UAAU;gBACV,iBAAiB,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;aAC1E,CAAC,CAAC;YACH,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,QAAQ,GAAG,MAAM,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAC3B,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;oBAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;YAC9F,CAAC;QACH,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC7C,wEAAwE;QACxE,gEAAgE;QAChE,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,KAAK,SAAS;YAC3B,UAAU,GAAG,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC7D,IAAI,QAAQ,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,QAAQ,GAAG,YAAY,CACrB,QAAQ,EACR,iFAAiF;gBAC/E,2EAA2E;gBAC3E,4EAA4E;gBAC5E,cAAc,CACjB,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACvE,MAAM,KAAK,GAAG,eAAe,CAC3B,iBAAiB,CAAC,QAAQ,EAAE,eAAe,CAAC,EAC5C,IAAI,CAAC,eAAe,CACrB,CAAC;YACF,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;YAChC,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC7E,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC;gBACvC,QAAQ,GAAG,YAAY,CACrB,QAAQ,EACR,sDAAsD,KAAK,CAAC,MAAM,IAAI;oBACpE,gEAAgE,CACnE,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC/E,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC;YACzC,QAAQ,GAAG,YAAY,CACrB,QAAQ,EACR,wBAAwB,IAAI,CAAC,SAAS,iDAAiD;gBACrF,uFAAuF;gBACvF,4EAA4E,CAC/E,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtF,IAAI,YAAY,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjD,QAAQ,GAAG,YAAY,CACrB,QAAQ,EACR,wBAAwB,SAAS,+BAA+B;gBAC9D,+EAA+E;gBAC/E,8EAA8E;gBAC9E,sCAAsC,CACzC,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,IAAI,uBAAuB,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC;QAChG,OAAO;YACL,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YACxD,GAAG,CAAC,MAAM;gBACR,CAAC,CAAC;oBACE,WAAW,EAAE,CAAC,eAAe,CAAC;oBAC9B,UAAU,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,QAAQ,EAAE,eAAe,EAAE;iBACjE;gBACH,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;IAEO,YAAY;QAClB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC3E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QAC1C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,oDAAoD;IAC5C,UAAU,CAAC,IAAyB;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QACxC,MAAM,KAAK,GAAa,CAAC,YAAY,IAAI,MAAM,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QACpF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACpF,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,QAAQ,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC;IAEO,gBAAgB;QACtB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACzC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC5F,CAAC;CACF;AAED,SAAS,YAAY,CAAC,QAAwB,EAAE,OAAe;IAC7D,OAAO,CAAC,GAAG,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,GAAW;IACzC,OAAO,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC;AACzE,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
|
package/dist/agent/tool.d.ts
CHANGED
|
@@ -1,23 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* a first-class capability — replay eligibility, mutation tracking, and secret
|
|
5
|
-
* gating are declared, never inferred. A tool without declared semantics is
|
|
6
|
-
* excluded from caching and untrusted by default, which in v0 (no cache)
|
|
7
|
-
* reduces to: the annotation is required and recorded.
|
|
8
|
-
*/
|
|
9
|
-
import type { Tool } from 'ai';
|
|
1
|
+
/** Project tools declare mutation and platform scope; the harness owns dispatch and accounting. */
|
|
2
|
+
import type { Tool, ToolExecutionOptions } from 'ai';
|
|
3
|
+
import type { StepExecutorContext } from './executor.ts';
|
|
10
4
|
import type { Platform } from '../types.ts';
|
|
11
5
|
export interface ToolAnnotations {
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
* `'none'` — never replayed; always re-executed by a live executor.
|
|
15
|
-
*/
|
|
16
|
-
readonly replay: 'deterministic' | 'none';
|
|
6
|
+
/** @deprecated Reserved metadata; project-tool mutations always end trace replay. */
|
|
7
|
+
readonly replay?: 'deterministic' | 'none';
|
|
17
8
|
/** Whether executing the tool can change application state. */
|
|
18
9
|
readonly mutates: boolean;
|
|
19
|
-
/**
|
|
20
|
-
readonly secrets
|
|
10
|
+
/** @deprecated Metadata only; never grants access to plaintext secrets or pixels. */
|
|
11
|
+
readonly secrets?: boolean;
|
|
21
12
|
/**
|
|
22
13
|
* Platforms this tool is offered on; absent means every platform. A suite
|
|
23
14
|
* that mixes targets of different platforms keeps a gesture tool off the
|
|
@@ -36,4 +27,8 @@ export declare function defineTool(tool: Tool, annotations: ToolAnnotations): De
|
|
|
36
27
|
export declare function toolAppliesTo(defined: DefinedTool, platform: Platform): boolean;
|
|
37
28
|
/** True when a value came through `defineTool`, from this or another realm. */
|
|
38
29
|
export declare function isDefinedTool(value: unknown): value is DefinedTool;
|
|
30
|
+
/** Guarded observation capability supplied to read-only tools by createAgent. */
|
|
31
|
+
export declare function getToolContext(options: object): Pick<StepExecutorContext, 'observe'>;
|
|
32
|
+
/** Carries harness capabilities alongside SDK options without replacing the project's SDK context. */
|
|
33
|
+
export declare function withToolContext(options: ToolExecutionOptions<unknown>, context: Pick<StepExecutorContext, 'observe'>): ToolExecutionOptions<unknown>;
|
|
39
34
|
//# sourceMappingURL=tool.d.ts.map
|
package/dist/agent/tool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/agent/tool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/agent/tool.ts"],"names":[],"mappings":"AAAA,mGAAmG;AAEnG,OAAO,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,IAAI,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK5C,MAAM,WAAW,eAAe;IAC9B,qFAAqF;IACrF,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC;IAC3C,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,qFAAqF;IACrF,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;CACvC;AAED,qDAAqD;AACrD,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,GAAG,WAAW,CAmChF;AAED,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAE/E;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAElE;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAMpF;AAID,sGAAsG;AACtG,wBAAgB,eAAe,CAC7B,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,EACtC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,GAC5C,oBAAoB,CAAC,OAAO,CAAC,CAE/B"}
|
package/dist/agent/tool.js
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `defineTool` (RFC0001, layer 2): an AI SDK tool plus the required semantic
|
|
3
|
-
* annotation. The annotation is what lets the harness treat a project tool as
|
|
4
|
-
* a first-class capability — replay eligibility, mutation tracking, and secret
|
|
5
|
-
* gating are declared, never inferred. A tool without declared semantics is
|
|
6
|
-
* excluded from caching and untrusted by default, which in v0 (no cache)
|
|
7
|
-
* reduces to: the annotation is required and recorded.
|
|
8
|
-
*/
|
|
1
|
+
/** Project tools declare mutation and platform scope; the harness owns dispatch and accounting. */
|
|
9
2
|
import { TestError } from '../internal/errors.js';
|
|
10
3
|
/** Cross-realm identity marker for defined tools. */
|
|
11
4
|
const DEFINED_TOOL_MARKER = Symbol.for('e2e.defined-tool.v1');
|
|
@@ -15,12 +8,12 @@ export function defineTool(tool, annotations) {
|
|
|
15
8
|
throw new TestError('INVALID_ARGUMENT', 'defineTool requires an AI SDK tool with an execute function');
|
|
16
9
|
}
|
|
17
10
|
if (annotations === undefined || typeof annotations !== 'object') {
|
|
18
|
-
throw new TestError('INVALID_ARGUMENT', 'defineTool requires annotations: {
|
|
11
|
+
throw new TestError('INVALID_ARGUMENT', 'defineTool requires annotations: { mutates }');
|
|
19
12
|
}
|
|
20
|
-
if (annotations.replay !== 'deterministic' && annotations.replay !== 'none') {
|
|
13
|
+
if (annotations.replay !== undefined && annotations.replay !== 'deterministic' && annotations.replay !== 'none') {
|
|
21
14
|
throw new TestError('INVALID_ARGUMENT', "annotations.replay must be 'deterministic' or 'none'");
|
|
22
15
|
}
|
|
23
|
-
if (typeof annotations.mutates !== 'boolean' || typeof annotations.secrets !== 'boolean') {
|
|
16
|
+
if (typeof annotations.mutates !== 'boolean' || (annotations.secrets !== undefined && typeof annotations.secrets !== 'boolean')) {
|
|
24
17
|
throw new TestError('INVALID_ARGUMENT', 'annotations.mutates and annotations.secrets must be booleans');
|
|
25
18
|
}
|
|
26
19
|
if (annotations.platforms !== undefined &&
|
|
@@ -32,9 +25,9 @@ export function defineTool(tool, annotations) {
|
|
|
32
25
|
const defined = {
|
|
33
26
|
tool,
|
|
34
27
|
annotations: {
|
|
35
|
-
replay: annotations.replay,
|
|
28
|
+
...(annotations.replay === undefined ? {} : { replay: annotations.replay }),
|
|
36
29
|
mutates: annotations.mutates,
|
|
37
|
-
secrets: annotations.secrets,
|
|
30
|
+
...(annotations.secrets === undefined ? {} : { secrets: annotations.secrets }),
|
|
38
31
|
...(annotations.platforms === undefined ? {} : { platforms: [...annotations.platforms] }),
|
|
39
32
|
},
|
|
40
33
|
};
|
|
@@ -49,4 +42,17 @@ export function toolAppliesTo(defined, platform) {
|
|
|
49
42
|
export function isDefinedTool(value) {
|
|
50
43
|
return typeof value === 'object' && value !== null && DEFINED_TOOL_MARKER in value;
|
|
51
44
|
}
|
|
45
|
+
/** Guarded observation capability supplied to read-only tools by createAgent. */
|
|
46
|
+
export function getToolContext(options) {
|
|
47
|
+
const context = options[TOOL_CONTEXT];
|
|
48
|
+
if (context === undefined || typeof context.observe !== 'function') {
|
|
49
|
+
throw new TestError('INVALID_ARGUMENT', 'this tool needs the observation context supplied by createAgent');
|
|
50
|
+
}
|
|
51
|
+
return { observe: context.observe };
|
|
52
|
+
}
|
|
53
|
+
const TOOL_CONTEXT = Symbol.for('e2e.tool-context.v1');
|
|
54
|
+
/** Carries harness capabilities alongside SDK options without replacing the project's SDK context. */
|
|
55
|
+
export function withToolContext(options, context) {
|
|
56
|
+
return Object.assign({}, options, { [TOOL_CONTEXT]: context });
|
|
57
|
+
}
|
|
52
58
|
//# sourceMappingURL=tool.js.map
|
package/dist/agent/tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/agent/tool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/agent/tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Shared token and cost accounting for executor loops and judgment calls. */
|
|
2
|
+
import type { StepModelInfo } from '../run/steps.ts';
|
|
3
|
+
type Provenance = Pick<StepModelInfo, 'provider' | 'model' | 'endpoint' | 'adapterVersion' | 'policyVersion'>;
|
|
4
|
+
interface Usage {
|
|
5
|
+
readonly inputTokens?: number;
|
|
6
|
+
readonly outputTokens?: number;
|
|
7
|
+
readonly accounting?: StepModelInfo['tokenAccounting'];
|
|
8
|
+
readonly estimatedCostUsd?: number | undefined;
|
|
9
|
+
}
|
|
10
|
+
/** A provider total is authoritative only when every call reports both token counts. */
|
|
11
|
+
export declare class ModelUsage {
|
|
12
|
+
private records;
|
|
13
|
+
private inputTokens;
|
|
14
|
+
private outputTokens;
|
|
15
|
+
private peakTokensPerCall;
|
|
16
|
+
private accounting;
|
|
17
|
+
/** Null means the total overflowed and must remain omitted for this step. */
|
|
18
|
+
private estimatedCostUsd;
|
|
19
|
+
/** Accumulates one call, preserving incomplete or estimated provenance across later calls. */
|
|
20
|
+
record(usage?: Usage): number;
|
|
21
|
+
/** Saturates unrepresentable sums and marks the step's token counts non-authoritative. */
|
|
22
|
+
private addTokens;
|
|
23
|
+
/** Projects the accumulated usage into the report, including calls that returned no usage. */
|
|
24
|
+
report(provenance: Provenance, calls: number): StepModelInfo;
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/agent/usage.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,KAAK,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,gBAAgB,GAAG,eAAe,CAAC,CAAC;AAE9G,UAAU,KAAK;IACb,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACvD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChD;AAED,wFAAwF;AACxF,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,UAAU,CAAgD;IAClE,6EAA6E;IAC7E,OAAO,CAAC,gBAAgB,CAA4B;IAEpD,8FAA8F;IAC9F,MAAM,CAAC,KAAK,GAAE,KAAU,GAAG,MAAM,CAiBhC;IAED,0FAA0F;IAC1F,OAAO,CAAC,SAAS;IAOjB,8FAA8F;IAC9F,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAU3D;CACF"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/** A provider total is authoritative only when every call reports both token counts. */
|
|
2
|
+
export class ModelUsage {
|
|
3
|
+
records = 0;
|
|
4
|
+
inputTokens = 0;
|
|
5
|
+
outputTokens = 0;
|
|
6
|
+
peakTokensPerCall = 0;
|
|
7
|
+
accounting = 'provider';
|
|
8
|
+
/** Null means the total overflowed and must remain omitted for this step. */
|
|
9
|
+
estimatedCostUsd;
|
|
10
|
+
/** Accumulates one call, preserving incomplete or estimated provenance across later calls. */
|
|
11
|
+
record(usage = {}) {
|
|
12
|
+
this.records += 1;
|
|
13
|
+
const input = tokenCount(usage.inputTokens);
|
|
14
|
+
const output = tokenCount(usage.outputTokens);
|
|
15
|
+
this.inputTokens = this.addTokens(this.inputTokens, input ?? 0);
|
|
16
|
+
this.outputTokens = this.addTokens(this.outputTokens, output ?? 0);
|
|
17
|
+
const tokens = this.addTokens(input ?? 0, output ?? 0);
|
|
18
|
+
this.peakTokensPerCall = Math.max(this.peakTokensPerCall, tokens);
|
|
19
|
+
if (input === undefined || output === undefined || usage.accounting === 'adapter-upper-bound') {
|
|
20
|
+
this.accounting = 'adapter-upper-bound';
|
|
21
|
+
}
|
|
22
|
+
const cost = usage.estimatedCostUsd;
|
|
23
|
+
if (this.estimatedCostUsd !== null && cost !== undefined && Number.isFinite(cost) && cost >= 0) {
|
|
24
|
+
const total = (this.estimatedCostUsd ?? 0) + cost;
|
|
25
|
+
this.estimatedCostUsd = Number.isFinite(total) ? total : null;
|
|
26
|
+
}
|
|
27
|
+
return tokens;
|
|
28
|
+
}
|
|
29
|
+
/** Saturates unrepresentable sums and marks the step's token counts non-authoritative. */
|
|
30
|
+
addTokens(left, right) {
|
|
31
|
+
const sum = left + right;
|
|
32
|
+
if (Number.isSafeInteger(sum))
|
|
33
|
+
return sum;
|
|
34
|
+
this.accounting = 'adapter-upper-bound';
|
|
35
|
+
return Number.MAX_SAFE_INTEGER;
|
|
36
|
+
}
|
|
37
|
+
/** Projects the accumulated usage into the report, including calls that returned no usage. */
|
|
38
|
+
report(provenance, calls) {
|
|
39
|
+
return {
|
|
40
|
+
...provenance,
|
|
41
|
+
calls,
|
|
42
|
+
tokenAccounting: calls > this.records ? 'adapter-upper-bound' : this.accounting,
|
|
43
|
+
inputTokens: this.inputTokens,
|
|
44
|
+
outputTokens: this.outputTokens,
|
|
45
|
+
peakTokensPerCall: this.peakTokensPerCall,
|
|
46
|
+
...(typeof this.estimatedCostUsd === 'number' ? { estimatedCostUsd: this.estimatedCostUsd } : {}),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/** Rejects counters that cannot be represented in the report schema. */
|
|
51
|
+
function tokenCount(value) {
|
|
52
|
+
return value !== undefined && Number.isSafeInteger(value) && value >= 0 ? value : undefined;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/agent/usage.ts"],"names":[],"mappings":"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"}
|