funolio-agent 1.0.53 → 1.0.75
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/approval.d.ts +1 -6
- package/dist/approval.d.ts.map +1 -1
- package/dist/approval.js +2 -7
- package/dist/approval.js.map +1 -1
- package/dist/bot-manager.d.ts +5 -1
- package/dist/bot-manager.d.ts.map +1 -1
- package/dist/bot-manager.js +23 -13
- package/dist/bot-manager.js.map +1 -1
- package/dist/cli-session-epoch.d.ts +1 -1
- package/dist/cli-session-epoch.d.ts.map +1 -1
- package/dist/cli-session-epoch.js +1 -1
- package/dist/cli-session-epoch.js.map +1 -1
- package/dist/cli-session-registry.d.ts +35 -0
- package/dist/cli-session-registry.d.ts.map +1 -0
- package/dist/cli-session-registry.js +177 -0
- package/dist/cli-session-registry.js.map +1 -0
- package/dist/cli.js +62 -0
- package/dist/cli.js.map +1 -1
- package/dist/codex-app-server-manager.d.ts +129 -0
- package/dist/codex-app-server-manager.d.ts.map +1 -0
- package/dist/codex-app-server-manager.js +768 -0
- package/dist/codex-app-server-manager.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +8 -30
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/setup.d.ts +4 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +9 -25
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +77 -2
- package/dist/commands/start.js.map +1 -1
- package/dist/completion-marker.d.ts +7 -0
- package/dist/completion-marker.d.ts.map +1 -0
- package/dist/completion-marker.js +28 -0
- package/dist/completion-marker.js.map +1 -0
- package/dist/config.d.ts +6 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +15 -3
- package/dist/config.js.map +1 -1
- package/dist/context-window.d.ts.map +1 -1
- package/dist/context-window.js +8 -1
- package/dist/context-window.js.map +1 -1
- package/dist/live-activity.d.ts +29 -0
- package/dist/live-activity.d.ts.map +1 -0
- package/dist/live-activity.js +36 -0
- package/dist/live-activity.js.map +1 -0
- package/dist/local-cli-pty-manager.d.ts +51 -0
- package/dist/local-cli-pty-manager.d.ts.map +1 -1
- package/dist/local-cli-pty-manager.js +1227 -114
- package/dist/local-cli-pty-manager.js.map +1 -1
- package/dist/local-data.d.ts +41 -0
- package/dist/local-data.d.ts.map +1 -1
- package/dist/local-data.js +140 -4
- package/dist/local-data.js.map +1 -1
- package/dist/local-db.d.ts.map +1 -1
- package/dist/local-db.js +55 -1
- package/dist/local-db.js.map +1 -1
- package/dist/local-server.d.ts +25 -0
- package/dist/local-server.d.ts.map +1 -1
- package/dist/local-server.js +528 -267
- package/dist/local-server.js.map +1 -1
- package/dist/message-loop.d.ts +6 -0
- package/dist/message-loop.d.ts.map +1 -1
- package/dist/message-loop.js +239 -89
- package/dist/message-loop.js.map +1 -1
- package/dist/mqtt-client.d.ts +10 -1
- package/dist/mqtt-client.d.ts.map +1 -1
- package/dist/mqtt-client.js +14 -1
- package/dist/mqtt-client.js.map +1 -1
- package/dist/oauth.d.ts.map +1 -1
- package/dist/oauth.js +69 -29
- package/dist/oauth.js.map +1 -1
- package/dist/orchestration/orchestrator-operating-prompt.d.ts +1 -0
- package/dist/orchestration/orchestrator-operating-prompt.d.ts.map +1 -1
- package/dist/orchestration/orchestrator-operating-prompt.js +60 -0
- package/dist/orchestration/orchestrator-operating-prompt.js.map +1 -1
- package/dist/orchestration/validation.d.ts +40 -0
- package/dist/orchestration/validation.d.ts.map +1 -0
- package/dist/orchestration/validation.js +203 -0
- package/dist/orchestration/validation.js.map +1 -0
- package/dist/orchestrator.d.ts +21 -32
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +287 -725
- package/dist/orchestrator.js.map +1 -1
- package/dist/providers/claude-cli-prompt.d.ts.map +1 -1
- package/dist/providers/claude-cli-prompt.js +49 -5
- package/dist/providers/claude-cli-prompt.js.map +1 -1
- package/dist/providers/claude-cli.d.ts.map +1 -1
- package/dist/providers/claude-cli.js +56 -5
- package/dist/providers/claude-cli.js.map +1 -1
- package/dist/providers/codex-cli.d.ts.map +1 -1
- package/dist/providers/codex-cli.js +15 -10
- package/dist/providers/codex-cli.js.map +1 -1
- package/dist/response-guard.js +1 -1
- package/dist/response-guard.js.map +1 -1
- package/dist/tools/admin-tools.d.ts.map +1 -1
- package/dist/tools/admin-tools.js +8 -2
- package/dist/tools/admin-tools.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/search-conversation-history.d.ts +16 -0
- package/dist/tools/search-conversation-history.d.ts.map +1 -0
- package/dist/tools/search-conversation-history.js +324 -0
- package/dist/tools/search-conversation-history.js.map +1 -0
- package/dist/wizard-state.d.ts +7 -0
- package/dist/wizard-state.d.ts.map +1 -1
- package/dist/wizard-state.js +31 -2
- package/dist/wizard-state.js.map +1 -1
- package/dist/workflow-engine.d.ts +4 -1
- package/dist/workflow-engine.d.ts.map +1 -1
- package/dist/workflow-engine.js +190 -29
- package/dist/workflow-engine.js.map +1 -1
- package/package.json +1 -1
|
@@ -22,6 +22,7 @@ function buildOrchestratorOperatingPrompt(input) {
|
|
|
22
22
|
const workflowLines = workflowNames.length > 0
|
|
23
23
|
? workflowNames.map((w) => `- "${w}"`).join('\n')
|
|
24
24
|
: '(none)';
|
|
25
|
+
const localPromptContract = input.localPromptContract || 'legacy';
|
|
25
26
|
const decisionOnly = input.decisionOnly !== false;
|
|
26
27
|
const entryMode = input.entryMode || 'normal';
|
|
27
28
|
const projectName = input.projectName?.trim() || '(none)';
|
|
@@ -60,6 +61,65 @@ ${signalLines || '- No additional signal details recorded.'}`
|
|
|
60
61
|
Pay attention to the ENTIRE user prompt before deciding. The most important routing signal may appear anywhere in the prompt, including near the end.
|
|
61
62
|
Default to handling the request yourself unless the code front door gives a strong delegation or workflow suggestion or the user clearly directs work to an available worker.
|
|
62
63
|
${signalLines || ''}`.trim();
|
|
64
|
+
if (localPromptContract !== 'legacy') {
|
|
65
|
+
return `You are acting as Orchestrator and ${primaryRole} in this request.
|
|
66
|
+
|
|
67
|
+
By default, you do the work yourself.
|
|
68
|
+
|
|
69
|
+
Only split the work when:
|
|
70
|
+
- part of the request clearly belongs to another listed bot or role
|
|
71
|
+
- the user explicitly asks for a named workflow
|
|
72
|
+
- the request clearly requires multiple bots doing different tasks
|
|
73
|
+
|
|
74
|
+
Workflow and TODOs are not the same.
|
|
75
|
+
Use a workflow only when the user explicitly asks for a named workflow.
|
|
76
|
+
Use TODOs when the work needs to be split across multiple bots or roles.
|
|
77
|
+
|
|
78
|
+
If you keep the work, do the work now in this same response.
|
|
79
|
+
If you split the work, create the needed TODOs and stop after clearly setting up the next step.
|
|
80
|
+
|
|
81
|
+
If the user mentions another bot only as context, history, or authorship, keep the work and handle it yourself.
|
|
82
|
+
|
|
83
|
+
Available Bots and Roles
|
|
84
|
+
${specialistLines}
|
|
85
|
+
|
|
86
|
+
Named Workflows
|
|
87
|
+
${workflowLines}
|
|
88
|
+
|
|
89
|
+
Project
|
|
90
|
+
- Name: ${projectName}
|
|
91
|
+
- Folder: ${projectFolder}
|
|
92
|
+
${localPromptContract === 'api_or_fresh_cli'
|
|
93
|
+
? `
|
|
94
|
+
|
|
95
|
+
Recent Summary
|
|
96
|
+
${recentSummary}
|
|
97
|
+
|
|
98
|
+
Last 5 Turns
|
|
99
|
+
${lastFiveTurns}`
|
|
100
|
+
: ''}
|
|
101
|
+
|
|
102
|
+
${decisionOnly
|
|
103
|
+
? `OUTPUT JSON ONLY
|
|
104
|
+
Return exactly one JSON object.
|
|
105
|
+
Do not wrap it in markdown fences.
|
|
106
|
+
Do not add commentary before or after the JSON.`
|
|
107
|
+
: `OUTPUT RULES
|
|
108
|
+
- If you keep the work, return the user-facing answer directly and do NOT return JSON.
|
|
109
|
+
- If you split the work, return exactly one JSON object.
|
|
110
|
+
- Do not wrap JSON in markdown fences.
|
|
111
|
+
- Do not add commentary before or after the JSON.`}
|
|
112
|
+
${JSON.stringify({
|
|
113
|
+
mode: decisionOnly ? 'respond | execute_self | delegate | workflow | clarify' : 'respond | delegate | workflow | clarify',
|
|
114
|
+
reason: 'short explanation',
|
|
115
|
+
response: 'only for respond',
|
|
116
|
+
delegate_target: 'bot name or NONE',
|
|
117
|
+
delegate_role: 'coding | qa | research | none',
|
|
118
|
+
delegate_request: 'self-contained task',
|
|
119
|
+
workflow_request: 'short objective',
|
|
120
|
+
clarification_questions: [],
|
|
121
|
+
}, null, 2)}`;
|
|
122
|
+
}
|
|
63
123
|
return `You are ${input.orchestratorName}.
|
|
64
124
|
|
|
65
125
|
${decisionOnly
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator-operating-prompt.js","sourceRoot":"","sources":["../../src/orchestration/orchestrator-operating-prompt.ts"],"names":[],"mappings":";;AA0CA,
|
|
1
|
+
{"version":3,"file":"orchestrator-operating-prompt.js","sourceRoot":"","sources":["../../src/orchestration/orchestrator-operating-prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Output Validation Guardrails (Phase 3.4)
|
|
3
|
+
*
|
|
4
|
+
* Validates that the LLM's synthesized response accurately reflects
|
|
5
|
+
* actual tool results and workflow state before treating a task as "done".
|
|
6
|
+
*
|
|
7
|
+
* Non-blocking — validation failures add warnings but never prevent completion.
|
|
8
|
+
*/
|
|
9
|
+
import type { WorkflowResult } from '../workflow-engine';
|
|
10
|
+
export interface ValidationResult {
|
|
11
|
+
valid: boolean;
|
|
12
|
+
confidence: number;
|
|
13
|
+
issues: ValidationIssue[];
|
|
14
|
+
}
|
|
15
|
+
export interface ValidationIssue {
|
|
16
|
+
type: 'unverified_claim' | 'tool_error_ignored' | 'checkpoint_incomplete' | 'no_tool_confirmation';
|
|
17
|
+
description: string;
|
|
18
|
+
severity: 'warning' | 'error';
|
|
19
|
+
}
|
|
20
|
+
/** Minimal shape expected from the messages table for audit scanning. */
|
|
21
|
+
export interface AuditMessage {
|
|
22
|
+
role: string;
|
|
23
|
+
content: string;
|
|
24
|
+
tool_calls_json: string | null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Validate a completed workflow result against its audit trail.
|
|
28
|
+
*
|
|
29
|
+
* @param result The WorkflowResult from the workflow engine
|
|
30
|
+
* @param synthesized The synthesized user-facing response text
|
|
31
|
+
* @param messages Recent conversation messages (for tool-call audit)
|
|
32
|
+
* @param executionMode The execution mode used ('proxy' | 'workflow' | 'direct')
|
|
33
|
+
*/
|
|
34
|
+
export declare function validateCompletion(result: WorkflowResult, synthesized: string, messages: AuditMessage[], executionMode: 'proxy' | 'workflow' | 'direct'): ValidationResult;
|
|
35
|
+
/**
|
|
36
|
+
* Format a validation warning to append to the synthesized response.
|
|
37
|
+
* Only called when there are "error" severity issues.
|
|
38
|
+
*/
|
|
39
|
+
export declare function formatValidationWarning(result: ValidationResult): string;
|
|
40
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/orchestration/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,oBAAoB,CAAC;AAIvE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EACA,kBAAkB,GAClB,oBAAoB,GACpB,uBAAuB,GACvB,sBAAsB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC;CAC/B;AAED,yEAAyE;AACzE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAsBD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,YAAY,EAAE,EACxB,aAAa,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,GAC7C,gBAAgB,CA6BlB;AA+KD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,gBAAgB,GACvB,MAAM,CAMR"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* LLM Output Validation Guardrails (Phase 3.4)
|
|
4
|
+
*
|
|
5
|
+
* Validates that the LLM's synthesized response accurately reflects
|
|
6
|
+
* actual tool results and workflow state before treating a task as "done".
|
|
7
|
+
*
|
|
8
|
+
* Non-blocking — validation failures add warnings but never prevent completion.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.validateCompletion = validateCompletion;
|
|
12
|
+
exports.formatValidationWarning = formatValidationWarning;
|
|
13
|
+
// ─── Constants ───────────────────────────────────────────────────
|
|
14
|
+
/** File-operation verbs that, when found in a response, must have a matching tool call. */
|
|
15
|
+
const FILE_CLAIM_PATTERNS = [
|
|
16
|
+
/(?:created|wrote|added)\s+(?:a\s+)?(?:new\s+)?file\b/i,
|
|
17
|
+
/(?:modified|updated|edited|changed)\s+(?:the\s+)?file\b/i,
|
|
18
|
+
/(?:created|wrote|added)\s+`[^`]+`/i,
|
|
19
|
+
/(?:modified|updated|edited|changed)\s+`[^`]+`/i,
|
|
20
|
+
];
|
|
21
|
+
const FILE_TOOL_NAMES = new Set([
|
|
22
|
+
'write_file',
|
|
23
|
+
'edit_file',
|
|
24
|
+
'create_file',
|
|
25
|
+
'patch_file',
|
|
26
|
+
'str_replace_editor',
|
|
27
|
+
]);
|
|
28
|
+
// ─── Core Validation ─────────────────────────────────────────────
|
|
29
|
+
/**
|
|
30
|
+
* Validate a completed workflow result against its audit trail.
|
|
31
|
+
*
|
|
32
|
+
* @param result The WorkflowResult from the workflow engine
|
|
33
|
+
* @param synthesized The synthesized user-facing response text
|
|
34
|
+
* @param messages Recent conversation messages (for tool-call audit)
|
|
35
|
+
* @param executionMode The execution mode used ('proxy' | 'workflow' | 'direct')
|
|
36
|
+
*/
|
|
37
|
+
function validateCompletion(result, synthesized, messages, executionMode) {
|
|
38
|
+
const issues = [];
|
|
39
|
+
// Check 1: Tool errors ignored
|
|
40
|
+
checkToolErrorsIgnored(result, synthesized, messages, issues);
|
|
41
|
+
// Check 2: Checkpoint / step completeness
|
|
42
|
+
checkStepCompleteness(result, issues);
|
|
43
|
+
// Check 3: File operation claims without matching tool results
|
|
44
|
+
checkFileOperationClaims(synthesized, messages, issues);
|
|
45
|
+
// Check 4: No tool confirmation for delegated/workflow work
|
|
46
|
+
checkNoToolConfirmation(result, messages, executionMode, issues);
|
|
47
|
+
const errorCount = issues.filter((i) => i.severity === 'error').length;
|
|
48
|
+
const warningCount = issues.filter((i) => i.severity === 'warning').length;
|
|
49
|
+
// Confidence: start at 1.0, subtract for issues
|
|
50
|
+
const confidence = Math.max(0, 1.0 - errorCount * 0.3 - warningCount * 0.1);
|
|
51
|
+
return {
|
|
52
|
+
valid: errorCount === 0,
|
|
53
|
+
confidence: Math.round(confidence * 100) / 100,
|
|
54
|
+
issues,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
// ─── Individual Checks ───────────────────────────────────────────
|
|
58
|
+
/**
|
|
59
|
+
* Check 1: Scan workflow steps and messages for tool errors.
|
|
60
|
+
* Flag if the synthesized response doesn't acknowledge them.
|
|
61
|
+
*/
|
|
62
|
+
function checkToolErrorsIgnored(result, synthesized, messages, issues) {
|
|
63
|
+
// Check for failed steps whose errors aren't mentioned in the response
|
|
64
|
+
const failedSteps = result.steps.filter((s) => s.status === 'failed');
|
|
65
|
+
for (const step of failedSteps) {
|
|
66
|
+
if (step.error && !responseAcknowledgesError(synthesized, step.error)) {
|
|
67
|
+
issues.push({
|
|
68
|
+
type: 'tool_error_ignored',
|
|
69
|
+
description: `Step "${step.description}" failed with "${truncate(step.error, 120)}" but the response does not acknowledge this error.`,
|
|
70
|
+
severity: 'error',
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Check tool-result messages for ERROR: prefixes
|
|
75
|
+
for (const msg of messages) {
|
|
76
|
+
if (msg.role === 'tool' && msg.content.startsWith('ERROR:')) {
|
|
77
|
+
const errorSnippet = truncate(msg.content.slice(7).trim(), 80);
|
|
78
|
+
if (!responseAcknowledgesError(synthesized, errorSnippet)) {
|
|
79
|
+
issues.push({
|
|
80
|
+
type: 'tool_error_ignored',
|
|
81
|
+
description: `A tool returned an error ("${errorSnippet}") that is not acknowledged in the response.`,
|
|
82
|
+
severity: 'warning',
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Check 2: If the workflow has checkpoint steps or multiple steps,
|
|
90
|
+
* verify all non-skipped steps reached "completed" status.
|
|
91
|
+
*/
|
|
92
|
+
function checkStepCompleteness(result, issues) {
|
|
93
|
+
for (const step of result.steps) {
|
|
94
|
+
if (step.status === 'pending' || step.status === 'running') {
|
|
95
|
+
issues.push({
|
|
96
|
+
type: 'checkpoint_incomplete',
|
|
97
|
+
description: `Step "${step.description}" is still "${step.status}" — not completed or skipped.`,
|
|
98
|
+
severity: 'error',
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
// Checkpoint-specific: if a checkpoint step didn't complete, flag it
|
|
102
|
+
if (step.isCheckpoint && step.status !== 'completed') {
|
|
103
|
+
issues.push({
|
|
104
|
+
type: 'checkpoint_incomplete',
|
|
105
|
+
description: `Checkpoint step "${step.description}" did not complete (status: ${step.status}).`,
|
|
106
|
+
severity: 'error',
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Check 3: If the response claims files were created/modified,
|
|
113
|
+
* verify there was a matching successful file tool call.
|
|
114
|
+
*/
|
|
115
|
+
function checkFileOperationClaims(synthesized, messages, issues) {
|
|
116
|
+
const claimsFileOps = FILE_CLAIM_PATTERNS.some((pattern) => pattern.test(synthesized));
|
|
117
|
+
if (!claimsFileOps)
|
|
118
|
+
return;
|
|
119
|
+
// Look for successful file tool calls in the message trail
|
|
120
|
+
const hasFileToolCall = messages.some((msg) => {
|
|
121
|
+
if (!msg.tool_calls_json)
|
|
122
|
+
return false;
|
|
123
|
+
try {
|
|
124
|
+
const calls = JSON.parse(msg.tool_calls_json);
|
|
125
|
+
return calls.some((call) => FILE_TOOL_NAMES.has(call.name || ''));
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
// Also check if any tool-result messages follow a file tool call
|
|
132
|
+
// (tool role messages with non-error content after a file tool call)
|
|
133
|
+
const hasSuccessfulFileResult = hasFileToolCall && messages.some((msg) => msg.role === 'tool' && !msg.content.startsWith('ERROR:'));
|
|
134
|
+
if (!hasFileToolCall) {
|
|
135
|
+
issues.push({
|
|
136
|
+
type: 'unverified_claim',
|
|
137
|
+
description: 'The response claims file operations were performed, but no file tool calls (write_file, edit_file) were found in the audit trail.',
|
|
138
|
+
severity: 'error',
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
else if (!hasSuccessfulFileResult) {
|
|
142
|
+
issues.push({
|
|
143
|
+
type: 'unverified_claim',
|
|
144
|
+
description: 'File tool calls were made but no successful tool results were found — the operations may have failed.',
|
|
145
|
+
severity: 'warning',
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Check 4: If the execution mode was 'proxy' or 'workflow' but zero
|
|
151
|
+
* tool calls were made across all messages, flag as suspicious.
|
|
152
|
+
*/
|
|
153
|
+
function checkNoToolConfirmation(result, messages, executionMode, issues) {
|
|
154
|
+
if (executionMode === 'direct')
|
|
155
|
+
return;
|
|
156
|
+
const hasAnyToolCall = messages.some((msg) => msg.tool_calls_json && msg.tool_calls_json !== '[]' && msg.tool_calls_json !== 'null');
|
|
157
|
+
if (!hasAnyToolCall) {
|
|
158
|
+
issues.push({
|
|
159
|
+
type: 'no_tool_confirmation',
|
|
160
|
+
description: `Execution mode was "${executionMode}" but no tool calls were made — the bot may have only described actions without performing them.`,
|
|
161
|
+
severity: 'warning',
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// ─── Helpers ─────────────────────────────────────────────────────
|
|
166
|
+
/** Check whether the synthesized response mentions or acknowledges an error. */
|
|
167
|
+
function responseAcknowledgesError(response, errorText) {
|
|
168
|
+
const lower = response.toLowerCase();
|
|
169
|
+
// Check for explicit failure/error keywords
|
|
170
|
+
if (lower.includes('failed') ||
|
|
171
|
+
lower.includes('error') ||
|
|
172
|
+
lower.includes('could not') ||
|
|
173
|
+
lower.includes('unable to') ||
|
|
174
|
+
lower.includes('[failed]')) {
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
// Check if the error text itself (or a significant fragment) appears
|
|
178
|
+
const errorWords = errorText
|
|
179
|
+
.toLowerCase()
|
|
180
|
+
.split(/\s+/)
|
|
181
|
+
.filter((w) => w.length > 4);
|
|
182
|
+
if (errorWords.length === 0)
|
|
183
|
+
return false;
|
|
184
|
+
const matchCount = errorWords.filter((w) => lower.includes(w)).length;
|
|
185
|
+
return matchCount / errorWords.length > 0.4;
|
|
186
|
+
}
|
|
187
|
+
function truncate(text, maxLen) {
|
|
188
|
+
if (text.length <= maxLen)
|
|
189
|
+
return text;
|
|
190
|
+
return text.slice(0, maxLen - 3) + '...';
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Format a validation warning to append to the synthesized response.
|
|
194
|
+
* Only called when there are "error" severity issues.
|
|
195
|
+
*/
|
|
196
|
+
function formatValidationWarning(result) {
|
|
197
|
+
const errorIssues = result.issues.filter((i) => i.severity === 'error');
|
|
198
|
+
const details = errorIssues
|
|
199
|
+
.map((i) => `- ${i.description}`)
|
|
200
|
+
.join('\n');
|
|
201
|
+
return `\n\n---\n⚠️ **Validation:** some claims could not be verified:\n${details}`;
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/orchestration/validation.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAyDH,gDAkCC;AAmLD,0DAQC;AAzPD,oEAAoE;AAEpE,2FAA2F;AAC3F,MAAM,mBAAmB,GAAG;IAC1B,uDAAuD;IACvD,0DAA0D;IAC1D,oCAAoC;IACpC,gDAAgD;CACjD,CAAC;AAEF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,YAAY;IACZ,WAAW;IACX,aAAa;IACb,YAAY;IACZ,oBAAoB;CACrB,CAAC,CAAC;AAEH,oEAAoE;AAEpE;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAChC,MAAsB,EACtB,WAAmB,EACnB,QAAwB,EACxB,aAA8C;IAE9C,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,+BAA+B;IAC/B,sBAAsB,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE9D,0CAA0C;IAC1C,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtC,+DAA+D;IAC/D,wBAAwB,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAExD,4DAA4D;IAC5D,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAEjE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IACvE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAE3E,gDAAgD;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACzB,CAAC,EACD,GAAG,GAAG,UAAU,GAAG,GAAG,GAAG,YAAY,GAAG,GAAG,CAC5C,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,UAAU,KAAK,CAAC;QACvB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG;QAC9C,MAAM;KACP,CAAC;AACJ,CAAC;AAED,oEAAoE;AAEpE;;;GAGG;AACH,SAAS,sBAAsB,CAC7B,MAAsB,EACtB,WAAmB,EACnB,QAAwB,EACxB,MAAyB;IAEzB,uEAAuE;IACvE,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IACtE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,oBAAoB;gBAC1B,WAAW,EAAE,SAAS,IAAI,CAAC,WAAW,kBAAkB,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,qDAAqD;gBACtI,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,iDAAiD;IACjD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5D,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,oBAAoB;oBAC1B,WAAW,EAAE,8BAA8B,YAAY,8CAA8C;oBACrG,QAAQ,EAAE,SAAS;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAC5B,MAAsB,EACtB,MAAyB;IAEzB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC3D,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,uBAAuB;gBAC7B,WAAW,EAAE,SAAS,IAAI,CAAC,WAAW,eAAe,IAAI,CAAC,MAAM,+BAA+B;gBAC/F,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;QACL,CAAC;QAED,qEAAqE;QACrE,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,uBAAuB;gBAC7B,WAAW,EAAE,oBAAoB,IAAI,CAAC,WAAW,+BAA+B,IAAI,CAAC,MAAM,IAAI;gBAC/F,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,wBAAwB,CAC/B,WAAmB,EACnB,QAAwB,EACxB,MAAyB;IAEzB,MAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CACzD,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAC1B,CAAC;IACF,IAAI,CAAC,aAAa;QAAE,OAAO;IAE3B,2DAA2D;IAC3D,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QAC5C,IAAI,CAAC,GAAG,CAAC,eAAe;YAAE,OAAO,KAAK,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,KAAK,GAA6B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YACxE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,iEAAiE;IACjE,qEAAqE;IACrE,MAAM,uBAAuB,GAAG,eAAe,IAAI,QAAQ,CAAC,IAAI,CAC9D,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAClE,CAAC;IAEF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,kBAAkB;YACxB,WAAW,EACT,mIAAmI;YACrI,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,kBAAkB;YACxB,WAAW,EACT,uGAAuG;YACzG,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB,CAC9B,MAAsB,EACtB,QAAwB,EACxB,aAA8C,EAC9C,MAAyB;IAEzB,IAAI,aAAa,KAAK,QAAQ;QAAE,OAAO;IAEvC,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAClC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,eAAe,KAAK,IAAI,IAAI,GAAG,CAAC,eAAe,KAAK,MAAM,CAC/F,CAAC;IAEF,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EAAE,uBAAuB,aAAa,kGAAkG;YACnJ,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,oEAAoE;AAEpE,gFAAgF;AAChF,SAAS,yBAAyB,CAChC,QAAgB,EAChB,SAAiB;IAEjB,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,4CAA4C;IAC5C,IACE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC3B,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC3B,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,qEAAqE;IACrE,MAAM,UAAU,GAAG,SAAS;SACzB,WAAW,EAAE;SACb,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACtE,OAAO,UAAU,GAAG,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC;AAC9C,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,MAAc;IAC5C,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CACrC,MAAwB;IAExB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,WAAW;SACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;SAChC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,mEAAmE,OAAO,EAAE,CAAC;AACtF,CAAC"}
|
package/dist/orchestrator.d.ts
CHANGED
|
@@ -11,14 +11,24 @@
|
|
|
11
11
|
* The user sees ONLY their conversation with the orchestrator.
|
|
12
12
|
* Worker LLM conversations happen behind the scenes.
|
|
13
13
|
*/
|
|
14
|
-
import {
|
|
14
|
+
import { type LLMProvider } from './providers/index';
|
|
15
15
|
import { WorkflowEngine, WorkerChunkEvent } from './workflow-engine';
|
|
16
16
|
import { AgentResult } from './mqtt-client';
|
|
17
|
+
import * as data from './local-data';
|
|
17
18
|
interface FinalResponseMeta {
|
|
18
19
|
agentName: string;
|
|
19
20
|
botId: string | null;
|
|
20
21
|
modelLabel: string | null;
|
|
21
22
|
}
|
|
23
|
+
export interface OrchestratorRuntime {
|
|
24
|
+
kind: 'bot' | 'clerk';
|
|
25
|
+
llm: LLMProvider;
|
|
26
|
+
providerName: string;
|
|
27
|
+
model: string | null;
|
|
28
|
+
agentName: string;
|
|
29
|
+
botId: string | null;
|
|
30
|
+
modelLabel: string | null;
|
|
31
|
+
}
|
|
22
32
|
interface OrchestratorOpts {
|
|
23
33
|
projectDir: string;
|
|
24
34
|
projectId?: string;
|
|
@@ -29,11 +39,12 @@ interface OrchestratorOpts {
|
|
|
29
39
|
workflowTemplateId?: string;
|
|
30
40
|
autoDispatchTodos?: boolean;
|
|
31
41
|
}
|
|
42
|
+
export declare function buildLocalDesktopOrchestratorRuntime(selectedBot?: data.AgentProfileRow | null): OrchestratorRuntime;
|
|
32
43
|
export declare class OrchestratorAgent {
|
|
33
|
-
private
|
|
44
|
+
private orchestratorRuntime;
|
|
34
45
|
private workflowEngine;
|
|
35
46
|
private lastResponseMeta;
|
|
36
|
-
constructor(
|
|
47
|
+
constructor(orchestratorRuntime: OrchestratorRuntime, workflowEngine: WorkflowEngine);
|
|
37
48
|
private isLocalDesktopRuntime;
|
|
38
49
|
getLastResponseMeta(): FinalResponseMeta | null;
|
|
39
50
|
private setLastResponseMeta;
|
|
@@ -50,29 +61,10 @@ export declare class OrchestratorAgent {
|
|
|
50
61
|
private isTerminalMode;
|
|
51
62
|
private validateIntentExecution;
|
|
52
63
|
private buildFrontDoorEffectivePolicy;
|
|
53
|
-
private decomposeAndRouteUserMessage;
|
|
54
|
-
private buildIntentVerifierRecentTurns;
|
|
55
|
-
private collapseSingleWorkerPlan;
|
|
56
|
-
private hasExplicitOrderingLanguage;
|
|
57
|
-
private buildIntentAnalysisFromRoutedIntent;
|
|
58
|
-
private inferIntentFromRequest;
|
|
59
|
-
private handleOrderedIntentSequence;
|
|
60
|
-
private normalizeOrderedIntentSequence;
|
|
61
|
-
private applyImplicitWorkerTarget;
|
|
62
|
-
private resolveImplicitWorkerTarget;
|
|
63
|
-
private dropRedundantSequentialWorkerHandoffs;
|
|
64
|
-
private formatOrderedIntentPlanPreview;
|
|
65
64
|
private shouldForceProxy;
|
|
66
65
|
private applyClassificationGuards;
|
|
67
66
|
private formatOrchestratorControlResponse;
|
|
68
67
|
private getAgentReferenceTerms;
|
|
69
|
-
/**
|
|
70
|
-
* Interpret user intent using the clerk.
|
|
71
|
-
* This is the structured hidden-role classifier for Phase 1.
|
|
72
|
-
*/
|
|
73
|
-
private classifyUserMessage;
|
|
74
|
-
private normalizeMode;
|
|
75
|
-
private normalizeModeList;
|
|
76
68
|
private fallbackClassifyUserMessage;
|
|
77
69
|
private isExplicitPolicyMessage;
|
|
78
70
|
private hasExecutionDirective;
|
|
@@ -143,6 +135,7 @@ export declare class OrchestratorAgent {
|
|
|
143
135
|
*/
|
|
144
136
|
private executeDelegation;
|
|
145
137
|
private inferDelegationRole;
|
|
138
|
+
private runOrchestratorPrompt;
|
|
146
139
|
private inferRequestedWorkflowRoles;
|
|
147
140
|
private orchestratorOwnsWorkflowRole;
|
|
148
141
|
private resolveWorkflowRoleTarget;
|
|
@@ -156,10 +149,6 @@ export declare class OrchestratorAgent {
|
|
|
156
149
|
private maybeRunFinalCriticPass;
|
|
157
150
|
private isHighRiskPrompt;
|
|
158
151
|
private resolveProjectId;
|
|
159
|
-
/**
|
|
160
|
-
* Handle simple requests — route to best agent, return response.
|
|
161
|
-
*/
|
|
162
|
-
private handleSimpleRequest;
|
|
163
152
|
/**
|
|
164
153
|
* Handle proxy/discussion requests — forward to specific agent.
|
|
165
154
|
*/
|
|
@@ -174,6 +163,12 @@ export declare class OrchestratorAgent {
|
|
|
174
163
|
* Strips raw worker protocol — user sees clean PM voice.
|
|
175
164
|
*/
|
|
176
165
|
private synthesizeResponse;
|
|
166
|
+
/**
|
|
167
|
+
* Run completion validation on a synthesized response and append warnings
|
|
168
|
+
* if the validation finds error-severity issues. Non-blocking — always
|
|
169
|
+
* returns a response, possibly with a validation warning appended.
|
|
170
|
+
*/
|
|
171
|
+
private applyCompletionValidation;
|
|
177
172
|
/**
|
|
178
173
|
* Publish orchestrator status via MQTT for UI rendering.
|
|
179
174
|
*/
|
|
@@ -189,8 +184,6 @@ export declare class OrchestratorAgent {
|
|
|
189
184
|
private buildOrchestratorInterview;
|
|
190
185
|
private requiredRolesForIntent;
|
|
191
186
|
private parseRoleAssignments;
|
|
192
|
-
private clerkModelLabel;
|
|
193
|
-
private respondAsClerk;
|
|
194
187
|
private hasRoleAssignments;
|
|
195
188
|
private loadRoleAssignments;
|
|
196
189
|
private mergeRoleAssignments;
|
|
@@ -202,10 +195,6 @@ export declare class OrchestratorAgent {
|
|
|
202
195
|
private createConfirmationCheckpoint;
|
|
203
196
|
private handlePendingCheckpoint;
|
|
204
197
|
private isPolicyConfirmation;
|
|
205
|
-
private determinePolicyScope;
|
|
206
|
-
private extractPolicyPatch;
|
|
207
|
-
private sanitizeInterpretedPolicyPatch;
|
|
208
|
-
private summarizePolicyPatch;
|
|
209
198
|
private handlePolicyUpdate;
|
|
210
199
|
private applyPendingPolicy;
|
|
211
200
|
private resolveWorkflowTemplate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
|