@kindgi/agents 0.1.2 → 0.1.4-rc.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.
Files changed (159) hide show
  1. package/dist/blocks.d.ts +101 -0
  2. package/dist/blocks.d.ts.map +1 -0
  3. package/dist/blocks.js +149 -0
  4. package/dist/blocks.js.map +1 -0
  5. package/dist/conversation-binding.d.ts +9 -1
  6. package/dist/conversation-binding.d.ts.map +1 -1
  7. package/dist/define.d.ts +17 -2
  8. package/dist/define.d.ts.map +1 -1
  9. package/dist/define.js +93 -6
  10. package/dist/define.js.map +1 -1
  11. package/dist/guardrails-gate.d.ts +7 -4
  12. package/dist/guardrails-gate.d.ts.map +1 -1
  13. package/dist/guardrails-gate.js +5 -2
  14. package/dist/guardrails-gate.js.map +1 -1
  15. package/dist/handlers/compose-result.d.ts.map +1 -1
  16. package/dist/handlers/compose-result.js +3 -0
  17. package/dist/handlers/compose-result.js.map +1 -1
  18. package/dist/handlers/context.d.ts +24 -0
  19. package/dist/handlers/context.d.ts.map +1 -1
  20. package/dist/handlers/dispatch-tools.d.ts.map +1 -1
  21. package/dist/handlers/dispatch-tools.js +69 -43
  22. package/dist/handlers/dispatch-tools.js.map +1 -1
  23. package/dist/handlers/errors.d.ts +12 -1
  24. package/dist/handlers/errors.d.ts.map +1 -1
  25. package/dist/handlers/errors.js.map +1 -1
  26. package/dist/handlers/evaluate-guardrails.d.ts.map +1 -1
  27. package/dist/handlers/evaluate-guardrails.js +36 -1
  28. package/dist/handlers/evaluate-guardrails.js.map +1 -1
  29. package/dist/handlers/gate-decision.d.ts +62 -0
  30. package/dist/handlers/gate-decision.d.ts.map +1 -0
  31. package/dist/handlers/gate-decision.js +55 -0
  32. package/dist/handlers/gate-decision.js.map +1 -0
  33. package/dist/handlers/model-call.d.ts +10 -0
  34. package/dist/handlers/model-call.d.ts.map +1 -1
  35. package/dist/handlers/model-call.js +120 -34
  36. package/dist/handlers/model-call.js.map +1 -1
  37. package/dist/handlers/persist-provenance.d.ts.map +1 -1
  38. package/dist/handlers/persist-provenance.js +3 -1
  39. package/dist/handlers/persist-provenance.js.map +1 -1
  40. package/dist/handlers/persist-user-message.d.ts.map +1 -1
  41. package/dist/handlers/persist-user-message.js +5 -16
  42. package/dist/handlers/persist-user-message.js.map +1 -1
  43. package/dist/handlers/public-types.d.ts +37 -3
  44. package/dist/handlers/public-types.d.ts.map +1 -1
  45. package/dist/handlers/rehydrate.d.ts.map +1 -1
  46. package/dist/handlers/rehydrate.js +91 -1
  47. package/dist/handlers/rehydrate.js.map +1 -1
  48. package/dist/handlers/render-prompt.d.ts.map +1 -1
  49. package/dist/handlers/render-prompt.js +4 -1
  50. package/dist/handlers/render-prompt.js.map +1 -1
  51. package/dist/handlers/replay.d.ts +143 -0
  52. package/dist/handlers/replay.d.ts.map +1 -0
  53. package/dist/handlers/replay.js +177 -0
  54. package/dist/handlers/replay.js.map +1 -0
  55. package/dist/handlers/resolve-blocks.d.ts +32 -0
  56. package/dist/handlers/resolve-blocks.d.ts.map +1 -0
  57. package/dist/handlers/resolve-blocks.js +129 -0
  58. package/dist/handlers/resolve-blocks.js.map +1 -0
  59. package/dist/handlers/resolve-tools.d.ts +6 -2
  60. package/dist/handlers/resolve-tools.d.ts.map +1 -1
  61. package/dist/handlers/resolve-tools.js +59 -27
  62. package/dist/handlers/resolve-tools.js.map +1 -1
  63. package/dist/handlers/result-shape.d.ts +7 -0
  64. package/dist/handlers/result-shape.d.ts.map +1 -1
  65. package/dist/handlers/result-shape.js.map +1 -1
  66. package/dist/handlers/run-retrievals.d.ts.map +1 -1
  67. package/dist/handlers/run-retrievals.js +35 -35
  68. package/dist/handlers/run-retrievals.js.map +1 -1
  69. package/dist/handlers/run-snapshot.d.ts.map +1 -1
  70. package/dist/handlers/run-snapshot.js +1 -0
  71. package/dist/handlers/run-snapshot.js.map +1 -1
  72. package/dist/handlers/setup.d.ts +2 -0
  73. package/dist/handlers/setup.d.ts.map +1 -1
  74. package/dist/handlers/setup.js +29 -12
  75. package/dist/handlers/setup.js.map +1 -1
  76. package/dist/handlers/tool-hitl.d.ts +5 -9
  77. package/dist/handlers/tool-hitl.d.ts.map +1 -1
  78. package/dist/handlers/tool-hitl.js +5 -0
  79. package/dist/handlers/tool-hitl.js.map +1 -1
  80. package/dist/handlers/turn-environment.d.ts +13 -2
  81. package/dist/handlers/turn-environment.d.ts.map +1 -1
  82. package/dist/handlers/turn-environment.js +12 -3
  83. package/dist/handlers/turn-environment.js.map +1 -1
  84. package/dist/handlers/turn-provenance.d.ts +67 -0
  85. package/dist/handlers/turn-provenance.d.ts.map +1 -0
  86. package/dist/handlers/turn-provenance.js +160 -0
  87. package/dist/handlers/turn-provenance.js.map +1 -0
  88. package/dist/index.d.ts +10 -1
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +5 -0
  91. package/dist/index.js.map +1 -1
  92. package/dist/invoke.d.ts +14 -1
  93. package/dist/invoke.d.ts.map +1 -1
  94. package/dist/invoke.js +37 -19
  95. package/dist/invoke.js.map +1 -1
  96. package/dist/pins.d.ts +54 -0
  97. package/dist/pins.d.ts.map +1 -0
  98. package/dist/pins.js +51 -0
  99. package/dist/pins.js.map +1 -0
  100. package/dist/prompt.d.ts +12 -2
  101. package/dist/prompt.d.ts.map +1 -1
  102. package/dist/prompt.js +41 -4
  103. package/dist/prompt.js.map +1 -1
  104. package/dist/provenance-emit.d.ts +4 -2
  105. package/dist/provenance-emit.d.ts.map +1 -1
  106. package/dist/provenance-emit.js +4 -2
  107. package/dist/provenance-emit.js.map +1 -1
  108. package/dist/run-snapshot-binding.d.ts +5 -0
  109. package/dist/run-snapshot-binding.d.ts.map +1 -1
  110. package/dist/schema.d.ts +34 -0
  111. package/dist/schema.d.ts.map +1 -1
  112. package/dist/schema.js +16 -0
  113. package/dist/schema.js.map +1 -1
  114. package/dist/streaming.d.ts +5 -0
  115. package/dist/streaming.d.ts.map +1 -1
  116. package/dist/streaming.js.map +1 -1
  117. package/dist/types.d.ts +65 -2
  118. package/dist/types.d.ts.map +1 -1
  119. package/migrations/0003_hesitant_captain_cross.sql +2 -0
  120. package/migrations/0004_stormy_moondragon.sql +1 -0
  121. package/migrations/meta/0003_snapshot.json +321 -0
  122. package/migrations/meta/0004_snapshot.json +327 -0
  123. package/migrations/meta/_journal.json +14 -0
  124. package/package.json +15 -15
  125. package/src/blocks.ts +231 -0
  126. package/src/conversation-binding.ts +9 -1
  127. package/src/define.ts +104 -7
  128. package/src/guardrails-gate.ts +17 -3
  129. package/src/handlers/compose-result.ts +3 -0
  130. package/src/handlers/context.ts +24 -0
  131. package/src/handlers/dispatch-tools.ts +75 -44
  132. package/src/handlers/errors.ts +13 -0
  133. package/src/handlers/evaluate-guardrails.ts +41 -1
  134. package/src/handlers/gate-decision.ts +101 -0
  135. package/src/handlers/model-call.ts +163 -33
  136. package/src/handlers/persist-provenance.ts +3 -1
  137. package/src/handlers/persist-user-message.ts +3 -16
  138. package/src/handlers/public-types.ts +38 -3
  139. package/src/handlers/rehydrate.ts +141 -9
  140. package/src/handlers/render-prompt.ts +13 -7
  141. package/src/handlers/replay.ts +314 -0
  142. package/src/handlers/resolve-blocks.ts +188 -0
  143. package/src/handlers/resolve-tools.ts +76 -28
  144. package/src/handlers/result-shape.ts +8 -0
  145. package/src/handlers/run-retrievals.ts +45 -41
  146. package/src/handlers/run-snapshot.ts +1 -0
  147. package/src/handlers/setup.ts +30 -22
  148. package/src/handlers/tool-hitl.ts +6 -10
  149. package/src/handlers/turn-environment.ts +28 -3
  150. package/src/handlers/turn-provenance.ts +230 -0
  151. package/src/index.ts +44 -0
  152. package/src/invoke.ts +49 -20
  153. package/src/pins.ts +98 -0
  154. package/src/prompt.ts +52 -4
  155. package/src/provenance-emit.ts +4 -1
  156. package/src/run-snapshot-binding.ts +6 -0
  157. package/src/schema.ts +16 -0
  158. package/src/streaming.ts +5 -0
  159. package/src/types.ts +68 -2
