@pat-lewczuk/cezar 0.1.1 → 0.1.2
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/config.d.ts +7 -0
- package/dist/config.js +5 -0
- package/dist/config.js.map +1 -1
- package/dist/git-worktree.d.ts +7 -0
- package/dist/git-worktree.js +14 -0
- package/dist/git-worktree.js.map +1 -1
- package/dist/runs/store.d.ts +2 -2
- package/dist/server/git.d.ts +5 -0
- package/dist/server/git.js +38 -0
- package/dist/server/git.js.map +1 -1
- package/dist/server/github.d.ts +2 -1
- package/dist/server/github.js +17 -10
- package/dist/server/github.js.map +1 -1
- package/dist/server/pr.js +7 -1
- package/dist/server/pr.js.map +1 -1
- package/dist/server/server.js +179 -16
- package/dist/server/server.js.map +1 -1
- package/dist/skills.d.ts +11 -9
- package/dist/skills.js +74 -13
- package/dist/skills.js.map +1 -1
- package/dist/workflows/load.js +5 -3
- package/dist/workflows/load.js.map +1 -1
- package/dist/workflows/run.js +21 -4
- package/dist/workflows/run.js.map +1 -1
- package/dist/workflows/types.d.ts +71 -8
- package/dist/workflows/types.js +52 -2
- package/dist/workflows/types.js.map +1 -1
- package/package.json +1 -1
- package/web/app.js +1036 -71
- package/web/index.html +15 -7
- package/web/open-mercato.svg +11 -0
- package/web/style.css +430 -48
|
@@ -80,10 +80,15 @@ export declare const workflowStepSchema: z.ZodEffects<z.ZodObject<{
|
|
|
80
80
|
max?: number | undefined;
|
|
81
81
|
} | undefined;
|
|
82
82
|
}>;
|
|
83
|
-
|
|
83
|
+
/**
|
|
84
|
+
* A workflow file names either full `steps` or the portable `skills` shorthand
|
|
85
|
+
* (spec 012 — what the builder exports): an ordered list of skill names, each
|
|
86
|
+
* becoming one agent step that applies that skill to `{{task}}`.
|
|
87
|
+
*/
|
|
88
|
+
export declare const workflowFileSchema: z.ZodEffects<z.ZodObject<{
|
|
84
89
|
name: z.ZodString;
|
|
85
90
|
description: z.ZodOptional<z.ZodString>;
|
|
86
|
-
steps: z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
91
|
+
steps: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
87
92
|
id: z.ZodString;
|
|
88
93
|
name: z.ZodOptional<z.ZodString>;
|
|
89
94
|
prompt: z.ZodOptional<z.ZodString>;
|
|
@@ -154,10 +159,47 @@ export declare const workflowFileSchema: z.ZodObject<{
|
|
|
154
159
|
retry: string;
|
|
155
160
|
max?: number | undefined;
|
|
156
161
|
} | undefined;
|
|
157
|
-
}>, "many"
|
|
162
|
+
}>, "many">>;
|
|
163
|
+
skills: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
158
164
|
}, "strip", z.ZodTypeAny, {
|
|
159
165
|
name: string;
|
|
160
|
-
steps
|
|
166
|
+
steps?: {
|
|
167
|
+
id: string;
|
|
168
|
+
name?: string | undefined;
|
|
169
|
+
model?: string | undefined;
|
|
170
|
+
skill?: string | undefined;
|
|
171
|
+
command?: string | undefined;
|
|
172
|
+
prompt?: string | undefined;
|
|
173
|
+
allowedTools?: string[] | undefined;
|
|
174
|
+
bashAllowlist?: string[] | undefined;
|
|
175
|
+
onFail?: {
|
|
176
|
+
retry: string;
|
|
177
|
+
max: number;
|
|
178
|
+
} | undefined;
|
|
179
|
+
}[] | undefined;
|
|
180
|
+
skills?: string[] | undefined;
|
|
181
|
+
description?: string | undefined;
|
|
182
|
+
}, {
|
|
183
|
+
name: string;
|
|
184
|
+
steps?: {
|
|
185
|
+
id: string;
|
|
186
|
+
name?: string | undefined;
|
|
187
|
+
model?: string | undefined;
|
|
188
|
+
skill?: string | undefined;
|
|
189
|
+
command?: string | undefined;
|
|
190
|
+
prompt?: string | undefined;
|
|
191
|
+
allowedTools?: string[] | undefined;
|
|
192
|
+
bashAllowlist?: string[] | undefined;
|
|
193
|
+
onFail?: {
|
|
194
|
+
retry: string;
|
|
195
|
+
max?: number | undefined;
|
|
196
|
+
} | undefined;
|
|
197
|
+
}[] | undefined;
|
|
198
|
+
skills?: string[] | undefined;
|
|
199
|
+
description?: string | undefined;
|
|
200
|
+
}>, {
|
|
201
|
+
name: string;
|
|
202
|
+
steps?: {
|
|
161
203
|
id: string;
|
|
162
204
|
name?: string | undefined;
|
|
163
205
|
model?: string | undefined;
|
|
@@ -170,11 +212,12 @@ export declare const workflowFileSchema: z.ZodObject<{
|
|
|
170
212
|
retry: string;
|
|
171
213
|
max: number;
|
|
172
214
|
} | undefined;
|
|
173
|
-
}[];
|
|
215
|
+
}[] | undefined;
|
|
216
|
+
skills?: string[] | undefined;
|
|
174
217
|
description?: string | undefined;
|
|
175
218
|
}, {
|
|
176
219
|
name: string;
|
|
177
|
-
steps
|
|
220
|
+
steps?: {
|
|
178
221
|
id: string;
|
|
179
222
|
name?: string | undefined;
|
|
180
223
|
model?: string | undefined;
|
|
@@ -187,14 +230,34 @@ export declare const workflowFileSchema: z.ZodObject<{
|
|
|
187
230
|
retry: string;
|
|
188
231
|
max?: number | undefined;
|
|
189
232
|
} | undefined;
|
|
190
|
-
}[];
|
|
233
|
+
}[] | undefined;
|
|
234
|
+
skills?: string[] | undefined;
|
|
191
235
|
description?: string | undefined;
|
|
192
236
|
}>;
|
|
193
237
|
export type WorkflowStepDef = z.infer<typeof workflowStepSchema>;
|
|
194
|
-
export
|
|
238
|
+
export type WorkflowDoc = z.infer<typeof workflowFileSchema>;
|
|
239
|
+
export interface WorkflowDef {
|
|
240
|
+
name: string;
|
|
241
|
+
description?: string;
|
|
242
|
+
steps: WorkflowStepDef[];
|
|
195
243
|
source: 'built-in' | 'file';
|
|
196
244
|
path?: string;
|
|
197
245
|
}
|
|
246
|
+
/** `skills: [a, b]` → agent steps, one per skill, each running `{{task}}`. */
|
|
247
|
+
export declare function skillsToSteps(skills: string[]): WorkflowStepDef[];
|
|
248
|
+
/** Resolve the steps/skills XOR into plain steps. */
|
|
249
|
+
export declare function normalizeWorkflowDoc(doc: WorkflowDoc): {
|
|
250
|
+
name: string;
|
|
251
|
+
description?: string;
|
|
252
|
+
steps: WorkflowStepDef[];
|
|
253
|
+
};
|
|
254
|
+
/**
|
|
255
|
+
* The inverse of `skillsToSteps`: when every step is a plain "apply this
|
|
256
|
+
* skill to the task" agent step, return the skill list — the workflow can be
|
|
257
|
+
* written in the portable compact form. Anything richer (checks, custom
|
|
258
|
+
* prompts, per-step models/tools, loops) returns null.
|
|
259
|
+
*/
|
|
260
|
+
export declare function skillStackOf(steps: WorkflowStepDef[]): string[] | null;
|
|
198
261
|
export declare function stepKind(step: WorkflowStepDef): 'agent' | 'check';
|
|
199
262
|
/**
|
|
200
263
|
* Structural checks beyond the per-step schema: ids must be unique and every
|
package/dist/workflows/types.js
CHANGED
|
@@ -30,11 +30,61 @@ export const workflowStepSchema = z
|
|
|
30
30
|
.refine((s) => Boolean(s.command) !== Boolean(s.prompt ?? s.skill), {
|
|
31
31
|
message: 'a step is either an agent step (prompt/skill) or a check step (command), not both',
|
|
32
32
|
});
|
|
33
|
-
|
|
33
|
+
/**
|
|
34
|
+
* A workflow file names either full `steps` or the portable `skills` shorthand
|
|
35
|
+
* (spec 012 — what the builder exports): an ordered list of skill names, each
|
|
36
|
+
* becoming one agent step that applies that skill to `{{task}}`.
|
|
37
|
+
*/
|
|
38
|
+
export const workflowFileSchema = z
|
|
39
|
+
.object({
|
|
34
40
|
name: z.string().min(1),
|
|
35
41
|
description: z.string().optional(),
|
|
36
|
-
steps: z.array(workflowStepSchema).min(1),
|
|
42
|
+
steps: z.array(workflowStepSchema).min(1).optional(),
|
|
43
|
+
skills: z.array(z.string().trim().min(1)).min(1).optional(),
|
|
44
|
+
})
|
|
45
|
+
.refine((d) => Boolean(d.steps) !== Boolean(d.skills), {
|
|
46
|
+
message: 'a workflow lists either "steps" or "skills", not both',
|
|
37
47
|
});
|
|
48
|
+
/** `skills: [a, b]` → agent steps, one per skill, each running `{{task}}`. */
|
|
49
|
+
export function skillsToSteps(skills) {
|
|
50
|
+
const used = new Set();
|
|
51
|
+
return skills.map((skill) => {
|
|
52
|
+
let id = skill;
|
|
53
|
+
for (let n = 2; used.has(id); n++)
|
|
54
|
+
id = `${skill}-${n}`;
|
|
55
|
+
used.add(id);
|
|
56
|
+
return { id, name: skill, skill, prompt: '{{task}}' };
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/** Resolve the steps/skills XOR into plain steps. */
|
|
60
|
+
export function normalizeWorkflowDoc(doc) {
|
|
61
|
+
return {
|
|
62
|
+
name: doc.name,
|
|
63
|
+
...(doc.description ? { description: doc.description } : {}),
|
|
64
|
+
steps: doc.steps ?? skillsToSteps(doc.skills ?? []),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* The inverse of `skillsToSteps`: when every step is a plain "apply this
|
|
69
|
+
* skill to the task" agent step, return the skill list — the workflow can be
|
|
70
|
+
* written in the portable compact form. Anything richer (checks, custom
|
|
71
|
+
* prompts, per-step models/tools, loops) returns null.
|
|
72
|
+
*/
|
|
73
|
+
export function skillStackOf(steps) {
|
|
74
|
+
const skills = [];
|
|
75
|
+
for (const s of steps) {
|
|
76
|
+
if (stepKind(s) !== 'agent' || !s.skill)
|
|
77
|
+
return null;
|
|
78
|
+
if (s.prompt !== undefined && s.prompt !== '{{task}}')
|
|
79
|
+
return null;
|
|
80
|
+
if (s.name !== undefined && s.name !== s.skill)
|
|
81
|
+
return null;
|
|
82
|
+
if (s.model || s.allowedTools || s.bashAllowlist || s.onFail)
|
|
83
|
+
return null;
|
|
84
|
+
skills.push(s.skill);
|
|
85
|
+
}
|
|
86
|
+
return skills.length ? skills : null;
|
|
87
|
+
}
|
|
38
88
|
export function stepKind(step) {
|
|
39
89
|
return step.command ? 'check' : 'agent';
|
|
40
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/workflows/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,aAAa;IACb,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5C,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC7C,aAAa;IACb,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,MAAM,EAAE,CAAC;SACN,MAAM,CAAC;QACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;KAC5C,CAAC;SACD,QAAQ,EAAE;CACd,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;IAClE,OAAO,EAAE,mFAAmF;CAC7F,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/workflows/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pat-lewczuk/cezar",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Local cockpit for running and tracking AI agent tasks in your repo. Uses your logged-in `claude` CLI and `gh` — zero config, zero database.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|