plugin-agent-orchestrator 1.0.21 → 1.0.23

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.
Files changed (180) hide show
  1. package/client-v2.d.ts +2 -0
  2. package/client-v2.js +1 -0
  3. package/dist/client/index.js +1 -1
  4. package/dist/client-v2/214.723affb37c13bf7a.js +10 -0
  5. package/dist/client-v2/264.0533912e6c5ea2d7.js +10 -0
  6. package/dist/client-v2/41.1805b2edfaa4afe2.js +10 -0
  7. package/dist/client-v2/418.5ae055abf141820e.js +10 -0
  8. package/dist/client-v2/619.d99d3c9e61c99064.js +10 -0
  9. package/dist/client-v2/70.a15d7fcec7c41768.js +10 -0
  10. package/dist/client-v2/892.72db4161511c8a16.js +10 -0
  11. package/dist/client-v2/926.87f660b670d85bcc.js +10 -0
  12. package/dist/client-v2/index.js +10 -0
  13. package/dist/externalVersion.js +7 -6
  14. package/dist/locale/en-US.json +7 -0
  15. package/dist/locale/vi-VN.json +7 -0
  16. package/dist/locale/zh-CN.json +27 -0
  17. package/dist/server/migrations/20260615000000-normalize-ai-employee-tool-bindings.js +63 -0
  18. package/dist/server/plugin.js +41 -1
  19. package/dist/server/services/AgentHarness.js +52 -27
  20. package/dist/server/services/AgentLoopController.js +8 -2
  21. package/dist/server/services/AgentLoopService.js +1 -1
  22. package/dist/server/services/AgentRegistryService.js +53 -42
  23. package/dist/server/services/CircuitBreaker.js +7 -2
  24. package/dist/server/services/CodeValidator.js +48 -14
  25. package/dist/server/services/SandboxRunner.js +18 -14
  26. package/dist/server/skill-hub/plugin.js +44 -17
  27. package/dist/server/tools/delegate-task.js +7 -2
  28. package/dist/server/tools/skill-execute.js +33 -2
  29. package/dist/server/utils/ai-manager.js +51 -0
  30. package/dist/server/utils/ctx-utils.js +11 -0
  31. package/dist/server/utils/skill-settings.js +122 -0
  32. package/package.json +49 -45
  33. package/src/client/AIEmployeesContext.tsx +51 -14
  34. package/src/client/AgentRunsTab.tsx +767 -764
  35. package/src/client/HarnessProfilesTab.tsx +254 -247
  36. package/src/client/RulesTab.tsx +780 -716
  37. package/src/client/TracingTab.tsx +1 -0
  38. package/src/client/plugin.tsx +34 -27
  39. package/src/client/skill-hub/components/GitSkillImport.tsx +10 -3
  40. package/src/client/skill-hub/components/SkillMetrics.tsx +157 -124
  41. package/src/client/skill-hub/index.tsx +58 -51
  42. package/src/client/skill-hub/tools/InteractionSchemasProvider.tsx +132 -99
  43. package/src/client/skill-hub/tools/registerSkillLoopCards.ts +71 -58
  44. package/src/client/tools/registerOrchestratorCards.ts +17 -7
  45. package/src/client-v2/components/AIEmployeeSelect.tsx +47 -0
  46. package/src/client-v2/components/AIEmployeesContext.tsx +110 -0
  47. package/src/client-v2/components/AgentRunsTab.tsx +767 -0
  48. package/src/client-v2/components/HarnessProfilesTab.tsx +254 -0
  49. package/src/client-v2/components/RulesTab.tsx +782 -0
  50. package/src/client-v2/components/TracingTab.tsx +432 -0
  51. package/src/client-v2/hooks/useApiRequest.ts +114 -0
  52. package/src/client-v2/pages/AgentRunsPage.tsx +13 -0
  53. package/src/client-v2/pages/ExecutionHistoryPage.tsx +10 -0
  54. package/src/client-v2/pages/HarnessProfilesPage.tsx +10 -0
  55. package/src/client-v2/pages/LoopSettingsPage.tsx +10 -0
  56. package/src/client-v2/pages/RulesPage.tsx +13 -0
  57. package/src/client-v2/pages/SkillDefinitionsPage.tsx +10 -0
  58. package/src/client-v2/pages/SkillMetricsPage.tsx +10 -0
  59. package/src/client-v2/pages/TracingPage.tsx +13 -0
  60. package/src/client-v2/plugin.tsx +70 -0
  61. package/src/client-v2/skill-hub/components/ExecutionHistory.tsx +196 -0
  62. package/src/client-v2/skill-hub/components/FileLinkList.tsx +37 -0
  63. package/src/client-v2/skill-hub/components/GitSkillImport.tsx +539 -0
  64. package/src/client-v2/skill-hub/components/LoopSettings.tsx +331 -0
  65. package/src/client-v2/skill-hub/components/SkillEditor.tsx +453 -0
  66. package/src/client-v2/skill-hub/components/SkillManager.tsx +174 -0
  67. package/src/client-v2/skill-hub/components/SkillMetrics.tsx +157 -0
  68. package/src/client-v2/skill-hub/components/SkillTestPanel.tsx +135 -0
  69. package/src/client-v2/skill-hub/locale.ts +13 -0
  70. package/src/client-v2/skill-hub/tools/loopTemplates.ts +52 -0
  71. package/src/client-v2/skill-hub/utils/jsonFields.ts +41 -0
  72. package/src/client-v2/utils/jsonFields.ts +41 -0
  73. package/src/locale/en-US.json +7 -0
  74. package/src/locale/vi-VN.json +7 -0
  75. package/src/locale/zh-CN.json +27 -0
  76. package/src/server/__tests__/agent-registry-service.test.ts +147 -0
  77. package/src/server/__tests__/code-validator.test.ts +63 -0
  78. package/src/server/__tests__/skill-execute.test.ts +33 -0
  79. package/src/server/__tests__/skill-settings.test.ts +63 -0
  80. package/src/server/migrations/20260615000000-normalize-ai-employee-tool-bindings.ts +39 -0
  81. package/src/server/plugin.ts +68 -12
  82. package/src/server/services/AgentHarness.ts +49 -22
  83. package/src/server/services/AgentLoopController.ts +17 -6
  84. package/src/server/services/AgentLoopService.ts +1 -1
  85. package/src/server/services/AgentPlannerService.ts +10 -0
  86. package/src/server/services/AgentRegistryService.ts +89 -47
  87. package/src/server/services/CircuitBreaker.ts +10 -0
  88. package/src/server/services/CodeValidator.ts +237 -159
  89. package/src/server/services/SandboxRunner.ts +203 -189
  90. package/src/server/skill-hub/plugin.ts +933 -898
  91. package/src/server/tools/delegate-task.ts +12 -9
  92. package/src/server/tools/skill-execute.ts +194 -160
  93. package/src/server/utils/ai-manager.ts +24 -0
  94. package/src/server/utils/ctx-utils.ts +14 -0
  95. package/src/server/utils/skill-settings.ts +116 -0
  96. package/dist/client/AIEmployeeSelect.d.ts +0 -11
  97. package/dist/client/AIEmployeesContext.d.ts +0 -30
  98. package/dist/client/AgentRunsTab.d.ts +0 -2
  99. package/dist/client/HarnessProfilesTab.d.ts +0 -2
  100. package/dist/client/OrchestratorSettings.d.ts +0 -3
  101. package/dist/client/RulesTab.d.ts +0 -2
  102. package/dist/client/TracingTab.d.ts +0 -2
  103. package/dist/client/hooks/useRunEventStream.d.ts +0 -22
  104. package/dist/client/index.d.ts +0 -2
  105. package/dist/client/plugin.d.ts +0 -6
  106. package/dist/client/skill-hub/components/ExecutionHistory.d.ts +0 -2
  107. package/dist/client/skill-hub/components/ExecutionProgress.d.ts +0 -20
  108. package/dist/client/skill-hub/components/GitSkillImport.d.ts +0 -7
  109. package/dist/client/skill-hub/components/LoopSettings.d.ts +0 -2
  110. package/dist/client/skill-hub/components/SkillEditor.d.ts +0 -7
  111. package/dist/client/skill-hub/components/SkillManager.d.ts +0 -2
  112. package/dist/client/skill-hub/components/SkillMetrics.d.ts +0 -2
  113. package/dist/client/skill-hub/components/SkillTestPanel.d.ts +0 -7
  114. package/dist/client/skill-hub/index.d.ts +0 -11
  115. package/dist/client/skill-hub/locale.d.ts +0 -3
  116. package/dist/client/skill-hub/tools/InteractionSchemasProvider.d.ts +0 -6
  117. package/dist/client/skill-hub/tools/SkillHubCard.d.ts +0 -3
  118. package/dist/client/skill-hub/tools/loopTemplates.d.ts +0 -22
  119. package/dist/client/skill-hub/tools/registerSkillLoopCards.d.ts +0 -1
  120. package/dist/client/skill-hub/utils/jsonFields.d.ts +0 -3
  121. package/dist/client/tools/PlanApprovalCard.d.ts +0 -3
  122. package/dist/client/tools/registerOrchestratorCards.d.ts +0 -1
  123. package/dist/index.d.ts +0 -2
  124. package/dist/server/collections/agent-execution-spans.d.ts +0 -9
  125. package/dist/server/collections/agent-harness-profiles.d.ts +0 -2
  126. package/dist/server/collections/agent-loop-events.d.ts +0 -2
  127. package/dist/server/collections/agent-loop-runs.d.ts +0 -2
  128. package/dist/server/collections/agent-loop-steps.d.ts +0 -2
  129. package/dist/server/collections/orchestrator-config.d.ts +0 -2
  130. package/dist/server/collections/orchestrator-logs.d.ts +0 -8
  131. package/dist/server/collections/skill-definitions.d.ts +0 -3
  132. package/dist/server/collections/skill-executions.d.ts +0 -3
  133. package/dist/server/collections/skill-loop-configs.d.ts +0 -3
  134. package/dist/server/collections/skill-worker-configs.d.ts +0 -3
  135. package/dist/server/migrations/20260423000000-add-progress-fields.d.ts +0 -4
  136. package/dist/server/migrations/20260425000000-add-interaction-schema.d.ts +0 -4
  137. package/dist/server/migrations/20260427000000-add-tracing-detail-fields.d.ts +0 -7
  138. package/dist/server/migrations/20260427000000-change-packages-to-text.d.ts +0 -4
  139. package/dist/server/migrations/20260427000001-change-other-json-to-text.d.ts +0 -4
  140. package/dist/server/migrations/20260429000000-add-llm-fields.d.ts +0 -7
  141. package/dist/server/migrations/20260429000000-fix-inputargs-json-to-text.d.ts +0 -16
  142. package/dist/server/migrations/20260503000000-add-orchestrator-trace-fields.d.ts +0 -7
  143. package/dist/server/migrations/20260524000000-add-agent-loop-fields-to-skill-executions.d.ts +0 -7
  144. package/dist/server/migrations/20260524001000-add-plan-approval-and-harness-profiles.d.ts +0 -12
  145. package/dist/server/migrations/20260601000000-add-token-fields.d.ts +0 -7
  146. package/dist/server/plugin.d.ts +0 -16
  147. package/dist/server/resources/agent-loop.d.ts +0 -3
  148. package/dist/server/resources/tracing.d.ts +0 -7
  149. package/dist/server/services/AgentHarness.d.ts +0 -44
  150. package/dist/server/services/AgentLoopController.d.ts +0 -218
  151. package/dist/server/services/AgentLoopRepository.d.ts +0 -20
  152. package/dist/server/services/AgentLoopService.d.ts +0 -159
  153. package/dist/server/services/AgentPlanValidator.d.ts +0 -4
  154. package/dist/server/services/AgentPlannerService.d.ts +0 -8
  155. package/dist/server/services/AgentRegistryService.d.ts +0 -21
  156. package/dist/server/services/CircuitBreaker.d.ts +0 -40
  157. package/dist/server/services/CodeValidator.d.ts +0 -32
  158. package/dist/server/services/ContextAggregator.d.ts +0 -45
  159. package/dist/server/services/ExecutionSpanService.d.ts +0 -46
  160. package/dist/server/services/FileManager.d.ts +0 -28
  161. package/dist/server/services/RunEventBus.d.ts +0 -9
  162. package/dist/server/services/SandboxRunner.d.ts +0 -41
  163. package/dist/server/services/SkillManager.d.ts +0 -6
  164. package/dist/server/services/SkillRepositoryService.d.ts +0 -22
  165. package/dist/server/services/TokenTracker.d.ts +0 -62
  166. package/dist/server/services/WorkerEnvManager.d.ts +0 -26
  167. package/dist/server/skill-hub/actions/git-import.d.ts +0 -21
  168. package/dist/server/skill-hub/mcp/McpController.d.ts +0 -15
  169. package/dist/server/skill-hub/plugin.d.ts +0 -61
  170. package/dist/server/skill-hub/tasks/SkillExecutionTask.d.ts +0 -16
  171. package/dist/server/skill-hub/utils/json-fields.d.ts +0 -7
  172. package/dist/server/tools/agent-loop.d.ts +0 -235
  173. package/dist/server/tools/delegate-task.d.ts +0 -19
  174. package/dist/server/tools/external-rag-search.d.ts +0 -42
  175. package/dist/server/tools/orchestrator-plan.d.ts +0 -205
  176. package/dist/server/tools/skill-execute.d.ts +0 -36
  177. package/dist/server/types.d.ts +0 -47
  178. package/dist/server/utils/ctx-utils.d.ts +0 -30
  179. package/dist/server/utils/logging.d.ts +0 -6
  180. /package/{dist/server/index.d.ts → src/client-v2/index.tsx} +0 -0