@@ -0,0 +1,62 @@
1
+ /**
2
+ * The reviewer's answer at an agent turn's approval gates: the tool-call
3
+ * gate (`dispatch-tools`) and the session gate (`setup`). A gate parks the
4
+ * turn on a waitpoint; the approvals route resumes it with the decision
5
+ * (`GateDecisionValue`): approve or reject, the reviewer's rationale, and
6
+ * who decided which approval.
7
+ *
8
+ * A gate fails closed. Only an explicit approve lets the tool run (or the
9
+ * session go on). Anything else blocks: a reject, and also a resume value
10
+ * that isn't a decision at all (a `value` that replaced it, a malformed
11
+ * payload), so no answer can be read as consent by omission.
12
+ */
13
+ /** The approval subject an agent's tool-call gate parks on. */
14
+ export declare const TOOL_CALL_GATE_SUBJECT = "tool-call:pending";
15
+ /** The approval subject an agent's session gate (`afterTurns`) parks on. */
16
+ export declare const SESSION_GATE_SUBJECT = "agent-turn:session-hitl-gate";
17
+ /**
18
+ * The approval subjects an agent turn parks on. Their resume value is the
19
+ * reviewer's decision and nothing else, so the approvals route takes no
20
+ * `value` for them.
21
+ */
22
+ export declare const AGENT_GATE_SUBJECTS: ReadonlySet<string>;
23
+ /**
24
+ * A gate's resume value: the reviewer's decision, as the approvals route
25
+ * (and the runtime, delivering a decision whose delivery was lost) completes
26
+ * the gate's waitpoint with it. The run's journal keeps it as it came.
27
+ */
28
+ export interface GateDecisionValue {
29
+ readonly decided: 'approve' | 'reject';
30
+ readonly rationale?: string;
31
+ /**
32
+ * Who decided, as an actor: `user:<userId>`, the reviewer's user. Absent
33
+ * from values written before it was recorded.
34
+ */
35
+ readonly decidedBy?: string;
36
+ /** The approval decided. Absent from values written before it was recorded. */
37
+ readonly approvalId?: string;
38
+ }
39
+ /** Who decided a gate, and which approval, when its value says. */
40
+ interface GateDecider {
41
+ readonly decidedBy?: string;
42
+ readonly approvalId?: string;
43
+ }
44
+ /** What a gate's resume value decides. */
45
+ export type GateDecision = GateDecider & ({
46
+ readonly approved: true;
47
+ } | {
48
+ readonly approved: false;
49
+ /** `rejected`: the reviewer said no. `unreadable`: the answer wasn't a decision. */
50
+ readonly reason: 'rejected' | 'unreadable';
51
+ /** The reviewer's rationale, or why an unreadable answer blocks. */
52
+ readonly rationale: string | undefined;
53
+ });
54
+ /** Why a gate blocks on an answer that isn't a decision. */
55
+ export declare const UNREADABLE_DECISION = "the approval's answer wasn't a decision (approve or reject), so it counts as a rejection";
56
+ /**
57
+ * The decision in a gate's resume value. Fails closed: only
58
+ * `{ decided: 'approve' }` approves.
59
+ */
60
+ export declare function readGateDecision(value: unknown): GateDecision;
61
+ export {};
62
+ //# sourceMappingURL=gate-decision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate-decision.d.ts","sourceRoot":"","sources":["../../src/handlers/gate-decision.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AAEH,+DAA+D;AAC/D,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAE1D,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,iCAAiC,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAGlD,CAAC;AAEH;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,QAAQ,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,mEAAmE;AACnE,UAAU,WAAW;IACnB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,0CAA0C;AAC1C,MAAM,MAAM,YAAY,GAAG,WAAW,GACpC,CACI;IAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,GAC3B;IACE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,oFAAoF;IACpF,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY,CAAC;IAC3C,oEAAoE;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC,CACJ,CAAC;AAEJ,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,6FAC4D,CAAC;AAE7F;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAwB7D"}
@@ -0,0 +1,55 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ /**
4
+ * The reviewer's answer at an agent turn's approval gates: the tool-call
5
+ * gate (`dispatch-tools`) and the session gate (`setup`). A gate parks the
6
+ * turn on a waitpoint; the approvals route resumes it with the decision
7
+ * (`GateDecisionValue`): approve or reject, the reviewer's rationale, and
8
+ * who decided which approval.
9
+ *
10
+ * A gate fails closed. Only an explicit approve lets the tool run (or the
11
+ * session go on). Anything else blocks: a reject, and also a resume value
12
+ * that isn't a decision at all (a `value` that replaced it, a malformed
13
+ * payload), so no answer can be read as consent by omission.
14
+ */
15
+ /** The approval subject an agent's tool-call gate parks on. */
16
+ export const TOOL_CALL_GATE_SUBJECT = 'tool-call:pending';
17
+ /** The approval subject an agent's session gate (`afterTurns`) parks on. */
18
+ export const SESSION_GATE_SUBJECT = 'agent-turn:session-hitl-gate';
19
+ /**
20
+ * The approval subjects an agent turn parks on. Their resume value is the
21
+ * reviewer's decision and nothing else, so the approvals route takes no
22
+ * `value` for them.
23
+ */
24
+ export const AGENT_GATE_SUBJECTS = new Set([
25
+ TOOL_CALL_GATE_SUBJECT,
26
+ SESSION_GATE_SUBJECT,
27
+ ]);
28
+ /** Why a gate blocks on an answer that isn't a decision. */
29
+ export const UNREADABLE_DECISION = "the approval's answer wasn't a decision (approve or reject), so it counts as a rejection";
30
+ /**
31
+ * The decision in a gate's resume value. Fails closed: only
32
+ * `{ decided: 'approve' }` approves.
33
+ */
34
+ export function readGateDecision(value) {
35
+ if (typeof value !== 'object' || value === null) {
36
+ return { approved: false, reason: 'unreadable', rationale: UNREADABLE_DECISION };
37
+ }
38
+ const { decided, rationale, decidedBy, approvalId } = value;
39
+ const decider = {
40
+ ...(typeof decidedBy === 'string' && { decidedBy }),
41
+ ...(typeof approvalId === 'string' && { approvalId }),
42
+ };
43
+ if (decided === 'approve')
44
+ return { approved: true, ...decider };
45
+ if (decided === 'reject') {
46
+ return {
47
+ approved: false,
48
+ reason: 'rejected',
49
+ rationale: typeof rationale === 'string' ? rationale : undefined,
50
+ ...decider,
51
+ };
52
+ }
53
+ return { approved: false, reason: 'unreadable', rationale: UNREADABLE_DECISION };
54
+ }
55
+ //# sourceMappingURL=gate-decision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate-decision.js","sourceRoot":"","sources":["../../src/handlers/gate-decision.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;;;;;;;GAWG;AAEH,+DAA+D;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAC;AAE1D,4EAA4E;AAC5E,MAAM,CAAC,MAAM,oBAAoB,GAAG,8BAA8B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC;IAC9D,sBAAsB;IACtB,oBAAoB;CACrB,CAAC,CAAC;AAsCH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,mBAAmB,GAC9B,0FAA0F,CAAC;AAE7F;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACnF,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,KAKrD,CAAC;IACF,MAAM,OAAO,GAAgB;QAC3B,GAAG,CAAC,OAAO,SAAS,KAAK,QAAQ,IAAI,EAAE,SAAS,EAAE,CAAC;QACnD,GAAG,CAAC,OAAO,UAAU,KAAK,QAAQ,IAAI,EAAE,UAAU,EAAE,CAAC;KACtD,CAAC;IACF,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IACjE,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YAChE,GAAG,OAAO;SACX,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;AACnF,CAAC"}
@@ -6,6 +6,16 @@ import type { TurnContext } from './context.js';
6
6
  * `model.call.completed`, records provenance for the model-call node,
