maestro-agent-sdk 0.1.3 → 0.1.5

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 (102) hide show
  1. package/README.md +216 -20
  2. package/dist/agents/contracts.d.ts +10 -0
  3. package/dist/agents/contracts.d.ts.map +1 -1
  4. package/dist/agents/rollout/shared.d.ts +4 -4
  5. package/dist/agents/rollout/shared.js +4 -4
  6. package/dist/core/loop.d.ts.map +1 -1
  7. package/dist/core/loop.js +9 -8
  8. package/dist/core/loop.js.map +1 -1
  9. package/dist/index.d.ts +8 -7
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +8 -7
  12. package/dist/index.js.map +1 -1
  13. package/dist/memory/compressor.d.ts +8 -5
  14. package/dist/memory/compressor.d.ts.map +1 -1
  15. package/dist/memory/compressor.js +10 -4
  16. package/dist/memory/compressor.js.map +1 -1
  17. package/dist/memory/reminder.d.ts +11 -12
  18. package/dist/memory/reminder.d.ts.map +1 -1
  19. package/dist/memory/reminder.js +22 -32
  20. package/dist/memory/reminder.js.map +1 -1
  21. package/dist/platform/config.d.ts +0 -2
  22. package/dist/platform/config.d.ts.map +1 -1
  23. package/dist/platform/config.js +9 -18
  24. package/dist/platform/config.js.map +1 -1
  25. package/dist/platform/version.d.ts +13 -0
  26. package/dist/platform/version.d.ts.map +1 -0
  27. package/dist/platform/version.js +13 -0
  28. package/dist/platform/version.js.map +1 -0
  29. package/dist/provider.d.ts +62 -0
  30. package/dist/provider.d.ts.map +1 -1
  31. package/dist/provider.js +137 -30
  32. package/dist/provider.js.map +1 -1
  33. package/dist/registry.d.ts.map +1 -1
  34. package/dist/registry.js +16 -1
  35. package/dist/registry.js.map +1 -1
  36. package/dist/session-store.d.ts +95 -4
  37. package/dist/session-store.d.ts.map +1 -1
  38. package/dist/session-store.js +144 -13
  39. package/dist/session-store.js.map +1 -1
  40. package/dist/skills/curator.d.ts +8 -6
  41. package/dist/skills/curator.d.ts.map +1 -1
  42. package/dist/skills/curator.js +13 -7
  43. package/dist/skills/curator.js.map +1 -1
  44. package/dist/skills/loader.d.ts +45 -20
  45. package/dist/skills/loader.d.ts.map +1 -1
  46. package/dist/skills/loader.js +56 -11
  47. package/dist/skills/loader.js.map +1 -1
  48. package/dist/state/tasks.d.ts +107 -0
  49. package/dist/state/tasks.d.ts.map +1 -0
  50. package/dist/state/tasks.js +398 -0
  51. package/dist/state/tasks.js.map +1 -0
  52. package/dist/sub-agent/runner.d.ts +1 -1
  53. package/dist/sub-agent/runner.d.ts.map +1 -1
  54. package/dist/sub-agent/runner.js +3 -5
  55. package/dist/sub-agent/runner.js.map +1 -1
  56. package/dist/tools/builtin/edit.d.ts.map +1 -1
  57. package/dist/tools/builtin/edit.js +0 -4
  58. package/dist/tools/builtin/edit.js.map +1 -1
  59. package/dist/tools/builtin/glob.d.ts +17 -0
  60. package/dist/tools/builtin/glob.d.ts.map +1 -0
  61. package/dist/tools/builtin/glob.js +235 -0
  62. package/dist/tools/builtin/glob.js.map +1 -0
  63. package/dist/tools/builtin/grep.d.ts +3 -0
  64. package/dist/tools/builtin/grep.d.ts.map +1 -0
  65. package/dist/tools/builtin/grep.js +272 -0
  66. package/dist/tools/builtin/grep.js.map +1 -0
  67. package/dist/tools/builtin/read.d.ts.map +1 -1
  68. package/dist/tools/builtin/read.js +0 -4
  69. package/dist/tools/builtin/read.js.map +1 -1
  70. package/dist/tools/builtin/skill_write.d.ts +53 -0
  71. package/dist/tools/builtin/skill_write.d.ts.map +1 -0
  72. package/dist/tools/builtin/skill_write.js +264 -0
  73. package/dist/tools/builtin/skill_write.js.map +1 -0
  74. package/dist/tools/builtin/tasks.d.ts +34 -0
  75. package/dist/tools/builtin/tasks.d.ts.map +1 -0
  76. package/dist/tools/builtin/tasks.js +258 -0
  77. package/dist/tools/builtin/tasks.js.map +1 -0
  78. package/dist/tools/builtin/write.d.ts +4 -10
  79. package/dist/tools/builtin/write.d.ts.map +1 -1
  80. package/dist/tools/builtin/write.js.map +1 -1
  81. package/dist/tools/file-state.d.ts +1 -1
  82. package/dist/tools/file-state.js +1 -1
  83. package/dist/tools/registry.d.ts +1 -1
  84. package/dist/types.d.ts +64 -0
  85. package/dist/types.d.ts.map +1 -1
  86. package/package.json +1 -1
  87. package/dist/state/todos.d.ts +0 -95
  88. package/dist/state/todos.d.ts.map +0 -1
  89. package/dist/state/todos.js +0 -198
  90. package/dist/state/todos.js.map +0 -1
  91. package/dist/tools/builtin/sandbox.d.ts +0 -16
  92. package/dist/tools/builtin/sandbox.d.ts.map +0 -1
  93. package/dist/tools/builtin/sandbox.js +0 -59
  94. package/dist/tools/builtin/sandbox.js.map +0 -1
  95. package/dist/tools/builtin/todo_write.d.ts +0 -29
  96. package/dist/tools/builtin/todo_write.d.ts.map +0 -1
  97. package/dist/tools/builtin/todo_write.js +0 -96
  98. package/dist/tools/builtin/todo_write.js.map +0 -1
  99. package/dist/tools/hooks/sandbox-fs.d.ts +0 -25
  100. package/dist/tools/hooks/sandbox-fs.d.ts.map +0 -1
  101. package/dist/tools/hooks/sandbox-fs.js +0 -48
  102. package/dist/tools/hooks/sandbox-fs.js.map +0 -1
