zigrix 0.1.1 → 0.2.1
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/README.md +10 -2
- package/dist/config/defaults.d.ts +8 -0
- package/dist/config/defaults.js +8 -1
- package/dist/config/schema.d.ts +112 -0
- package/dist/config/schema.js +186 -12
- package/dist/dashboard/.next/BUILD_ID +1 -1
- package/dist/dashboard/.next/app-build-manifest.json +28 -28
- package/dist/dashboard/.next/app-path-routes-manifest.json +3 -3
- package/dist/dashboard/.next/build-manifest.json +5 -5
- package/dist/dashboard/.next/prerender-manifest.json +6 -6
- package/dist/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/dashboard/.next/server/app/_not-found.html +1 -1
- package/dist/dashboard/.next/server/app/_not-found.rsc +1 -1
- package/dist/dashboard/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/dist/dashboard/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/dist/dashboard/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
- package/dist/dashboard/.next/server/app/api/auth/setup/route_client-reference-manifest.js +1 -1
- package/dist/dashboard/.next/server/app/api/overview/route_client-reference-manifest.js +1 -1
- package/dist/dashboard/.next/server/app/api/stream/route_client-reference-manifest.js +1 -1
- package/dist/dashboard/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
- package/dist/dashboard/.next/server/app/api/tasks/[taskId]/conversation/route_client-reference-manifest.js +1 -1
- package/dist/dashboard/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/dist/dashboard/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/dist/dashboard/.next/server/app/login.html +1 -1
- package/dist/dashboard/.next/server/app/login.rsc +1 -1
- package/dist/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/dashboard/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/dist/dashboard/.next/server/app/setup.html +1 -1
- package/dist/dashboard/.next/server/app/setup.rsc +1 -1
- package/dist/dashboard/.next/server/app-paths-manifest.json +3 -3
- package/dist/dashboard/.next/server/chunks/331.js +1 -1
- package/dist/dashboard/.next/server/functions-config-manifest.json +3 -3
- package/dist/dashboard/.next/server/middleware-build-manifest.js +1 -1
- package/dist/dashboard/.next/server/middleware.js +1 -1
- package/dist/dashboard/.next/server/pages/404.html +1 -1
- package/dist/dashboard/.next/server/pages/500.html +1 -1
- package/dist/dashboard/.next/server/pages/_error.js +1 -1
- package/dist/dashboard/.next/static/chunks/{255-ebd51be49873d76c.js → 255-4f212684648fcab9.js} +1 -1
- package/dist/dashboard/.next/static/chunks/main-cec07dc17fdd452c.js +1 -0
- package/dist/dashboard/package.json +2 -2
- package/dist/doctor.d.ts +3 -0
- package/dist/doctor.js +233 -60
- package/dist/index.js +286 -33
- package/dist/migrate/import-orchestration.d.ts +31 -0
- package/dist/migrate/import-orchestration.js +638 -0
- package/dist/onboard.d.ts +1 -1
- package/dist/onboard.js +132 -37
- package/dist/orchestration/dispatch.js +16 -71
- package/dist/orchestration/evidence.d.ts +7 -0
- package/dist/orchestration/evidence.js +79 -4
- package/dist/orchestration/pipeline.d.ts +1 -0
- package/dist/orchestration/pipeline.js +26 -1
- package/dist/orchestration/prompt-compose.d.ts +35 -0
- package/dist/orchestration/prompt-compose.js +172 -0
- package/dist/orchestration/worker.d.ts +4 -1
- package/dist/orchestration/worker.js +132 -52
- package/dist/state/tasks.d.ts +43 -2
- package/dist/state/tasks.js +281 -10
- package/dist/state/verify.js +89 -11
- package/package.json +3 -3
- package/rules/defaults/orchestrator-agent.md +4 -2
- package/rules/defaults/worker-common.md +3 -0
- package/skills/oz/SKILL.md +117 -0
- package/skills/oz/references/examples.md +44 -0
- package/skills/oz/references/routing-rubric.md +71 -0
- package/skills/zigrix-main-agent-guide/SKILL.md +37 -7
- package/dist/dashboard/.next/static/chunks/main-da2d845a416cfa3f.js +0 -1
- /package/dist/dashboard/.next/static/{iKGx5hWe1zbwJZWchF9kg → dOjvoQUj-mqwJ8kKG4peU}/_buildManifest.js +0 -0
- /package/dist/dashboard/.next/static/{iKGx5hWe1zbwJZWchF9kg → dOjvoQUj-mqwJ8kKG4peU}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -150,7 +150,7 @@ zigrix reset state --yes
|
|
|
150
150
|
2. seeds rule files from bundled templates
|
|
151
151
|
3. ensures `zigrix` is reachable from the runtime-visible PATH
|
|
152
152
|
4. detects OpenClaw and imports agents from `openclaw.json`
|
|
153
|
-
5. registers bundled
|
|
153
|
+
5. registers bundled OpenClaw skills into `~/.openclaw/skills/` (including `oz` and the `zigrix-*` packs)
|
|
154
154
|
6. leaves the environment ready for agent-led orchestration
|
|
155
155
|
|
|
156
156
|
---
|
|
@@ -161,9 +161,17 @@ When OpenClaw is present, Zigrix is optimized for this model:
|
|
|
161
161
|
|
|
162
162
|
- import agent definitions and normalize roles
|
|
163
163
|
- establish orchestrator ownership for task execution
|
|
164
|
-
- register
|
|
164
|
+
- register bundled OpenClaw skills for agent readiness checks
|
|
165
|
+
- expose `/oz` as the public Zigrix chat entrypoint after onboarding
|
|
165
166
|
- keep CLI reachability stable for OpenClaw runtime
|
|
166
167
|
|
|
168
|
+
After `zigrix onboard`, the expected chat-side entrypoints are:
|
|
169
|
+
- `/oz fix the auth flow`
|
|
170
|
+
- `이거 맡겨`
|
|
171
|
+
- `route this through Zigrix`
|
|
172
|
+
|
|
173
|
+
`/oz` is force-delegate. Natural-language delegation is judged semantically by the installed skill and should enter the standard Zigrix chain (`zigrix task dispatch` → orchestrator spawn) instead of falling back to direct execution.
|
|
174
|
+
|
|
167
175
|
Read the full integration contract in [docs/openclaw-integration.md](docs/openclaw-integration.md).
|
|
168
176
|
|
|
169
177
|
---
|
|
@@ -41,6 +41,10 @@ export declare function buildDefaultConfig(baseDir?: string): {
|
|
|
41
41
|
readonly requiredRoles: readonly ["orchestrator", "qa", "security"];
|
|
42
42
|
readonly optionalRoles: readonly ["frontend", "backend", "system"];
|
|
43
43
|
};
|
|
44
|
+
readonly large: {
|
|
45
|
+
readonly requiredRoles: readonly ["orchestrator", "qa", "security", "system"];
|
|
46
|
+
readonly optionalRoles: readonly ["frontend", "backend"];
|
|
47
|
+
};
|
|
44
48
|
};
|
|
45
49
|
readonly completion: {
|
|
46
50
|
readonly requireQa: true;
|
|
@@ -111,6 +115,10 @@ export declare const defaultConfig: {
|
|
|
111
115
|
readonly requiredRoles: readonly ["orchestrator", "qa", "security"];
|
|
112
116
|
readonly optionalRoles: readonly ["frontend", "backend", "system"];
|
|
113
117
|
};
|
|
118
|
+
readonly large: {
|
|
119
|
+
readonly requiredRoles: readonly ["orchestrator", "qa", "security", "system"];
|
|
120
|
+
readonly optionalRoles: readonly ["frontend", "backend"];
|
|
121
|
+
};
|
|
114
122
|
};
|
|
115
123
|
readonly completion: {
|
|
116
124
|
readonly requireQa: true;
|
package/dist/config/defaults.js
CHANGED
|
@@ -51,7 +51,14 @@ export function buildDefaultConfig(baseDir = resolveCanonicalConfigHome()) {
|
|
|
51
51
|
scales: {
|
|
52
52
|
simple: { requiredRoles: ['orchestrator'], optionalRoles: ['qa'] },
|
|
53
53
|
normal: { requiredRoles: ['orchestrator', 'qa'], optionalRoles: ['frontend', 'backend'] },
|
|
54
|
-
risky: {
|
|
54
|
+
risky: {
|
|
55
|
+
requiredRoles: ['orchestrator', 'qa', 'security'],
|
|
56
|
+
optionalRoles: ['frontend', 'backend', 'system'],
|
|
57
|
+
},
|
|
58
|
+
large: {
|
|
59
|
+
requiredRoles: ['orchestrator', 'qa', 'security', 'system'],
|
|
60
|
+
optionalRoles: ['frontend', 'backend'],
|
|
61
|
+
},
|
|
55
62
|
},
|
|
56
63
|
completion: {
|
|
57
64
|
requireQa: true,
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
export declare const STANDARD_SCALES: readonly ["simple", "normal", "risky", "large"];
|
|
2
3
|
export declare const zigrixConfigSchema: z.ZodObject<{
|
|
3
4
|
paths: z.ZodObject<{
|
|
4
5
|
baseDir: z.ZodString;
|
|
@@ -144,9 +145,120 @@ export declare const zigrixConfigJsonSchema: {
|
|
|
144
145
|
};
|
|
145
146
|
readonly agents: {
|
|
146
147
|
readonly type: "object";
|
|
148
|
+
readonly required: readonly ["registry", "orchestration"];
|
|
149
|
+
readonly properties: {
|
|
150
|
+
readonly registry: {
|
|
151
|
+
readonly type: "object";
|
|
152
|
+
readonly additionalProperties: {
|
|
153
|
+
readonly type: "object";
|
|
154
|
+
readonly required: readonly ["label", "role", "runtime"];
|
|
155
|
+
readonly properties: {
|
|
156
|
+
readonly label: {
|
|
157
|
+
readonly type: "string";
|
|
158
|
+
};
|
|
159
|
+
readonly role: {
|
|
160
|
+
readonly type: "string";
|
|
161
|
+
readonly enum: readonly ["orchestrator", "qa", "security", "frontend", "backend", "system"];
|
|
162
|
+
};
|
|
163
|
+
readonly runtime: {
|
|
164
|
+
readonly type: "string";
|
|
165
|
+
};
|
|
166
|
+
readonly enabled: {
|
|
167
|
+
readonly type: "boolean";
|
|
168
|
+
};
|
|
169
|
+
readonly metadata: {
|
|
170
|
+
readonly type: "object";
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
readonly additionalProperties: true;
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
readonly orchestration: {
|
|
177
|
+
readonly type: "object";
|
|
178
|
+
readonly required: readonly ["participants", "excluded", "orchestratorId"];
|
|
179
|
+
readonly properties: {
|
|
180
|
+
readonly participants: {
|
|
181
|
+
readonly type: "array";
|
|
182
|
+
readonly items: {
|
|
183
|
+
readonly type: "string";
|
|
184
|
+
};
|
|
185
|
+
};
|
|
186
|
+
readonly excluded: {
|
|
187
|
+
readonly type: "array";
|
|
188
|
+
readonly items: {
|
|
189
|
+
readonly type: "string";
|
|
190
|
+
};
|
|
191
|
+
};
|
|
192
|
+
readonly orchestratorId: {
|
|
193
|
+
readonly type: "string";
|
|
194
|
+
};
|
|
195
|
+
};
|
|
196
|
+
readonly additionalProperties: false;
|
|
197
|
+
};
|
|
198
|
+
};
|
|
199
|
+
readonly additionalProperties: false;
|
|
147
200
|
};
|
|
148
201
|
readonly rules: {
|
|
149
202
|
readonly type: "object";
|
|
203
|
+
readonly required: readonly ["scales", "completion", "stale"];
|
|
204
|
+
readonly properties: {
|
|
205
|
+
readonly scales: {
|
|
206
|
+
readonly type: "object";
|
|
207
|
+
readonly required: readonly ["simple", "normal", "risky", "large"];
|
|
208
|
+
readonly properties: {
|
|
209
|
+
[k: string]: {
|
|
210
|
+
type: string;
|
|
211
|
+
required: string[];
|
|
212
|
+
properties: {
|
|
213
|
+
requiredRoles: {
|
|
214
|
+
type: string;
|
|
215
|
+
items: {
|
|
216
|
+
type: string;
|
|
217
|
+
enum: ("orchestrator" | "qa" | "security" | "frontend" | "backend" | "system")[];
|
|
218
|
+
};
|
|
219
|
+
};
|
|
220
|
+
optionalRoles: {
|
|
221
|
+
type: string;
|
|
222
|
+
items: {
|
|
223
|
+
type: string;
|
|
224
|
+
enum: ("orchestrator" | "qa" | "security" | "frontend" | "backend" | "system")[];
|
|
225
|
+
};
|
|
226
|
+
};
|
|
227
|
+
};
|
|
228
|
+
additionalProperties: boolean;
|
|
229
|
+
};
|
|
230
|
+
};
|
|
231
|
+
readonly additionalProperties: true;
|
|
232
|
+
};
|
|
233
|
+
readonly completion: {
|
|
234
|
+
readonly type: "object";
|
|
235
|
+
readonly required: readonly ["requireQa", "requireEvidence", "requireUserReport"];
|
|
236
|
+
readonly properties: {
|
|
237
|
+
readonly requireQa: {
|
|
238
|
+
readonly type: "boolean";
|
|
239
|
+
};
|
|
240
|
+
readonly requireEvidence: {
|
|
241
|
+
readonly type: "boolean";
|
|
242
|
+
};
|
|
243
|
+
readonly requireUserReport: {
|
|
244
|
+
readonly type: "boolean";
|
|
245
|
+
};
|
|
246
|
+
};
|
|
247
|
+
readonly additionalProperties: false;
|
|
248
|
+
};
|
|
249
|
+
readonly stale: {
|
|
250
|
+
readonly type: "object";
|
|
251
|
+
readonly required: readonly ["defaultHours"];
|
|
252
|
+
readonly properties: {
|
|
253
|
+
readonly defaultHours: {
|
|
254
|
+
readonly type: "number";
|
|
255
|
+
readonly exclusiveMinimum: 0;
|
|
256
|
+
};
|
|
257
|
+
};
|
|
258
|
+
readonly additionalProperties: false;
|
|
259
|
+
};
|
|
260
|
+
};
|
|
261
|
+
readonly additionalProperties: false;
|
|
150
262
|
};
|
|
151
263
|
readonly templates: {
|
|
152
264
|
readonly type: "object";
|
package/dist/config/schema.js
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
1
2
|
import { z } from 'zod';
|
|
2
3
|
import { STANDARD_AGENT_ROLES, normalizeAgentRole } from '../agents/roles.js';
|
|
3
4
|
const pathSchema = z.string().min(1);
|
|
5
|
+
export const STANDARD_SCALES = ['simple', 'normal', 'risky', 'large'];
|
|
4
6
|
const standardRoleSchema = z.enum(STANDARD_AGENT_ROLES);
|
|
5
|
-
const roleSchema = z
|
|
7
|
+
const roleSchema = z
|
|
8
|
+
.string()
|
|
9
|
+
.min(1)
|
|
10
|
+
.transform((value, ctx) => {
|
|
6
11
|
const normalized = normalizeAgentRole(value);
|
|
7
12
|
if (!normalized) {
|
|
8
13
|
ctx.addIssue({
|
|
@@ -12,7 +17,8 @@ const roleSchema = z.string().min(1).transform((value, ctx) => {
|
|
|
12
17
|
return z.NEVER;
|
|
13
18
|
}
|
|
14
19
|
return normalized;
|
|
15
|
-
})
|
|
20
|
+
})
|
|
21
|
+
.pipe(standardRoleSchema);
|
|
16
22
|
const agentSchema = z.object({
|
|
17
23
|
label: z.string().min(1),
|
|
18
24
|
role: roleSchema,
|
|
@@ -27,7 +33,8 @@ const templateSchema = z.object({
|
|
|
27
33
|
body: z.string().min(1),
|
|
28
34
|
});
|
|
29
35
|
export const zigrixConfigSchema = z.object({
|
|
30
|
-
paths: z
|
|
36
|
+
paths: z
|
|
37
|
+
.object({
|
|
31
38
|
baseDir: pathSchema,
|
|
32
39
|
tasksDir: pathSchema,
|
|
33
40
|
evidenceDir: pathSchema,
|
|
@@ -36,18 +43,58 @@ export const zigrixConfigSchema = z.object({
|
|
|
36
43
|
indexFile: pathSchema,
|
|
37
44
|
runsDir: pathSchema,
|
|
38
45
|
rulesDir: pathSchema,
|
|
46
|
+
})
|
|
47
|
+
.superRefine((value, ctx) => {
|
|
48
|
+
const directoryEntries = [
|
|
49
|
+
['tasksDir', value.tasksDir],
|
|
50
|
+
['evidenceDir', value.evidenceDir],
|
|
51
|
+
['promptsDir', value.promptsDir],
|
|
52
|
+
['runsDir', value.runsDir],
|
|
53
|
+
['rulesDir', value.rulesDir],
|
|
54
|
+
];
|
|
55
|
+
const fileEntries = [
|
|
56
|
+
['eventsFile', value.eventsFile],
|
|
57
|
+
['indexFile', value.indexFile],
|
|
58
|
+
];
|
|
59
|
+
const seen = new Map();
|
|
60
|
+
for (const [name, rawPath] of [...directoryEntries, ...fileEntries]) {
|
|
61
|
+
const normalized = path.resolve(rawPath);
|
|
62
|
+
const existing = seen.get(normalized);
|
|
63
|
+
if (existing) {
|
|
64
|
+
ctx.addIssue({
|
|
65
|
+
code: z.ZodIssueCode.custom,
|
|
66
|
+
message: `${name} collides with ${existing}`,
|
|
67
|
+
path: [name],
|
|
68
|
+
});
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
seen.set(normalized, name);
|
|
72
|
+
}
|
|
73
|
+
const directoryPaths = new Set(directoryEntries.map(([, rawPath]) => path.resolve(rawPath)));
|
|
74
|
+
for (const [name, rawPath] of fileEntries) {
|
|
75
|
+
const normalized = path.resolve(rawPath);
|
|
76
|
+
if (directoryPaths.has(normalized)) {
|
|
77
|
+
ctx.addIssue({
|
|
78
|
+
code: z.ZodIssueCode.custom,
|
|
79
|
+
message: `${name} must not resolve to a runtime directory path`,
|
|
80
|
+
path: [name],
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
39
84
|
}),
|
|
40
85
|
workspace: z.object({
|
|
41
86
|
projectsBaseDir: z.string().default(''),
|
|
42
87
|
}),
|
|
43
|
-
agents: z
|
|
88
|
+
agents: z
|
|
89
|
+
.object({
|
|
44
90
|
registry: z.record(z.string(), agentSchema),
|
|
45
91
|
orchestration: z.object({
|
|
46
92
|
participants: z.array(z.string()),
|
|
47
93
|
excluded: z.array(z.string()),
|
|
48
94
|
orchestratorId: z.string().min(1),
|
|
49
95
|
}),
|
|
50
|
-
})
|
|
96
|
+
})
|
|
97
|
+
.superRefine((value, ctx) => {
|
|
51
98
|
const overlap = value.orchestration.participants.filter((item) => value.orchestration.excluded.includes(item));
|
|
52
99
|
for (const agentId of overlap) {
|
|
53
100
|
ctx.addIssue({
|
|
@@ -87,6 +134,22 @@ export const zigrixConfigSchema = z.object({
|
|
|
87
134
|
path: ['orchestration', 'orchestratorId'],
|
|
88
135
|
});
|
|
89
136
|
}
|
|
137
|
+
if (hasOrchestratorInRegistry && value.registry[orchestratorId]?.enabled === false) {
|
|
138
|
+
ctx.addIssue({
|
|
139
|
+
code: z.ZodIssueCode.custom,
|
|
140
|
+
message: `orchestratorId '${orchestratorId}' must reference an enabled agent`,
|
|
141
|
+
path: ['orchestration', 'orchestratorId'],
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
if (value.orchestration.participants.length > 0 &&
|
|
145
|
+
hasOrchestratorInRegistry &&
|
|
146
|
+
!value.orchestration.participants.includes(orchestratorId)) {
|
|
147
|
+
ctx.addIssue({
|
|
148
|
+
code: z.ZodIssueCode.custom,
|
|
149
|
+
message: `orchestratorId '${orchestratorId}' must be included in participants when participant mode is active`,
|
|
150
|
+
path: ['orchestration', 'participants'],
|
|
151
|
+
});
|
|
152
|
+
}
|
|
90
153
|
if (value.orchestration.excluded.includes(orchestratorId)) {
|
|
91
154
|
ctx.addIssue({
|
|
92
155
|
code: z.ZodIssueCode.custom,
|
|
@@ -96,10 +159,32 @@ export const zigrixConfigSchema = z.object({
|
|
|
96
159
|
}
|
|
97
160
|
}),
|
|
98
161
|
rules: z.object({
|
|
99
|
-
scales: z
|
|
162
|
+
scales: z
|
|
163
|
+
.record(z.string(), z.object({
|
|
100
164
|
requiredRoles: z.array(roleSchema),
|
|
101
165
|
optionalRoles: z.array(roleSchema),
|
|
102
|
-
}))
|
|
166
|
+
}))
|
|
167
|
+
.superRefine((value, ctx) => {
|
|
168
|
+
for (const scale of STANDARD_SCALES) {
|
|
169
|
+
if (!(scale in value)) {
|
|
170
|
+
ctx.addIssue({
|
|
171
|
+
code: z.ZodIssueCode.custom,
|
|
172
|
+
message: `rules.scales must define '${scale}'`,
|
|
173
|
+
path: [scale],
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
for (const [scale, policy] of Object.entries(value)) {
|
|
178
|
+
const overlap = policy.requiredRoles.filter((role) => policy.optionalRoles.includes(role));
|
|
179
|
+
for (const role of overlap) {
|
|
180
|
+
ctx.addIssue({
|
|
181
|
+
code: z.ZodIssueCode.custom,
|
|
182
|
+
message: `scale '${scale}' cannot list role '${role}' as both required and optional`,
|
|
183
|
+
path: [scale],
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}),
|
|
103
188
|
completion: z.object({
|
|
104
189
|
requireQa: z.boolean(),
|
|
105
190
|
requireEvidence: z.boolean(),
|
|
@@ -113,11 +198,13 @@ export const zigrixConfigSchema = z.object({
|
|
|
113
198
|
workerPrompt: templateSchema,
|
|
114
199
|
finalReport: templateSchema,
|
|
115
200
|
}),
|
|
116
|
-
openclaw: z
|
|
201
|
+
openclaw: z
|
|
202
|
+
.object({
|
|
117
203
|
home: z.string().default(''),
|
|
118
204
|
binPath: z.string().nullable().default(null),
|
|
119
205
|
gatewayUrl: z.string().default(''),
|
|
120
|
-
})
|
|
206
|
+
})
|
|
207
|
+
.default({ home: '', binPath: null, gatewayUrl: '' }),
|
|
121
208
|
runtime: z.object({
|
|
122
209
|
outputMode: z.enum(['text', 'json']),
|
|
123
210
|
jsonIndent: z.number().int().min(0).max(8),
|
|
@@ -131,7 +218,16 @@ export const zigrixConfigJsonSchema = {
|
|
|
131
218
|
properties: {
|
|
132
219
|
paths: {
|
|
133
220
|
type: 'object',
|
|
134
|
-
required: [
|
|
221
|
+
required: [
|
|
222
|
+
'baseDir',
|
|
223
|
+
'tasksDir',
|
|
224
|
+
'evidenceDir',
|
|
225
|
+
'promptsDir',
|
|
226
|
+
'eventsFile',
|
|
227
|
+
'indexFile',
|
|
228
|
+
'runsDir',
|
|
229
|
+
'rulesDir',
|
|
230
|
+
],
|
|
135
231
|
properties: {
|
|
136
232
|
baseDir: { type: 'string' },
|
|
137
233
|
tasksDir: { type: 'string' },
|
|
@@ -151,8 +247,86 @@ export const zigrixConfigJsonSchema = {
|
|
|
151
247
|
},
|
|
152
248
|
additionalProperties: false,
|
|
153
249
|
},
|
|
154
|
-
agents: {
|
|
155
|
-
|
|
250
|
+
agents: {
|
|
251
|
+
type: 'object',
|
|
252
|
+
required: ['registry', 'orchestration'],
|
|
253
|
+
properties: {
|
|
254
|
+
registry: {
|
|
255
|
+
type: 'object',
|
|
256
|
+
additionalProperties: {
|
|
257
|
+
type: 'object',
|
|
258
|
+
required: ['label', 'role', 'runtime'],
|
|
259
|
+
properties: {
|
|
260
|
+
label: { type: 'string' },
|
|
261
|
+
role: { type: 'string', enum: [...STANDARD_AGENT_ROLES] },
|
|
262
|
+
runtime: { type: 'string' },
|
|
263
|
+
enabled: { type: 'boolean' },
|
|
264
|
+
metadata: { type: 'object' },
|
|
265
|
+
},
|
|
266
|
+
additionalProperties: true,
|
|
267
|
+
},
|
|
268
|
+
},
|
|
269
|
+
orchestration: {
|
|
270
|
+
type: 'object',
|
|
271
|
+
required: ['participants', 'excluded', 'orchestratorId'],
|
|
272
|
+
properties: {
|
|
273
|
+
participants: { type: 'array', items: { type: 'string' } },
|
|
274
|
+
excluded: { type: 'array', items: { type: 'string' } },
|
|
275
|
+
orchestratorId: { type: 'string' },
|
|
276
|
+
},
|
|
277
|
+
additionalProperties: false,
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
additionalProperties: false,
|
|
281
|
+
},
|
|
282
|
+
rules: {
|
|
283
|
+
type: 'object',
|
|
284
|
+
required: ['scales', 'completion', 'stale'],
|
|
285
|
+
properties: {
|
|
286
|
+
scales: {
|
|
287
|
+
type: 'object',
|
|
288
|
+
required: [...STANDARD_SCALES],
|
|
289
|
+
properties: Object.fromEntries(STANDARD_SCALES.map((scale) => [
|
|
290
|
+
scale,
|
|
291
|
+
{
|
|
292
|
+
type: 'object',
|
|
293
|
+
required: ['requiredRoles', 'optionalRoles'],
|
|
294
|
+
properties: {
|
|
295
|
+
requiredRoles: {
|
|
296
|
+
type: 'array',
|
|
297
|
+
items: { type: 'string', enum: [...STANDARD_AGENT_ROLES] },
|
|
298
|
+
},
|
|
299
|
+
optionalRoles: {
|
|
300
|
+
type: 'array',
|
|
301
|
+
items: { type: 'string', enum: [...STANDARD_AGENT_ROLES] },
|
|
302
|
+
},
|
|
303
|
+
},
|
|
304
|
+
additionalProperties: false,
|
|
305
|
+
},
|
|
306
|
+
])),
|
|
307
|
+
additionalProperties: true,
|
|
308
|
+
},
|
|
309
|
+
completion: {
|
|
310
|
+
type: 'object',
|
|
311
|
+
required: ['requireQa', 'requireEvidence', 'requireUserReport'],
|
|
312
|
+
properties: {
|
|
313
|
+
requireQa: { type: 'boolean' },
|
|
314
|
+
requireEvidence: { type: 'boolean' },
|
|
315
|
+
requireUserReport: { type: 'boolean' },
|
|
316
|
+
},
|
|
317
|
+
additionalProperties: false,
|
|
318
|
+
},
|
|
319
|
+
stale: {
|
|
320
|
+
type: 'object',
|
|
321
|
+
required: ['defaultHours'],
|
|
322
|
+
properties: {
|
|
323
|
+
defaultHours: { type: 'number', exclusiveMinimum: 0 },
|
|
324
|
+
},
|
|
325
|
+
additionalProperties: false,
|
|
326
|
+
},
|
|
327
|
+
},
|
|
328
|
+
additionalProperties: false,
|
|
329
|
+
},
|
|
156
330
|
templates: { type: 'object' },
|
|
157
331
|
openclaw: {
|
|
158
332
|
type: 'object',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
dOjvoQUj-mqwJ8kKG4peU
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
"/_not-found/page": [
|
|
4
4
|
"static/chunks/webpack-1c485544eee88ef7.js",
|
|
5
5
|
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
|
6
|
-
"static/chunks/255-
|
|
6
|
+
"static/chunks/255-4f212684648fcab9.js",
|
|
7
7
|
"static/chunks/main-app-458501fc143f8dcb.js",
|
|
8
8
|
"static/chunks/app/_not-found/page-1ec508643ed76f3b.js"
|
|
9
9
|
],
|
|
10
10
|
"/layout": [
|
|
11
11
|
"static/chunks/webpack-1c485544eee88ef7.js",
|
|
12
12
|
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
|
13
|
-
"static/chunks/255-
|
|
13
|
+
"static/chunks/255-4f212684648fcab9.js",
|
|
14
14
|
"static/chunks/main-app-458501fc143f8dcb.js",
|
|
15
15
|
"static/css/9f7ffdac282b0450.css",
|
|
16
16
|
"static/chunks/app/layout-96206a34ff37a783.js"
|
|
@@ -18,86 +18,86 @@
|
|
|
18
18
|
"/api/auth/logout/route": [
|
|
19
19
|
"static/chunks/webpack-1c485544eee88ef7.js",
|
|
20
20
|
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
|
21
|
-
"static/chunks/255-
|
|
21
|
+
"static/chunks/255-4f212684648fcab9.js",
|
|
22
22
|
"static/chunks/main-app-458501fc143f8dcb.js",
|
|
23
23
|
"static/chunks/app/api/auth/logout/route-aaf047a494f0055f.js"
|
|
24
24
|
],
|
|
25
25
|
"/api/auth/session/route": [
|
|
26
26
|
"static/chunks/webpack-1c485544eee88ef7.js",
|
|
27
27
|
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
|
28
|
-
"static/chunks/255-
|
|
28
|
+
"static/chunks/255-4f212684648fcab9.js",
|
|
29
29
|
"static/chunks/main-app-458501fc143f8dcb.js",
|
|
30
30
|
"static/chunks/app/api/auth/session/route-aaf047a494f0055f.js"
|
|
31
31
|
],
|
|
32
|
-
"/api/auth/
|
|
32
|
+
"/api/auth/login/route": [
|
|
33
33
|
"static/chunks/webpack-1c485544eee88ef7.js",
|
|
34
34
|
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
|
35
|
-
"static/chunks/255-
|
|
35
|
+
"static/chunks/255-4f212684648fcab9.js",
|
|
36
36
|
"static/chunks/main-app-458501fc143f8dcb.js",
|
|
37
|
-
"static/chunks/app/api/auth/
|
|
37
|
+
"static/chunks/app/api/auth/login/route-aaf047a494f0055f.js"
|
|
38
38
|
],
|
|
39
|
-
"/api/auth/
|
|
39
|
+
"/api/auth/setup/route": [
|
|
40
40
|
"static/chunks/webpack-1c485544eee88ef7.js",
|
|
41
41
|
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
|
42
|
-
"static/chunks/255-
|
|
42
|
+
"static/chunks/255-4f212684648fcab9.js",
|
|
43
43
|
"static/chunks/main-app-458501fc143f8dcb.js",
|
|
44
|
-
"static/chunks/app/api/auth/
|
|
44
|
+
"static/chunks/app/api/auth/setup/route-aaf047a494f0055f.js"
|
|
45
45
|
],
|
|
46
46
|
"/api/overview/route": [
|
|
47
47
|
"static/chunks/webpack-1c485544eee88ef7.js",
|
|
48
48
|
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
|
49
|
-
"static/chunks/255-
|
|
49
|
+
"static/chunks/255-4f212684648fcab9.js",
|
|
50
50
|
"static/chunks/main-app-458501fc143f8dcb.js",
|
|
51
51
|
"static/chunks/app/api/overview/route-aaf047a494f0055f.js"
|
|
52
52
|
],
|
|
53
|
-
"/api/tasks/[taskId]/
|
|
53
|
+
"/api/tasks/[taskId]/route": [
|
|
54
54
|
"static/chunks/webpack-1c485544eee88ef7.js",
|
|
55
55
|
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
|
56
|
-
"static/chunks/255-
|
|
56
|
+
"static/chunks/255-4f212684648fcab9.js",
|
|
57
57
|
"static/chunks/main-app-458501fc143f8dcb.js",
|
|
58
|
-
"static/chunks/app/api/tasks/[taskId]/
|
|
58
|
+
"static/chunks/app/api/tasks/[taskId]/route-aaf047a494f0055f.js"
|
|
59
59
|
],
|
|
60
|
-
"/api/tasks/[taskId]/
|
|
60
|
+
"/api/tasks/[taskId]/cancel/route": [
|
|
61
61
|
"static/chunks/webpack-1c485544eee88ef7.js",
|
|
62
62
|
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
|
63
|
-
"static/chunks/255-
|
|
63
|
+
"static/chunks/255-4f212684648fcab9.js",
|
|
64
64
|
"static/chunks/main-app-458501fc143f8dcb.js",
|
|
65
|
-
"static/chunks/app/api/tasks/[taskId]/
|
|
65
|
+
"static/chunks/app/api/tasks/[taskId]/cancel/route-aaf047a494f0055f.js"
|
|
66
66
|
],
|
|
67
|
-
"/api/tasks/[taskId]/route": [
|
|
67
|
+
"/api/tasks/[taskId]/conversation/route": [
|
|
68
68
|
"static/chunks/webpack-1c485544eee88ef7.js",
|
|
69
69
|
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
|
70
|
-
"static/chunks/255-
|
|
70
|
+
"static/chunks/255-4f212684648fcab9.js",
|
|
71
71
|
"static/chunks/main-app-458501fc143f8dcb.js",
|
|
72
|
-
"static/chunks/app/api/tasks/[taskId]/route-aaf047a494f0055f.js"
|
|
72
|
+
"static/chunks/app/api/tasks/[taskId]/conversation/route-aaf047a494f0055f.js"
|
|
73
73
|
],
|
|
74
74
|
"/api/stream/route": [
|
|
75
75
|
"static/chunks/webpack-1c485544eee88ef7.js",
|
|
76
76
|
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
|
77
|
-
"static/chunks/255-
|
|
77
|
+
"static/chunks/255-4f212684648fcab9.js",
|
|
78
78
|
"static/chunks/main-app-458501fc143f8dcb.js",
|
|
79
79
|
"static/chunks/app/api/stream/route-aaf047a494f0055f.js"
|
|
80
80
|
],
|
|
81
|
-
"/
|
|
81
|
+
"/login/page": [
|
|
82
82
|
"static/chunks/webpack-1c485544eee88ef7.js",
|
|
83
83
|
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
|
84
|
-
"static/chunks/255-
|
|
84
|
+
"static/chunks/255-4f212684648fcab9.js",
|
|
85
85
|
"static/chunks/main-app-458501fc143f8dcb.js",
|
|
86
86
|
"static/css/1f406f685b1e941e.css",
|
|
87
|
-
"static/chunks/app/
|
|
87
|
+
"static/chunks/app/login/page-f627cfc7a91a6d34.js"
|
|
88
88
|
],
|
|
89
|
-
"/
|
|
89
|
+
"/setup/page": [
|
|
90
90
|
"static/chunks/webpack-1c485544eee88ef7.js",
|
|
91
91
|
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
|
92
|
-
"static/chunks/255-
|
|
92
|
+
"static/chunks/255-4f212684648fcab9.js",
|
|
93
93
|
"static/chunks/main-app-458501fc143f8dcb.js",
|
|
94
94
|
"static/css/1f406f685b1e941e.css",
|
|
95
|
-
"static/chunks/app/
|
|
95
|
+
"static/chunks/app/setup/page-a01ab6e2460293c3.js"
|
|
96
96
|
],
|
|
97
97
|
"/page": [
|
|
98
98
|
"static/chunks/webpack-1c485544eee88ef7.js",
|
|
99
99
|
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
|
100
|
-
"static/chunks/255-
|
|
100
|
+
"static/chunks/255-4f212684648fcab9.js",
|
|
101
101
|
"static/chunks/main-app-458501fc143f8dcb.js",
|
|
102
102
|
"static/css/c3a7306cb2ba3f6c.css",
|
|
103
103
|
"static/chunks/856-4671c40140d5540a.js",
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
"/_not-found/page": "/_not-found",
|
|
3
3
|
"/api/auth/logout/route": "/api/auth/logout",
|
|
4
4
|
"/api/auth/session/route": "/api/auth/session",
|
|
5
|
-
"/api/auth/setup/route": "/api/auth/setup",
|
|
6
5
|
"/api/auth/login/route": "/api/auth/login",
|
|
6
|
+
"/api/auth/setup/route": "/api/auth/setup",
|
|
7
7
|
"/api/overview/route": "/api/overview",
|
|
8
|
+
"/api/tasks/[taskId]/route": "/api/tasks/[taskId]",
|
|
8
9
|
"/api/tasks/[taskId]/cancel/route": "/api/tasks/[taskId]/cancel",
|
|
9
10
|
"/api/tasks/[taskId]/conversation/route": "/api/tasks/[taskId]/conversation",
|
|
10
|
-
"/api/tasks/[taskId]/route": "/api/tasks/[taskId]",
|
|
11
11
|
"/api/stream/route": "/api/stream",
|
|
12
|
-
"/setup/page": "/setup",
|
|
13
12
|
"/login/page": "/login",
|
|
13
|
+
"/setup/page": "/setup",
|
|
14
14
|
"/page": "/"
|
|
15
15
|
}
|
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
"devFiles": [],
|
|
6
6
|
"ampDevFiles": [],
|
|
7
7
|
"lowPriorityFiles": [
|
|
8
|
-
"static/
|
|
9
|
-
"static/
|
|
8
|
+
"static/dOjvoQUj-mqwJ8kKG4peU/_buildManifest.js",
|
|
9
|
+
"static/dOjvoQUj-mqwJ8kKG4peU/_ssgManifest.js"
|
|
10
10
|
],
|
|
11
11
|
"rootMainFiles": [
|
|
12
12
|
"static/chunks/webpack-1c485544eee88ef7.js",
|
|
13
13
|
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
|
14
|
-
"static/chunks/255-
|
|
14
|
+
"static/chunks/255-4f212684648fcab9.js",
|
|
15
15
|
"static/chunks/main-app-458501fc143f8dcb.js"
|
|
16
16
|
],
|
|
17
17
|
"rootMainFilesTree": {},
|
|
@@ -19,13 +19,13 @@
|
|
|
19
19
|
"/_app": [
|
|
20
20
|
"static/chunks/webpack-1c485544eee88ef7.js",
|
|
21
21
|
"static/chunks/framework-de98b93a850cfc71.js",
|
|
22
|
-
"static/chunks/main-
|
|
22
|
+
"static/chunks/main-cec07dc17fdd452c.js",
|
|
23
23
|
"static/chunks/pages/_app-7d307437aca18ad4.js"
|
|
24
24
|
],
|
|
25
25
|
"/_error": [
|
|
26
26
|
"static/chunks/webpack-1c485544eee88ef7.js",
|
|
27
27
|
"static/chunks/framework-de98b93a850cfc71.js",
|
|
28
|
-
"static/chunks/main-
|
|
28
|
+
"static/chunks/main-cec07dc17fdd452c.js",
|
|
29
29
|
"static/chunks/pages/_error-cb2a52f75f2162e2.js"
|
|
30
30
|
]
|
|
31
31
|
},
|