stitchkit 0.68.6 → 0.68.7
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-execution.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/run-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,OAAO,EACb,MAAM,IAAI,CAAC;AAGZ,OAAO,EAAE,KAAK,iBAAiB,EAAuB,MAAM,UAAU,CAAC;AAEvE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAG1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAapD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAKL,KAAK,QAAQ,EAMd,MAAM,WAAW,CAAC;AAuCnB,8DAA8D;AAC9D,MAAM,WAAW,uBAAuB,CAAC,OAAO,EAAE,KAAK,SAAS,OAAO;IACrE,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,IAAI,MAAM,CAAC;IACrB,GAAG,IAAI,IAAI,CAAC;IACZ,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,sBAAsB,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,KAAK,SAAS,OAAO,EAC9D,YAAY,EAAE,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,WAcb;IACtC,WAAW,EAAE,QAAQ,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,gFAAgF;IAChF,GAAG,EAAE,MAAM,CAAC;IACZ,gFAAgF;IAChF,UAAU,CAAC,IAAI,IAAI,CAAC;CACrB,KAAG,OAAO,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"run-execution.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/run-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,OAAO,EACb,MAAM,IAAI,CAAC;AAGZ,OAAO,EAAE,KAAK,iBAAiB,EAAuB,MAAM,UAAU,CAAC;AAEvE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAG1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAapD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAKL,KAAK,QAAQ,EAMd,MAAM,WAAW,CAAC;AAuCnB,8DAA8D;AAC9D,MAAM,WAAW,uBAAuB,CAAC,OAAO,EAAE,KAAK,SAAS,OAAO;IACrE,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,IAAI,MAAM,CAAC;IACrB,GAAG,IAAI,IAAI,CAAC;IACZ,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,sBAAsB,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,KAAK,SAAS,OAAO,EAC9D,YAAY,EAAE,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,WAcb;IACtC,WAAW,EAAE,QAAQ,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,gFAAgF;IAChF,GAAG,EAAE,MAAM,CAAC;IACZ,gFAAgF;IAChF,UAAU,CAAC,IAAI,IAAI,CAAC;CACrB,KAAG,OAAO,CAAC,kBAAkB,CAAC,CAq4BhC"}
|
|
@@ -34,7 +34,7 @@ export declare function abortTerminalReason(signal: AbortSignal): AgentTerminalR
|
|
|
34
34
|
*/
|
|
35
35
|
export declare function addUsage(total: AgentUsage | undefined, step: AgentUsage): AgentUsage;
|
|
36
36
|
/**
|
|
37
|
-
* The
|
|
37
|
+
* The SDK's own model-step total where it has one, our per-step sum where it does not.
|
|
38
38
|
*
|
|
39
39
|
* `totalUsage` is the SDK's sum over the steps it saw, and it covers only the
|
|
40
40
|
* five token fields it knows about — a `normalizeUsage` hook that reads
|
|
@@ -49,7 +49,7 @@ export declare function addUsage(total: AgentUsage | undefined, step: AgentUsage
|
|
|
49
49
|
* for a billable figure cares about, and pretending otherwise made one run
|
|
50
50
|
* report `provider-reported` on success and `computed` on abort.
|
|
51
51
|
*/
|
|
52
|
-
export declare function
|
|
52
|
+
export declare function mergeModelTotals(sdkTotal: AgentUsage, accumulated: AgentUsage | undefined): AgentUsage;
|
|
53
53
|
/**
|
|
54
54
|
* Every field present, so a reader never has to tell an absent key from a
|
|
55
55
|
* reported zero.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-internals.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/runtime-internals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,KAAK,gBAAgB,EAErB,KAAK,QAAQ,EACb,KAAK,mBAAmB,EACxB,KAAK,UAAU,EAChB,MAAM,WAAW,CAAC;AAGnB;;;;;GAKG;AAEH,wBAAgB,OAAO,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAI1E;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAG5E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO;;;;cAI9C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAQxE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,mBAAmB,CAK5E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAuDpF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,
|
|
1
|
+
{"version":3,"file":"runtime-internals.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/runtime-internals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,KAAK,gBAAgB,EAErB,KAAK,QAAQ,EACb,KAAK,mBAAmB,EACxB,KAAK,UAAU,EAChB,MAAM,WAAW,CAAC;AAGnB;;;;;GAKG;AAEH,wBAAgB,OAAO,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAI1E;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAG5E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO;;;;cAI9C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAQxE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,mBAAmB,CAK5E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAuDpF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,UAAU,EACpB,WAAW,EAAE,UAAU,GAAG,SAAS,GAClC,UAAU,CAiBZ;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,CAYrE;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,IAAI,UAAU,CAUzC;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,UAAU,CAmBvE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS;;iBAEhE,IAAI;;EAiBxB"}
|
package/dist/agent-runtime.js
CHANGED
|
@@ -1393,7 +1393,7 @@ function addUsage(total, step) {
|
|
|
1393
1393
|
...cost && { cost }
|
|
1394
1394
|
};
|
|
1395
1395
|
}
|
|
1396
|
-
function
|
|
1396
|
+
function mergeModelTotals(sdkTotal, accumulated) {
|
|
1397
1397
|
const pick = (total, ours) => total?.value !== undefined ? { value: total.value, provenance: "computed" } : ours ?? { provenance: "unavailable" };
|
|
1398
1398
|
return {
|
|
1399
1399
|
inputTokens: pick(sdkTotal.inputTokens, accumulated?.inputTokens),
|
|
@@ -1576,7 +1576,9 @@ function createRunExecutor(dependencies) {
|
|
|
1576
1576
|
let eventCount = 0;
|
|
1577
1577
|
let sequence = 0;
|
|
1578
1578
|
let terminalReason = "success";
|
|
1579
|
-
let
|
|
1579
|
+
let nonModelUsage = input.acceptedRun.usage;
|
|
1580
|
+
let modelUsage;
|
|
1581
|
+
let usage = nonModelUsage;
|
|
1580
1582
|
let sawProviderFinish = false;
|
|
1581
1583
|
let step = 0;
|
|
1582
1584
|
let selectedModel;
|
|
@@ -1651,8 +1653,10 @@ function createRunExecutor(dependencies) {
|
|
|
1651
1653
|
snapshot = compacted.snapshot;
|
|
1652
1654
|
observedVersion = snapshot.version;
|
|
1653
1655
|
run = findRun(snapshot.runs, run.id);
|
|
1654
|
-
if (compacted.usage)
|
|
1655
|
-
|
|
1656
|
+
if (compacted.usage) {
|
|
1657
|
+
nonModelUsage = addUsage(nonModelUsage, compacted.usage);
|
|
1658
|
+
usage = modelUsage ? addUsage(nonModelUsage, modelUsage) : nonModelUsage;
|
|
1659
|
+
}
|
|
1656
1660
|
}
|
|
1657
1661
|
const assertCurrent = async () => {
|
|
1658
1662
|
if (executionSignal.aborted)
|
|
@@ -2009,7 +2013,8 @@ function createRunExecutor(dependencies) {
|
|
|
2009
2013
|
usage: part.usage,
|
|
2010
2014
|
providerMetadata: part.providerMetadata
|
|
2011
2015
|
}) ?? normalizeSdkUsage(part.usage);
|
|
2012
|
-
|
|
2016
|
+
modelUsage = addUsage(modelUsage, stepUsage);
|
|
2017
|
+
usage = nonModelUsage ? addUsage(nonModelUsage, modelUsage) : modelUsage;
|
|
2013
2018
|
config.observe?.emit({
|
|
2014
2019
|
schemaVersion: 1,
|
|
2015
2020
|
eventId: generateId(),
|
|
@@ -2034,7 +2039,8 @@ function createRunExecutor(dependencies) {
|
|
|
2034
2039
|
}
|
|
2035
2040
|
if (part.type === "finish") {
|
|
2036
2041
|
sawProviderFinish = true;
|
|
2037
|
-
|
|
2042
|
+
modelUsage = mergeModelTotals(normalizeSdkUsage(part.totalUsage), modelUsage);
|
|
2043
|
+
usage = nonModelUsage ? addUsage(nonModelUsage, modelUsage) : modelUsage;
|
|
2038
2044
|
}
|
|
2039
2045
|
if (eventCount % checkpointEveryEvents === 0)
|
|
2040
2046
|
await checkpoint();
|
package/dist/testing.js
CHANGED
|
@@ -454,6 +454,14 @@ async function conformanceScenario(store, conversationIds) {
|
|
|
454
454
|
if (interruptedRun.usage?.cost?.value !== 0.25) {
|
|
455
455
|
throw new Error("An interrupt must not discard the figure the run had already spent");
|
|
456
456
|
}
|
|
457
|
+
const terminalUsage = {
|
|
458
|
+
inputTokens: { value: 3000, provenance: "computed" },
|
|
459
|
+
outputTokens: { value: 300, provenance: "computed" },
|
|
460
|
+
reasoningTokens: { value: 30, provenance: "computed" },
|
|
461
|
+
cacheReadTokens: { value: 200, provenance: "computed" },
|
|
462
|
+
cacheWriteTokens: { value: 100, provenance: "computed" },
|
|
463
|
+
cost: { value: 1.5, currency: "USD", provenance: "computed" }
|
|
464
|
+
};
|
|
457
465
|
const terminalResults = await Promise.all([
|
|
458
466
|
store.commitRunTerminal({
|
|
459
467
|
conversationId,
|
|
@@ -462,11 +470,7 @@ async function conformanceScenario(store, conversationIds) {
|
|
|
462
470
|
ownerId: "conformance-owner",
|
|
463
471
|
assistant: terminalAssistant,
|
|
464
472
|
reason: "success",
|
|
465
|
-
usage:
|
|
466
|
-
inputTokens: { value: 3000, provenance: "computed" },
|
|
467
|
-
outputTokens: { value: 300, provenance: "computed" },
|
|
468
|
-
cost: { value: 1.5, currency: "USD", provenance: "computed" }
|
|
469
|
-
}
|
|
473
|
+
usage: terminalUsage
|
|
470
474
|
}),
|
|
471
475
|
store.commitRunTerminal({
|
|
472
476
|
conversationId,
|
|
@@ -475,11 +479,7 @@ async function conformanceScenario(store, conversationIds) {
|
|
|
475
479
|
ownerId: "conformance-owner",
|
|
476
480
|
assistant: terminalAssistant,
|
|
477
481
|
reason: "success",
|
|
478
|
-
usage:
|
|
479
|
-
inputTokens: { value: 3000, provenance: "computed" },
|
|
480
|
-
outputTokens: { value: 300, provenance: "computed" },
|
|
481
|
-
cost: { value: 1.5, currency: "USD", provenance: "computed" }
|
|
482
|
-
}
|
|
482
|
+
usage: terminalUsage
|
|
483
483
|
})
|
|
484
484
|
]);
|
|
485
485
|
const terminalOutcomes = terminalResults.map((result) => result.outcome).sort();
|
|
@@ -491,13 +491,16 @@ async function conformanceScenario(store, conversationIds) {
|
|
|
491
491
|
throw new Error("Terminal race produced no applied result");
|
|
492
492
|
}
|
|
493
493
|
const settledRun = terminalApplied.snapshot.runs.find((run) => run.id === running.id);
|
|
494
|
-
if (settledRun?.usage
|
|
494
|
+
if (JSON.stringify(settledRun?.usage) !== JSON.stringify(terminalUsage)) {
|
|
495
495
|
throw new Error("Terminal commit did not persist the run usage it was given");
|
|
496
496
|
}
|
|
497
497
|
const terminalView = await store.loadRun({ conversationId, runId: running.id });
|
|
498
498
|
if (terminalView?.run.terminalReason !== "success") {
|
|
499
499
|
throw new Error("loadRun must report the terminal reason a settled run ended with");
|
|
500
500
|
}
|
|
501
|
+
if (JSON.stringify(terminalView.run.usage) !== JSON.stringify(terminalUsage)) {
|
|
502
|
+
throw new Error("loadRun must return every persisted terminal usage field");
|
|
503
|
+
}
|
|
501
504
|
if (JSON.stringify(terminalView.assistant) !== JSON.stringify(terminalAssistant)) {
|
|
502
505
|
throw new Error("loadRun must retain the answer a settled run produced");
|
|
503
506
|
}
|
package/package.json
CHANGED