agentfootprint 10.8.0 → 10.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CAPABILITIES.md +3 -0
- package/dist/adapters/memory/agentcore.js +33 -9
- package/dist/adapters/memory/agentcore.js.map +1 -1
- package/dist/adapters/memory/memoryBank.js +5 -2
- package/dist/adapters/memory/memoryBank.js.map +1 -1
- package/dist/adapters/memory/pgVector.js +3 -2
- package/dist/adapters/memory/pgVector.js.map +1 -1
- package/dist/adapters/memory/redis.js +3 -1
- package/dist/adapters/memory/redis.js.map +1 -1
- package/dist/adapters/memory/s3Vectors.js +3 -2
- package/dist/adapters/memory/s3Vectors.js.map +1 -1
- package/dist/adapters/memory/sqliteVector.js +3 -2
- package/dist/adapters/memory/sqliteVector.js.map +1 -1
- package/dist/core/Agent.js +2 -1
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/agent/buildDynamicAgentChart.js +1 -0
- package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/core/agent/composeRequest.js +5 -2
- package/dist/core/agent/composeRequest.js.map +1 -1
- package/dist/core/agent/findings/admission.js +140 -0
- package/dist/core/agent/findings/admission.js.map +1 -0
- package/dist/core/agent/findings/answerAdmission.js +90 -0
- package/dist/core/agent/findings/answerAdmission.js.map +1 -0
- package/dist/core/agent/findings/ledger.js +17 -5
- package/dist/core/agent/findings/ledger.js.map +1 -1
- package/dist/core/agent/findings/peel.js +12 -1
- package/dist/core/agent/findings/peel.js.map +1 -1
- package/dist/core/agent/findings/refusal.js +68 -0
- package/dist/core/agent/findings/refusal.js.map +1 -0
- package/dist/core/agent/findings/serve.js +3 -10
- package/dist/core/agent/findings/serve.js.map +1 -1
- package/dist/core/agent/findings/ticket.js +13 -0
- package/dist/core/agent/findings/ticket.js.map +1 -0
- package/dist/core/agent/honesty/mounts.js +42 -26
- package/dist/core/agent/honesty/mounts.js.map +1 -1
- package/dist/core/agent/stages/callLLM.js +31 -22
- package/dist/core/agent/stages/callLLM.js.map +1 -1
- package/dist/core/agent/stages/reliabilityExecution.js +2 -0
- package/dist/core/agent/stages/reliabilityExecution.js.map +1 -1
- package/dist/core/agent/stages/route.js +29 -28
- package/dist/core/agent/stages/route.js.map +1 -1
- package/dist/core/agent/stages/toolCalls.js +124 -73
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/core/runCheckpoint.js +4 -1
- package/dist/core/runCheckpoint.js.map +1 -1
- package/dist/esm/adapters/memory/agentcore.d.ts +18 -9
- package/dist/esm/adapters/memory/agentcore.js +33 -9
- package/dist/esm/adapters/memory/agentcore.js.map +1 -1
- package/dist/esm/adapters/memory/memoryBank.js +5 -2
- package/dist/esm/adapters/memory/memoryBank.js.map +1 -1
- package/dist/esm/adapters/memory/pgVector.js +3 -2
- package/dist/esm/adapters/memory/pgVector.js.map +1 -1
- package/dist/esm/adapters/memory/redis.js +3 -1
- package/dist/esm/adapters/memory/redis.js.map +1 -1
- package/dist/esm/adapters/memory/s3Vectors.js +3 -2
- package/dist/esm/adapters/memory/s3Vectors.js.map +1 -1
- package/dist/esm/adapters/memory/sqliteVector.js +3 -2
- package/dist/esm/adapters/memory/sqliteVector.js.map +1 -1
- package/dist/esm/core/Agent.js +2 -1
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/agent/buildDynamicAgentChart.js +1 -0
- package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/esm/core/agent/composeRequest.d.ts +2 -1
- package/dist/esm/core/agent/composeRequest.js +5 -2
- package/dist/esm/core/agent/composeRequest.js.map +1 -1
- package/dist/esm/core/agent/findings/admission.d.ts +26 -0
- package/dist/esm/core/agent/findings/admission.js +134 -0
- package/dist/esm/core/agent/findings/admission.js.map +1 -0
- package/dist/esm/core/agent/findings/answerAdmission.d.ts +13 -0
- package/dist/esm/core/agent/findings/answerAdmission.js +61 -0
- package/dist/esm/core/agent/findings/answerAdmission.js.map +1 -0
- package/dist/esm/core/agent/findings/ledger.d.ts +4 -1
- package/dist/esm/core/agent/findings/ledger.js +17 -5
- package/dist/esm/core/agent/findings/ledger.js.map +1 -1
- package/dist/esm/core/agent/findings/peel.d.ts +6 -1
- package/dist/esm/core/agent/findings/peel.js +12 -1
- package/dist/esm/core/agent/findings/peel.js.map +1 -1
- package/dist/esm/core/agent/findings/refusal.d.ts +15 -0
- package/dist/esm/core/agent/findings/refusal.js +63 -0
- package/dist/esm/core/agent/findings/refusal.js.map +1 -0
- package/dist/esm/core/agent/findings/serve.d.ts +2 -12
- package/dist/esm/core/agent/findings/serve.js +1 -8
- package/dist/esm/core/agent/findings/serve.js.map +1 -1
- package/dist/esm/core/agent/findings/ticket.d.ts +13 -0
- package/dist/esm/core/agent/findings/ticket.js +9 -0
- package/dist/esm/core/agent/findings/ticket.js.map +1 -0
- package/dist/esm/core/agent/findings/types.d.ts +1 -1
- package/dist/esm/core/agent/honesty/mounts.d.ts +2 -62
- package/dist/esm/core/agent/honesty/mounts.js +17 -1
- package/dist/esm/core/agent/honesty/mounts.js.map +1 -1
- package/dist/esm/core/agent/stages/callLLM.js +31 -22
- package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
- package/dist/esm/core/agent/stages/reliabilityExecution.d.ts +2 -0
- package/dist/esm/core/agent/stages/reliabilityExecution.js +2 -0
- package/dist/esm/core/agent/stages/reliabilityExecution.js.map +1 -1
- package/dist/esm/core/agent/stages/route.d.ts +4 -1
- package/dist/esm/core/agent/stages/route.js +28 -27
- package/dist/esm/core/agent/stages/route.js.map +1 -1
- package/dist/esm/core/agent/stages/toolCalls.d.ts +0 -51
- package/dist/esm/core/agent/stages/toolCalls.js +99 -48
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/agent/types.d.ts +5 -0
- package/dist/esm/core/runCheckpoint.js +4 -1
- package/dist/esm/core/runCheckpoint.js.map +1 -1
- package/dist/esm/hosting/standingAgent.js +3 -0
- package/dist/esm/hosting/standingAgent.js.map +1 -1
- package/dist/esm/memory/stages/loadRecent.d.ts +2 -0
- package/dist/esm/memory/stages/loadRecent.js +6 -4
- package/dist/esm/memory/stages/loadRecent.js.map +1 -1
- package/dist/esm/memory/store/InMemoryStore.d.ts +0 -15
- package/dist/esm/memory/store/InMemoryStore.js +18 -2
- package/dist/esm/memory/store/InMemoryStore.js.map +1 -1
- package/dist/esm/memory/store/requestLimit.d.ts +5 -0
- package/dist/esm/memory/store/requestLimit.js +11 -0
- package/dist/esm/memory/store/requestLimit.js.map +1 -0
- package/dist/esm/memory/store/staticVectorStore.js +44 -2
- package/dist/esm/memory/store/staticVectorStore.js.map +1 -1
- package/dist/esm/memory/store/types.d.ts +10 -3
- package/dist/esm/memory-providers.d.ts +1 -1
- package/dist/esm/memory-providers.js.map +1 -1
- package/dist/esm/provider-contract/requestObserver.d.ts +9 -0
- package/dist/esm/provider-contract/requestObserver.js +39 -0
- package/dist/esm/provider-contract/requestObserver.js.map +1 -0
- package/dist/esm/provider-contract/types.d.ts +9 -0
- package/dist/esm/provider-contract/types.js.map +1 -1
- package/dist/esm/redaction/conversation.js +1 -0
- package/dist/esm/redaction/conversation.js.map +1 -1
- package/dist/esm/redaction/knownStrings.js +3 -0
- package/dist/esm/redaction/knownStrings.js.map +1 -1
- package/dist/esm/resilience/withFallback.js +37 -9
- package/dist/esm/resilience/withFallback.js.map +1 -1
- package/dist/esm/resilience/withRetry.js +16 -5
- package/dist/esm/resilience/withRetry.js.map +1 -1
- package/dist/hosting/standingAgent.js +3 -0
- package/dist/hosting/standingAgent.js.map +1 -1
- package/dist/memory/stages/loadRecent.js +6 -4
- package/dist/memory/stages/loadRecent.js.map +1 -1
- package/dist/memory/store/InMemoryStore.js +18 -2
- package/dist/memory/store/InMemoryStore.js.map +1 -1
- package/dist/memory/store/requestLimit.js +15 -0
- package/dist/memory/store/requestLimit.js.map +1 -0
- package/dist/memory/store/staticVectorStore.js +44 -2
- package/dist/memory/store/staticVectorStore.js.map +1 -1
- package/dist/memory-providers.js.map +1 -1
- package/dist/provider-contract/requestObserver.js +44 -0
- package/dist/provider-contract/requestObserver.js.map +1 -0
- package/dist/provider-contract/types.js.map +1 -1
- package/dist/redaction/conversation.js +1 -0
- package/dist/redaction/conversation.js.map +1 -1
- package/dist/redaction/knownStrings.js +3 -0
- package/dist/redaction/knownStrings.js.map +1 -1
- package/dist/resilience/withFallback.js +37 -9
- package/dist/resilience/withFallback.js.map +1 -1
- package/dist/resilience/withRetry.js +16 -5
- package/dist/resilience/withRetry.js.map +1 -1
- package/dist/types/adapters/memory/agentcore.d.ts +18 -9
- package/dist/types/adapters/memory/agentcore.d.ts.map +1 -1
- package/dist/types/adapters/memory/memoryBank.d.ts.map +1 -1
- package/dist/types/adapters/memory/pgVector.d.ts.map +1 -1
- package/dist/types/adapters/memory/redis.d.ts.map +1 -1
- package/dist/types/adapters/memory/s3Vectors.d.ts.map +1 -1
- package/dist/types/adapters/memory/sqliteVector.d.ts.map +1 -1
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/composeRequest.d.ts +2 -1
- package/dist/types/core/agent/composeRequest.d.ts.map +1 -1
- package/dist/types/core/agent/findings/admission.d.ts +27 -0
- package/dist/types/core/agent/findings/admission.d.ts.map +1 -0
- package/dist/types/core/agent/findings/answerAdmission.d.ts +14 -0
- package/dist/types/core/agent/findings/answerAdmission.d.ts.map +1 -0
- package/dist/types/core/agent/findings/ledger.d.ts +4 -1
- package/dist/types/core/agent/findings/ledger.d.ts.map +1 -1
- package/dist/types/core/agent/findings/peel.d.ts +6 -1
- package/dist/types/core/agent/findings/peel.d.ts.map +1 -1
- package/dist/types/core/agent/findings/refusal.d.ts +16 -0
- package/dist/types/core/agent/findings/refusal.d.ts.map +1 -0
- package/dist/types/core/agent/findings/serve.d.ts +2 -12
- package/dist/types/core/agent/findings/serve.d.ts.map +1 -1
- package/dist/types/core/agent/findings/ticket.d.ts +14 -0
- package/dist/types/core/agent/findings/ticket.d.ts.map +1 -0
- package/dist/types/core/agent/findings/types.d.ts +1 -1
- package/dist/types/core/agent/findings/types.d.ts.map +1 -1
- package/dist/types/core/agent/honesty/mounts.d.ts +2 -62
- package/dist/types/core/agent/honesty/mounts.d.ts.map +1 -1
- package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
- package/dist/types/core/agent/stages/reliabilityExecution.d.ts +2 -0
- package/dist/types/core/agent/stages/reliabilityExecution.d.ts.map +1 -1
- package/dist/types/core/agent/stages/route.d.ts +4 -1
- package/dist/types/core/agent/stages/route.d.ts.map +1 -1
- package/dist/types/core/agent/stages/toolCalls.d.ts +0 -51
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/core/agent/types.d.ts +5 -0
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/core/runCheckpoint.d.ts.map +1 -1
- package/dist/types/hosting/standingAgent.d.ts.map +1 -1
- package/dist/types/memory/stages/loadRecent.d.ts +2 -0
- package/dist/types/memory/stages/loadRecent.d.ts.map +1 -1
- package/dist/types/memory/store/InMemoryStore.d.ts +0 -15
- package/dist/types/memory/store/InMemoryStore.d.ts.map +1 -1
- package/dist/types/memory/store/requestLimit.d.ts +6 -0
- package/dist/types/memory/store/requestLimit.d.ts.map +1 -0
- package/dist/types/memory/store/staticVectorStore.d.ts.map +1 -1
- package/dist/types/memory/store/types.d.ts +10 -3
- package/dist/types/memory/store/types.d.ts.map +1 -1
- package/dist/types/memory-providers.d.ts +1 -1
- package/dist/types/memory-providers.d.ts.map +1 -1
- package/dist/types/provider-contract/requestObserver.d.ts +10 -0
- package/dist/types/provider-contract/requestObserver.d.ts.map +1 -0
- package/dist/types/provider-contract/types.d.ts +9 -0
- package/dist/types/provider-contract/types.d.ts.map +1 -1
- package/dist/types/redaction/conversation.d.ts.map +1 -1
- package/dist/types/redaction/knownStrings.d.ts.map +1 -1
- package/dist/types/resilience/withFallback.d.ts.map +1 -1
- package/dist/types/resilience/withRetry.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.buildToolCallsHandler = exports.producerCorpusOf = exports.notDispatchedResult = exports.pausedBatchOf = exports._resetPeriodUnjudgedWarnings = exports.composeReadSkillRefusal = exports.unknownToolResult = exports.notServedResult = exports.atMountedCursor = void 0;
|
|
27
|
+
const refusal_js_1 = require("../findings/refusal.js");
|
|
28
|
+
const admission_js_1 = require("../findings/admission.js");
|
|
2
29
|
/**
|
|
3
30
|
* toolCalls — pausable handler for executing the LLM-requested tool
|
|
4
31
|
* calls in the agent's ReAct loop.
|
|
@@ -50,31 +77,6 @@
|
|
|
50
77
|
* calls it with a valid Skill id, the next InjectionEngine pass
|
|
51
78
|
* activates that Skill (lifetime: turn).
|
|
52
79
|
*/
|
|
53
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
54
|
-
if (k2 === undefined) k2 = k;
|
|
55
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
56
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
57
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
58
|
-
}
|
|
59
|
-
Object.defineProperty(o, k2, desc);
|
|
60
|
-
}) : (function(o, m, k, k2) {
|
|
61
|
-
if (k2 === undefined) k2 = k;
|
|
62
|
-
o[k2] = m[k];
|
|
63
|
-
}));
|
|
64
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
65
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
66
|
-
}) : function(o, v) {
|
|
67
|
-
o["default"] = v;
|
|
68
|
-
});
|
|
69
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
70
|
-
if (mod && mod.__esModule) return mod;
|
|
71
|
-
var result = {};
|
|
72
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
73
|
-
__setModuleDefault(result, mod);
|
|
74
|
-
return result;
|
|
75
|
-
};
|
|
76
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
77
|
-
exports.buildToolCallsHandler = exports.producerCorpusOf = exports.notDispatchedResult = exports.pausedBatchOf = exports._resetPeriodUnjudgedWarnings = exports.composeReadSkillRefusal = exports.unknownToolResult = exports.notServedResult = exports.atMountedCursor = void 0;
|
|
78
80
|
const codeRunnerTool_js_1 = require("../../codeRunnerTool.js");
|
|
79
81
|
const footprintjs_1 = require("footprintjs");
|
|
80
82
|
const types_js_1 = require("../../../provider-contract/types.js");
|
|
@@ -2623,6 +2625,7 @@ function buildToolCallsHandler(deps) {
|
|
|
2623
2625
|
return { result: `credential error for '${need.credential}': ${reason}`, error: true };
|
|
2624
2626
|
}
|
|
2625
2627
|
}
|
|
2628
|
+
let executed = false;
|
|
2626
2629
|
try {
|
|
2627
2630
|
// The time layer's dispatch moment — a resumed call is dispatched NOW,
|
|
2628
2631
|
// so its `dispatchedAt` is the resume's, not the pause's.
|
|
@@ -2634,7 +2637,7 @@ function buildToolCallsHandler(deps) {
|
|
|
2634
2637
|
args = dispatched.args;
|
|
2635
2638
|
// `let`, not `const`: the semantic projection below replaces the value
|
|
2636
2639
|
// on the non-envelope path exactly as the batch loop does.
|
|
2637
|
-
|
|
2640
|
+
const executionContext = {
|
|
2638
2641
|
toolCallId,
|
|
2639
2642
|
iteration,
|
|
2640
2643
|
...(callTime !== undefined && { time: callTime }),
|
|
@@ -2647,7 +2650,9 @@ function buildToolCallsHandler(deps) {
|
|
|
2647
2650
|
...toolProgress(scope, { toolName, toolCallId, iteration }),
|
|
2648
2651
|
...sessionContext(scope, toolName, toolCallId),
|
|
2649
2652
|
...toolDispatchCtx(scope, { toolName, toolCallId, iteration }, env.signal),
|
|
2650
|
-
}
|
|
2653
|
+
};
|
|
2654
|
+
executed = true;
|
|
2655
|
+
let result = await tool.execute(args, executionContext);
|
|
2651
2656
|
await endCall(toolCallId);
|
|
2652
2657
|
// The typed effects channel (9.19.0) — same unwrap as the batch loop,
|
|
2653
2658
|
// at this path's own execute boundary, so a resumed call's envelope is
|
|
@@ -2771,7 +2776,7 @@ function buildToolCallsHandler(deps) {
|
|
|
2771
2776
|
result: `tool '${toolName}' requested a pause while resuming an approved check-in, which is not supported`,
|
|
2772
2777
|
error: true,
|
|
2773
2778
|
// It ran — a tool that asked to pause had already started work.
|
|
2774
|
-
executed
|
|
2779
|
+
executed,
|
|
2775
2780
|
};
|
|
2776
2781
|
}
|
|
2777
2782
|
// A tool that threw still RAN, and may have done half its work; the
|
|
@@ -2779,7 +2784,7 @@ function buildToolCallsHandler(deps) {
|
|
|
2779
2784
|
return {
|
|
2780
2785
|
result: err instanceof Error ? err.message : String(err),
|
|
2781
2786
|
error: true,
|
|
2782
|
-
executed
|
|
2787
|
+
executed,
|
|
2783
2788
|
};
|
|
2784
2789
|
}
|
|
2785
2790
|
};
|
|
@@ -2809,12 +2814,40 @@ function buildToolCallsHandler(deps) {
|
|
|
2809
2814
|
...scope.llmLatestToolCalls,
|
|
2810
2815
|
];
|
|
2811
2816
|
const iteration = scope.iteration;
|
|
2817
|
+
// ── STANDINGS OF EARLIER RESULTS AND REFERENCE ADMISSION ───────
|
|
2818
|
+
// Freeze admission before batch asks, kept-answer consumption or any
|
|
2819
|
+
// policy/credential callback. A sibling result never enlarges it.
|
|
2820
|
+
const findingsPeels = deps.findings === true ? toolCalls.map(peelCall) : [];
|
|
2821
|
+
const findingsRefusals = findingsPeels.map((peeled) => (0, admission_js_1.findingsReferenceRefusal)(peeled.findings, scope.findingsRequest?.[0], iteration, peeled.malformed));
|
|
2822
|
+
if (deps.findings === true &&
|
|
2823
|
+
findingsPeels.some((p) => p.findings !== undefined || p.malformed) &&
|
|
2824
|
+
scope.findingsBatchRecordedAt !== iteration) {
|
|
2825
|
+
const known = (0, offer_js_1.knownResults)([...(scope.history ?? [])], [...(scope.toolResults ?? [])]);
|
|
2826
|
+
scope.findingsBatchRecordedAt = iteration;
|
|
2827
|
+
(0, ledger_js_2.recordFindings)(scope, toolCalls.flatMap((tc, index) => findingsRefusals[index] === undefined
|
|
2828
|
+
? []
|
|
2829
|
+
: [
|
|
2830
|
+
(0, refusal_js_1.referenceRefusalRow)({ toolCallId: tc.id }, iteration, (findingsPeels[index]?.malformed ?? 0) > 0, findingsPeels[index]?.malformed ? tc.args._findings : undefined),
|
|
2831
|
+
]), turnStampOf(scope));
|
|
2832
|
+
(0, ledger_js_2.recordFindings)(scope, (0, unsettled_js_1.withUnsettledRows)(toolCalls.flatMap((tc, index) => {
|
|
2833
|
+
const declared = findingsPeels[index]?.findings;
|
|
2834
|
+
return declared?.previous !== undefined
|
|
2835
|
+
? (0, ledger_js_2.standingRowsFrom)(known, declared, { toolCallId: tc.id }, iteration, {
|
|
2836
|
+
witness: scope.findingsRequest?.[0],
|
|
2837
|
+
})
|
|
2838
|
+
: [];
|
|
2839
|
+
}), known, () => [...(scope.coverageDeclared ?? [])]), turnStampOf(scope));
|
|
2840
|
+
}
|
|
2812
2841
|
// THE INPUTS LAYER'S HALF OF DISPATCH (honesty layer 2) — loaded through
|
|
2813
2842
|
// `import()` only under the arm, so an unarmed batch awaits nothing new.
|
|
2814
2843
|
const inputs = deps.inputsLayer === true ? await Promise.resolve().then(() => __importStar(require('../arguments/dispatch.js'))) : undefined;
|
|
2815
2844
|
// THE INPUTS LAYER'S RESOLUTIONS for this batch — read only under the
|
|
2816
2845
|
// arm, and only the entries resolved for THIS iteration.
|
|
2817
2846
|
let resolutions = inputs?.resolutionsFor(scope, iteration);
|
|
2847
|
+
if (resolutions !== undefined && findingsRefusals.some((item) => item !== undefined)) {
|
|
2848
|
+
const refusedIds = new Set(toolCalls.filter((_, index) => findingsRefusals[index] !== undefined).map((tc) => tc.id));
|
|
2849
|
+
resolutions = new Map([...resolutions].filter(([id]) => !refusedIds.has(id)));
|
|
2850
|
+
}
|
|
2818
2851
|
// A fill the layer took from an answer this turn KEPT (a call of the
|
|
2819
2852
|
// batch that asked could not finish) is that answer's one use — dropped
|
|
2820
2853
|
// before anything else (`arguments/dispatch.ts` · `dropUsedKept`).
|
|
@@ -2905,37 +2938,10 @@ function buildToolCallsHandler(deps) {
|
|
|
2905
2938
|
// call to this same array). `lastToolResult` stays the last entry;
|
|
2906
2939
|
// `on-tool-return` triggers and skill-graph routes read the batch.
|
|
2907
2940
|
const batchResults = [];
|
|
2908
|
-
//
|
|
2909
|
-
//
|
|
2910
|
-
//
|
|
2911
|
-
//
|
|
2912
|
-
// run can identify (`findings/offer.ts · knownResults`): the previous
|
|
2913
|
-
// batch — `toolResults`, about to be reset one line down, so this is
|
|
2914
|
-
// the last read of it — and every tool message on `history` as served
|
|
2915
|
-
// to this call, the SAME list the offer was read from at the Tools
|
|
2916
|
-
// mount, so an id copied from the offer resolves whichever batch it
|
|
2917
|
-
// came from (9.102.0; before, only the last batch resolved and an
|
|
2918
|
-
// offered older id filed as `unknownId`). Read through the same
|
|
2919
|
-
// per-call peel the loop below applies (a tool that owns the name
|
|
2920
|
-
// declares nothing). A ruled-out standing whose result THIS door
|
|
2921
|
-
// recorded as an absence (`declareCoverage`'s rows on
|
|
2922
|
-
// `coverageDeclared`, never a second reading of a return) AND the
|
|
2923
|
-
// model was served as one (the served string — the door records the
|
|
2924
|
-
// return before the after-tool chain, the ceiling and placement act,
|
|
2925
|
-
// so a denied, refused or ticketed result files nothing) gets its
|
|
2926
|
-
// `unsettled-by-absence` row immediately after it, in the same write,
|
|
2927
|
-
// worded from what was served (9.113.0, `findings/unsettled.ts`; the
|
|
2928
|
-
// key is read only for such a standing); the standing rows pass
|
|
2929
|
-
// through untouched. Gated: unarmed, not one line runs.
|
|
2930
|
-
if (deps.findings === true) {
|
|
2931
|
-
const known = (0, offer_js_1.knownResults)([...(scope.history ?? [])], [...(scope.toolResults ?? [])]);
|
|
2932
|
-
(0, ledger_js_2.recordFindings)(scope, (0, unsettled_js_1.withUnsettledRows)(toolCalls.flatMap((tc) => {
|
|
2933
|
-
const declared = peelCall(tc).findings;
|
|
2934
|
-
return declared?.previous !== undefined
|
|
2935
|
-
? (0, ledger_js_2.standingRowsFrom)(known, declared, { toolCallId: tc.id }, iteration)
|
|
2936
|
-
: [];
|
|
2937
|
-
}), known, () => [...(scope.coverageDeclared ?? [])]), turnStampOf(scope));
|
|
2938
|
-
}
|
|
2941
|
+
// Findings standings were preserved in the admission preflight, before
|
|
2942
|
+
// the batch ask could pause. Their identity came from this response's
|
|
2943
|
+
// immutable request witness, not this resetting result list. Absence
|
|
2944
|
+
// interpretation still uses the existing known-results/coverage reader.
|
|
2939
2945
|
scope.toolResults = [];
|
|
2940
2946
|
// The results layer (honesty layer 3) judges each batch ONCE, at the
|
|
2941
2947
|
// first loop-head visit after it ran — told apart from a re-entry by
|
|
@@ -2961,7 +2967,7 @@ function buildToolCallsHandler(deps) {
|
|
|
2961
2967
|
// checker sees consistent identity across both gates.
|
|
2962
2968
|
const runIdentity = scope.runIdentity;
|
|
2963
2969
|
const env = scope.$getEnv();
|
|
2964
|
-
for (const tc of toolCalls) {
|
|
2970
|
+
for (const [callIndex, tc] of toolCalls.entries()) {
|
|
2965
2971
|
const emitSecurity = (0, toolSecurityEvents_js_1.bindToolSecurityEvents)(scope, { toolCallId: tc.id, iteration });
|
|
2966
2972
|
const resolved = resolveTool(tc.name);
|
|
2967
2973
|
const tool = resolved.tool;
|
|
@@ -2997,13 +3003,14 @@ function buildToolCallsHandler(deps) {
|
|
|
2997
3003
|
...(toolCalls.length > 1 && { parallelCount: toolCalls.length }),
|
|
2998
3004
|
});
|
|
2999
3005
|
const startMs = Date.now();
|
|
3000
|
-
|
|
3001
|
-
let
|
|
3006
|
+
const findingsRefusal = findingsRefusals[callIndex];
|
|
3007
|
+
let result = findingsRefusal;
|
|
3008
|
+
let error = findingsRefusal === undefined ? undefined : true;
|
|
3002
3009
|
/** The typed effects channel (9.19.0) — set only when the tool
|
|
3003
3010
|
* returned a recognized result envelope; everything else keeps
|
|
3004
3011
|
* today's path byte for byte. */
|
|
3005
3012
|
let toolEnvelope;
|
|
3006
|
-
let toolStatus;
|
|
3013
|
+
let toolStatus = findingsRefusal === undefined ? undefined : 'invalid';
|
|
3007
3014
|
// Permission gate — when a checker is configured, evaluate BEFORE
|
|
3008
3015
|
// executing the tool. Emits `permission.check` with the decision.
|
|
3009
3016
|
//
|
|
@@ -3044,7 +3051,7 @@ function buildToolCallsHandler(deps) {
|
|
|
3044
3051
|
* judged on. Same reference as `args` unless a link rewrote (or the
|
|
3045
3052
|
* inputs layer filled a value — then every filled key is named). */
|
|
3046
3053
|
let chainedArgs = runArgs;
|
|
3047
|
-
let denied =
|
|
3054
|
+
let denied = findingsRefusal !== undefined;
|
|
3048
3055
|
/** True once `tool.execute` has been entered — see `afterMoment`. */
|
|
3049
3056
|
let executed = false;
|
|
3050
3057
|
/** The tool's own `resultCeiling` refused this call's result (9.20.0)
|
|
@@ -3052,7 +3059,7 @@ function buildToolCallsHandler(deps) {
|
|
|
3052
3059
|
* refusal's own instruction is to call again. */
|
|
3053
3060
|
let ceilingRefused = false;
|
|
3054
3061
|
let haltContext;
|
|
3055
|
-
if (permissionChecker) {
|
|
3062
|
+
if (!denied && permissionChecker) {
|
|
3056
3063
|
try {
|
|
3057
3064
|
// Sequence is derived from history at check time (not parallel
|
|
3058
3065
|
// state) — single source of truth, survives resumeOnError.
|
|
@@ -3253,7 +3260,7 @@ function buildToolCallsHandler(deps) {
|
|
|
3253
3260
|
// the layer NOT mounted — any call whose tool declares rules (fail
|
|
3254
3261
|
// closed). Neither applies to a tool that declares nothing — and
|
|
3255
3262
|
// neither awaits for one (`unmountedRules` answers it synchronously).
|
|
3256
|
-
const unmounted = argsRejected ? undefined : unmountedRules(tool, tc.name);
|
|
3263
|
+
const unmounted = denied || argsRejected ? undefined : unmountedRules(tool, tc.name);
|
|
3257
3264
|
warnUnmountedToolPeriod(tool, tc.name);
|
|
3258
3265
|
const rulesRefusal = argsRejected
|
|
3259
3266
|
? undefined
|
|
@@ -3680,8 +3687,7 @@ function buildToolCallsHandler(deps) {
|
|
|
3680
3687
|
// Set BEFORE the await: a tool that throws has still run, and a
|
|
3681
3688
|
// tool that does not exist has not. This flag is the entire
|
|
3682
3689
|
// precondition of the after-tool moment below.
|
|
3683
|
-
|
|
3684
|
-
result = await tool.execute(callArgs, {
|
|
3690
|
+
const executionContext = {
|
|
3685
3691
|
toolCallId: tc.id,
|
|
3686
3692
|
iteration,
|
|
3687
3693
|
...(callTime !== undefined && { time: callTime }),
|
|
@@ -3694,7 +3700,9 @@ function buildToolCallsHandler(deps) {
|
|
|
3694
3700
|
...toolProgress(scope, { toolName: tc.name, toolCallId: tc.id, iteration }),
|
|
3695
3701
|
...sessionContext(scope, tc.name, tc.id),
|
|
3696
3702
|
...toolDispatchCtx(scope, { toolName: tc.name, toolCallId: tc.id, iteration }, env.signal),
|
|
3697
|
-
}
|
|
3703
|
+
};
|
|
3704
|
+
executed = true;
|
|
3705
|
+
result = await tool.execute(callArgs, executionContext);
|
|
3698
3706
|
// A code-runner tool leaves the SHAPE of what it just ran, keyed by
|
|
3699
3707
|
// this call. Taken and deleted here so the map cannot grow across
|
|
3700
3708
|
// a long run, and emitted from the dispatch loop rather than from
|
|
@@ -4349,6 +4357,7 @@ function buildToolCallsHandler(deps) {
|
|
|
4349
4357
|
content: resultStr,
|
|
4350
4358
|
toolCallId: tc.id,
|
|
4351
4359
|
toolName: tc.name,
|
|
4360
|
+
...(deps.findings === true && !executed && { toolResultOrigin: 'not-entered' }),
|
|
4352
4361
|
...(layerNote !== '' && { toolChars: deliveredResult.length }),
|
|
4353
4362
|
...(tc.argumentsFailure !== undefined && {
|
|
4354
4363
|
toolArgumentsFailure: { ...tc.argumentsFailure },
|
|
@@ -4499,6 +4508,27 @@ function buildToolCallsHandler(deps) {
|
|
|
4499
4508
|
if (deps.resultsLayer === true && scope.toolResultsIteration === undefined) {
|
|
4500
4509
|
scope.toolResultsIteration = scope.iteration;
|
|
4501
4510
|
}
|
|
4511
|
+
if (deps.findings === true) {
|
|
4512
|
+
const proposed = [...scope.history]
|
|
4513
|
+
.reverse()
|
|
4514
|
+
.find((message) => message.role === 'assistant' &&
|
|
4515
|
+
message.toolCalls?.some((call) => call.id === toolCallId))
|
|
4516
|
+
?.toolCalls?.filter((call) => call.id === toolCallId);
|
|
4517
|
+
const declaration = proposed?.length === 1 ? peelCall(proposed[0]) : undefined;
|
|
4518
|
+
const refusal = proposed?.length === 1
|
|
4519
|
+
? (0, admission_js_1.findingsReferenceRefusal)(declaration?.findings, scope.findingsRequest?.[0], scope.iteration, declaration?.malformed)
|
|
4520
|
+
: JSON.stringify({
|
|
4521
|
+
refused: 'findings-reference',
|
|
4522
|
+
reason: 'The original paused proposal is unavailable or ambiguous.',
|
|
4523
|
+
});
|
|
4524
|
+
if (refusal !== undefined) {
|
|
4525
|
+
scope.messageDeniedReason = refusal;
|
|
4526
|
+
scope.messageDeniedPhase = 'output';
|
|
4527
|
+
scope.messageDeniedBy = 'findings-reference-admission';
|
|
4528
|
+
scope.$break('findings reference refused the resumed proposal');
|
|
4529
|
+
return;
|
|
4530
|
+
}
|
|
4531
|
+
}
|
|
4502
4532
|
// ── Middleware-ask decision path ─────────────────────────────────
|
|
4503
4533
|
// Discriminated by `scope.pausedAsk`, restored from the checkpoint.
|
|
4504
4534
|
//
|
|
@@ -4750,7 +4780,14 @@ function buildToolCallsHandler(deps) {
|
|
|
4750
4780
|
// siblings the pause left un-dispatched, each settled — never run.
|
|
4751
4781
|
const askSettlement = settleBatch([
|
|
4752
4782
|
...scope.history,
|
|
4753
|
-
{
|
|
4783
|
+
{
|
|
4784
|
+
role: 'tool',
|
|
4785
|
+
content: askResultStr,
|
|
4786
|
+
toolCallId,
|
|
4787
|
+
toolName,
|
|
4788
|
+
...(deps.findings === true &&
|
|
4789
|
+
!toolRan && { toolResultOrigin: 'not-entered' }),
|
|
4790
|
+
},
|
|
4754
4791
|
], { toolName, toolCallId });
|
|
4755
4792
|
const askHistory = askSettlement.history;
|
|
4756
4793
|
scope.history = askHistory;
|
|
@@ -4903,7 +4940,14 @@ function buildToolCallsHandler(deps) {
|
|
|
4903
4940
|
// The batch settlement (9.113.0) — the ask path's twin.
|
|
4904
4941
|
const decisionSettlement = settleBatch([
|
|
4905
4942
|
...scope.history,
|
|
4906
|
-
{
|
|
4943
|
+
{
|
|
4944
|
+
role: 'tool',
|
|
4945
|
+
content: decisionResultStr,
|
|
4946
|
+
toolCallId,
|
|
4947
|
+
toolName,
|
|
4948
|
+
...(deps.findings === true &&
|
|
4949
|
+
!toolRan && { toolResultOrigin: 'not-entered' }),
|
|
4950
|
+
},
|
|
4907
4951
|
], { toolName, toolCallId });
|
|
4908
4952
|
const decisionHistory = decisionSettlement.history;
|
|
4909
4953
|
scope.history = decisionHistory;
|
|
@@ -5020,7 +5064,14 @@ function buildToolCallsHandler(deps) {
|
|
|
5020
5064
|
// The batch settlement (9.113.0) — the ask path's twin.
|
|
5021
5065
|
const consentSettlement = settleBatch([
|
|
5022
5066
|
...scope.history,
|
|
5023
|
-
{
|
|
5067
|
+
{
|
|
5068
|
+
role: 'tool',
|
|
5069
|
+
content: consentResultStr,
|
|
5070
|
+
toolCallId,
|
|
5071
|
+
toolName,
|
|
5072
|
+
...(deps.findings === true &&
|
|
5073
|
+
dispatched.executed !== true && { toolResultOrigin: 'not-entered' }),
|
|
5074
|
+
},
|
|
5024
5075
|
], { toolName, toolCallId });
|
|
5025
5076
|
const consentHistory = consentSettlement.history;
|
|
5026
5077
|
scope.history = consentHistory;
|