plugin-agent-orchestrator 1.0.17 → 1.0.19
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/client/AIEmployeeSelect.d.ts +11 -0
- package/dist/client/AIEmployeesContext.d.ts +30 -0
- package/dist/client/AgentRunsTab.d.ts +2 -0
- package/dist/client/HarnessProfilesTab.d.ts +2 -0
- package/dist/client/OrchestratorSettings.d.ts +3 -0
- package/dist/client/RulesTab.d.ts +2 -0
- package/dist/client/TracingTab.d.ts +2 -0
- package/dist/client/index.d.ts +1 -0
- package/dist/client/index.js +1 -1
- package/dist/client/plugin.d.ts +6 -0
- package/dist/client/skill-hub/components/ExecutionHistory.d.ts +2 -0
- package/dist/client/skill-hub/components/ExecutionProgress.d.ts +20 -0
- package/dist/client/skill-hub/components/GitSkillImport.d.ts +7 -0
- package/dist/client/skill-hub/components/LoopSettings.d.ts +2 -0
- package/dist/client/skill-hub/components/SkillEditor.d.ts +7 -0
- package/dist/client/skill-hub/components/SkillManager.d.ts +2 -0
- package/dist/client/skill-hub/components/SkillMetrics.d.ts +2 -0
- package/dist/client/skill-hub/components/SkillTestPanel.d.ts +7 -0
- package/dist/client/skill-hub/index.d.ts +11 -0
- package/dist/client/skill-hub/locale.d.ts +3 -0
- package/dist/client/skill-hub/tools/InteractionSchemasProvider.d.ts +6 -0
- package/dist/client/skill-hub/tools/SkillHubCard.d.ts +3 -0
- package/dist/client/skill-hub/tools/loopTemplates.d.ts +22 -0
- package/dist/client/skill-hub/tools/registerSkillLoopCards.d.ts +1 -0
- package/dist/client/skill-hub/utils/jsonFields.d.ts +3 -0
- package/dist/client/tools/PlanApprovalCard.d.ts +3 -0
- package/dist/client/tools/registerOrchestratorCards.d.ts +1 -0
- package/dist/externalVersion.js +6 -6
- package/dist/index.d.ts +2 -0
- package/dist/server/collections/agent-execution-spans.d.ts +9 -0
- package/dist/server/collections/agent-harness-profiles.d.ts +2 -0
- package/dist/server/collections/agent-harness-profiles.js +89 -0
- package/dist/server/collections/agent-loop-events.d.ts +2 -0
- package/dist/server/collections/agent-loop-events.js +101 -0
- package/dist/server/collections/agent-loop-runs.d.ts +2 -0
- package/dist/server/collections/agent-loop-runs.js +188 -0
- package/dist/server/collections/agent-loop-steps.d.ts +2 -0
- package/dist/server/collections/agent-loop-steps.js +174 -0
- package/dist/server/collections/orchestrator-config.d.ts +2 -0
- package/dist/server/collections/orchestrator-config.js +7 -0
- package/dist/server/collections/orchestrator-logs.d.ts +8 -0
- package/dist/server/collections/skill-definitions.d.ts +3 -0
- package/dist/server/collections/skill-executions.d.ts +3 -0
- package/dist/server/collections/skill-executions.js +12 -0
- package/dist/server/collections/skill-loop-configs.d.ts +3 -0
- package/dist/server/collections/skill-loop-configs.js +94 -0
- package/dist/server/collections/skill-worker-configs.d.ts +3 -0
- package/dist/server/index.d.ts +1 -0
- package/dist/server/migrations/20260423000000-add-progress-fields.d.ts +4 -0
- package/dist/server/migrations/20260425000000-add-interaction-schema.d.ts +4 -0
- package/dist/server/migrations/20260427000000-add-tracing-detail-fields.d.ts +7 -0
- package/dist/server/migrations/20260427000000-change-packages-to-text.d.ts +4 -0
- package/dist/server/migrations/20260427000001-change-other-json-to-text.d.ts +4 -0
- package/dist/server/migrations/20260429000000-add-llm-fields.d.ts +7 -0
- package/dist/server/migrations/20260429000000-fix-inputargs-json-to-text.d.ts +16 -0
- package/dist/server/migrations/20260503000000-add-orchestrator-trace-fields.d.ts +7 -0
- package/dist/server/migrations/20260524000000-add-agent-loop-fields-to-skill-executions.d.ts +7 -0
- package/dist/server/migrations/20260524000000-add-agent-loop-fields-to-skill-executions.js +55 -0
- package/dist/server/migrations/20260524001000-add-plan-approval-and-harness-profiles.d.ts +12 -0
- package/dist/server/migrations/20260524001000-add-plan-approval-and-harness-profiles.js +162 -0
- package/dist/server/plugin.d.ts +16 -0
- package/dist/server/plugin.js +13 -0
- package/dist/server/resources/agent-loop.d.ts +3 -0
- package/dist/server/resources/agent-loop.js +205 -0
- package/dist/server/resources/tracing.d.ts +7 -0
- package/dist/server/services/AgentHarness.d.ts +42 -0
- package/dist/server/services/AgentHarness.js +565 -0
- package/dist/server/services/AgentLoopController.d.ts +205 -0
- package/dist/server/services/AgentLoopController.js +940 -0
- package/dist/server/services/AgentLoopRepository.d.ts +20 -0
- package/dist/server/services/AgentLoopRepository.js +210 -0
- package/dist/server/services/AgentLoopService.d.ts +149 -0
- package/dist/server/services/AgentLoopService.js +133 -0
- package/dist/server/services/AgentPlanValidator.d.ts +4 -0
- package/dist/server/services/AgentPlanValidator.js +99 -0
- package/dist/server/services/AgentPlannerService.d.ts +8 -0
- package/dist/server/services/AgentPlannerService.js +119 -0
- package/dist/server/services/AgentRegistryService.d.ts +13 -0
- package/dist/server/services/AgentRegistryService.js +178 -0
- package/dist/server/services/CodeValidator.d.ts +32 -0
- package/dist/server/services/ExecutionSpanService.d.ts +46 -0
- package/dist/server/services/FileManager.d.ts +28 -0
- package/dist/server/services/SandboxRunner.d.ts +41 -0
- package/dist/server/services/SkillManager.d.ts +6 -0
- package/dist/server/services/SkillRepositoryService.d.ts +22 -0
- package/dist/server/services/WorkerEnvManager.d.ts +26 -0
- package/dist/server/skill-hub/actions/git-import.d.ts +21 -0
- package/dist/server/skill-hub/mcp/McpController.d.ts +15 -0
- package/dist/server/skill-hub/plugin.d.ts +61 -0
- package/dist/server/skill-hub/plugin.js +152 -54
- package/dist/server/skill-hub/tasks/SkillExecutionTask.d.ts +16 -0
- package/dist/server/skill-hub/tasks/SkillExecutionTask.js +15 -0
- package/dist/server/skill-hub/utils/json-fields.d.ts +7 -0
- package/dist/server/tools/agent-loop.d.ts +235 -0
- package/dist/server/tools/agent-loop.js +406 -0
- package/dist/server/tools/delegate-task.d.ts +19 -0
- package/dist/server/tools/delegate-task.js +19 -368
- package/dist/server/tools/external-rag-search.d.ts +42 -0
- package/dist/server/tools/orchestrator-plan.d.ts +205 -0
- package/dist/server/tools/orchestrator-plan.js +291 -0
- package/dist/server/tools/skill-execute.d.ts +36 -0
- package/dist/server/tools/skill-execute.js +2 -0
- package/package.json +1 -1
- package/src/client/AgentRunsTab.tsx +764 -0
- package/src/client/HarnessProfilesTab.tsx +247 -0
- package/src/client/OrchestratorSettings.tsx +40 -2
- package/src/client/RulesTab.tsx +103 -6
- package/src/client/plugin.tsx +27 -54
- package/src/client/skill-hub/components/LoopSettings.tsx +331 -0
- package/src/client/skill-hub/index.tsx +51 -75
- package/src/client/skill-hub/tools/InteractionSchemasProvider.tsx +56 -16
- package/src/client/skill-hub/tools/SkillHubCard.tsx +35 -4
- package/src/client/skill-hub/tools/loopTemplates.ts +52 -0
- package/src/client/skill-hub/tools/registerSkillLoopCards.ts +58 -0
- package/src/client/tools/PlanApprovalCard.tsx +175 -0
- package/src/client/tools/registerOrchestratorCards.ts +7 -0
- package/src/server/collections/agent-harness-profiles.ts +59 -0
- package/src/server/collections/agent-loop-events.ts +71 -0
- package/src/server/collections/agent-loop-runs.ts +158 -0
- package/src/server/collections/agent-loop-steps.ts +144 -0
- package/src/server/collections/orchestrator-config.ts +7 -0
- package/src/server/collections/skill-executions.ts +63 -51
- package/src/server/collections/skill-loop-configs.ts +65 -0
- package/src/server/migrations/20260524000000-add-agent-loop-fields-to-skill-executions.ts +30 -0
- package/src/server/migrations/20260524001000-add-plan-approval-and-harness-profiles.ts +142 -0
- package/src/server/plugin.ts +15 -0
- package/src/server/resources/agent-loop.ts +183 -0
- package/src/server/services/AgentHarness.ts +663 -0
- package/src/server/services/AgentLoopController.ts +1128 -0
- package/src/server/services/AgentLoopRepository.ts +194 -0
- package/src/server/services/AgentLoopService.ts +161 -0
- package/src/server/services/AgentPlanValidator.ts +73 -0
- package/src/server/services/AgentPlannerService.ts +93 -0
- package/src/server/services/AgentRegistryService.ts +169 -0
- package/src/server/services/ExecutionSpanService.ts +2 -0
- package/src/server/skill-hub/plugin.ts +897 -771
- package/src/server/skill-hub/tasks/SkillExecutionTask.ts +15 -0
- package/src/server/tools/agent-loop.ts +399 -0
- package/src/server/tools/delegate-task.ts +23 -485
- package/src/server/tools/orchestrator-plan.ts +279 -0
- package/src/server/tools/skill-execute.ts +68 -64
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
var __defProp = Object.defineProperty;
|
|
11
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
12
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
13
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
14
|
+
var __export = (target, all) => {
|
|
15
|
+
for (var name in all)
|
|
16
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
17
|
+
};
|
|
18
|
+
var __copyProps = (to, from, except, desc) => {
|
|
19
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
20
|
+
for (let key of __getOwnPropNames(from))
|
|
21
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
22
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
23
|
+
}
|
|
24
|
+
return to;
|
|
25
|
+
};
|
|
26
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
27
|
+
var orchestrator_plan_exports = {};
|
|
28
|
+
__export(orchestrator_plan_exports, {
|
|
29
|
+
createOrchestratorPlanTools: () => createOrchestratorPlanTools
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(orchestrator_plan_exports);
|
|
32
|
+
var import_zod = require("zod");
|
|
33
|
+
const stepSchema = import_zod.z.object({
|
|
34
|
+
id: import_zod.z.string().optional(),
|
|
35
|
+
key: import_zod.z.string().optional(),
|
|
36
|
+
planKey: import_zod.z.string().optional(),
|
|
37
|
+
parentStepId: import_zod.z.union([import_zod.z.string(), import_zod.z.number()]).optional(),
|
|
38
|
+
title: import_zod.z.string().optional(),
|
|
39
|
+
description: import_zod.z.string().optional(),
|
|
40
|
+
type: import_zod.z.enum(["reasoning", "skill", "tool", "sub_agent", "verification"]).optional(),
|
|
41
|
+
target: import_zod.z.string().optional(),
|
|
42
|
+
input: import_zod.z.any().optional(),
|
|
43
|
+
dependsOn: import_zod.z.array(import_zod.z.string()).optional(),
|
|
44
|
+
dependencyPolicy: import_zod.z.enum(["require_success", "allow_skipped"]).optional(),
|
|
45
|
+
maxAttempts: import_zod.z.number().int().min(1).max(10).optional(),
|
|
46
|
+
metadata: import_zod.z.any().optional()
|
|
47
|
+
});
|
|
48
|
+
const policySchema = import_zod.z.object({
|
|
49
|
+
maxIterations: import_zod.z.number().int().min(1).max(100).optional(),
|
|
50
|
+
maxStepAttempts: import_zod.z.number().int().min(1).max(10).optional(),
|
|
51
|
+
allowReplan: import_zod.z.boolean().optional(),
|
|
52
|
+
requireVerification: import_zod.z.boolean().optional(),
|
|
53
|
+
stopOnApprovalRequired: import_zod.z.boolean().optional()
|
|
54
|
+
}).optional();
|
|
55
|
+
function toolResult(status, payload) {
|
|
56
|
+
return {
|
|
57
|
+
status,
|
|
58
|
+
content: typeof payload === "string" ? payload : JSON.stringify(payload)
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function valuesFromCtx(ctx) {
|
|
62
|
+
var _a, _b, _c;
|
|
63
|
+
return ((_b = (_a = ctx == null ? void 0 : ctx.action) == null ? void 0 : _a.params) == null ? void 0 : _b.values) || ((_c = ctx == null ? void 0 : ctx.request) == null ? void 0 : _c.body) || {};
|
|
64
|
+
}
|
|
65
|
+
function currentUserId(ctx) {
|
|
66
|
+
var _a, _b, _c, _d;
|
|
67
|
+
return ((_b = (_a = ctx == null ? void 0 : ctx.state) == null ? void 0 : _a.currentUser) == null ? void 0 : _b.id) || ((_d = (_c = ctx == null ? void 0 : ctx.auth) == null ? void 0 : _c.user) == null ? void 0 : _d.id);
|
|
68
|
+
}
|
|
69
|
+
function resolveSessionId(ctx, args) {
|
|
70
|
+
var _a, _b, _c;
|
|
71
|
+
const values = valuesFromCtx(ctx);
|
|
72
|
+
return (args == null ? void 0 : args.sessionId) || values.sessionId || ((_b = (_a = ctx == null ? void 0 : ctx.action) == null ? void 0 : _a.params) == null ? void 0 : _b.sessionId) || ((_c = ctx == null ? void 0 : ctx.state) == null ? void 0 : _c.sessionId);
|
|
73
|
+
}
|
|
74
|
+
function resolveMessageId(ctx, args) {
|
|
75
|
+
var _a, _b;
|
|
76
|
+
const values = valuesFromCtx(ctx);
|
|
77
|
+
return (args == null ? void 0 : args.messageId) || values.messageId || ((_b = (_a = ctx == null ? void 0 : ctx.action) == null ? void 0 : _a.params) == null ? void 0 : _b.messageId);
|
|
78
|
+
}
|
|
79
|
+
function normalizeEmployeeUsername(raw) {
|
|
80
|
+
if (!raw) return null;
|
|
81
|
+
if (typeof raw === "string") return raw;
|
|
82
|
+
return raw.username || raw.aiEmployeeUsername || raw.name || null;
|
|
83
|
+
}
|
|
84
|
+
async function resolveLeaderUsername(ctx, plugin, args) {
|
|
85
|
+
var _a, _b, _c, _d, _e, _f;
|
|
86
|
+
const values = valuesFromCtx(ctx);
|
|
87
|
+
const direct = normalizeEmployeeUsername(
|
|
88
|
+
(args == null ? void 0 : args.leaderUsername) || (ctx == null ? void 0 : ctx._currentAIEmployee) || ((_a = ctx == null ? void 0 : ctx.state) == null ? void 0 : _a.currentAIEmployee) || ((_c = (_b = ctx == null ? void 0 : ctx.runtime) == null ? void 0 : _b.context) == null ? void 0 : _c.currentAIEmployee) || values.aiEmployee
|
|
89
|
+
);
|
|
90
|
+
if (direct) return direct;
|
|
91
|
+
const sessionId = resolveSessionId(ctx, args);
|
|
92
|
+
if (!sessionId) return void 0;
|
|
93
|
+
try {
|
|
94
|
+
const repo = ((_e = (_d = ctx == null ? void 0 : ctx.db) == null ? void 0 : _d.getRepository) == null ? void 0 : _e.call(_d, "aiConversations")) || plugin.db.getRepository("aiConversations");
|
|
95
|
+
const conversation = await repo.findOne({ filter: { sessionId } });
|
|
96
|
+
return normalizeEmployeeUsername((conversation == null ? void 0 : conversation.aiEmployeeUsername) || ((_f = conversation == null ? void 0 : conversation.get) == null ? void 0 : _f.call(conversation, "aiEmployeeUsername")));
|
|
97
|
+
} catch {
|
|
98
|
+
return void 0;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function summarizePlan(steps) {
|
|
102
|
+
return (steps || []).map((step) => ({
|
|
103
|
+
id: step.id,
|
|
104
|
+
planKey: step.planKey,
|
|
105
|
+
title: step.title,
|
|
106
|
+
description: step.description,
|
|
107
|
+
type: step.type,
|
|
108
|
+
target: step.target,
|
|
109
|
+
dependsOn: step.dependsOn || [],
|
|
110
|
+
status: step.status
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
function inferTargetAgent(args) {
|
|
114
|
+
if (args == null ? void 0 : args.targetAgent) return args.targetAgent;
|
|
115
|
+
const plan = Array.isArray(args == null ? void 0 : args.plan) ? args.plan : [];
|
|
116
|
+
const subAgentStep = plan.find((step) => (step == null ? void 0 : step.type) === "sub_agent" && (step == null ? void 0 : step.target));
|
|
117
|
+
return subAgentStep == null ? void 0 : subAgentStep.target;
|
|
118
|
+
}
|
|
119
|
+
async function resolveHarnessTag(plugin, leaderUsername, targetAgent, args) {
|
|
120
|
+
var _a, _b;
|
|
121
|
+
const direct = String((args == null ? void 0 : args.harnessTag) || ((_a = args == null ? void 0 : args.metadata) == null ? void 0 : _a.harnessTag) || "").trim();
|
|
122
|
+
if (direct) return direct;
|
|
123
|
+
if (!leaderUsername || !targetAgent) return "default";
|
|
124
|
+
try {
|
|
125
|
+
const repo = plugin.db.getRepository("orchestratorConfig");
|
|
126
|
+
const config = await repo.findOne({
|
|
127
|
+
filter: {
|
|
128
|
+
leaderUsername,
|
|
129
|
+
subAgentUsername: targetAgent,
|
|
130
|
+
enabled: true
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
return (config == null ? void 0 : config.harnessTag) || ((_b = config == null ? void 0 : config.get) == null ? void 0 : _b.call(config, "harnessTag")) || "default";
|
|
134
|
+
} catch {
|
|
135
|
+
return "default";
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function createOrchestratorPlanTools(plugin, service) {
|
|
139
|
+
return [
|
|
140
|
+
{
|
|
141
|
+
scope: "CUSTOM",
|
|
142
|
+
execution: "backend",
|
|
143
|
+
defaultPermission: "ALLOW",
|
|
144
|
+
introduction: {
|
|
145
|
+
title: "Orchestrator - Plan Goal",
|
|
146
|
+
about: "Create a draft plan and pause for explicit user approval before execution."
|
|
147
|
+
},
|
|
148
|
+
definition: {
|
|
149
|
+
name: "orchestrator_plan_goal",
|
|
150
|
+
description: "Create or revise a persistent orchestrator run in waiting_plan_approval state. Use this before any multi-step/sub-agent execution. Provide a concrete plan with small executable steps and stable planKey dependencies whenever possible. Pass runId only when revising after user-requested changes. This tool does not execute the plan.",
|
|
151
|
+
schema: import_zod.z.object({
|
|
152
|
+
goal: import_zod.z.string().min(1).describe("The user goal to complete."),
|
|
153
|
+
runId: import_zod.z.union([import_zod.z.string(), import_zod.z.number()]).optional().describe("Existing run id to revise after the user requested plan changes. Omit for a new run."),
|
|
154
|
+
leaderUsername: import_zod.z.string().optional().describe("Leader AI employee username. Usually omit; inferred from chat."),
|
|
155
|
+
sessionId: import_zod.z.string().optional(),
|
|
156
|
+
messageId: import_zod.z.string().optional(),
|
|
157
|
+
harnessTag: import_zod.z.string().optional().default("default").describe("Harness profile tag, for example default, safe, or file-heavy."),
|
|
158
|
+
targetAgent: import_zod.z.string().optional().describe("Optional sub-agent username for generated fallback plans."),
|
|
159
|
+
plannerModel: import_zod.z.string().optional(),
|
|
160
|
+
policy: policySchema,
|
|
161
|
+
metadata: import_zod.z.any().optional(),
|
|
162
|
+
plan: import_zod.z.array(stepSchema).optional().describe("Draft plan steps. Tool/sub_agent steps should include target. Dependencies must reference planKey values.")
|
|
163
|
+
})
|
|
164
|
+
},
|
|
165
|
+
invoke: async (ctx, args) => {
|
|
166
|
+
try {
|
|
167
|
+
const leaderUsername = await resolveLeaderUsername(ctx, plugin, args);
|
|
168
|
+
const targetAgent = inferTargetAgent(args);
|
|
169
|
+
const harnessTag = await resolveHarnessTag(plugin, leaderUsername, targetAgent, args);
|
|
170
|
+
const detail = await service.planGoal({
|
|
171
|
+
goal: args.goal,
|
|
172
|
+
runId: args.runId,
|
|
173
|
+
leaderUsername,
|
|
174
|
+
sessionId: resolveSessionId(ctx, args),
|
|
175
|
+
messageId: resolveMessageId(ctx, args),
|
|
176
|
+
userId: currentUserId(ctx),
|
|
177
|
+
policy: args.policy,
|
|
178
|
+
metadata: args.metadata,
|
|
179
|
+
plan: Array.isArray(args.plan) ? args.plan : void 0,
|
|
180
|
+
plannerModel: args.plannerModel,
|
|
181
|
+
harnessTag,
|
|
182
|
+
targetAgent
|
|
183
|
+
});
|
|
184
|
+
return toolResult("success", {
|
|
185
|
+
run: detail.run,
|
|
186
|
+
plan: summarizePlan(detail.steps),
|
|
187
|
+
approval: {
|
|
188
|
+
required: true,
|
|
189
|
+
nextTool: "orchestrator_execute_plan",
|
|
190
|
+
args: {
|
|
191
|
+
runId: detail.run.id,
|
|
192
|
+
planVersion: detail.run.planVersion || 1,
|
|
193
|
+
plan: summarizePlan(detail.steps)
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
} catch (error) {
|
|
198
|
+
return toolResult("error", (error == null ? void 0 : error.message) || String(error));
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
scope: "CUSTOM",
|
|
204
|
+
execution: "backend",
|
|
205
|
+
defaultPermission: "ASK",
|
|
206
|
+
introduction: {
|
|
207
|
+
title: "Orchestrator - Execute Approved Plan",
|
|
208
|
+
about: "Execute a draft plan only after the user approves the plan card."
|
|
209
|
+
},
|
|
210
|
+
definition: {
|
|
211
|
+
name: "orchestrator_execute_plan",
|
|
212
|
+
description: "Execute a run created by orchestrator_plan_goal. This tool must be called with the runId after the user reviews the plan. The UI will ask the user to accept or reject the plan before invoke runs.",
|
|
213
|
+
schema: import_zod.z.object({
|
|
214
|
+
runId: import_zod.z.union([import_zod.z.string(), import_zod.z.number()]).describe("The agentLoopRuns id returned by orchestrator_plan_goal."),
|
|
215
|
+
planVersion: import_zod.z.number().int().optional(),
|
|
216
|
+
plan: import_zod.z.array(stepSchema).optional().describe("Optional copy of the displayed plan for the approval UI."),
|
|
217
|
+
reason: import_zod.z.string().optional()
|
|
218
|
+
})
|
|
219
|
+
},
|
|
220
|
+
invoke: async (ctx, args) => {
|
|
221
|
+
try {
|
|
222
|
+
const detail = await service.approvePlanAndExecute(args.runId, {
|
|
223
|
+
userId: currentUserId(ctx),
|
|
224
|
+
ctx,
|
|
225
|
+
reason: args.reason
|
|
226
|
+
});
|
|
227
|
+
return toolResult("success", detail);
|
|
228
|
+
} catch (error) {
|
|
229
|
+
return toolResult("error", (error == null ? void 0 : error.message) || String(error));
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
scope: "CUSTOM",
|
|
235
|
+
execution: "backend",
|
|
236
|
+
defaultPermission: "ALLOW",
|
|
237
|
+
introduction: {
|
|
238
|
+
title: "Orchestrator - Status",
|
|
239
|
+
about: "Read a run, its plan steps, events, and linked traces."
|
|
240
|
+
},
|
|
241
|
+
definition: {
|
|
242
|
+
name: "orchestrator_status",
|
|
243
|
+
description: "Read the current status of an orchestrator run without mutating it.",
|
|
244
|
+
schema: import_zod.z.object({
|
|
245
|
+
runId: import_zod.z.union([import_zod.z.string(), import_zod.z.number()])
|
|
246
|
+
})
|
|
247
|
+
},
|
|
248
|
+
invoke: async (_ctx, args) => {
|
|
249
|
+
try {
|
|
250
|
+
return toolResult("success", await service.getRunDetail(args.runId));
|
|
251
|
+
} catch (error) {
|
|
252
|
+
return toolResult("error", (error == null ? void 0 : error.message) || String(error));
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
scope: "CUSTOM",
|
|
258
|
+
execution: "backend",
|
|
259
|
+
defaultPermission: "ASK",
|
|
260
|
+
introduction: {
|
|
261
|
+
title: "Orchestrator - Cancel Run",
|
|
262
|
+
about: "Cancel an orchestrator run with user approval."
|
|
263
|
+
},
|
|
264
|
+
definition: {
|
|
265
|
+
name: "orchestrator_cancel",
|
|
266
|
+
description: "Cancel an orchestrator run. This mutates run state and therefore requires user approval.",
|
|
267
|
+
schema: import_zod.z.object({
|
|
268
|
+
runId: import_zod.z.union([import_zod.z.string(), import_zod.z.number()]),
|
|
269
|
+
reason: import_zod.z.string().optional()
|
|
270
|
+
})
|
|
271
|
+
},
|
|
272
|
+
invoke: async (ctx, args) => {
|
|
273
|
+
try {
|
|
274
|
+
return toolResult(
|
|
275
|
+
"success",
|
|
276
|
+
await service.cancelRun(args.runId, {
|
|
277
|
+
reason: args.reason,
|
|
278
|
+
userId: currentUserId(ctx)
|
|
279
|
+
})
|
|
280
|
+
);
|
|
281
|
+
} catch (error) {
|
|
282
|
+
return toolResult("error", (error == null ? void 0 : error.message) || String(error));
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
];
|
|
287
|
+
}
|
|
288
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
289
|
+
0 && (module.exports = {
|
|
290
|
+
createOrchestratorPlanTools
|
|
291
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export declare function createSkillExecuteTool(plugin: any): {
|
|
2
|
+
scope: string;
|
|
3
|
+
execution: string;
|
|
4
|
+
defaultPermission: string;
|
|
5
|
+
introduction: {
|
|
6
|
+
title: string;
|
|
7
|
+
about: string;
|
|
8
|
+
};
|
|
9
|
+
definition: {
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
schema: {
|
|
13
|
+
type: string;
|
|
14
|
+
properties: {
|
|
15
|
+
action: {
|
|
16
|
+
type: string;
|
|
17
|
+
enum: string[];
|
|
18
|
+
description: string;
|
|
19
|
+
};
|
|
20
|
+
skillName: {
|
|
21
|
+
type: string;
|
|
22
|
+
description: string;
|
|
23
|
+
};
|
|
24
|
+
input: {
|
|
25
|
+
type: string;
|
|
26
|
+
description: string;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
required: string[];
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
invoke(ctx: any, args: Record<string, any>, _id?: string): Promise<{
|
|
33
|
+
status: string;
|
|
34
|
+
content: string;
|
|
35
|
+
}>;
|
|
36
|
+
};
|
|
@@ -143,6 +143,8 @@ IMPORTANT: If the skill returns file download URLs, you MUST format them as clic
|
|
|
143
143
|
stderr: result.stderr,
|
|
144
144
|
files: result.files,
|
|
145
145
|
execId: result.execId,
|
|
146
|
+
agentLoopRunId: result.agentLoopRunId,
|
|
147
|
+
agentLoopStepId: result.agentLoopStepId,
|
|
146
148
|
durationMs: result.durationMs
|
|
147
149
|
})
|
|
148
150
|
};
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"displayName.zh-CN": "代理协调器",
|
|
5
5
|
"displayName.vi-VN": "Điều phối Agent",
|
|
6
6
|
"description": "Hierarchical Multi-Agent orchestration for NocoBase AI Employees. Enables Leader agents to delegate tasks to Sub-Agent employees without modifying core plugin-ai.",
|
|
7
|
-
"version": "1.0.
|
|
7
|
+
"version": "1.0.19",
|
|
8
8
|
"license": "Apache-2.0",
|
|
9
9
|
"main": "dist/server/index.js",
|
|
10
10
|
"keywords": [
|