@captain_z/zsk 1.8.6 → 1.8.8

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 (108) hide show
  1. package/README.md +34 -16
  2. package/dist/bin.js +134 -0
  3. package/dist/bin.js.map +1 -1
  4. package/dist/commands/add-flow.js +7 -1
  5. package/dist/commands/add-flow.js.map +1 -1
  6. package/dist/commands/add.js +22 -5
  7. package/dist/commands/add.js.map +1 -1
  8. package/dist/commands/dispatch.d.ts +4 -0
  9. package/dist/commands/dispatch.js +483 -7
  10. package/dist/commands/dispatch.js.map +1 -1
  11. package/dist/commands/doctor.js +21 -5
  12. package/dist/commands/doctor.js.map +1 -1
  13. package/dist/commands/issue.d.ts +1 -0
  14. package/dist/commands/issue.js +2 -2
  15. package/dist/commands/issue.js.map +1 -1
  16. package/dist/commands/prepare.js +3 -0
  17. package/dist/commands/prepare.js.map +1 -1
  18. package/dist/commands/project-init.js +14 -8
  19. package/dist/commands/project-init.js.map +1 -1
  20. package/dist/commands/work.d.ts +34 -0
  21. package/dist/commands/work.js +1769 -0
  22. package/dist/commands/work.js.map +1 -0
  23. package/dist/commands/workflow.d.ts +32 -0
  24. package/dist/commands/workflow.js +270 -0
  25. package/dist/commands/workflow.js.map +1 -0
  26. package/dist/core/anchor-drift.d.ts +79 -0
  27. package/dist/core/anchor-drift.js +198 -0
  28. package/dist/core/anchor-drift.js.map +1 -0
  29. package/dist/core/config.d.ts +29 -0
  30. package/dist/core/config.js +157 -1
  31. package/dist/core/config.js.map +1 -1
  32. package/dist/core/decoupling-eval.d.ts +53 -0
  33. package/dist/core/decoupling-eval.js +260 -0
  34. package/dist/core/decoupling-eval.js.map +1 -0
  35. package/dist/core/issue-publish-adapter.d.ts +50 -0
  36. package/dist/core/issue-publish-adapter.js +371 -0
  37. package/dist/core/issue-publish-adapter.js.map +1 -0
  38. package/dist/core/prepare-artifacts.d.ts +2 -0
  39. package/dist/core/prepare-artifacts.js +2 -0
  40. package/dist/core/prepare-artifacts.js.map +1 -1
  41. package/dist/core/prepare-readiness.d.ts +40 -0
  42. package/dist/core/prepare-readiness.js +268 -0
  43. package/dist/core/prepare-readiness.js.map +1 -0
  44. package/dist/core/prepare-sync.d.ts +2 -0
  45. package/dist/core/prepare-sync.js +8 -16
  46. package/dist/core/prepare-sync.js.map +1 -1
  47. package/dist/core/review-skill-policy.d.ts +74 -0
  48. package/dist/core/review-skill-policy.js +278 -0
  49. package/dist/core/review-skill-policy.js.map +1 -0
  50. package/dist/core/skill-classification.d.ts +13 -0
  51. package/dist/core/skill-classification.js +50 -0
  52. package/dist/core/skill-classification.js.map +1 -0
  53. package/dist/core/source-snapshot-adapters.d.ts +3 -0
  54. package/dist/core/source-snapshot-adapters.js.map +1 -1
  55. package/dist/core/stage-clarity-verification.js +58 -7
  56. package/dist/core/stage-clarity-verification.js.map +1 -1
  57. package/dist/core/task-decomposition.d.ts +64 -0
  58. package/dist/core/task-decomposition.js +325 -0
  59. package/dist/core/task-decomposition.js.map +1 -0
  60. package/dist/core/task-plan-adapter.d.ts +57 -0
  61. package/dist/core/task-plan-adapter.js +298 -0
  62. package/dist/core/task-plan-adapter.js.map +1 -0
  63. package/dist/core/template-registry.js +26 -7
  64. package/dist/core/template-registry.js.map +1 -1
  65. package/dist/core/validation-packet.d.ts +86 -0
  66. package/dist/core/validation-packet.js +313 -0
  67. package/dist/core/validation-packet.js.map +1 -0
  68. package/dist/core/work-ledger.d.ts +44 -0
  69. package/dist/core/work-ledger.js +88 -0
  70. package/dist/core/work-ledger.js.map +1 -0
  71. package/dist/core/work-provider-adapters.d.ts +110 -0
  72. package/dist/core/work-provider-adapters.js +484 -0
  73. package/dist/core/work-provider-adapters.js.map +1 -0
  74. package/dist/core/workflow-graph.d.ts +100 -0
  75. package/dist/core/workflow-graph.js +655 -0
  76. package/dist/core/workflow-graph.js.map +1 -0
  77. package/dist/core/workflow-orchestration-policy.d.ts +92 -0
  78. package/dist/core/workflow-orchestration-policy.js +215 -0
  79. package/dist/core/workflow-orchestration-policy.js.map +1 -0
  80. package/dist/core/workspace-conformance.js +55 -0
  81. package/dist/core/workspace-conformance.js.map +1 -1
  82. package/dist/core/workspace-layout.d.ts +3 -1
  83. package/dist/core/workspace-layout.js +4 -0
  84. package/dist/core/workspace-layout.js.map +1 -1
  85. package/package.json +2 -2
  86. package/schemas/zsk-config.schema.json +112 -1
  87. package/templates/module/frontend-module/CONTEXT.md +22 -0
  88. package/templates/module/frontend-module/design.md +1 -1
  89. package/templates/module/frontend-module/proposal.md +1 -1
  90. package/templates/module/frontend-module/spec.md +1 -1
  91. package/templates/module/frontend-module/tasks.md +14 -1
  92. package/templates/project-init/.zsk/CONTEXT.md +35 -0
  93. package/templates/project-init/.zsk/README.md +94 -10
  94. package/templates/project-init/.zsk/config.yaml +2 -0
  95. package/templates/project-init/.zsk/docs/CONFIG-SCHEMA.md +13 -1
  96. package/templates/project-init/.zsk/docs/PROJECT-CONFIG.md +25 -7
  97. package/templates/project-init/.zsk/docs/SYSTEM-SPEC.md +1 -0
  98. package/templates/project-init/.zsk/team.yaml +218 -0
  99. package/templates/project-init/.zsk/work.yaml +75 -0
  100. package/templates/project-init/.zsk/evidence/README.md +0 -21
  101. package/templates/project-init/.zsk/evidence/prepare/README.md +0 -22
  102. package/templates/project-init/.zsk/issues/README.md +0 -10
  103. package/templates/project-init/.zsk/templates/module/README.md +0 -13
  104. package/templates/project-init/.zsk/templates/module/design.md +0 -22
  105. package/templates/project-init/.zsk/templates/module/module.yaml +0 -15
  106. package/templates/project-init/.zsk/templates/module/proposal.md +0 -20
  107. package/templates/project-init/.zsk/templates/module/spec.md +0 -22
  108. package/templates/project-init/.zsk/templates/module/tasks.md +0 -16
