@gempack/squad-mcp 0.5.0 → 0.6.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 (96) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +3 -2
  3. package/CHANGELOG.md +260 -17
  4. package/INSTALL.md +156 -24
  5. package/README.md +279 -27
  6. package/agents/{PO.md → product-owner.md} +33 -1
  7. package/agents/{Senior-Architect.md → senior-architect.md} +33 -1
  8. package/agents/{Senior-DBA.md → senior-dba.md} +33 -1
  9. package/agents/{Senior-Dev-Reviewer.md → senior-dev-reviewer.md} +33 -1
  10. package/agents/{Senior-Dev-Security.md → senior-dev-security.md} +33 -1
  11. package/agents/{Senior-Developer.md → senior-developer.md} +33 -1
  12. package/agents/{Senior-QA.md → senior-qa.md} +33 -1
  13. package/agents/{TechLead-Consolidator.md → tech-lead-consolidator.md} +7 -1
  14. package/agents/{TechLead-Planner.md → tech-lead-planner.md} +7 -1
  15. package/commands/squad-review.md +10 -58
  16. package/commands/squad.md +11 -70
  17. package/dist/config/ownership-matrix.d.ts +24 -2
  18. package/dist/config/ownership-matrix.js +466 -139
  19. package/dist/config/ownership-matrix.js.map +1 -1
  20. package/dist/config/squad-yaml.d.ts +242 -0
  21. package/dist/config/squad-yaml.js +403 -0
  22. package/dist/config/squad-yaml.js.map +1 -0
  23. package/dist/errors.d.ts +1 -1
  24. package/dist/errors.js +1 -1
  25. package/dist/errors.js.map +1 -1
  26. package/dist/format/pr-review.d.ts +61 -0
  27. package/dist/format/pr-review.js +146 -0
  28. package/dist/format/pr-review.js.map +1 -0
  29. package/dist/index.js +19 -13
  30. package/dist/index.js.map +1 -1
  31. package/dist/learning/format.d.ts +29 -0
  32. package/dist/learning/format.js +55 -0
  33. package/dist/learning/format.js.map +1 -0
  34. package/dist/learning/store.d.ts +102 -0
  35. package/dist/learning/store.js +169 -0
  36. package/dist/learning/store.js.map +1 -0
  37. package/dist/resources/agent-loader.d.ts +1 -1
  38. package/dist/resources/agent-loader.js +53 -40
  39. package/dist/resources/agent-loader.js.map +1 -1
  40. package/dist/tasks/select.d.ts +64 -0
  41. package/dist/tasks/select.js +84 -0
  42. package/dist/tasks/select.js.map +1 -0
  43. package/dist/tasks/store.d.ts +338 -0
  44. package/dist/tasks/store.js +321 -0
  45. package/dist/tasks/store.js.map +1 -0
  46. package/dist/tools/compose-advisory-bundle.d.ts +5 -5
  47. package/dist/tools/compose-advisory-bundle.js +24 -12
  48. package/dist/tools/compose-advisory-bundle.js.map +1 -1
  49. package/dist/tools/compose-prd-parse.d.ts +53 -0
  50. package/dist/tools/compose-prd-parse.js +167 -0
  51. package/dist/tools/compose-prd-parse.js.map +1 -0
  52. package/dist/tools/compose-squad-workflow.d.ts +28 -10
  53. package/dist/tools/compose-squad-workflow.js +0 -0
  54. package/dist/tools/compose-squad-workflow.js.map +1 -1
  55. package/dist/tools/consolidate.d.ts +55 -4
  56. package/dist/tools/consolidate.js +87 -15
  57. package/dist/tools/consolidate.js.map +1 -1
  58. package/dist/tools/expand-task.d.ts +51 -0
  59. package/dist/tools/expand-task.js +35 -0
  60. package/dist/tools/expand-task.js.map +1 -0
  61. package/dist/tools/list-tasks.d.ts +31 -0
  62. package/dist/tools/list-tasks.js +50 -0
  63. package/dist/tools/list-tasks.js.map +1 -0
  64. package/dist/tools/next-task.d.ts +37 -0
  65. package/dist/tools/next-task.js +60 -0
  66. package/dist/tools/next-task.js.map +1 -0
  67. package/dist/tools/read-learnings.d.ts +53 -0
  68. package/dist/tools/read-learnings.js +72 -0
  69. package/dist/tools/read-learnings.js.map +1 -0
  70. package/dist/tools/read-squad-config.d.ts +23 -0
  71. package/dist/tools/read-squad-config.js +34 -0
  72. package/dist/tools/read-squad-config.js.map +1 -0
  73. package/dist/tools/record-learning.d.ts +62 -0
  74. package/dist/tools/record-learning.js +80 -0
  75. package/dist/tools/record-learning.js.map +1 -0
  76. package/dist/tools/record-tasks.d.ts +71 -0
  77. package/dist/tools/record-tasks.js +45 -0
  78. package/dist/tools/record-tasks.js.map +1 -0
  79. package/dist/tools/registry.d.ts +1 -1
  80. package/dist/tools/registry.js +71 -39
  81. package/dist/tools/registry.js.map +1 -1
  82. package/dist/tools/score-rubric.d.ts +74 -0
  83. package/dist/tools/score-rubric.js +140 -0
  84. package/dist/tools/score-rubric.js.map +1 -0
  85. package/dist/tools/slice-files-for-task.d.ts +31 -0
  86. package/dist/tools/slice-files-for-task.js +52 -0
  87. package/dist/tools/slice-files-for-task.js.map +1 -0
  88. package/dist/tools/update-task-status.d.ts +29 -0
  89. package/dist/tools/update-task-status.js +35 -0
  90. package/dist/tools/update-task-status.js.map +1 -0
  91. package/package.json +4 -1
  92. package/skills/squad/SKILL.md +454 -0
  93. package/tools/post-review.mjs +212 -0
  94. /package/agents/{Skill-Squad-Dev.md → _shared/Skill-Squad-Dev.md} +0 -0
  95. /package/agents/{Skill-Squad-Review.md → _shared/Skill-Squad-Review.md} +0 -0
  96. /package/agents/{_Severity-and-Ownership.md → _shared/_Severity-and-Ownership.md} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"agent-loader.js","sourceRoot":"","sources":["../../src/resources/agent-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-loader.js","sourceRoot":"","sources":["../../src/resources/agent-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import type { AgentName } from "../config/ownership-matrix.js";
2
+ import type { Task, TaskStatus } from "./store.js";
3
+ /**
4
+ * Pure selection helpers over the in-memory tasks list. Stateless. Used by
5
+ * the next_task and list_tasks MCP tools.
6
+ */
7
+ export interface ListTasksOptions {
8
+ /** Filter to one or more statuses. */
9
+ status?: TaskStatus[];
10
+ /**
11
+ * When set, return only tasks whose `agent_hints` includes ANY of these
12
+ * agents. Tasks without agent_hints are repo-wide and always pass.
13
+ */
14
+ agent?: AgentName;
15
+ /**
16
+ * When set, return only tasks whose `scope` glob matches at least one of
17
+ * these paths. Tasks without scope are repo-wide and always pass.
18
+ */
19
+ changed_files?: string[];
20
+ /** Cap result count. Default unlimited. */
21
+ limit?: number;
22
+ }
23
+ export declare function listTasks(tasks: Task[], opts?: ListTasksOptions): Task[];
24
+ export interface NextTaskOptions {
25
+ /**
26
+ * Treat these statuses as "complete" for dependency checks. Defaults to
27
+ * just `done`. A task whose deps are all `done` is considered ready.
28
+ */
29
+ done_statuses?: TaskStatus[];
30
+ /**
31
+ * Statuses considered eligible for selection. Defaults to `pending`.
32
+ * Use `["pending", "blocked"]` to also surface blocked tasks (with a hint
33
+ * the caller can show the user — handled outside this function).
34
+ */
35
+ candidate_statuses?: TaskStatus[];
36
+ agent?: AgentName;
37
+ changed_files?: string[];
38
+ }
39
+ export interface NextTaskResult {
40
+ task: Task | null;
41
+ /** Reason "task is null": no candidates, or all blocked by deps. */
42
+ reason: "no_candidates" | "all_blocked" | "ok";
43
+ /**
44
+ * Tasks that match candidate filters but have unmet dependencies. Useful
45
+ * for the caller to show "X is next when Y completes".
46
+ */
47
+ blocked: Array<{
48
+ task: Task;
49
+ missing_deps: number[];
50
+ }>;
51
+ }
52
+ /**
53
+ * Pick the next ready task. A task is ready when:
54
+ * - its status is in `candidate_statuses` (default `["pending"]`)
55
+ * - every id in its `dependencies` refers to a task whose status is in
56
+ * `done_statuses` (default `["done"]`)
57
+ * - it passes the agent / changed_files filters
58
+ *
59
+ * Tiebreakers (in order): priority (high < medium < low), then id ascending.
60
+ *
61
+ * Returns the task plus a structured result so the caller can distinguish
62
+ * "no candidates" from "all blocked by deps" (different UX).
63
+ */
64
+ export declare function nextTask(tasks: Task[], opts?: NextTaskOptions): NextTaskResult;
@@ -0,0 +1,84 @@
1
+ import { matchesGlob } from "../config/squad-yaml.js";
2
+ export function listTasks(tasks, opts = {}) {
3
+ let out = tasks;
4
+ if (opts.status && opts.status.length > 0) {
5
+ const set = new Set(opts.status);
6
+ out = out.filter((t) => set.has(t.status));
7
+ }
8
+ if (opts.agent !== undefined) {
9
+ const wantedAgent = opts.agent;
10
+ out = out.filter((t) => {
11
+ if (!t.agent_hints || t.agent_hints.length === 0)
12
+ return true;
13
+ return t.agent_hints.includes(wantedAgent);
14
+ });
15
+ }
16
+ if (opts.changed_files && opts.changed_files.length > 0) {
17
+ const files = opts.changed_files;
18
+ out = out.filter((t) => {
19
+ if (!t.scope)
20
+ return true;
21
+ return files.some((f) => matchesGlob(t.scope, f));
22
+ });
23
+ }
24
+ if (opts.limit !== undefined && opts.limit > 0) {
25
+ out = out.slice(0, opts.limit);
26
+ }
27
+ return out;
28
+ }
29
+ const PRIORITY_RANK = {
30
+ high: 0,
31
+ medium: 1,
32
+ low: 2,
33
+ };
34
+ /**
35
+ * Pick the next ready task. A task is ready when:
36
+ * - its status is in `candidate_statuses` (default `["pending"]`)
37
+ * - every id in its `dependencies` refers to a task whose status is in
38
+ * `done_statuses` (default `["done"]`)
39
+ * - it passes the agent / changed_files filters
40
+ *
41
+ * Tiebreakers (in order): priority (high < medium < low), then id ascending.
42
+ *
43
+ * Returns the task plus a structured result so the caller can distinguish
44
+ * "no candidates" from "all blocked by deps" (different UX).
45
+ */
46
+ export function nextTask(tasks, opts = {}) {
47
+ const doneSet = new Set(opts.done_statuses ?? ["done"]);
48
+ const candidateStatuses = opts.candidate_statuses ?? ["pending"];
49
+ // Build done-id index over the FULL task list — deps may point at any task,
50
+ // not just ones passing the filters.
51
+ const doneIds = new Set(tasks.filter((t) => doneSet.has(t.status)).map((t) => t.id));
52
+ // Filter to candidates (status + agent + scope).
53
+ const filterOpts = { status: candidateStatuses };
54
+ if (opts.agent !== undefined)
55
+ filterOpts.agent = opts.agent;
56
+ if (opts.changed_files !== undefined)
57
+ filterOpts.changed_files = opts.changed_files;
58
+ const candidates = listTasks(tasks, filterOpts);
59
+ if (candidates.length === 0) {
60
+ return { task: null, reason: "no_candidates", blocked: [] };
61
+ }
62
+ const ready = [];
63
+ const blocked = [];
64
+ for (const t of candidates) {
65
+ const missing = t.dependencies.filter((d) => !doneIds.has(d));
66
+ if (missing.length === 0) {
67
+ ready.push(t);
68
+ }
69
+ else {
70
+ blocked.push({ task: t, missing_deps: missing });
71
+ }
72
+ }
73
+ if (ready.length === 0) {
74
+ return { task: null, reason: "all_blocked", blocked };
75
+ }
76
+ ready.sort((a, b) => {
77
+ const p = PRIORITY_RANK[a.priority] - PRIORITY_RANK[b.priority];
78
+ if (p !== 0)
79
+ return p;
80
+ return a.id - b.id;
81
+ });
82
+ return { task: ready[0], reason: "ok", blocked };
83
+ }
84
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/tasks/select.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,338 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Mutable JSON store for tasks. Lives at `.squad/tasks.json` (path overridable
4
+ * via `.squad.yaml.tasks.path`). Distinct from learnings/ which is JSONL +
5
+ * append-only — tasks mutate (status flips, subtasks expand) so JSON with
6
+ * atomic write (tmp + rename) is the right primitive.
7
+ *
8
+ * Schema is small on purpose. Inspired by claude-task-master but adapted to
9
+ * squad-mcp primitives:
10
+ * - `scope`: glob limiting which files this task touches (reuses matchesGlob)
11
+ * - `agent_hints`: which advisory agents are relevant for this task
12
+ *
13
+ * No `tags` system in V1 — single linear list. Add later if multi-feature
14
+ * parallel work in the same repo becomes a real need.
15
+ */
16
+ declare const taskStatusSchema: z.ZodEnum<["pending", "in-progress", "review", "done", "blocked", "cancelled"]>;
17
+ export type TaskStatus = z.infer<typeof taskStatusSchema>;
18
+ declare const taskPrioritySchema: z.ZodEnum<["low", "medium", "high"]>;
19
+ export type TaskPriority = z.infer<typeof taskPrioritySchema>;
20
+ declare const subtaskSchema: z.ZodObject<{
21
+ id: z.ZodNumber;
22
+ title: z.ZodString;
23
+ description: z.ZodOptional<z.ZodString>;
24
+ status: z.ZodEnum<["pending", "in-progress", "review", "done", "blocked", "cancelled"]>;
25
+ dependencies: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
26
+ details: z.ZodOptional<z.ZodString>;
27
+ }, "strip", z.ZodTypeAny, {
28
+ status: "pending" | "in-progress" | "review" | "done" | "blocked" | "cancelled";
29
+ title: string;
30
+ id: number;
31
+ dependencies: number[];
32
+ details?: string | undefined;
33
+ description?: string | undefined;
34
+ }, {
35
+ status: "pending" | "in-progress" | "review" | "done" | "blocked" | "cancelled";
36
+ title: string;
37
+ id: number;
38
+ details?: string | undefined;
39
+ description?: string | undefined;
40
+ dependencies?: number[] | undefined;
41
+ }>;
42
+ export type Subtask = z.infer<typeof subtaskSchema>;
43
+ declare const taskSchema: z.ZodObject<{
44
+ id: z.ZodNumber;
45
+ title: z.ZodString;
46
+ description: z.ZodOptional<z.ZodString>;
47
+ status: z.ZodEnum<["pending", "in-progress", "review", "done", "blocked", "cancelled"]>;
48
+ dependencies: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
49
+ priority: z.ZodDefault<z.ZodEnum<["low", "medium", "high"]>>;
50
+ details: z.ZodOptional<z.ZodString>;
51
+ test_strategy: z.ZodOptional<z.ZodString>;
52
+ /**
53
+ * Glob limiting which files belong to this task (e.g. "src/auth/**"). Used
54
+ * by slice_files_for_task. Optional — without scope, the task is repo-wide.
55
+ */
56
+ scope: z.ZodOptional<z.ZodString>;
57
+ /**
58
+ * Subset of squad agents most relevant for this task. Used by /squad-task
59
+ * to narrow the advisory squad. Optional — without hints, the task uses
60
+ * the standard select_squad heuristic.
61
+ */
62
+ agent_hints: z.ZodOptional<z.ZodArray<z.ZodEnum<[import("../config/ownership-matrix.js").AgentName, ...import("../config/ownership-matrix.js").AgentName[]]>, "many">>;
63
+ subtasks: z.ZodDefault<z.ZodArray<z.ZodObject<{
64
+ id: z.ZodNumber;
65
+ title: z.ZodString;
66
+ description: z.ZodOptional<z.ZodString>;
67
+ status: z.ZodEnum<["pending", "in-progress", "review", "done", "blocked", "cancelled"]>;
68
+ dependencies: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
69
+ details: z.ZodOptional<z.ZodString>;
70
+ }, "strip", z.ZodTypeAny, {
71
+ status: "pending" | "in-progress" | "review" | "done" | "blocked" | "cancelled";
72
+ title: string;
73
+ id: number;
74
+ dependencies: number[];
75
+ details?: string | undefined;
76
+ description?: string | undefined;
77
+ }, {
78
+ status: "pending" | "in-progress" | "review" | "done" | "blocked" | "cancelled";
79
+ title: string;
80
+ id: number;
81
+ details?: string | undefined;
82
+ description?: string | undefined;
83
+ dependencies?: number[] | undefined;
84
+ }>, "many">>;
85
+ /** ISO timestamp set on first record. */
86
+ created_at: z.ZodString;
87
+ /** ISO timestamp updated on every mutation (status change, subtask add, etc). */
88
+ updated_at: z.ZodString;
89
+ }, "strip", z.ZodTypeAny, {
90
+ status: "pending" | "in-progress" | "review" | "done" | "blocked" | "cancelled";
91
+ title: string;
92
+ id: number;
93
+ dependencies: number[];
94
+ priority: "high" | "medium" | "low";
95
+ subtasks: {
96
+ status: "pending" | "in-progress" | "review" | "done" | "blocked" | "cancelled";
97
+ title: string;
98
+ id: number;
99
+ dependencies: number[];
100
+ details?: string | undefined;
101
+ description?: string | undefined;
102
+ }[];
103
+ created_at: string;
104
+ updated_at: string;
105
+ details?: string | undefined;
106
+ scope?: string | undefined;
107
+ description?: string | undefined;
108
+ test_strategy?: string | undefined;
109
+ agent_hints?: import("../config/ownership-matrix.js").AgentName[] | undefined;
110
+ }, {
111
+ status: "pending" | "in-progress" | "review" | "done" | "blocked" | "cancelled";
112
+ title: string;
113
+ id: number;
114
+ created_at: string;
115
+ updated_at: string;
116
+ details?: string | undefined;
117
+ scope?: string | undefined;
118
+ description?: string | undefined;
119
+ dependencies?: number[] | undefined;
120
+ priority?: "high" | "medium" | "low" | undefined;
121
+ test_strategy?: string | undefined;
122
+ agent_hints?: import("../config/ownership-matrix.js").AgentName[] | undefined;
123
+ subtasks?: {
124
+ status: "pending" | "in-progress" | "review" | "done" | "blocked" | "cancelled";
125
+ title: string;
126
+ id: number;
127
+ details?: string | undefined;
128
+ description?: string | undefined;
129
+ dependencies?: number[] | undefined;
130
+ }[] | undefined;
131
+ }>;
132
+ export type Task = z.infer<typeof taskSchema>;
133
+ declare const tasksFileSchema: z.ZodObject<{
134
+ /** Schema version — bump when breaking changes ship. Readers reject newer versions. */
135
+ version: z.ZodDefault<z.ZodLiteral<1>>;
136
+ tasks: z.ZodArray<z.ZodObject<{
137
+ id: z.ZodNumber;
138
+ title: z.ZodString;
139
+ description: z.ZodOptional<z.ZodString>;
140
+ status: z.ZodEnum<["pending", "in-progress", "review", "done", "blocked", "cancelled"]>;
141
+ dependencies: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
142
+ priority: z.ZodDefault<z.ZodEnum<["low", "medium", "high"]>>;
143
+ details: z.ZodOptional<z.ZodString>;
144
+ test_strategy: z.ZodOptional<z.ZodString>;
145
+ /**
146
+ * Glob limiting which files belong to this task (e.g. "src/auth/**"). Used
147
+ * by slice_files_for_task. Optional — without scope, the task is repo-wide.
148
+ */
149
+ scope: z.ZodOptional<z.ZodString>;
150
+ /**
151
+ * Subset of squad agents most relevant for this task. Used by /squad-task
152
+ * to narrow the advisory squad. Optional — without hints, the task uses
153
+ * the standard select_squad heuristic.
154
+ */
155
+ agent_hints: z.ZodOptional<z.ZodArray<z.ZodEnum<[import("../config/ownership-matrix.js").AgentName, ...import("../config/ownership-matrix.js").AgentName[]]>, "many">>;
156
+ subtasks: z.ZodDefault<z.ZodArray<z.ZodObject<{
157
+ id: z.ZodNumber;
158
+ title: z.ZodString;
159
+ description: z.ZodOptional<z.ZodString>;
160
+ status: z.ZodEnum<["pending", "in-progress", "review", "done", "blocked", "cancelled"]>;
161
+ dependencies: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
162
+ details: z.ZodOptional<z.ZodString>;
163
+ }, "strip", z.ZodTypeAny, {
164
+ status: "pending" | "in-progress" | "review" | "done" | "blocked" | "cancelled";
165
+ title: string;
166
+ id: number;
167
+ dependencies: number[];
168
+ details?: string | undefined;
169
+ description?: string | undefined;
170
+ }, {
171
+ status: "pending" | "in-progress" | "review" | "done" | "blocked" | "cancelled";
172
+ title: string;
173
+ id: number;
174
+ details?: string | undefined;
175
+ description?: string | undefined;
176
+ dependencies?: number[] | undefined;
177
+ }>, "many">>;
178
+ /** ISO timestamp set on first record. */
179
+ created_at: z.ZodString;
180
+ /** ISO timestamp updated on every mutation (status change, subtask add, etc). */
181
+ updated_at: z.ZodString;
182
+ }, "strip", z.ZodTypeAny, {
183
+ status: "pending" | "in-progress" | "review" | "done" | "blocked" | "cancelled";
184
+ title: string;
185
+ id: number;
186
+ dependencies: number[];
187
+ priority: "high" | "medium" | "low";
188
+ subtasks: {
189
+ status: "pending" | "in-progress" | "review" | "done" | "blocked" | "cancelled";
190
+ title: string;
191
+ id: number;
192
+ dependencies: number[];
193
+ details?: string | undefined;
194
+ description?: string | undefined;
195
+ }[];
196
+ created_at: string;
197
+ updated_at: string;
198
+ details?: string | undefined;
199
+ scope?: string | undefined;
200
+ description?: string | undefined;
201
+ test_strategy?: string | undefined;
202
+ agent_hints?: import("../config/ownership-matrix.js").AgentName[] | undefined;
203
+ }, {
204
+ status: "pending" | "in-progress" | "review" | "done" | "blocked" | "cancelled";
205
+ title: string;
206
+ id: number;
207
+ created_at: string;
208
+ updated_at: string;
209
+ details?: string | undefined;
210
+ scope?: string | undefined;
211
+ description?: string | undefined;
212
+ dependencies?: number[] | undefined;
213
+ priority?: "high" | "medium" | "low" | undefined;
214
+ test_strategy?: string | undefined;
215
+ agent_hints?: import("../config/ownership-matrix.js").AgentName[] | undefined;
216
+ subtasks?: {
217
+ status: "pending" | "in-progress" | "review" | "done" | "blocked" | "cancelled";
218
+ title: string;
219
+ id: number;
220
+ details?: string | undefined;
221
+ description?: string | undefined;
222
+ dependencies?: number[] | undefined;
223
+ }[] | undefined;
224
+ }>, "many">;
225
+ }, "strip", z.ZodTypeAny, {
226
+ tasks: {
227
+ status: "pending" | "in-progress" | "review" | "done" | "blocked" | "cancelled";
228
+ title: string;
229
+ id: number;
230
+ dependencies: number[];
231
+ priority: "high" | "medium" | "low";
232
+ subtasks: {
233
+ status: "pending" | "in-progress" | "review" | "done" | "blocked" | "cancelled";
234
+ title: string;
235
+ id: number;
236
+ dependencies: number[];
237
+ details?: string | undefined;
238
+ description?: string | undefined;
239
+ }[];
240
+ created_at: string;
241
+ updated_at: string;
242
+ details?: string | undefined;
243
+ scope?: string | undefined;
244
+ description?: string | undefined;
245
+ test_strategy?: string | undefined;
246
+ agent_hints?: import("../config/ownership-matrix.js").AgentName[] | undefined;
247
+ }[];
248
+ version: 1;
249
+ }, {
250
+ tasks: {
251
+ status: "pending" | "in-progress" | "review" | "done" | "blocked" | "cancelled";
252
+ title: string;
253
+ id: number;
254
+ created_at: string;
255
+ updated_at: string;
256
+ details?: string | undefined;
257
+ scope?: string | undefined;
258
+ description?: string | undefined;
259
+ dependencies?: number[] | undefined;
260
+ priority?: "high" | "medium" | "low" | undefined;
261
+ test_strategy?: string | undefined;
262
+ agent_hints?: import("../config/ownership-matrix.js").AgentName[] | undefined;
263
+ subtasks?: {
264
+ status: "pending" | "in-progress" | "review" | "done" | "blocked" | "cancelled";
265
+ title: string;
266
+ id: number;
267
+ details?: string | undefined;
268
+ description?: string | undefined;
269
+ dependencies?: number[] | undefined;
270
+ }[] | undefined;
271
+ }[];
272
+ version?: 1 | undefined;
273
+ }>;
274
+ export type TasksFile = z.infer<typeof tasksFileSchema>;
275
+ export declare const DEFAULT_TASKS_PATH = ".squad/tasks.json";
276
+ export declare function __resetTasksStoreCacheForTests(): void;
277
+ /**
278
+ * Read tasks.json. Returns an empty file shape if the file does not exist
279
+ * (a fresh repo with no tasks is the common case). Cached by mtime.
280
+ */
281
+ export declare function readTasks(workspaceRoot: string, options?: {
282
+ configuredPath?: string;
283
+ }): Promise<TasksFile>;
284
+ interface RecordTaskInput {
285
+ /** When omitted, an id is allocated as `max(existing) + 1`. */
286
+ id?: number;
287
+ title: string;
288
+ description?: string;
289
+ dependencies?: number[];
290
+ priority?: TaskPriority;
291
+ details?: string;
292
+ test_strategy?: string;
293
+ scope?: string;
294
+ agent_hints?: Task["agent_hints"];
295
+ }
296
+ /**
297
+ * Bulk-add tasks. Allocates ids sequentially when not supplied. Validates that
298
+ * supplied ids are unique and that all dependencies refer to ids that exist
299
+ * either in the existing file or in the same batch.
300
+ *
301
+ * Returns the IDs of the tasks that were appended (in input order).
302
+ */
303
+ export declare function recordTasks(workspaceRoot: string, inputs: RecordTaskInput[], options?: {
304
+ configuredPath?: string;
305
+ }): Promise<{
306
+ filePath: string;
307
+ ids: number[];
308
+ }>;
309
+ /**
310
+ * Update task status (or subtask status when subtask_id is provided). Stamps
311
+ * updated_at. Returns the updated task. Throws if the id is not found.
312
+ */
313
+ export declare function updateTaskStatus(workspaceRoot: string, taskId: number, status: TaskStatus, options?: {
314
+ subtaskId?: number;
315
+ configuredPath?: string;
316
+ }): Promise<{
317
+ filePath: string;
318
+ task: Task;
319
+ }>;
320
+ interface SubtaskInput {
321
+ title: string;
322
+ description?: string;
323
+ dependencies?: number[];
324
+ details?: string;
325
+ }
326
+ /**
327
+ * Append subtasks to an existing task. Allocates subtask ids sequentially
328
+ * starting from `max(existing.subtasks.id) + 1`. Mechanical only — no LLM
329
+ * decomposition here. The host LLM is responsible for generating the subtask
330
+ * inputs (typically via a future compose_task_expand prompt-pattern).
331
+ */
332
+ export declare function expandTask(workspaceRoot: string, taskId: number, subtasks: SubtaskInput[], options?: {
333
+ configuredPath?: string;
334
+ }): Promise<{
335
+ filePath: string;
336
+ task: Task;
337
+ }>;
338
+ export {};