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.
Files changed (100) hide show
  1. package/dist/client/hooks/useRunEventStream.d.ts +22 -0
  2. package/dist/client/index.d.ts +1 -0
  3. package/dist/client/index.js +1 -1
  4. package/dist/externalVersion.js +6 -6
  5. package/dist/server/collections/agent-execution-spans.js +24 -0
  6. package/dist/server/collections/agent-loop-runs.js +36 -0
  7. package/dist/server/collections/orchestrator-config.js +14 -0
  8. package/dist/server/migrations/20260601000000-add-token-fields.d.ts +7 -0
  9. package/dist/server/migrations/20260601000000-add-token-fields.js +101 -0
  10. package/dist/server/plugin.js +47 -0
  11. package/dist/server/resources/agent-loop.js +33 -25
  12. package/dist/server/resources/tracing.js +5 -8
  13. package/dist/server/services/AgentHarness.d.ts +2 -0
  14. package/dist/server/services/AgentHarness.js +56 -90
  15. package/dist/server/services/AgentLoopController.d.ts +33 -20
  16. package/dist/server/services/AgentLoopController.js +164 -125
  17. package/dist/server/services/AgentLoopRepository.js +16 -34
  18. package/dist/server/services/AgentLoopService.d.ts +28 -18
  19. package/dist/server/services/AgentLoopService.js +7 -1
  20. package/dist/server/services/AgentPlannerService.js +5 -25
  21. package/dist/server/services/AgentRegistryService.d.ts +8 -0
  22. package/dist/server/services/AgentRegistryService.js +34 -24
  23. package/dist/server/services/CircuitBreaker.d.ts +40 -0
  24. package/dist/server/services/CircuitBreaker.js +120 -0
  25. package/dist/server/services/ContextAggregator.d.ts +45 -0
  26. package/dist/server/services/ContextAggregator.js +201 -0
  27. package/dist/server/services/ExecutionSpanService.js +2 -5
  28. package/dist/server/services/RunEventBus.d.ts +9 -0
  29. package/dist/server/services/RunEventBus.js +73 -0
  30. package/dist/server/services/TokenTracker.d.ts +62 -0
  31. package/dist/server/services/TokenTracker.js +173 -0
  32. package/dist/server/skill-hub/plugin.js +6 -6
  33. package/dist/server/skill-hub/tasks/SkillExecutionTask.js +6 -6
  34. package/dist/server/tools/agent-loop.d.ts +8 -8
  35. package/dist/server/tools/agent-loop.js +30 -63
  36. package/dist/server/tools/delegate-task.js +14 -72
  37. package/dist/server/tools/orchestrator-plan.d.ts +6 -6
  38. package/dist/server/tools/orchestrator-plan.js +10 -47
  39. package/dist/server/types.d.ts +47 -0
  40. package/dist/server/types.js +24 -0
  41. package/dist/server/utils/ctx-utils.d.ts +30 -0
  42. package/dist/server/utils/ctx-utils.js +152 -0
  43. package/dist/server/utils/logging.d.ts +6 -0
  44. package/dist/server/utils/logging.js +86 -0
  45. package/package.json +44 -44
  46. package/src/client/AgentRunsTab.tsx +764 -764
  47. package/src/client/HarnessProfilesTab.tsx +247 -247
  48. package/src/client/OrchestratorSettings.tsx +106 -106
  49. package/src/client/RulesTab.tsx +716 -716
  50. package/src/client/hooks/useRunEventStream.ts +76 -0
  51. package/src/client/index.tsx +2 -1
  52. package/src/client/plugin.tsx +27 -27
  53. package/src/client/skill-hub/components/LoopSettings.tsx +331 -331
  54. package/src/client/skill-hub/index.tsx +51 -51
  55. package/src/client/skill-hub/tools/InteractionSchemasProvider.tsx +99 -99
  56. package/src/client/skill-hub/tools/SkillHubCard.tsx +109 -109
  57. package/src/client/skill-hub/tools/loopTemplates.ts +52 -52
  58. package/src/client/skill-hub/tools/registerSkillLoopCards.ts +58 -58
  59. package/src/client/tools/PlanApprovalCard.tsx +175 -175
  60. package/src/client/tools/registerOrchestratorCards.ts +7 -7
  61. package/src/server/__tests__/agent-loop-controller.test.ts +375 -0
  62. package/src/server/__tests__/circuit-breaker.test.ts +169 -0
  63. package/src/server/__tests__/context-aggregator.test.ts +222 -0
  64. package/src/server/__tests__/parallel-execution.test.ts +318 -0
  65. package/src/server/__tests__/smoke.test.ts +120 -0
  66. package/src/server/collections/agent-execution-spans.ts +24 -0
  67. package/src/server/collections/agent-harness-profiles.ts +59 -59
  68. package/src/server/collections/agent-loop-events.ts +71 -71
  69. package/src/server/collections/agent-loop-runs.ts +38 -1
  70. package/src/server/collections/agent-loop-steps.ts +144 -144
  71. package/src/server/collections/orchestrator-config.ts +14 -0
  72. package/src/server/collections/skill-executions.ts +106 -106
  73. package/src/server/collections/skill-loop-configs.ts +65 -65
  74. package/src/server/migrations/20260524000000-add-agent-loop-fields-to-skill-executions.ts +30 -30
  75. package/src/server/migrations/20260524001000-add-plan-approval-and-harness-profiles.ts +142 -142
  76. package/src/server/migrations/20260601000000-add-token-fields.ts +89 -0
  77. package/src/server/plugin.ts +53 -0
  78. package/src/server/resources/agent-loop.ts +21 -12
  79. package/src/server/resources/tracing.ts +3 -7
  80. package/src/server/services/AgentHarness.ts +78 -116
  81. package/src/server/services/AgentLoopController.ts +197 -122
  82. package/src/server/services/AgentLoopRepository.ts +9 -25
  83. package/src/server/services/AgentLoopService.ts +13 -1
  84. package/src/server/services/AgentPlanValidator.ts +73 -73
  85. package/src/server/services/AgentPlannerService.ts +2 -25
  86. package/src/server/services/AgentRegistryService.ts +40 -31
  87. package/src/server/services/CircuitBreaker.ts +116 -0
  88. package/src/server/services/ContextAggregator.ts +239 -0
  89. package/src/server/services/ExecutionSpanService.ts +2 -4
  90. package/src/server/services/RunEventBus.ts +45 -0
  91. package/src/server/services/TokenTracker.ts +209 -0
  92. package/src/server/skill-hub/plugin.ts +898 -897
  93. package/src/server/skill-hub/tasks/SkillExecutionTask.ts +460 -458
  94. package/src/server/tools/agent-loop.ts +18 -57
  95. package/src/server/tools/delegate-task.ts +11 -93
  96. package/src/server/tools/orchestrator-plan.ts +26 -50
  97. package/src/server/tools/skill-execute.ts +160 -160
  98. package/src/server/types.ts +55 -0
  99. package/src/server/utils/ctx-utils.ts +118 -0
  100. package/src/server/utils/logging.ts +63 -0
