@kilnai/runtime 0.1.16 → 0.9.1
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 +2 -2
- package/dist/channels/email-api.d.ts +29 -0
- package/dist/channels/email-api.d.ts.map +1 -0
- package/dist/channels/email-api.js +133 -0
- package/dist/channels/email-api.js.map +1 -0
- package/dist/channels/email-channel.d.ts +26 -0
- package/dist/channels/email-channel.d.ts.map +1 -0
- package/dist/channels/email-channel.js +59 -0
- package/dist/channels/email-channel.js.map +1 -0
- package/dist/channels/email-template.d.ts +10 -0
- package/dist/channels/email-template.d.ts.map +1 -0
- package/dist/channels/email-template.js +63 -0
- package/dist/channels/email-template.js.map +1 -0
- package/dist/channels/instagram-api.d.ts +29 -0
- package/dist/channels/instagram-api.d.ts.map +1 -0
- package/dist/channels/instagram-api.js +75 -0
- package/dist/channels/instagram-api.js.map +1 -0
- package/dist/channels/instagram-channel.d.ts +24 -0
- package/dist/channels/instagram-channel.d.ts.map +1 -0
- package/dist/channels/instagram-channel.js +55 -0
- package/dist/channels/instagram-channel.js.map +1 -0
- package/dist/channels/message-formatter.d.ts +17 -0
- package/dist/channels/message-formatter.d.ts.map +1 -1
- package/dist/channels/message-formatter.js +27 -0
- package/dist/channels/message-formatter.js.map +1 -1
- package/dist/channels/messenger-api.d.ts +27 -0
- package/dist/channels/messenger-api.d.ts.map +1 -0
- package/dist/channels/messenger-api.js +75 -0
- package/dist/channels/messenger-api.js.map +1 -0
- package/dist/channels/messenger-channel.d.ts +23 -0
- package/dist/channels/messenger-channel.d.ts.map +1 -0
- package/dist/channels/messenger-channel.js +55 -0
- package/dist/channels/messenger-channel.js.map +1 -0
- package/dist/enrichment/enrichment-runner.d.ts +17 -0
- package/dist/enrichment/enrichment-runner.d.ts.map +1 -0
- package/dist/enrichment/enrichment-runner.js +45 -0
- package/dist/enrichment/enrichment-runner.js.map +1 -0
- package/dist/enrichment/sqlite-enrichment-store.d.ts +14 -0
- package/dist/enrichment/sqlite-enrichment-store.d.ts.map +1 -0
- package/dist/enrichment/sqlite-enrichment-store.js +69 -0
- package/dist/enrichment/sqlite-enrichment-store.js.map +1 -0
- package/dist/gateway/audio-preprocessor.d.ts +11 -0
- package/dist/gateway/audio-preprocessor.d.ts.map +1 -0
- package/dist/gateway/audio-preprocessor.js +76 -0
- package/dist/gateway/audio-preprocessor.js.map +1 -0
- package/dist/gateway/auth-middleware.d.ts.map +1 -1
- package/dist/gateway/auth-middleware.js +10 -2
- package/dist/gateway/auth-middleware.js.map +1 -1
- package/dist/gateway/contact-memory-admin-routes.d.ts +9 -0
- package/dist/gateway/contact-memory-admin-routes.d.ts.map +1 -0
- package/dist/gateway/contact-memory-admin-routes.js +42 -0
- package/dist/gateway/contact-memory-admin-routes.js.map +1 -0
- package/dist/gateway/context-formatter.d.ts +5 -0
- package/dist/gateway/context-formatter.d.ts.map +1 -0
- package/dist/gateway/context-formatter.js +16 -0
- package/dist/gateway/context-formatter.js.map +1 -0
- package/dist/gateway/conversation-event-emitter.d.ts +4 -1
- package/dist/gateway/conversation-event-emitter.d.ts.map +1 -1
- package/dist/gateway/conversation-event-emitter.js +44 -13
- package/dist/gateway/conversation-event-emitter.js.map +1 -1
- package/dist/gateway/dev-routes.js +1 -1
- package/dist/gateway/dev-routes.js.map +1 -1
- package/dist/gateway/email-loop-guard.d.ts +10 -0
- package/dist/gateway/email-loop-guard.d.ts.map +1 -0
- package/dist/gateway/email-loop-guard.js +39 -0
- package/dist/gateway/email-loop-guard.js.map +1 -0
- package/dist/gateway/email-thread-store.d.ts +24 -0
- package/dist/gateway/email-thread-store.d.ts.map +1 -0
- package/dist/gateway/email-thread-store.js +34 -0
- package/dist/gateway/email-thread-store.js.map +1 -0
- package/dist/gateway/email-webhook-routes.d.ts +32 -0
- package/dist/gateway/email-webhook-routes.d.ts.map +1 -0
- package/dist/gateway/email-webhook-routes.js +411 -0
- package/dist/gateway/email-webhook-routes.js.map +1 -0
- package/dist/gateway/enrichment-admin-routes.d.ts +9 -0
- package/dist/gateway/enrichment-admin-routes.d.ts.map +1 -0
- package/dist/gateway/enrichment-admin-routes.js +41 -0
- package/dist/gateway/enrichment-admin-routes.js.map +1 -0
- package/dist/gateway/gateway-routes.d.ts +17 -1
- package/dist/gateway/gateway-routes.d.ts.map +1 -1
- package/dist/gateway/gateway-routes.js +41 -0
- package/dist/gateway/gateway-routes.js.map +1 -1
- package/dist/gateway/gateway-server.d.ts.map +1 -1
- package/dist/gateway/gateway-server.js +248 -12
- package/dist/gateway/gateway-server.js.map +1 -1
- package/dist/gateway/handoff-routes.d.ts.map +1 -1
- package/dist/gateway/handoff-routes.js +39 -0
- package/dist/gateway/handoff-routes.js.map +1 -1
- package/dist/gateway/instagram-webhook-routes.d.ts +30 -0
- package/dist/gateway/instagram-webhook-routes.d.ts.map +1 -0
- package/dist/gateway/instagram-webhook-routes.js +394 -0
- package/dist/gateway/instagram-webhook-routes.js.map +1 -0
- package/dist/gateway/knowledge-admin-routes.d.ts +9 -0
- package/dist/gateway/knowledge-admin-routes.d.ts.map +1 -0
- package/dist/gateway/knowledge-admin-routes.js +84 -0
- package/dist/gateway/knowledge-admin-routes.js.map +1 -0
- package/dist/gateway/knowledge-factory.d.ts +19 -0
- package/dist/gateway/knowledge-factory.d.ts.map +1 -0
- package/dist/gateway/knowledge-factory.js +122 -0
- package/dist/gateway/knowledge-factory.js.map +1 -0
- package/dist/gateway/message-pipeline.d.ts +22 -2
- package/dist/gateway/message-pipeline.d.ts.map +1 -1
- package/dist/gateway/message-pipeline.js +90 -4
- package/dist/gateway/message-pipeline.js.map +1 -1
- package/dist/gateway/messenger-webhook-routes.d.ts +30 -0
- package/dist/gateway/messenger-webhook-routes.d.ts.map +1 -0
- package/dist/gateway/messenger-webhook-routes.js +394 -0
- package/dist/gateway/messenger-webhook-routes.js.map +1 -0
- package/dist/gateway/meta-webhook-foundation.d.ts +12 -0
- package/dist/gateway/meta-webhook-foundation.d.ts.map +1 -0
- package/dist/gateway/meta-webhook-foundation.js +25 -0
- package/dist/gateway/meta-webhook-foundation.js.map +1 -0
- package/dist/gateway/mode-b-routes.d.ts +8 -0
- package/dist/gateway/mode-b-routes.d.ts.map +1 -1
- package/dist/gateway/mode-b-routes.js +53 -2
- package/dist/gateway/mode-b-routes.js.map +1 -1
- package/dist/gateway/outbound-routes.d.ts.map +1 -1
- package/dist/gateway/outbound-routes.js +49 -21
- package/dist/gateway/outbound-routes.js.map +1 -1
- package/dist/gateway/routing-test-routes.d.ts +10 -0
- package/dist/gateway/routing-test-routes.d.ts.map +1 -0
- package/dist/gateway/routing-test-routes.js +76 -0
- package/dist/gateway/routing-test-routes.js.map +1 -0
- package/dist/gateway/sqlite-email-thread-store.d.ts +13 -0
- package/dist/gateway/sqlite-email-thread-store.d.ts.map +1 -0
- package/dist/gateway/sqlite-email-thread-store.js +66 -0
- package/dist/gateway/sqlite-email-thread-store.js.map +1 -0
- package/dist/gateway/stt-factory.d.ts +3 -0
- package/dist/gateway/stt-factory.d.ts.map +1 -0
- package/dist/gateway/stt-factory.js +21 -0
- package/dist/gateway/stt-factory.js.map +1 -0
- package/dist/gateway/tenant-admin-routes.d.ts +1 -1
- package/dist/gateway/tenant-admin-routes.d.ts.map +1 -1
- package/dist/gateway/tenant-admin-routes.js +16 -2
- package/dist/gateway/tenant-admin-routes.js.map +1 -1
- package/dist/gateway/tenant-tool-factory.d.ts +10 -0
- package/dist/gateway/tenant-tool-factory.d.ts.map +1 -0
- package/dist/gateway/tenant-tool-factory.js +55 -0
- package/dist/gateway/tenant-tool-factory.js.map +1 -0
- package/dist/gateway/webhook-dedup.d.ts +13 -0
- package/dist/gateway/webhook-dedup.d.ts.map +1 -0
- package/dist/gateway/webhook-dedup.js +37 -0
- package/dist/gateway/webhook-dedup.js.map +1 -0
- package/dist/gateway/webhook-tool-executor.d.ts +17 -0
- package/dist/gateway/webhook-tool-executor.d.ts.map +1 -0
- package/dist/gateway/webhook-tool-executor.js +69 -0
- package/dist/gateway/webhook-tool-executor.js.map +1 -0
- package/dist/gateway/whatsapp-webhook-routes.d.ts +11 -0
- package/dist/gateway/whatsapp-webhook-routes.d.ts.map +1 -1
- package/dist/gateway/whatsapp-webhook-routes.js +158 -22
- package/dist/gateway/whatsapp-webhook-routes.js.map +1 -1
- package/dist/gateway/ws-tenant-routes.d.ts +9 -0
- package/dist/gateway/ws-tenant-routes.d.ts.map +1 -1
- package/dist/gateway/ws-tenant-routes.js +149 -6
- package/dist/gateway/ws-tenant-routes.js.map +1 -1
- package/dist/index.d.ts +47 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -1
- package/dist/index.js.map +1 -1
- package/dist/observability/composite-event-store.d.ts +13 -0
- package/dist/observability/composite-event-store.d.ts.map +1 -0
- package/dist/observability/composite-event-store.js +37 -0
- package/dist/observability/composite-event-store.js.map +1 -0
- package/dist/observability/prometheus-collector.d.ts +33 -0
- package/dist/observability/prometheus-collector.d.ts.map +1 -0
- package/dist/observability/prometheus-collector.js +169 -0
- package/dist/observability/prometheus-collector.js.map +1 -0
- package/dist/session/agent-handoff-summarizer.d.ts +11 -0
- package/dist/session/agent-handoff-summarizer.d.ts.map +1 -0
- package/dist/session/agent-handoff-summarizer.js +26 -0
- package/dist/session/agent-handoff-summarizer.js.map +1 -0
- package/dist/session/mode-b-orchestrator.d.ts +47 -1
- package/dist/session/mode-b-orchestrator.d.ts.map +1 -1
- package/dist/session/mode-b-orchestrator.js +286 -18
- package/dist/session/mode-b-orchestrator.js.map +1 -1
- package/dist/session/mode-b-session.d.ts +24 -4
- package/dist/session/mode-b-session.d.ts.map +1 -1
- package/dist/session/mode-b-session.js +37 -4
- package/dist/session/mode-b-session.js.map +1 -1
- package/dist/session/session-registry.d.ts +3 -2
- package/dist/session/session-registry.d.ts.map +1 -1
- package/dist/session/session-registry.js +35 -2
- package/dist/session/session-registry.js.map +1 -1
- package/dist/session/session-serializer.d.ts.map +1 -1
- package/dist/session/session-serializer.js +4 -0
- package/dist/session/session-serializer.js.map +1 -1
- package/dist/tenant/agent-resolver.d.ts +26 -0
- package/dist/tenant/agent-resolver.d.ts.map +1 -0
- package/dist/tenant/agent-resolver.js +232 -0
- package/dist/tenant/agent-resolver.js.map +1 -0
- package/dist/tenant/ping-pong-guard.d.ts +9 -0
- package/dist/tenant/ping-pong-guard.d.ts.map +1 -0
- package/dist/tenant/ping-pong-guard.js +30 -0
- package/dist/tenant/ping-pong-guard.js.map +1 -0
- package/dist/tenant/system-prompt-builder.d.ts +1 -1
- package/dist/tenant/system-prompt-builder.d.ts.map +1 -1
- package/dist/tenant/system-prompt-builder.js +13 -1
- package/dist/tenant/system-prompt-builder.js.map +1 -1
- package/dist/tenant/tenant-registry.d.ts +3 -0
- package/dist/tenant/tenant-registry.d.ts.map +1 -1
- package/dist/tenant/tenant-registry.js +83 -4
- package/dist/tenant/tenant-registry.js.map +1 -1
- package/dist/tenant/tenant-router.d.ts +27 -0
- package/dist/tenant/tenant-router.d.ts.map +1 -0
- package/dist/tenant/tenant-router.js +72 -0
- package/dist/tenant/tenant-router.js.map +1 -0
- package/dist/utils/hmac.d.ts +1 -0
- package/dist/utils/hmac.d.ts.map +1 -1
- package/dist/utils/hmac.js +3 -0
- package/dist/utils/hmac.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MODEL_PRICING, extractText } from "@kilnai/core";
|
|
2
|
+
import { executeWithRetry, scoreComplexity } from "@kilnai/core";
|
|
2
3
|
const DEFAULT_MAX_TOOL_ROUNDS = 10;
|
|
3
4
|
export class ModeBOrchestrator {
|
|
4
5
|
deps;
|
|
@@ -30,7 +31,7 @@ export class ModeBOrchestrator {
|
|
|
30
31
|
this._tools = [...existing, ...additions];
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
|
-
async processMessage(session, userParts, recalledMemory, callBuiltinTools) {
|
|
34
|
+
async processMessage(session, userParts, recalledMemory, callBuiltinTools, perCallConfig) {
|
|
34
35
|
// AI guard: skip LLM when session is not ai_active
|
|
35
36
|
if (session.sessionMode !== "ai_active") {
|
|
36
37
|
// Auto-reopen resolved sessions on new user message
|
|
@@ -66,24 +67,109 @@ export class ModeBOrchestrator {
|
|
|
66
67
|
this._callBuiltinTools = callBuiltinTools;
|
|
67
68
|
const hasBuiltins = (this.deps.builtinTools?.size ?? 0) + (callBuiltinTools?.size ?? 0) > 0;
|
|
68
69
|
const hasMcp = (this.deps.mcpClients?.length ?? 0) > 0;
|
|
69
|
-
|
|
70
|
+
// Merge per-call additional tools (webhook tools, tenant tools)
|
|
71
|
+
let baseTools = this._tools;
|
|
72
|
+
if (perCallConfig?.additionalTools && perCallConfig.additionalTools.length > 0) {
|
|
73
|
+
const existing = baseTools ?? [];
|
|
74
|
+
const existingNames = new Set(existing.map(t => t.name));
|
|
75
|
+
const additions = perCallConfig.additionalTools.filter(t => !existingNames.has(t.name));
|
|
76
|
+
baseTools = additions.length > 0 ? [...existing, ...additions] : existing;
|
|
77
|
+
}
|
|
78
|
+
const hasTools = (baseTools?.length ?? 0) > 0 && (hasBuiltins || hasMcp);
|
|
79
|
+
// ToolRAG: filter tools once per message (fail-open)
|
|
80
|
+
let effectiveTools = baseTools;
|
|
81
|
+
if (this.deps.toolRAG && this.deps.capabilityMap && effectiveTools && effectiveTools.length > 30) {
|
|
82
|
+
try {
|
|
83
|
+
const userText = extractText(userParts);
|
|
84
|
+
const allCapabilities = Array.from(this.deps.capabilityMap.values());
|
|
85
|
+
const selected = await this.deps.toolRAG.selectTools(userText, allCapabilities);
|
|
86
|
+
if (selected.length > 0) {
|
|
87
|
+
const selectedNames = new Set(selected.map((s) => s.name));
|
|
88
|
+
effectiveTools = effectiveTools.filter((t) => selectedNames.has(t.name));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// Fail-open: use all tools if ToolRAG fails
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Model routing: select provider per-request
|
|
96
|
+
let effectiveProvider = this.deps.provider;
|
|
97
|
+
let routingDecisionResult;
|
|
98
|
+
if (perCallConfig?.modelOverride) {
|
|
99
|
+
// Explicit override takes precedence
|
|
100
|
+
const override = perCallConfig.modelOverride;
|
|
101
|
+
const poolProvider = this.deps.providerPool?.get(override.provider);
|
|
102
|
+
if (poolProvider) {
|
|
103
|
+
effectiveProvider = poolProvider;
|
|
104
|
+
}
|
|
105
|
+
routingDecisionResult = {
|
|
106
|
+
provider: override.provider,
|
|
107
|
+
model: override.model,
|
|
108
|
+
reasoning: "Explicit model override",
|
|
109
|
+
confidence: 1.0,
|
|
110
|
+
routingTier: "rule",
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
else if (this.deps.modelRouter) {
|
|
114
|
+
try {
|
|
115
|
+
const userText = extractText(userParts);
|
|
116
|
+
const complexity = scoreComplexity({
|
|
117
|
+
messageText: userText,
|
|
118
|
+
toolCount: effectiveTools?.length ?? 0,
|
|
119
|
+
turnDepth: session.messageCount,
|
|
120
|
+
});
|
|
121
|
+
const routingRequest = {
|
|
122
|
+
tenantId: perCallConfig?.tenantId ?? "default",
|
|
123
|
+
complexity,
|
|
124
|
+
hasTools,
|
|
125
|
+
toolCount: effectiveTools?.length ?? 0,
|
|
126
|
+
requiresStreaming: false,
|
|
127
|
+
};
|
|
128
|
+
const decision = this.deps.modelRouter.route(routingRequest);
|
|
129
|
+
routingDecisionResult = decision;
|
|
130
|
+
// Look up provider from pool
|
|
131
|
+
const poolProvider = this.deps.providerPool?.get(decision.provider);
|
|
132
|
+
if (poolProvider) {
|
|
133
|
+
effectiveProvider = poolProvider;
|
|
134
|
+
}
|
|
135
|
+
// Emit model_routed event
|
|
136
|
+
this.emitModelRouted(session.id, decision);
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
// Fail-open: use default provider if routing fails
|
|
140
|
+
}
|
|
141
|
+
}
|
|
70
142
|
let totalInputTokens = 0;
|
|
71
143
|
let totalOutputTokens = 0;
|
|
72
144
|
let totalCacheRead = 0;
|
|
73
145
|
let totalCacheWrite = 0;
|
|
146
|
+
const toolExecutions = [];
|
|
74
147
|
for (let round = 0; round < this.maxToolRounds; round++) {
|
|
148
|
+
// Budget check (skip first round -- let the user's message through)
|
|
149
|
+
if (round > 0 && this.deps.budgetChecker) {
|
|
150
|
+
try {
|
|
151
|
+
const budget = await this.deps.budgetChecker();
|
|
152
|
+
if (!budget.allowed) {
|
|
153
|
+
this.emitError(session.id, budget.message ?? "Budget exhausted");
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
// Fail-open: continue if budget check fails
|
|
159
|
+
}
|
|
160
|
+
}
|
|
75
161
|
const messages = [...session.conversationHistory];
|
|
76
|
-
const response = await
|
|
162
|
+
const response = await effectiveProvider.createMessage({
|
|
77
163
|
system,
|
|
78
164
|
messages,
|
|
79
|
-
tools: hasTools ?
|
|
165
|
+
tools: hasTools ? effectiveTools : undefined,
|
|
80
166
|
maxTokens: this.deps.maxTokens,
|
|
81
167
|
});
|
|
82
168
|
totalInputTokens += response.inputTokens;
|
|
83
169
|
totalOutputTokens += response.outputTokens;
|
|
84
170
|
totalCacheRead += response.cacheReadTokens;
|
|
85
171
|
totalCacheWrite += response.cacheWriteTokens;
|
|
86
|
-
this.emitCostUpdate(session.id, totalInputTokens, totalOutputTokens, totalCacheRead, totalCacheWrite);
|
|
172
|
+
this.emitCostUpdate(session.id, totalInputTokens, totalOutputTokens, totalCacheRead, totalCacheWrite, session.activeAgentId ?? undefined);
|
|
87
173
|
if (!hasTools || response.toolCalls.length === 0) {
|
|
88
174
|
session.addAssistantMessage(response.parts);
|
|
89
175
|
// Post-LLM escalation check (only if pre-LLM didn't trigger)
|
|
@@ -111,6 +197,10 @@ export class ModeBOrchestrator {
|
|
|
111
197
|
queued: false,
|
|
112
198
|
escalation,
|
|
113
199
|
contextSummary,
|
|
200
|
+
toolExecutions: toolExecutions.length > 0 ? toolExecutions : undefined,
|
|
201
|
+
routingDecision: routingDecisionResult
|
|
202
|
+
? { provider: routingDecisionResult.provider, model: routingDecisionResult.model, routingTier: routingDecisionResult.routingTier, reasoning: routingDecisionResult.reasoning }
|
|
203
|
+
: undefined,
|
|
114
204
|
};
|
|
115
205
|
}
|
|
116
206
|
// Build assistant message with text + tool_use parts
|
|
@@ -127,27 +217,144 @@ export class ModeBOrchestrator {
|
|
|
127
217
|
// Execute tools and build tool_result parts
|
|
128
218
|
const resultParts = [];
|
|
129
219
|
for (const tc of response.toolCalls) {
|
|
130
|
-
|
|
220
|
+
// Tool allowlist check
|
|
221
|
+
if (perCallConfig?.toolAllowlist && !perCallConfig.toolAllowlist.has(tc.name)) {
|
|
222
|
+
resultParts.push({
|
|
223
|
+
type: "tool_result",
|
|
224
|
+
toolUseId: tc.id,
|
|
225
|
+
content: `Tool "${tc.name}" is not available for this tenant`,
|
|
226
|
+
isError: true,
|
|
227
|
+
});
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
// Authorization check
|
|
231
|
+
const capability = this.deps.capabilityMap?.get(tc.name);
|
|
232
|
+
if (this.deps.toolAuthorizer) {
|
|
233
|
+
const authResult = this.deps.toolAuthorizer.authorize(tc.name, capability?.annotations);
|
|
234
|
+
this.emitToolAuthorized(session.id, tc.name, authResult.level, authResult.allowed, authResult.reason);
|
|
235
|
+
if (!authResult.allowed) {
|
|
236
|
+
resultParts.push({
|
|
237
|
+
type: "tool_result",
|
|
238
|
+
toolUseId: tc.id,
|
|
239
|
+
content: `Authorization denied: ${authResult.reason}`,
|
|
240
|
+
isError: true,
|
|
241
|
+
});
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
// Rate limit check
|
|
246
|
+
if (perCallConfig?.rateLimiter && perCallConfig?.tenantId) {
|
|
247
|
+
const rateResult = perCallConfig.rateLimiter.check(perCallConfig.tenantId, tc.name);
|
|
248
|
+
if (!rateResult.allowed) {
|
|
249
|
+
const retryAfterSec = Math.ceil((rateResult.retryAfterMs ?? 60_000) / 1000);
|
|
250
|
+
resultParts.push({
|
|
251
|
+
type: "tool_result",
|
|
252
|
+
toolUseId: tc.id,
|
|
253
|
+
content: `Rate limit exceeded for tool "${tc.name}". Try again in ${retryAfterSec} seconds.`,
|
|
254
|
+
isError: true,
|
|
255
|
+
});
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
// Resolve cacheTtl before try block so it's accessible for both check and store
|
|
260
|
+
const cacheTtl = capability?.annotations?.cacheTtl;
|
|
261
|
+
// Cache check (fail-open)
|
|
262
|
+
if (cacheTtl && this.deps.toolCache) {
|
|
263
|
+
try {
|
|
264
|
+
const cached = this.deps.toolCache.get(tc.name, tc.input);
|
|
265
|
+
if (cached !== undefined) {
|
|
266
|
+
const resultString = typeof cached === "string" ? cached : JSON.stringify(cached);
|
|
267
|
+
this.emitToolCacheHit(session.id, tc.name, cacheTtl);
|
|
268
|
+
resultParts.push({
|
|
269
|
+
type: "tool_result",
|
|
270
|
+
toolUseId: tc.id,
|
|
271
|
+
content: resultString,
|
|
272
|
+
isError: false,
|
|
273
|
+
});
|
|
274
|
+
continue;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
catch {
|
|
278
|
+
// Fail-open: proceed to execute tool if cache throws
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
const annotations = capability?.annotations
|
|
282
|
+
? { readOnly: capability.annotations.readOnly, destructive: capability.annotations.destructive, idempotent: capability.annotations.idempotent }
|
|
283
|
+
: undefined;
|
|
284
|
+
this.emitToolCalled(session.id, tc.name, tc.input, annotations);
|
|
131
285
|
const startMs = Date.now();
|
|
132
286
|
try {
|
|
133
|
-
|
|
287
|
+
let resultValue;
|
|
288
|
+
let retryAttempt;
|
|
289
|
+
// Use executeWithRetry if capability has retry config
|
|
290
|
+
if (capability?.retry) {
|
|
291
|
+
const executor = (name, input) => this.executeTool({ id: tc.id, name, input });
|
|
292
|
+
const fallbackExecutor = capability.retry.fallback
|
|
293
|
+
? (name, input) => this.executeTool({ id: tc.id, name, input })
|
|
294
|
+
: undefined;
|
|
295
|
+
const execResult = await executeWithRetry(tc.name, tc.input, executor, capability.retry, fallbackExecutor);
|
|
296
|
+
resultValue = execResult.result;
|
|
297
|
+
retryAttempt = execResult.attempts > 1 ? execResult.attempts : undefined;
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
resultValue = await this.executeTool(tc);
|
|
301
|
+
}
|
|
134
302
|
const durationMs = Date.now() - startMs;
|
|
135
|
-
|
|
303
|
+
let resultString = typeof resultValue === "string" ? resultValue : JSON.stringify(resultValue);
|
|
304
|
+
// Result sanitization
|
|
305
|
+
let sanitized = false;
|
|
306
|
+
if (this.deps.toolResultSanitizer) {
|
|
307
|
+
const sanitizationResult = await this.deps.toolResultSanitizer.sanitize(resultString);
|
|
308
|
+
if (sanitizationResult.sanitized) {
|
|
309
|
+
resultString = sanitizationResult.content;
|
|
310
|
+
sanitized = true;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
this.emitToolResult(session.id, tc.name, durationMs, true, resultString.slice(0, 200), false, retryAttempt);
|
|
314
|
+
toolExecutions.push({
|
|
315
|
+
toolName: tc.name,
|
|
316
|
+
durationMs,
|
|
317
|
+
success: true,
|
|
318
|
+
resultSummary: resultString.slice(0, 200),
|
|
319
|
+
});
|
|
320
|
+
// Audit log
|
|
321
|
+
this.appendAudit(tc.name, durationMs, sanitized ? "success_sanitized" : "success");
|
|
136
322
|
resultParts.push({
|
|
137
323
|
type: "tool_result",
|
|
138
324
|
toolUseId: tc.id,
|
|
139
|
-
content:
|
|
325
|
+
content: resultString,
|
|
140
326
|
isError: false,
|
|
141
327
|
});
|
|
328
|
+
// Cache store (fail-open)
|
|
329
|
+
if (cacheTtl && this.deps.toolCache) {
|
|
330
|
+
try {
|
|
331
|
+
this.deps.toolCache.set(tc.name, tc.input, resultValue, cacheTtl);
|
|
332
|
+
}
|
|
333
|
+
catch {
|
|
334
|
+
// Fail-open: don't break execution if cache store fails
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
// Record rate limit usage after successful execution
|
|
338
|
+
if (perCallConfig?.rateLimiter && perCallConfig?.tenantId) {
|
|
339
|
+
perCallConfig.rateLimiter.record(perCallConfig.tenantId, tc.name);
|
|
340
|
+
}
|
|
142
341
|
}
|
|
143
342
|
catch (err) {
|
|
144
343
|
const durationMs = Date.now() - startMs;
|
|
145
|
-
|
|
344
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
345
|
+
this.emitToolResult(session.id, tc.name, durationMs, false, errMsg.slice(0, 200), true);
|
|
346
|
+
toolExecutions.push({
|
|
347
|
+
toolName: tc.name,
|
|
348
|
+
durationMs,
|
|
349
|
+
success: false,
|
|
350
|
+
resultSummary: errMsg.slice(0, 200),
|
|
351
|
+
});
|
|
146
352
|
this.emitError(session.id, `Tool "${tc.name}" failed: ${err}`);
|
|
353
|
+
this.appendAudit(tc.name, durationMs, "error");
|
|
147
354
|
resultParts.push({
|
|
148
355
|
type: "tool_result",
|
|
149
356
|
toolUseId: tc.id,
|
|
150
|
-
content: `Error: ${
|
|
357
|
+
content: `Error: ${errMsg}`,
|
|
151
358
|
isError: true,
|
|
152
359
|
});
|
|
153
360
|
}
|
|
@@ -157,7 +364,7 @@ export class ModeBOrchestrator {
|
|
|
157
364
|
// Safety: max rounds exceeded, return last available response
|
|
158
365
|
this.emitError(session.id, `Max tool rounds (${this.maxToolRounds}) exceeded`);
|
|
159
366
|
const finalMessages = [...session.conversationHistory];
|
|
160
|
-
const finalResponse = await
|
|
367
|
+
const finalResponse = await effectiveProvider.createMessage({
|
|
161
368
|
system,
|
|
162
369
|
messages: finalMessages,
|
|
163
370
|
maxTokens: this.deps.maxTokens,
|
|
@@ -166,7 +373,7 @@ export class ModeBOrchestrator {
|
|
|
166
373
|
totalOutputTokens += finalResponse.outputTokens;
|
|
167
374
|
totalCacheRead += finalResponse.cacheReadTokens;
|
|
168
375
|
totalCacheWrite += finalResponse.cacheWriteTokens;
|
|
169
|
-
this.emitCostUpdate(session.id, totalInputTokens, totalOutputTokens, totalCacheRead, totalCacheWrite);
|
|
376
|
+
this.emitCostUpdate(session.id, totalInputTokens, totalOutputTokens, totalCacheRead, totalCacheWrite, session.activeAgentId ?? undefined);
|
|
170
377
|
session.addAssistantMessage(finalResponse.parts);
|
|
171
378
|
// Post-LLM escalation check (only if pre-LLM didn't trigger)
|
|
172
379
|
if (!escalation && this.deps.escalationDetector) {
|
|
@@ -193,6 +400,10 @@ export class ModeBOrchestrator {
|
|
|
193
400
|
queued: false,
|
|
194
401
|
escalation,
|
|
195
402
|
contextSummary,
|
|
403
|
+
toolExecutions: toolExecutions.length > 0 ? toolExecutions : undefined,
|
|
404
|
+
routingDecision: routingDecisionResult
|
|
405
|
+
? { provider: routingDecisionResult.provider, model: routingDecisionResult.model, routingTier: routingDecisionResult.routingTier, reasoning: routingDecisionResult.reasoning }
|
|
406
|
+
: undefined,
|
|
196
407
|
};
|
|
197
408
|
}
|
|
198
409
|
async executeTool(tc) {
|
|
@@ -216,16 +427,30 @@ export class ModeBOrchestrator {
|
|
|
216
427
|
}
|
|
217
428
|
throw new Error(`Tool "${tc.name}" not found`);
|
|
218
429
|
}
|
|
219
|
-
emitToolCalled(sessionId, toolName) {
|
|
430
|
+
emitToolCalled(sessionId, toolName, toolInput, annotations) {
|
|
220
431
|
const event = {
|
|
221
432
|
type: "tool_called",
|
|
222
433
|
toolName,
|
|
223
434
|
timestamp: new Date(),
|
|
224
435
|
sessionId,
|
|
436
|
+
...(toolInput ? { toolInput } : {}),
|
|
437
|
+
...(annotations ? { annotations } : {}),
|
|
438
|
+
};
|
|
439
|
+
this.deps.eventBus?.emit(event);
|
|
440
|
+
}
|
|
441
|
+
emitToolAuthorized(sessionId, toolName, level, allowed, reason) {
|
|
442
|
+
const event = {
|
|
443
|
+
type: "tool_authorized",
|
|
444
|
+
toolName,
|
|
445
|
+
level,
|
|
446
|
+
allowed,
|
|
447
|
+
reason,
|
|
448
|
+
timestamp: new Date(),
|
|
449
|
+
sessionId,
|
|
225
450
|
};
|
|
226
451
|
this.deps.eventBus?.emit(event);
|
|
227
452
|
}
|
|
228
|
-
emitToolResult(sessionId, toolName, durationMs, success) {
|
|
453
|
+
emitToolResult(sessionId, toolName, durationMs, success, resultSummary, isError, retryAttempt) {
|
|
229
454
|
const event = {
|
|
230
455
|
type: "tool_result",
|
|
231
456
|
toolName,
|
|
@@ -233,9 +458,39 @@ export class ModeBOrchestrator {
|
|
|
233
458
|
success,
|
|
234
459
|
timestamp: new Date(),
|
|
235
460
|
sessionId,
|
|
461
|
+
...(resultSummary ? { resultSummary } : {}),
|
|
462
|
+
...(isError !== undefined ? { isError } : {}),
|
|
463
|
+
...(retryAttempt !== undefined ? { retryAttempt } : {}),
|
|
236
464
|
};
|
|
237
465
|
this.deps.eventBus?.emit(event);
|
|
238
466
|
}
|
|
467
|
+
emitToolCacheHit(sessionId, toolName, cacheTtl) {
|
|
468
|
+
const event = {
|
|
469
|
+
type: "tool_cache_hit",
|
|
470
|
+
toolName,
|
|
471
|
+
cacheTtl,
|
|
472
|
+
timestamp: new Date(),
|
|
473
|
+
sessionId,
|
|
474
|
+
};
|
|
475
|
+
this.deps.eventBus?.emit(event);
|
|
476
|
+
}
|
|
477
|
+
appendAudit(toolName, durationMs, outcome) {
|
|
478
|
+
if (!this.deps.auditLog)
|
|
479
|
+
return;
|
|
480
|
+
try {
|
|
481
|
+
this.deps.auditLog.append({
|
|
482
|
+
timestamp: new Date(),
|
|
483
|
+
action: "tool_execution",
|
|
484
|
+
actor: "orchestrator",
|
|
485
|
+
outcome,
|
|
486
|
+
resource: toolName,
|
|
487
|
+
metadata: { durationMs },
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
catch {
|
|
491
|
+
// Non-critical: don't fail tool execution for audit
|
|
492
|
+
}
|
|
493
|
+
}
|
|
239
494
|
computeTotalCostUsd(inputTokens, outputTokens, cacheReadTokens, cacheWriteTokens) {
|
|
240
495
|
const pricing = this.resolvedPricing;
|
|
241
496
|
if (!pricing)
|
|
@@ -256,7 +511,7 @@ export class ModeBOrchestrator {
|
|
|
256
511
|
}
|
|
257
512
|
return pricing;
|
|
258
513
|
}
|
|
259
|
-
emitCostUpdate(sessionId, inputTokens, outputTokens, cacheReadTokens, cacheWriteTokens) {
|
|
514
|
+
emitCostUpdate(sessionId, inputTokens, outputTokens, cacheReadTokens, cacheWriteTokens, agentId) {
|
|
260
515
|
const totalCostUsd = this.computeTotalCostUsd(inputTokens, outputTokens, cacheReadTokens, cacheWriteTokens);
|
|
261
516
|
const model = this.deps.model ?? "unknown";
|
|
262
517
|
const event = {
|
|
@@ -265,11 +520,24 @@ export class ModeBOrchestrator {
|
|
|
265
520
|
outputTokens,
|
|
266
521
|
cacheReadTokens,
|
|
267
522
|
totalCostUsd,
|
|
268
|
-
|
|
269
|
-
assistant: { model, calls: 1, costUsd: totalCostUsd },
|
|
523
|
+
byRoleModel: {
|
|
524
|
+
[`assistant:${model}`]: { model, calls: 1, costUsd: totalCostUsd },
|
|
270
525
|
},
|
|
271
526
|
timestamp: new Date(),
|
|
272
527
|
sessionId,
|
|
528
|
+
...(agentId ? { agentId } : {}),
|
|
529
|
+
};
|
|
530
|
+
this.deps.eventBus?.emit(event);
|
|
531
|
+
}
|
|
532
|
+
emitModelRouted(sessionId, decision) {
|
|
533
|
+
const event = {
|
|
534
|
+
type: "model_routed",
|
|
535
|
+
model: decision.model,
|
|
536
|
+
provider: decision.provider,
|
|
537
|
+
routingTier: decision.routingTier,
|
|
538
|
+
reason: decision.reasoning,
|
|
539
|
+
timestamp: new Date(),
|
|
540
|
+
sessionId,
|
|
273
541
|
};
|
|
274
542
|
this.deps.eventBus?.emit(event);
|
|
275
543
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mode-b-orchestrator.js","sourceRoot":"","sources":["../../src/session/mode-b-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mode-b-orchestrator.js","sourceRoot":"","sources":["../../src/session/mode-b-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import type { AgentMessage, ContentPart } from "@kilnai/core";
|
|
2
2
|
import type { SessionMode } from "./session-mode.js";
|
|
3
|
+
export interface AgentTurnEntry {
|
|
4
|
+
readonly agentId: string;
|
|
5
|
+
readonly turnIndex: number;
|
|
6
|
+
readonly handoffBrief?: string;
|
|
7
|
+
readonly fromAgentId?: string;
|
|
8
|
+
}
|
|
3
9
|
export interface SerializedSessionData {
|
|
4
10
|
readonly id: string;
|
|
5
11
|
readonly appName: string;
|
|
6
|
-
readonly tenantId
|
|
12
|
+
readonly tenantId: string;
|
|
7
13
|
readonly userId: string;
|
|
8
14
|
readonly systemPrompt: string;
|
|
9
15
|
readonly idleTimeoutMs: number;
|
|
@@ -12,10 +18,14 @@ export interface SerializedSessionData {
|
|
|
12
18
|
readonly createdAt: string;
|
|
13
19
|
readonly lastActivityAt: string;
|
|
14
20
|
readonly history: readonly AgentMessage[];
|
|
21
|
+
readonly activeAgentId: string | null;
|
|
22
|
+
readonly agentTurnHistory: readonly AgentTurnEntry[];
|
|
23
|
+
readonly handoffCount: number;
|
|
24
|
+
readonly lastRouteChangeAt: number;
|
|
15
25
|
}
|
|
16
26
|
export interface ModeBSessionConfig {
|
|
17
27
|
readonly appName: string;
|
|
18
|
-
readonly tenantId
|
|
28
|
+
readonly tenantId: string;
|
|
19
29
|
readonly userId: string;
|
|
20
30
|
readonly systemPrompt: string;
|
|
21
31
|
readonly idleTimeoutMs?: number;
|
|
@@ -23,16 +33,20 @@ export interface ModeBSessionConfig {
|
|
|
23
33
|
export declare class ModeBSession {
|
|
24
34
|
readonly id: string;
|
|
25
35
|
readonly appName: string;
|
|
26
|
-
readonly tenantId: string
|
|
36
|
+
readonly tenantId: string;
|
|
27
37
|
readonly userId: string;
|
|
28
38
|
readonly createdAt: Date;
|
|
29
39
|
private _lastActivityAt;
|
|
30
|
-
private
|
|
40
|
+
private _systemPrompt;
|
|
31
41
|
private readonly _idleTimeoutMs;
|
|
32
42
|
private readonly _history;
|
|
33
43
|
private _sessionMode;
|
|
34
44
|
private _version;
|
|
35
45
|
private _loadedVersion;
|
|
46
|
+
private _activeAgentId;
|
|
47
|
+
private _agentTurnHistory;
|
|
48
|
+
private _handoffCount;
|
|
49
|
+
private _lastRouteChangeAt;
|
|
36
50
|
constructor(config: ModeBSessionConfig);
|
|
37
51
|
get lastActivityAt(): Date;
|
|
38
52
|
get isExpired(): boolean;
|
|
@@ -50,6 +64,12 @@ export declare class ModeBSession {
|
|
|
50
64
|
touch(): void;
|
|
51
65
|
get sessionMode(): SessionMode;
|
|
52
66
|
setSessionMode(mode: SessionMode): void;
|
|
67
|
+
get activeAgentId(): string | null;
|
|
68
|
+
get agentTurnHistory(): readonly AgentTurnEntry[];
|
|
69
|
+
get handoffCount(): number;
|
|
70
|
+
get lastRouteChangeAt(): number;
|
|
71
|
+
setActiveAgent(agentId: string, handoffBrief?: string): void;
|
|
72
|
+
setSystemPrompt(prompt: string): void;
|
|
53
73
|
lastAssistantTexts(count: number): string[];
|
|
54
74
|
injectOperatorMessage(parts: readonly ContentPart[]): void;
|
|
55
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mode-b-session.d.ts","sourceRoot":"","sources":["../../src/session/mode-b-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"mode-b-session.d.ts","sourceRoot":"","sources":["../../src/session/mode-b-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,10 @@ export class ModeBSession {
|
|
|
13
13
|
_sessionMode = "ai_active";
|
|
14
14
|
_version = 0;
|
|
15
15
|
_loadedVersion = 0;
|
|
16
|
+
_activeAgentId = null;
|
|
17
|
+
_agentTurnHistory = [];
|
|
18
|
+
_handoffCount = 0;
|
|
19
|
+
_lastRouteChangeAt = 0;
|
|
16
20
|
constructor(config) {
|
|
17
21
|
this.appName = config.appName;
|
|
18
22
|
this.tenantId = config.tenantId;
|
|
@@ -21,9 +25,7 @@ export class ModeBSession {
|
|
|
21
25
|
this._idleTimeoutMs = config.idleTimeoutMs ?? 30 * 60 * 1000;
|
|
22
26
|
this.createdAt = new Date();
|
|
23
27
|
this._lastActivityAt = new Date();
|
|
24
|
-
this.id = config.tenantId
|
|
25
|
-
? `${config.appName}:${config.tenantId}:${config.userId}:${Date.now()}`
|
|
26
|
-
: `${config.appName}:${config.userId}:${Date.now()}`;
|
|
28
|
+
this.id = `${config.appName}:${config.tenantId}:${config.userId}:${Date.now()}`;
|
|
27
29
|
}
|
|
28
30
|
get lastActivityAt() {
|
|
29
31
|
return this._lastActivityAt;
|
|
@@ -73,8 +75,13 @@ export class ModeBSession {
|
|
|
73
75
|
}
|
|
74
76
|
// Re-set lastActivityAt since addMessage calls touch()
|
|
75
77
|
session._lastActivityAt = new Date(data.lastActivityAt);
|
|
78
|
+
// Restore agent routing state
|
|
79
|
+
session._activeAgentId = data.activeAgentId;
|
|
80
|
+
session._agentTurnHistory = [...data.agentTurnHistory];
|
|
81
|
+
session._handoffCount = data.handoffCount;
|
|
82
|
+
session._lastRouteChangeAt = data.lastRouteChangeAt;
|
|
76
83
|
// Restore version and record loaded version for conflict detection
|
|
77
|
-
const storedVersion = data.version
|
|
84
|
+
const storedVersion = data.version;
|
|
78
85
|
session._version = storedVersion;
|
|
79
86
|
session._loadedVersion = storedVersion;
|
|
80
87
|
return session;
|
|
@@ -98,6 +105,32 @@ export class ModeBSession {
|
|
|
98
105
|
this._sessionMode = transitionSessionMode(this._sessionMode, mode);
|
|
99
106
|
this._version++;
|
|
100
107
|
}
|
|
108
|
+
get activeAgentId() {
|
|
109
|
+
return this._activeAgentId;
|
|
110
|
+
}
|
|
111
|
+
get agentTurnHistory() {
|
|
112
|
+
return this._agentTurnHistory;
|
|
113
|
+
}
|
|
114
|
+
get handoffCount() {
|
|
115
|
+
return this._handoffCount;
|
|
116
|
+
}
|
|
117
|
+
get lastRouteChangeAt() {
|
|
118
|
+
return this._lastRouteChangeAt;
|
|
119
|
+
}
|
|
120
|
+
setActiveAgent(agentId, handoffBrief) {
|
|
121
|
+
if (this._activeAgentId === agentId)
|
|
122
|
+
return;
|
|
123
|
+
const fromAgentId = this._activeAgentId ?? undefined;
|
|
124
|
+
this._activeAgentId = agentId;
|
|
125
|
+
this._agentTurnHistory.push({ agentId, turnIndex: this._history.length, handoffBrief, fromAgentId });
|
|
126
|
+
this._handoffCount++;
|
|
127
|
+
this._lastRouteChangeAt = this._history.length;
|
|
128
|
+
this._version++;
|
|
129
|
+
}
|
|
130
|
+
setSystemPrompt(prompt) {
|
|
131
|
+
this._systemPrompt = prompt;
|
|
132
|
+
this._version++;
|
|
133
|
+
}
|
|
101
134
|
lastAssistantTexts(count) {
|
|
102
135
|
const texts = [];
|
|
103
136
|
for (let i = this._history.length - 1; i >= 0 && texts.length < count; i--) {
|