plugin-agent-orchestrator 1.0.19 → 1.0.21
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/hooks/useRunEventStream.d.ts +22 -0
- package/dist/client/index.d.ts +1 -0
- package/dist/client/index.js +1 -1
- package/dist/externalVersion.js +6 -6
- package/dist/server/collections/agent-execution-spans.js +24 -0
- package/dist/server/collections/agent-loop-runs.js +36 -0
- package/dist/server/collections/orchestrator-config.js +14 -0
- package/dist/server/migrations/20260601000000-add-token-fields.d.ts +7 -0
- package/dist/server/migrations/20260601000000-add-token-fields.js +101 -0
- package/dist/server/plugin.js +47 -0
- package/dist/server/resources/agent-loop.js +33 -25
- package/dist/server/resources/tracing.js +5 -8
- package/dist/server/services/AgentHarness.d.ts +2 -0
- package/dist/server/services/AgentHarness.js +56 -90
- package/dist/server/services/AgentLoopController.d.ts +33 -20
- package/dist/server/services/AgentLoopController.js +164 -125
- package/dist/server/services/AgentLoopRepository.js +16 -34
- package/dist/server/services/AgentLoopService.d.ts +28 -18
- package/dist/server/services/AgentLoopService.js +7 -1
- package/dist/server/services/AgentPlannerService.js +5 -25
- package/dist/server/services/AgentRegistryService.d.ts +8 -0
- package/dist/server/services/AgentRegistryService.js +34 -24
- package/dist/server/services/CircuitBreaker.d.ts +40 -0
- package/dist/server/services/CircuitBreaker.js +120 -0
- package/dist/server/services/ContextAggregator.d.ts +45 -0
- package/dist/server/services/ContextAggregator.js +201 -0
- package/dist/server/services/ExecutionSpanService.js +2 -5
- package/dist/server/services/RunEventBus.d.ts +9 -0
- package/dist/server/services/RunEventBus.js +73 -0
- package/dist/server/services/TokenTracker.d.ts +62 -0
- package/dist/server/services/TokenTracker.js +173 -0
- package/dist/server/skill-hub/plugin.js +6 -6
- package/dist/server/skill-hub/tasks/SkillExecutionTask.js +6 -6
- package/dist/server/tools/agent-loop.d.ts +8 -8
- package/dist/server/tools/agent-loop.js +30 -63
- package/dist/server/tools/delegate-task.js +14 -72
- package/dist/server/tools/orchestrator-plan.d.ts +6 -6
- package/dist/server/tools/orchestrator-plan.js +10 -47
- package/dist/server/types.d.ts +47 -0
- package/dist/server/types.js +24 -0
- package/dist/server/utils/ctx-utils.d.ts +30 -0
- package/dist/server/utils/ctx-utils.js +152 -0
- package/dist/server/utils/logging.d.ts +6 -0
- package/dist/server/utils/logging.js +86 -0
- package/package.json +44 -44
- package/src/client/AgentRunsTab.tsx +764 -764
- package/src/client/HarnessProfilesTab.tsx +247 -247
- package/src/client/OrchestratorSettings.tsx +106 -106
- package/src/client/RulesTab.tsx +716 -716
- package/src/client/hooks/useRunEventStream.ts +76 -0
- package/src/client/index.tsx +2 -1
- package/src/client/plugin.tsx +27 -27
- package/src/client/skill-hub/components/LoopSettings.tsx +331 -331
- package/src/client/skill-hub/index.tsx +51 -51
- package/src/client/skill-hub/tools/InteractionSchemasProvider.tsx +99 -99
- package/src/client/skill-hub/tools/SkillHubCard.tsx +109 -109
- package/src/client/skill-hub/tools/loopTemplates.ts +52 -52
- package/src/client/skill-hub/tools/registerSkillLoopCards.ts +58 -58
- package/src/client/tools/PlanApprovalCard.tsx +175 -175
- package/src/client/tools/registerOrchestratorCards.ts +7 -7
- package/src/server/__tests__/agent-loop-controller.test.ts +375 -0
- package/src/server/__tests__/circuit-breaker.test.ts +169 -0
- package/src/server/__tests__/context-aggregator.test.ts +222 -0
- package/src/server/__tests__/parallel-execution.test.ts +318 -0
- package/src/server/__tests__/smoke.test.ts +120 -0
- package/src/server/collections/agent-execution-spans.ts +24 -0
- package/src/server/collections/agent-harness-profiles.ts +59 -59
- package/src/server/collections/agent-loop-events.ts +71 -71
- package/src/server/collections/agent-loop-runs.ts +38 -1
- package/src/server/collections/agent-loop-steps.ts +144 -144
- package/src/server/collections/orchestrator-config.ts +14 -0
- package/src/server/collections/skill-executions.ts +106 -106
- package/src/server/collections/skill-loop-configs.ts +65 -65
- package/src/server/migrations/20260524000000-add-agent-loop-fields-to-skill-executions.ts +30 -30
- package/src/server/migrations/20260524001000-add-plan-approval-and-harness-profiles.ts +142 -142
- package/src/server/migrations/20260601000000-add-token-fields.ts +89 -0
- package/src/server/plugin.ts +53 -0
- package/src/server/resources/agent-loop.ts +21 -12
- package/src/server/resources/tracing.ts +3 -7
- package/src/server/services/AgentHarness.ts +78 -116
- package/src/server/services/AgentLoopController.ts +197 -122
- package/src/server/services/AgentLoopRepository.ts +9 -25
- package/src/server/services/AgentLoopService.ts +13 -1
- package/src/server/services/AgentPlanValidator.ts +73 -73
- package/src/server/services/AgentPlannerService.ts +2 -25
- package/src/server/services/AgentRegistryService.ts +40 -31
- package/src/server/services/CircuitBreaker.ts +116 -0
- package/src/server/services/ContextAggregator.ts +239 -0
- package/src/server/services/ExecutionSpanService.ts +2 -4
- package/src/server/services/RunEventBus.ts +45 -0
- package/src/server/services/TokenTracker.ts +209 -0
- package/src/server/skill-hub/plugin.ts +898 -897
- package/src/server/skill-hub/tasks/SkillExecutionTask.ts +460 -458
- package/src/server/tools/agent-loop.ts +18 -57
- package/src/server/tools/delegate-task.ts +11 -93
- package/src/server/tools/orchestrator-plan.ts +26 -50
- package/src/server/tools/skill-execute.ts +160 -160
- package/src/server/types.ts +55 -0
- package/src/server/utils/ctx-utils.ts +118 -0
- package/src/server/utils/logging.ts +63 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
+
|
|
3
|
+
export interface RunEvent {
|
|
4
|
+
id: string | number;
|
|
5
|
+
runId: string | number;
|
|
6
|
+
type: string;
|
|
7
|
+
title: string;
|
|
8
|
+
content?: string;
|
|
9
|
+
status?: string;
|
|
10
|
+
createdAt?: string;
|
|
11
|
+
payload?: any;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface UseRunEventStreamResult {
|
|
15
|
+
events: RunEvent[];
|
|
16
|
+
isConnected: boolean;
|
|
17
|
+
error: string | null;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* React hook that opens an SSE connection to receive real-time agent loop events.
|
|
22
|
+
*
|
|
23
|
+
* On reconnect (EventSource auto-reconnects), missed events should be fetched
|
|
24
|
+
* from the REST endpoint by the caller if needed.
|
|
25
|
+
*/
|
|
26
|
+
export function useRunEventStream(runId: string | number | undefined): UseRunEventStreamResult {
|
|
27
|
+
const [events, setEvents] = useState<RunEvent[]>([]);
|
|
28
|
+
const [isConnected, setIsConnected] = useState(false);
|
|
29
|
+
const [error, setError] = useState<string | null>(null);
|
|
30
|
+
const eventSourceRef = useRef<EventSource | null>(null);
|
|
31
|
+
|
|
32
|
+
const cleanup = useCallback(() => {
|
|
33
|
+
if (eventSourceRef.current) {
|
|
34
|
+
eventSourceRef.current.close();
|
|
35
|
+
eventSourceRef.current = null;
|
|
36
|
+
}
|
|
37
|
+
setIsConnected(false);
|
|
38
|
+
}, []);
|
|
39
|
+
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (!runId) return;
|
|
42
|
+
|
|
43
|
+
cleanup();
|
|
44
|
+
setEvents([]);
|
|
45
|
+
setError(null);
|
|
46
|
+
|
|
47
|
+
const baseUrl = (window as any).__nocobase_api_base_url__ || '';
|
|
48
|
+
const url = `${baseUrl}/api/agentLoopEventsStream:stream?runId=${encodeURIComponent(String(runId))}`;
|
|
49
|
+
const es = new EventSource(url);
|
|
50
|
+
eventSourceRef.current = es;
|
|
51
|
+
|
|
52
|
+
es.onopen = () => {
|
|
53
|
+
setIsConnected(true);
|
|
54
|
+
setError(null);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
es.onmessage = (msg) => {
|
|
58
|
+
try {
|
|
59
|
+
const event: RunEvent = JSON.parse(msg.data);
|
|
60
|
+
setEvents((prev) => [event, ...prev]);
|
|
61
|
+
} catch {
|
|
62
|
+
// ignore malformed events
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
es.onerror = () => {
|
|
67
|
+
setIsConnected(false);
|
|
68
|
+
setError('SSE connection lost. Reconnecting...');
|
|
69
|
+
// EventSource auto-reconnects
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
return cleanup;
|
|
73
|
+
}, [runId, cleanup]);
|
|
74
|
+
|
|
75
|
+
return { events, isConnected, error };
|
|
76
|
+
}
|
package/src/client/index.tsx
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export { default } from './plugin';
|
|
1
|
+
export { default } from './plugin';
|
|
2
|
+
export { useRunEventStream } from './hooks/useRunEventStream';
|
package/src/client/plugin.tsx
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { Plugin } from '@nocobase/client';
|
|
2
|
-
import { OrchestratorSettings } from './OrchestratorSettings';
|
|
3
|
-
import { InteractionSchemasProvider } from './skill-hub/tools/InteractionSchemasProvider';
|
|
4
|
-
import { registerSkillLoopCards } from './skill-hub/tools/registerSkillLoopCards';
|
|
5
|
-
import { registerOrchestratorCards } from './tools/registerOrchestratorCards';
|
|
6
|
-
|
|
7
|
-
export class PluginAgentOrchestratorClient extends Plugin {
|
|
8
|
-
async load() {
|
|
9
|
-
(this as any).app.use(InteractionSchemasProvider);
|
|
10
|
-
|
|
11
|
-
// Register under the "AI" settings group for consistency with other AI plugins
|
|
12
|
-
(this as any).app.pluginSettingsManager.add('ai.orchestrator', {
|
|
13
|
-
title: 'Agent Orchestrator',
|
|
14
|
-
icon: 'ApartmentOutlined',
|
|
15
|
-
Component: OrchestratorSettings,
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
await this.registerSkillUiCards();
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
private async registerSkillUiCards() {
|
|
22
|
-
await registerOrchestratorCards((this as any).app);
|
|
23
|
-
await registerSkillLoopCards((this as any).app);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export default PluginAgentOrchestratorClient;
|
|
1
|
+
import { Plugin } from '@nocobase/client';
|
|
2
|
+
import { OrchestratorSettings } from './OrchestratorSettings';
|
|
3
|
+
import { InteractionSchemasProvider } from './skill-hub/tools/InteractionSchemasProvider';
|
|
4
|
+
import { registerSkillLoopCards } from './skill-hub/tools/registerSkillLoopCards';
|
|
5
|
+
import { registerOrchestratorCards } from './tools/registerOrchestratorCards';
|
|
6
|
+
|
|
7
|
+
export class PluginAgentOrchestratorClient extends Plugin {
|
|
8
|
+
async load() {
|
|
9
|
+
(this as any).app.use(InteractionSchemasProvider);
|
|
10
|
+
|
|
11
|
+
// Register under the "AI" settings group for consistency with other AI plugins
|
|
12
|
+
(this as any).app.pluginSettingsManager.add('ai.orchestrator', {
|
|
13
|
+
title: 'Agent Orchestrator',
|
|
14
|
+
icon: 'ApartmentOutlined',
|
|
15
|
+
Component: OrchestratorSettings,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
await this.registerSkillUiCards();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
private async registerSkillUiCards() {
|
|
22
|
+
await registerOrchestratorCards((this as any).app);
|
|
23
|
+
await registerSkillLoopCards((this as any).app);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export default PluginAgentOrchestratorClient;
|