@@ -1,106 +1,106 @@
1
- import { CollectionOptions } from '@nocobase/database';
2
-
3
- export default {
4
- name: 'skillExecutions',
5
- title: 'Skill Executions',
6
- fields: [
7
- {
8
- name: 'id',
9
- type: 'bigInt',
10
- autoIncrement: true,
11
- primaryKey: true,
12
- },
13
- {
14
- name: 'skill',
15
- type: 'belongsTo',
16
- target: 'skillDefinitions',
17
- foreignKey: 'skillId',
18
- },
19
- {
20
- // 'pending' | 'running' | 'succeeded' | 'failed' | 'canceled' | 'timeout'
21
- name: 'status',
22
- type: 'string',
23
- length: 20,
24
- defaultValue: 'pending',
25
- },
26
- {
27
- name: 'inputArgs',
28
- type: 'text',
29
- },
30
- {
31
- // Final code after template rendering
32
- name: 'executedCode',
33
- type: 'text',
34
- },
35
- {
36
- name: 'stdout',
37
- type: 'text',
38
- },
39
- {
40
- name: 'stderr',
41
- type: 'text',
42
- },
43
- {
44
- // [{ name, size, mimeType }]
45
- name: 'outputFiles',
46
- type: 'text',
47
- defaultValue: null,
48
- },
49
- {
50
- name: 'durationMs',
51
- type: 'integer',
52
- },
53
- {
54
- name: 'sessionId',
55
- type: 'string',
56
- length: 100,
57
- allowNull: true,
58
- },
59
- {
60
- name: 'orchestratorRootRunId',
61
- type: 'string',
62
- length: 100,
63
- allowNull: true,
64
- },
65
- {
66
- name: 'orchestratorSpanId',
67
- type: 'string',
68
- length: 100,
69
- allowNull: true,
70
- },
71
- {
72
- name: 'orchestratorParentSpanId',
73
- type: 'string',
74
- length: 100,
75
- allowNull: true,
76
- },
77
- {
78
- name: 'orchestratorToolCallId',
79
- type: 'string',
80
- length: 100,
81
- allowNull: true,
82
- },
83
- {
84
- name: 'agentLoopRunId',
85
- type: 'string',
86
- length: 100,
87
- allowNull: true,
88
- },
89
- {
90
- name: 'agentLoopStepId',
91
- type: 'string',
92
- length: 100,
93
- allowNull: true,
94
- },
95
- {
96
- name: 'triggeredBy',
97
- type: 'belongsTo',
98
- target: 'users',
99
- foreignKey: 'triggeredById',
100
- },
101
- {
102
- name: 'createdAt',
103
- type: 'date',
104
- },
105
- ],
106
- } as CollectionOptions;
1
+ import { CollectionOptions } from '@nocobase/database';
2
+
3
+ export default {
4
+ name: 'skillExecutions',
5
+ title: 'Skill Executions',
6
+ fields: [
7
+ {
8
+ name: 'id',
9
+ type: 'bigInt',
10
+ autoIncrement: true,
11
+ primaryKey: true,
12
+ },
13
+ {
14
+ name: 'skill',
15
+ type: 'belongsTo',
16
+ target: 'skillDefinitions',
17
+ foreignKey: 'skillId',
18
+ },
19
+ {
20
+ // 'pending' | 'running' | 'succeeded' | 'failed' | 'canceled' | 'timeout'
21
+ name: 'status',
22
+ type: 'string',
23
+ length: 20,
24
+ defaultValue: 'pending',
25
+ },
26
+ {
27
+ name: 'inputArgs',
28
+ type: 'text',
29
+ },
30
+ {
31
+ // Final code after template rendering
32
+ name: 'executedCode',
33
+ type: 'text',
34
+ },
35
+ {
36
+ name: 'stdout',
37
+ type: 'text',
38
+ },
39
+ {
40
+ name: 'stderr',
41
+ type: 'text',
42
+ },
43
+ {
44
+ // [{ name, size, mimeType }]
45
+ name: 'outputFiles',
46
+ type: 'text',
47
+ defaultValue: null,
48
+ },
49
+ {
50
+ name: 'durationMs',
51
+ type: 'integer',
52
+ },
53
+ {
54
+ name: 'sessionId',
55
+ type: 'string',
56
+ length: 100,
57
+ allowNull: true,
58
+ },
59
+ {
60
+ name: 'orchestratorRootRunId',
61
+ type: 'string',
62
+ length: 100,
63
+ allowNull: true,
64
+ },
65
+ {
66
+ name: 'orchestratorSpanId',
67
+ type: 'string',
68
+ length: 100,
69
+ allowNull: true,
70
+ },
71
+ {
72
+ name: 'orchestratorParentSpanId',
73
+ type: 'string',
74
+ length: 100,
75
+ allowNull: true,
76
+ },
77
+ {
78
+ name: 'orchestratorToolCallId',
79
+ type: 'string',
80
+ length: 100,
81
+ allowNull: true,
82
+ },
83
+ {
84
+ name: 'agentLoopRunId',
85
+ type: 'string',
86
+ length: 100,
87
+ allowNull: true,
88
+ },
89
+ {
90
+ name: 'agentLoopStepId',
91
+ type: 'string',
92
+ length: 100,
93
+ allowNull: true,
94
+ },
95
+ {
96
+ name: 'triggeredBy',
97
+ type: 'belongsTo',
98
+ target: 'users',
99
+ foreignKey: 'triggeredById',
100
+ },
101
+ {
102
+ name: 'createdAt',
103
+ type: 'date',
104
+ },
105
+ ],
106
+ } as CollectionOptions;
@@ -1,65 +1,65 @@
1
- import { CollectionOptions } from '@nocobase/database';
2
-
3
- export default {
4
- name: 'skillLoopConfigs',
5
- title: 'Skill Loop Configs',
6
- fields: [
7
- {
8
- name: 'id',
9
- type: 'bigInt',
10
- autoIncrement: true,
11
- primaryKey: true,
12
- },
13
- {
14
- name: 'skill',
15
- type: 'belongsTo',
16
- target: 'skillDefinitions',
17
- foreignKey: 'skillId',
18
- },
19
- {
20
- name: 'enabled',
21
- type: 'boolean',
22
- defaultValue: true,
23
- },
24
- {
25
- name: 'title',
26
- type: 'string',
27
- length: 200,
28
- },
29
- {
30
- name: 'templateKey',
31
- type: 'string',
32
- length: 80,
33
- defaultValue: 'confirm',
34
- },
35
- {
36
- name: 'prompt',
37
- type: 'text',
38
- },
39
- {
40
- // Resolved interaction schema consumed by the generic Skill Hub UI card.
41
- name: 'schema',
42
- type: 'text',
43
- },
44
- {
45
- // Optional template-specific state for future loop renderers.
46
- name: 'config',
47
- type: 'text',
48
- defaultValue: null,
49
- },
50
- {
51
- name: 'createdAt',
52
- type: 'date',
53
- },
54
- {
55
- name: 'updatedAt',
56
- type: 'date',
57
- },
58
- {
59
- name: 'createdBy',
60
- type: 'belongsTo',
61
- target: 'users',
62
- foreignKey: 'createdById',
63
- },
64
- ],
65
- } as CollectionOptions;
1
+ import { CollectionOptions } from '@nocobase/database';
2
+
3
+ export default {
4
+ name: 'skillLoopConfigs',
5
+ title: 'Skill Loop Configs',
6
+ fields: [
7
+ {
8
+ name: 'id',
9
+ type: 'bigInt',
10
+ autoIncrement: true,
11
+ primaryKey: true,
12
+ },
13
+ {
14
+ name: 'skill',
15
+ type: 'belongsTo',
16
+ target: 'skillDefinitions',
17
+ foreignKey: 'skillId',
18
+ },
19
+ {
20
+ name: 'enabled',
21
+ type: 'boolean',
22
+ defaultValue: true,
23
+ },
24
+ {
25
+ name: 'title',
26
+ type: 'string',
27
+ length: 200,
28
+ },
29
+ {
30
+ name: 'templateKey',
31
+ type: 'string',
32
+ length: 80,
33
+ defaultValue: 'confirm',
34
+ },
35
+ {
36
+ name: 'prompt',
37
+ type: 'text',
38
+ },
39
+ {
40
+ // Resolved interaction schema consumed by the generic Skill Hub UI card.
41
+ name: 'schema',
42
+ type: 'text',
43
+ },
44
+ {
45
+ // Optional template-specific state for future loop renderers.
46
+ name: 'config',
47
+ type: 'text',
48
+ defaultValue: null,
49
+ },
50
+ {
51
+ name: 'createdAt',
52
+ type: 'date',
53
+ },
54
+ {
55
+ name: 'updatedAt',
56
+ type: 'date',
57
+ },
58
+ {
59
+ name: 'createdBy',
60
+ type: 'belongsTo',
61
+ target: 'users',
62
+ foreignKey: 'createdById',
63
+ },
64
+ ],
65
+ } as CollectionOptions;
@@ -1,30 +1,30 @@
1
- import { Migration } from '@nocobase/server';
2
-
3
- export default class AddAgentLoopFieldsToSkillExecutions extends Migration {
4
- on = 'afterLoad';
5
- appVersion = '>=0.1.0';
6
-
7
- async up() {
8
- const queryInterface = (this as any).db.sequelize.getQueryInterface();
9
- const tablePrefix = (this as any).db.options.tablePrefix || '';
10
- const tableName = `${tablePrefix}skillExecutions`;
11
- const tableExists = await queryInterface.tableExists(tableName).catch(() => false);
12
- if (!tableExists) return;
13
-
14
- const tableDesc = await queryInterface.describeTable(tableName);
15
- const addIfMissing = async (name: string) => {
16
- if (tableDesc[name]) return;
17
- await queryInterface.addColumn(tableName, name, {
18
- type: 'VARCHAR(100)',
19
- allowNull: true,
20
- });
21
- };
22
-
23
- await addIfMissing('agentLoopRunId');
24
- await addIfMissing('agentLoopStepId');
25
- }
26
-
27
- async down() {
28
- // No rollback: these nullable trace-link columns are backward compatible.
29
- }
30
- }
1
+ import { Migration } from '@nocobase/server';
2
+
3
+ export default class AddAgentLoopFieldsToSkillExecutions extends Migration {
4
+ on = 'afterLoad';
5
+ appVersion = '>=0.1.0';
6
+
7
+ async up() {
8
+ const queryInterface = (this as any).db.sequelize.getQueryInterface();
9
+ const tablePrefix = (this as any).db.options.tablePrefix || '';
10
+ const tableName = `${tablePrefix}skillExecutions`;
11
+ const tableExists = await queryInterface.tableExists(tableName).catch(() => false);
12
+ if (!tableExists) return;
13
+
14
+ const tableDesc = await queryInterface.describeTable(tableName);
15
+ const addIfMissing = async (name: string) => {
16
+ if (tableDesc[name]) return;
17
+ await queryInterface.addColumn(tableName, name, {
18
+ type: 'VARCHAR(100)',
19
+ allowNull: true,
20
+ });
21
+ };
22
+
23
+ await addIfMissing('agentLoopRunId');
24
+ await addIfMissing('agentLoopStepId');
25
+ }
26
+
27
+ async down() {
28
+ // No rollback: these nullable trace-link columns are backward compatible.
29
+ }
30
+ }