@yattalo/task-system 0.1.0

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 (94) hide show
  1. package/README.md +66 -0
  2. package/dist/commands/dashboard.d.ts +7 -0
  3. package/dist/commands/dashboard.d.ts.map +1 -0
  4. package/dist/commands/dashboard.js +30 -0
  5. package/dist/commands/dashboard.js.map +1 -0
  6. package/dist/commands/init.d.ts +8 -0
  7. package/dist/commands/init.d.ts.map +1 -0
  8. package/dist/commands/init.js +316 -0
  9. package/dist/commands/init.js.map +1 -0
  10. package/dist/commands/kanban.d.ts +7 -0
  11. package/dist/commands/kanban.d.ts.map +1 -0
  12. package/dist/commands/kanban.js +68 -0
  13. package/dist/commands/kanban.js.map +1 -0
  14. package/dist/commands/report.d.ts +8 -0
  15. package/dist/commands/report.d.ts.map +1 -0
  16. package/dist/commands/report.js +60 -0
  17. package/dist/commands/report.js.map +1 -0
  18. package/dist/commands/seed.d.ts +6 -0
  19. package/dist/commands/seed.d.ts.map +1 -0
  20. package/dist/commands/seed.js +30 -0
  21. package/dist/commands/seed.js.map +1 -0
  22. package/dist/commands/status.d.ts +6 -0
  23. package/dist/commands/status.d.ts.map +1 -0
  24. package/dist/commands/status.js +62 -0
  25. package/dist/commands/status.js.map +1 -0
  26. package/dist/generators/agent-ops-scripts.d.ts +8 -0
  27. package/dist/generators/agent-ops-scripts.d.ts.map +1 -0
  28. package/dist/generators/agent-ops-scripts.js +843 -0
  29. package/dist/generators/agent-ops-scripts.js.map +1 -0
  30. package/dist/generators/agent-ops.d.ts +6 -0
  31. package/dist/generators/agent-ops.d.ts.map +1 -0
  32. package/dist/generators/agent-ops.js +290 -0
  33. package/dist/generators/agent-ops.js.map +1 -0
  34. package/dist/generators/claude-hooks.d.ts +6 -0
  35. package/dist/generators/claude-hooks.d.ts.map +1 -0
  36. package/dist/generators/claude-hooks.js +260 -0
  37. package/dist/generators/claude-hooks.js.map +1 -0
  38. package/dist/generators/cli-aliases.d.ts +6 -0
  39. package/dist/generators/cli-aliases.d.ts.map +1 -0
  40. package/dist/generators/cli-aliases.js +187 -0
  41. package/dist/generators/cli-aliases.js.map +1 -0
  42. package/dist/generators/dashboard.d.ts +6 -0
  43. package/dist/generators/dashboard.d.ts.map +1 -0
  44. package/dist/generators/dashboard.js +732 -0
  45. package/dist/generators/dashboard.js.map +1 -0
  46. package/dist/generators/git-hook.d.ts +6 -0
  47. package/dist/generators/git-hook.d.ts.map +1 -0
  48. package/dist/generators/git-hook.js +163 -0
  49. package/dist/generators/git-hook.js.map +1 -0
  50. package/dist/generators/http.d.ts +6 -0
  51. package/dist/generators/http.d.ts.map +1 -0
  52. package/dist/generators/http.js +175 -0
  53. package/dist/generators/http.js.map +1 -0
  54. package/dist/generators/orchestrator.d.ts +6 -0
  55. package/dist/generators/orchestrator.d.ts.map +1 -0
  56. package/dist/generators/orchestrator.js +391 -0
  57. package/dist/generators/orchestrator.js.map +1 -0
  58. package/dist/generators/schema.d.ts +8 -0
  59. package/dist/generators/schema.d.ts.map +1 -0
  60. package/dist/generators/schema.js +470 -0
  61. package/dist/generators/schema.js.map +1 -0
  62. package/dist/generators/skill.d.ts +6 -0
  63. package/dist/generators/skill.d.ts.map +1 -0
  64. package/dist/generators/skill.js +147 -0
  65. package/dist/generators/skill.js.map +1 -0
  66. package/dist/generators/slash-commands.d.ts +6 -0
  67. package/dist/generators/slash-commands.d.ts.map +1 -0
  68. package/dist/generators/slash-commands.js +268 -0
  69. package/dist/generators/slash-commands.js.map +1 -0
  70. package/dist/generators/tasks.d.ts +6 -0
  71. package/dist/generators/tasks.d.ts.map +1 -0
  72. package/dist/generators/tasks.js +451 -0
  73. package/dist/generators/tasks.js.map +1 -0
  74. package/dist/index.d.ts +3 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +54 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/presets/research.d.ts +3 -0
  79. package/dist/presets/research.d.ts.map +1 -0
  80. package/dist/presets/research.js +56 -0
  81. package/dist/presets/research.js.map +1 -0
  82. package/dist/presets/software.d.ts +3 -0
  83. package/dist/presets/software.d.ts.map +1 -0
  84. package/dist/presets/software.js +56 -0
  85. package/dist/presets/software.js.map +1 -0
  86. package/dist/utils/detect.d.ts +3 -0
  87. package/dist/utils/detect.d.ts.map +1 -0
  88. package/dist/utils/detect.js +76 -0
  89. package/dist/utils/detect.js.map +1 -0
  90. package/dist/utils/merge.d.ts +14 -0
  91. package/dist/utils/merge.d.ts.map +1 -0
  92. package/dist/utils/merge.js +43 -0
  93. package/dist/utils/merge.js.map +1 -0
  94. package/package.json +39 -0