7
7
  * and accumulates usage on `ctx.usage`.
8
8
  *
9
+ * Every call is recorded in the usage sink (`InvokeAgentBindings.usage`,
10
+ * the runtime's cost ledger) before the step goes on, a call that threw
11
+ * included. A sink that fails is tried again (a record is idempotent by
12
+ * call id); one that still fails fails the step when the call succeeded,
13
+ * so no answered call is left unrecorded. A call that failed keeps its
14
+ * own failure, which says it couldn't be recorded too. The call's id goes into
15
+ * the step's output and its provenance node, which keeps the call's
16
+ * identity (provider, model) while its usage lives in the ledger. A dry
17
+ * run spends nothing and records nothing.
18
+ *
9
19
  * Output is a partial `AgentTurnIterationOutput` — `dispatch-tools`
10
20
  * receives it and finishes composing the iteration output.
11
21
  */
@@ -1 +1 @@
1
- {"version":3,"file":"model-call.d.ts","sourceRoot":"","sources":["../../src/handlers/model-call.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,OAAO,KAAK,EAA4B,WAAW,EAAE,MAAM,cAAc,CAAC;AAG1E;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CAwHnE"}
1
+ {"version":3,"file":"model-call.d.ts","sourceRoot":"","sources":["../../src/handlers/model-call.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKhE,OAAO,KAAK,EAA4B,WAAW,EAAE,MAAM,cAAc,CAAC;AAK1E;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CA0GnE"}
@@ -1,13 +1,28 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  // Copyright (C) 2026 Kindgi Inc.
3
+ import { randomUUID } from 'node:crypto';
4
+ import { recordModelUsage, } from '@kindgi/capabilities';
5
+ import { attemptsOf } from '@kindgi/capabilities/attempts';
3
6
  import { emitTurnEvent } from '../streaming.js';
4
7
  import { throwAgentTurnFailure } from './errors.js';
8
+ import { replayTag } from './replay.js';
9
+ import { addModelCallNode } from './turn-provenance.js';
5
10
  /**
6
11
  * Loop-body node #1. Invoke the model with the current
7
12
  * `nextMessages` accumulator. Emits `model.call.started` +
8
13
  * `model.call.completed`, records provenance for the model-call node,
9
14
  * and accumulates usage on `ctx.usage`.
10
15
  *
16
+ * Every call is recorded in the usage sink (`InvokeAgentBindings.usage`,
17
+ * the runtime's cost ledger) before the step goes on, a call that threw
18
+ * included. A sink that fails is tried again (a record is idempotent by
19
+ * call id); one that still fails fails the step when the call succeeded,
20
+ * so no answered call is left unrecorded. A call that failed keeps its
21
+ * own failure, which says it couldn't be recorded too. The call's id goes into
22
+ * the step's output and its provenance node, which keeps the call's
23
+ * identity (provider, model) while its usage lives in the ledger. A dry
24
+ * run spends nothing and records nothing.
25
+ *
11
26
  * Output is a partial `AgentTurnIterationOutput` — `dispatch-tools`
12
27
  * receives it and finishes composing the iteration output.
13
28
  */
@@ -23,6 +38,8 @@ export function buildModelCallHandler(ctx) {
23
38
  const shaped = input;
24
39
  const nextMessages = shaped?.nextMessages ?? [];
25
40
  ctx.usage.steps += 1;
41
+ const step = ctx.usage.steps;
42
+ const callId = randomUUID();
26
43
  await emitTurnEvent(ctx.bindings.onEvent, {
27
44
  kind: 'model.call.started',
28
45
  step: ctx.usage.steps,
@@ -51,28 +68,17 @@ export function buildModelCallHandler(ctx) {
51
68
  ...(ctx.tools.definitions.length > 0 && {
52
69
  tools: ctx.tools.definitions,
53
70
  }),
71
+ ...modelSettingsOf(ctx),
54
72
  abortSignal: ctx.turnAbort.signal,
55
73
  };
74
+ const startedAt = Date.now();
56
75
  try {
57
76
  callResult = await ctx.provider.invoke(callInput);
58
77
  }
59
78
  catch (cause) {
60
- if (ctx.turnAbort.signal.aborted) {
61
- throwAgentTurnFailure({
62
- code: 'agent-turn-aborted',
63
- message: `Agent turn aborted: ${cause instanceof Error ? cause.message : String(cause)}`,
64
- reason: ctx.abortReason ?? 'timeout',
65
- });
66
- }
67
- // The provider's own words (a 401's "invalid x-api-key", a 429)
68
- // are what the caller needs; they're in `cause` too, but callers
69
- // show `message`.
70
- throwAgentTurnFailure({
71
- code: 'model-invocation-failed',
72
- message: `Model call to ${ctx.provider.metadata.id} (${ctx.model.name}) failed: ${describeCause(cause)}`,
73
- cause,
74
- });
79
+ return await failCall(ctx, kctx, { callId, step, cause, startedAt });
75
80
  }
81
+ await recordAnswer(ctx, kctx, callId, step, callResult);
76
82
  }
77
83
  ctx.usage.promptTokens += callResult.usage.promptTokens;
78
84
  ctx.usage.completionTokens += callResult.usage.completionTokens;
@@ -88,29 +94,18 @@ export function buildModelCallHandler(ctx) {
88
94
  durationMs: callResult.durationMs,
89
95
  });
90
96
  if (ctx.provenance !== undefined && ctx.userMessage !== undefined) {
91
- const modelCallNodeId = `model-call:${ctx.usage.steps}`;
92
- ctx.provenance.addNode({
93
- id: modelCallNodeId,
94
- kind: 'model-call',
95
- timestamp: new Date().toISOString(),
96
- modelVersion: `${callResult.provider.id}/${callResult.provider.model}`,
97
- attributes: {
98
- step: ctx.usage.steps,
99
- promptTokens: callResult.usage.promptTokens,
100
- completionTokens: callResult.usage.completionTokens,
101
- costUsd: callResult.costUsd,
102
- finishReason: callResult.finishReason,
103
- },
104
- });
105
- ctx.provenance.addEdge({
106
- from: modelCallNodeId,
107
- to: `input:${ctx.userMessage.sequence}`,
108
- kind: 'caused-by',
109
- });
97
+ addModelCallNode(ctx.provenance, {
98
+ step: ctx.usage.steps,
99
+ callId,
100
+ provider: callResult.provider,
101
+ finishReason: callResult.finishReason,
102
+ at: new Date().toISOString(),
103
+ }, ctx.userMessage.sequence, ctx.toolResultIds ?? []);
110
104
  }
111
105
  // Partial iteration output — `dispatch-tools` finishes it.
112
106
  const partial = {
113
107
  step: ctx.usage.steps,
108
+ callId,
114
109
  finishReason: callResult.finishReason,
115
110
  message: callResult.message,
116
111
  iterationUsage: {
@@ -124,6 +119,89 @@ export function buildModelCallHandler(ctx) {
124
119
  return partial;
125
120
  };
126
121
  }
122
+ /**
123
+ * A call that answered: record it before the step goes on. A sink that
124
+ * still fails after its retries fails the step: an answered call isn't
125
+ * left unrecorded.
126
+ */
127
+ async function recordAnswer(ctx, kctx, callId, step, answer) {
128
+ const { message: _answer, ...result } = answer;
129
+ const unrecorded = await recordCall(ctx, kctx, {
130
+ callId,
131
+ step,
132
+ status: 'ok',
133
+ result,
134
+ durationMs: answer.durationMs,
135
+ });
136
+ if (unrecorded !== undefined) {
137
+ throwAgentTurnFailure({
138
+ code: 'persistence-error',
139
+ message: `The model call couldn't be recorded: ${describeCause(unrecorded)}`,
140
+ cause: unrecorded,
141
+ });
142
+ }
143
+ }
144
+ /**
145
+ * A call that threw: record it, then fail the step with the call's own
146
+ * failure (aborted, or the provider's words). A record that failed too
147
+ * is said after it.
148
+ */
149
+ async function failCall(ctx, kctx, failed) {
150
+ const { cause } = failed;
151
+ const attempts = attemptsOf(cause);
152
+ const unrecorded = await recordCall(ctx, kctx, {
153
+ callId: failed.callId,
154
+ step: failed.step,
155
+ status: 'failed',
156
+ error: { message: describeCause(cause), ...(attempts !== undefined && { attempts }) },
157
+ durationMs: Date.now() - failed.startedAt,
158
+ });
159
+ const andUnrecorded = unrecorded === undefined
160
+ ? ''
161
+ : ` (and the failed call couldn't be recorded: ${describeCause(unrecorded)})`;
162
+ if (ctx.turnAbort.signal.aborted) {
163
+ throwAgentTurnFailure({
164
+ code: 'agent-turn-aborted',
165
+ message: `Agent turn aborted: ${cause instanceof Error ? cause.message : String(cause)}${andUnrecorded}`,
166
+ reason: ctx.abortReason ?? 'timeout',
167
+ });
168
+ }
169
+ // The provider's own words (a 401's "invalid x-api-key", a 429) are
170
+ // what the caller needs; they're in `cause` too, but callers show
171
+ // `message`.
172
+ throwAgentTurnFailure({
173
+ code: 'model-invocation-failed',
174
+ message: `Model call to ${ctx.provider?.metadata.id} (${ctx.model?.name}) failed: ${describeCause(cause)}${andUnrecorded}`,
175
+ cause,
176
+ });
177
+ }
178
+ /**
179
+ * Record a model call in the usage sink, when the turn has one, trying
180
+ * a failing sink again. Resolves with the sink's last failure when it
181
+ * couldn't record; the caller decides what that means for the step.
182
+ */
183
+ async function recordCall(ctx, kctx, call) {
184
+ const sink = ctx.bindings.usage;
185
+ if (sink === undefined || ctx.provider === undefined || ctx.model === undefined)
186
+ return;
187
+ const { input } = ctx;
188
+ const recorded = await recordModelUsage(sink, {
189
+ ...call,
190
+ tenantId: input.tenantId,
191
+ projectId: input.projectId,
192
+ runId: kctx.runId,
193
+ agentId: input.agent.id,
194
+ agentVersion: input.agent.version,
195
+ conversationId: input.conversationId,
196
+ nodeId: kctx.nodeId,
197
+ providerId: ctx.provider.metadata.id,
198
+ model: ctx.model.name,
199
+ ...(ctx.provider.metadata.fallback === true && { fallback: true }),
200
+ ...(input.replay !== undefined && { replay: replayTag(input.replay) }),
201
+ occurredAt: new Date().toISOString(),
202
+ });
203
+ return recorded.kind === 'err' ? (recorded.error ?? new Error('no detail')) : undefined;
204
+ }
127
205
  /** Longest cause text a failure message carries. */
128
206
  const MAX_CAUSE_CHARS = 500;
129
207
  /** A thrown value's message on one line, at most `MAX_CAUSE_CHARS` long. */
@@ -133,4 +211,12 @@ function describeCause(cause) {
133
211
  return cause instanceof Error ? cause.name : 'no detail';
134
212
  return text.length > MAX_CAUSE_CHARS ? `${text.slice(0, MAX_CAUSE_CHARS - 1)}…` : text;
135
213
  }
214
+ /** The pinned model-settings block's values, as model-call fields; none when it has none. */
215
+ function modelSettingsOf(ctx) {
216
+ const settings = ctx.blocks?.modelSettings;
217
+ return {
218
+ ...(settings?.temperature !== undefined && { temperature: settings.temperature }),
219
+ ...(settings?.maxOutputTokens !== undefined && { maxOutputTokens: settings.maxOutputTokens }),
220
+ };
221
+ }
136
222
  //# sourceMappingURL=model-call.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-call.js","sourceRoot":"","sources":["../../src/handlers/model-call.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAKjC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAgB;IACpD,OAAO,KAAK,EAAE,KAAc,EAAE,IAAI,EAAE,EAAE;QACpC,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACrF,qBAAqB,CAAC;gBACpB,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,2CAA2C;gBACpD,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;QACL,CAAC;QACD,MAAM,MAAM,GAAG,KAAwE,CAAC;QACxF,MAAM,YAAY,GAA4B,MAAM,EAAE,YAAY,IAAI,EAAE,CAAC;QAEzE,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QAErB,MAAM,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE;YACxC,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK;YACrB,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACpC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI;SACtB,CAAC,CAAC;QAEH,IAAI,UAA2D,CAAC;QAChE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,6DAA6D;YAC7D,+DAA+D;YAC/D,6DAA6D;YAC7D,YAAY;YACZ,UAAU,GAAG;gBACX,YAAY,EAAE,MAAM;gBACpB,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,+BAA+B,EAAE;gBACxE,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE;gBAC/C,OAAO,EAAE,CAAC;gBACV,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;aAClE,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAmB;gBAChC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI;gBACrB,QAAQ,EAAE,YAAY;gBACtB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI;oBACtC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW;iBAC7B,CAAC;gBACF,WAAW,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM;aAClC,CAAC;YAEF,IAAI,CAAC;gBACH,UAAU,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjC,qBAAqB,CAAC;wBACpB,IAAI,EAAE,oBAAoB;wBAC1B,OAAO,EAAE,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;wBACxF,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;qBACrC,CAAC,CAAC;gBACL,CAAC;gBACD,gEAAgE;gBAChE,iEAAiE;gBACjE,kBAAkB;gBAClB,qBAAqB,CAAC;oBACpB,IAAI,EAAE,yBAAyB;oBAC/B,OAAO,EAAE,iBAAiB,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,aAAa,aAAa,CAAC,KAAK,CAAC,EAAE;oBACxG,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC;QACxD,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAChE,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,UAAU,CAAC,OAAO,CAAC;QAC7C,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC;QAEvC,MAAM,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE;YACxC,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK;YACrB,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,YAAY;YAC3C,gBAAgB,EAAE,UAAU,CAAC,KAAK,CAAC,gBAAgB;YACnD,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,UAAU,EAAE,UAAU,CAAC,UAAU;SAClC,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAClE,MAAM,eAAe,GAAG,cAAc,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACxD,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;gBACrB,EAAE,EAAE,eAAe;gBACnB,IAAI,EAAE,YAAY;gBAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAW;gBAC5C,YAAY,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE;gBACtE,UAAU,EAAE;oBACV,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK;oBACrB,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,YAAY;oBAC3C,gBAAgB,EAAE,UAAU,CAAC,KAAK,CAAC,gBAAgB;oBACnD,OAAO,EAAE,UAAU,CAAC,OAAO;oBAC3B,YAAY,EAAE,UAAU,CAAC,YAAY;iBACtC;aACF,CAAC,CAAC;YACH,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;gBACrB,IAAI,EAAE,eAAe;gBACrB,EAAE,EAAE,SAAS,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE;gBACvC,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;QACL,CAAC;QAED,2DAA2D;QAC3D,MAAM,OAAO,GAET;YACF,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK;YACrB,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,cAAc,EAAE;gBACd,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,YAAY;gBAC3C,gBAAgB,EAAE,UAAU,CAAC,KAAK,CAAC,gBAAgB;gBACnD,OAAO,EAAE,UAAU,CAAC,OAAO;aAC5B;YACD,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,YAAY;SACb,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AAED,oDAAoD;AACpD,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,4EAA4E;AAC5E,SAAS,aAAa,CAAC,KAAc;IACnC,MAAM,IAAI,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAClG,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;IAChF,OAAO,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACzF,CAAC"}
1
+ {"version":3,"file":"model-call.js","sourceRoot":"","sources":["../../src/handlers/model-call.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"persist-provenance.d.ts","sourceRoot":"","sources":["../../src/handlers/persist-provenance.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CAqB3E"}
1
+ {"version":3,"file":"persist-provenance.d.ts","sourceRoot":"","sources":["../../src/handlers/persist-provenance.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CAuB3E"}
@@ -22,7 +22,9 @@ export function buildPersistProvenanceHandler(ctx) {
22
22
  // want).
23
23
  return { persisted: false };
24
24
  }
25
- const persisted = await persistProvenance(ctx.provenance, ctx.provenanceBindings);
25
+ const persisted = await persistProvenance(ctx.provenance, ctx.provenanceBindings, {
26
+ projectId: ctx.input.projectId,
27
+ });
26
28
  if (persisted.kind === 'ok') {
27
29
  ctx.persistedProvenance = persisted.value;
28
30
  return { persisted: true };
@@ -1 +1 @@
1
- {"version":3,"file":"persist-provenance.js","sourceRoot":"","sources":["../../src/handlers/persist-provenance.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAIjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAI1D;;;;;;;GAOG;AACH,MAAM,UAAU,6BAA6B,CAAC,GAAgB;IAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC5B,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACzE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,wDAAwD;YACxD,0DAA0D;YAC1D,0DAA0D;YAC1D,iEAAiE;YACjE,SAAS;YACT,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC9B,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAClF,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC5B,GAAG,CAAC,mBAAmB,GAAG,SAAS,CAAC,KAAK,CAAC;YAC1C,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC7B,CAAC;QACD,6DAA6D;QAC7D,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"persist-provenance.js","sourceRoot":"","sources":["../../src/handlers/persist-provenance.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAIjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAI1D;;;;;;;GAOG;AACH,MAAM,UAAU,6BAA6B,CAAC,GAAgB;IAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC5B,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACzE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,wDAAwD;YACxD,0DAA0D;YAC1D,0DAA0D;YAC1D,iEAAiE;YACjE,SAAS;YACT,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC9B,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,kBAAkB,EAAE;YAChF,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS;SAC/B,CAAC,CAAC;QACH,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC5B,GAAG,CAAC,mBAAmB,GAAG,SAAS,CAAC,KAAK,CAAC;YAC1C,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC7B,CAAC;QACD,6DAA6D;QAC7D,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"persist-user-message.d.ts","sourceRoot":"","sources":["../../src/handlers/persist-user-message.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CA+C5E"}
1
+ {"version":3,"file":"persist-user-message.d.ts","sourceRoot":"","sources":["../../src/handlers/persist-user-message.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAIhD;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CAiC5E"}
@@ -1,6 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  // Copyright (C) 2026 Kindgi Inc.
3
3
  import { throwAgentTurnFailure } from './errors.js';
4
+ import { addInputNode } from './turn-provenance.js';
4
5
  /**
5
6
  * Persist the caller's user message BEFORE the model is called. A
6
7
  * crash mid-turn leaves the question intact for a later replay. Also
@@ -24,14 +25,8 @@ export function buildPersistUserMessageHandler(ctx) {
24
25
  };
25
26
  ctx.userMessage = synthetic;
26
27
  ctx.appended.push(synthetic);
27
- if (ctx.provenance !== undefined) {
28
- ctx.provenance.addNode({
29
- id: `input:${synthetic.sequence}`,
30
- kind: 'input',
31
- timestamp: synthetic.createdAt,
32
- ...(synthetic.actor !== undefined && { actor: synthetic.actor }),
33
- });
34
- }
28
+ if (ctx.provenance !== undefined)
29
+ addInputNode(ctx.provenance, synthetic);
35
30
  return { sequence: synthetic.sequence };
36
31
  }
37
32
  const persisted = await ctx.bindings.conversationBinding.appendMessage({
@@ -45,14 +40,8 @@ export function buildPersistUserMessageHandler(ctx) {
45
40
  throwAgentTurnFailure(persisted.error);
46
41
  ctx.userMessage = persisted.value;
47
42
  ctx.appended.push(persisted.value);
48
- if (ctx.provenance !== undefined) {
49
- ctx.provenance.addNode({
50
- id: `input:${persisted.value.sequence}`,
51
- kind: 'input',
52
- timestamp: persisted.value.createdAt,
53
- ...(persisted.value.actor !== undefined && { actor: persisted.value.actor }),
54
- });
55
- }
43
+ if (ctx.provenance !== undefined)
44
+ addInputNode(ctx.provenance, persisted.value);
56
45
  return { sequence: persisted.value.sequence };
57
46
  };
58
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"persist-user-message.js","sourceRoot":"","sources":["../../src/handlers/persist-user-message.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAQjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,8BAA8B,CAAC,GAAgB;IAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC5B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,SAAS,GAAwB;gBACrC,QAAQ,EAAE,CAAC,CAAC;gBACZ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW;gBAC9B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAe;gBAChD,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;aACjF,CAAC;YACF,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC;YAC5B,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE7B,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACjC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;oBACrB,EAAE,EAAE,SAAS,SAAS,CAAC,QAAQ,EAAE;oBACjC,IAAI,EAAE,OAAO;oBACb,SAAS,EAAE,SAAS,CAAC,SAAS;oBAC9B,GAAG,CAAC,SAAS,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;iBACjE,CAAC,CAAC;YACL,CAAC;YACD,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC1C,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,CAAC;YACrE,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ;YAC5B,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,cAAc;YACxC,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW;YAC9B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;SACjF,CAAC,CAAC;QACH,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK;YAAE,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAErE,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC;QAClC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEnC,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACjC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;gBACrB,EAAE,EAAE,SAAS,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACvC,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,SAAS;gBACpC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;aAC7E,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAChD,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"persist-user-message.js","sourceRoot":"","sources":["../../src/handlers/persist-user-message.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAQjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,8BAA8B,CAAC,GAAgB;IAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC5B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,SAAS,GAAwB;gBACrC,QAAQ,EAAE,CAAC,CAAC;gBACZ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW;gBAC9B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAe;gBAChD,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;aACjF,CAAC;YACF,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC;YAC5B,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE7B,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS;gBAAE,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC1E,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC1C,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,CAAC;YACrE,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ;YAC5B,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,cAAc;YACxC,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW;YAC9B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;SACjF,CAAC,CAAC;QACH,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK;YAAE,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAErE,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC;QAClC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEnC,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS;YAAE,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAEhF,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAChD,CAAC,CAAC;AACJ,CAAC"}
@@ -1,17 +1,19 @@
1
1
  import type { Principal } from '@kindgi/authz';
2
- import type { ProviderRegistry, TenantPolicy } from '@kindgi/capabilities';
2
+ import type { ProviderRegistry, TenantPolicy, UsageSink } from '@kindgi/capabilities';
3
3
  import type { EmbeddingProviderRegistry } from '@kindgi/embedding';
4
4
  import type { MemoryQueryBinding } from '@kindgi/memory';
5
5
  import type { PolicyRegistry } from '@kindgi/policy-contract';
6
- import type { ParentRunRef, RunBinding } from '@kindgi/runtime';
6
+ import type { ParentRunRef, RunBinding, RunReplayRef } from '@kindgi/runtime';
7
7
  import type { ToolRegistry, ToolSecretRef } from '@kindgi/tools';
8
- import type { ProjectId, ProvenanceId, RunId, TenantId, Timestamp } from '@kindgi/types';
8
+ import type { OrgId, ProjectId, ProvenanceId, RunId, TenantId, Timestamp } from '@kindgi/types';
9
+ import type { BlockReader } from '../blocks.js';
9
10
  import type { ConversationBinding } from '../conversation-binding.js';
10
11
  import type { GuardrailsBindings } from '../guardrails-gate.js';
11
12
  import type { ProvenanceBindings } from '../provenance-emit.js';
12
13
  import type { RunSnapshotBinding } from '../run-snapshot-binding.js';
13
14
  import type { OnTurnEvent } from '../streaming.js';
14
15
  import type { Agent, ConversationId } from '../types.js';
16
+ import type { ReplayBinding } from './replay.js';
15
17
  /**
16
18
  * The user-facing input to `invokeAgent`. Split out from `invoke.ts` so
17
19
  * the handler modules can depend on the shape without pulling in the
@@ -27,6 +29,12 @@ export interface InvokeAgentInput {
27
29
  * at the caller layer.
28
30
  */
29
31
  readonly projectId: ProjectId;
32
+ /**
33
+ * The project's org, when it belongs to one: the runtime resolves it
34
+ * from the project, never from input. The turn's tools get it as
35
+ * `ToolContext.orgId`, its guardrails as `trace.orgId`.
36
+ */
37
+ readonly orgId?: OrgId;
30
38
  readonly agent: Agent;
31
39
  readonly conversationId: ConversationId;
32
40
  readonly userMessage: string;
@@ -43,6 +51,13 @@ export interface InvokeAgentInput {
43
51
  * step. Recorded on the turn's run, so the flow can find its child.
44
52
  */
45
53
  readonly parent?: ParentRunRef;
54
+ /**
55
+ * Marks the turn as a replay: an eval run re-running a past run (`of`)
56
+ * on this agent version. Recorded on the turn's run and in its snapshot.
57
+ * Its tool calls are decided by `InvokeAgentBindings.replay` (every call
58
+ * is refused when that isn't wired), and only a read-only tool can run.
59
+ */
60
+ readonly replay?: RunReplayRef;
46
61
  readonly participantId?: string;
47
62
  readonly abortSignal?: AbortSignal;
48
63
  /**
@@ -89,6 +104,12 @@ export interface InvokeAgentBindings extends GuardrailsBindings {
89
104
  * sees another tenant's tools.
90
105
  */
91
106
  readonly toolRegistry: ToolRegistry;
107
+ /**
108
+ * Data blocks (prompts and settings). Setup loads the blocks the agent
109
+ * references at their pinned versions. Optional: an agent that
110
+ * references blocks fails its turn (`block-unresolvable`) without it.
111
+ */
112
+ readonly blockReader?: BlockReader;
92
113
  /**
93
114
  * Caller-plugged data-access surface for memory reads.
94
115
  * The Kindgi runtime supplies a Postgres-backed implementation;
@@ -147,6 +168,12 @@ export interface InvokeAgentBindings extends GuardrailsBindings {
147
168
  readonly onEvent?: OnTurnEvent;
148
169
  readonly provenance?: ProvenanceBindings;
149
170
  readonly hitl?: HitlBindings;
171
+ /**
172
+ * Where the turn records each model call (the runtime's cost ledger):
173
+ * its usage, provider, model, run, agent and step, before the step
174
+ * that made it goes on. Absent: calls aren't recorded.
175
+ */
176
+ readonly usage?: UsageSink;
150
177
  /**
151
178
  * Declarative HTTP tools: optional secret resolver populated
152
179
  * from the deployment's tenant-scoped `SecretBinding`. When present,
@@ -157,12 +184,19 @@ export interface InvokeAgentBindings extends GuardrailsBindings {
157
184
  * unaffected.
158
185
  */
159
186
  readonly resolveSecret?: (ref: ToolSecretRef) => Promise<string>;
187
+ /**
188
+ * How replay turns (`InvokeAgentInput.replay`) decide their tool calls,
189
+ * retrievals and session approval. Consulted only for a replay turn.
190
+ */
191
+ readonly replay?: ReplayBinding;
160
192
  }
161
193
  export interface HitlBindings {
162
194
  readonly enqueue: (input: HitlEnqueueInput) => Promise<HitlEnqueueResult>;
163
195
  }
164
196
  export interface HitlEnqueueInput {
165
197
  readonly tenantId: TenantId;
198
+ /** The turn's project: approval lists filter by it. */
199
+ readonly projectId?: ProjectId;
166
200
  readonly subjectKind: string;
167
201
  readonly subjectRef: Readonly<Record<string, unknown>>;
168
202
  readonly requiredRole?: 'standard' | 'senior' | 'admin';
@@ -1 +1 @@
1
- {"version":3,"file":"public-types.d.ts","sourceRoot":"","sources":["../../src/handlers/public-types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEzD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAC1E;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE;QACf,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAC3C;;;;;;;OAOG;IACH,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAClD;;;;;;OAMG;IACH,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD;;;;;;;;OAQG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,yBAAyB,CAAC;IACvD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,YAAY,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IACxD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE;QACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;QACtB,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;KACtC,CAAC;IACF;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B"}
1
+ {"version":3,"file":"public-types.d.ts","sourceRoot":"","sources":["../../src/handlers/public-types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEhG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAC1E;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE;QACf,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAC3C;;;;;;;OAOG;IACH,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAClD;;;;;;OAMG;IACH,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD;;;;;;;;OAQG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,yBAAyB,CAAC;IACvD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACjE;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,uDAAuD;IACvD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,YAAY,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IACxD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE;QACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;QACtB,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;KACtC,CAAC;IACF;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"rehydrate.d.ts","sourceRoot":"","sources":["../../src/handlers/rehydrate.ts"],"names":[],"mappings":"AAkCA,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,iBAAiB,CAAC;AAGjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA0ChD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,YAAY,EAAE,GAC/B,OAAO,CAAC,OAAO,CAAC,CA6ClB"}
1
+ {"version":3,"file":"rehydrate.d.ts","sourceRoot":"","sources":["../../src/handlers/rehydrate.ts"],"names":[],"mappings":"AA2CA,OAAO,EAAE,KAAK,YAAY,EAA0C,MAAM,iBAAiB,CAAC;AAI5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAwDhD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,YAAY,EAAE,GAC/B,OAAO,CAAC,OAAO,CAAC,CA0DlB"}