@@ -0,0 +1,254 @@
1
+ import React from 'react';
2
+ import { Button, Card, Drawer, Form, Input, Popconfirm, Space, Switch, Table, Tag, Typography, message } from 'antd';
3
+ import { DeleteOutlined, EditOutlined, PlusOutlined } from '@ant-design/icons';
4
+ import { useApiClient as useAPIClient, useRequest } from '../hooks/useApiRequest';
5
+
6
+ const { Text } = Typography;
7
+
8
+ const parseSettings = (value: string) => {
9
+ const text = String(value || '').trim();
10
+ if (!text) return {};
11
+ return JSON.parse(text);
12
+ };
13
+
14
+ export const HarnessProfilesTab: React.FC = () => {
15
+ const api = useAPIClient();
16
+ const [open, setOpen] = React.useState(false);
17
+ const [editingRecord, setEditingRecord] = React.useState<any>(null);
18
+ const [form] = Form.useForm();
19
+
20
+ const { data, loading, refresh } = useRequest({
21
+ url: 'agentHarnessProfiles:list',
22
+ params: {
23
+ sort: ['tag'],
24
+ pageSize: 100,
25
+ },
26
+ });
27
+
28
+ const rows = React.useMemo(() => {
29
+ const raw = (data as any)?.data;
30
+ return Array.isArray(raw) ? raw : [];
31
+ }, [data]);
32
+
33
+ const openDrawer = (record?: any) => {
34
+ setEditingRecord(record || null);
35
+ form.resetFields();
36
+ form.setFieldsValue(
37
+ record
38
+ ? {
39
+ ...record,
40
+ settingsText: JSON.stringify(record.settings || {}, null, 2),
41
+ }
42
+ : {
43
+ tag: '',
44
+ title: '',
45
+ description: '',
46
+ enabled: true,
47
+ settingsText: JSON.stringify(
48
+ {
49
+ requirePlanApproval: true,
50
+ allowSubAgents: true,
51
+ allowToolCalls: true,
52
+ maxParallelSubAgents: 3,
53
+ maxControllerSteps: 100,
54
+ },
55
+ null,
56
+ 2,
57
+ ),
58
+ },
59
+ );
60
+ setOpen(true);
61
+ };
62
+
63
+ const closeDrawer = () => {
64
+ setOpen(false);
65
+ setEditingRecord(null);
66
+ };
67
+
68
+ const saveProfile = async (values: any) => {
69
+ let settings: any;
70
+ try {
71
+ settings = parseSettings(values.settingsText);
72
+ } catch (error: any) {
73
+ message.error(`Settings JSON is invalid: ${error?.message || error}`);
74
+ return;
75
+ }
76
+
77
+ const payload = {
78
+ tag: String(values.tag || '').trim(),
79
+ title: values.title,
80
+ description: values.description,
81
+ enabled: values.enabled !== false,
82
+ settings,
83
+ };
84
+
85
+ try {
86
+ if (editingRecord) {
87
+ await api.request({
88
+ url: 'agentHarnessProfiles:update',
89
+ method: 'put',
90
+ params: { filterByTk: editingRecord.id },
91
+ data: payload,
92
+ });
93
+ message.success('Harness profile updated');
94
+ } else {
95
+ await api.request({
96
+ url: 'agentHarnessProfiles:create',
97
+ method: 'post',
98
+ data: payload,
99
+ });
100
+ message.success('Harness profile created');
101
+ }
102
+ closeDrawer();
103
+ refresh();
104
+ } catch (error: any) {
105
+ const msg = error?.response?.data?.errors?.[0]?.message || error?.message || 'unknown error';
106
+ message.error(`Save failed: ${msg}`);
107
+ }
108
+ };
109
+
110
+ const deleteProfile = async (id: string | number) => {
111
+ try {
112
+ await api.request({
113
+ url: 'agentHarnessProfiles:destroy',
114
+ method: 'delete',
115
+ params: { filterByTk: id },
116
+ });
117
+ message.success('Harness profile deleted');
118
+ refresh();
119
+ } catch (error: any) {
120
+ message.error(`Delete failed: ${error?.message || 'unknown error'}`);
121
+ }
122
+ };
123
+
124
+ const columns = [
125
+ {
126
+ title: 'Tag',
127
+ dataIndex: 'tag',
128
+ key: 'tag',
129
+ width: 140,
130
+ render: (tag: string) => <Tag color="blue">{tag}</Tag>,
131
+ },
132
+ {
133
+ title: 'Title',
134
+ dataIndex: 'title',
135
+ key: 'title',
136
+ render: (title: string, record: any) => title || record.tag,
137
+ },
138
+ {
139
+ title: 'Enabled',
140
+ dataIndex: 'enabled',
141
+ key: 'enabled',
142
+ width: 90,
143
+ render: (enabled: boolean, record: any) => (
144
+ <Switch
145
+ size="small"
146
+ checked={enabled !== false}
147
+ onChange={async (checked) => {
148
+ await api.request({
149
+ url: 'agentHarnessProfiles:update',
150
+ method: 'put',
151
+ params: { filterByTk: record.id },
152
+ data: { enabled: checked },
153
+ });
154
+ refresh();
155
+ }}
156
+ />
157
+ ),
158
+ },
159
+ {
160
+ title: 'Settings',
161
+ key: 'settings',
162
+ render: (_: any, record: any) => (
163
+ <Space size={4} wrap>
164
+ {Object.entries(record.settings || {})
165
+ .slice(0, 5)
166
+ .map(([key, value]) => (
167
+ <Tag key={key}>
168
+ {key}: {String(value)}
169
+ </Tag>
170
+ ))}
171
+ </Space>
172
+ ),
173
+ },
174
+ {
175
+ title: 'Actions',
176
+ key: 'actions',
177
+ width: 150,
178
+ render: (_: any, record: any) => (
179
+ <Space>
180
+ <Button type="link" size="small" icon={<EditOutlined />} onClick={() => openDrawer(record)}>
181
+ Edit
182
+ </Button>
183
+ <Popconfirm title="Delete this profile?" onConfirm={() => deleteProfile(record.id)}>
184
+ <Button type="link" size="small" danger icon={<DeleteOutlined />}>
185
+ Delete
186
+ </Button>
187
+ </Popconfirm>
188
+ </Space>
189
+ ),
190
+ },
191
+ ];
192
+
193
+ return (
194
+ <div>
195
+ <Card bordered={false}>
196
+ <Space direction="vertical" size={16} style={{ width: '100%' }}>
197
+ <div style={{ display: 'flex', justifyContent: 'space-between', gap: 16 }}>
198
+ <Text type="secondary">
199
+ Harness profiles are selected by orchestration rules through the harnessTag field.
200
+ </Text>
201
+ <Button type="primary" icon={<PlusOutlined />} onClick={() => openDrawer()}>
202
+ New Profile
203
+ </Button>
204
+ </div>
205
+ <Table
206
+ rowKey="id"
207
+ loading={loading}
208
+ dataSource={rows}
209
+ columns={columns}
210
+ pagination={false}
211
+ scroll={{ x: 'max-content' }}
212
+ />
213
+ </Space>
214
+ </Card>
215
+
216
+ <Drawer
217
+ title={editingRecord ? 'Edit Harness Profile' : 'New Harness Profile'}
218
+ width={560}
219
+ open={open}
220
+ onClose={closeDrawer}
221
+ extra={
222
+ <Space>
223
+ <Button onClick={closeDrawer}>Cancel</Button>
224
+ <Button type="primary" onClick={() => form.submit()}>
225
+ Save
226
+ </Button>
227
+ </Space>
228
+ }
229
+ >
230
+ <Form form={form} layout="vertical" onFinish={saveProfile}>
231
+ <Form.Item name="tag" label="Tag" rules={[{ required: true, message: 'Tag is required' }]}>
232
+ <Input placeholder="default" disabled={editingRecord?.tag === 'default'} />
233
+ </Form.Item>
234
+ <Form.Item name="title" label="Title">
235
+ <Input />
236
+ </Form.Item>
237
+ <Form.Item name="description" label="Description">
238
+ <Input.TextArea rows={3} />
239
+ </Form.Item>
240
+ <Form.Item
241
+ name="settingsText"
242
+ label="Settings JSON"
243
+ rules={[{ required: true, message: 'Settings JSON is required' }]}
244
+ >
245
+ <Input.TextArea rows={12} spellCheck={false} />
246
+ </Form.Item>
247
+ <Form.Item name="enabled" label="Enabled" valuePropName="checked">
248
+ <Switch />
249
+ </Form.Item>
250
+ </Form>
251
+ </Drawer>
252
+ </div>
253
+ );
254
+ };