@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 @@
1
+ {"version":3,"file":"agent-ops-scripts.js","sourceRoot":"","sources":["../../src/generators/agent-ops-scripts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { GeneratorContext } from "@yattalo/task-system-core";
2
+ export declare function generateAgentOps(ctx: GeneratorContext): {
3
+ file: string;
4
+ lines: number;
5
+ };
6
+ //# sourceMappingURL=agent-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-ops.d.ts","sourceRoot":"","sources":["../../src/generators/agent-ops.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAoTvF"}
@@ -0,0 +1,290 @@
1
+ // ============================================================
2
+ // Generator: Layer 4 — Convex Agent-Ops Backend
3
+ // Generates convex/taskSystem/agentOps.ts
4
+ // ============================================================
5
+ import { writeFileSync } from "node:fs";
6
+ import { join } from "node:path";
7
+ export function generateAgentOps(ctx) {
8
+ const { config, targetDir, dryRun } = ctx;
9
+ const agentKeys = Object.keys(config.agents);
10
+ const agentUnion = agentKeys.map((k) => `v.literal("${k}")`).join(", ");
11
+ const L = [];
12
+ L.push(`// ============================================================`);
13
+ L.push(`// Agent-Ops Backend — generated by @yattalo/task-system`);
14
+ L.push(`// Project: ${config.projectName}`);
15
+ L.push(`// ============================================================`);
16
+ L.push(``);
17
+ L.push(`import { v } from "convex/values";`);
18
+ L.push(`import { query, mutation } from "../_generated/server";`);
19
+ L.push(``);
20
+ // Shared validators
21
+ L.push(`const SCHEDULE_TYPE = v.union(v.literal("cron"), v.literal("interval"), v.literal("one-shot"), v.literal("trigger"));`);
22
+ L.push(`const AGENT_TYPE = v.union(${agentUnion});`);
23
+ L.push(`const EXEC_MODE = v.union(v.literal("isolated"), v.literal("read-only"), v.literal("dry-run"));`);
24
+ L.push(`const RUN_STATUS = v.union(v.literal("queued"), v.literal("provisioning"), v.literal("running"), v.literal("completing"), v.literal("success"), v.literal("failed"), v.literal("timeout"), v.literal("cancelled"));`);
25
+ L.push(`const TRIGGERED_BY = v.union(v.literal("schedule"), v.literal("trigger"), v.literal("manual"), v.literal("retry"));`);
26
+ L.push(``);
27
+ // ── QUERIES ──
28
+ L.push(`// ══════════════════════════════════════════════════════════════`);
29
+ L.push(`// QUERIES`);
30
+ L.push(`// ══════════════════════════════════════════════════════════════`);
31
+ L.push(``);
32
+ // listJobs
33
+ L.push(`export const listJobs = query({`);
34
+ L.push(` args: { enabled: v.optional(v.boolean()), agent: v.optional(AGENT_TYPE), scheduleType: v.optional(SCHEDULE_TYPE) },`);
35
+ L.push(` handler: async (ctx, args) => {`);
36
+ L.push(` let jobs;`);
37
+ L.push(` if (args.enabled !== undefined) {`);
38
+ L.push(` jobs = await ctx.db.query("agentOpsJobs").withIndex("by_enabled", (q) => q.eq("enabled", args.enabled!)).collect();`);
39
+ L.push(` } else if (args.agent) {`);
40
+ L.push(` jobs = await ctx.db.query("agentOpsJobs").withIndex("by_agent", (q) => q.eq("agent", args.agent!)).collect();`);
41
+ L.push(` } else {`);
42
+ L.push(` jobs = await ctx.db.query("agentOpsJobs").collect();`);
43
+ L.push(` }`);
44
+ L.push(` if (args.agent && args.enabled !== undefined) jobs = jobs.filter((j) => j.agent === args.agent);`);
45
+ L.push(` if (args.scheduleType) jobs = jobs.filter((j) => j.scheduleType === args.scheduleType);`);
46
+ L.push(` return jobs.sort((a, b) => b.updatedAt - a.updatedAt);`);
47
+ L.push(` },`);
48
+ L.push(`});`);
49
+ L.push(``);
50
+ // getJob
51
+ L.push(`export const getJob = query({`);
52
+ L.push(` args: { jobId: v.string() },`);
53
+ L.push(` handler: async (ctx, { jobId }) => ctx.db.query("agentOpsJobs").withIndex("by_jobId", (q) => q.eq("jobId", jobId)).unique(),`);
54
+ L.push(`});`);
55
+ L.push(``);
56
+ // getDashboardStats
57
+ L.push(`export const getDashboardStats = query({`);
58
+ L.push(` args: {},`);
59
+ L.push(` handler: async (ctx) => {`);
60
+ L.push(` const jobs = await ctx.db.query("agentOpsJobs").collect();`);
61
+ L.push(` const runs = await ctx.db.query("agentOpsRuns").collect();`);
62
+ L.push(` const byStatus: Record<string, number> = {};`);
63
+ L.push(` for (const r of runs) byStatus[r.status] = (byStatus[r.status] ?? 0) + 1;`);
64
+ L.push(` return {`);
65
+ L.push(` totalJobs: jobs.length,`);
66
+ L.push(` enabledJobs: jobs.filter((j) => j.enabled).length,`);
67
+ L.push(` totalRuns: runs.length,`);
68
+ L.push(` byStatus,`);
69
+ L.push(` recentRuns: runs.sort((a, b) => b.queuedAt - a.queuedAt).slice(0, 10),`);
70
+ L.push(` };`);
71
+ L.push(` },`);
72
+ L.push(`});`);
73
+ L.push(``);
74
+ // listRuns
75
+ L.push(`export const listRuns = query({`);
76
+ L.push(` args: { jobId: v.optional(v.string()), status: v.optional(RUN_STATUS), agent: v.optional(AGENT_TYPE), limit: v.optional(v.number()) },`);
77
+ L.push(` handler: async (ctx, args) => {`);
78
+ L.push(` let runs;`);
79
+ L.push(` if (args.jobId) {`);
80
+ L.push(` runs = await ctx.db.query("agentOpsRuns").withIndex("by_jobId", (q) => q.eq("jobId", args.jobId!)).collect();`);
81
+ L.push(` } else if (args.status) {`);
82
+ L.push(` runs = await ctx.db.query("agentOpsRuns").withIndex("by_status", (q) => q.eq("status", args.status!)).collect();`);
83
+ L.push(` } else {`);
84
+ L.push(` runs = await ctx.db.query("agentOpsRuns").collect();`);
85
+ L.push(` }`);
86
+ L.push(` if (args.agent) runs = runs.filter((r) => r.agent === args.agent);`);
87
+ L.push(` runs.sort((a, b) => b.queuedAt - a.queuedAt);`);
88
+ L.push(` return args.limit ? runs.slice(0, args.limit) : runs;`);
89
+ L.push(` },`);
90
+ L.push(`});`);
91
+ L.push(``);
92
+ // getRun
93
+ L.push(`export const getRun = query({`);
94
+ L.push(` args: { runId: v.string() },`);
95
+ L.push(` handler: async (ctx, { runId }) => ctx.db.query("agentOpsRuns").withIndex("by_runId", (q) => q.eq("runId", runId)).unique(),`);
96
+ L.push(`});`);
97
+ L.push(``);
98
+ // getRunLogs
99
+ L.push(`export const getRunLogs = query({`);
100
+ L.push(` args: { runId: v.string() },`);
101
+ L.push(` handler: async (ctx, { runId }) => {`);
102
+ L.push(` const run = await ctx.db.query("agentOpsRuns").withIndex("by_runId", (q) => q.eq("runId", runId)).unique();`);
103
+ L.push(` return run?.logs ?? [];`);
104
+ L.push(` },`);
105
+ L.push(`});`);
106
+ L.push(``);
107
+ // getPendingRuns
108
+ L.push(`export const getPendingRuns = query({`);
109
+ L.push(` args: {},`);
110
+ L.push(` handler: async (ctx) => {`);
111
+ L.push(` const queued = await ctx.db.query("agentOpsRuns").withIndex("by_status", (q) => q.eq("status", "queued")).collect();`);
112
+ L.push(` const prov = await ctx.db.query("agentOpsRuns").withIndex("by_status", (q) => q.eq("status", "provisioning")).collect();`);
113
+ L.push(` return [...queued, ...prov].sort((a, b) => a.queuedAt - b.queuedAt);`);
114
+ L.push(` },`);
115
+ L.push(`});`);
116
+ L.push(``);
117
+ // ── MUTATIONS ──
118
+ L.push(`// ══════════════════════════════════════════════════════════════`);
119
+ L.push(`// MUTATIONS`);
120
+ L.push(`// ══════════════════════════════════════════════════════════════`);
121
+ L.push(``);
122
+ // createJob
123
+ L.push(`export const createJob = mutation({`);
124
+ L.push(` args: {`);
125
+ L.push(` jobId: v.string(), name: v.string(), description: v.optional(v.string()),`);
126
+ L.push(` scheduleType: SCHEDULE_TYPE, cronExpression: v.optional(v.string()),`);
127
+ L.push(` intervalSeconds: v.optional(v.number()), timezone: v.optional(v.string()),`);
128
+ L.push(` triggerType: v.optional(v.string()), triggerFilter: v.optional(v.any()),`);
129
+ L.push(` agent: AGENT_TYPE, prompt: v.string(), executionMode: EXEC_MODE,`);
130
+ L.push(` createPR: v.boolean(), prBaseBranch: v.optional(v.string()),`);
131
+ L.push(` maxDurationMinutes: v.optional(v.number()), laneId: v.optional(v.string()),`);
132
+ L.push(` },`);
133
+ L.push(` handler: async (ctx, args) => {`);
134
+ L.push(` const now = Date.now();`);
135
+ L.push(` return await ctx.db.insert("agentOpsJobs", {`);
136
+ L.push(` ...args, enabled: true, totalRuns: 0, successfulRuns: 0, failedRuns: 0, createdAt: now, updatedAt: now,`);
137
+ L.push(` });`);
138
+ L.push(` },`);
139
+ L.push(`});`);
140
+ L.push(``);
141
+ // updateJob
142
+ L.push(`export const updateJob = mutation({`);
143
+ L.push(` args: { jobId: v.string(), fields: v.any() },`);
144
+ L.push(` handler: async (ctx, { jobId, fields }) => {`);
145
+ L.push(` const job = await ctx.db.query("agentOpsJobs").withIndex("by_jobId", (q) => q.eq("jobId", jobId)).unique();`);
146
+ L.push(` if (!job) throw new Error(\`Job \${jobId} not found\`);`);
147
+ L.push(` await ctx.db.patch(job._id, { ...fields, updatedAt: Date.now() });`);
148
+ L.push(` },`);
149
+ L.push(`});`);
150
+ L.push(``);
151
+ // toggleJob
152
+ L.push(`export const toggleJob = mutation({`);
153
+ L.push(` args: { jobId: v.string() },`);
154
+ L.push(` handler: async (ctx, { jobId }) => {`);
155
+ L.push(` const job = await ctx.db.query("agentOpsJobs").withIndex("by_jobId", (q) => q.eq("jobId", jobId)).unique();`);
156
+ L.push(` if (!job) throw new Error(\`Job \${jobId} not found\`);`);
157
+ L.push(` await ctx.db.patch(job._id, { enabled: !job.enabled, updatedAt: Date.now() });`);
158
+ L.push(` },`);
159
+ L.push(`});`);
160
+ L.push(``);
161
+ // deleteJob
162
+ L.push(`export const deleteJob = mutation({`);
163
+ L.push(` args: { jobId: v.string() },`);
164
+ L.push(` handler: async (ctx, { jobId }) => {`);
165
+ L.push(` const job = await ctx.db.query("agentOpsJobs").withIndex("by_jobId", (q) => q.eq("jobId", jobId)).unique();`);
166
+ L.push(` if (!job) throw new Error(\`Job \${jobId} not found\`);`);
167
+ L.push(` await ctx.db.delete(job._id);`);
168
+ L.push(` },`);
169
+ L.push(`});`);
170
+ L.push(``);
171
+ // createRun
172
+ L.push(`export const createRun = mutation({`);
173
+ L.push(` args: {`);
174
+ L.push(` runId: v.string(), jobId: v.string(), agent: AGENT_TYPE, prompt: v.string(),`);
175
+ L.push(` executionMode: v.string(), triggeredBy: TRIGGERED_BY,`);
176
+ L.push(` triggerContext: v.optional(v.any()), baseBranch: v.optional(v.string()),`);
177
+ L.push(` },`);
178
+ L.push(` handler: async (ctx, args) => {`);
179
+ L.push(` return await ctx.db.insert("agentOpsRuns", {`);
180
+ L.push(` ...args, status: "queued", queuedAt: Date.now(), logs: [],`);
181
+ L.push(` });`);
182
+ L.push(` },`);
183
+ L.push(`});`);
184
+ L.push(``);
185
+ // updateRunStatus
186
+ L.push(`export const updateRunStatus = mutation({`);
187
+ L.push(` args: { runId: v.string(), status: RUN_STATUS },`);
188
+ L.push(` handler: async (ctx, { runId, status }) => {`);
189
+ L.push(` const run = await ctx.db.query("agentOpsRuns").withIndex("by_runId", (q) => q.eq("runId", runId)).unique();`);
190
+ L.push(` if (!run) throw new Error(\`Run \${runId} not found\`);`);
191
+ L.push(` const patch: Record<string, unknown> = { status };`);
192
+ L.push(` if (status === "running" && !run.startedAt) patch.startedAt = Date.now();`);
193
+ L.push(` if (["success", "failed", "timeout", "cancelled"].includes(status)) patch.completedAt = Date.now();`);
194
+ L.push(` await ctx.db.patch(run._id, patch);`);
195
+ L.push(` },`);
196
+ L.push(`});`);
197
+ L.push(``);
198
+ // appendRunLog
199
+ L.push(`export const appendRunLog = mutation({`);
200
+ L.push(` args: {`);
201
+ L.push(` runId: v.string(),`);
202
+ L.push(` entries: v.array(v.object({ timestamp: v.number(), level: v.union(v.literal("info"), v.literal("warn"), v.literal("error"), v.literal("debug")), message: v.string() })),`);
203
+ L.push(` },`);
204
+ L.push(` handler: async (ctx, { runId, entries }) => {`);
205
+ L.push(` const run = await ctx.db.query("agentOpsRuns").withIndex("by_runId", (q) => q.eq("runId", runId)).unique();`);
206
+ L.push(` if (!run) return;`);
207
+ L.push(` await ctx.db.patch(run._id, { logs: [...run.logs, ...entries] });`);
208
+ L.push(` },`);
209
+ L.push(`});`);
210
+ L.push(``);
211
+ // updateRunGitInfo
212
+ L.push(`export const updateRunGitInfo = mutation({`);
213
+ L.push(` args: {`);
214
+ L.push(` runId: v.string(),`);
215
+ L.push(` worktreePath: v.optional(v.string()), branchName: v.optional(v.string()),`);
216
+ L.push(` commitCount: v.optional(v.number()), filesChanged: v.optional(v.number()),`);
217
+ L.push(` linesAdded: v.optional(v.number()), linesRemoved: v.optional(v.number()),`);
218
+ L.push(` },`);
219
+ L.push(` handler: async (ctx, { runId, ...info }) => {`);
220
+ L.push(` const run = await ctx.db.query("agentOpsRuns").withIndex("by_runId", (q) => q.eq("runId", runId)).unique();`);
221
+ L.push(` if (!run) return;`);
222
+ L.push(` const patch: Record<string, unknown> = {};`);
223
+ L.push(` for (const [k, val] of Object.entries(info)) { if (val !== undefined) patch[k] = val; }`);
224
+ L.push(` await ctx.db.patch(run._id, patch);`);
225
+ L.push(` },`);
226
+ L.push(`});`);
227
+ L.push(``);
228
+ // completeRun
229
+ L.push(`export const completeRun = mutation({`);
230
+ L.push(` args: {`);
231
+ L.push(` runId: v.string(), status: v.union(v.literal("success"), v.literal("failed")),`);
232
+ L.push(` summary: v.optional(v.string()), error: v.optional(v.string()),`);
233
+ L.push(` exitCode: v.optional(v.number()), prUrl: v.optional(v.string()), prNumber: v.optional(v.number()),`);
234
+ L.push(` },`);
235
+ L.push(` handler: async (ctx, { runId, status, ...rest }) => {`);
236
+ L.push(` const run = await ctx.db.query("agentOpsRuns").withIndex("by_runId", (q) => q.eq("runId", runId)).unique();`);
237
+ L.push(` if (!run) throw new Error(\`Run \${runId} not found\`);`);
238
+ L.push(` const now = Date.now();`);
239
+ L.push(` const patch: Record<string, unknown> = { status, completedAt: now };`);
240
+ L.push(` for (const [k, val] of Object.entries(rest)) { if (val !== undefined) patch[k] = val; }`);
241
+ L.push(` await ctx.db.patch(run._id, patch);`);
242
+ L.push(``);
243
+ L.push(` // Update job stats`);
244
+ L.push(` const job = await ctx.db.query("agentOpsJobs").withIndex("by_jobId", (q) => q.eq("jobId", run.jobId)).unique();`);
245
+ L.push(` if (job) {`);
246
+ L.push(` const statPatch: Record<string, unknown> = { lastRunAt: now, updatedAt: now };`);
247
+ L.push(` if (status === "success") statPatch.successfulRuns = job.successfulRuns + 1;`);
248
+ L.push(` if (status === "failed") statPatch.failedRuns = job.failedRuns + 1;`);
249
+ L.push(` await ctx.db.patch(job._id, statPatch);`);
250
+ L.push(` }`);
251
+ L.push(` },`);
252
+ L.push(`});`);
253
+ L.push(``);
254
+ // cancelRun
255
+ L.push(`export const cancelRun = mutation({`);
256
+ L.push(` args: { runId: v.string() },`);
257
+ L.push(` handler: async (ctx, { runId }) => {`);
258
+ L.push(` const run = await ctx.db.query("agentOpsRuns").withIndex("by_runId", (q) => q.eq("runId", runId)).unique();`);
259
+ L.push(` if (!run) throw new Error(\`Run \${runId} not found\`);`);
260
+ L.push(` await ctx.db.patch(run._id, { status: "cancelled", completedAt: Date.now() });`);
261
+ L.push(` },`);
262
+ L.push(`});`);
263
+ L.push(``);
264
+ // triggerManualRun
265
+ L.push(`export const triggerManualRun = mutation({`);
266
+ L.push(` args: { jobId: v.string() },`);
267
+ L.push(` handler: async (ctx, { jobId }) => {`);
268
+ L.push(` const job = await ctx.db.query("agentOpsJobs").withIndex("by_jobId", (q) => q.eq("jobId", jobId)).unique();`);
269
+ L.push(` if (!job) throw new Error(\`Job \${jobId} not found\`);`);
270
+ L.push(` const now = Date.now();`);
271
+ L.push(` const runId = \`\${jobId}-manual-\${now}\`;`);
272
+ L.push(` await ctx.db.insert("agentOpsRuns", {`);
273
+ L.push(` runId, jobId, status: "queued", agent: job.agent, prompt: job.prompt,`);
274
+ L.push(` executionMode: job.executionMode, queuedAt: now, triggeredBy: "manual",`);
275
+ L.push(` baseBranch: job.prBaseBranch,`);
276
+ L.push(` logs: [{ timestamp: now, level: "info", message: "Manual trigger" }],`);
277
+ L.push(` });`);
278
+ L.push(` await ctx.db.patch(job._id, { totalRuns: job.totalRuns + 1, updatedAt: now });`);
279
+ L.push(` return runId;`);
280
+ L.push(` },`);
281
+ L.push(`});`);
282
+ L.push(``);
283
+ const content = L.join("\n");
284
+ const filePath = join(targetDir, "convex", "taskSystem", "agentOps.ts");
285
+ if (!dryRun) {
286
+ writeFileSync(filePath, content, "utf-8");
287
+ }
288
+ return { file: "convex/taskSystem/agentOps.ts", lines: L.length };
289
+ }
290
+ //# sourceMappingURL=agent-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-ops.js","sourceRoot":"","sources":["../../src/generators/agent-ops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { GeneratorContext } from "@yattalo/task-system-core";
2
+ export declare function generateClaudeHooks(ctx: GeneratorContext): {
3
+ file: string;
4
+ lines: number;
5
+ }[];
6
+ //# sourceMappingURL=claude-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-hooks.d.ts","sourceRoot":"","sources":["../../src/generators/claude-hooks.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAQlE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAgD5F"}
@@ -0,0 +1,260 @@
1
+ // ============================================================
2
+ // Generator: Claude Code Hooks
3
+ // Generates .claude/hooks/*.sh and .claude/settings.json
4
+ // ============================================================
5
+ import { writeFileSync, readFileSync, existsSync, mkdirSync, chmodSync } from "node:fs";
6
+ import { join } from "node:path";
7
+ import { getTableName } from "@yattalo/task-system-core";
8
+ /** Convert regex \d to POSIX ERE [0-9] for shell grep compatibility (M3) */
9
+ function toPosixPattern(pattern) {
10
+ return pattern.replace(/\\d/g, "[0-9]");
11
+ }
12
+ export function generateClaudeHooks(ctx) {
13
+ const { config, targetDir, dryRun } = ctx;
14
+ const tableName = getTableName(config);
15
+ const pattern = toPosixPattern(config.taskIdPattern);
16
+ const results = [];
17
+ const hooksDir = join(targetDir, ".claude", "hooks");
18
+ if (!dryRun && !existsSync(hooksDir)) {
19
+ mkdirSync(hooksDir, { recursive: true });
20
+ }
21
+ // 1. Task ID detector hook - extracts task IDs from prompts
22
+ const detectorContent = generateTaskDetectorHook(pattern);
23
+ const detectorPath = join(hooksDir, "detect-task-id.sh");
24
+ if (!dryRun) {
25
+ writeFileSync(detectorPath, detectorContent, "utf-8");
26
+ chmodSync(detectorPath, 0o755);
27
+ }
28
+ results.push({ file: ".claude/hooks/detect-task-id.sh", lines: detectorContent.split("\n").length });
29
+ // 2. Post-commit task check hook (C3: changed from PreToolUse to PostToolUse)
30
+ const postCommitContent = generatePostCommitHook(tableName, pattern);
31
+ const postCommitPath = join(hooksDir, "check-task-status.sh");
32
+ if (!dryRun) {
33
+ writeFileSync(postCommitPath, postCommitContent, "utf-8");
34
+ chmodSync(postCommitPath, 0o755);
35
+ }
36
+ results.push({ file: ".claude/hooks/check-task-status.sh", lines: postCommitContent.split("\n").length });
37
+ // 3. Session summary hook
38
+ const sessionSummaryContent = generateSessionSummaryHook(tableName);
39
+ const sessionSummaryPath = join(hooksDir, "session-summary.sh");
40
+ if (!dryRun) {
41
+ writeFileSync(sessionSummaryPath, sessionSummaryContent, "utf-8");
42
+ chmodSync(sessionSummaryPath, 0o755);
43
+ }
44
+ results.push({ file: ".claude/hooks/session-summary.sh", lines: sessionSummaryContent.split("\n").length });
45
+ // 4. Generate settings.json with hooks configuration (M1: merge instead of overwrite)
46
+ const settingsContent = generateSettingsJson(config);
47
+ const settingsPath = join(targetDir, ".claude", "settings.json");
48
+ if (!dryRun) {
49
+ mergeSettingsJson(settingsPath, settingsContent);
50
+ }
51
+ results.push({ file: ".claude/settings.json", lines: settingsContent.split("\n").length });
52
+ return results;
53
+ }
54
+ /** M1: Merge new hooks into existing settings.json instead of overwriting */
55
+ function mergeSettingsJson(settingsPath, newContent) {
56
+ const newSettings = JSON.parse(newContent);
57
+ if (existsSync(settingsPath)) {
58
+ try {
59
+ const existing = JSON.parse(readFileSync(settingsPath, "utf-8"));
60
+ const existingHooks = (existing.hooks ?? {});
61
+ const newHooks = (newSettings.hooks ?? {});
62
+ const merged = {
63
+ ...existing,
64
+ hooks: { ...existingHooks, ...newHooks },
65
+ };
66
+ writeFileSync(settingsPath, JSON.stringify(merged, null, 2), "utf-8");
67
+ }
68
+ catch {
69
+ // If existing file is not valid JSON, overwrite
70
+ writeFileSync(settingsPath, newContent, "utf-8");
71
+ }
72
+ }
73
+ else {
74
+ writeFileSync(settingsPath, newContent, "utf-8");
75
+ }
76
+ }
77
+ function generateTaskDetectorHook(pattern) {
78
+ const L = [];
79
+ L.push(`#!/bin/bash`);
80
+ L.push(`set -e`);
81
+ L.push(`# ============================================================`);
82
+ L.push(`# Task ID Detector - extracts task IDs from user prompts`);
83
+ L.push(`# ============================================================`);
84
+ L.push(``);
85
+ L.push(`TASK_PATTERN="${pattern}"`);
86
+ L.push(``);
87
+ L.push(`# Read JSON input from stdin`);
88
+ L.push(`INPUT=$(cat /dev/stdin)`);
89
+ L.push(``);
90
+ L.push(`# Extract prompt from JSON`);
91
+ L.push(`PROMPT=$(echo "$INPUT" | jq -r '.prompt // empty' 2>/dev/null) || exit 0`);
92
+ L.push(``);
93
+ L.push(`if [ -z "$PROMPT" ]; then`);
94
+ L.push(` exit 0`);
95
+ L.push(`fi`);
96
+ L.push(``);
97
+ L.push(`# Extract task IDs matching pattern`);
98
+ L.push(`TASK_IDS=$(echo "$PROMPT" | grep -oE "$TASK_PATTERN" | sort -u) || exit 0`);
99
+ L.push(``);
100
+ L.push(`if [ -z "$TASK_IDS" ]; then`);
101
+ L.push(` exit 0`);
102
+ L.push(`fi`);
103
+ L.push(``);
104
+ L.push(`# For each task ID, get current status from Convex`);
105
+ // C2: Build context without embedded newlines, use semicolons as separator
106
+ L.push(`CONTEXT=""`);
107
+ L.push(`for TASK_ID in $TASK_IDS; do`);
108
+ L.push(` STATUS=$(npx convex run taskSystem/tasks:get '{"taskId":"'"$TASK_ID"'"}' 2>/dev/null | jq -r '.status // "not_found"' 2>/dev/null) || true`);
109
+ L.push(` if [ "$STATUS" != "not_found" ] && [ -n "$STATUS" ]; then`);
110
+ L.push(` CONTEXT="$CONTEXT $TASK_ID=$STATUS"`);
111
+ L.push(` fi`);
112
+ L.push(`done`);
113
+ L.push(``);
114
+ // C2: Use jq --arg for safe JSON construction
115
+ L.push(`if [ -n "$CONTEXT" ]; then`);
116
+ L.push(` jq -n --arg ctx "$CONTEXT" '{`);
117
+ L.push(` "hookSpecificOutput": {`);
118
+ L.push(` "hookEventName": "UserPromptSubmit",`);
119
+ L.push(` "additionalContext": ("Task status:" + $ctx)`);
120
+ L.push(` }`);
121
+ L.push(` }'`);
122
+ L.push(` exit 0`);
123
+ L.push(`fi`);
124
+ L.push(``);
125
+ L.push(`exit 0`);
126
+ return L.join("\n");
127
+ }
128
+ // C3: Changed from PreToolUse to PostToolUse — now reads the actual commit
129
+ function generatePostCommitHook(tableName, pattern) {
130
+ const L = [];
131
+ L.push(`#!/bin/bash`);
132
+ L.push(`set -e`);
133
+ L.push(`# ============================================================`);
134
+ L.push(`# Post-commit Task Check - validates task references in commits`);
135
+ L.push(`# ============================================================`);
136
+ L.push(``);
137
+ L.push(`TASK_PATTERN="${pattern}"`);
138
+ L.push(``);
139
+ L.push(`# Read JSON input from stdin`);
140
+ L.push(`INPUT=$(cat /dev/stdin)`);
141
+ L.push(``);
142
+ L.push(`# Only run on Bash tool (git commands)`);
143
+ L.push(`TOOL_NAME=$(echo "$INPUT" | jq -r '.tool_name') || exit 0`);
144
+ L.push(`if [ "$TOOL_NAME" != "Bash" ]; then`);
145
+ L.push(` exit 0`);
146
+ L.push(`fi`);
147
+ L.push(``);
148
+ L.push(`# Extract command`);
149
+ L.push(`COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command' 2>/dev/null) || exit 0`);
150
+ L.push(``);
151
+ L.push(`# Only check git commit commands`);
152
+ L.push(`if ! echo "$COMMAND" | grep -qE "(git commit|git push)"; then`);
153
+ L.push(` exit 0`);
154
+ L.push(`fi`);
155
+ L.push(``);
156
+ L.push(`# Get the commit message (PostToolUse: commit already happened)`);
157
+ L.push(`MSG=$(git log -1 --pretty=%B 2>/dev/null) || exit 0`);
158
+ L.push(``);
159
+ L.push(`# Extract task IDs`);
160
+ L.push(`TASK_IDS=$(echo "$MSG" | grep -oE "$TASK_PATTERN" | sort -u) || exit 0`);
161
+ L.push(``);
162
+ L.push(`if [ -z "$TASK_IDS" ]; then`);
163
+ L.push(` exit 0`);
164
+ L.push(`fi`);
165
+ L.push(``);
166
+ L.push(`# Check each task ID`);
167
+ L.push(`for TASK_ID in $TASK_IDS; do`);
168
+ L.push(` EXISTS=$(npx convex run taskSystem/tasks:get '{"taskId":"'"$TASK_ID"'"}' 2>/dev/null | jq -r '.taskId // empty' 2>/dev/null) || true`);
169
+ L.push(` if [ -z "$EXISTS" ]; then`);
170
+ // C1: Use TS interpolation for tableName, not shell variable
171
+ L.push(` echo "Warning: $TASK_ID not found in ${tableName}" >&2`);
172
+ L.push(` fi`);
173
+ L.push(`done`);
174
+ L.push(``);
175
+ L.push(`exit 0`);
176
+ return L.join("\n");
177
+ }
178
+ function generateSessionSummaryHook(tableName) {
179
+ const L = [];
180
+ L.push(`#!/bin/bash`);
181
+ L.push(`set -e`);
182
+ L.push(`# ============================================================`);
183
+ L.push(`# Session Summary - shows task progress when session ends`);
184
+ L.push(`# ============================================================`);
185
+ L.push(``);
186
+ L.push(`# Read JSON input from stdin`);
187
+ L.push(`INPUT=$(cat /dev/stdin)`);
188
+ L.push(``);
189
+ L.push(`# Get current working directory`);
190
+ L.push(`PROJECT_DIR=$(echo "$INPUT" | jq -r '.cwd') || exit 0`);
191
+ L.push(``);
192
+ L.push(`cd "$PROJECT_DIR" 2>/dev/null || exit 0`);
193
+ L.push(``);
194
+ L.push(`# Check if task-system is initialized`);
195
+ L.push(`if [ ! -f "task-system.config.ts" ]; then`);
196
+ L.push(` exit 0`);
197
+ L.push(`fi`);
198
+ L.push(``);
199
+ L.push(`# Get task statistics`);
200
+ L.push(`STATS=$(npx convex run taskSystem/orchestrator:getStats 2>/dev/null) || exit 0`);
201
+ L.push(``);
202
+ L.push(`if [ -n "$STATS" ] && [ "$STATS" != "null" ]; then`);
203
+ L.push(` TOTAL=$(echo "$STATS" | jq -r '.total // 0' 2>/dev/null)`);
204
+ // M6: Fix jq paths to match actual getStats return shape (.byStatus.*)
205
+ L.push(` DONE=$(echo "$STATS" | jq -r '.byStatus.done // 0' 2>/dev/null)`);
206
+ L.push(` IN_PROGRESS=$(echo "$STATS" | jq -r '.byStatus.in_progress // 0' 2>/dev/null)`);
207
+ L.push(` BLOCKED=$(echo "$STATS" | jq -r '.byStatus.blocked // 0' 2>/dev/null)`);
208
+ L.push(``);
209
+ L.push(` if [ "$IN_PROGRESS" -gt 0 ] 2>/dev/null || [ "$BLOCKED" -gt 0 ] 2>/dev/null; then`);
210
+ L.push(` SUMMARY="Task Progress: $DONE/$TOTAL done, $IN_PROGRESS in progress, $BLOCKED blocked"`);
211
+ L.push(` jq -n --arg summary "$SUMMARY" '{"additionalContext": $summary}'`);
212
+ L.push(` fi`);
213
+ L.push(`fi`);
214
+ L.push(``);
215
+ L.push(`exit 0`);
216
+ return L.join("\n");
217
+ }
218
+ // C3: Changed PreToolUse to PostToolUse for check-task-status hook
219
+ function generateSettingsJson(ctx) {
220
+ const settings = {
221
+ hooks: {
222
+ UserPromptSubmit: [
223
+ {
224
+ hooks: [
225
+ {
226
+ type: "command",
227
+ command: "$CLAUDE_PROJECT_DIR/.claude/hooks/detect-task-id.sh",
228
+ statusMessage: "Checking task references",
229
+ },
230
+ ],
231
+ },
232
+ ],
233
+ PostToolUse: [
234
+ {
235
+ matcher: "Bash",
236
+ hooks: [
237
+ {
238
+ type: "command",
239
+ command: "$CLAUDE_PROJECT_DIR/.claude/hooks/check-task-status.sh",
240
+ statusMessage: "Validating task references",
241
+ },
242
+ ],
243
+ },
244
+ ],
245
+ Stop: [
246
+ {
247
+ hooks: [
248
+ {
249
+ type: "command",
250
+ command: "$CLAUDE_PROJECT_DIR/.claude/hooks/session-summary.sh",
251
+ statusMessage: "Generating session summary",
252
+ },
253
+ ],
254
+ },
255
+ ],
256
+ },
257
+ };
258
+ return JSON.stringify(settings, null, 2);
259
+ }
260
+ //# sourceMappingURL=claude-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-hooks.js","sourceRoot":"","sources":["../../src/generators/claude-hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { GeneratorContext } from "@yattalo/task-system-core";
2
+ export declare function generateCliAliases(ctx: GeneratorContext): {
3
+ file: string;
4
+ lines: number;
5
+ };
6
+ //# sourceMappingURL=cli-aliases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-aliases.d.ts","sourceRoot":"","sources":["../../src/generators/cli-aliases.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAuLzF"}