@@ -0,0 +1,484 @@
1
+ export const workProviderAdapters = {
2
+ "generic-issue": genericIssueWorkProviderAdapter(),
3
+ multica: multicaWorkProviderAdapter(),
4
+ };
5
+ export function buildProviderCommandPlan(input) {
6
+ const adapter = resolveWorkProviderAdapter(input.provider, input.providerConfig);
7
+ const executable = providerCommandExecutable(input.provider, input.providerConfig, adapter);
8
+ const commands = input.items.map((item, index) => adapter.buildItemCommand({
9
+ item,
10
+ event: input.events[index],
11
+ provider: input.provider,
12
+ providerConfig: input.providerConfig,
13
+ providerConfigured: input.providerConfigured,
14
+ executable,
15
+ }));
16
+ return {
17
+ mode: "dry-run",
18
+ adapter: input.providerConfig.adapter ?? null,
19
+ executable,
20
+ commandCount: commands.filter((command) => command.ready && command.operation !== "no-op").length,
21
+ blockedCount: commands.filter((command) => !command.ready).length,
22
+ commands,
23
+ };
24
+ }
25
+ export function buildAssignmentProviderCommandPlan(input) {
26
+ const adapter = resolveWorkProviderAdapter(input.provider, input.providerConfig);
27
+ const executable = providerCommandExecutable(input.provider, input.providerConfig, adapter);
28
+ const command = adapter.buildAssignmentCommand({
29
+ ...input,
30
+ executable,
31
+ });
32
+ const commands = [command];
33
+ return {
34
+ mode: "dry-run",
35
+ adapter: input.providerConfig.adapter ?? null,
36
+ executable,
37
+ commandCount: commands.filter((item) => item.ready).length,
38
+ blockedCount: commands.filter((item) => !item.ready).length,
39
+ commands,
40
+ };
41
+ }
42
+ export function assignmentProviderRef(assignment, provider) {
43
+ const providerRefs = assignment.providerRefs;
44
+ if (isRecord(providerRefs)) {
45
+ const providerRef = providerRefs[provider];
46
+ if (typeof providerRef === "string" && providerRef.trim())
47
+ return providerRef.trim();
48
+ if (isRecord(providerRef)) {
49
+ for (const key of ["agent", "squad", "id"]) {
50
+ const candidate = providerRef[key];
51
+ if (typeof candidate === "string" && candidate.trim())
52
+ return candidate.trim();
53
+ }
54
+ }
55
+ }
56
+ for (const key of ["providerAgent", "agent", "squad", "assignee", "owner"]) {
57
+ const candidate = assignment[key];
58
+ if (typeof candidate === "string" && candidate.trim())
59
+ return candidate.trim();
60
+ }
61
+ return null;
62
+ }
63
+ export function commandDisplayWithMetadata(command) {
64
+ const display = command.display || command.notes.join("; ");
65
+ const metadata = commandMetadataSummary(command.metadata);
66
+ return [display, metadata].filter(Boolean).join("; ");
67
+ }
68
+ function resolveWorkProviderAdapter(provider, providerConfig) {
69
+ const adapterId = providerConfig.adapter ?? provider;
70
+ return workProviderAdapters[adapterId] ?? workProviderAdapters["generic-issue"];
71
+ }
72
+ function genericIssueWorkProviderAdapter() {
73
+ return {
74
+ id: "generic-issue",
75
+ defaultExecutable: ({ provider, providerConfig }) => providerConfig.adapter ?? provider,
76
+ buildItemCommand: genericIssueProviderCommandForItem,
77
+ buildAssignmentCommand: genericIssueAssignmentProviderCommand,
78
+ };
79
+ }
80
+ function multicaWorkProviderAdapter() {
81
+ return {
82
+ ...genericIssueWorkProviderAdapter(),
83
+ id: "multica",
84
+ defaultExecutable: () => "multica",
85
+ };
86
+ }
87
+ function genericIssueAssignmentProviderCommand(input) {
88
+ const blockedReasons = [];
89
+ const notes = [];
90
+ if (!input.providerConfigured)
91
+ blockedReasons.push("provider.workspace");
92
+ if (!input.workItem.project)
93
+ blockedReasons.push("workItem.project");
94
+ if (!input.workItem.module)
95
+ blockedReasons.push("workItem.module");
96
+ if (!input.workItem.stage)
97
+ blockedReasons.push("workItem.stage");
98
+ const assignee = input.assignment.providerAgent ?? input.assignment.agent ?? input.assignment.squad;
99
+ if (!assignee)
100
+ blockedReasons.push("assignment.assignee");
101
+ if (input.assignment.mode === "role") {
102
+ notes.push("role-only assignment needs a concrete agent or squad before provider execution");
103
+ }
104
+ const syncLikeItem = {
105
+ line: 0,
106
+ event: "work.assignment.requested",
107
+ action: "request-assignment",
108
+ localId: input.workItem.id,
109
+ project: input.workItem.project,
110
+ module: input.workItem.module,
111
+ stage: input.workItem.stage,
112
+ localStatus: null,
113
+ providerStatus: null,
114
+ remoteRef: null,
115
+ remoteReady: blockedReasons.length === 0,
116
+ blockedReasons: [],
117
+ };
118
+ return providerCommand(syncLikeItem, input.executable, "issue.assign", compactArgs([
119
+ "issue",
120
+ "assign",
121
+ ...providerBaseArgs(input.providerConfig.workspace ?? "", syncLikeItem),
122
+ "--stage",
123
+ input.workItem.stage ?? "",
124
+ "--role",
125
+ input.assignment.role,
126
+ "--assignee",
127
+ assignee ?? "",
128
+ "--assignment-mode",
129
+ input.assignment.mode,
130
+ "--rationale",
131
+ input.assignment.rationale,
132
+ "--json",
133
+ ]), blockedReasons, notes, blockedReasons.length === 0, assignmentCommandMetadata({
134
+ mode: input.assignment.mode,
135
+ role: input.assignment.role,
136
+ agent: input.assignment.agent,
137
+ squad: input.assignment.squad,
138
+ providerAgent: input.assignment.providerAgent,
139
+ rationale: input.assignment.rationale,
140
+ }, "", undefined));
141
+ }
142
+ function genericIssueProviderCommandForItem(input) {
143
+ const notes = [];
144
+ const blockedReasons = [...input.item.blockedReasons];
145
+ if (!input.providerConfigured)
146
+ blockedReasons.push("provider.workspace");
147
+ if (input.item.action === "record-provider-status-import") {
148
+ notes.push("provider status import is local reconciliation; do not echo it back to the provider");
149
+ return providerCommand(input.item, input.executable, "no-op", [], [], notes);
150
+ }
151
+ const command = genericIssueCommandArgsForAction(input);
152
+ const ready = blockedReasons.length === 0 && command.blockedReasons.length === 0;
153
+ return providerCommand(input.item, input.executable, command.operation, command.argv, [
154
+ ...blockedReasons,
155
+ ...command.blockedReasons,
156
+ ], [
157
+ ...notes,
158
+ ...command.notes,
159
+ ], ready, command.metadata);
160
+ }
161
+ function genericIssueCommandArgsForAction(input) {
162
+ const { item, event, providerConfig } = input;
163
+ const workspace = providerConfig.workspace ?? "";
164
+ const sourceArtifacts = stringsOf(event?.workItem?.sourceArtifacts);
165
+ const title = typeof event?.workItem?.title === "string" ? event.workItem.title : "";
166
+ const remoteRef = remoteRefString(item.remoteRef);
167
+ const base = providerBaseArgs(workspace, item);
168
+ const blockedReasons = [];
169
+ const notes = [];
170
+ switch (item.action) {
171
+ case "create-or-update-work-item": {
172
+ if (!title)
173
+ blockedReasons.push("workItem.title");
174
+ if (!item.providerStatus)
175
+ blockedReasons.push("providerStatus");
176
+ return {
177
+ operation: "issue.upsert",
178
+ argv: compactArgs([
179
+ "issue",
180
+ "upsert",
181
+ ...base,
182
+ "--type",
183
+ typeof event?.workItem?.type === "string" ? event.workItem.type : "task",
184
+ "--stage",
185
+ item.stage ?? "",
186
+ "--title",
187
+ title,
188
+ "--status",
189
+ item.providerStatus ?? "",
190
+ ...sourceArgs(sourceArtifacts),
191
+ "--idempotency-key",
192
+ item.localId ?? "",
193
+ "--json",
194
+ ]),
195
+ blockedReasons,
196
+ notes,
197
+ };
198
+ }
199
+ case "update-links": {
200
+ if (sourceArtifacts.length === 0)
201
+ blockedReasons.push("workItem.sourceArtifacts");
202
+ const link = linkCommandMetadata(event);
203
+ return {
204
+ operation: "issue.link",
205
+ argv: compactArgs([
206
+ "issue",
207
+ "link",
208
+ ...base,
209
+ ...remoteRefArgs(remoteRef),
210
+ ...linkArgs(link),
211
+ ...sourceArgs(sourceArtifacts),
212
+ "--json",
213
+ ]),
214
+ blockedReasons,
215
+ notes,
216
+ metadata: link,
217
+ };
218
+ }
219
+ case "update-status":
220
+ case "mark-verified":
221
+ case "mark-blocked": {
222
+ if (!item.providerStatus)
223
+ blockedReasons.push("providerStatus");
224
+ return {
225
+ operation: "issue.status",
226
+ argv: compactArgs(["issue", "status", "set", ...base, ...remoteRefArgs(remoteRef), "--status", item.providerStatus ?? "", "--json"]),
227
+ blockedReasons,
228
+ notes,
229
+ };
230
+ }
231
+ case "request-assignment":
232
+ case "confirm-assignment": {
233
+ const assignment = event?.assignment ?? {};
234
+ const assignee = assignmentProviderRef(assignment, input.provider);
235
+ const role = typeof assignment.role === "string" && assignment.role.trim() ? assignment.role.trim() : null;
236
+ const mode = typeof assignment.mode === "string" && assignment.mode.trim() ? assignment.mode.trim() : null;
237
+ const rationale = typeof assignment.rationale === "string" && assignment.rationale.trim() ? assignment.rationale.trim() : null;
238
+ if (!assignee)
239
+ blockedReasons.push("assignment.assignee");
240
+ if (!role)
241
+ blockedReasons.push("assignment.role");
242
+ if (!mode)
243
+ blockedReasons.push("assignment.mode");
244
+ if (!rationale)
245
+ blockedReasons.push("assignment.rationale");
246
+ return {
247
+ operation: "issue.assign",
248
+ argv: compactArgs([
249
+ "issue",
250
+ "assign",
251
+ ...base,
252
+ ...remoteRefArgs(remoteRef),
253
+ "--stage",
254
+ item.stage ?? "",
255
+ "--role",
256
+ role ?? "",
257
+ "--assignee",
258
+ assignee ?? "",
259
+ "--assignment-mode",
260
+ mode ?? "",
261
+ "--rationale",
262
+ rationale ?? "",
263
+ "--json",
264
+ ]),
265
+ blockedReasons,
266
+ notes,
267
+ metadata: assignmentCommandMetadata(assignment, input.provider, event),
268
+ };
269
+ }
270
+ case "add-comment": {
271
+ const comment = commentText(event);
272
+ if (!comment)
273
+ blockedReasons.push("comment.text");
274
+ return {
275
+ operation: "issue.comment",
276
+ argv: compactArgs(["issue", "comment", "add", ...base, ...remoteRefArgs(remoteRef), "--body", comment ?? "", "--json"]),
277
+ blockedReasons,
278
+ notes,
279
+ };
280
+ }
281
+ default:
282
+ notes.push(`no provider command template for action: ${item.action}`);
283
+ return { operation: "inspect", argv: compactArgs(["inspect", ...base, "--json"]), blockedReasons: [], notes };
284
+ }
285
+ }
286
+ function providerCommand(item, executable, operation, argv, blockedReasons, notes, ready = blockedReasons.length === 0, metadata = {}) {
287
+ const commandArgv = operation === "no-op" ? [] : argv;
288
+ return {
289
+ line: item.line,
290
+ action: item.action,
291
+ operation,
292
+ executable,
293
+ argv: commandArgv,
294
+ display: commandArgv.length > 0 ? shellCommandDisplay(executable, commandArgv) : "",
295
+ metadata: compactRecord(metadata),
296
+ dryRun: true,
297
+ remoteSideEffects: "none",
298
+ ready,
299
+ blockedReasons,
300
+ notes,
301
+ };
302
+ }
303
+ function providerCommandExecutable(provider, providerConfig, adapter) {
304
+ const configured = providerConfig.commandPlan?.executable;
305
+ if (typeof configured === "string" && configured.trim())
306
+ return configured.trim();
307
+ return adapter.defaultExecutable({ provider, providerConfig });
308
+ }
309
+ function providerBaseArgs(workspace, item) {
310
+ return [
311
+ ...optionArg("--workspace", workspace),
312
+ ...optionArg("--project", item.project),
313
+ ...optionArg("--module", item.module),
314
+ ...optionArg("--local-id", item.localId),
315
+ ];
316
+ }
317
+ function sourceArgs(sourceArtifacts) {
318
+ return sourceArtifacts.flatMap((artifact) => optionArg("--source", artifact));
319
+ }
320
+ function remoteRefArgs(remoteRef) {
321
+ return optionArg("--remote-id", remoteRef);
322
+ }
323
+ function linkArgs(link) {
324
+ return [
325
+ ...optionArg("--relation", stringOf(link.relation)),
326
+ ...optionArg("--parent-local-id", stringOf(link.parentId)),
327
+ ...optionArg("--child-local-id", stringOf(link.childId)),
328
+ ];
329
+ }
330
+ function optionArg(flag, value) {
331
+ return value && value.trim() ? [flag, value.trim()] : [];
332
+ }
333
+ function compactArgs(args) {
334
+ return args.map((arg) => arg.trim()).filter(Boolean);
335
+ }
336
+ function remoteRefString(value) {
337
+ if (typeof value === "string" && value.trim())
338
+ return value.trim();
339
+ if (!isRecord(value))
340
+ return null;
341
+ for (const key of ["id", "remoteId", "issueId", "url"]) {
342
+ const candidate = value[key];
343
+ if (typeof candidate === "string" && candidate.trim())
344
+ return candidate.trim();
345
+ }
346
+ return null;
347
+ }
348
+ function assignmentCommandMetadata(assignment, provider, event) {
349
+ const selection = isRecord(assignment.selection)
350
+ ? compactRecord({
351
+ source: stringOf(assignment.selection.source),
352
+ score: numberOf(assignment.selection.score),
353
+ reasons: uniqueStrings(stringsOf(assignment.selection.reasons)),
354
+ })
355
+ : {};
356
+ const assignmentMetadata = compactRecord({
357
+ mode: stringOf(assignment.mode),
358
+ role: stringOf(assignment.role),
359
+ staffingRole: stringOf(assignment.staffingRole),
360
+ agent: stringOf(assignment.agent),
361
+ squad: stringOf(assignment.squad),
362
+ providerAgent: stringOf(assignment.providerAgent),
363
+ assignee: assignmentProviderRef(assignment, provider),
364
+ subagentType: stringOf(assignment.subagentType),
365
+ route: stringOf(assignment.route),
366
+ selection,
367
+ });
368
+ const providerRefs = isRecord(assignment.providerRefs) ? assignment.providerRefs : {};
369
+ const links = isRecord(event?.links)
370
+ ? compactRecord({
371
+ provider: stringOf(event.links.provider),
372
+ dispatchRun: stringOf(event.links.dispatchRun),
373
+ dispatchPlan: stringOf(event.links.dispatchPlan),
374
+ staffingRole: stringOf(event.links.staffingRole),
375
+ stageGate: stringOf(event.links.stageGate),
376
+ assignmentPlan: stringOf(event.links.assignmentPlan),
377
+ })
378
+ : {};
379
+ const evidence = isRecord(event?.evidence)
380
+ ? compactRecord({
381
+ dispatchPlan: stringOf(event.evidence.dispatchPlan),
382
+ stageGate: stringOf(event.evidence.stageGate),
383
+ assignmentPlan: stringOf(event.evidence.assignmentPlan),
384
+ })
385
+ : {};
386
+ return compactRecord({
387
+ assignment: assignmentMetadata,
388
+ providerRefs,
389
+ links,
390
+ evidence,
391
+ });
392
+ }
393
+ function linkCommandMetadata(event) {
394
+ const links = isRecord(event?.links) ? event.links : {};
395
+ return compactRecord({
396
+ relation: stringOf(links.relation),
397
+ parentId: stringOf(links.parentId),
398
+ childId: stringOf(links.childId),
399
+ taskArtifact: stringOf(links.taskArtifact),
400
+ linkedRefs: stringOf(links.linkedRefs),
401
+ });
402
+ }
403
+ function commandMetadataSummary(metadata) {
404
+ const assignment = isRecord(metadata.assignment) ? metadata.assignment : {};
405
+ const selection = isRecord(assignment.selection) ? assignment.selection : {};
406
+ const parts = [
407
+ stringOf(assignment.staffingRole) ? `staffing=${stringOf(assignment.staffingRole)}` : "",
408
+ stringOf(assignment.subagentType) ? `subagent=${stringOf(assignment.subagentType)}` : "",
409
+ stringOf(selection.source) ? `selection=${stringOf(selection.source)}${numberOf(selection.score) === null ? "" : `:${numberOf(selection.score)}`}` : "",
410
+ ].filter(Boolean);
411
+ return parts.length > 0 ? `metadata ${parts.join(", ")}` : "";
412
+ }
413
+ function commentText(event) {
414
+ for (const value of [event?.comment, event?.message, event?.note, event?.status?.comment]) {
415
+ if (typeof value === "string" && value.trim())
416
+ return value.trim();
417
+ }
418
+ return null;
419
+ }
420
+ function shellCommandDisplay(executable, argv) {
421
+ return [executable, ...argv].map(shellQuote).join(" ");
422
+ }
423
+ function shellQuote(value) {
424
+ if (/^[A-Za-z0-9_./:=@%+-]+$/.test(value))
425
+ return value;
426
+ return `'${value.replace(/'/g, `'\\''`)}'`;
427
+ }
428
+ function stringOf(value) {
429
+ return typeof value === "string" && value.trim() ? value.trim() : null;
430
+ }
431
+ function numberOf(value) {
432
+ if (typeof value === "number" && Number.isFinite(value))
433
+ return value;
434
+ if (typeof value === "string" && value.trim()) {
435
+ const parsed = Number(value);
436
+ return Number.isFinite(parsed) ? parsed : null;
437
+ }
438
+ return null;
439
+ }
440
+ function stringsOf(value) {
441
+ if (typeof value === "string" && value.trim())
442
+ return [value.trim()];
443
+ if (Array.isArray(value))
444
+ return value.flatMap(stringsOf);
445
+ if (!isRecord(value))
446
+ return [];
447
+ const strings = [];
448
+ for (const key of [
449
+ "path",
450
+ "file",
451
+ "issuePath",
452
+ "issueFile",
453
+ "taskPath",
454
+ "taskFile",
455
+ "artifactPath",
456
+ "artifactFile",
457
+ "localArtifact",
458
+ "sourceArtifact",
459
+ "sourceArtifacts",
460
+ ]) {
461
+ strings.push(...stringsOf(value[key]));
462
+ }
463
+ return strings;
464
+ }
465
+ function uniqueStrings(values) {
466
+ return [...new Set(values.map((value) => value.trim()).filter(Boolean))];
467
+ }
468
+ function compactRecord(value) {
469
+ const result = {};
470
+ for (const [key, item] of Object.entries(value)) {
471
+ if (item === null || item === undefined)
472
+ continue;
473
+ if (Array.isArray(item) && item.length === 0)
474
+ continue;
475
+ if (isRecord(item) && Object.keys(item).length === 0)
476
+ continue;
477
+ result[key] = item;
478
+ }
479
+ return result;
480
+ }
481
+ function isRecord(value) {
482
+ return typeof value === "object" && value !== null && !Array.isArray(value);
483
+ }
484
+ //# sourceMappingURL=work-provider-adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-provider-adapters.js","sourceRoot":"","sources":["../../src/core/work-provider-adapters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ import type { ProjectConfig } from "./config.js";
2
+ export type WorkflowStageStatus = "pending" | "running" | "passed" | "blocked" | "skipped";
3
+ export type WorkflowGraphStage = {
4
+ id: string;
5
+ skill: string;
6
+ status: WorkflowStageStatus;
7
+ reason: string;
8
+ dependsOn: string[];
9
+ inputs: string[];
10
+ outputs: string[];
11
+ qualityGate: string;
12
+ failureReturnsTo: string;
13
+ capabilities: string[];
14
+ commandHints: string[];
15
+ updatedAt?: string;
16
+ note?: string;
17
+ };
18
+ export type WorkflowGraph = {
19
+ version: 1;
20
+ runId: string;
21
+ createdAt: string;
22
+ updatedAt: string;
23
+ goal: string;
24
+ project: {
25
+ name: string;
26
+ module?: string;
27
+ template: string;
28
+ };
29
+ profile: string;
30
+ strategy: string;
31
+ selection: {
32
+ source: "auto" | "explicit";
33
+ preferMinimalStages: boolean;
34
+ preferEvidenceStages: boolean;
35
+ allowCustomStages: boolean;
36
+ requireStageContract: boolean;
37
+ reasons: string[];
38
+ };
39
+ stages: WorkflowGraphStage[];
40
+ stopCondition: string;
41
+ artifacts: {
42
+ yaml: string;
43
+ json: string;
44
+ markdown: string;
45
+ current: string;
46
+ };
47
+ };
48
+ export type WorkflowGraphOptions = {
49
+ goal?: string;
50
+ profile?: string;
51
+ module?: string;
52
+ stages?: string;
53
+ runId?: string;
54
+ };
55
+ export type WorkflowGraphBundle = {
56
+ graph: WorkflowGraph;
57
+ markdown: string;
58
+ artifacts: {
59
+ dir: string;
60
+ yamlPath: string;
61
+ jsonPath: string;
62
+ markdownPath: string;
63
+ currentPath: string;
64
+ };
65
+ };
66
+ export type WorkflowGraphMarkOptions = {
67
+ runId?: string;
68
+ stage: string;
69
+ status: WorkflowStageStatus;
70
+ note?: string;
71
+ };
72
+ export type WorkflowGraphAdvanceOptions = {
73
+ runId?: string;
74
+ stage?: string;
75
+ };
76
+ export type WorkflowAdvanceAction = "passed" | "blocked" | "unchanged";
77
+ export type WorkflowAdvanceResult = {
78
+ runId: string;
79
+ stage?: string;
80
+ previousStatus?: WorkflowStageStatus;
81
+ status?: WorkflowStageStatus;
82
+ action: WorkflowAdvanceAction;
83
+ reason: string;
84
+ evidence: string[];
85
+ next?: WorkflowGraphStage;
86
+ };
87
+ export type WorkflowGraphAdvanceBundle = WorkflowGraphBundle & {
88
+ result: WorkflowAdvanceResult;
89
+ updated: boolean;
90
+ };
91
+ export declare function buildWorkflowGraphBundle(target: string, config: ProjectConfig, opts?: WorkflowGraphOptions): Promise<WorkflowGraphBundle>;
92
+ export declare function writeWorkflowGraphBundle(bundle: WorkflowGraphBundle): Promise<void>;
93
+ export declare function loadWorkflowGraph(target: string, config: ProjectConfig, runId?: string): Promise<{
94
+ graph: WorkflowGraph;
95
+ path: string;
96
+ }>;
97
+ export declare function markWorkflowStage(target: string, config: ProjectConfig, opts: WorkflowGraphMarkOptions): Promise<WorkflowGraphBundle>;
98
+ export declare function advanceWorkflowGraph(target: string, config: ProjectConfig, opts?: WorkflowGraphAdvanceOptions): Promise<WorkflowGraphAdvanceBundle>;
99
+ export declare function nextWorkflowStage(graph: WorkflowGraph): WorkflowGraphStage | undefined;
100
+ export declare function renderWorkflowGraphMarkdown(graph: WorkflowGraph): string;