@@ -0,0 +1,470 @@
1
+ // ============================================================
2
+ // Generator: Layer 0 — Convex Schema
3
+ // Generates convex/taskSystem/schema.ts
4
+ // ============================================================
5
+ import { writeFileSync } from "node:fs";
6
+ import { join } from "node:path";
7
+ import { hasSoftwareExtensions, hasResearchExtensions, getTableName, } from "@yattalo/task-system-core";
8
+ export function generateSchema(ctx) {
9
+ const { config, targetDir, dryRun } = ctx;
10
+ const tableName = getTableName(config);
11
+ const isSoftware = hasSoftwareExtensions(config);
12
+ const isResearch = hasResearchExtensions(config);
13
+ const hasAgentOps = config.extensions.agentOps;
14
+ const lines = [];
15
+ // Header
16
+ lines.push(`// ============================================================`);
17
+ lines.push(`// Task System Schema — generated by @yattalo/task-system`);
18
+ lines.push(`// Project: ${config.projectName}`);
19
+ lines.push(`// DO NOT EDIT MANUALLY — re-run 'npx @yattalo/task-system init' to update`);
20
+ lines.push(`// ============================================================`);
21
+ lines.push(``);
22
+ lines.push(`import { defineTable } from "convex/server";`);
23
+ lines.push(`import { v } from "convex/values";`);
24
+ lines.push(``);
25
+ lines.push(`export const taskSystemTables = {`);
26
+ // ── Main task table ──
27
+ lines.push(` // Main task table`);
28
+ lines.push(` ${tableName}: defineTable({`);
29
+ // Core Identification
30
+ lines.push(` // Core Identification`);
31
+ lines.push(` taskId: v.string(),`);
32
+ lines.push(` agent: v.union(`);
33
+ for (const agentKey of Object.keys(config.agents)) {
34
+ lines.push(` v.literal("${agentKey}"),`);
35
+ }
36
+ lines.push(` ),`);
37
+ lines.push(``);
38
+ // Content
39
+ lines.push(` // Content`);
40
+ lines.push(` title: v.string(),`);
41
+ lines.push(` description: v.optional(v.string()),`);
42
+ lines.push(` acceptanceCriteria: v.optional(v.array(v.string())),`);
43
+ lines.push(``);
44
+ // Categorization
45
+ lines.push(` // Categorization`);
46
+ lines.push(` priority: v.union(`);
47
+ lines.push(` v.literal("CRITICAL"),`);
48
+ lines.push(` v.literal("HIGH"),`);
49
+ lines.push(` v.literal("MEDIUM"),`);
50
+ lines.push(` v.literal("LOW"),`);
51
+ lines.push(` ),`);
52
+ lines.push(` status: v.union(`);
53
+ lines.push(` v.literal("pending"),`);
54
+ lines.push(` v.literal("backlog"),`);
55
+ lines.push(` v.literal("todo"),`);
56
+ lines.push(` v.literal("in_progress"),`);
57
+ lines.push(` v.literal("in_review"),`);
58
+ lines.push(` v.literal("blocked"),`);
59
+ lines.push(` v.literal("done"),`);
60
+ lines.push(` v.literal("failed"),`);
61
+ lines.push(` v.literal("cancelled"),`);
62
+ lines.push(` ),`);
63
+ if (config.categories.length > 0) {
64
+ lines.push(` category: v.optional(`);
65
+ lines.push(` v.union(`);
66
+ for (const cat of config.categories) {
67
+ lines.push(` v.literal("${cat}"),`);
68
+ }
69
+ lines.push(` ),`);
70
+ lines.push(` ),`);
71
+ }
72
+ lines.push(``);
73
+ // Planning
74
+ lines.push(` // Planning`);
75
+ lines.push(` wave: v.number(),`);
76
+ lines.push(` estimatedHours: v.optional(v.number()),`);
77
+ lines.push(` actualHours: v.optional(v.number()),`);
78
+ lines.push(` storyPoints: v.optional(v.number()),`);
79
+ // Phase tracking (if phases defined)
80
+ if (config.phases.length > 0) {
81
+ lines.push(``);
82
+ lines.push(` // Phase tracking`);
83
+ lines.push(` phaseId: v.optional(v.union(`);
84
+ for (const phase of config.phases) {
85
+ lines.push(` v.literal("${phase.id}"),`);
86
+ }
87
+ lines.push(` )),`);
88
+ }
89
+ lines.push(``);
90
+ // Dependencies
91
+ lines.push(` // Dependencies`);
92
+ lines.push(` dependencies: v.array(v.string()),`);
93
+ lines.push(` blocks: v.optional(v.array(v.string())),`);
94
+ lines.push(``);
95
+ // Files / Artifacts
96
+ if (isSoftware) {
97
+ lines.push(` // Files & Deliverables`);
98
+ lines.push(` filesExpected: v.array(v.string()),`);
99
+ lines.push(` filesCreated: v.optional(v.array(v.string())),`);
100
+ lines.push(``);
101
+ }
102
+ if (isResearch) {
103
+ lines.push(` // Artifacts (research outputs)`);
104
+ lines.push(` artifactsExpected: v.array(v.string()),`);
105
+ lines.push(` artifactsCreated: v.optional(v.array(v.string())),`);
106
+ lines.push(``);
107
+ }
108
+ // Time Tracking
109
+ lines.push(` // Time Tracking`);
110
+ lines.push(` startedAt: v.optional(v.number()),`);
111
+ lines.push(` completedAt: v.optional(v.number()),`);
112
+ lines.push(` dueDate: v.optional(v.number()),`);
113
+ lines.push(``);
114
+ // Activity Log — commits (software) or artifacts (research)
115
+ if (isSoftware && config.extensions.commitTracking) {
116
+ lines.push(` // Commit tracking`);
117
+ lines.push(` commits: v.array(`);
118
+ lines.push(` v.object({`);
119
+ lines.push(` hash: v.string(),`);
120
+ lines.push(` message: v.string(),`);
121
+ lines.push(` timestamp: v.number(),`);
122
+ lines.push(` filesChanged: v.optional(v.array(v.string())),`);
123
+ lines.push(` agent: v.optional(v.string()),`);
124
+ lines.push(` }),`);
125
+ lines.push(` ),`);
126
+ lines.push(``);
127
+ }
128
+ if (isResearch) {
129
+ lines.push(` // Research artifacts log`);
130
+ lines.push(` artifacts: v.array(`);
131
+ lines.push(` v.object({`);
132
+ lines.push(` id: v.string(),`);
133
+ lines.push(` type: v.string(),`);
134
+ lines.push(` description: v.string(),`);
135
+ lines.push(` timestamp: v.number(),`);
136
+ lines.push(` filePath: v.optional(v.string()),`);
137
+ lines.push(` agent: v.optional(v.string()),`);
138
+ lines.push(` }),`);
139
+ lines.push(` ),`);
140
+ lines.push(``);
141
+ }
142
+ // Status History
143
+ lines.push(` // Status History`);
144
+ lines.push(` statusHistory: v.optional(`);
145
+ lines.push(` v.array(`);
146
+ lines.push(` v.object({`);
147
+ lines.push(` status: v.string(),`);
148
+ lines.push(` timestamp: v.number(),`);
149
+ lines.push(` note: v.optional(v.string()),`);
150
+ lines.push(` agent: v.optional(v.string()),`);
151
+ lines.push(` }),`);
152
+ lines.push(` ),`);
153
+ lines.push(` ),`);
154
+ lines.push(``);
155
+ // Blockers
156
+ lines.push(` // Blockers`);
157
+ lines.push(` blockers: v.optional(`);
158
+ lines.push(` v.array(`);
159
+ lines.push(` v.object({`);
160
+ lines.push(` reason: v.string(),`);
161
+ lines.push(` createdAt: v.number(),`);
162
+ lines.push(` resolvedAt: v.optional(v.number()),`);
163
+ lines.push(` resolvedBy: v.optional(v.string()),`);
164
+ lines.push(` }),`);
165
+ lines.push(` ),`);
166
+ lines.push(` ),`);
167
+ lines.push(``);
168
+ // Metadata
169
+ lines.push(` // Metadata`);
170
+ lines.push(` tags: v.optional(v.array(v.string())),`);
171
+ lines.push(` notes: v.optional(v.string()),`);
172
+ // Software-specific
173
+ if (config.extensions.scopeCreepDetection) {
174
+ lines.push(` scopeCreepFlags: v.optional(v.array(v.string())),`);
175
+ }
176
+ if (config.extensions.reviewFindings) {
177
+ lines.push(``);
178
+ lines.push(` // Review findings`);
179
+ lines.push(` reviewFindings: v.optional(`);
180
+ lines.push(` v.object({`);
181
+ lines.push(` critical: v.number(),`);
182
+ lines.push(` high: v.number(),`);
183
+ lines.push(` medium: v.number(),`);
184
+ lines.push(` low: v.number(),`);
185
+ lines.push(` info: v.number(),`);
186
+ lines.push(` }),`);
187
+ lines.push(` ),`);
188
+ }
189
+ // Research-specific
190
+ if (config.extensions.confidenceTracking) {
191
+ lines.push(``);
192
+ lines.push(` // Research: confidence & evidence`);
193
+ lines.push(` confidenceLevel: v.optional(v.number()),`);
194
+ lines.push(` sourceIds: v.optional(v.array(v.string())),`);
195
+ lines.push(` claimsTracked: v.optional(v.array(v.string())),`);
196
+ }
197
+ if (isResearch) {
198
+ lines.push(` driftFlags: v.optional(v.array(v.string())),`);
199
+ lines.push(``);
200
+ lines.push(` // Validation findings (confidence distribution)`);
201
+ lines.push(` validationFindings: v.optional(`);
202
+ lines.push(` v.object({`);
203
+ lines.push(` confidence5: v.number(),`);
204
+ lines.push(` confidence4: v.number(),`);
205
+ lines.push(` confidence3: v.number(),`);
206
+ lines.push(` confidence2: v.number(),`);
207
+ lines.push(` confidence1: v.number(),`);
208
+ lines.push(` confidence0: v.number(),`);
209
+ lines.push(` }),`);
210
+ lines.push(` ),`);
211
+ }
212
+ if (config.extensions.checkpointLog) {
213
+ lines.push(``);
214
+ lines.push(` // Anti-drift checkpoint log`);
215
+ lines.push(` checkpointLog: v.optional(`);
216
+ lines.push(` v.array(`);
217
+ lines.push(` v.object({`);
218
+ lines.push(` timestamp: v.number(),`);
219
+ lines.push(` toolCallCount: v.optional(v.number()),`);
220
+ lines.push(` aligned: v.boolean(),`);
221
+ lines.push(` sourcesRegistered: v.boolean(),`);
222
+ lines.push(` assumptionsIntroduced: v.boolean(),`);
223
+ lines.push(` driftDetected: v.boolean(),`);
224
+ lines.push(` note: v.optional(v.string()),`);
225
+ lines.push(` }),`);
226
+ lines.push(` ),`);
227
+ lines.push(` ),`);
228
+ }
229
+ if (config.extensions.handoffLog) {
230
+ lines.push(` handoffData: v.optional(v.any()),`);
231
+ }
232
+ // Sync tracking
233
+ lines.push(``);
234
+ lines.push(` // Sync tracking`);
235
+ lines.push(` lastSyncedAt: v.optional(v.number()),`);
236
+ lines.push(` syncVersion: v.optional(v.number()),`);
237
+ lines.push(``);
238
+ lines.push(` createdAt: v.number(),`);
239
+ lines.push(` updatedAt: v.number(),`);
240
+ lines.push(` })`);
241
+ // Indexes
242
+ lines.push(` .index("by_taskId", ["taskId"])`);
243
+ lines.push(` .index("by_agent", ["agent"])`);
244
+ lines.push(` .index("by_status", ["status"])`);
245
+ lines.push(` .index("by_wave", ["wave"])`);
246
+ lines.push(` .index("by_priority", ["priority"])`);
247
+ lines.push(` .index("by_dueDate", ["dueDate"])`);
248
+ lines.push(` .index("by_category", ["category"])`);
249
+ if (config.phases.length > 0) {
250
+ lines.push(` .index("by_phaseId", ["phaseId"])`);
251
+ }
252
+ lines.push(` ,`);
253
+ lines.push(``);
254
+ // ── Sync Log ──
255
+ lines.push(` // Sync Log`);
256
+ lines.push(` taskSyncLog: defineTable({`);
257
+ lines.push(` operation: v.union(v.literal("import"), v.literal("export"), v.literal("merge")),`);
258
+ lines.push(` source: v.string(),`);
259
+ lines.push(` agent: v.optional(v.string()),`);
260
+ lines.push(` tasksAffected: v.number(),`);
261
+ lines.push(` tasksCreated: v.optional(v.number()),`);
262
+ lines.push(` tasksUpdated: v.optional(v.number()),`);
263
+ lines.push(` tasksDeleted: v.optional(v.number()),`);
264
+ lines.push(` errors: v.optional(v.array(v.string())),`);
265
+ lines.push(` metadata: v.optional(v.any()),`);
266
+ lines.push(` timestamp: v.number(),`);
267
+ lines.push(` })`);
268
+ lines.push(` .index("by_operation", ["operation"])`);
269
+ lines.push(` .index("by_agent", ["agent"])`);
270
+ lines.push(` .index("by_timestamp", ["timestamp"]),`);
271
+ lines.push(``);
272
+ // ── Comments ──
273
+ lines.push(` // Task Comments`);
274
+ lines.push(` taskComments: defineTable({`);
275
+ lines.push(` taskId: v.id("${tableName}"),`);
276
+ lines.push(` author: v.string(),`);
277
+ lines.push(` content: v.string(),`);
278
+ lines.push(` type: v.union(`);
279
+ lines.push(` v.literal("comment"),`);
280
+ lines.push(` v.literal("status_change"),`);
281
+ lines.push(` v.literal("blocker"),`);
282
+ lines.push(` v.literal("milestone"),`);
283
+ if (isResearch) {
284
+ lines.push(` v.literal("checkpoint"),`);
285
+ lines.push(` v.literal("handoff"),`);
286
+ }
287
+ lines.push(` ),`);
288
+ lines.push(` timestamp: v.number(),`);
289
+ lines.push(` })`);
290
+ lines.push(` .index("by_task", ["taskId"])`);
291
+ lines.push(` .index("by_timestamp", ["timestamp"]),`);
292
+ lines.push(``);
293
+ // ── Time Entries ──
294
+ lines.push(` // Task Time Entries`);
295
+ lines.push(` taskTimeEntries: defineTable({`);
296
+ lines.push(` taskId: v.id("${tableName}"),`);
297
+ lines.push(` agent: v.string(),`);
298
+ lines.push(` startedAt: v.number(),`);
299
+ lines.push(` endedAt: v.optional(v.number()),`);
300
+ lines.push(` duration: v.optional(v.number()),`);
301
+ lines.push(` description: v.optional(v.string()),`);
302
+ lines.push(` tags: v.optional(v.array(v.string())),`);
303
+ lines.push(` })`);
304
+ lines.push(` .index("by_task", ["taskId"])`);
305
+ lines.push(` .index("by_agent", ["agent"])`);
306
+ lines.push(` .index("by_started", ["startedAt"]),`);
307
+ lines.push(``);
308
+ // ── Evidence Tracker (Research only) ──
309
+ if (config.extensions.evidenceTracker) {
310
+ lines.push(` // Evidence Tracker`);
311
+ lines.push(` evidenceTracker: defineTable({`);
312
+ lines.push(` sourceId: v.string(),`);
313
+ lines.push(` title: v.string(),`);
314
+ lines.push(` sourceType: v.union(`);
315
+ lines.push(` v.literal("external_official"),`);
316
+ lines.push(` v.literal("external_research"),`);
317
+ lines.push(` v.literal("internal_system"),`);
318
+ lines.push(` v.literal("internal_derived"),`);
319
+ lines.push(` v.literal("competitor_primary"),`);
320
+ lines.push(` ),`);
321
+ lines.push(` confidenceLevel: v.number(),`);
322
+ lines.push(` owner: v.string(),`);
323
+ lines.push(` url: v.optional(v.string()),`);
324
+ lines.push(` retrievalDate: v.string(),`);
325
+ lines.push(` claimCount: v.number(),`);
326
+ lines.push(` verifiedCount: v.number(),`);
327
+ lines.push(` status: v.union(`);
328
+ lines.push(` v.literal("verified"),`);
329
+ lines.push(` v.literal("partial"),`);
330
+ lines.push(` v.literal("pending"),`);
331
+ lines.push(` v.literal("error"),`);
332
+ lines.push(` v.literal("retired"),`);
333
+ lines.push(` ),`);
334
+ lines.push(` knownBias: v.optional(v.string()),`);
335
+ lines.push(` lastValidated: v.optional(v.number()),`);
336
+ lines.push(` createdAt: v.number(),`);
337
+ lines.push(` updatedAt: v.number(),`);
338
+ lines.push(` })`);
339
+ lines.push(` .index("by_sourceId", ["sourceId"])`);
340
+ lines.push(` .index("by_status", ["status"])`);
341
+ lines.push(` .index("by_confidence", ["confidenceLevel"])`);
342
+ lines.push(` .index("by_type", ["sourceType"]),`);
343
+ lines.push(``);
344
+ }
345
+ // ── Handoff Log (Research only) ──
346
+ if (config.extensions.handoffLog) {
347
+ lines.push(` // Handoff Log`);
348
+ lines.push(` handoffLog: defineTable({`);
349
+ lines.push(` handoffId: v.string(),`);
350
+ lines.push(` fromAgent: v.string(),`);
351
+ lines.push(` toAgent: v.string(),`);
352
+ lines.push(` completedTask: v.string(),`);
353
+ lines.push(` nextTask: v.string(),`);
354
+ lines.push(` payloadSummary: v.string(),`);
355
+ lines.push(` payloadFiles: v.optional(v.array(v.string())),`);
356
+ lines.push(` status: v.union(v.literal("success"), v.literal("partial"), v.literal("blocked")),`);
357
+ lines.push(` blockers: v.optional(v.array(v.string())),`);
358
+ lines.push(` timestamp: v.number(),`);
359
+ lines.push(` })`);
360
+ lines.push(` .index("by_handoffId", ["handoffId"])`);
361
+ lines.push(` .index("by_fromAgent", ["fromAgent"])`);
362
+ lines.push(` .index("by_timestamp", ["timestamp"]),`);
363
+ lines.push(``);
364
+ }
365
+ // ── Agent-Ops tables ──
366
+ if (hasAgentOps) {
367
+ // Jobs
368
+ lines.push(` // Agent-Ops Jobs`);
369
+ lines.push(` agentOpsJobs: defineTable({`);
370
+ lines.push(` jobId: v.string(),`);
371
+ lines.push(` name: v.string(),`);
372
+ lines.push(` description: v.optional(v.string()),`);
373
+ lines.push(` scheduleType: v.union(v.literal("cron"), v.literal("interval"), v.literal("one-shot"), v.literal("trigger")),`);
374
+ lines.push(` cronExpression: v.optional(v.string()),`);
375
+ lines.push(` intervalSeconds: v.optional(v.number()),`);
376
+ lines.push(` timezone: v.optional(v.string()),`);
377
+ lines.push(` triggerType: v.optional(v.string()),`);
378
+ lines.push(` triggerFilter: v.optional(v.any()),`);
379
+ lines.push(` agent: v.union(`);
380
+ for (const agentKey of Object.keys(config.agents)) {
381
+ lines.push(` v.literal("${agentKey}"),`);
382
+ }
383
+ lines.push(` ),`);
384
+ lines.push(` prompt: v.string(),`);
385
+ lines.push(` executionMode: v.union(v.literal("isolated"), v.literal("read-only"), v.literal("dry-run")),`);
386
+ lines.push(` createPR: v.boolean(),`);
387
+ lines.push(` prBaseBranch: v.optional(v.string()),`);
388
+ lines.push(` maxDurationMinutes: v.optional(v.number()),`);
389
+ lines.push(` laneId: v.optional(v.string()),`);
390
+ lines.push(` enabled: v.boolean(),`);
391
+ lines.push(` lastRunAt: v.optional(v.number()),`);
392
+ lines.push(` nextRunAt: v.optional(v.number()),`);
393
+ lines.push(` totalRuns: v.number(),`);
394
+ lines.push(` successfulRuns: v.number(),`);
395
+ lines.push(` failedRuns: v.number(),`);
396
+ lines.push(` createdAt: v.number(),`);
397
+ lines.push(` updatedAt: v.number(),`);
398
+ lines.push(` })`);
399
+ lines.push(` .index("by_jobId", ["jobId"])`);
400
+ lines.push(` .index("by_enabled", ["enabled"])`);
401
+ lines.push(` .index("by_agent", ["agent"])`);
402
+ lines.push(` .index("by_scheduleType", ["scheduleType"])`);
403
+ lines.push(` .index("by_nextRunAt", ["nextRunAt"])`);
404
+ lines.push(` .index("by_laneId", ["laneId"]),`);
405
+ lines.push(``);
406
+ // Runs
407
+ lines.push(` // Agent-Ops Runs`);
408
+ lines.push(` agentOpsRuns: defineTable({`);
409
+ lines.push(` runId: v.string(),`);
410
+ lines.push(` jobId: v.string(),`);
411
+ lines.push(` status: v.union(`);
412
+ lines.push(` v.literal("queued"),`);
413
+ lines.push(` v.literal("provisioning"),`);
414
+ lines.push(` v.literal("running"),`);
415
+ lines.push(` v.literal("completing"),`);
416
+ lines.push(` v.literal("success"),`);
417
+ lines.push(` v.literal("failed"),`);
418
+ lines.push(` v.literal("timeout"),`);
419
+ lines.push(` v.literal("cancelled"),`);
420
+ lines.push(` ),`);
421
+ lines.push(` agent: v.union(`);
422
+ for (const agentKey of Object.keys(config.agents)) {
423
+ lines.push(` v.literal("${agentKey}"),`);
424
+ }
425
+ lines.push(` ),`);
426
+ lines.push(` prompt: v.string(),`);
427
+ lines.push(` executionMode: v.string(),`);
428
+ lines.push(` queuedAt: v.number(),`);
429
+ lines.push(` startedAt: v.optional(v.number()),`);
430
+ lines.push(` completedAt: v.optional(v.number()),`);
431
+ lines.push(` worktreePath: v.optional(v.string()),`);
432
+ lines.push(` branchName: v.optional(v.string()),`);
433
+ lines.push(` baseBranch: v.optional(v.string()),`);
434
+ lines.push(` commitCount: v.optional(v.number()),`);
435
+ lines.push(` filesChanged: v.optional(v.number()),`);
436
+ lines.push(` linesAdded: v.optional(v.number()),`);
437
+ lines.push(` linesRemoved: v.optional(v.number()),`);
438
+ lines.push(` prUrl: v.optional(v.string()),`);
439
+ lines.push(` prNumber: v.optional(v.number()),`);
440
+ lines.push(` prState: v.optional(v.string()),`);
441
+ lines.push(` logs: v.array(`);
442
+ lines.push(` v.object({`);
443
+ lines.push(` timestamp: v.number(),`);
444
+ lines.push(` level: v.union(v.literal("info"), v.literal("warn"), v.literal("error"), v.literal("debug")),`);
445
+ lines.push(` message: v.string(),`);
446
+ lines.push(` }),`);
447
+ lines.push(` ),`);
448
+ lines.push(` summary: v.optional(v.string()),`);
449
+ lines.push(` error: v.optional(v.string()),`);
450
+ lines.push(` exitCode: v.optional(v.number()),`);
451
+ lines.push(` triggeredBy: v.union(v.literal("schedule"), v.literal("trigger"), v.literal("manual"), v.literal("retry")),`);
452
+ lines.push(` triggerContext: v.optional(v.any()),`);
453
+ lines.push(` })`);
454
+ lines.push(` .index("by_runId", ["runId"])`);
455
+ lines.push(` .index("by_jobId", ["jobId"])`);
456
+ lines.push(` .index("by_status", ["status"])`);
457
+ lines.push(` .index("by_agent", ["agent"])`);
458
+ lines.push(` .index("by_queuedAt", ["queuedAt"]),`);
459
+ lines.push(``);
460
+ }
461
+ lines.push(`};`);
462
+ lines.push(``);
463
+ const content = lines.join("\n");
464
+ const filePath = join(targetDir, "convex", "taskSystem", "schema.ts");
465
+ if (!dryRun) {
466
+ writeFileSync(filePath, content, "utf-8");
467
+ }
468
+ return { file: "convex/taskSystem/schema.ts", lines: lines.length };
469
+ }
470
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/generators/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { GeneratorContext } from "@yattalo/task-system-core";
2
+ export declare function generateSkill(ctx: GeneratorContext): {
3
+ file: string;
4
+ lines: number;
5
+ };
6
+ //# sourceMappingURL=skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/generators/skill.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAOlE,wBAAgB,aAAa,CAAC,GAAG,EAAE,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CA8JpF"}
@@ -0,0 +1,147 @@
1
+ // ============================================================
2
+ // Generator: Layer 5 — Claude Code Skill (SKILL.md)
3
+ // Generates .claude/skills/task-orchestrator/SKILL.md
4
+ // ============================================================
5
+ import { writeFileSync } from "node:fs";
6
+ import { join } from "node:path";
7
+ import { getTableName, hasSoftwareExtensions, hasResearchExtensions, } from "@yattalo/task-system-core";
8
+ export function generateSkill(ctx) {
9
+ const { config, targetDir, dryRun } = ctx;
10
+ const tableName = getTableName(config);
11
+ const isSoftware = hasSoftwareExtensions(config);
12
+ const isResearch = hasResearchExtensions(config);
13
+ const agentKeys = Object.keys(config.agents);
14
+ const lines = [];
15
+ lines.push(`# Task Orchestrator — Claude Code Skill`);
16
+ lines.push(``);
17
+ lines.push(`> Generated by @yattalo/task-system for **${config.projectName}**`);
18
+ lines.push(`> DO NOT EDIT MANUALLY — re-run \`npx @yattalo/task-system init\` to regenerate`);
19
+ lines.push(``);
20
+ lines.push(`## Overview`);
21
+ lines.push(``);
22
+ lines.push(`Multi-agent task orchestration using Convex as source of truth.`);
23
+ lines.push(`All task state lives in Convex table \`${tableName}\`.`);
24
+ lines.push(``);
25
+ lines.push(`**Agents**: ${agentKeys.map((k) => `\`${k}\` (${config.agents[k].label})`).join(", ")}`);
26
+ lines.push(`**Task ID Pattern**: \`${config.taskIdPattern}\``);
27
+ lines.push(``);
28
+ // CLI commands
29
+ lines.push(`## CLI Commands`);
30
+ lines.push(``);
31
+ lines.push(`\`\`\`bash`);
32
+ lines.push(`# Seed tasks from task-definitions.ts`);
33
+ lines.push(`npx convex run taskSystem/orchestrator:seed`);
34
+ lines.push(``);
35
+ lines.push(`# Query tasks`);
36
+ lines.push(`npx convex run taskSystem/orchestrator:list`);
37
+ lines.push(`npx convex run taskSystem/orchestrator:get '{"taskId":"C1"}'`);
38
+ lines.push(`npx convex run taskSystem/orchestrator:getByAgent '{"agent":"claude"}'`);
39
+ lines.push(`npx convex run taskSystem/orchestrator:getStats`);
40
+ lines.push(`npx convex run taskSystem/orchestrator:getKanban`);
41
+ lines.push(`npx convex run taskSystem/orchestrator:checkDependencies '{"taskId":"C5"}'`);
42
+ lines.push(``);
43
+ lines.push(`# Update task status`);
44
+ lines.push(`npx convex run taskSystem/orchestrator:updateStatus '{"taskId":"C1","newStatus":"in_progress","note":"Starting work","agent":"claude"}'`);
45
+ lines.push(`npx convex run taskSystem/orchestrator:updateStatus '{"taskId":"C1","newStatus":"done","note":"Completed","agent":"claude"}'`);
46
+ lines.push(``);
47
+ lines.push(`# CRUD operations`);
48
+ const createFields = [
49
+ '"taskId":"C99"',
50
+ '"agent":"claude"',
51
+ '"title":"New task"',
52
+ '"description":"..."',
53
+ '"priority":"MEDIUM"',
54
+ '"wave":1',
55
+ '"dependencies":[]',
56
+ ];
57
+ if (isSoftware)
58
+ createFields.push('"filesExpected":[]', '"commits":[]');
59
+ if (isResearch)
60
+ createFields.push('"artifactsExpected":[]', '"artifacts":[]');
61
+ lines.push("npx convex run taskSystem/tasks:create '{" + createFields.join(",") + "}'");
62
+ lines.push("npx convex run taskSystem/tasks:changeStatus '{\"taskId\":\"C99\",\"newStatus\":\"done\",\"note\":\"Done\",\"agent\":\"claude\"}'");
63
+ lines.push("npx convex run taskSystem/tasks:remove '{\"taskId\":\"C99\"}'");
64
+ if (isSoftware) {
65
+ lines.push("");
66
+ lines.push("# Software extensions");
67
+ lines.push('npx convex run taskSystem/tasks:addCommit \'{"taskId":"C1","hash":"abc1234","message":"feat: ...","filesChanged":["src/foo.ts"],"agent":"claude"}\'');
68
+ }
69
+ if (isResearch) {
70
+ lines.push("");
71
+ lines.push("# Research extensions");
72
+ lines.push('npx convex run taskSystem/tasks:addArtifact \'{"taskId":"CR1","id":"A1","type":"document","description":"Market analysis","agent":"claude"}\'');
73
+ lines.push('npx convex run taskSystem/orchestrator:addCheckpoint \'{"taskId":"CR1","aligned":true,"sourcesRegistered":true,"assumptionsIntroduced":false,"driftDetected":false}\'');
74
+ lines.push("npx convex run taskSystem/orchestrator:getConfidenceReport");
75
+ }
76
+ lines.push(`\`\`\``);
77
+ lines.push(``);
78
+ // Workflow
79
+ lines.push(`## Workflow`);
80
+ lines.push(``);
81
+ lines.push(`1. **Before starting a task**: Check dependencies with \`checkDependencies\``);
82
+ lines.push(`2. **Start work**: Set status to \`in_progress\``);
83
+ lines.push(`3. **During work**: Commit with task ID in message (e.g., \`C1: implement feature\`)`);
84
+ lines.push(`4. **Complete**: Set status to \`done\` — blocked dependents auto-unblock`);
85
+ lines.push(`5. **Blocked**: Use \`addBlocker\` to document why, set status to \`blocked\``);
86
+ lines.push(``);
87
+ // Status values
88
+ lines.push(`## Task Statuses`);
89
+ lines.push(``);
90
+ lines.push(`| Status | Description |`);
91
+ lines.push(`|--------|-------------|`);
92
+ lines.push(`| \`backlog\` | Not yet planned |`);
93
+ lines.push(`| \`todo\` | Ready to start (deps met) |`);
94
+ lines.push(`| \`in_progress\` | Currently being worked on |`);
95
+ lines.push(`| \`in_review\` | Awaiting review |`);
96
+ lines.push(`| \`blocked\` | Waiting on dependency or blocker |`);
97
+ lines.push(`| \`done\` | Completed |`);
98
+ lines.push(`| \`cancelled\` | No longer needed |`);
99
+ lines.push(``);
100
+ // Priorities
101
+ lines.push(`## Priorities`);
102
+ lines.push(``);
103
+ lines.push(`\`CRITICAL\` > \`HIGH\` > \`MEDIUM\` > \`LOW\``);
104
+ lines.push(``);
105
+ // Categories
106
+ lines.push(`## Categories`);
107
+ lines.push(``);
108
+ lines.push(config.categories.map((c) => `\`${c}\``).join(", "));
109
+ lines.push(``);
110
+ // Phases
111
+ if (config.phases.length > 0) {
112
+ lines.push(`## Phases`);
113
+ lines.push(``);
114
+ lines.push(`| Phase ID | Label | Wave |`);
115
+ lines.push(`|----------|-------|------|`);
116
+ for (const p of config.phases) {
117
+ lines.push(`| \`${p.id}\` | ${p.label} | ${p.wave} |`);
118
+ }
119
+ lines.push(``);
120
+ }
121
+ // Dashboard
122
+ lines.push(`## Dashboard`);
123
+ lines.push(``);
124
+ lines.push(`\`\`\`bash`);
125
+ lines.push(`npx @yattalo/task-system dashboard # Opens HTML dashboard`);
126
+ lines.push(`npx @yattalo/task-system status # Terminal stats`);
127
+ lines.push(`npx @yattalo/task-system kanban # Terminal kanban`);
128
+ lines.push(`\`\`\``);
129
+ lines.push(``);
130
+ // Agents
131
+ lines.push(`## Agents`);
132
+ lines.push(``);
133
+ for (const [key, agent] of Object.entries(config.agents)) {
134
+ lines.push(`- **${agent.label}** (\`${key}\`) — Icon: ${agent.icon}`);
135
+ }
136
+ lines.push(``);
137
+ const content = lines.join("\n");
138
+ if (!dryRun) {
139
+ const skillPath = join(targetDir, ".claude", "skills", "task-orchestrator", "SKILL.md");
140
+ writeFileSync(skillPath, content, "utf-8");
141
+ }
142
+ return {
143
+ file: ".claude/skills/task-orchestrator/SKILL.md",
144
+ lines: lines.length,
145
+ };
146
+ }
147
+ //# sourceMappingURL=skill.js.map