@kindgi/agents 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/conversation-binding.d.ts +9 -1
- package/dist/conversation-binding.d.ts.map +1 -1
- package/dist/define.js +20 -0
- package/dist/define.js.map +1 -1
- package/dist/guardrails-gate.d.ts +7 -4
- package/dist/guardrails-gate.d.ts.map +1 -1
- package/dist/guardrails-gate.js +5 -2
- package/dist/guardrails-gate.js.map +1 -1
- package/dist/handlers/context.d.ts +14 -0
- package/dist/handlers/context.d.ts.map +1 -1
- package/dist/handlers/dispatch-tools.d.ts.map +1 -1
- package/dist/handlers/dispatch-tools.js +57 -60
- package/dist/handlers/dispatch-tools.js.map +1 -1
- package/dist/handlers/errors.d.ts +11 -1
- package/dist/handlers/errors.d.ts.map +1 -1
- package/dist/handlers/errors.js.map +1 -1
- package/dist/handlers/evaluate-guardrails.d.ts.map +1 -1
- package/dist/handlers/evaluate-guardrails.js +34 -1
- package/dist/handlers/evaluate-guardrails.js.map +1 -1
- package/dist/handlers/gate-decision.d.ts +62 -0
- package/dist/handlers/gate-decision.d.ts.map +1 -0
- package/dist/handlers/gate-decision.js +55 -0
- package/dist/handlers/gate-decision.js.map +1 -0
- package/dist/handlers/model-call.d.ts +10 -0
- package/dist/handlers/model-call.d.ts.map +1 -1
- package/dist/handlers/model-call.js +109 -34
- package/dist/handlers/model-call.js.map +1 -1
- package/dist/handlers/persist-provenance.d.ts.map +1 -1
- package/dist/handlers/persist-provenance.js +3 -1
- package/dist/handlers/persist-provenance.js.map +1 -1
- package/dist/handlers/persist-user-message.d.ts.map +1 -1
- package/dist/handlers/persist-user-message.js +5 -16
- package/dist/handlers/persist-user-message.js.map +1 -1
- package/dist/handlers/public-types.d.ts +16 -2
- package/dist/handlers/public-types.d.ts.map +1 -1
- package/dist/handlers/rehydrate.d.ts.map +1 -1
- package/dist/handlers/rehydrate.js +85 -0
- package/dist/handlers/rehydrate.js.map +1 -1
- package/dist/handlers/run-retrievals.d.ts.map +1 -1
- package/dist/handlers/run-retrievals.js +2 -19
- package/dist/handlers/run-retrievals.js.map +1 -1
- package/dist/handlers/setup.d.ts.map +1 -1
- package/dist/handlers/setup.js +44 -24
- package/dist/handlers/setup.js.map +1 -1
- package/dist/handlers/tool-hitl.d.ts +5 -9
- package/dist/handlers/tool-hitl.d.ts.map +1 -1
- package/dist/handlers/tool-hitl.js +5 -0
- package/dist/handlers/tool-hitl.js.map +1 -1
- package/dist/handlers/turn-provenance.d.ts +67 -0
- package/dist/handlers/turn-provenance.d.ts.map +1 -0
- package/dist/handlers/turn-provenance.js +160 -0
- package/dist/handlers/turn-provenance.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/invoke.d.ts +15 -2
- package/dist/invoke.d.ts.map +1 -1
- package/dist/invoke.js +38 -22
- package/dist/invoke.js.map +1 -1
- package/dist/provenance-emit.d.ts +4 -2
- package/dist/provenance-emit.d.ts.map +1 -1
- package/dist/provenance-emit.js +4 -2
- package/dist/provenance-emit.js.map +1 -1
- package/dist/schema.d.ts +17 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +11 -0
- package/dist/schema.js.map +1 -1
- package/dist/types.d.ts +15 -1
- package/dist/types.d.ts.map +1 -1
- package/migrations/0003_hesitant_captain_cross.sql +2 -0
- package/migrations/meta/0003_snapshot.json +321 -0
- package/migrations/meta/_journal.json +7 -0
- package/package.json +19 -18
- package/src/conversation-binding.ts +9 -1
- package/src/define.ts +20 -0
- package/src/guardrails-gate.ts +17 -3
- package/src/handlers/context.ts +14 -0
- package/src/handlers/dispatch-tools.ts +76 -61
- package/src/handlers/errors.ts +13 -1
- package/src/handlers/evaluate-guardrails.ts +39 -1
- package/src/handlers/gate-decision.ts +101 -0
- package/src/handlers/model-call.ts +149 -33
- package/src/handlers/persist-provenance.ts +3 -1
- package/src/handlers/persist-user-message.ts +3 -16
- package/src/handlers/public-types.ts +16 -2
- package/src/handlers/rehydrate.ts +120 -3
- package/src/handlers/run-retrievals.ts +2 -19
- package/src/handlers/setup.ts +59 -33
- package/src/handlers/tool-hitl.ts +6 -10
- package/src/handlers/turn-provenance.ts +230 -0
- package/src/index.ts +8 -0
- package/src/invoke.ts +53 -25
- package/src/provenance-emit.ts +4 -1
- package/src/schema.ts +11 -0
- package/src/types.ts +15 -1
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
// Copyright (C) 2026 Kindgi Inc.
|
|
3
3
|
import { bodyStepKey } from '@kindgi/runtime';
|
|
4
4
|
import { throwAgentTurnFailure } from './errors.js';
|
|
5
|
+
import { readGateDecision } from './gate-decision.js';
|
|
6
|
+
import { TOOL_GATE_RECORD_PREFIX } from './tool-hitl.js';
|
|
5
7
|
import { loadTurnConversation, resolveTurnEnvironment, resolveTurnHitlPolicy, } from './turn-environment.js';
|
|
8
|
+
import { addInputNode, addModelCallNode, addRetrievalNodes, addStepToolNodes, } from './turn-provenance.js';
|
|
6
9
|
/** Each step's last completion — a step at one loop iteration counts once. */
|
|
7
10
|
function completedSteps(journal) {
|
|
8
11
|
const byStep = new Map();
|
|
@@ -18,6 +21,7 @@ function completedSteps(journal) {
|
|
|
18
21
|
nodeId: e.nodeId,
|
|
19
22
|
output: payload.output,
|
|
20
23
|
inLoop: payload.loopContext !== undefined,
|
|
24
|
+
at: e.timestamp,
|
|
21
25
|
});
|
|
22
26
|
}
|
|
23
27
|
return [...byStep.values()];
|
|
@@ -59,8 +63,89 @@ export async function rehydrateTurnContext(ctx, runId, journal) {
|
|
|
59
63
|
if (out.provider !== undefined)
|
|
60
64
|
ctx.lastProvider = out.provider;
|
|
61
65
|
}
|
|
66
|
+
ctx.toolApprovals = toolApprovalsOf(journal);
|
|
67
|
+
rebuildProvenance(ctx, steps, retrievals?.retrieved);
|
|
62
68
|
return true;
|
|
63
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* The tool-call approvals the journal shows decided, by invocation id: the
|
|
72
|
+
* waitpoint each call's gate recorded (`dispatch-tools`), when the call
|
|
73
|
+
* parked on it (`wait.suspended`, the first), and the decision that
|
|
74
|
+
* resolved it (`wait.resumed`).
|
|
75
|
+
*/
|
|
76
|
+
function toolApprovalsOf(journal) {
|
|
77
|
+
const callOf = new Map();
|
|
78
|
+
const parkedAt = new Map();
|
|
79
|
+
const resumed = new Map();
|
|
80
|
+
for (const e of journal) {
|
|
81
|
+
const gate = toolGateOf(e);
|
|
82
|
+
if (gate !== undefined)
|
|
83
|
+
callOf.set(gate.waitTokenId, gate.invocationId);
|
|
84
|
+
const p = (e.payload ?? {});
|
|
85
|
+
if (typeof p.tokenId !== 'string')
|
|
86
|
+
continue;
|
|
87
|
+
if (e.kind === 'wait.suspended' && !parkedAt.has(p.tokenId)) {
|
|
88
|
+
parkedAt.set(p.tokenId, e.timestamp);
|
|
89
|
+
}
|
|
90
|
+
if (e.kind === 'wait.resumed')
|
|
91
|
+
resumed.set(p.tokenId, { at: e.timestamp, value: p.value });
|
|
92
|
+
}
|
|
93
|
+
const approvals = new Map();
|
|
94
|
+
for (const [waitTokenId, decided] of resumed) {
|
|
95
|
+
const invocationId = callOf.get(waitTokenId);
|
|
96
|
+
if (invocationId === undefined)
|
|
97
|
+
continue;
|
|
98
|
+
approvals.set(invocationId, {
|
|
99
|
+
waitTokenId,
|
|
100
|
+
parkedAt: parkedAt.get(waitTokenId) ?? decided.at,
|
|
101
|
+
decidedAt: decided.at,
|
|
102
|
+
decision: readGateDecision(decided.value),
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return approvals;
|
|
106
|
+
}
|
|
107
|
+
/** The waitpoint a tool call's gate recorded (`dispatch-tools`), if `e` is that record. */
|
|
108
|
+
function toolGateOf(e) {
|
|
109
|
+
if (e.kind !== 'value.recorded')
|
|
110
|
+
return undefined;
|
|
111
|
+
const p = (e.payload ?? {});
|
|
112
|
+
if (typeof p.key !== 'string' || !p.key.startsWith(TOOL_GATE_RECORD_PREFIX))
|
|
113
|
+
return undefined;
|
|
114
|
+
const waitTokenId = p.value?.waitTokenId;
|
|
115
|
+
return typeof waitTokenId === 'string'
|
|
116
|
+
? { waitTokenId, invocationId: p.key.slice(TOOL_GATE_RECORD_PREFIX.length) }
|
|
117
|
+
: undefined;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* The provenance of the steps that ran before the park, in the order
|
|
121
|
+
* they ran: the user message, the retrievals, then each model call with
|
|
122
|
+
* the tool calls its completed step stored.
|
|
123
|
+
*/
|
|
124
|
+
function rebuildProvenance(ctx, steps, retrieved) {
|
|
125
|
+
const input = ctx.userMessage;
|
|
126
|
+
if (ctx.provenance === undefined || input === undefined)
|
|
127
|
+
return;
|
|
128
|
+
addInputNode(ctx.provenance, input);
|
|
129
|
+
if (retrieved !== undefined)
|
|
130
|
+
addRetrievalNodes(ctx.provenance, retrieved, input);
|
|
131
|
+
const storedByStep = new Map();
|
|
132
|
+
for (const s of steps.filter((s) => s.nodeId === 'dispatch-tools' && s.inLoop)) {
|
|
133
|
+
const out = s.output;
|
|
134
|
+
if (out.step !== undefined)
|
|
135
|
+
storedByStep.set(out.step, out.iterationAppended ?? []);
|
|
136
|
+
}
|
|
137
|
+
const calls = steps
|
|
138
|
+
.filter((s) => s.nodeId === 'model-call' && s.inLoop)
|
|
139
|
+
.map((s) => ({ at: s.at, out: s.output }))
|
|
140
|
+
.sort((a, b) => (a.out.step ?? 0) - (b.out.step ?? 0));
|
|
141
|
+
for (const { at, out } of calls) {
|
|
142
|
+
const { step, callId, provider, finishReason } = out;
|
|
143
|
+
if (step === undefined || callId === undefined || provider === undefined)
|
|
144
|
+
continue;
|
|
145
|
+
addModelCallNode(ctx.provenance, { step, callId, provider, finishReason: finishReason ?? 'stop', at }, input.sequence, [...(ctx.toolResultIds ?? [])]);
|
|
146
|
+
addStepToolNodes(ctx, step, storedByStep.get(step) ?? []);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
64
149
|
/**
|
|
65
150
|
* The messages no completed step accounts for: those the step the turn
|
|
66
151
|
* parked in stored before it parked.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rehydrate.js","sourceRoot":"","sources":["../../src/handlers/rehydrate.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;
|
|
1
|
+
{"version":3,"file":"rehydrate.js","sourceRoot":"","sources":["../../src/handlers/rehydrate.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAwCjC,OAAO,EAAgD,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAK5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAW9B,8EAA8E;AAC9E,SAAS,cAAc,CAAC,OAAgC;IACtD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;YAAE,SAAS;QACpE,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAG/B,CAAC;QACF,MAAM,GAAG,GACP,OAAO,CAAC,WAAW,KAAK,SAAS;YAC/B,CAAC,CAAE,CAAC,CAAC,MAA4B;YACjC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;YACd,MAAM,EAAE,CAAC,CAAC,MAA2B;YACrC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,WAAW,KAAK,SAAS;YACzC,EAAE,EAAE,CAAC,CAAC,SAAS;SAChB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,6DAA6D;AAC7D,SAAS,QAAQ,CAAI,KAA4B,EAAE,MAAc;IAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAuB,CAAC;AACtF,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAgB,EAChB,KAAa,EACb,OAAgC;IAEhC,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,QAAQ,CACpB,KAAK,EACL,OAAO,CACR,CAAC;IACF,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAEtC,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,KAAK,SAAS,EAAE,CAAC;QACtD,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7F,GAAG,CAAC,kBAAkB,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;IACnD,CAAC;IACD,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAChC,GAAG,CAAC,UAAU,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,sBAAsB,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;IAEhG,MAAM,WAAW,GAAG,QAAQ,CAAgC,KAAK,EAAE,sBAAsB,CAAC,CAAC;IAC3F,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,eAAe,CAAC,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;QACjD,GAAG,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,CACzB,KAAK,EACL,gBAAgB,CACjB,CAAC;IACF,IAAI,UAAU,EAAE,SAAS,KAAK,SAAS;QAAE,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;IAE9E,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,MAAM,GAAG,GAAG,CAAC,CAAC,MAQb,CAAC;QACF,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QAC3D,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,GAAG,CAAC,cAAc,EAAE,YAAY,IAAI,CAAC,CAAC;QAChE,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,GAAG,CAAC,cAAc,EAAE,gBAAgB,IAAI,CAAC,CAAC;QACxE,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,GAAG,CAAC,cAAc,EAAE,OAAO,IAAI,CAAC,CAAC;QAC3D,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS;YAAE,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC;IAClE,CAAC;IACD,GAAG,CAAC,aAAa,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7C,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,OAAgC;IACvD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,EAA+D,CAAC;IACvF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACxE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAA6D,CAAC;QACxF,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;YAAE,SAAS;QAC5C,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5D,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAwB,CAAC;IAClD,KAAK,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,OAAO,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,YAAY,KAAK,SAAS;YAAE,SAAS;QACzC,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE;YAC1B,WAAW;YACX,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,EAAE;YACjD,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC;SAC1C,CAAC,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,2FAA2F;AAC3F,SAAS,UAAU,CACjB,CAAe;IAEf,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB;QAAE,OAAO,SAAS,CAAC;IAClD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAkC,CAAC;IAC7D,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,uBAAuB,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9F,MAAM,WAAW,GAAI,CAAC,CAAC,KAAwD,EAAE,WAAW,CAAC;IAC7F,OAAO,OAAO,WAAW,KAAK,QAAQ;QACpC,CAAC,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE;QAC5E,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAUD;;;;GAIG;AACH,SAAS,iBAAiB,CACxB,GAAgB,EAChB,KAA4B,EAC5B,SAA+C;IAE/C,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC;IAC9B,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO;IAChE,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACpC,IAAI,SAAS,KAAK,SAAS;QAAE,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAEjF,MAAM,YAAY,GAAG,IAAI,GAAG,EAA0C,CAAC;IACvE,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,gBAAgB,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/E,MAAM,GAAG,GAAG,CAAC,CAAC,MAGb,CAAC;QACF,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;YAAE,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,KAAK,GAAG,KAAK;SAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,IAAI,CAAC,CAAC,MAAM,CAAC;SACpD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAA6B,EAAE,CAAC,CAAC;SAChE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACzD,KAAK,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,KAAK,EAAE,CAAC;QAChC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC;QACrD,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;YAAE,SAAS;QACnF,gBAAgB,CACd,GAAG,CAAC,UAAU,EACd,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,IAAI,MAAM,EAAE,EAAE,EAAE,EACpE,KAAK,CAAC,QAAQ,EACd,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAC/B,CAAC;QACF,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,GAAgB,EAAE,KAA4B;IACtE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS;QAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC3E,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,gBAAgB,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/E,MAAM,GAAG,GAAG,CAAC,CAAC,MAAyE,CAAC;QACxF,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,iBAAiB,IAAI,EAAE;YAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,8EAA8E;AAC9E,KAAK,UAAU,eAAe,CAAC,GAAgB,EAAE,YAAoB;IACnE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,YAAY,CAAC;QAC/D,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ;QAC5B,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,cAAc;QACxC,aAAa,EAAE,YAAY,GAAG,CAAC;KAChC,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;QAAE,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,MAAM,YAAY,GAA0B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,YAAY,CAAC,CAAC;IACjG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACxF,IAAI,IAAI,KAAK,SAAS;QAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;AACjD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-retrievals.d.ts","sourceRoot":"","sources":["../../src/handlers/run-retrievals.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"run-retrievals.d.ts","sourceRoot":"","sources":["../../src/handlers/run-retrievals.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAIhD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CAyCvE"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { runRetrievals } from '../retrieval.js';
|
|
4
4
|
import { emitTurnEvent } from '../streaming.js';
|
|
5
5
|
import { throwAgentTurnFailure } from './errors.js';
|
|
6
|
+
import { addRetrievalNodes } from './turn-provenance.js';
|
|
6
7
|
/**
|
|
7
8
|
* Execute the agent's declared retrieval intents. Populates
|
|
8
9
|
* `ctx.retrieved` for downstream prompt building + emits
|
|
@@ -36,25 +37,7 @@ export function buildRunRetrievalsHandler(ctx) {
|
|
|
36
37
|
factIds: retrieved.value.map((r) => r.fact.id),
|
|
37
38
|
});
|
|
38
39
|
if (ctx.provenance !== undefined && ctx.userMessage !== undefined) {
|
|
39
|
-
|
|
40
|
-
ctx.provenance.addNode({
|
|
41
|
-
id: `retrieval:${r.fact.id}`,
|
|
42
|
-
kind: 'retrieval',
|
|
43
|
-
timestamp: ctx.userMessage.createdAt,
|
|
44
|
-
...(r.fact.contentHash !== undefined && { contentHash: r.fact.contentHash }),
|
|
45
|
-
attributes: {
|
|
46
|
-
factId: r.fact.id,
|
|
47
|
-
factType: r.fact.type,
|
|
48
|
-
intentScope: r.intent.scope,
|
|
49
|
-
...(r.score !== undefined && { score: r.score }),
|
|
50
|
-
},
|
|
51
|
-
});
|
|
52
|
-
ctx.provenance.addEdge({
|
|
53
|
-
from: `retrieval:${r.fact.id}`,
|
|
54
|
-
to: `input:${ctx.userMessage.sequence}`,
|
|
55
|
-
kind: 'influenced-by',
|
|
56
|
-
});
|
|
57
|
-
}
|
|
40
|
+
addRetrievalNodes(ctx.provenance, retrieved.value, ctx.userMessage);
|
|
58
41
|
}
|
|
59
42
|
// The facts go in the journal: a resumed turn restores them from it
|
|
60
43
|
// (`rehydrateTurnContext`) rather than retrieving again.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-retrievals.js","sourceRoot":"","sources":["../../src/handlers/run-retrievals.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAIjC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"run-retrievals.js","sourceRoot":"","sources":["../../src/handlers/run-retrievals.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAIjC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAgB;IACxD,OAAO,KAAK,IAAI,EAAE;QAChB,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACpE,qBAAqB,CAAC;gBACpB,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,sEAAsE;gBAC/E,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;QACL,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,aAAa,CACnC,GAAG,CAAC,KAAK,CAAC,KAAK,EACf,GAAG,CAAC,YAAY,EAChB,GAAG,CAAC,KAAK,CAAC,cAAc,EACxB,GAAG,CAAC,KAAK,CAAC,WAAW,EACrB;YACE,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,aAAa;YAClC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,KAAK,SAAS,IAAI;gBAClD,iBAAiB,EAAE,GAAG,CAAC,QAAQ,CAAC,iBAAiB;aAClD,CAAC;YACF,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,KAAK,SAAS,IAAI;gBAC/C,cAAc,EAAE,GAAG,CAAC,QAAQ,CAAC,cAAc;aAC5C,CAAC;SACH,CACF,CAAC;QACF,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK;YAAE,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrE,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC;QAEhC,MAAM,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE;YACxC,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;YAC7B,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;SAC/C,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAClE,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QACtE,CAAC;QAED,oEAAoE;QACpE,yDAAyD;QACzD,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;IACvE,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/handlers/setup.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAMnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/handlers/setup.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAMnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA4ChD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CA0N/D"}
|
package/dist/handlers/setup.js
CHANGED
|
@@ -5,8 +5,10 @@ import { WaitpointCancelledError } from '@kindgi/handler';
|
|
|
5
5
|
import { evaluateSessionGate } from '../guardrails-gate.js';
|
|
6
6
|
import { emitTurnEvent } from '../streaming.js';
|
|
7
7
|
import { throwAgentTurnFailure } from './errors.js';
|
|
8
|
+
import { SESSION_GATE_SUBJECT, readGateDecision } from './gate-decision.js';
|
|
8
9
|
import { writeRunSnapshot } from './run-snapshot.js';
|
|
9
10
|
import { loadTurnConversation, resolveTurnEnvironment, resolveTurnHitlPolicy, } from './turn-environment.js';
|
|
11
|
+
import { decisionOf } from './turn-provenance.js';
|
|
10
12
|
/**
|
|
11
13
|
* Deterministic waitpoint token — must produce the same value on every
|
|
12
14
|
* flow replay so the kernel's `waitForToken(tokenId)` resolves against
|
|
@@ -19,6 +21,8 @@ function computeSessionGateWaitToken(input) {
|
|
|
19
21
|
.digest('hex')
|
|
20
22
|
.slice(0, 40);
|
|
21
23
|
}
|
|
24
|
+
/** The `record` key of the session gate's decision. */
|
|
25
|
+
const SESSION_GATE_RECORD = 'session-hitl-gate';
|
|
22
26
|
/**
|
|
23
27
|
* The first node in the flow. Runs every precondition check in one
|
|
24
28
|
* gate so the run either commits to a full turn or fails fast before
|
|
@@ -83,29 +87,43 @@ export function buildSetupHandler(ctx) {
|
|
|
83
87
|
// `hitl` policy — before the gate that may park on them.
|
|
84
88
|
const effectiveHitl = await resolveTurnHitlPolicy(ctx);
|
|
85
89
|
ctx.hitlPolicy = effectiveHitl;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
+
// Decided once: a turn that parked here resumes on the gate it parked
|
|
91
|
+
// on, whatever the policy or the conversation's turn count say by then.
|
|
92
|
+
const gate = await kctx.record(SESSION_GATE_RECORD, () => {
|
|
93
|
+
const evaluated = evaluateSessionGate({ ...(effectiveHitl.turn !== undefined && { afterTurns: effectiveHitl.turn.afterTurns }) }, conversation.turnCount);
|
|
94
|
+
if (evaluated.kind !== 'hitl-required')
|
|
95
|
+
return undefined;
|
|
96
|
+
return {
|
|
97
|
+
waitTokenId: computeSessionGateWaitToken({
|
|
98
|
+
runId: kctx.runId,
|
|
99
|
+
turnCount: conversation.turnCount,
|
|
100
|
+
}),
|
|
90
101
|
turnCount: conversation.turnCount,
|
|
91
|
-
|
|
92
|
-
|
|
102
|
+
threshold: evaluated.threshold,
|
|
103
|
+
reason: evaluated.reason,
|
|
104
|
+
requiredRole: effectiveHitl.defaultReviewerRole,
|
|
105
|
+
timeoutMs: effectiveHitl.timeoutMs,
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
if (gate !== undefined) {
|
|
109
|
+
const { waitTokenId, timeoutMs } = gate;
|
|
93
110
|
const expiresAt = new Date(Date.now() + timeoutMs).toISOString();
|
|
94
111
|
if (ctx.bindings.hitl?.enqueue !== undefined) {
|
|
95
112
|
try {
|
|
96
113
|
await ctx.bindings.hitl.enqueue({
|
|
97
114
|
tenantId: ctx.input.tenantId,
|
|
98
|
-
|
|
115
|
+
projectId: ctx.input.projectId,
|
|
116
|
+
subjectKind: SESSION_GATE_SUBJECT,
|
|
99
117
|
subjectRef: {
|
|
100
118
|
conversationId: ctx.input.conversationId,
|
|
101
119
|
agentId: ctx.input.agent.id,
|
|
102
120
|
agentVersion: ctx.input.agent.version,
|
|
103
|
-
turnCount:
|
|
104
|
-
threshold:
|
|
121
|
+
turnCount: gate.turnCount,
|
|
122
|
+
threshold: gate.threshold,
|
|
105
123
|
},
|
|
106
|
-
requiredRole:
|
|
124
|
+
requiredRole: gate.requiredRole,
|
|
107
125
|
title: `HITL review required for ${ctx.input.agent.name}`,
|
|
108
|
-
description:
|
|
126
|
+
description: gate.reason,
|
|
109
127
|
waitTokenId,
|
|
110
128
|
provenanceRef: { runId: kctx.runId },
|
|
111
129
|
expiresAt: expiresAt,
|
|
@@ -121,8 +139,8 @@ export function buildSetupHandler(ctx) {
|
|
|
121
139
|
// execution (park), persist-provenance never runs so this node is
|
|
122
140
|
// lost — that's fine. On the FINAL replay after resume, this node
|
|
123
141
|
// AND the `resume` node below both emit and get persisted.
|
|
124
|
-
const waitNodeId = `session-hitl-gate-wait:${
|
|
125
|
-
const resumeNodeId = `session-hitl-gate-resume:${
|
|
142
|
+
const waitNodeId = `session-hitl-gate-wait:${gate.turnCount}`;
|
|
143
|
+
const resumeNodeId = `session-hitl-gate-resume:${gate.turnCount}`;
|
|
126
144
|
if (ctx.provenance !== undefined) {
|
|
127
145
|
ctx.provenance.addNode({
|
|
128
146
|
id: waitNodeId,
|
|
@@ -131,16 +149,16 @@ export function buildSetupHandler(ctx) {
|
|
|
131
149
|
actor: `agent:${ctx.input.agent.id}`,
|
|
132
150
|
attributes: {
|
|
133
151
|
gate: 'session-hitl',
|
|
134
|
-
turnCount:
|
|
135
|
-
threshold:
|
|
152
|
+
turnCount: gate.turnCount,
|
|
153
|
+
threshold: gate.threshold,
|
|
136
154
|
waitTokenId,
|
|
137
155
|
},
|
|
138
156
|
});
|
|
139
157
|
}
|
|
140
158
|
try {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
});
|
|
159
|
+
// Fails closed: only an explicit approve lets the turn go on
|
|
160
|
+
// (`readGateDecision`).
|
|
161
|
+
const decision = readGateDecision(await kctx.waitForToken(waitTokenId, { timeoutMs }));
|
|
144
162
|
// Post-resume: emit the resume node + resumed-from edge. Only
|
|
145
163
|
// runs on the REPLAY path — the first execution throws
|
|
146
164
|
// SuspensionSignal inside waitForToken and never gets here.
|
|
@@ -149,11 +167,14 @@ export function buildSetupHandler(ctx) {
|
|
|
149
167
|
id: resumeNodeId,
|
|
150
168
|
kind: 'resume',
|
|
151
169
|
timestamp: new Date().toISOString(),
|
|
152
|
-
|
|
170
|
+
// Whoever decided; a decision recorded before it named them, the agent.
|
|
171
|
+
actor: decision.decidedBy ?? `agent:${ctx.input.agent.id}`,
|
|
153
172
|
attributes: {
|
|
154
173
|
gate: 'session-hitl',
|
|
155
|
-
decision: decision
|
|
156
|
-
...(decision.
|
|
174
|
+
decision: decisionOf(decision),
|
|
175
|
+
...(!decision.approved &&
|
|
176
|
+
decision.rationale !== undefined && { rationale: decision.rationale }),
|
|
177
|
+
...(decision.approvalId !== undefined && { approvalId: decision.approvalId }),
|
|
157
178
|
},
|
|
158
179
|
});
|
|
159
180
|
ctx.provenance.addEdge({
|
|
@@ -162,15 +183,14 @@ export function buildSetupHandler(ctx) {
|
|
|
162
183
|
kind: 'resumed-from',
|
|
163
184
|
});
|
|
164
185
|
}
|
|
165
|
-
if (decision.
|
|
186
|
+
if (!decision.approved) {
|
|
166
187
|
throwAgentTurnFailure({
|
|
167
188
|
code: 'hitl-rejected',
|
|
168
189
|
message: `Reviewer rejected the session-HITL gate${decision.rationale !== undefined ? `: ${decision.rationale}` : ''}`,
|
|
169
190
|
...(decision.rationale !== undefined && { rationale: decision.rationale }),
|
|
170
191
|
});
|
|
171
192
|
}
|
|
172
|
-
//
|
|
173
|
-
// normally through the rest of setup.
|
|
193
|
+
// Approved: the turn proceeds through the rest of setup.
|
|
174
194
|
}
|
|
175
195
|
catch (cause) {
|
|
176
196
|
if (cause instanceof WaitpointCancelledError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/handlers/setup.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/handlers/setup.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;GAKG;AACH,SAAS,2BAA2B,CAAC,KAGpC;IACC,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,gCAAgC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;SACxE,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,uDAAuD;AACvD,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAgBhD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAgB;IAChD,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC5B,mDAAmD;QACnD,iEAAiE;QACjE,gEAAgE;QAChE,oEAAoE;QACpE,oEAAoE;QACpE,gCAAgC;QAChC,MAAM,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAElC,wDAAwD;QACxD,kEAAkE;QAClE,gEAAgE;QAChE,4DAA4D;QAC5D,oEAAoE;QACpE,2DAA2D;QAC3D,6CAA6C;QAC7C,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,KAAK,SAAS,EAAE,CAAC;YACtD,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC;gBAClD,KAAK,EAAE,IAAI,CAAC,KAA0B;gBACtC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ;aAC7B,CAAC,CAAC;YACH,GAAG,CAAC,kBAAkB,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;QACnD,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAErD,kEAAkE;QAClE,sDAAsD;QACtD,EAAE;QACF,oDAAoD;QACpD,uEAAuE;QACvE,8DAA8D;QAC9D,qEAAqE;QACrE,iEAAiE;QACjE,uEAAuE;QACvE,EAAE;QACF,oEAAoE;QACpE,2DAA2D;QAC3D,EAAE;QACF,8CAA8C;QAC9C,+DAA+D;QAC/D,gEAAgE;QAChE,yDAAyD;QACzD,MAAM,aAAa,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACvD,GAAG,CAAC,UAAU,GAAG,aAAa,CAAC;QAC/B,sEAAsE;QACtE,wEAAwE;QACxE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,GAAkC,EAAE;YACtF,MAAM,SAAS,GAAG,mBAAmB,CACnC,EAAE,GAAG,CAAC,aAAa,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAC1F,YAAY,CAAC,SAAS,CACvB,CAAC;YACF,IAAI,SAAS,CAAC,IAAI,KAAK,eAAe;gBAAE,OAAO,SAAS,CAAC;YACzD,OAAO;gBACL,WAAW,EAAE,2BAA2B,CAAC;oBACvC,KAAK,EAAE,IAAI,CAAC,KAA0B;oBACtC,SAAS,EAAE,YAAY,CAAC,SAAS;iBAClC,CAAC;gBACF,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,YAAY,EAAE,aAAa,CAAC,mBAAmB;gBAC/C,SAAS,EAAE,aAAa,CAAC,SAAS;aACnC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;YACxC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;YAEjE,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC7C,IAAI,CAAC;oBACH,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;wBAC9B,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ;wBAC5B,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS;wBAC9B,WAAW,EAAE,oBAAoB;wBACjC,UAAU,EAAE;4BACV,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,cAAc;4BACxC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;4BAC3B,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO;4BACrC,SAAS,EAAE,IAAI,CAAC,SAAS;4BACzB,SAAS,EAAE,IAAI,CAAC,SAAS;yBAC1B;wBACD,YAAY,EAAE,IAAI,CAAC,YAAY;wBAC/B,KAAK,EAAE,4BAA4B,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;wBACzD,WAAW,EAAE,IAAI,CAAC,MAAM;wBACxB,WAAW;wBACX,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;wBACpC,SAAS,EAAE,SAAkB;qBAC9B,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,2DAA2D;oBAC3D,8DAA8D;oBAC9D,gEAAgE;gBAClE,CAAC;YACH,CAAC;YAED,+DAA+D;YAC/D,kEAAkE;YAClE,kEAAkE;YAClE,2DAA2D;YAC3D,MAAM,UAAU,GAAG,0BAA0B,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9D,MAAM,YAAY,GAAG,4BAA4B,IAAI,CAAC,SAAS,EAAE,CAAC;YAClE,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACjC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;oBACrB,EAAE,EAAE,UAAU;oBACd,IAAI,EAAE,MAAM;oBACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAW;oBAC5C,KAAK,EAAE,SAAS,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAuB,EAAE;oBACzD,UAAU,EAAE;wBACV,IAAI,EAAE,cAAc;wBACpB,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,WAAW;qBACZ;iBACF,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC;gBACH,6DAA6D;gBAC7D,wBAAwB;gBACxB,MAAM,QAAQ,GAAG,gBAAgB,CAC/B,MAAM,IAAI,CAAC,YAAY,CAAU,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,CAC7D,CAAC;gBACF,8DAA8D;gBAC9D,uDAAuD;gBACvD,4DAA4D;gBAC5D,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBACjC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;wBACrB,EAAE,EAAE,YAAY;wBAChB,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAW;wBAC5C,wEAAwE;wBACxE,KAAK,EAAE,QAAQ,CAAC,SAAS,IAAI,SAAS,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAuB,EAAE;wBAC/E,UAAU,EAAE;4BACV,IAAI,EAAE,cAAc;4BACpB,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;4BAC9B,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ;gCACpB,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;4BACxE,GAAG,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC;yBAC9E;qBACF,CAAC,CAAC;oBACH,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,UAAU;wBAChB,EAAE,EAAE,YAAY;wBAChB,IAAI,EAAE,cAAc;qBACrB,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACvB,qBAAqB,CAAC;wBACpB,IAAI,EAAE,eAAe;wBACrB,OAAO,EAAE,0CACP,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EACjE,EAAE;wBACF,GAAG,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;qBAClE,CAAC,CAAC;gBACd,CAAC;gBACD,yDAAyD;YAC3D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,uBAAuB,EAAE,CAAC;oBAC7C,6DAA6D;oBAC7D,6DAA6D;oBAC7D,uDAAuD;oBACvD,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;wBACjC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;4BACrB,EAAE,EAAE,YAAY;4BAChB,IAAI,EAAE,QAAQ;4BACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAW;4BAC5C,KAAK,EAAE,SAAS,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAuB,EAAE;4BACzD,UAAU,EAAE;gCACV,IAAI,EAAE,cAAc;gCACpB,QAAQ,EAAE,WAAW;gCACrB,MAAM,EAAE,KAAK,CAAC,MAAM;6BACrB;yBACF,CAAC,CAAC;wBACH,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,UAAU;4BAChB,EAAE,EAAE,YAAY;4BAChB,IAAI,EAAE,cAAc;yBACrB,CAAC,CAAC;oBACL,CAAC;oBACD,qBAAqB,CAAC;wBACpB,IAAI,EAAE,gBAAgB;wBACtB,OAAO,EAAE,gCAAgC,KAAK,CAAC,MAAM,EAAE;wBACvD,MAAM,EAAE,KAAK,CAAC,MAAM;qBACZ,CAAC,CAAC;gBACd,CAAC;gBACD,4DAA4D;gBAC5D,+DAA+D;gBAC/D,uDAAuD;gBACvD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAEtD,kEAAkE;QAClE,mEAAmE;QACnE,0EAA0E;QAE1E,MAAM,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE;YACxC,IAAI,EAAE,cAAc;YACpB,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,cAAc;YACxC,UAAU,EAAE,YAAY,CAAC,SAAS,GAAG,CAAC;YACtC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAC3B,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO;YACrC,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW;SACnC,CAAC,CAAC;QAEH,qEAAqE;QACrE,OAAO;YACL,UAAU,EAAE,YAAY,CAAC,SAAS,GAAG,CAAC;YACtC,UAAU,EAAE,WAAW,CAAC,UAAU;YAClC,aAAa,EAAE,WAAW,CAAC,KAAK;YAChC,SAAS,EAAE,WAAW,CAAC,SAAS;SACjC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -11,6 +11,11 @@ export declare function resolveToolHitl(agent: Agent, tool: Tool): ResolvedToolH
|
|
|
11
11
|
* a different hash.
|
|
12
12
|
*/
|
|
13
13
|
export declare function hashToolArgs(args: unknown): string;
|
|
14
|
+
/**
|
|
15
|
+
* The `NodeContext.record` key of a tool call's gate, before its call id:
|
|
16
|
+
* the journal names the waitpoint a call parked on under this key.
|
|
17
|
+
*/
|
|
18
|
+
export declare const TOOL_GATE_RECORD_PREFIX = "tool-hitl-gate:";
|
|
14
19
|
/**
|
|
15
20
|
* Deterministic waitpoint token for a tool-call gate. Includes both
|
|
16
21
|
* the model-generated call id (unique per iteration) AND the args hash
|
|
@@ -22,15 +27,6 @@ export declare function computeToolCallWaitToken(input: {
|
|
|
22
27
|
readonly callId: string;
|
|
23
28
|
readonly argsHash: string;
|
|
24
29
|
}): string;
|
|
25
|
-
/**
|
|
26
|
-
* Shape the tool-level waitpoint resolves to when the reviewer decides.
|
|
27
|
-
* Same shape as session-gate decisions — the approvals-complete route
|
|
28
|
-
* materializes it identically.
|
|
29
|
-
*/
|
|
30
|
-
export interface ToolHitlDecision {
|
|
31
|
-
readonly decided: 'approve' | 'reject';
|
|
32
|
-
readonly rationale?: string;
|
|
33
|
-
}
|
|
34
30
|
/**
|
|
35
31
|
* In-conversation cache of decisions for `ask_on_first_use`. Persisted
|
|
36
32
|
* on `agent_conversations.metadata.hitlToolDecisions` — a flat map of
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-hitl.d.ts","sourceRoot":"","sources":["../../src/handlers/tool-hitl.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAgB,MAAM,aAAa,CAAC;AAErE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;CACxD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,gBAAgB,CAkC1E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAElD;AAWD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,GAAG,MAAM,CAKT;AAED
|
|
1
|
+
{"version":3,"file":"tool-hitl.d.ts","sourceRoot":"","sources":["../../src/handlers/tool-hitl.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAgB,MAAM,aAAa,CAAC;AAErE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;CACxD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,gBAAgB,CAkC1E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAElD;AAWD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,oBAAoB,CAAC;AAEzD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,GAAG,MAAM,CAKT;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,CAE7D"}
|
|
@@ -63,6 +63,11 @@ function canonicalStringify(value) {
|
|
|
63
63
|
const entries = Object.entries(value).sort(([a], [b]) => a.localeCompare(b));
|
|
64
64
|
return `{${entries.map(([k, v]) => `${JSON.stringify(k)}:${canonicalStringify(v)}`).join(',')}}`;
|
|
65
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* The `NodeContext.record` key of a tool call's gate, before its call id:
|
|
68
|
+
* the journal names the waitpoint a call parked on under this key.
|
|
69
|
+
*/
|
|
70
|
+
export const TOOL_GATE_RECORD_PREFIX = 'tool-hitl-gate:';
|
|
66
71
|
/**
|
|
67
72
|
* Deterministic waitpoint token for a tool-call gate. Includes both
|
|
68
73
|
* the model-generated call id (unique per iteration) AND the args hash
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-hitl.js","sourceRoot":"","sources":["../../src/handlers/tool-hitl.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tool-hitl.js","sourceRoot":"","sources":["../../src/handlers/tool-hitl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The provenance nodes and edges an agent turn records, in one place:
|
|
3
|
+
* the steps add them as they run, and a turn resumed after a park
|
|
4
|
+
* (`rehydrate.ts`) adds those of the steps that ran before it from what
|
|
5
|
+
* they left durable (the conversation, the journal). Either way the DAG
|
|
6
|
+
* is the same.
|
|
7
|
+
*/
|
|
8
|
+
import type { ProvenanceBuilder } from '@kindgi/provenance';
|
|
9
|
+
import type { Timestamp } from '@kindgi/types';
|
|
10
|
+
import type { ConversationMessage, RetrievedFact } from '../types.js';
|
|
11
|
+
import type { TurnContext } from './context.js';
|
|
12
|
+
import type { GateDecision } from './gate-decision.js';
|
|
13
|
+
/** The turn's user message. */
|
|
14
|
+
export declare function addInputNode(provenance: ProvenanceBuilder, message: ConversationMessage): void;
|
|
15
|
+
/** The facts the turn retrieved for its user message. */
|
|
16
|
+
export declare function addRetrievalNodes(provenance: ProvenanceBuilder, retrieved: readonly RetrievedFact[], input: ConversationMessage): void;
|
|
17
|
+
/** One model call: its identity; its usage is the cost ledger's, by `callId`. */
|
|
18
|
+
export interface ModelCallFacts {
|
|
19
|
+
readonly step: number;
|
|
20
|
+
readonly callId: string;
|
|
21
|
+
readonly provider: {
|
|
22
|
+
readonly id: string;
|
|
23
|
+
readonly model: string;
|
|
24
|
+
};
|
|
25
|
+
readonly finishReason: string;
|
|
26
|
+
readonly at: Timestamp;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A model call, `caused-by` the turn's user message and `influenced-by`
|
|
30
|
+
* each of this turn's tool results it read: all of them so far, since
|
|
31
|
+
* the call's input holds every message of the turn before it.
|
|
32
|
+
*/
|
|
33
|
+
export declare function addModelCallNode(provenance: ProvenanceBuilder, call: ModelCallFacts, inputSequence: number, toolResultIds: readonly string[]): void;
|
|
34
|
+
/**
|
|
35
|
+
* A tool call the model at `step` made, and its result: the stored tool
|
|
36
|
+
* message (a tool's output, a rejected approval's, or a failed call's).
|
|
37
|
+
* `version` is the tool the agent's binding resolved, when it has one.
|
|
38
|
+
*/
|
|
39
|
+
export declare function addToolNodes(provenance: ProvenanceBuilder, step: number, result: ConversationMessage, version: {
|
|
40
|
+
readonly resolvedVersion: string;
|
|
41
|
+
readonly requestedRange: string;
|
|
42
|
+
} | undefined): void;
|
|
43
|
+
/**
|
|
44
|
+
* The tool calls of one model step: a node pair for each result the step
|
|
45
|
+
* stored, and their invocation ids added to the turn's tool results.
|
|
46
|
+
*/
|
|
47
|
+
export declare function addStepToolNodes(ctx: TurnContext, step: number, stored: readonly ConversationMessage[]): void;
|
|
48
|
+
/** A tool call's approval, decided: the wait it parked on and the answer. */
|
|
49
|
+
export interface ToolApproval {
|
|
50
|
+
readonly waitTokenId: string;
|
|
51
|
+
/** When the call parked on the approval. */
|
|
52
|
+
readonly parkedAt: Timestamp;
|
|
53
|
+
/** When the decision reached the run. */
|
|
54
|
+
readonly decidedAt: Timestamp;
|
|
55
|
+
readonly decision: GateDecision;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The approval a tool call waited on, as the session gate records its own:
|
|
59
|
+
* a `wait` node (the agent parked) `resumed-from` a `resume` node (the
|
|
60
|
+
* decision, its actor whoever decided). The call `waited-on` the wait, and
|
|
61
|
+
* its result was `caused-by` the decision: the tool's output when approved,
|
|
62
|
+
* the rejection when not.
|
|
63
|
+
*/
|
|
64
|
+
export declare function addToolApprovalNodes(provenance: ProvenanceBuilder, invocationId: string, approval: ToolApproval, agentId: string): void;
|
|
65
|
+
/** A gate decision as a `resume` node records it. */
|
|
66
|
+
export declare function decisionOf(decision: GateDecision): 'approve' | 'reject' | 'unreadable';
|
|
67
|
+
//# sourceMappingURL=turn-provenance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turn-provenance.d.ts","sourceRoot":"","sources":["../../src/handlers/turn-provenance.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,+BAA+B;AAC/B,wBAAgB,YAAY,CAAC,UAAU,EAAE,iBAAiB,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAO9F;AAED,yDAAyD;AACzD,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,iBAAiB,EAC7B,SAAS,EAAE,SAAS,aAAa,EAAE,EACnC,KAAK,EAAE,mBAAmB,GACzB,IAAI,CAoBN;AAED,iFAAiF;AACjF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,iBAAiB,EAC7B,IAAI,EAAE,cAAc,EACpB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B,IAAI,CAmBN;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,iBAAiB,EAC7B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE;IAAE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACzF,IAAI,CAuBN;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,mBAAmB,EAAE,GACrC,IAAI,CAmBN;AAED,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,yCAAyC;IACzC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;CACjC;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,iBAAiB,EAC7B,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,MAAM,GACd,IAAI,CA4BN;AAED,qDAAqD;AACrD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,CAGtF"}
|