@kindgi/agents 0.0.0-bootstrap.0 → 0.1.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/LICENSE +201 -0
- package/README.md +131 -2
- package/dist/agent-turn-flow.d.ts +57 -0
- package/dist/agent-turn-flow.d.ts.map +1 -0
- package/dist/agent-turn-flow.js +172 -0
- package/dist/agent-turn-flow.js.map +1 -0
- package/dist/conversation-binding.d.ts +111 -0
- package/dist/conversation-binding.d.ts.map +1 -0
- package/dist/conversation-binding.js +4 -0
- package/dist/conversation-binding.js.map +1 -0
- package/dist/define.d.ts +180 -0
- package/dist/define.d.ts.map +1 -0
- package/dist/define.js +361 -0
- package/dist/define.js.map +1 -0
- package/dist/errors.d.ts +62 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +4 -0
- package/dist/errors.js.map +1 -0
- package/dist/guardrails-gate.d.ts +169 -0
- package/dist/guardrails-gate.d.ts.map +1 -0
- package/dist/guardrails-gate.js +202 -0
- package/dist/guardrails-gate.js.map +1 -0
- package/dist/handlers/budget-check.d.ts +22 -0
- package/dist/handlers/budget-check.d.ts.map +1 -0
- package/dist/handlers/budget-check.js +109 -0
- package/dist/handlers/budget-check.js.map +1 -0
- package/dist/handlers/build-initial-messages.d.ts +17 -0
- package/dist/handlers/build-initial-messages.d.ts.map +1 -0
- package/dist/handlers/build-initial-messages.js +86 -0
- package/dist/handlers/build-initial-messages.js.map +1 -0
- package/dist/handlers/compose-result.d.ts +10 -0
- package/dist/handlers/compose-result.d.ts.map +1 -0
- package/dist/handlers/compose-result.js +79 -0
- package/dist/handlers/compose-result.js.map +1 -0
- package/dist/handlers/constants.d.ts +8 -0
- package/dist/handlers/constants.d.ts.map +1 -0
- package/dist/handlers/constants.js +10 -0
- package/dist/handlers/constants.js.map +1 -0
- package/dist/handlers/context.d.ts +210 -0
- package/dist/handlers/context.d.ts.map +1 -0
- package/dist/handlers/context.js +4 -0
- package/dist/handlers/context.js.map +1 -0
- package/dist/handlers/dispatch-tools.d.ts +15 -0
- package/dist/handlers/dispatch-tools.d.ts.map +1 -0
- package/dist/handlers/dispatch-tools.js +511 -0
- package/dist/handlers/dispatch-tools.js.map +1 -0
- package/dist/handlers/errors.d.ts +133 -0
- package/dist/handlers/errors.d.ts.map +1 -0
- package/dist/handlers/errors.js +134 -0
- package/dist/handlers/errors.js.map +1 -0
- package/dist/handlers/evaluate-guardrails.d.ts +14 -0
- package/dist/handlers/evaluate-guardrails.d.ts.map +1 -0
- package/dist/handlers/evaluate-guardrails.js +128 -0
- package/dist/handlers/evaluate-guardrails.js.map +1 -0
- package/dist/handlers/final-iteration.d.ts +7 -0
- package/dist/handlers/final-iteration.d.ts.map +1 -0
- package/dist/handlers/final-iteration.js +26 -0
- package/dist/handlers/final-iteration.js.map +1 -0
- package/dist/handlers/index.d.ts +5 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/index.js +41 -0
- package/dist/handlers/index.js.map +1 -0
- package/dist/handlers/model-call.d.ts +13 -0
- package/dist/handlers/model-call.d.ts.map +1 -0
- package/dist/handlers/model-call.js +136 -0
- package/dist/handlers/model-call.js.map +1 -0
- package/dist/handlers/persist-final-message.d.ts +14 -0
- package/dist/handlers/persist-final-message.d.ts.map +1 -0
- package/dist/handlers/persist-final-message.js +54 -0
- package/dist/handlers/persist-final-message.js.map +1 -0
- package/dist/handlers/persist-provenance.d.ts +12 -0
- package/dist/handlers/persist-provenance.d.ts.map +1 -0
- package/dist/handlers/persist-provenance.js +34 -0
- package/dist/handlers/persist-provenance.js.map +1 -0
- package/dist/handlers/persist-user-message.d.ts +15 -0
- package/dist/handlers/persist-user-message.d.ts.map +1 -0
- package/dist/handlers/persist-user-message.js +59 -0
- package/dist/handlers/persist-user-message.js.map +1 -0
- package/dist/handlers/public-types.d.ts +201 -0
- package/dist/handlers/public-types.d.ts.map +1 -0
- package/dist/handlers/public-types.js +4 -0
- package/dist/handlers/public-types.js.map +1 -0
- package/dist/handlers/rehydrate.d.ts +8 -0
- package/dist/handlers/rehydrate.d.ts.map +1 -0
- package/dist/handlers/rehydrate.js +94 -0
- package/dist/handlers/rehydrate.js.map +1 -0
- package/dist/handlers/render-prompt.d.ts +12 -0
- package/dist/handlers/render-prompt.d.ts.map +1 -0
- package/dist/handlers/render-prompt.js +41 -0
- package/dist/handlers/render-prompt.js.map +1 -0
- package/dist/handlers/resolve-tools.d.ts +10 -0
- package/dist/handlers/resolve-tools.d.ts.map +1 -0
- package/dist/handlers/resolve-tools.js +55 -0
- package/dist/handlers/resolve-tools.js.map +1 -0
- package/dist/handlers/result-shape.d.ts +94 -0
- package/dist/handlers/result-shape.d.ts.map +1 -0
- package/dist/handlers/result-shape.js +19 -0
- package/dist/handlers/result-shape.js.map +1 -0
- package/dist/handlers/run-retrievals.d.ts +10 -0
- package/dist/handlers/run-retrievals.d.ts.map +1 -0
- package/dist/handlers/run-retrievals.js +64 -0
- package/dist/handlers/run-retrievals.js.map +1 -0
- package/dist/handlers/run-snapshot.d.ts +4 -0
- package/dist/handlers/run-snapshot.d.ts.map +1 -0
- package/dist/handlers/run-snapshot.js +26 -0
- package/dist/handlers/run-snapshot.js.map +1 -0
- package/dist/handlers/setup.d.ts +25 -0
- package/dist/handlers/setup.d.ts.map +1 -0
- package/dist/handlers/setup.js +231 -0
- package/dist/handlers/setup.js.map +1 -0
- package/dist/handlers/structured-output.d.ts +38 -0
- package/dist/handlers/structured-output.d.ts.map +1 -0
- package/dist/handlers/structured-output.js +89 -0
- package/dist/handlers/structured-output.js.map +1 -0
- package/dist/handlers/tool-errors.d.ts +56 -0
- package/dist/handlers/tool-errors.d.ts.map +1 -0
- package/dist/handlers/tool-errors.js +73 -0
- package/dist/handlers/tool-errors.js.map +1 -0
- package/dist/handlers/tool-hitl.d.ts +45 -0
- package/dist/handlers/tool-hitl.d.ts.map +1 -0
- package/dist/handlers/tool-hitl.js +81 -0
- package/dist/handlers/tool-hitl.js.map +1 -0
- package/dist/handlers/turn-environment.d.ts +26 -0
- package/dist/handlers/turn-environment.d.ts.map +1 -0
- package/dist/handlers/turn-environment.js +154 -0
- package/dist/handlers/turn-environment.js.map +1 -0
- package/dist/hitl-policy.d.ts +45 -0
- package/dist/hitl-policy.d.ts.map +1 -0
- package/dist/hitl-policy.js +74 -0
- package/dist/hitl-policy.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/invoke.d.ts +36 -0
- package/dist/invoke.d.ts.map +1 -0
- package/dist/invoke.js +228 -0
- package/dist/invoke.js.map +1 -0
- package/dist/migrations-dir.d.ts +11 -0
- package/dist/migrations-dir.d.ts.map +1 -0
- package/dist/migrations-dir.js +14 -0
- package/dist/migrations-dir.js.map +1 -0
- package/dist/project-run-result.d.ts +23 -0
- package/dist/project-run-result.d.ts.map +1 -0
- package/dist/project-run-result.js +116 -0
- package/dist/project-run-result.js.map +1 -0
- package/dist/prompt.d.ts +83 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +119 -0
- package/dist/prompt.js.map +1 -0
- package/dist/provenance-emit.d.ts +44 -0
- package/dist/provenance-emit.d.ts.map +1 -0
- package/dist/provenance-emit.js +51 -0
- package/dist/provenance-emit.js.map +1 -0
- package/dist/registry.d.ts +38 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +125 -0
- package/dist/registry.js.map +1 -0
- package/dist/retrieval.d.ts +47 -0
- package/dist/retrieval.d.ts.map +1 -0
- package/dist/retrieval.js +155 -0
- package/dist/retrieval.js.map +1 -0
- package/dist/run-snapshot-binding.d.ts +77 -0
- package/dist/run-snapshot-binding.d.ts.map +1 -0
- package/dist/run-snapshot-binding.js +4 -0
- package/dist/run-snapshot-binding.js.map +1 -0
- package/dist/schema.d.ts +497 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +133 -0
- package/dist/schema.js.map +1 -0
- package/dist/streaming.d.ts +118 -0
- package/dist/streaming.d.ts.map +1 -0
- package/dist/streaming.js +17 -0
- package/dist/streaming.js.map +1 -0
- package/dist/tenant-policy.d.ts +16 -0
- package/dist/tenant-policy.d.ts.map +1 -0
- package/dist/tenant-policy.js +77 -0
- package/dist/tenant-policy.js.map +1 -0
- package/dist/types.d.ts +435 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/dist/versioning.d.ts +29 -0
- package/dist/versioning.d.ts.map +1 -0
- package/dist/versioning.js +58 -0
- package/dist/versioning.js.map +1 -0
- package/migrations/0000_sparkling_talkback.sql +18 -0
- package/migrations/0001_tired_warhawk.sql +16 -0
- package/migrations/0002_violet_ezekiel.sql +2 -0
- package/migrations/meta/0000_snapshot.json +172 -0
- package/migrations/meta/0001_snapshot.json +275 -0
- package/migrations/meta/0002_snapshot.json +287 -0
- package/migrations/meta/_journal.json +27 -0
- package/package.json +76 -4
- package/src/agent-turn-flow.ts +183 -0
- package/src/conversation-binding.ts +147 -0
- package/src/define.ts +572 -0
- package/src/errors.ts +80 -0
- package/src/guardrails-gate.ts +342 -0
- package/src/handlers/budget-check.ts +143 -0
- package/src/handlers/build-initial-messages.ts +103 -0
- package/src/handlers/compose-result.ts +90 -0
- package/src/handlers/constants.ts +10 -0
- package/src/handlers/context.ts +226 -0
- package/src/handlers/dispatch-tools.ts +633 -0
- package/src/handlers/errors.ts +282 -0
- package/src/handlers/evaluate-guardrails.ts +153 -0
- package/src/handlers/final-iteration.ts +30 -0
- package/src/handlers/index.ts +63 -0
- package/src/handlers/model-call.ts +151 -0
- package/src/handlers/persist-final-message.ts +67 -0
- package/src/handlers/persist-provenance.ts +39 -0
- package/src/handlers/persist-user-message.ts +70 -0
- package/src/handlers/public-types.ts +209 -0
- package/src/handlers/rehydrate.ts +161 -0
- package/src/handlers/render-prompt.ts +46 -0
- package/src/handlers/resolve-tools.ts +68 -0
- package/src/handlers/result-shape.ts +113 -0
- package/src/handlers/run-retrievals.ts +77 -0
- package/src/handlers/run-snapshot.ts +44 -0
- package/src/handlers/setup.ts +269 -0
- package/src/handlers/structured-output.ts +117 -0
- package/src/handlers/tool-errors.ts +122 -0
- package/src/handlers/tool-hitl.ts +126 -0
- package/src/handlers/turn-environment.ts +191 -0
- package/src/hitl-policy.ts +128 -0
- package/src/index.ts +154 -0
- package/src/invoke.ts +299 -0
- package/src/migrations-dir.ts +17 -0
- package/src/project-run-result.ts +131 -0
- package/src/prompt.ts +185 -0
- package/src/provenance-emit.ts +100 -0
- package/src/registry.ts +164 -0
- package/src/retrieval.ts +219 -0
- package/src/run-snapshot-binding.ts +87 -0
- package/src/schema.ts +154 -0
- package/src/streaming.ts +153 -0
- package/src/tenant-policy.ts +78 -0
- package/src/types.ts +453 -0
- package/src/versioning.ts +77 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export type AgentError = InvalidAgentError | AgentNotFoundError | AgentAlreadyRegisteredError | AgentVersionMismatchError | ConversationNotFoundError | ConversationClosedError | InvalidMessageError | PersistenceError;
|
|
2
|
+
/** `defineAgent` was called with a shape that fails validation. */
|
|
3
|
+
export interface InvalidAgentError {
|
|
4
|
+
readonly code: 'invalid-agent';
|
|
5
|
+
readonly message: string;
|
|
6
|
+
readonly issues: readonly {
|
|
7
|
+
readonly path: string;
|
|
8
|
+
readonly message: string;
|
|
9
|
+
}[];
|
|
10
|
+
}
|
|
11
|
+
/** A registry lookup by (id, version) missed. */
|
|
12
|
+
export interface AgentNotFoundError {
|
|
13
|
+
readonly code: 'agent-not-found';
|
|
14
|
+
readonly message: string;
|
|
15
|
+
readonly agentId: string;
|
|
16
|
+
readonly version?: string;
|
|
17
|
+
}
|
|
18
|
+
/** Trying to register an agent that already exists at that (id, version). */
|
|
19
|
+
export interface AgentAlreadyRegisteredError {
|
|
20
|
+
readonly code: 'agent-already-registered';
|
|
21
|
+
readonly message: string;
|
|
22
|
+
readonly agentId: string;
|
|
23
|
+
readonly version: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* A caller resumed a conversation but supplied an agent version that
|
|
27
|
+
* doesn't match the conversation's opening agent. Agents evolve; a
|
|
28
|
+
* conversation must be resumed with the same agent version it started
|
|
29
|
+
* with.
|
|
30
|
+
*/
|
|
31
|
+
export interface AgentVersionMismatchError {
|
|
32
|
+
readonly code: 'agent-version-mismatch';
|
|
33
|
+
readonly message: string;
|
|
34
|
+
readonly conversationId: string;
|
|
35
|
+
readonly expectedVersion: string;
|
|
36
|
+
readonly actualVersion: string;
|
|
37
|
+
}
|
|
38
|
+
/** No conversation with the given id exists (for this tenant). */
|
|
39
|
+
export interface ConversationNotFoundError {
|
|
40
|
+
readonly code: 'conversation-not-found';
|
|
41
|
+
readonly message: string;
|
|
42
|
+
readonly conversationId: string;
|
|
43
|
+
}
|
|
44
|
+
/** Attempted to append or otherwise mutate a closed conversation. */
|
|
45
|
+
export interface ConversationClosedError {
|
|
46
|
+
readonly code: 'conversation-closed';
|
|
47
|
+
readonly message: string;
|
|
48
|
+
readonly conversationId: string;
|
|
49
|
+
}
|
|
50
|
+
/** `appendMessage` was called with malformed inputs (blank content, bad role, etc.). */
|
|
51
|
+
export interface InvalidMessageError {
|
|
52
|
+
readonly code: 'invalid-message';
|
|
53
|
+
readonly message: string;
|
|
54
|
+
readonly reason: string;
|
|
55
|
+
}
|
|
56
|
+
/** Storage-layer error. Cause carries the underlying DB / IO failure. */
|
|
57
|
+
export interface PersistenceError {
|
|
58
|
+
readonly code: 'persistence-error';
|
|
59
|
+
readonly message: string;
|
|
60
|
+
readonly cause: unknown;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,2BAA2B,GAC3B,yBAAyB,GACzB,yBAAyB,GACzB,uBAAuB,GACvB,mBAAmB,GACnB,gBAAgB,CAAC;AAErB,mEAAmE;AACnE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS;QACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,EAAE,CAAC;CACL;AAED,iDAAiD;AACjD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,6EAA6E;AAC7E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,kEAAkE;AAClE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,qEAAqE;AACrE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,wFAAwF;AACxF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,yEAAyE;AACzE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import type { ProviderRegistry, TenantPolicy } from '@kindgi/capabilities';
|
|
2
|
+
import type { ComplianceProvider } from '@kindgi/compliance';
|
|
3
|
+
import { type CheckRegistry, type EvaluationOutcome, type EvaluationResult, type Guardrail, type RunTrace } from '@kindgi/guardrails';
|
|
4
|
+
import type { ProjectId, Result, RunId, TenantId } from '@kindgi/types';
|
|
5
|
+
import type { Agent, ConversationId, ConversationMessage } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Turn usage snapshot passed into `buildRunTrace`. Local mirror of
|
|
8
|
+
* `AgentTurnUsage` (handlers/result-shape.ts) — kept here to avoid a
|
|
9
|
+
* circular import.
|
|
10
|
+
*/
|
|
11
|
+
interface TurnUsageSnapshot {
|
|
12
|
+
readonly steps: number;
|
|
13
|
+
readonly promptTokens: number;
|
|
14
|
+
readonly completionTokens: number;
|
|
15
|
+
readonly totalCostUsd: number;
|
|
16
|
+
readonly durationMs: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Bindings the guardrail gate consumes. All optional — if `guardrails`
|
|
20
|
+
* is empty or `checks` is undefined, `evaluateGate` is a no-op. An
|
|
21
|
+
* agent that references a guardrail id missing from `guardrails` fails
|
|
22
|
+
* its turn with `unresolved-guardrail`.
|
|
23
|
+
*/
|
|
24
|
+
export interface GuardrailsBindings {
|
|
25
|
+
/** Full guardrail definitions available for this run. Indexed by id. */
|
|
26
|
+
readonly guardrails?: readonly Guardrail[];
|
|
27
|
+
/** Check registry with built-ins + any adapter-registered custom checks. */
|
|
28
|
+
readonly checks?: CheckRegistry;
|
|
29
|
+
/** Optional compliance sink — every failed check emits an evidence record. */
|
|
30
|
+
readonly compliance?: ComplianceProvider;
|
|
31
|
+
/**
|
|
32
|
+
* Provider registry for llm-judge guardrails; the judge model is
|
|
33
|
+
* routed through it under the turn's tenant policy. If absent,
|
|
34
|
+
* llm-judge guardrails error with `judge-missing`; if no provider
|
|
35
|
+
* satisfies the judge's capability, with `judge-routing-failed`.
|
|
36
|
+
*/
|
|
37
|
+
readonly providerRegistry?: ProviderRegistry;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Materialize a `RunTrace` from an agent turn's captured state. The
|
|
41
|
+
* guardrail engine reads only the trace — it doesn't touch memory,
|
|
42
|
+
* kernel journal, or provenance directly (keeps checks pure and
|
|
43
|
+
* dependency-free).
|
|
44
|
+
*/
|
|
45
|
+
export declare function buildRunTrace(input: {
|
|
46
|
+
/** The kernel run of the turn. */
|
|
47
|
+
readonly runId: RunId;
|
|
48
|
+
readonly tenantId: TenantId;
|
|
49
|
+
/** Lets the engine record compliance evidence for a failed check. */
|
|
50
|
+
readonly projectId: ProjectId;
|
|
51
|
+
readonly conversationId: ConversationId;
|
|
52
|
+
/** 1-based number of this turn in the conversation. */
|
|
53
|
+
readonly turnNumber: number;
|
|
54
|
+
readonly agent: Agent;
|
|
55
|
+
/** The user message that started the turn. */
|
|
56
|
+
readonly userMessage: string;
|
|
57
|
+
/** The turn's structured input (`InvokeAgentInput.input`), when it has one. */
|
|
58
|
+
readonly stepInput?: unknown;
|
|
59
|
+
/** The parsed answer, when the agent declares `output`. */
|
|
60
|
+
readonly structuredOutput?: unknown;
|
|
61
|
+
readonly appended: readonly ConversationMessage[];
|
|
62
|
+
readonly finalResponse: ConversationMessage;
|
|
63
|
+
readonly usage: TurnUsageSnapshot;
|
|
64
|
+
}): RunTrace;
|
|
65
|
+
/**
|
|
66
|
+
* Filter the bound guardrail list to those referenced by the agent's
|
|
67
|
+
* `guardrails: string[]` declaration. Missing references are collected
|
|
68
|
+
* into `missing` — the caller decides whether that's fatal.
|
|
69
|
+
*/
|
|
70
|
+
export declare function resolveGuardrails(agent: Agent, bindings: GuardrailsBindings): {
|
|
71
|
+
readonly resolved: readonly Guardrail[];
|
|
72
|
+
readonly missing: readonly string[];
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Evaluate every resolved guardrail against the turn's trace. Returns
|
|
76
|
+
* the raw outcomes so the caller can decide how to react — the gate
|
|
77
|
+
* doesn't halt on its own. `tenantPolicy` (the policy the turn was
|
|
78
|
+
* routed under) also governs which models llm-judge guardrails may use;
|
|
79
|
+
* `abortSignal` (the turn's) reaches every check, so a slow judge or
|
|
80
|
+
* pack check stops when the turn does.
|
|
81
|
+
*/
|
|
82
|
+
export declare function evaluateGate(guardrails: readonly Guardrail[], trace: RunTrace, bindings: GuardrailsBindings, tenantPolicy?: TenantPolicy, abortSignal?: AbortSignal): Promise<readonly EvaluationOutcome[]>;
|
|
83
|
+
/**
|
|
84
|
+
* Sort evaluation outcomes by the failed guardrail's action. `halt` is
|
|
85
|
+
* blocking — the turn fails with `guardrail-violation`. `log-only` and
|
|
86
|
+
* `noop` are warnings; every other action (`retry`, `escalate`,
|
|
87
|
+
* `compensate`, or a custom action — actions are open strings) lands in
|
|
88
|
+
* `other`. Warnings and `other` are attached to the successful turn
|
|
89
|
+
* result under `result.violations`; the turn does not carry out those
|
|
90
|
+
* actions. Evaluation errors (a check that could not run) are collected
|
|
91
|
+
* in `errors`.
|
|
92
|
+
*/
|
|
93
|
+
export declare function categorizeOutcomes(outcomes: readonly EvaluationOutcome[]): {
|
|
94
|
+
readonly blocking: readonly EvaluationResult[];
|
|
95
|
+
readonly warnings: readonly EvaluationResult[];
|
|
96
|
+
readonly other: readonly EvaluationResult[];
|
|
97
|
+
readonly errors: readonly {
|
|
98
|
+
readonly guardrailId: string;
|
|
99
|
+
readonly message: string;
|
|
100
|
+
}[];
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Message for a turn stopped by blocking violations — names each
|
|
104
|
+
* guardrail that fired, with its check's reason when it gave one:
|
|
105
|
+
*
|
|
106
|
+
* Turn blocked by guardrail 'no-pii': Response contains an email address
|
|
107
|
+
* Turn blocked by 2 guardrails: 'no-pii' (Response contains …); 'max-length'
|
|
108
|
+
*/
|
|
109
|
+
export declare function describeBlockingViolations(blocking: readonly EvaluationResult[]): string;
|
|
110
|
+
/**
|
|
111
|
+
* Result of a session-gate check performed BEFORE running a turn:
|
|
112
|
+
* the HITL turn threshold (`conversationPolicy.hitl.afterTurns` or
|
|
113
|
+
* `conversationPolicy.hitlAfterTurns`).
|
|
114
|
+
*/
|
|
115
|
+
export type SessionGateResult = {
|
|
116
|
+
readonly kind: 'ok';
|
|
117
|
+
} | {
|
|
118
|
+
readonly kind: 'hitl-required';
|
|
119
|
+
readonly reason: string;
|
|
120
|
+
readonly threshold: number;
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* Evaluate session-level gates against the conversation state before
|
|
124
|
+
* running the next turn: the HITL threshold from
|
|
125
|
+
* `conversationPolicy.hitl.afterTurns` or `conversationPolicy.hitlAfterTurns`.
|
|
126
|
+
*
|
|
127
|
+
* Overloaded call shapes:
|
|
128
|
+
* - `evaluateSessionGate(agent, turnCount)` — reads the agent's policy
|
|
129
|
+
* directly.
|
|
130
|
+
* - `evaluateSessionGate({ afterTurns? }, turnCount)` — reads a
|
|
131
|
+
* pre-resolved effective policy (the setup handler passes
|
|
132
|
+
* `resolveEffectiveHitlPolicy` output).
|
|
133
|
+
*/
|
|
134
|
+
export declare function evaluateSessionGate(input: Agent | {
|
|
135
|
+
readonly afterTurns?: number;
|
|
136
|
+
}, currentTurnCount: number): SessionGateResult;
|
|
137
|
+
/** Discriminated error emitted when blocking guardrails fail. */
|
|
138
|
+
export interface GuardrailViolationError {
|
|
139
|
+
readonly code: 'guardrail-violation';
|
|
140
|
+
readonly message: string;
|
|
141
|
+
readonly violations: readonly EvaluationResult[];
|
|
142
|
+
/** Errors from checks that couldn't even evaluate (missing check, bad config). */
|
|
143
|
+
readonly evaluationErrors: readonly {
|
|
144
|
+
readonly guardrailId: string;
|
|
145
|
+
readonly message: string;
|
|
146
|
+
}[];
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Error shape for a turn blocked by the session HITL threshold.
|
|
150
|
+
* `approvalId` is set when the caller supplied a `bindings.hitl` sink and
|
|
151
|
+
* the enqueue succeeded — downstream code can poll or subscribe on that
|
|
152
|
+
* id. The agent turn itself does not return this code: it parks on a
|
|
153
|
+
* HITL waitpoint instead (`AgentTurnResult.status: 'suspended'`).
|
|
154
|
+
*/
|
|
155
|
+
export interface HitlRequiredError {
|
|
156
|
+
readonly code: 'hitl-required';
|
|
157
|
+
readonly message: string;
|
|
158
|
+
readonly threshold: number;
|
|
159
|
+
readonly approvalId?: string;
|
|
160
|
+
}
|
|
161
|
+
/** Emitted when the agent references guardrail IDs not in the registry. */
|
|
162
|
+
export interface UnresolvedGuardrailError {
|
|
163
|
+
readonly code: 'unresolved-guardrail';
|
|
164
|
+
readonly message: string;
|
|
165
|
+
readonly guardrailIds: readonly string[];
|
|
166
|
+
}
|
|
167
|
+
export type GateResult<T, E> = Result<T, E>;
|
|
168
|
+
export {};
|
|
169
|
+
//# sourceMappingURL=guardrails-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardrails-gate.d.ts","sourceRoot":"","sources":["../src/guardrails-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
import { evaluateAll, } from '@kindgi/guardrails';
|
|
4
|
+
/**
|
|
5
|
+
* Materialize a `RunTrace` from an agent turn's captured state. The
|
|
6
|
+
* guardrail engine reads only the trace — it doesn't touch memory,
|
|
7
|
+
* kernel journal, or provenance directly (keeps checks pure and
|
|
8
|
+
* dependency-free).
|
|
9
|
+
*/
|
|
10
|
+
export function buildRunTrace(input) {
|
|
11
|
+
const toolCalls = [];
|
|
12
|
+
const toolResults = [];
|
|
13
|
+
const modelCalls = [];
|
|
14
|
+
for (const msg of input.appended) {
|
|
15
|
+
if (msg.role === 'agent' && typeof msg.content === 'object' && msg.content !== null) {
|
|
16
|
+
const structured = msg.content;
|
|
17
|
+
if (structured.toolCalls !== undefined) {
|
|
18
|
+
for (const call of structured.toolCalls) {
|
|
19
|
+
toolCalls.push({
|
|
20
|
+
toolId: call.name,
|
|
21
|
+
toolName: call.name,
|
|
22
|
+
arguments: call.arguments,
|
|
23
|
+
at: msg.createdAt,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (msg.role === 'tool' && msg.toolCall !== undefined) {
|
|
29
|
+
toolResults.push({
|
|
30
|
+
toolCallId: msg.toolCall.invocationId,
|
|
31
|
+
output: msg.content,
|
|
32
|
+
at: msg.createdAt,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Approximate a model-call record for cost/latency guardrails — a
|
|
37
|
+
// more granular per-call breakdown would need an observability
|
|
38
|
+
// hook.
|
|
39
|
+
modelCalls.push({
|
|
40
|
+
providerId: 'runtime.picked',
|
|
41
|
+
model: 'runtime.picked',
|
|
42
|
+
promptTokens: input.usage.promptTokens,
|
|
43
|
+
completionTokens: input.usage.completionTokens,
|
|
44
|
+
at: input.finalResponse.createdAt,
|
|
45
|
+
});
|
|
46
|
+
const output = typeof input.finalResponse.content === 'string'
|
|
47
|
+
? input.finalResponse.content
|
|
48
|
+
: JSON.stringify(input.finalResponse.content);
|
|
49
|
+
return {
|
|
50
|
+
runId: input.runId,
|
|
51
|
+
tenantId: input.tenantId,
|
|
52
|
+
projectId: input.projectId,
|
|
53
|
+
agentId: input.agent.id,
|
|
54
|
+
output,
|
|
55
|
+
toolCalls,
|
|
56
|
+
toolResults,
|
|
57
|
+
modelCalls,
|
|
58
|
+
mode: 'runtime',
|
|
59
|
+
userInput: input.userMessage,
|
|
60
|
+
conversationId: input.conversationId,
|
|
61
|
+
turnNumber: input.turnNumber,
|
|
62
|
+
totalCostUsd: input.usage.totalCostUsd,
|
|
63
|
+
durationMs: input.usage.durationMs,
|
|
64
|
+
attributes: {
|
|
65
|
+
steps: input.usage.steps,
|
|
66
|
+
...(input.stepInput !== undefined && { stepInput: input.stepInput }),
|
|
67
|
+
...(input.structuredOutput !== undefined && { structuredOutput: input.structuredOutput }),
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Filter the bound guardrail list to those referenced by the agent's
|
|
73
|
+
* `guardrails: string[]` declaration. Missing references are collected
|
|
74
|
+
* into `missing` — the caller decides whether that's fatal.
|
|
75
|
+
*/
|
|
76
|
+
export function resolveGuardrails(agent, bindings) {
|
|
77
|
+
const available = new Map();
|
|
78
|
+
for (const inv of bindings.guardrails ?? [])
|
|
79
|
+
available.set(inv.id, inv);
|
|
80
|
+
const resolved = [];
|
|
81
|
+
const missing = [];
|
|
82
|
+
for (const id of agent.guardrails) {
|
|
83
|
+
const inv = available.get(id);
|
|
84
|
+
if (inv !== undefined)
|
|
85
|
+
resolved.push(inv);
|
|
86
|
+
else
|
|
87
|
+
missing.push(id);
|
|
88
|
+
}
|
|
89
|
+
return { resolved, missing };
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Evaluate every resolved guardrail against the turn's trace. Returns
|
|
93
|
+
* the raw outcomes so the caller can decide how to react — the gate
|
|
94
|
+
* doesn't halt on its own. `tenantPolicy` (the policy the turn was
|
|
95
|
+
* routed under) also governs which models llm-judge guardrails may use;
|
|
96
|
+
* `abortSignal` (the turn's) reaches every check, so a slow judge or
|
|
97
|
+
* pack check stops when the turn does.
|
|
98
|
+
*/
|
|
99
|
+
export async function evaluateGate(guardrails, trace, bindings, tenantPolicy, abortSignal) {
|
|
100
|
+
if (guardrails.length === 0 || bindings.checks === undefined)
|
|
101
|
+
return [];
|
|
102
|
+
const evalBindings = {
|
|
103
|
+
...(bindings.providerRegistry !== undefined && { providerRegistry: bindings.providerRegistry }),
|
|
104
|
+
...(bindings.compliance !== undefined && { compliance: bindings.compliance }),
|
|
105
|
+
...(tenantPolicy !== undefined && { tenantPolicy }),
|
|
106
|
+
...(abortSignal !== undefined && { abortSignal }),
|
|
107
|
+
};
|
|
108
|
+
return await evaluateAll(guardrails, bindings.checks, trace, evalBindings);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Sort evaluation outcomes by the failed guardrail's action. `halt` is
|
|
112
|
+
* blocking — the turn fails with `guardrail-violation`. `log-only` and
|
|
113
|
+
* `noop` are warnings; every other action (`retry`, `escalate`,
|
|
114
|
+
* `compensate`, or a custom action — actions are open strings) lands in
|
|
115
|
+
* `other`. Warnings and `other` are attached to the successful turn
|
|
116
|
+
* result under `result.violations`; the turn does not carry out those
|
|
117
|
+
* actions. Evaluation errors (a check that could not run) are collected
|
|
118
|
+
* in `errors`.
|
|
119
|
+
*/
|
|
120
|
+
export function categorizeOutcomes(outcomes) {
|
|
121
|
+
const blocking = [];
|
|
122
|
+
const warnings = [];
|
|
123
|
+
const other = [];
|
|
124
|
+
const errors = [];
|
|
125
|
+
for (const outcome of outcomes) {
|
|
126
|
+
if (outcome.kind === 'err') {
|
|
127
|
+
errors.push({
|
|
128
|
+
guardrailId: 'guardrailId' in outcome.error && typeof outcome.error.guardrailId === 'string'
|
|
129
|
+
? outcome.error.guardrailId
|
|
130
|
+
: '<unknown>',
|
|
131
|
+
message: outcome.error.message,
|
|
132
|
+
});
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
if (outcome.kind === 'skip')
|
|
136
|
+
continue;
|
|
137
|
+
const evalResult = outcome.value;
|
|
138
|
+
if (evalResult.result.passed)
|
|
139
|
+
continue;
|
|
140
|
+
if (evalResult.action === 'halt')
|
|
141
|
+
blocking.push(evalResult);
|
|
142
|
+
else if (evalResult.action === 'log-only' || evalResult.action === 'noop') {
|
|
143
|
+
warnings.push(evalResult);
|
|
144
|
+
}
|
|
145
|
+
else
|
|
146
|
+
other.push(evalResult);
|
|
147
|
+
}
|
|
148
|
+
return { blocking, warnings, other, errors };
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Message for a turn stopped by blocking violations — names each
|
|
152
|
+
* guardrail that fired, with its check's reason when it gave one:
|
|
153
|
+
*
|
|
154
|
+
* Turn blocked by guardrail 'no-pii': Response contains an email address
|
|
155
|
+
* Turn blocked by 2 guardrails: 'no-pii' (Response contains …); 'max-length'
|
|
156
|
+
*/
|
|
157
|
+
export function describeBlockingViolations(blocking) {
|
|
158
|
+
const reasonOf = (v) => {
|
|
159
|
+
const reason = v.result.reason?.trim();
|
|
160
|
+
return reason === undefined || reason === '' ? undefined : reason;
|
|
161
|
+
};
|
|
162
|
+
const [only] = blocking;
|
|
163
|
+
if (blocking.length === 1 && only !== undefined) {
|
|
164
|
+
const reason = reasonOf(only);
|
|
165
|
+
return `Turn blocked by guardrail '${only.guardrailId}'${reason !== undefined ? `: ${reason}` : ''}`;
|
|
166
|
+
}
|
|
167
|
+
const named = blocking.map((v) => {
|
|
168
|
+
const reason = reasonOf(v);
|
|
169
|
+
return `'${v.guardrailId}'${reason !== undefined ? ` (${reason})` : ''}`;
|
|
170
|
+
});
|
|
171
|
+
return `Turn blocked by ${blocking.length} guardrails: ${named.join('; ')}`;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Evaluate session-level gates against the conversation state before
|
|
175
|
+
* running the next turn: the HITL threshold from
|
|
176
|
+
* `conversationPolicy.hitl.afterTurns` or `conversationPolicy.hitlAfterTurns`.
|
|
177
|
+
*
|
|
178
|
+
* Overloaded call shapes:
|
|
179
|
+
* - `evaluateSessionGate(agent, turnCount)` — reads the agent's policy
|
|
180
|
+
* directly.
|
|
181
|
+
* - `evaluateSessionGate({ afterTurns? }, turnCount)` — reads a
|
|
182
|
+
* pre-resolved effective policy (the setup handler passes
|
|
183
|
+
* `resolveEffectiveHitlPolicy` output).
|
|
184
|
+
*/
|
|
185
|
+
export function evaluateSessionGate(input, currentTurnCount) {
|
|
186
|
+
const asAgent = input;
|
|
187
|
+
const asPolicy = input;
|
|
188
|
+
const threshold = 'conversationPolicy' in asAgent
|
|
189
|
+
? (asAgent.conversationPolicy?.hitl?.afterTurns ?? asAgent.conversationPolicy?.hitlAfterTurns)
|
|
190
|
+
: asPolicy.afterTurns;
|
|
191
|
+
if (threshold !== undefined && currentTurnCount >= threshold) {
|
|
192
|
+
return {
|
|
193
|
+
kind: 'hitl-required',
|
|
194
|
+
reason: `Conversation reached HITL threshold: ${currentTurnCount} turns >= ${threshold}`,
|
|
195
|
+
threshold,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
return { kind: 'ok' };
|
|
199
|
+
}
|
|
200
|
+
// Silence unused-type lint (GuardrailId is used by callers via type inference).
|
|
201
|
+
void 0;
|
|
202
|
+
//# sourceMappingURL=guardrails-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardrails-gate.js","sourceRoot":"","sources":["../src/guardrails-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { NodeHandler } from '@kindgi/handler';
|
|
2
|
+
import type { TurnContext } from './context.js';
|
|
3
|
+
/**
|
|
4
|
+
* Loop-body node #3. The final gate before `$loop-end`. Decides
|
|
5
|
+
* whether the iteration finalizes the turn based on:
|
|
6
|
+
*
|
|
7
|
+
* - The model's `finishReason` (anything other than `tool-use` with
|
|
8
|
+
* calls terminates).
|
|
9
|
+
* - `agent.budget.maxSteps` — enforced against `ctx.usage.steps`.
|
|
10
|
+
* - `agent.budget.maxCostUsd` — enforced against cumulative cost.
|
|
11
|
+
* - Cooperative abort from `ctx.turnAbort`.
|
|
12
|
+
* - `agent.output` — a final answer that isn't JSON matching the
|
|
13
|
+
* schema keeps the turn going with a repair message, while repairs
|
|
14
|
+
* (and steps) are left; after that the turn fails with
|
|
15
|
+
* `output-schema-violation`. Skipped on a dry run.
|
|
16
|
+
*
|
|
17
|
+
* Returns the fully-shaped `AgentTurnIterationOutput` — this is the
|
|
18
|
+
* iteration's `$loop-end` output that the loop node's `outputSchema`
|
|
19
|
+
* validates against.
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildBudgetCheckHandler(ctx: TurnContext): NodeHandler;
|
|
22
|
+
//# sourceMappingURL=budget-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budget-check.d.ts","sourceRoot":"","sources":["../../src/handlers/budget-check.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,OAAO,KAAK,EAA4B,WAAW,EAAE,MAAM,cAAc,CAAC;AAU1E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CA8ErE"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
import { DEFAULT_MAX_STEPS } from './constants.js';
|
|
4
|
+
import { throwAgentTurnFailure } from './errors.js';
|
|
5
|
+
import { DEFAULT_MAX_REPAIRS, outputChecker, repairMessage, repairsSoFar, } from './structured-output.js';
|
|
6
|
+
/**
|
|
7
|
+
* Loop-body node #3. The final gate before `$loop-end`. Decides
|
|
8
|
+
* whether the iteration finalizes the turn based on:
|
|
9
|
+
*
|
|
10
|
+
* - The model's `finishReason` (anything other than `tool-use` with
|
|
11
|
+
* calls terminates).
|
|
12
|
+
* - `agent.budget.maxSteps` — enforced against `ctx.usage.steps`.
|
|
13
|
+
* - `agent.budget.maxCostUsd` — enforced against cumulative cost.
|
|
14
|
+
* - Cooperative abort from `ctx.turnAbort`.
|
|
15
|
+
* - `agent.output` — a final answer that isn't JSON matching the
|
|
16
|
+
* schema keeps the turn going with a repair message, while repairs
|
|
17
|
+
* (and steps) are left; after that the turn fails with
|
|
18
|
+
* `output-schema-violation`. Skipped on a dry run.
|
|
19
|
+
*
|
|
20
|
+
* Returns the fully-shaped `AgentTurnIterationOutput` — this is the
|
|
21
|
+
* iteration's `$loop-end` output that the loop node's `outputSchema`
|
|
22
|
+
* validates against.
|
|
23
|
+
*/
|
|
24
|
+
export function buildBudgetCheckHandler(ctx) {
|
|
25
|
+
let checker;
|
|
26
|
+
return async (input, kctx) => {
|
|
27
|
+
if (ctx.turnAbort.signal.aborted) {
|
|
28
|
+
throwAgentTurnFailure({
|
|
29
|
+
code: 'agent-turn-aborted',
|
|
30
|
+
message: 'Agent turn aborted before budget-check',
|
|
31
|
+
reason: ctx.abortReason ?? 'timeout',
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
const partial = input;
|
|
35
|
+
const maxSteps = ctx.input.agent.budget?.maxSteps ?? DEFAULT_MAX_STEPS;
|
|
36
|
+
const maxCostUsd = ctx.input.agent.budget?.maxCostUsd;
|
|
37
|
+
// Cost cap is a hard failure — the caller sees `budget-exceeded`
|
|
38
|
+
// before the turn tries another iteration.
|
|
39
|
+
if (maxCostUsd !== undefined && ctx.usage.totalCostUsd > maxCostUsd) {
|
|
40
|
+
throwAgentTurnFailure({
|
|
41
|
+
code: 'budget-exceeded',
|
|
42
|
+
message: `Agent turn cost budget exceeded (limit ${maxCostUsd}, observed ${ctx.usage.totalCostUsd})`,
|
|
43
|
+
kind: 'cost',
|
|
44
|
+
limit: maxCostUsd,
|
|
45
|
+
observed: ctx.usage.totalCostUsd,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// Step cap — if the model still wants another tool call but we've
|
|
49
|
+
// used the allotted steps, fail the run.
|
|
50
|
+
if (partial.hasToolCalls && ctx.usage.steps >= maxSteps) {
|
|
51
|
+
throwAgentTurnFailure({
|
|
52
|
+
code: 'budget-exceeded',
|
|
53
|
+
message: `Agent turn steps budget exceeded (limit ${maxSteps}, observed ${ctx.usage.steps})`,
|
|
54
|
+
kind: 'steps',
|
|
55
|
+
limit: maxSteps,
|
|
56
|
+
observed: ctx.usage.steps,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
// `finishedTurn` semantics: true when the model's finishReason is
|
|
60
|
+
// terminal (i.e. not a live tool-use) — the current iteration's
|
|
61
|
+
// assistant message is the final answer.
|
|
62
|
+
let finishedTurn = !partial.hasToolCalls;
|
|
63
|
+
let nextMessages = partial.nextMessages;
|
|
64
|
+
const spec = ctx.input.agent.output;
|
|
65
|
+
if (finishedTurn && spec !== undefined && !kctx.dryRun) {
|
|
66
|
+
checker ??= outputChecker(spec);
|
|
67
|
+
const repair = outputRepair(spec, checker, partial.message, partial.nextMessages, {
|
|
68
|
+
stepsLeft: ctx.usage.steps < maxSteps,
|
|
69
|
+
});
|
|
70
|
+
if (repair !== undefined) {
|
|
71
|
+
finishedTurn = false;
|
|
72
|
+
nextMessages = repair;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const output = {
|
|
76
|
+
finishReason: partial.finishReason,
|
|
77
|
+
message: partial.message,
|
|
78
|
+
iterationAppended: partial.iterationAppended,
|
|
79
|
+
iterationUsage: partial.iterationUsage,
|
|
80
|
+
provider: partial.provider,
|
|
81
|
+
finishedTurn,
|
|
82
|
+
nextMessages,
|
|
83
|
+
};
|
|
84
|
+
return output;
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Check a final answer against the agent's output schema. A valid
|
|
89
|
+
* answer returns `undefined` (the turn finishes). An invalid one with
|
|
90
|
+
* repairs and steps left returns the next model call's messages: the
|
|
91
|
+
* answer, then a repair message listing what's wrong. Otherwise the
|
|
92
|
+
* turn fails with `output-schema-violation`.
|
|
93
|
+
*/
|
|
94
|
+
function outputRepair(spec, checker, answer, sent, budget) {
|
|
95
|
+
const checked = checker.check(answer.content);
|
|
96
|
+
if (checked.kind === 'ok')
|
|
97
|
+
return undefined;
|
|
98
|
+
const repairs = repairsSoFar(sent);
|
|
99
|
+
if (repairs < (spec.maxRepairs ?? DEFAULT_MAX_REPAIRS) && budget.stepsLeft) {
|
|
100
|
+
return [...sent, answer, repairMessage(spec, checked.errors)];
|
|
101
|
+
}
|
|
102
|
+
throwAgentTurnFailure({
|
|
103
|
+
code: 'output-schema-violation',
|
|
104
|
+
message: `The agent's answer does not match its ${spec.name ?? 'output'} schema after ${repairs} repair${repairs === 1 ? '' : 's'}: ${checked.errors.join('; ')}`,
|
|
105
|
+
errors: checked.errors,
|
|
106
|
+
attempts: repairs + 1,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=budget-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budget-check.js","sourceRoot":"","sources":["../../src/handlers/budget-check.ts"],"names":[],"mappings":"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"}
|