agentenkit 0.1.0 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/admin/memory.d.ts.map +1 -1
- package/dist/admin/memory.js +8 -2
- package/dist/admin/memory.js.map +1 -1
- package/dist/admin/postgres.d.ts.map +1 -1
- package/dist/admin/postgres.js +13 -7
- package/dist/admin/postgres.js.map +1 -1
- package/dist/admin/sqlite.d.ts.map +1 -1
- package/dist/admin/sqlite.js +22 -8
- package/dist/admin/sqlite.js.map +1 -1
- package/dist/core/admin.d.ts +4 -1
- package/dist/core/admin.d.ts.map +1 -1
- package/dist/core/admin.js +12 -1
- package/dist/core/admin.js.map +1 -1
- package/dist/core/engine.d.ts.map +1 -1
- package/dist/core/engine.js +16 -7
- package/dist/core/engine.js.map +1 -1
- package/dist/core/loop.d.ts.map +1 -1
- package/dist/core/loop.js +9 -2
- package/dist/core/loop.js.map +1 -1
- package/dist/core/messages.d.ts +22 -0
- package/dist/core/messages.d.ts.map +1 -0
- package/dist/core/messages.js +51 -0
- package/dist/core/messages.js.map +1 -0
- package/dist/core/publish.d.ts +21 -1
- package/dist/core/publish.d.ts.map +1 -1
- package/dist/core/publish.js +57 -3
- package/dist/core/publish.js.map +1 -1
- package/dist/core/run.d.ts.map +1 -1
- package/dist/core/run.js +43 -4
- package/dist/core/run.js.map +1 -1
- package/dist/core/stop.d.ts.map +1 -1
- package/dist/core/stop.js +42 -0
- package/dist/core/stop.js.map +1 -1
- package/dist/core/subagent.d.ts.map +1 -1
- package/dist/core/subagent.js +5 -4
- package/dist/core/subagent.js.map +1 -1
- package/dist/core/tools.d.ts +12 -0
- package/dist/core/tools.d.ts.map +1 -1
- package/dist/core/tools.js.map +1 -1
- package/dist/core/types.d.ts +19 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/ports/admin.d.ts +18 -0
- package/dist/ports/admin.d.ts.map +1 -1
- package/dist/ports/runtime.d.ts +9 -0
- package/dist/ports/runtime.d.ts.map +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +2 -0
- package/dist/runtime.js.map +1 -1
- package/package.json +1 -1
package/dist/core/loop.js
CHANGED
|
@@ -212,9 +212,16 @@ export async function runLoop(deps, agent, threadId, input, ledger) {
|
|
|
212
212
|
break;
|
|
213
213
|
}
|
|
214
214
|
// Budget check BETWEEN steps (§2.1) — the step that crossed the line is
|
|
215
|
-
// kept in full; the next one never starts.
|
|
216
|
-
|
|
215
|
+
// kept in full; the next one never starts. Published before the break, so
|
|
216
|
+
// a client learns why the run ended the moment it does.
|
|
217
|
+
if (input.tokenBudget && ledger.tokensUsed >= input.tokenBudget) {
|
|
218
|
+
await publish(deps, threadId, 'TOKEN_BUDGET_EXHAUSTED', {
|
|
219
|
+
agentId: input.agentId,
|
|
220
|
+
tokensUsed: ledger.tokensUsed,
|
|
221
|
+
tokenBudget: input.tokenBudget,
|
|
222
|
+
});
|
|
217
223
|
break;
|
|
224
|
+
}
|
|
218
225
|
// 'tool-calls' → the SDK executed the step's tools; the loop feeds the
|
|
219
226
|
// results back. Anything else ('stop', 'length', …) ends the run.
|
|
220
227
|
if (step.finishReason !== 'tool-calls')
|
package/dist/core/loop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/core/loop.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/core/loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAK9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,eAAe,EAAyB,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC;6DAC6D;AAC7D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAe,EAAW,EAAE,CACnD,OAAO,MAAM,KAAK,QAAQ;IAC1B,MAAM,KAAK,IAAI;IACd,MAAkC,CAAC,WAAW,CAAC,KAAK,SAAS,CAAC;AAqBjE,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAsB,EACtB,IAeC;IAED,yEAAyE;IACzE,2EAA2E;IAC3E,uEAAuE;IACvE,MAAM,EACJ,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,aAAa,EACvB,YAAY,EAAE,gBAAgB,EAC9B,MAAM,EAAE,UAAU,EAClB,GAAG,QAAQ,EACZ,GAAG,KAAK,CAAC,IAA2B,CAAC;IAEtC,yEAAyE;IACzE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC;IACzC,MAAM,WAAW,GACf,IAAI,CAAC,iBAAiB,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAErF,MAAM,MAAM,GAAG;QACb,GAAG,QAAQ;QACX,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,gEAAgE;QAChE,yEAAyE;QACzE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ;QACtF,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,CAAC,EAAE,6BAA6B;QAC1C,GAAG,CAAC,WAAW,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1D,uEAAuE;QACvE,wBAAwB;QACxB,GAAG,CAAC,IAAI,CAAC,eAAe;YACtB,CAAC,CAAC;gBACE,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,6BAA6B,EAAE,IAAI,CAAC,eAAsB;aAC3D;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAO,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,OAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YACxE,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,gBAAgB;YAClB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,4BAA4B;YACxF,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IAEF,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAa,CAAC,CAAC;QACzC,2EAA2E;QAC3E,yEAAyE;QACzE,mCAAmC;QACnC,MAAM,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEtC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC3E,MAAM,CAAC,IAAI;YACX,MAAM,CAAC,KAAK;YACZ,MAAM,CAAC,YAAY;YACnB,MAAM,CAAC,QAAQ;YACf,MAAM,CAAC,KAAK;YACZ,kEAAkE;YACjE,MAAc,CAAC,gBAAgB,IAAK,MAAc,CAAC,6BAA6B;SAClF,CAAC,CAAC;QACH,OAAO;YACL,IAAI;YACJ,YAAY;YACZ,KAAK,EAAE,KAAY;YACnB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAQ;YACnD,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,EAAE,CAAQ;YACtD,gBAAgB,EAAE,IAAW;SAC9B,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAa,CAAC,CAAC;IACjD,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,KAAK,EAAE,MAAM,CAAC,KAAY;QAC1B,gBAAgB,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAQ;QAC1D,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,EAAE,CAAQ;QAC7D,gBAAgB,EACd,CAAE,MAAc,CAAC,gBAAgB;YAC9B,MAAc,CAAC,6BAA6B,CAAQ;KAC1D,CAAC;AACJ,CAAC;AAED;;yDAEyD;AACzD,MAAM,GAAG,GAAG,CAAC,IAAwB,EAAE,KAAa,EAAiB,EAAE,CACrE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAEzE,SAAS,QAAQ,CAAC,KAAc,EAAE,KAAa;IAC7C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;IAC7C,OAAO,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC;AACnE,CAAC;AAkDD;;;;;;;;gDAQgD;AAChD,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,IAAkB,EAClB,KAAsB,EACtB,QAAgB,EAChB,KAAgB,EAChB,MAAiB;IAEjB,MAAM,WAAW,GAAqB;QACpC,WAAW,EAAE,CAAC;QACd,iBAAiB,EAAE,CAAC;QACpB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,CAAC;KACf,CAAC;IACF,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,gBAAgB,GAAG,EAAE,CAAC;IAC1B,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,gBAAoC,CAAC;IACzC,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC/B,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,OAAO,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QACnD,SAAS,EAAE,CAAC;QACZ,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,IAAgB,CAAC;QACrB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE;gBAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,OAAO,EAAE,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;gBACjE,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;aAC3C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,KAAK,CAAC,WAAW,CAAC,OAAO;gBAAE,MAAM,CAAC,qBAAqB;YAC3D,MAAM,GAAG,CAAC,CAAC,qCAAqC;QAClD,CAAC;QAED,uEAAuE;QACvE,wEAAwE;QACxE,sEAAsE;QACtE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACnD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO,IAAI,CAAC;YACnC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE;gBAC3C,IAAI,EAAE,CAAC,CAAC,IAAW;gBACnB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE9C,yEAAyE;QACzE,yEAAyE;QACzE,wEAAwE;QACxE,wEAAwE;QACxE,qEAAqE;QACrE,MAAM,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE;YAC9C,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;QAEH,uEAAuE;QACvE,qEAAqE;QACrE,MAAM,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,KAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACpE,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC;QACzC,WAAW,CAAC,iBAAiB,IAAI,CAAC,CAAC,iBAAiB,CAAC;QACrD,WAAW,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC;QAC3C,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC;QACzC,UAAU,IAAI,CAAC,CAAC,WAAW,CAAC;QAC5B,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,WAAW,CAAC;QACnC,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QAC3B,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC;QACrC,QAAQ,IAAI,CAAC,CAAC;QAEd,sEAAsE;QACtE,uEAAuE;QACvE,uEAAuE;QACvE,MAAM,MAAM,GAAG;YACb,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;YACxB,QAAQ;YACR,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa;YACtC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;YACtC,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;iBAC5B,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC;iBAC5B,MAAM,CAAC,OAAO,CAAa;YAC9B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc;gBAC5B,CAAC,CAAC;oBACE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;oBACjD,SAAS,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;wBACnD,QAAQ,EAAE,CAAC,EAAE,QAAQ;wBACrB,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;wBACpD,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;qBACzD,CAAC,CAAC;iBACJ;gBACH,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;QACF,IAAI,KAAK,CAAC,KAAK;YAAE,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;QAE7D,qEAAqE;QACrE,mEAAmE;QACnE,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACpF,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,GAAG,IAAI,CAAC;YACd,gBAAgB,GAAI,YAAY,CAAC,MAAc,CAAC,WAAW,CAAC,CAAC;YAC7D,MAAM;QACR,CAAC;QAED,wEAAwE;QACxE,0EAA0E;QAC1E,wDAAwD;QACxD,IAAI,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YAChE,MAAM,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,wBAAwB,EAAE;gBACtD,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC,CAAC;YACH,MAAM;QACR,CAAC;QAED,uEAAuE;QACvE,kEAAkE;QAClE,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY;YAAE,MAAM;IAChD,CAAC;IAED,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,gBAAgB;QAC9B,WAAW;QACX,UAAU;QACV,MAAM;QACN,gBAAgB;QAChB,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO;QAClC,KAAK,EAAE,QAAQ;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** Prompt-side repair of the message history (§2.5).
|
|
2
|
+
*
|
|
3
|
+
* History can carry an assistant tool call with no tool result: a run that
|
|
4
|
+
* was stopped while parked for approval persisted the call and never its
|
|
5
|
+
* result, or a worker died between the two. Strict providers (OpenAI,
|
|
6
|
+
* Anthropic) reject such a prompt outright, which would wedge the thread on
|
|
7
|
+
* every later run. The repair inserts a synthetic result saying so. It is
|
|
8
|
+
* prompt-side only; nothing is written back. */
|
|
9
|
+
interface MessageLike {
|
|
10
|
+
role: string;
|
|
11
|
+
content: unknown;
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
}
|
|
14
|
+
export declare const DANGLING_CALL_RESULT: {
|
|
15
|
+
cancelled: boolean;
|
|
16
|
+
reason: string;
|
|
17
|
+
};
|
|
18
|
+
/** Close every assistant tool call that has no tool result before the next
|
|
19
|
+
* turn. Idempotent. */
|
|
20
|
+
export declare function repairDanglingToolCalls<T extends MessageLike>(messages: T[]): T[];
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/core/messages.ts"],"names":[],"mappings":"AAAA;;;;;;;iDAOiD;AASjD,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAID,eAAO,MAAM,oBAAoB;;;CAGhC,CAAC;AAEF;wBACwB;AACxB,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAgCjF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/** Prompt-side repair of the message history (§2.5).
|
|
2
|
+
*
|
|
3
|
+
* History can carry an assistant tool call with no tool result: a run that
|
|
4
|
+
* was stopped while parked for approval persisted the call and never its
|
|
5
|
+
* result, or a worker died between the two. Strict providers (OpenAI,
|
|
6
|
+
* Anthropic) reject such a prompt outright, which would wedge the thread on
|
|
7
|
+
* every later run. The repair inserts a synthetic result saying so. It is
|
|
8
|
+
* prompt-side only; nothing is written back. */
|
|
9
|
+
const parts = (content) => (Array.isArray(content) ? content : []);
|
|
10
|
+
export const DANGLING_CALL_RESULT = {
|
|
11
|
+
cancelled: true,
|
|
12
|
+
reason: 'no result was recorded for this call',
|
|
13
|
+
};
|
|
14
|
+
/** Close every assistant tool call that has no tool result before the next
|
|
15
|
+
* turn. Idempotent. */
|
|
16
|
+
export function repairDanglingToolCalls(messages) {
|
|
17
|
+
const out = [];
|
|
18
|
+
for (let i = 0; i < messages.length; i += 1) {
|
|
19
|
+
const m = messages[i];
|
|
20
|
+
out.push(m);
|
|
21
|
+
if (m.role !== 'assistant')
|
|
22
|
+
continue;
|
|
23
|
+
const calls = parts(m.content).filter((p) => p.type === 'tool-call' && p.toolCallId);
|
|
24
|
+
if (calls.length === 0)
|
|
25
|
+
continue;
|
|
26
|
+
const answered = new Set();
|
|
27
|
+
let j = i + 1;
|
|
28
|
+
for (; j < messages.length && messages[j].role === 'tool'; j += 1) {
|
|
29
|
+
for (const p of parts(messages[j].content)) {
|
|
30
|
+
if (p.type === 'tool-result' && p.toolCallId)
|
|
31
|
+
answered.add(p.toolCallId);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const missing = calls
|
|
35
|
+
.filter((c) => !answered.has(c.toolCallId))
|
|
36
|
+
.map((c) => ({
|
|
37
|
+
type: 'tool-result',
|
|
38
|
+
toolCallId: c.toolCallId,
|
|
39
|
+
toolName: c.toolName,
|
|
40
|
+
result: DANGLING_CALL_RESULT,
|
|
41
|
+
}));
|
|
42
|
+
if (missing.length === 0)
|
|
43
|
+
continue;
|
|
44
|
+
// Keep the results together, right after the call, before any later turn.
|
|
45
|
+
out.push(...messages.slice(i + 1, j));
|
|
46
|
+
out.push({ role: 'tool', content: missing });
|
|
47
|
+
i = j - 1;
|
|
48
|
+
}
|
|
49
|
+
return out;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/core/messages.ts"],"names":[],"mappings":"AAAA;;;;;;;iDAOiD;AAejD,MAAM,KAAK,GAAG,CAAC,OAAgB,EAAc,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAExG,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,sCAAsC;CAC/C,CAAC;AAEF;wBACwB;AACxB,MAAM,UAAU,uBAAuB,CAAwB,QAAa;IAC1E,MAAM,GAAG,GAAQ,EAAE,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACZ,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;QACrF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEjC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACnE,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5C,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,UAAU;oBAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG,KAAK;aAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,UAAW,CAAC,CAAC;aAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACX,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EAAE,oBAAoB;SAC7B,CAAC,CAAC,CAAC;QACN,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEnC,0EAA0E;QAC1E,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAO,CAAC,CAAC;QAClD,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/core/publish.d.ts
CHANGED
|
@@ -5,7 +5,27 @@ import type { AgentEvent } from './types.js';
|
|
|
5
5
|
* (§2.2). Seq comes from Kv.incr — monotonic per thread (§3.4). */
|
|
6
6
|
export declare function publish(deps: RuntimePorts, threadId: string, type: string, payload: unknown): Promise<AgentEvent>;
|
|
7
7
|
/** Publish a bus-only notice (never persisted) — e.g. HITL death notices (§2.5). */
|
|
8
|
-
export declare function publishNotice(deps: RuntimePorts, threadId: string, type: string, payload: unknown): Promise<
|
|
8
|
+
export declare function publishNotice(deps: RuntimePorts, threadId: string, type: string, payload: unknown): Promise<AgentEvent>;
|
|
9
|
+
/** Event types the platform itself emits. An app cannot publish these: a
|
|
10
|
+
* client's reducer trusts them to mean what the engine meant. */
|
|
11
|
+
export declare const RESERVED_EVENT_TYPES: ReadonlySet<string>;
|
|
12
|
+
export interface PublishEventOptions {
|
|
13
|
+
/** `true` (the default) writes the event to the thread's log, so it is
|
|
14
|
+
* replayed to a client that reconnects. `false` sends it over the bus only:
|
|
15
|
+
* a progress tick, a typing indicator — anything nobody needs to see twice. */
|
|
16
|
+
durable?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/** Publish an event of your own on a thread, through the same pipeline the
|
|
19
|
+
* platform's events take: the durable log and the live bus (§2.2). A client
|
|
20
|
+
* sees it in `onEvent`, exactly like a built-in one. */
|
|
21
|
+
export declare function publishEvent(deps: RuntimePorts, threadId: string, type: string, payload: unknown, options?: PublishEventOptions): Promise<AgentEvent>;
|
|
22
|
+
/** What a tool calls to publish: `publishEvent(type, payload, options?)`,
|
|
23
|
+
* already bound to the thread the tool is acting on. */
|
|
24
|
+
export type ToolPublishEvent = (type: string, payload: unknown, options?: PublishEventOptions) => Promise<AgentEvent>;
|
|
25
|
+
/** Give every tool `publishEvent` alongside the SDK's own options, bound to
|
|
26
|
+
* the thread it runs on — main agent, nested run, or a segment resumed after
|
|
27
|
+
* an approval alike. */
|
|
28
|
+
export declare function withPublishEvent(deps: RuntimePorts, threadId: string, tools: Record<string, any>): Record<string, any>;
|
|
9
29
|
/** Move a thread to a new state on BOTH the caller's storage and the
|
|
10
30
|
* platform's own operational view (§2.9).
|
|
11
31
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/core/publish.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;oEACoE;AACpE,wBAAsB,OAAO,CAC3B,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,CAAC,CAMrB;AAED,oFAAoF;AACpF,wBAAsB,aAAa,CACjC,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/core/publish.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;oEACoE;AACpE,wBAAsB,OAAO,CAC3B,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,CAAC,CAMrB;AAED,oFAAoF;AACpF,wBAAsB,aAAa,CACjC,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,CAAC,CAIrB;AAED;kEACkE;AAClE,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAoBnD,CAAC;AAEH,MAAM,WAAW,mBAAmB;IAClC;;oFAEgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;yDAEyD;AACzD,wBAAsB,YAAY,CAChC,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,UAAU,CAAC,CAUrB;AAED;yDACyD;AACzD,MAAM,MAAM,gBAAgB,GAAG,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,mBAAmB,KAC1B,OAAO,CAAC,UAAU,CAAC,CAAC;AAEzB;;yBAEyB;AACzB,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACzB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAerB;AAED;;;;;;;mBAOmB;AACnB,wBAAsB,cAAc,CAClC,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,cAAc,EACrB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAQf"}
|
package/dist/core/publish.js
CHANGED
|
@@ -9,9 +9,63 @@ export async function publish(deps, threadId, type, payload) {
|
|
|
9
9
|
}
|
|
10
10
|
/** Publish a bus-only notice (never persisted) — e.g. HITL death notices (§2.5). */
|
|
11
11
|
export async function publishNotice(deps, threadId, type, payload) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
const event = { threadId, seq: 0, type, payload, createdAt: new Date() };
|
|
13
|
+
await deps.bus.publish(threadId, event);
|
|
14
|
+
return event;
|
|
15
|
+
}
|
|
16
|
+
/** Event types the platform itself emits. An app cannot publish these: a
|
|
17
|
+
* client's reducer trusts them to mean what the engine meant. */
|
|
18
|
+
export const RESERVED_EVENT_TYPES = new Set([
|
|
19
|
+
'CHUNK',
|
|
20
|
+
'STATE_CHANGE',
|
|
21
|
+
'STEP_COMMITTED',
|
|
22
|
+
'STEP_FINISHED',
|
|
23
|
+
'INPUT_REQUIRED',
|
|
24
|
+
'INPUT_EXPIRED',
|
|
25
|
+
'HITL_RESPONSE',
|
|
26
|
+
'MESSAGE_APPENDED',
|
|
27
|
+
'MESSAGES_DROPPED',
|
|
28
|
+
'CONTEXT_COMPACTED',
|
|
29
|
+
'SUBAGENT_STARTED',
|
|
30
|
+
'SUBAGENT_CHUNK',
|
|
31
|
+
'SUBAGENT_COMPLETED',
|
|
32
|
+
'SUBAGENT_FAILED',
|
|
33
|
+
'TEXT_RESULT',
|
|
34
|
+
'THREAD_DELETED',
|
|
35
|
+
'HEARTBEAT',
|
|
36
|
+
'RUN_REFUSED',
|
|
37
|
+
'TOKEN_BUDGET_EXHAUSTED',
|
|
38
|
+
]);
|
|
39
|
+
/** Publish an event of your own on a thread, through the same pipeline the
|
|
40
|
+
* platform's events take: the durable log and the live bus (§2.2). A client
|
|
41
|
+
* sees it in `onEvent`, exactly like a built-in one. */
|
|
42
|
+
export async function publishEvent(deps, threadId, type, payload, options = {}) {
|
|
43
|
+
if (!type || typeof type !== 'string') {
|
|
44
|
+
throw new Error('publishEvent: an event type is required');
|
|
45
|
+
}
|
|
46
|
+
if (RESERVED_EVENT_TYPES.has(type)) {
|
|
47
|
+
throw new Error(`publishEvent: ${type} is a platform event type — pick your own`);
|
|
48
|
+
}
|
|
49
|
+
return options.durable === false
|
|
50
|
+
? publishNotice(deps, threadId, type, payload)
|
|
51
|
+
: publish(deps, threadId, type, payload);
|
|
52
|
+
}
|
|
53
|
+
/** Give every tool `publishEvent` alongside the SDK's own options, bound to
|
|
54
|
+
* the thread it runs on — main agent, nested run, or a segment resumed after
|
|
55
|
+
* an approval alike. */
|
|
56
|
+
export function withPublishEvent(deps, threadId, tools) {
|
|
57
|
+
const publishHere = (type, payload, options) => publishEvent(deps, threadId, type, payload, options);
|
|
58
|
+
const out = {};
|
|
59
|
+
for (const [name, t] of Object.entries(tools)) {
|
|
60
|
+
out[name] =
|
|
61
|
+
typeof t?.execute === 'function'
|
|
62
|
+
? {
|
|
63
|
+
...t,
|
|
64
|
+
execute: (args, opts) => t.execute(args, { ...opts, publishEvent: publishHere }),
|
|
65
|
+
}
|
|
66
|
+
: t;
|
|
67
|
+
}
|
|
68
|
+
return out;
|
|
15
69
|
}
|
|
16
70
|
/** Move a thread to a new state on BOTH the caller's storage and the
|
|
17
71
|
* platform's own operational view (§2.9).
|
package/dist/core/publish.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/core/publish.ts"],"names":[],"mappings":"AAIA;oEACoE;AACpE,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,IAAkB,EAClB,QAAgB,EAChB,IAAY,EACZ,OAAgB;IAEhB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC;IACxD,MAAM,KAAK,GAAe,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;IAClF,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAClD,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAkB,EAClB,QAAgB,EAChB,IAAY,EACZ,OAAgB;IAEhB,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/core/publish.ts"],"names":[],"mappings":"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"}
|
package/dist/core/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/core/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/core/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAMlD;;;4DAG4D;AAC5D,wBAAsB,GAAG,CACvB,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,QAAQ,GACd,OAAO,CAAC,SAAS,CAAC,CAsIpB"}
|
package/dist/core/run.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { reclaimIfOrphaned } from './reclaim.js';
|
|
2
2
|
import { claimRun } from './keys.js';
|
|
3
|
-
import { publish, setThreadState } from './publish.js';
|
|
3
|
+
import { publish, setThreadState, publishEvent } from './publish.js';
|
|
4
|
+
import { mergeProviderOptions } from './types.js';
|
|
4
5
|
/** The §5.1 behavior: heal orphans → billing pre-check (§4) → persist the user
|
|
5
6
|
* message → state RUNNING (hot + durable) → enqueue on the dispatch queue
|
|
6
7
|
* (§2.8). Accepts no execution responsibility whatsoever — the queue does
|
|
@@ -19,11 +20,19 @@ export async function run(deps, agent, input) {
|
|
|
19
20
|
if (state === 'RUNNING' || state === 'WAITING_FOR_INPUT') {
|
|
20
21
|
return { accepted: false, threadId, error: 'Thread has an active run' };
|
|
21
22
|
}
|
|
22
|
-
// Billing pre-execution check (§4) — user-injected hook
|
|
23
|
+
// Billing pre-execution check (§4) — user-injected hook. A refusal is
|
|
24
|
+
// published on the thread as well as returned, so every client on the
|
|
25
|
+
// thread sees it, and a reload still shows it.
|
|
23
26
|
if (deps.config.billingPreCheck) {
|
|
24
|
-
const check = await deps.config.billingPreCheck(
|
|
27
|
+
const check = await deps.config.billingPreCheck({
|
|
28
|
+
threadId,
|
|
29
|
+
state: input.state ?? {},
|
|
30
|
+
publishEvent: (type, payload, options) => publishEvent(deps, threadId, type, payload, options),
|
|
31
|
+
});
|
|
25
32
|
if (!check.ok) {
|
|
26
|
-
|
|
33
|
+
const error = check.error ?? 'Billing check failed';
|
|
34
|
+
await publish(deps, threadId, 'RUN_REFUSED', { reason: 'billing', error });
|
|
35
|
+
return { accepted: false, threadId, error };
|
|
27
36
|
}
|
|
28
37
|
}
|
|
29
38
|
// Edit + resend (§5.1): the edited turn and everything it led to are
|
|
@@ -85,9 +94,29 @@ export async function run(deps, agent, input) {
|
|
|
85
94
|
: input.prompt,
|
|
86
95
|
tokenBudget: input.tokenBudget ?? null,
|
|
87
96
|
runState: input.state ?? null,
|
|
97
|
+
providerOptions: providerOptionsFor(deps, agent, input),
|
|
88
98
|
}
|
|
89
99
|
: {}),
|
|
90
100
|
});
|
|
101
|
+
// What started the thread (§2.9), recorded once: the first dispatched
|
|
102
|
+
// run's parameters. A later run never overwrites it. Observability must
|
|
103
|
+
// never fail a run, so this is best-effort.
|
|
104
|
+
await deps.admin.threads
|
|
105
|
+
.upsert({
|
|
106
|
+
id: threadId, state: 'RUNNING', model,
|
|
107
|
+
startedWith: {
|
|
108
|
+
runId, agent: agent.name, model, at: new Date(),
|
|
109
|
+
...(deps.config.recordPayloads
|
|
110
|
+
? {
|
|
111
|
+
prompt: capText(input.prompt, deps.config.payloadCapChars),
|
|
112
|
+
tokenBudget: input.tokenBudget ?? null,
|
|
113
|
+
state: input.state ?? null,
|
|
114
|
+
providerOptions: providerOptionsFor(deps, agent, input),
|
|
115
|
+
}
|
|
116
|
+
: {}),
|
|
117
|
+
},
|
|
118
|
+
})
|
|
119
|
+
.catch(() => undefined);
|
|
91
120
|
await deps.queue.enqueue({
|
|
92
121
|
threadId, runId, model, agent: agent.name,
|
|
93
122
|
enqueuedAt: Date.now(),
|
|
@@ -99,4 +128,14 @@ export async function run(deps, agent, input) {
|
|
|
99
128
|
});
|
|
100
129
|
return { accepted: true, threadId, runId, state: 'RUNNING' };
|
|
101
130
|
}
|
|
131
|
+
/** The provider options a run is dispatched with (§3.1): config → spec →
|
|
132
|
+
* input, each winning over the one before, per provider namespace. Null when
|
|
133
|
+
* no level sets any, so the column stays empty rather than `{}`. */
|
|
134
|
+
function providerOptionsFor(deps, agent, input) {
|
|
135
|
+
const merged = mergeProviderOptions(mergeProviderOptions(deps.config.providerOptions, agent.spec.providerOptions), input.providerOptions);
|
|
136
|
+
return merged && Object.keys(merged).length > 0 ? merged : null;
|
|
137
|
+
}
|
|
138
|
+
function capText(text, limit) {
|
|
139
|
+
return text.length > limit ? `${text.slice(0, limit)}…` : text;
|
|
140
|
+
}
|
|
102
141
|
//# sourceMappingURL=run.js.map
|
package/dist/core/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/core/run.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/core/run.ts"],"names":[],"mappings":"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"}
|
package/dist/core/stop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../src/core/stop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../src/core/stop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;uEAEuE;AACvE,wBAAsB,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAiBpF"}
|
package/dist/core/stop.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { publish, setThreadState } from './publish.js';
|
|
2
|
+
import { loadOpenHitls } from './hitl.js';
|
|
2
3
|
/** The whole stop mechanism (§2.1): one button, one behavior — everything
|
|
3
4
|
* stops immediately. The engine's poller sees CANCELLED on the hot cache and
|
|
4
5
|
* fires the abort; the durable state is the recovery truth (§3.4). */
|
|
@@ -7,9 +8,50 @@ export async function stop(deps, threadId) {
|
|
|
7
8
|
if (thread?.state !== 'RUNNING' && thread?.state !== 'WAITING_FOR_INPUT') {
|
|
8
9
|
return { accepted: false, error: `Cannot stop thread in state ${thread?.state ?? 'unknown'}` };
|
|
9
10
|
}
|
|
11
|
+
// Read before the write: an adapter may hand back the very object the
|
|
12
|
+
// state write mutates.
|
|
13
|
+
const wasParked = thread.state === 'WAITING_FOR_INPUT';
|
|
10
14
|
await deps.kv.set(`agent:state:${threadId}`, 'CANCELLED');
|
|
11
15
|
await setThreadState(deps, threadId, 'CANCELLED', thread.model);
|
|
12
16
|
await publish(deps, threadId, 'STATE_CHANGE', { state: 'CANCELLED' });
|
|
17
|
+
if (wasParked)
|
|
18
|
+
await closeOpenParks(deps, threadId);
|
|
13
19
|
return { accepted: true };
|
|
14
20
|
}
|
|
21
|
+
/** Answer every open approval with a cancellation, so the history the next
|
|
22
|
+
* run sends is well-formed (§2.5). A park persists the assistant's tool call
|
|
23
|
+
* and defers its result to the resume; a stop means that resume never comes,
|
|
24
|
+
* and a dangling call is a prompt no strict provider accepts. Nested parks
|
|
25
|
+
* close their whole chain: the child's call and every spawnSubagent call
|
|
26
|
+
* waiting on it (§2.7), whose run records end CANCELLED too. */
|
|
27
|
+
async function closeOpenParks(deps, threadId) {
|
|
28
|
+
const result = { cancelled: true, reason: 'stopped' };
|
|
29
|
+
const toolResult = (toolCallId, toolName) => [
|
|
30
|
+
{ type: 'tool-result', toolCallId, toolName, result },
|
|
31
|
+
];
|
|
32
|
+
for (const pending of await loadOpenHitls(deps, threadId)) {
|
|
33
|
+
await deps.storage.messages.append(threadId, {
|
|
34
|
+
role: 'tool',
|
|
35
|
+
agentId: pending.agentId,
|
|
36
|
+
content: toolResult(pending.toolCallId, pending.toolName),
|
|
37
|
+
});
|
|
38
|
+
if (pending.nested) {
|
|
39
|
+
await deps.admin.runs
|
|
40
|
+
.patch(pending.nested.agentId, { state: 'CANCELLED', stopReason: 'cancelled', endedAt: new Date() })
|
|
41
|
+
.catch(() => undefined);
|
|
42
|
+
}
|
|
43
|
+
for (const frame of pending.frames) {
|
|
44
|
+
await deps.storage.messages.append(threadId, {
|
|
45
|
+
role: 'tool',
|
|
46
|
+
agentId: frame.agentId,
|
|
47
|
+
content: toolResult(frame.toolCallId, 'spawnSubagent'),
|
|
48
|
+
});
|
|
49
|
+
if (frame.nested) {
|
|
50
|
+
await deps.admin.runs
|
|
51
|
+
.patch(frame.nested.agentId, { state: 'CANCELLED', stopReason: 'cancelled', endedAt: new Date() })
|
|
52
|
+
.catch(() => undefined);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
15
57
|
//# sourceMappingURL=stop.js.map
|
package/dist/core/stop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/core/stop.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/core/stop.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../src/core/subagent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,UAAU,EAEV,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../src/core/subagent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,UAAU,EAEV,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAG9D,OAAO,EAAW,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtE;;oEAEoE;AACpE,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;IACpB;kEAC8D;IAC9D,GAAG,EAAE,eAAe,CAAC;IACrB;sEACkE;IAClE,KAAK,EAAE,eAAe,CAAC;IACvB;6DACyD;IACzD,MAAM,EAAE,SAAS,CAAC;IAClB,0EAA0E;IAC1E,MAAM,EAAE,UAAU,CAAC;IACnB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,8EAA8E;IAC9E,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB;yEACqE;IACrE,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,sDAAsD;IACtD,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,mFAAmF;AACnF,qBAAa,SAAS;IAGR,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFlC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAsB;gBACR,KAAK,EAAE,MAAM;IAEpC,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;CAoBrC;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW;;;;;;;;;;;;;;;;;;EAyHjD;AAmFD;;;;;;+DAM+D;AAC/D,wBAAsB,cAAc,CAClC,GAAG,EAAE,WAAW,EAChB,CAAC,EAAE,gBAAgB;AACnB,yEAAyE;AACzE,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,MAAM,EAAE,SAAS,EAAE,GAClB,OAAO,CAAC,WAAW,CAAC,CA0DtB"}
|
package/dist/core/subagent.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { tool } from 'ai';
|
|
3
3
|
import { z } from 'zod';
|
|
4
|
-
import { publish } from './publish.js';
|
|
4
|
+
import { publish, withPublishEvent } from './publish.js';
|
|
5
5
|
import { HITL_PARKED, withHitl } from './hitl.js';
|
|
6
6
|
import { withRunState } from './state.js';
|
|
7
7
|
import { markPromptCaching } from './cache.js';
|
|
8
|
+
import { repairDanglingToolCalls } from './messages.js';
|
|
8
9
|
import { runLoop } from './loop.js';
|
|
9
10
|
/** Run-scoped semaphore: sibling subagents queue instead of running away (§2.7) */
|
|
10
11
|
export class Semaphore {
|
|
@@ -185,12 +186,12 @@ function nestedTools(ctx, d, frames, abortSignal) {
|
|
|
185
186
|
}),
|
|
186
187
|
};
|
|
187
188
|
// A nested run's tools see the same state as its parent's (§2.10).
|
|
188
|
-
return withRunState(withHitl(ctx.ports, ctx.threadId, raw, {
|
|
189
|
+
return withRunState(withPublishEvent(ctx.ports, ctx.threadId, withHitl(ctx.ports, ctx.threadId, raw, {
|
|
189
190
|
resume: ctx.resume,
|
|
190
191
|
agentId: d.agentId,
|
|
191
192
|
frames,
|
|
192
193
|
nested: d,
|
|
193
|
-
}), ctx.state ?? {});
|
|
194
|
+
})), ctx.state ?? {});
|
|
194
195
|
}
|
|
195
196
|
/** The delegation tool lets the MODEL name the child's model, so an unknown
|
|
196
197
|
* registry key is ordinary bad input rather than a failure. `resolveModel`
|
|
@@ -240,7 +241,7 @@ instructions, abortSignal, frames) {
|
|
|
240
241
|
// Stamped like the parent's (§2.6). A nested run re-sends its whole
|
|
241
242
|
// brief and history on every step, so it is exactly the shape caching
|
|
242
243
|
// is for — it was the one prompt in the system going out unstamped.
|
|
243
|
-
messages: maybeCache(ports, persisted.map((m) => ({ role: m.role, content: m.content }))),
|
|
244
|
+
messages: maybeCache(ports, repairDanglingToolCalls(persisted.map((m) => ({ role: m.role, content: m.content })))),
|
|
244
245
|
tools: nestedTools(ctx, d, frames, abortSignal),
|
|
245
246
|
maxSteps: ports.config.subagentMaxSteps,
|
|
246
247
|
abortSignal: abortSignal ?? new AbortController().signal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../src/core/subagent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../src/core/subagent.ts"],"names":[],"mappings":"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"}
|
package/dist/core/tools.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type ToolExecutionOptions } from 'ai';
|
|
2
2
|
import type { z } from 'zod';
|
|
3
3
|
import type { AgentRunState } from './state.js';
|
|
4
|
+
import type { ToolPublishEvent } from './publish.js';
|
|
4
5
|
/** What a tool's `execute` actually receives: the AI SDK's own options, plus
|
|
5
6
|
* the run's state (§2.10).
|
|
6
7
|
*
|
|
@@ -12,6 +13,17 @@ export interface ToolContext extends ToolExecutionOptions {
|
|
|
12
13
|
/** Whatever the caller attached to this run. Present for every tool of every
|
|
13
14
|
* run, including a nested one and a segment resumed after an approval. */
|
|
14
15
|
state: AgentRunState;
|
|
16
|
+
/** Publish an event of your own on this thread — a progress label, a
|
|
17
|
+
* preview URL, anything a client should react to. Durable by default, so a
|
|
18
|
+
* reconnecting client replays it; pass `{ durable: false }` for a notice.
|
|
19
|
+
* See the "Custom events" guide. */
|
|
20
|
+
publishEvent: ToolPublishEvent;
|
|
21
|
+
/** Present only when this call is the resumption of an approved park
|
|
22
|
+
* (§2.5): whatever the human sent back with the approval — answers to
|
|
23
|
+
* questions, a corrected value, a reason. Absent on a first, live call. */
|
|
24
|
+
approval?: {
|
|
25
|
+
payload?: unknown;
|
|
26
|
+
};
|
|
15
27
|
}
|
|
16
28
|
/** `tool()` with the run state typed.
|
|
17
29
|
*
|
package/dist/core/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/core/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,oBAAoB,EAAE,MAAM,IAAI,CAAC;AACrD,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/core/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,oBAAoB,EAAE,MAAM,IAAI,CAAC;AACrD,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD;;;;;;kCAMkC;AAClC,MAAM,WAAW,WAAY,SAAQ,oBAAoB;IACvD;+EAC2E;IAC3E,KAAK,EAAE,aAAa,CAAC;IACrB;;;yCAGqC;IACrC,YAAY,EAAE,gBAAgB,CAAC;IAC/B;;gFAE4E;IAC5E,QAAQ,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAClC;AAED;;;;;;;;;;;;0EAY0E;AAC1E,wBAAgB,SAAS,CAAC,UAAU,SAAS,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,WAAW,KAAK,WAAW,CAAC,MAAM,CAAC,CAAC;CAC/E;;EAUA"}
|
package/dist/core/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/core/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA6B,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/core/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA6B,MAAM,IAAI,CAAC;AA2BrD;;;;;;;;;;;;0EAY0E;AAC1E,MAAM,UAAU,SAAS,CAA0C,IAIlE;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAClC,OAAO,IAAI,CAAC;QACV,GAAG,IAAI;QACP,OAAO,EAAE,CAAC,CAAC,IAAyB,EAAE,OAA6B,EAAE,EAAE,CACrE,OAAO,CAAC,IAAI,EAAE,OAAsB,CAAC,CAGf;KACzB,CAAC,CAAC;AACL,CAAC"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -84,6 +84,9 @@ export interface RunRecord {
|
|
|
84
84
|
prompt?: string | null;
|
|
85
85
|
tokenBudget?: number | null;
|
|
86
86
|
runState?: Record<string, unknown> | null;
|
|
87
|
+
/** The provider options the run was dispatched with (§3.1), merged across
|
|
88
|
+
* config, spec and input. Present only when `recordPayloads` is on. */
|
|
89
|
+
providerOptions?: Record<string, unknown> | null;
|
|
87
90
|
/** A nested run's capped result, handed back to its parent (§2.7). */
|
|
88
91
|
result?: unknown;
|
|
89
92
|
}
|
|
@@ -95,6 +98,7 @@ export interface NewRunRecord {
|
|
|
95
98
|
prompt?: string | null;
|
|
96
99
|
tokenBudget?: number | null;
|
|
97
100
|
runState?: Record<string, unknown> | null;
|
|
101
|
+
providerOptions?: Record<string, unknown> | null;
|
|
98
102
|
/** Defaults to 0 — a dispatched run. */
|
|
99
103
|
depth?: number;
|
|
100
104
|
parentRunId?: string | null;
|
|
@@ -270,8 +274,11 @@ export interface AgentConfig {
|
|
|
270
274
|
/** Lease (seconds) for the per-thread run lock — must exceed the longest
|
|
271
275
|
* possible run segment; parked HITL waits hold NO lock (§2.8, §3.4). */
|
|
272
276
|
runLockLeaseSeconds: number;
|
|
273
|
-
/** Billing pre-execution check (§4). Return `{ ok: false, error }` to reject
|
|
274
|
-
|
|
277
|
+
/** Billing pre-execution check (§4). Return `{ ok: false, error }` to reject
|
|
278
|
+
* a run. The check can publish on the thread (a credit warning, a reset
|
|
279
|
+
* date) so every client sees why; the platform also publishes RUN_REFUSED
|
|
280
|
+
* with the error. */
|
|
281
|
+
billingPreCheck?: (check: BillingCheck) => Promise<{
|
|
275
282
|
ok: boolean;
|
|
276
283
|
error?: string;
|
|
277
284
|
}>;
|
|
@@ -281,6 +288,16 @@ export interface AgentConfig {
|
|
|
281
288
|
* provider namespace. */
|
|
282
289
|
providerOptions?: ProviderOptions;
|
|
283
290
|
}
|
|
291
|
+
/** What `billingPreCheck` receives: the thread about to run, the run's state
|
|
292
|
+
* (§2.10), and a way to publish on the thread before the refusal reaches the
|
|
293
|
+
* caller. `publishEvent(type, payload, { durable })` — durable by default. */
|
|
294
|
+
export interface BillingCheck {
|
|
295
|
+
threadId: string;
|
|
296
|
+
state: AgentRunState;
|
|
297
|
+
publishEvent: (type: string, payload: unknown, options?: {
|
|
298
|
+
durable?: boolean;
|
|
299
|
+
}) => Promise<AgentEvent>;
|
|
300
|
+
}
|
|
284
301
|
export declare const DEFAULT_CONFIG: AgentConfig;
|
|
285
302
|
export declare function resolveConfig(partial?: Partial<AgentConfig>): AgentConfig;
|
|
286
303
|
//# sourceMappingURL=types.d.ts.map
|