@@ -0,0 +1,107 @@
1
+ export type TaskStatus = "pending" | "in_progress" | "completed" | "deleted";
2
+ export interface TaskEntry {
3
+ /** Auto-assigned numeric string ("1", "2", ...). Stable across re-saves. */
4
+ id: string;
5
+ /** Imperative title — what needs to be done. ("Read spec", "Implement loader"). */
6
+ subject: string;
7
+ /** Optional longer detail / acceptance criteria. */
8
+ description?: string;
9
+ /** Optional present-continuous form for spinner / status display
10
+ * ("Reading spec" vs the imperative "Read spec"). */
11
+ activeForm?: string;
12
+ status: TaskStatus;
13
+ /** Task ids this task depends on. Cannot start until each is `completed`. */
14
+ blockedBy: string[];
15
+ /** Task ids that depend on this one. Maintained in sync with `blockedBy`
16
+ * on the other side — never edit directly. */
17
+ blocks: string[];
18
+ /** Optional owner / agent name. Surfaces in TaskList for multi-agent runs. */
19
+ owner?: string;
20
+ /** Arbitrary host-controlled bag. Round-tripped verbatim. */
21
+ metadata?: Record<string, unknown>;
22
+ createdAt: string;
23
+ updatedAt: string;
24
+ }
25
+ export interface CreateInput {
26
+ subject: string;
27
+ description?: string;
28
+ activeForm?: string;
29
+ owner?: string;
30
+ metadata?: Record<string, unknown>;
31
+ }
32
+ export interface UpdateInput {
33
+ status?: TaskStatus;
34
+ subject?: string;
35
+ description?: string;
36
+ activeForm?: string;
37
+ owner?: string;
38
+ metadata?: Record<string, unknown>;
39
+ /** Add these task ids to this task's `blockedBy` list (and update the
40
+ * other side's `blocks`). Unknown ids are silently ignored. */
41
+ addBlockedBy?: string[];
42
+ /** Add these task ids to this task's `blocks` list (and update the
43
+ * other side's `blockedBy`). */
44
+ addBlocks?: string[];
45
+ }
46
+ export interface UpdateResult {
47
+ task: TaskEntry;
48
+ /** When the update flipped an existing in_progress task to pending to
49
+ * enforce the 1-in-progress invariant, this is the demoted id. */
50
+ demotedId?: string;
51
+ }
52
+ export declare class TaskStore {
53
+ private readonly path;
54
+ private tasks;
55
+ private nextCounter;
56
+ constructor(path: string);
57
+ /** Snapshot of every non-deleted task in insertion order. Caller must not
58
+ * mutate the array. Use `listAll()` to include deleted entries. */
59
+ list(): readonly TaskEntry[];
60
+ /** Like `list()` but includes deleted entries — for forensic queries. */
61
+ listAll(): readonly TaskEntry[];
62
+ /** Look up by id. Returns null if no such task exists. */
63
+ get(id: string): TaskEntry | null;
64
+ /** True when the live list (non-deleted) is empty. */
65
+ isEmpty(): boolean;
66
+ /** Create a new task. Returns the freshly persisted entry. */
67
+ create(input: CreateInput): TaskEntry;
68
+ /**
69
+ * Update a task. Throws if no such task exists.
70
+ *
71
+ * Status transitions:
72
+ * - Anything → `in_progress` runs the 1-in-progress sweep, demoting
73
+ * any previously-in_progress task to `pending` and returning its id.
74
+ * - Anything → `deleted` is permanent; the task stays on disk for
75
+ * forensic queries but disappears from `list()`.
76
+ *
77
+ * Dependency edges are bidirectional: setting `addBlockedBy: ["3"]` on
78
+ * task 5 also pushes "5" onto task 3's `blocks` array. Self-loops and
79
+ * unknown ids are silently ignored.
80
+ */
81
+ update(id: string, input: UpdateInput): UpdateResult;
82
+ /** Drop the on-disk file (both new and legacy). Called by
83
+ * `deleteMaestroSession` via `dropTaskStore`. */
84
+ unlinkFile(): void;
85
+ /** Test-only: snapshot the path the store is backed by. */
86
+ __path(): string;
87
+ private nextId;
88
+ /** Path of the legacy `.todos.json` file for this session. */
89
+ private legacyPath;
90
+ private hydrate;
91
+ private hydrateFromV2;
92
+ private hydrateFromLegacy;
93
+ /** Recover the counter from existing IDs when the file lacked the field. */
94
+ private deriveCounter;
95
+ private persist;
96
+ }
97
+ /** Resolve the absolute tasks-file path for a session. Mirrors
98
+ * `maestroSessionPath` but with `.tasks.json` instead of `.jsonl`. */
99
+ export declare function tasksPathFor(sessionId: string): string;
100
+ export declare function getTaskStore(sessionId: string): TaskStore;
101
+ /** Drop a session's store + unlink its on-disk file (both new and legacy). */
102
+ export declare function dropTaskStore(sessionId: string): void;
103
+ /** Test-only. Reset every store. */
104
+ export declare function __resetAllStores(): void;
105
+ /** Test-only. Count of currently-tracked sessions. */
106
+ export declare function __storeCount(): number;
107
+ //# sourceMappingURL=tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/state/tasks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,398 @@
1
+ import { existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { dirname, join } from "node:path";
4
+ import { logger } from "../platform/logger.js";
5
+ /**
6
+ * Per-session task store backing the `TaskCreate` / `TaskUpdate` / `TaskList`
7
+ * / `TaskGet` builtin family.
8
+ *
9
+ * The Task* family replaced the v0.1.x `TodoWrite` snapshot-replace model
10
+ * with granular CRUD: each call mutates a single task (or queries the
11
+ * list) instead of overwriting the whole snapshot. The motivation is
12
+ * forward-compat with richer surfaces — task dependencies (`blocks` /
13
+ * `blockedBy`), owners (sub-agent assignment), per-task metadata, and
14
+ * long-running plans where round-tripping the entire list every turn is
15
+ * wasteful.
16
+ *
17
+ * Persistence: one JSON file at `~/.maestro/sessions/<sid>.tasks.json` —
18
+ * a snapshot of `{ version, nextCounter, tasks }`, atomically written.
19
+ * Schema version is stamped so future migrations stay cheap.
20
+ *
21
+ * Backward compatibility: when no `.tasks.json` exists but a legacy
22
+ * `.todos.json` is present (written by the pre-Task SDK), we auto-migrate
23
+ * on first hydrate — old todos become tasks with `content` → `subject`
24
+ * and the `task-N` prefix stripped to the bare counter. No deps are
25
+ * synthesized; the migration is lossless on the fields that survived the
26
+ * model. The legacy file is left in place for one release as a safety
27
+ * net; `dropTaskStore` unlinks both.
28
+ *
29
+ * Lifecycle:
30
+ * - `getTaskStore(sid)` lazy-creates the store and hydrates from disk
31
+ * (preferring `.tasks.json`, falling back to `.todos.json`).
32
+ * - `dropTaskStore(sid)` is called from `deleteMaestroSession` and
33
+ * `cleanupStaleMaestroSessions` so the module-level map can't outlive
34
+ * its sessions.
35
+ *
36
+ * Invariants enforced inside the store:
37
+ * - IDs are auto-assigned as numeric strings ("1", "2", "3"). Numeric
38
+ * ids are short, easy to refer back to in prose, and match Claude
39
+ * Code's TaskCreate return shape.
40
+ * - At most one task is `in_progress` at a time. `markInProgress`
41
+ * flips any prior in_progress entry back to `pending` and returns
42
+ * the demoted id so the caller can surface it.
43
+ * - `status: "deleted"` is permanent — TaskList / TaskGet filter
44
+ * deleted entries by default. The on-disk record stays so a future
45
+ * TaskGet by id can still surface "this task was deleted at T".
46
+ * - Dependency edges are bidirectional: setting `addBlockedBy: ["3"]`
47
+ * on task 5 also adds "5" to task 3's `blocks` array. The store
48
+ * enforces consistency on every mutation.
49
+ */
50
+ /** Mirror of `maestroSessionsDir()` from session-store.ts — inlined here to
51
+ * avoid a circular import (session-store.ts needs to call `dropTaskStore`
52
+ * for cleanup). Two single-line copies are cheaper than extracting a shared
53
+ * util file for one path. */
54
+ function sessionsDir() {
55
+ return join(homedir(), ".maestro", "sessions");
56
+ }
57
+ export class TaskStore {
58
+ path;
59
+ tasks = new Map();
60
+ nextCounter = 1;
61
+ constructor(path) {
62
+ this.path = path;
63
+ this.hydrate();
64
+ }
65
+ /** Snapshot of every non-deleted task in insertion order. Caller must not
66
+ * mutate the array. Use `listAll()` to include deleted entries. */
67
+ list() {
68
+ const out = [];
69
+ for (const t of this.tasks.values()) {
70
+ if (t.status !== "deleted")
71
+ out.push(t);
72
+ }
73
+ return out;
74
+ }
75
+ /** Like `list()` but includes deleted entries — for forensic queries. */
76
+ listAll() {
77
+ return [...this.tasks.values()];
78
+ }
79
+ /** Look up by id. Returns null if no such task exists. */
80
+ get(id) {
81
+ return this.tasks.get(id) ?? null;
82
+ }
83
+ /** True when the live list (non-deleted) is empty. */
84
+ isEmpty() {
85
+ for (const t of this.tasks.values()) {
86
+ if (t.status !== "deleted")
87
+ return false;
88
+ }
89
+ return true;
90
+ }
91
+ /** Create a new task. Returns the freshly persisted entry. */
92
+ create(input) {
93
+ const now = new Date().toISOString();
94
+ const id = this.nextId();
95
+ const entry = {
96
+ id,
97
+ subject: input.subject,
98
+ status: "pending",
99
+ blockedBy: [],
100
+ blocks: [],
101
+ createdAt: now,
102
+ updatedAt: now,
103
+ };
104
+ if (input.description !== undefined)
105
+ entry.description = input.description;
106
+ if (input.activeForm !== undefined)
107
+ entry.activeForm = input.activeForm;
108
+ if (input.owner !== undefined)
109
+ entry.owner = input.owner;
110
+ if (input.metadata !== undefined)
111
+ entry.metadata = input.metadata;
112
+ this.tasks.set(id, entry);
113
+ this.persist();
114
+ return entry;
115
+ }
116
+ /**
117
+ * Update a task. Throws if no such task exists.
118
+ *
119
+ * Status transitions:
120
+ * - Anything → `in_progress` runs the 1-in-progress sweep, demoting
121
+ * any previously-in_progress task to `pending` and returning its id.
122
+ * - Anything → `deleted` is permanent; the task stays on disk for
123
+ * forensic queries but disappears from `list()`.
124
+ *
125
+ * Dependency edges are bidirectional: setting `addBlockedBy: ["3"]` on
126
+ * task 5 also pushes "5" onto task 3's `blocks` array. Self-loops and
127
+ * unknown ids are silently ignored.
128
+ */
129
+ update(id, input) {
130
+ const entry = this.tasks.get(id);
131
+ if (!entry) {
132
+ throw new Error(`TaskStore.update: no task with id '${id}'`);
133
+ }
134
+ const now = new Date().toISOString();
135
+ let demotedId;
136
+ if (input.status !== undefined && input.status !== entry.status) {
137
+ if (input.status === "in_progress") {
138
+ // Demote any other in_progress task first.
139
+ for (const other of this.tasks.values()) {
140
+ if (other.id !== id && other.status === "in_progress") {
141
+ other.status = "pending";
142
+ other.updatedAt = now;
143
+ demotedId = other.id;
144
+ }
145
+ }
146
+ }
147
+ entry.status = input.status;
148
+ }
149
+ if (input.subject !== undefined)
150
+ entry.subject = input.subject;
151
+ if (input.description !== undefined)
152
+ entry.description = input.description;
153
+ if (input.activeForm !== undefined)
154
+ entry.activeForm = input.activeForm;
155
+ if (input.owner !== undefined)
156
+ entry.owner = input.owner;
157
+ if (input.metadata !== undefined)
158
+ entry.metadata = input.metadata;
159
+ if (input.addBlockedBy && input.addBlockedBy.length > 0) {
160
+ for (const blockerId of input.addBlockedBy) {
161
+ if (blockerId === id)
162
+ continue;
163
+ const blocker = this.tasks.get(blockerId);
164
+ if (!blocker)
165
+ continue;
166
+ if (!entry.blockedBy.includes(blockerId))
167
+ entry.blockedBy.push(blockerId);
168
+ if (!blocker.blocks.includes(id))
169
+ blocker.blocks.push(id);
170
+ blocker.updatedAt = now;
171
+ }
172
+ }
173
+ if (input.addBlocks && input.addBlocks.length > 0) {
174
+ for (const blockedId of input.addBlocks) {
175
+ if (blockedId === id)
176
+ continue;
177
+ const blocked = this.tasks.get(blockedId);
178
+ if (!blocked)
179
+ continue;
180
+ if (!entry.blocks.includes(blockedId))
181
+ entry.blocks.push(blockedId);
182
+ if (!blocked.blockedBy.includes(id))
183
+ blocked.blockedBy.push(id);
184
+ blocked.updatedAt = now;
185
+ }
186
+ }
187
+ entry.updatedAt = now;
188
+ this.persist();
189
+ return demotedId !== undefined ? { task: entry, demotedId } : { task: entry };
190
+ }
191
+ /** Drop the on-disk file (both new and legacy). Called by
192
+ * `deleteMaestroSession` via `dropTaskStore`. */
193
+ unlinkFile() {
194
+ for (const p of [this.path, this.legacyPath()]) {
195
+ try {
196
+ unlinkSync(p);
197
+ }
198
+ catch (e) {
199
+ if (e?.code !== "ENOENT") {
200
+ logger.warn({ err: e, path: p }, "TaskStore.unlinkFile failed");
201
+ }
202
+ }
203
+ }
204
+ }
205
+ /** Test-only: snapshot the path the store is backed by. */
206
+ __path() {
207
+ return this.path;
208
+ }
209
+ // --- internals ---------------------------------------------------------
210
+ nextId() {
211
+ const id = String(this.nextCounter);
212
+ this.nextCounter++;
213
+ return id;
214
+ }
215
+ /** Path of the legacy `.todos.json` file for this session. */
216
+ legacyPath() {
217
+ return this.path.replace(/\.tasks\.json$/, ".todos.json");
218
+ }
219
+ hydrate() {
220
+ if (existsSync(this.path)) {
221
+ this.hydrateFromV2();
222
+ return;
223
+ }
224
+ const legacy = this.legacyPath();
225
+ if (existsSync(legacy)) {
226
+ this.hydrateFromLegacy(legacy);
227
+ return;
228
+ }
229
+ // Fresh session — nothing to load.
230
+ }
231
+ hydrateFromV2() {
232
+ try {
233
+ const raw = readFileSync(this.path, "utf8");
234
+ const parsed = JSON.parse(raw);
235
+ if (parsed.version !== 2 || !Array.isArray(parsed.tasks)) {
236
+ logger.warn({ path: this.path }, "TaskStore.hydrate: unsupported schema, ignoring");
237
+ return;
238
+ }
239
+ for (const t of parsed.tasks) {
240
+ if (isWellFormedEntry(t))
241
+ this.tasks.set(t.id, t);
242
+ }
243
+ this.nextCounter = Math.max(1, parsed.nextCounter ?? this.deriveCounter());
244
+ }
245
+ catch (e) {
246
+ logger.warn({ err: e, path: this.path }, "TaskStore.hydrate: parse failed, starting empty");
247
+ }
248
+ }
249
+ hydrateFromLegacy(legacyPath) {
250
+ try {
251
+ const raw = readFileSync(legacyPath, "utf8");
252
+ const parsed = JSON.parse(raw);
253
+ if (parsed.version !== 1 || !Array.isArray(parsed.todos)) {
254
+ logger.warn({ path: legacyPath }, "TaskStore.hydrate: legacy schema malformed, ignoring");
255
+ return;
256
+ }
257
+ const now = new Date().toISOString();
258
+ let maxNumericId = 0;
259
+ for (const old of parsed.todos) {
260
+ if (typeof old.id !== "string" || typeof old.content !== "string")
261
+ continue;
262
+ const status = old.status === "pending" || old.status === "in_progress" || old.status === "completed"
263
+ ? old.status
264
+ : "pending";
265
+ // Strip "task-" prefix if present so the migrated id is just the number.
266
+ const numericId = old.id.replace(/^task-/, "");
267
+ const n = Number.parseInt(numericId, 10);
268
+ if (Number.isFinite(n) && n > maxNumericId)
269
+ maxNumericId = n;
270
+ const migrated = {
271
+ id: numericId || this.nextId(),
272
+ subject: old.content,
273
+ status,
274
+ blockedBy: [],
275
+ blocks: [],
276
+ createdAt: now,
277
+ updatedAt: now,
278
+ };
279
+ if (old.activeForm)
280
+ migrated.activeForm = old.activeForm;
281
+ this.tasks.set(migrated.id, migrated);
282
+ }
283
+ this.nextCounter = Math.max(parsed.nextCounter ?? 1, maxNumericId + 1);
284
+ // Persist immediately as v2 so the next hydrate prefers the new path.
285
+ this.persist();
286
+ logger.info({ from: legacyPath, to: this.path, migrated: this.tasks.size }, "TaskStore: migrated legacy todos file to tasks v2");
287
+ }
288
+ catch (e) {
289
+ logger.warn({ err: e, path: legacyPath }, "TaskStore.hydrate: legacy parse failed, starting empty");
290
+ }
291
+ }
292
+ /** Recover the counter from existing IDs when the file lacked the field. */
293
+ deriveCounter() {
294
+ let max = 0;
295
+ for (const t of this.tasks.values()) {
296
+ const n = Number.parseInt(t.id, 10);
297
+ if (Number.isFinite(n) && n > max)
298
+ max = n;
299
+ }
300
+ return max + 1;
301
+ }
302
+ persist() {
303
+ const file = {
304
+ version: 2,
305
+ nextCounter: this.nextCounter,
306
+ tasks: [...this.tasks.values()],
307
+ };
308
+ writeAtomic(this.path, file);
309
+ }
310
+ }
311
+ /** Atomic write: tmp → rename. Same pattern as skills/usage.ts and the
312
+ * legacy todos store. */
313
+ function writeAtomic(path, contents) {
314
+ mkdirSync(dirname(path), { recursive: true });
315
+ const tmp = `${path}.tmp-${process.pid}-${Date.now()}`;
316
+ writeFileSync(tmp, JSON.stringify(contents, null, 2));
317
+ renameSync(tmp, path);
318
+ }
319
+ function isWellFormedEntry(v) {
320
+ if (!v || typeof v !== "object")
321
+ return false;
322
+ const o = v;
323
+ if (typeof o.id !== "string" || typeof o.subject !== "string")
324
+ return false;
325
+ if (!isStatus(o.status))
326
+ return false;
327
+ if (!Array.isArray(o.blockedBy) || !o.blockedBy.every((x) => typeof x === "string"))
328
+ return false;
329
+ if (!Array.isArray(o.blocks) || !o.blocks.every((x) => typeof x === "string"))
330
+ return false;
331
+ if (typeof o.createdAt !== "string" || typeof o.updatedAt !== "string")
332
+ return false;
333
+ if (o.description !== undefined && typeof o.description !== "string")
334
+ return false;
335
+ if (o.activeForm !== undefined && typeof o.activeForm !== "string")
336
+ return false;
337
+ if (o.owner !== undefined && typeof o.owner !== "string")
338
+ return false;
339
+ return true;
340
+ }
341
+ function isStatus(v) {
342
+ return v === "pending" || v === "in_progress" || v === "completed" || v === "deleted";
343
+ }
344
+ /** Resolve the absolute tasks-file path for a session. Mirrors
345
+ * `maestroSessionPath` but with `.tasks.json` instead of `.jsonl`. */
346
+ export function tasksPathFor(sessionId) {
347
+ return join(sessionsDir(), `${sessionId}.tasks.json`);
348
+ }
349
+ /**
350
+ * Module-level registry — same pattern as `file-state.ts` / the legacy
351
+ * todos store.
352
+ *
353
+ * Cleanup is wired into `deleteMaestroSession` and
354
+ * `cleanupStaleMaestroSessions` so the map can't outlive its sessions.
355
+ */
356
+ const stores = new Map();
357
+ export function getTaskStore(sessionId) {
358
+ let s = stores.get(sessionId);
359
+ if (!s) {
360
+ s = new TaskStore(tasksPathFor(sessionId));
361
+ stores.set(sessionId, s);
362
+ }
363
+ return s;
364
+ }
365
+ /** Drop a session's store + unlink its on-disk file (both new and legacy). */
366
+ export function dropTaskStore(sessionId) {
367
+ const s = stores.get(sessionId);
368
+ if (s) {
369
+ s.unlinkFile();
370
+ stores.delete(sessionId);
371
+ }
372
+ else {
373
+ // Best-effort cleanup of orphan files even when no store is hydrated —
374
+ // matches the old `dropTodoStore` behaviour so cleanupStaleMaestroSessions
375
+ // can clear .tasks.json / .todos.json siblings of a JSONL it's removing.
376
+ const newPath = tasksPathFor(sessionId);
377
+ const legacyPath = newPath.replace(/\.tasks\.json$/, ".todos.json");
378
+ for (const p of [newPath, legacyPath]) {
379
+ try {
380
+ unlinkSync(p);
381
+ }
382
+ catch (e) {
383
+ if (e?.code !== "ENOENT") {
384
+ logger.warn({ err: e, path: p }, "dropTaskStore: orphan unlink failed");
385
+ }
386
+ }
387
+ }
388
+ }
389
+ }
390
+ /** Test-only. Reset every store. */
391
+ export function __resetAllStores() {
392
+ stores.clear();
393
+ }
394
+ /** Test-only. Count of currently-tracked sessions. */
395
+ export function __storeCount() {
396
+ return stores.size;
397
+ }
398
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/state/tasks.ts"],"names":[],"mappings":"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"}
@@ -67,7 +67,7 @@ export interface RunSubAgentResult {
67
67
  * Cleanup contract (load-bearing):
68
68
  * - Clean drain or thrown error → `deleteMaestroSession(subSessionId)`
69
69
  * in the finally block. Frees the JSONL + file-state tracker + (any)
70
- * todo store for this sub-session.
70
+ * task store for this sub-session.
71
71
  * - Abort → leave JSONL on disk. The 30-day TTL sweep will eventually
72
72
  * clear it; meanwhile it's available for postmortem.
73
73
  */
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/sub-agent/runner.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAWpE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,YAAY,CAAC;IAC3B;mBACe;IACf,MAAM,EAAE,MAAM,CAAC;IACf;2DACuD;IACvD,eAAe,EAAE,MAAM,CAAC;IACxB;4DACwD;IACxD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB;yDACqD;IACrD,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B;+CAC2C;IAC3C,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAChC,0DAA0D;IAC1D,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC;4CACwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,KAAK,EAAE,UAAU,CAAC;IAClB;yEACqE;IACrE,YAAY,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,OAAO,EAAE,OAAO,CAAC;CAClB;AAyED;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+GtF;AAgBD;6CAC6C;AAC7C,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/sub-agent/runner.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAUpE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,YAAY,CAAC;IAC3B;mBACe;IACf,MAAM,EAAE,MAAM,CAAC;IACf;2DACuD;IACvD,eAAe,EAAE,MAAM,CAAC;IACxB;4DACwD;IACxD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB;yDACqD;IACrD,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B;+CAC2C;IAC3C,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAChC,0DAA0D;IAC1D,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC;4CACwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,KAAK,EAAE,UAAU,CAAC;IAClB;yEACqE;IACrE,YAAY,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,OAAO,EAAE,OAAO,CAAC;CAClB;AAwED;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+GtF;AAgBD;6CAC6C;AAC7C,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -16,7 +16,6 @@ import { createSkillViewTool } from "../tools/builtin/skill_view.js";
16
16
  import { webFetchTool } from "../tools/builtin/web_fetch.js";
17
17
  import { createWriteTool } from "../tools/builtin/write.js";
18
18
  import { getFileStateTracker } from "../tools/file-state.js";
19
- import { createSandboxFsHook } from "../tools/hooks/sandbox-fs.js";
20
19
  import { ToolRegistry } from "../tools/registry.js";
21
20
  import { logger } from "../platform/logger.js";
22
21
  /** Hard cap on the sub-agent's per-API-call max output tokens. Defaults
@@ -55,13 +54,12 @@ function loadOverlay(kind) {
55
54
  * `explore` — Read + WebFetch + skill_view only. NO bash, write, edit —
56
55
  * the role is read-only by construction.
57
56
  *
58
- * Both types share the same sandbox-fs hook. Neither registers `Agent`
59
- * (recursion cap) or `todo_write` (sub-agents don't plan iteratively).
57
+ * Neither registers `Agent` (recursion cap) or the Task* family
58
+ * (sub-agents don't plan iteratively).
60
59
  */
61
60
  function buildToolRegistry(kind, subSessionId, skills, abortSignal) {
62
61
  void abortSignal; // reserved for future bash abort wiring
63
62
  const tools = new ToolRegistry();
64
- tools.use(createSandboxFsHook());
65
63
  // Sub-agent's OWN file-state tracker — keyed off subSessionId, NOT the
66
64
  // parent's. Sharing would mean the parent's Read could let the sub-agent
67
65
  // skip Read-before-Edit (or vice-versa), defeating the invariant.
@@ -87,7 +85,7 @@ function buildToolRegistry(kind, subSessionId, skills, abortSignal) {
87
85
  * Cleanup contract (load-bearing):
88
86
  * - Clean drain or thrown error → `deleteMaestroSession(subSessionId)`
89
87
  * in the finally block. Frees the JSONL + file-state tracker + (any)
90
- * todo store for this sub-session.
88
+ * task store for this sub-session.
91
89
  * - Abort → leave JSONL on disk. The 30-day TTL sweep will eventually
92
90
  * clear it; meanwhile it's available for postmortem.
93
91
  */
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/sub-agent/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/sub-agent/runner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/edit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAqCpD,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED,wBAAgB,cAAc,CAAC,IAAI,GAAE,eAAoB,GAAG,WAAW,CA4JtE;AAED,+EAA+E;AAC/E,eAAO,MAAM,QAAQ,EAAE,WAA8B,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAUzE;AAqCD,eAAO,MAAM,gBAAgB,QAAiB,CAAC"}
1
+ {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/edit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAgCpD,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED,wBAAgB,cAAc,CAAC,IAAI,GAAE,eAAoB,GAAG,WAAW,CA4JtE;AAED,+EAA+E;AAC/E,eAAO,MAAM,QAAQ,EAAE,WAA8B,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAUzE;AAqCD,eAAO,MAAM,gBAAgB,QAAiB,CAAC"}
@@ -1,9 +1,5 @@
1
1
  import { existsSync, readFileSync, statSync, writeFileSync } from "node:fs";
2
2
  import { isAbsolute } from "node:path";
3
- /**
4
- * NOTE: filesystem sandboxing now lives in the `sandbox-fs` PreToolUse hook.
5
- * Standalone callers (tests, scripts) without the registry get NO sandbox.
6
- */
7
3
  /**
8
4
  * Edit builtin — claude SDK `Edit` tool parity for maestro.
9
5
  *