funolio-agent 0.17.8 → 1.0.3
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 +7 -6
- package/dist/approval.d.ts.map +1 -1
- package/dist/approval.js +40 -10
- package/dist/approval.js.map +1 -1
- package/dist/auth/anthropic-subscription.d.ts +9 -29
- package/dist/auth/anthropic-subscription.d.ts.map +1 -1
- package/dist/auth/anthropic-subscription.js +12 -133
- package/dist/auth/anthropic-subscription.js.map +1 -1
- package/dist/auth/auto-detect.d.ts +28 -6
- package/dist/auth/auto-detect.d.ts.map +1 -1
- package/dist/auth/auto-detect.js +52 -205
- package/dist/auth/auto-detect.js.map +1 -1
- package/dist/auth/credential-reader.d.ts +24 -4
- package/dist/auth/credential-reader.d.ts.map +1 -1
- package/dist/auth/credential-reader.js +31 -256
- package/dist/auth/credential-reader.js.map +1 -1
- package/dist/auth/credential-status.d.ts +7 -27
- package/dist/auth/credential-status.d.ts.map +1 -1
- package/dist/auth/credential-status.js +7 -95
- package/dist/auth/credential-status.js.map +1 -1
- package/dist/auth/index.d.ts +9 -2
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +10 -10
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/subscription-runtime.d.ts +19 -23
- package/dist/auth/subscription-runtime.d.ts.map +1 -1
- package/dist/auth/subscription-runtime.js +24 -292
- package/dist/auth/subscription-runtime.js.map +1 -1
- package/dist/auth/token-refresh.d.ts +19 -28
- package/dist/auth/token-refresh.d.ts.map +1 -1
- package/dist/auth/token-refresh.js +26 -464
- package/dist/auth/token-refresh.js.map +1 -1
- package/dist/backfill.js +2 -2
- package/dist/backfill.js.map +1 -1
- package/dist/bot-manager.d.ts +5 -6
- package/dist/bot-manager.d.ts.map +1 -1
- package/dist/bot-manager.js +20 -62
- package/dist/bot-manager.js.map +1 -1
- package/dist/clerk-model.d.ts +0 -1
- package/dist/clerk-model.d.ts.map +1 -1
- package/dist/clerk-model.js +24 -50
- package/dist/clerk-model.js.map +1 -1
- package/dist/commands/configure-provider.js +2 -2
- package/dist/commands/configure-provider.js.map +1 -1
- package/dist/commands/configure.d.ts.map +1 -1
- package/dist/commands/configure.js +10 -14
- package/dist/commands/configure.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +51 -229
- package/dist/commands/start.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/context-compressor.d.ts +6 -1
- package/dist/context-compressor.d.ts.map +1 -1
- package/dist/context-compressor.js +87 -18
- package/dist/context-compressor.js.map +1 -1
- package/dist/context-window.d.ts +2 -8
- package/dist/context-window.d.ts.map +1 -1
- package/dist/context-window.js +4 -4
- package/dist/context-window.js.map +1 -1
- package/dist/eval/orchestrator-front-door-replay.js +43 -2
- package/dist/eval/orchestrator-front-door-replay.js.map +1 -1
- package/dist/eval/orchestrator-todo-dispatch-replay.d.ts +2 -0
- package/dist/eval/orchestrator-todo-dispatch-replay.d.ts.map +1 -0
- package/dist/eval/orchestrator-todo-dispatch-replay.js +253 -0
- package/dist/eval/orchestrator-todo-dispatch-replay.js.map +1 -0
- package/dist/eval/orchestrator-todo-planning-replay.d.ts +2 -0
- package/dist/eval/orchestrator-todo-planning-replay.d.ts.map +1 -0
- package/dist/eval/orchestrator-todo-planning-replay.js +247 -0
- package/dist/eval/orchestrator-todo-planning-replay.js.map +1 -0
- package/dist/eval/policy-detection-replay.d.ts +2 -0
- package/dist/eval/policy-detection-replay.d.ts.map +1 -0
- package/dist/eval/policy-detection-replay.js +122 -0
- package/dist/eval/policy-detection-replay.js.map +1 -0
- package/dist/eval/todo-worker-runtime-replay.d.ts +2 -0
- package/dist/eval/todo-worker-runtime-replay.d.ts.map +1 -0
- package/dist/eval/todo-worker-runtime-replay.js +520 -0
- package/dist/eval/todo-worker-runtime-replay.js.map +1 -0
- package/dist/integration-tokens.d.ts +6 -0
- package/dist/integration-tokens.d.ts.map +1 -1
- package/dist/integration-tokens.js +43 -0
- package/dist/integration-tokens.js.map +1 -1
- package/dist/local-data.d.ts +134 -1
- package/dist/local-data.d.ts.map +1 -1
- package/dist/local-data.js +711 -18
- package/dist/local-data.js.map +1 -1
- package/dist/local-db.d.ts.map +1 -1
- package/dist/local-db.js +216 -12
- package/dist/local-db.js.map +1 -1
- package/dist/local-funnel.d.ts.map +1 -1
- package/dist/local-funnel.js +7 -0
- package/dist/local-funnel.js.map +1 -1
- package/dist/local-server.d.ts.map +1 -1
- package/dist/local-server.js +119 -96
- package/dist/local-server.js.map +1 -1
- package/dist/mcp/bridge-server.d.ts.map +1 -1
- package/dist/mcp/bridge-server.js +8 -2
- package/dist/mcp/bridge-server.js.map +1 -1
- package/dist/mcp/manager.d.ts +5 -0
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +131 -2
- package/dist/mcp/manager.js.map +1 -1
- package/dist/mcp/sync-cli-config.d.ts +5 -0
- package/dist/mcp/sync-cli-config.d.ts.map +1 -1
- package/dist/mcp/sync-cli-config.js +10 -2
- package/dist/mcp/sync-cli-config.js.map +1 -1
- package/dist/message-loop.d.ts +1 -10
- package/dist/message-loop.d.ts.map +1 -1
- package/dist/message-loop.js +179 -250
- package/dist/message-loop.js.map +1 -1
- package/dist/mqtt-client.d.ts +44 -0
- package/dist/mqtt-client.d.ts.map +1 -1
- package/dist/mqtt-client.js +2 -2
- package/dist/mqtt-client.js.map +1 -1
- package/dist/orchestration/front-door-policy.d.ts +26 -9
- package/dist/orchestration/front-door-policy.d.ts.map +1 -1
- package/dist/orchestration/front-door-policy.js +242 -69
- package/dist/orchestration/front-door-policy.js.map +1 -1
- package/dist/orchestration/orchestrator-blocked-prompt.d.ts +18 -0
- package/dist/orchestration/orchestrator-blocked-prompt.d.ts.map +1 -0
- package/dist/orchestration/orchestrator-blocked-prompt.js +46 -0
- package/dist/orchestration/orchestrator-blocked-prompt.js.map +1 -0
- package/dist/orchestration/orchestrator-final-response-prompt.d.ts +10 -0
- package/dist/orchestration/orchestrator-final-response-prompt.d.ts.map +1 -0
- package/dist/orchestration/orchestrator-final-response-prompt.js +39 -0
- package/dist/orchestration/orchestrator-final-response-prompt.js.map +1 -0
- package/dist/orchestration/orchestrator-operating-prompt.d.ts +11 -0
- package/dist/orchestration/orchestrator-operating-prompt.d.ts.map +1 -1
- package/dist/orchestration/orchestrator-operating-prompt.js +106 -36
- package/dist/orchestration/orchestrator-operating-prompt.js.map +1 -1
- package/dist/orchestration/policy-prompt.d.ts +6 -0
- package/dist/orchestration/policy-prompt.d.ts.map +1 -0
- package/dist/orchestration/policy-prompt.js +40 -0
- package/dist/orchestration/policy-prompt.js.map +1 -0
- package/dist/orchestration/worker-operating-prompt.d.ts +16 -0
- package/dist/orchestration/worker-operating-prompt.d.ts.map +1 -0
- package/dist/orchestration/worker-operating-prompt.js +75 -0
- package/dist/orchestration/worker-operating-prompt.js.map +1 -0
- package/dist/orchestrator.d.ts +19 -0
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +614 -54
- package/dist/orchestrator.js.map +1 -1
- package/dist/policy-detection.d.ts +40 -0
- package/dist/policy-detection.d.ts.map +1 -0
- package/dist/policy-detection.js +298 -0
- package/dist/policy-detection.js.map +1 -0
- package/dist/providers/anthropic.d.ts +0 -5
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +34 -51
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/claude-cli.d.ts.map +1 -1
- package/dist/providers/claude-cli.js +11 -2
- 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 +121 -2
- package/dist/providers/codex-cli.js.map +1 -1
- package/dist/providers/index.d.ts +6 -2
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/summarization-pipeline.d.ts +1 -4
- package/dist/summarization-pipeline.d.ts.map +1 -1
- package/dist/summarization-pipeline.js +43 -56
- package/dist/summarization-pipeline.js.map +1 -1
- package/dist/tools/analyze-image.js +2 -2
- package/dist/tools/analyze-image.js.map +1 -1
- package/dist/tools/edit-file.d.ts.map +1 -1
- package/dist/tools/edit-file.js +16 -1
- package/dist/tools/edit-file.js.map +1 -1
- package/dist/tools/git-tools.d.ts.map +1 -1
- package/dist/tools/git-tools.js +32 -1
- package/dist/tools/git-tools.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list-directory.d.ts.map +1 -1
- package/dist/tools/list-directory.js +23 -0
- package/dist/tools/list-directory.js.map +1 -1
- package/dist/tools/notify-user.d.ts.map +1 -1
- package/dist/tools/notify-user.js +15 -1
- package/dist/tools/notify-user.js.map +1 -1
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +3 -1
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/request-mcp-install.js +5 -5
- package/dist/tools/request-mcp-install.js.map +1 -1
- package/dist/tools/run-command.d.ts.map +1 -1
- package/dist/tools/run-command.js +16 -4
- package/dist/tools/run-command.js.map +1 -1
- package/dist/tools/sandbox.d.ts.map +1 -1
- package/dist/tools/sandbox.js +6 -0
- package/dist/tools/sandbox.js.map +1 -1
- package/dist/tools/schedule-task.d.ts.map +1 -1
- package/dist/tools/schedule-task.js +37 -0
- package/dist/tools/schedule-task.js.map +1 -1
- package/dist/tools/search-codebase.d.ts.map +1 -1
- package/dist/tools/search-codebase.js +251 -32
- package/dist/tools/search-codebase.js.map +1 -1
- package/dist/tools/todo-tasks.d.ts +2 -0
- package/dist/tools/todo-tasks.d.ts.map +1 -1
- package/dist/tools/todo-tasks.js +203 -6
- package/dist/tools/todo-tasks.js.map +1 -1
- package/dist/tools/web-fetch.d.ts.map +1 -1
- package/dist/tools/web-fetch.js +21 -2
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +38 -34
- package/dist/tools/web-search.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/wizard-state.d.ts.map +1 -1
- package/dist/wizard-state.js +30 -8
- package/dist/wizard-state.js.map +1 -1
- package/dist/wizard-support.d.ts +2 -2
- package/dist/wizard-support.d.ts.map +1 -1
- package/dist/wizard-support.js +80 -93
- package/dist/wizard-support.js.map +1 -1
- package/dist/workflow-engine.d.ts +3 -0
- package/dist/workflow-engine.d.ts.map +1 -1
- package/dist/workflow-engine.js +111 -82
- package/dist/workflow-engine.js.map +1 -1
- package/package.json +6 -1
|
@@ -1,107 +1,279 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.inferFrontDoorTaskType = inferFrontDoorTaskType;
|
|
4
|
+
exports.extractFrontDoorSignals = extractFrontDoorSignals;
|
|
3
5
|
exports.applyFrontDoorPolicy = applyFrontDoorPolicy;
|
|
4
6
|
function normalize(value) {
|
|
5
7
|
return String(value || '').trim().toLowerCase();
|
|
6
8
|
}
|
|
7
|
-
function
|
|
8
|
-
|
|
9
|
-
const right = normalize(b);
|
|
10
|
-
return Boolean(left && right && left === right);
|
|
9
|
+
function escapeRegex(text) {
|
|
10
|
+
return text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
11
11
|
}
|
|
12
|
-
function
|
|
13
|
-
|
|
12
|
+
function uniqueStrings(values) {
|
|
13
|
+
return Array.from(new Set(values.map((value) => value.trim()).filter(Boolean)));
|
|
14
|
+
}
|
|
15
|
+
function matchWholeTerm(prompt, term) {
|
|
16
|
+
const normalizedTerm = normalize(term);
|
|
17
|
+
if (!normalizedTerm)
|
|
18
|
+
return false;
|
|
19
|
+
const escaped = escapeRegex(normalizedTerm);
|
|
20
|
+
return new RegExp(`(^|[^a-z0-9])${escaped}([^a-z0-9]|$)`, 'i').test(prompt);
|
|
21
|
+
}
|
|
22
|
+
function promptNamesWorkflow(prompt, workflowNames) {
|
|
23
|
+
return uniqueStrings((workflowNames || []).filter((name) => matchWholeTerm(prompt, name)));
|
|
24
|
+
}
|
|
25
|
+
function matchSpecialistNames(prompt, specialists) {
|
|
26
|
+
return uniqueStrings((specialists || []).map((specialist) => specialist.name).filter((name) => matchWholeTerm(prompt, name)));
|
|
27
|
+
}
|
|
28
|
+
function roleTermsForSpecialists(specialists) {
|
|
29
|
+
const termsByRole = {
|
|
30
|
+
coding: new Set(['coder', 'coding']),
|
|
31
|
+
qa: new Set(['qa']),
|
|
32
|
+
research: new Set(['brainstorm', 'brainstorming', 'research', 'planning']),
|
|
33
|
+
};
|
|
34
|
+
for (const specialist of specialists || []) {
|
|
35
|
+
const roleLabel = normalize(specialist.roleLabel);
|
|
36
|
+
if (roleLabel === 'qa') {
|
|
37
|
+
termsByRole.qa.add('quality assurance');
|
|
38
|
+
}
|
|
39
|
+
else if (roleLabel === 'research' || roleLabel === 'planning' || roleLabel === 'brainstorm') {
|
|
40
|
+
termsByRole.research.add(roleLabel);
|
|
41
|
+
}
|
|
42
|
+
else if (roleLabel === 'code' || roleLabel === 'coding') {
|
|
43
|
+
termsByRole.coding.add(roleLabel);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return [
|
|
47
|
+
{ role: 'coding', terms: Array.from(termsByRole.coding) },
|
|
48
|
+
{ role: 'qa', terms: Array.from(termsByRole.qa) },
|
|
49
|
+
{ role: 'research', terms: Array.from(termsByRole.research) },
|
|
50
|
+
];
|
|
51
|
+
}
|
|
52
|
+
function matchRoles(prompt, specialists) {
|
|
53
|
+
const matched = [];
|
|
54
|
+
for (const entry of roleTermsForSpecialists(specialists)) {
|
|
55
|
+
if (entry.terms.some((term) => matchWholeTerm(prompt, term))) {
|
|
56
|
+
matched.push(entry.role);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return matched;
|
|
60
|
+
}
|
|
61
|
+
function inferFrontDoorTaskType(prompt) {
|
|
62
|
+
if (/\b(from now on|by default|set (?:the )?default workflow|save (?:this|it) as (?:the )?default workflow|default qa|default research|default coder)\b/i.test(prompt))
|
|
14
63
|
return 'policy';
|
|
15
64
|
if (/\b(status|progress|what(?:'s| is) happening|where are we|is it done|how far along)\b/i.test(prompt))
|
|
16
65
|
return 'status';
|
|
17
66
|
const hasQa = /\b(qa(?:'d|ed|ing)?|review|test|verify|verification|audit)\b/i.test(prompt);
|
|
18
67
|
const hasCoding = /\b(build|code|implement|create|fix|update|edit|change|refactor|ship|deploy|make|add|remove|rename|wire up|hook up)\b/i.test(prompt);
|
|
19
|
-
const hasResearch = /\b(brainstorm(?:ing)?|research(?:es|ed|ing)?|investigate|analy[sz]e|evaluate|compare|feasibility)\b/i.test(prompt);
|
|
68
|
+
const hasResearch = /\b(brainstorm(?:ing)?|research(?:es|ed|ing)?|investigate|analy[sz]e|evaluate|compare|feasibility|plan|planning)\b/i.test(prompt);
|
|
20
69
|
if (hasQa && !hasCoding && !hasResearch)
|
|
21
70
|
return 'qa';
|
|
22
71
|
if (hasResearch && !hasCoding)
|
|
23
72
|
return 'research';
|
|
73
|
+
if (hasCoding && (hasQa || hasResearch))
|
|
74
|
+
return 'mixed';
|
|
24
75
|
if (hasCoding)
|
|
25
76
|
return 'coding';
|
|
26
77
|
return 'conversation';
|
|
27
78
|
}
|
|
79
|
+
function countAssignedRoles(assignments) {
|
|
80
|
+
if (!assignments)
|
|
81
|
+
return 0;
|
|
82
|
+
let count = 0;
|
|
83
|
+
if (assignments.coding)
|
|
84
|
+
count += 1;
|
|
85
|
+
if (assignments.qa)
|
|
86
|
+
count += 1;
|
|
87
|
+
if (assignments.research)
|
|
88
|
+
count += 1;
|
|
89
|
+
return count;
|
|
90
|
+
}
|
|
91
|
+
function defaultTargetForTaskType(taskType, roleAssignments) {
|
|
92
|
+
if (taskType === 'coding')
|
|
93
|
+
return roleAssignments?.coding || null;
|
|
94
|
+
if (taskType === 'qa')
|
|
95
|
+
return roleAssignments?.qa || null;
|
|
96
|
+
if (taskType === 'research')
|
|
97
|
+
return roleAssignments?.research || null;
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
function isAdvisoryPrompt(prompt) {
|
|
101
|
+
return /\bwhat do you think|can we|should we|do you agree|need to discuss|discuss more|is this a good idea|is this sound|thoughts\??|recommend(?:ation)?\b/i.test(prompt);
|
|
102
|
+
}
|
|
103
|
+
function resolvePreferredTarget(matchedBots, matchedRoles, roleAssignments) {
|
|
104
|
+
if (matchedBots.length === 1)
|
|
105
|
+
return matchedBots[0];
|
|
106
|
+
if (matchedRoles.length === 1) {
|
|
107
|
+
const role = matchedRoles[0];
|
|
108
|
+
return roleAssignments?.[role] || null;
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
function extractFrontDoorSignals(input) {
|
|
113
|
+
const prompt = String(input.prompt || '');
|
|
114
|
+
const matchedBots = matchSpecialistNames(prompt, input.specialists);
|
|
115
|
+
const matchedRoles = matchRoles(prompt, input.specialists);
|
|
116
|
+
const matchedWorkflowNames = promptNamesWorkflow(prompt, input.workflowNames);
|
|
117
|
+
const explicitTodoKeyword = /\b(todo|to-?do|task list)\b/i.test(prompt);
|
|
118
|
+
const explicitWorkflowKeyword = /\bworkflow\b/i.test(prompt);
|
|
119
|
+
const explicitDelegationKeyword = /\b(delegate|delegation|assign(?:ed|ment)?|handoff|hand off)\b/i.test(prompt);
|
|
120
|
+
const explicitOrchestrationRequested = explicitTodoKeyword || explicitWorkflowKeyword || explicitDelegationKeyword || matchedWorkflowNames.length > 0;
|
|
121
|
+
const multiWorkerSignal = matchedBots.length >= 2 || matchedRoles.length >= 2;
|
|
122
|
+
const preferredMode = matchedWorkflowNames.length > 0
|
|
123
|
+
? 'workflow'
|
|
124
|
+
: explicitOrchestrationRequested
|
|
125
|
+
? (multiWorkerSignal ? 'workflow' : ((matchedBots.length === 1 || matchedRoles.length === 1) ? 'delegate' : null))
|
|
126
|
+
: null;
|
|
127
|
+
const preferredTarget = preferredMode === 'delegate'
|
|
128
|
+
? resolvePreferredTarget(matchedBots, matchedRoles, input.roleAssignments)
|
|
129
|
+
: null;
|
|
130
|
+
return {
|
|
131
|
+
matchedBots,
|
|
132
|
+
matchedRoles,
|
|
133
|
+
matchedWorkflowNames,
|
|
134
|
+
explicitTodoKeyword,
|
|
135
|
+
explicitWorkflowKeyword,
|
|
136
|
+
explicitDelegationKeyword,
|
|
137
|
+
explicitOrchestrationRequested,
|
|
138
|
+
preferredMode,
|
|
139
|
+
preferredTarget,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
28
142
|
/**
|
|
29
|
-
*
|
|
30
|
-
* -
|
|
31
|
-
* -
|
|
32
|
-
* -
|
|
33
|
-
* -
|
|
34
|
-
* - NEVER clarify about which worker to use
|
|
143
|
+
* Front-door policy:
|
|
144
|
+
* - code-first signal detection decides whether TODO/workflow intent is explicit
|
|
145
|
+
* - explicit orchestration requests should not silently fall through to execute_self
|
|
146
|
+
* - single worker TODO/workflow requests prefer delegate
|
|
147
|
+
* - multi-worker or named workflow requests prefer workflow
|
|
35
148
|
*/
|
|
36
149
|
function applyFrontDoorPolicy(input) {
|
|
37
150
|
const prompt = String(input.prompt || '');
|
|
38
|
-
const
|
|
39
|
-
const
|
|
151
|
+
const taskType = inferFrontDoorTaskType(prompt);
|
|
152
|
+
const signals = extractFrontDoorSignals({
|
|
153
|
+
prompt,
|
|
154
|
+
specialists: input.specialists,
|
|
155
|
+
workflowNames: input.workflowNames,
|
|
156
|
+
roleAssignments: input.roleAssignments,
|
|
157
|
+
});
|
|
40
158
|
const initial = { ...input.initialDecision };
|
|
41
159
|
let decision = { ...input.initialDecision };
|
|
42
160
|
let correctionReason;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
161
|
+
const promptAssignedRoleCount = countAssignedRoles(input.promptAssignments);
|
|
162
|
+
const savedRoleCount = countAssignedRoles(input.roleAssignments);
|
|
163
|
+
const mapsToWorkerRole = taskType === 'coding' || taskType === 'qa' || taskType === 'research';
|
|
164
|
+
const multiWorkerRequested = signals.matchedBots.length >= 2
|
|
165
|
+
|| signals.matchedRoles.length >= 2
|
|
166
|
+
|| taskType === 'mixed'
|
|
167
|
+
|| promptAssignedRoleCount >= 2;
|
|
168
|
+
const singleWorkerRequested = mapsToWorkerRole
|
|
169
|
+
|| signals.matchedBots.length === 1
|
|
170
|
+
|| signals.matchedRoles.length === 1
|
|
171
|
+
|| promptAssignedRoleCount === 1;
|
|
172
|
+
const fallbackTarget = resolvePreferredTarget(signals.matchedBots, signals.matchedRoles, input.roleAssignments) || defaultTargetForTaskType(taskType, input.roleAssignments);
|
|
173
|
+
const advisoryOnly = initial.mode === 'respond'
|
|
174
|
+
&& isAdvisoryPrompt(prompt)
|
|
175
|
+
&& !signals.explicitTodoKeyword
|
|
176
|
+
&& !signals.explicitWorkflowKeyword
|
|
177
|
+
&& !signals.explicitDelegationKeyword
|
|
178
|
+
&& signals.matchedWorkflowNames.length === 0;
|
|
179
|
+
if (advisoryOnly) {
|
|
180
|
+
// Preserve conversational advisory responses even if the text contains
|
|
181
|
+
// planning words like "plan" or "first".
|
|
63
182
|
}
|
|
64
|
-
else if (
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
reason: 'User explicitly asked for a specific bot.',
|
|
68
|
-
delegate_target: promptAssignments.coding,
|
|
69
|
-
delegate_role: 'coding',
|
|
70
|
-
delegate_request: decision.delegate_request?.trim() || prompt.trim(),
|
|
71
|
-
};
|
|
72
|
-
correctionReason = decision.reason;
|
|
183
|
+
else if (initial.mode === 'clarify' && (signals.explicitOrchestrationRequested || multiWorkerRequested)) {
|
|
184
|
+
// Preserve clarify when the request clearly needs worker/workflow execution
|
|
185
|
+
// but the model determined required details are still missing.
|
|
73
186
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
187
|
+
else if (signals.matchedWorkflowNames.length > 0 || multiWorkerRequested) {
|
|
188
|
+
if (initial.mode !== 'workflow') {
|
|
189
|
+
decision = {
|
|
190
|
+
mode: 'workflow',
|
|
191
|
+
reason: signals.matchedWorkflowNames.length > 0
|
|
192
|
+
? 'Code-based front door matched a named workflow in the user prompt.'
|
|
193
|
+
: 'Code-based front door found a multi-worker or staged task that should run as a workflow.',
|
|
194
|
+
workflow_request: initial.workflow_request || prompt,
|
|
195
|
+
};
|
|
196
|
+
correctionReason = decision.reason;
|
|
197
|
+
}
|
|
81
198
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
199
|
+
else if (initial.mode !== 'clarify'
|
|
200
|
+
&& !isAdvisoryPrompt(prompt)
|
|
201
|
+
&& (singleWorkerRequested || (mapsToWorkerRole && savedRoleCount > 0))
|
|
202
|
+
&& Boolean(signals.preferredTarget || fallbackTarget)) {
|
|
203
|
+
const delegateTarget = signals.preferredTarget || fallbackTarget;
|
|
204
|
+
if (delegateTarget && (initial.mode !== 'delegate' || normalize(initial.delegate_target) !== normalize(delegateTarget))) {
|
|
205
|
+
const delegateRole = signals.matchedRoles[0]
|
|
206
|
+
|| (normalize(delegateTarget) === normalize(input.roleAssignments?.qa) ? 'qa'
|
|
207
|
+
: normalize(delegateTarget) === normalize(input.roleAssignments?.research) ? 'research'
|
|
208
|
+
: taskType === 'qa'
|
|
209
|
+
? 'qa'
|
|
210
|
+
: taskType === 'research'
|
|
211
|
+
? 'research'
|
|
212
|
+
: 'coding');
|
|
213
|
+
decision = {
|
|
214
|
+
mode: 'delegate',
|
|
215
|
+
reason: signals.explicitOrchestrationRequested
|
|
216
|
+
? 'Code-based front door found an explicit single-worker TODO/workflow request.'
|
|
217
|
+
: 'Code-based front door mapped this worker-role task to a single worker.',
|
|
218
|
+
delegate_target: delegateTarget,
|
|
219
|
+
delegate_role: delegateRole,
|
|
220
|
+
delegate_request: initial.delegate_request || prompt,
|
|
221
|
+
};
|
|
222
|
+
correctionReason = decision.reason;
|
|
223
|
+
}
|
|
89
224
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
225
|
+
else if (!signals.explicitOrchestrationRequested) {
|
|
226
|
+
if (initial.mode === 'workflow' || initial.mode === 'delegate') {
|
|
227
|
+
decision = {
|
|
228
|
+
mode: mapsToWorkerRole ? 'delegate' : 'execute_self',
|
|
229
|
+
reason: mapsToWorkerRole && fallbackTarget
|
|
230
|
+
? 'Code-based front door kept this as a worker-role task and routed it to a single worker.'
|
|
231
|
+
: 'No workflow or worker assignment is required. Handle it directly.',
|
|
232
|
+
...(mapsToWorkerRole && fallbackTarget ? {
|
|
233
|
+
delegate_target: fallbackTarget,
|
|
234
|
+
delegate_role: taskType === 'qa' ? 'qa' : taskType === 'research' ? 'research' : 'coding',
|
|
235
|
+
delegate_request: prompt,
|
|
236
|
+
} : {}),
|
|
237
|
+
};
|
|
238
|
+
correctionReason = decision.reason;
|
|
239
|
+
}
|
|
240
|
+
else if (initial.mode === 'clarify' && !mapsToWorkerRole) {
|
|
95
241
|
decision = {
|
|
96
242
|
mode: 'execute_self',
|
|
97
|
-
reason: '
|
|
243
|
+
reason: 'Converted clarify to execute_self. This is not a worker workflow request.',
|
|
98
244
|
};
|
|
99
245
|
correctionReason = decision.reason;
|
|
100
246
|
}
|
|
101
|
-
|
|
247
|
+
else if (initial.mode === 'respond') {
|
|
248
|
+
const resp = String(initial.response || '').toLowerCase();
|
|
249
|
+
const hasOrchestrationLanguage = /which (worker|bot|agent|specialist)|ready to coordinate|get the right bots|need a few details|before i start|i need to know|which .* should handle/i.test(resp);
|
|
250
|
+
if (hasOrchestrationLanguage) {
|
|
251
|
+
if (multiWorkerRequested) {
|
|
252
|
+
decision = {
|
|
253
|
+
mode: 'workflow',
|
|
254
|
+
reason: 'Respond contained orchestration language. Route this staged worker task as a workflow.',
|
|
255
|
+
workflow_request: prompt,
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
else if (fallbackTarget) {
|
|
259
|
+
decision = {
|
|
260
|
+
mode: 'delegate',
|
|
261
|
+
reason: 'Respond contained orchestration language. Route the worker task instead of asking who should own it.',
|
|
262
|
+
delegate_target: fallbackTarget,
|
|
263
|
+
delegate_role: taskType === 'qa' ? 'qa' : taskType === 'research' ? 'research' : 'coding',
|
|
264
|
+
delegate_request: prompt,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
decision = {
|
|
269
|
+
mode: 'execute_self',
|
|
270
|
+
reason: 'Respond contained orchestration language. Handle it directly instead.',
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
correctionReason = decision.reason;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
102
276
|
}
|
|
103
|
-
// Rule 5: workflow mode is preserved only when workflow template was explicitly selected
|
|
104
|
-
// (handled upstream in orchestrator.ts before front-door is called)
|
|
105
277
|
const corrected = JSON.stringify(decision) !== JSON.stringify(initial);
|
|
106
278
|
return {
|
|
107
279
|
decision,
|
|
@@ -109,8 +281,9 @@ function applyFrontDoorPolicy(input) {
|
|
|
109
281
|
correctionReason,
|
|
110
282
|
taskType,
|
|
111
283
|
qaMode: 'none',
|
|
112
|
-
preferredWorkflowRequested:
|
|
113
|
-
explicitWorkflowRequested:
|
|
284
|
+
preferredWorkflowRequested: signals.matchedWorkflowNames.length > 0,
|
|
285
|
+
explicitWorkflowRequested: signals.explicitOrchestrationRequested,
|
|
286
|
+
signals,
|
|
114
287
|
};
|
|
115
288
|
}
|
|
116
289
|
//# sourceMappingURL=front-door-policy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"front-door-policy.js","sourceRoot":"","sources":["../../src/orchestration/front-door-policy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"front-door-policy.js","sourceRoot":"","sources":["../../src/orchestration/front-door-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { OrchestrationPolicy } from '../local-data';
|
|
2
|
+
export interface BlockedWorkerOrchestratorPromptInput {
|
|
3
|
+
orchestratorName: string;
|
|
4
|
+
workerName: string;
|
|
5
|
+
workerRole: string;
|
|
6
|
+
taskTitle: string;
|
|
7
|
+
taskPrompt: string;
|
|
8
|
+
projectId?: string | null;
|
|
9
|
+
projectName?: string | null;
|
|
10
|
+
workspacePath?: string | null;
|
|
11
|
+
effectivePolicy: OrchestrationPolicy;
|
|
12
|
+
artifactRefs?: string[];
|
|
13
|
+
blockerSummary: string;
|
|
14
|
+
checkedContext: string;
|
|
15
|
+
userQuestion: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function buildBlockedWorkerOrchestratorPrompt(input: BlockedWorkerOrchestratorPromptInput): string;
|
|
18
|
+
//# sourceMappingURL=orchestrator-blocked-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator-blocked-prompt.d.ts","sourceRoot":"","sources":["../../src/orchestration/orchestrator-blocked-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGzD,MAAM,WAAW,oCAAoC;IACnD,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,mBAAmB,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,oCAAoC,GAAG,MAAM,CAyCxG"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildBlockedWorkerOrchestratorPrompt = buildBlockedWorkerOrchestratorPrompt;
|
|
4
|
+
const policy_prompt_1 = require("./policy-prompt");
|
|
5
|
+
function buildBlockedWorkerOrchestratorPrompt(input) {
|
|
6
|
+
const artifacts = (input.artifactRefs || []).map((item) => item.trim()).filter(Boolean);
|
|
7
|
+
const effectivePolicy = (0, policy_prompt_1.buildEffectivePolicyPromptSection)(input.effectivePolicy, {
|
|
8
|
+
heading: '',
|
|
9
|
+
defaultLine: 'No confirmed special policy is set.',
|
|
10
|
+
}).trim();
|
|
11
|
+
const projectName = input.projectName?.trim() || '(not set)';
|
|
12
|
+
const workspacePath = input.workspacePath?.trim() || '(not set)';
|
|
13
|
+
return `You are ${input.orchestratorName} for Funolio.
|
|
14
|
+
|
|
15
|
+
A worker is blocked. You are the coordinator for this handoff, not the worker who performs the original task.
|
|
16
|
+
|
|
17
|
+
BLOCKED WORKER
|
|
18
|
+
Worker: ${input.workerName}
|
|
19
|
+
Role: ${input.workerRole}
|
|
20
|
+
Current TODO: ${input.taskTitle}
|
|
21
|
+
Task prompt:
|
|
22
|
+
${input.taskPrompt}
|
|
23
|
+
|
|
24
|
+
BLOCKER DETAILS
|
|
25
|
+
Summary: ${input.blockerSummary}
|
|
26
|
+
Checked: ${input.checkedContext}
|
|
27
|
+
Exact user question: ${input.userQuestion}
|
|
28
|
+
|
|
29
|
+
RUNTIME CONTEXT
|
|
30
|
+
Project: ${projectName}
|
|
31
|
+
Workspace: ${workspacePath}
|
|
32
|
+
Effective policy:
|
|
33
|
+
${effectivePolicy}
|
|
34
|
+
Artifacts: ${artifacts.length > 0 ? artifacts.join('; ') : 'none provided'}
|
|
35
|
+
|
|
36
|
+
YOUR JOB
|
|
37
|
+
- First decide whether the blocker can be resolved from existing context, project data, policy, artifacts, or prior conversation.
|
|
38
|
+
- If it can be resolved without the user, return a concise resolution that the blocked worker can use directly.
|
|
39
|
+
- If user clarification is still required, ask one concise direct question based on the exact user question above.
|
|
40
|
+
- Do not do the blocked worker's task yourself.
|
|
41
|
+
- Do not rewrite the whole workflow.
|
|
42
|
+
|
|
43
|
+
OUTPUT
|
|
44
|
+
- Either provide a concise worker resolution, or ask the user the one question needed to unblock the task.`;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=orchestrator-blocked-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator-blocked-prompt.js","sourceRoot":"","sources":["../../src/orchestration/orchestrator-blocked-prompt.ts"],"names":[],"mappings":";;AAmBA,oFAyCC;AA3DD,mDAAoE;AAkBpE,SAAgB,oCAAoC,CAAC,KAA2C;IAC9F,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxF,MAAM,eAAe,GAAG,IAAA,iDAAiC,EAAC,KAAK,CAAC,eAAe,EAAE;QAC/E,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,qCAAqC;KACnD,CAAC,CAAC,IAAI,EAAE,CAAC;IACV,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,WAAW,CAAC;IAC7D,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,WAAW,CAAC;IAEjE,OAAO,WAAW,KAAK,CAAC,gBAAgB;;;;;UAKhC,KAAK,CAAC,UAAU;QAClB,KAAK,CAAC,UAAU;gBACR,KAAK,CAAC,SAAS;;EAE7B,KAAK,CAAC,UAAU;;;WAGP,KAAK,CAAC,cAAc;WACpB,KAAK,CAAC,cAAc;uBACR,KAAK,CAAC,YAAY;;;WAG9B,WAAW;aACT,aAAa;;EAExB,eAAe;aACJ,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe;;;;;;;;;;2GAUiC,CAAC;AAC5G,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TodoTaskRow, OrchestrationPolicy } from '../local-data';
|
|
2
|
+
export interface OrchestratorFinalResponsePromptInput {
|
|
3
|
+
orchestratorName: string;
|
|
4
|
+
projectName?: string | null;
|
|
5
|
+
workspacePath?: string | null;
|
|
6
|
+
effectivePolicy: OrchestrationPolicy;
|
|
7
|
+
completedTasks: TodoTaskRow[];
|
|
8
|
+
}
|
|
9
|
+
export declare function buildOrchestratorFinalResponsePrompt(input: OrchestratorFinalResponsePromptInput): string;
|
|
10
|
+
//# sourceMappingURL=orchestrator-final-response-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator-final-response-prompt.d.ts","sourceRoot":"","sources":["../../src/orchestration/orchestrator-final-response-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGtE,MAAM,WAAW,oCAAoC;IACnD,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,mBAAmB,CAAC;IACrC,cAAc,EAAE,WAAW,EAAE,CAAC;CAC/B;AAED,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,oCAAoC,GAAG,MAAM,CAkCxG"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildOrchestratorFinalResponsePrompt = buildOrchestratorFinalResponsePrompt;
|
|
4
|
+
const policy_prompt_1 = require("./policy-prompt");
|
|
5
|
+
function buildOrchestratorFinalResponsePrompt(input) {
|
|
6
|
+
const projectName = input.projectName?.trim() || '(not set)';
|
|
7
|
+
const workspacePath = input.workspacePath?.trim() || '(not set)';
|
|
8
|
+
const effectivePolicy = (0, policy_prompt_1.buildEffectivePolicyPromptSection)(input.effectivePolicy, {
|
|
9
|
+
heading: '',
|
|
10
|
+
defaultLine: 'No confirmed special policy is set.',
|
|
11
|
+
}).trim();
|
|
12
|
+
const taskLines = input.completedTasks.map((task, index) => [
|
|
13
|
+
`${index + 1}. ${task.title}`,
|
|
14
|
+
`Owner: ${task.owner_name || 'Unknown'}`,
|
|
15
|
+
`Task type: ${task.task_type || 'general'}`,
|
|
16
|
+
task.output_summary ? `Output summary: ${task.output_summary}` : null,
|
|
17
|
+
task.handoff_prompt ? `Handoff to orchestrator: ${task.handoff_prompt}` : null,
|
|
18
|
+
].filter(Boolean).join('\n')).join('\n\n');
|
|
19
|
+
return `You are ${input.orchestratorName} for Funolio.
|
|
20
|
+
|
|
21
|
+
The worker TODO chain is complete. Your job is to respond to the user with the final result.
|
|
22
|
+
|
|
23
|
+
RUNTIME CONTEXT
|
|
24
|
+
Project: ${projectName}
|
|
25
|
+
Workspace: ${workspacePath}
|
|
26
|
+
Effective policy:
|
|
27
|
+
${effectivePolicy}
|
|
28
|
+
|
|
29
|
+
COMPLETED TASKS
|
|
30
|
+
${taskLines || '(none)'}
|
|
31
|
+
|
|
32
|
+
RESPONSE RULES
|
|
33
|
+
- Give the user the final result directly.
|
|
34
|
+
- Be concise and outcome-focused.
|
|
35
|
+
- Mention the most important artifact or status only if it helps the user.
|
|
36
|
+
- Do not explain internal TODO mechanics unless necessary.
|
|
37
|
+
- Do not invent details not present in the completed task summaries or handoffs.`;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=orchestrator-final-response-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator-final-response-prompt.js","sourceRoot":"","sources":["../../src/orchestration/orchestrator-final-response-prompt.ts"],"names":[],"mappings":";;AAWA,oFAkCC;AA5CD,mDAAoE;AAUpE,SAAgB,oCAAoC,CAAC,KAA2C;IAC9F,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,WAAW,CAAC;IAC7D,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,WAAW,CAAC;IACjE,MAAM,eAAe,GAAG,IAAA,iDAAiC,EAAC,KAAK,CAAC,eAAe,EAAE;QAC/E,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,qCAAqC;KACnD,CAAC,CAAC,IAAI,EAAE,CAAC;IACV,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1D,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;QAC7B,UAAU,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;QACxC,cAAc,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE;QAC3C,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,mBAAmB,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI;QACrE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,4BAA4B,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI;KAC/E,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE3C,OAAO,WAAW,KAAK,CAAC,gBAAgB;;;;;WAK/B,WAAW;aACT,aAAa;;EAExB,eAAe;;;EAGf,SAAS,IAAI,QAAQ;;;;;;;iFAO0D,CAAC;AAClF,CAAC"}
|
|
@@ -13,13 +13,24 @@ export interface SpecialistInfo {
|
|
|
13
13
|
name: string;
|
|
14
14
|
roleLabel: string;
|
|
15
15
|
}
|
|
16
|
+
export interface FrontDoorSignalSummary {
|
|
17
|
+
matchedBots?: string[];
|
|
18
|
+
matchedRoles?: string[];
|
|
19
|
+
matchedWorkflows?: string[];
|
|
20
|
+
explicitTodoKeyword?: boolean;
|
|
21
|
+
explicitWorkflowKeyword?: boolean;
|
|
22
|
+
explicitDelegationKeyword?: boolean;
|
|
23
|
+
}
|
|
16
24
|
export declare function buildOrchestratorOperatingPrompt(input: {
|
|
17
25
|
orchestratorName: string;
|
|
18
26
|
primaryRole?: string | null;
|
|
19
27
|
specialists?: SpecialistInfo[];
|
|
20
28
|
workflowNames?: string[];
|
|
29
|
+
entryMode?: 'normal' | 'orchestration_bias';
|
|
30
|
+
signalSummary?: FrontDoorSignalSummary;
|
|
21
31
|
projectName?: string | null;
|
|
22
32
|
projectFolder?: string | null;
|
|
33
|
+
effectivePolicy?: string | null;
|
|
23
34
|
recentSummary?: string | null;
|
|
24
35
|
lastFiveTurns?: string | null;
|
|
25
36
|
}): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator-operating-prompt.d.ts","sourceRoot":"","sources":["../../src/orchestration/orchestrator-operating-prompt.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GACjC,SAAS,GACT,cAAc,GACd,UAAU,GACV,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,yBAAyB,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,CAAC;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE;IACtD,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"orchestrator-operating-prompt.d.ts","sourceRoot":"","sources":["../../src/orchestration/orchestrator-operating-prompt.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GACjC,SAAS,GACT,cAAc,GACd,UAAU,GACV,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,yBAAyB,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,CAAC;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE;IACtD,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,QAAQ,GAAG,oBAAoB,CAAC;IAC5C,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,GAAG,MAAM,CAgKT;AAED,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,MAAM,GAAG,6BAA6B,GAAG,IAAI,CAgDpG"}
|