youmd 0.9.7 → 0.10.1

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 (149) hide show
  1. package/dist/commands/brain.d.ts +25 -0
  2. package/dist/commands/brain.d.ts.map +1 -0
  3. package/dist/commands/brain.js +683 -0
  4. package/dist/commands/brain.js.map +1 -0
  5. package/dist/commands/doctor.d.ts.map +1 -1
  6. package/dist/commands/doctor.js +4 -0
  7. package/dist/commands/doctor.js.map +1 -1
  8. package/dist/commands/machine.d.ts +1 -0
  9. package/dist/commands/machine.d.ts.map +1 -1
  10. package/dist/commands/machine.js +52 -4
  11. package/dist/commands/machine.js.map +1 -1
  12. package/dist/commands/mine.d.ts +46 -0
  13. package/dist/commands/mine.d.ts.map +1 -0
  14. package/dist/commands/mine.js +317 -0
  15. package/dist/commands/mine.js.map +1 -0
  16. package/dist/commands/orchestrate.d.ts.map +1 -1
  17. package/dist/commands/orchestrate.js +37 -3
  18. package/dist/commands/orchestrate.js.map +1 -1
  19. package/dist/commands/project.d.ts.map +1 -1
  20. package/dist/commands/project.js +24 -0
  21. package/dist/commands/project.js.map +1 -1
  22. package/dist/commands/prompts.d.ts.map +1 -1
  23. package/dist/commands/prompts.js +5 -2
  24. package/dist/commands/prompts.js.map +1 -1
  25. package/dist/commands/remote.d.ts.map +1 -1
  26. package/dist/commands/remote.js +42 -13
  27. package/dist/commands/remote.js.map +1 -1
  28. package/dist/commands/skill.d.ts.map +1 -1
  29. package/dist/commands/skill.js +2 -0
  30. package/dist/commands/skill.js.map +1 -1
  31. package/dist/commands/tasks.d.ts +54 -0
  32. package/dist/commands/tasks.d.ts.map +1 -0
  33. package/dist/commands/tasks.js +513 -0
  34. package/dist/commands/tasks.js.map +1 -0
  35. package/dist/generated/capability-registry.d.ts +1096 -0
  36. package/dist/generated/capability-registry.d.ts.map +1 -0
  37. package/dist/generated/capability-registry.js +1204 -0
  38. package/dist/generated/capability-registry.js.map +1 -0
  39. package/dist/index.js +68 -0
  40. package/dist/index.js.map +1 -1
  41. package/dist/lib/api.d.ts +76 -0
  42. package/dist/lib/api.d.ts.map +1 -1
  43. package/dist/lib/api.js +18 -0
  44. package/dist/lib/api.js.map +1 -1
  45. package/dist/lib/brain/adapters.d.ts +34 -0
  46. package/dist/lib/brain/adapters.d.ts.map +1 -0
  47. package/dist/lib/brain/adapters.js +362 -0
  48. package/dist/lib/brain/adapters.js.map +1 -0
  49. package/dist/lib/brain/apply-control-plane.d.ts +17 -0
  50. package/dist/lib/brain/apply-control-plane.d.ts.map +1 -0
  51. package/dist/lib/brain/apply-control-plane.js +117 -0
  52. package/dist/lib/brain/apply-control-plane.js.map +1 -0
  53. package/dist/lib/brain/cache.d.ts +25 -0
  54. package/dist/lib/brain/cache.d.ts.map +1 -0
  55. package/dist/lib/brain/cache.js +99 -0
  56. package/dist/lib/brain/cache.js.map +1 -0
  57. package/dist/lib/brain/canonical.d.ts +5 -0
  58. package/dist/lib/brain/canonical.d.ts.map +1 -0
  59. package/dist/lib/brain/canonical.js +38 -0
  60. package/dist/lib/brain/canonical.js.map +1 -0
  61. package/dist/lib/brain/discovery.d.ts +9 -0
  62. package/dist/lib/brain/discovery.d.ts.map +1 -0
  63. package/dist/lib/brain/discovery.js +560 -0
  64. package/dist/lib/brain/discovery.js.map +1 -0
  65. package/dist/lib/brain/index.d.ts +55 -0
  66. package/dist/lib/brain/index.d.ts.map +1 -0
  67. package/dist/lib/brain/index.js +384 -0
  68. package/dist/lib/brain/index.js.map +1 -0
  69. package/dist/lib/brain/proposal.d.ts +179 -0
  70. package/dist/lib/brain/proposal.d.ts.map +1 -0
  71. package/dist/lib/brain/proposal.js +694 -0
  72. package/dist/lib/brain/proposal.js.map +1 -0
  73. package/dist/lib/brain/render.d.ts +33 -0
  74. package/dist/lib/brain/render.d.ts.map +1 -0
  75. package/dist/lib/brain/render.js +515 -0
  76. package/dist/lib/brain/render.js.map +1 -0
  77. package/dist/lib/brain/safe-file.d.ts +110 -0
  78. package/dist/lib/brain/safe-file.d.ts.map +1 -0
  79. package/dist/lib/brain/safe-file.js +564 -0
  80. package/dist/lib/brain/safe-file.js.map +1 -0
  81. package/dist/lib/brain/safety.d.ts +8 -0
  82. package/dist/lib/brain/safety.d.ts.map +1 -0
  83. package/dist/lib/brain/safety.js +42 -0
  84. package/dist/lib/brain/safety.js.map +1 -0
  85. package/dist/lib/brain/staged-apply.d.ts +57 -0
  86. package/dist/lib/brain/staged-apply.d.ts.map +1 -0
  87. package/dist/lib/brain/staged-apply.js +336 -0
  88. package/dist/lib/brain/staged-apply.js.map +1 -0
  89. package/dist/lib/brain/store.d.ts +26 -0
  90. package/dist/lib/brain/store.d.ts.map +1 -0
  91. package/dist/lib/brain/store.js +504 -0
  92. package/dist/lib/brain/store.js.map +1 -0
  93. package/dist/lib/brain/types.d.ts +160 -0
  94. package/dist/lib/brain/types.d.ts.map +1 -0
  95. package/dist/lib/brain/types.js +24 -0
  96. package/dist/lib/brain/types.js.map +1 -0
  97. package/dist/lib/config.d.ts +22 -1
  98. package/dist/lib/config.d.ts.map +1 -1
  99. package/dist/lib/config.js +70 -14
  100. package/dist/lib/config.js.map +1 -1
  101. package/dist/lib/daemon.d.ts +27 -0
  102. package/dist/lib/daemon.d.ts.map +1 -1
  103. package/dist/lib/daemon.js +57 -0
  104. package/dist/lib/daemon.js.map +1 -1
  105. package/dist/lib/machine-identity.d.ts +16 -0
  106. package/dist/lib/machine-identity.d.ts.map +1 -0
  107. package/dist/lib/machine-identity.js +101 -0
  108. package/dist/lib/machine-identity.js.map +1 -0
  109. package/dist/lib/orchestrator/approvals.d.ts +21 -0
  110. package/dist/lib/orchestrator/approvals.d.ts.map +1 -0
  111. package/dist/lib/orchestrator/approvals.js +65 -0
  112. package/dist/lib/orchestrator/approvals.js.map +1 -0
  113. package/dist/lib/orchestrator/loop.d.ts +1 -0
  114. package/dist/lib/orchestrator/loop.d.ts.map +1 -1
  115. package/dist/lib/orchestrator/loop.js +16 -0
  116. package/dist/lib/orchestrator/loop.js.map +1 -1
  117. package/dist/lib/orchestrator/supervisor.d.ts +41 -0
  118. package/dist/lib/orchestrator/supervisor.d.ts.map +1 -1
  119. package/dist/lib/orchestrator/supervisor.js +49 -0
  120. package/dist/lib/orchestrator/supervisor.js.map +1 -1
  121. package/dist/lib/orchestrator/tools.d.ts +11 -0
  122. package/dist/lib/orchestrator/tools.d.ts.map +1 -1
  123. package/dist/lib/orchestrator/tools.js +143 -0
  124. package/dist/lib/orchestrator/tools.js.map +1 -1
  125. package/dist/lib/project-strategy.d.ts +38 -0
  126. package/dist/lib/project-strategy.d.ts.map +1 -1
  127. package/dist/lib/project-strategy.js +91 -0
  128. package/dist/lib/project-strategy.js.map +1 -1
  129. package/dist/lib/projectContext.d.ts +6 -4
  130. package/dist/lib/projectContext.d.ts.map +1 -1
  131. package/dist/lib/projectContext.js +19 -17
  132. package/dist/lib/projectContext.js.map +1 -1
  133. package/dist/lib/redact.d.ts +15 -0
  134. package/dist/lib/redact.d.ts.map +1 -0
  135. package/dist/lib/redact.js +62 -0
  136. package/dist/lib/redact.js.map +1 -0
  137. package/dist/lib/tasksFile.d.ts +74 -0
  138. package/dist/lib/tasksFile.d.ts.map +1 -0
  139. package/dist/lib/tasksFile.js +502 -0
  140. package/dist/lib/tasksFile.js.map +1 -0
  141. package/dist/mcp/registry.d.ts +8 -2
  142. package/dist/mcp/registry.d.ts.map +1 -1
  143. package/dist/mcp/registry.js +189 -2
  144. package/dist/mcp/registry.js.map +1 -1
  145. package/dist/mcp/server.d.ts +1 -0
  146. package/dist/mcp/server.d.ts.map +1 -1
  147. package/dist/mcp/server.js +3 -2
  148. package/dist/mcp/server.js.map +1 -1
  149. package/package.json +1 -1
@@ -0,0 +1,513 @@
1
+ "use strict";
2
+ /**
3
+ * youmd tasks — one consistent task surface across every project.
4
+ *
5
+ * Local truth lives in each project's project-context/tasks.json (+ a
6
+ * regenerated human view in tasks.md — see lib/tasksFile.ts). This command
7
+ * reads/writes those files first, then syncs to the platform's
8
+ * portfolioTasks so the web board, MCP graph, and the You Agent all see the
9
+ * same list. Legacy freeform tasks.md checklists remain a read-only migration
10
+ * preview until an explicit, task_write-granted task mutation persists them.
11
+ *
12
+ * Subcommands:
13
+ * youmd tasks — open tasks for the current project
14
+ * youmd tasks all — open tasks across every project on this machine
15
+ * youmd tasks add <title> — add a task (--priority, --tags, --verify, --agent, --project)
16
+ * youmd tasks start <id|title> — mark in_progress
17
+ * youmd tasks done <id|title> — mark done
18
+ * youmd tasks assign <id|title> — flip owner (--agent | --human, --label <name>)
19
+ * youmd tasks triage — batch status/priority (--ids a,b,c --status s --priority p)
20
+ * youmd tasks sync — idempotently converge local tasks to the platform
21
+ * ... all support --json for agent consumption
22
+ */
23
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ var desc = Object.getOwnPropertyDescriptor(m, k);
26
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
27
+ desc = { enumerable: true, get: function() { return m[k]; } };
28
+ }
29
+ Object.defineProperty(o, k2, desc);
30
+ }) : (function(o, m, k, k2) {
31
+ if (k2 === undefined) k2 = k;
32
+ o[k2] = m[k];
33
+ }));
34
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
35
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
36
+ }) : function(o, v) {
37
+ o["default"] = v;
38
+ });
39
+ var __importStar = (this && this.__importStar) || (function () {
40
+ var ownKeys = function(o) {
41
+ ownKeys = Object.getOwnPropertyNames || function (o) {
42
+ var ar = [];
43
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
44
+ return ar;
45
+ };
46
+ return ownKeys(o);
47
+ };
48
+ return function (mod) {
49
+ if (mod && mod.__esModule) return mod;
50
+ var result = {};
51
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
52
+ __setModuleDefault(result, mod);
53
+ return result;
54
+ };
55
+ })();
56
+ var __importDefault = (this && this.__importDefault) || function (mod) {
57
+ return (mod && mod.__esModule) ? mod : { "default": mod };
58
+ };
59
+ Object.defineProperty(exports, "__esModule", { value: true });
60
+ exports.discoverContextDirs = discoverContextDirs;
61
+ exports.applyAssign = applyAssign;
62
+ exports.applyTriage = applyTriage;
63
+ exports.tasksCommand = tasksCommand;
64
+ const fs = __importStar(require("fs"));
65
+ const path = __importStar(require("path"));
66
+ const chalk_1 = __importDefault(require("chalk"));
67
+ const projectContext_1 = require("../lib/projectContext");
68
+ const tasksFile_1 = require("../lib/tasksFile");
69
+ const api_1 = require("../lib/api");
70
+ const render_1 = require("../lib/render");
71
+ const ACCENT = chalk_1.default.hex("#C46A3A");
72
+ const DIM = chalk_1.default.dim;
73
+ const GREEN = chalk_1.default.hex("#4CAF50");
74
+ const SCAN_EXCLUDES = new Set([
75
+ ".git", "node_modules", ".next", "dist", "build", "coverage", ".turbo",
76
+ ".vercel", ".cache", ".venv", "venv", "vendor", "target", "tmp", "__pycache__",
77
+ ]);
78
+ function defaultScanRoots() {
79
+ const home = process.env.HOME || process.env.USERPROFILE || "";
80
+ const roots = [process.cwd()];
81
+ for (const rel of [["Desktop", "CODE_YOU"], ["Desktop", "CODE_2025"], ["Desktop", "CODE_2026"], ["Documents"]]) {
82
+ roots.push(path.join(home, ...rel));
83
+ }
84
+ return roots;
85
+ }
86
+ /** Find every project-context/ directory under the given roots. */
87
+ function discoverContextDirs(roots, limit = 300) {
88
+ const found = [];
89
+ const seen = new Set();
90
+ const queue = [];
91
+ for (const root of roots) {
92
+ const resolved = path.resolve(root.replace(/^~(?=$|\/)/, process.env.HOME || ""));
93
+ if (fs.existsSync(resolved))
94
+ queue.push(resolved);
95
+ }
96
+ while (queue.length && found.length < limit) {
97
+ const dir = queue.shift();
98
+ let real = dir;
99
+ try {
100
+ real = fs.realpathSync(dir);
101
+ }
102
+ catch {
103
+ continue;
104
+ }
105
+ if (seen.has(real))
106
+ continue;
107
+ seen.add(real);
108
+ const contextDir = path.join(dir, "project-context");
109
+ if (fs.existsSync(contextDir) && fs.statSync(contextDir).isDirectory()) {
110
+ found.push(contextDir);
111
+ }
112
+ let children;
113
+ try {
114
+ children = fs.readdirSync(dir, { withFileTypes: true });
115
+ }
116
+ catch {
117
+ continue;
118
+ }
119
+ for (const child of children) {
120
+ if (SCAN_EXCLUDES.has(child.name) || child.name === "project-context")
121
+ continue;
122
+ if (child.isDirectory() && !child.isSymbolicLink())
123
+ queue.push(path.join(dir, child.name));
124
+ }
125
+ }
126
+ return found.sort();
127
+ }
128
+ function resolveCurrentContext() {
129
+ const repoRoot = (0, projectContext_1.findRepoContextRoot)() || process.cwd();
130
+ return {
131
+ contextDir: path.join(repoRoot, "project-context"),
132
+ project: (0, projectContext_1.deriveProjectName)(repoRoot),
133
+ };
134
+ }
135
+ function priorityMark(p) {
136
+ if (p === "urgent")
137
+ return ACCENT("!!");
138
+ if (p === "high")
139
+ return ACCENT("! ");
140
+ if (p === "low")
141
+ return DIM("· ");
142
+ return " ";
143
+ }
144
+ function printTask(t, project) {
145
+ const status = t.status === "in_progress" ? GREEN("▸") : DIM("-");
146
+ const scope = project ? DIM(`[${project}] `) : "";
147
+ console.log(` ${status} ${priorityMark(t.priority)}${scope}${t.title} ${DIM(`(${t.id})`)}`);
148
+ if (t.verify)
149
+ console.log(` ${DIM(`verify: ${t.verify}`)}`);
150
+ }
151
+ function printDocSummary(doc, migrated, reconciled) {
152
+ console.log("");
153
+ console.log(" " + chalk_1.default.bold(doc.project) + DIM(" -- tasks"));
154
+ if (migrated)
155
+ console.log(` ${DIM("legacy tasks.md migration preview (not persisted)")}`);
156
+ if (reconciled > 0)
157
+ console.log(` ${DIM(`${reconciled} explicitly reconciled legacy checkbox edit(s)`)}`);
158
+ console.log("");
159
+ const open = (0, tasksFile_1.openTasks)(doc);
160
+ if (!open.length) {
161
+ console.log(` ${DIM("no open tasks. suspicious. add one:")} ${ACCENT("youmd tasks add <title>")}`);
162
+ }
163
+ else {
164
+ for (const t of open)
165
+ printTask(t);
166
+ }
167
+ console.log("");
168
+ console.log(` ${DIM(`${open.length} open / ${doc.tasks.length} total`)}`);
169
+ console.log("");
170
+ }
171
+ // ── pure logic (exported for tests) ─────────────────────────────────
172
+ /** Flip a task's owner. A provided label sticks; otherwise the old label is cleared so a
173
+ * reassignment never silently keeps the previous owner's name. */
174
+ function applyAssign(task, owner, label) {
175
+ task.owner = owner;
176
+ task.ownerLabel = label?.trim() || undefined;
177
+ task.updatedAt = new Date().toISOString();
178
+ return task;
179
+ }
180
+ /** Batch-apply status/priority to the tasks matching each id (or title) — interactive-free. */
181
+ function applyTriage(doc, ids, patch) {
182
+ const updated = [];
183
+ const notFound = [];
184
+ const seen = new Set();
185
+ for (const id of ids) {
186
+ const task = (0, tasksFile_1.findTask)(doc, id);
187
+ if (!task) {
188
+ notFound.push(id);
189
+ continue;
190
+ }
191
+ if (seen.has(task.id))
192
+ continue; // two needles hit the same task — apply once
193
+ seen.add(task.id);
194
+ if (patch.status) {
195
+ task.status = patch.status;
196
+ if (patch.status === "done")
197
+ task.completedAt = new Date().toISOString();
198
+ else
199
+ task.completedAt = undefined;
200
+ }
201
+ if (patch.priority)
202
+ task.priority = patch.priority;
203
+ task.updatedAt = new Date().toISOString();
204
+ updated.push(task);
205
+ }
206
+ return { updated, notFound };
207
+ }
208
+ async function syncDoc(doc, quiet = false) {
209
+ let pushed = 0;
210
+ let failed = 0;
211
+ const slug = (0, projectContext_1.projectSlug)(doc.project);
212
+ for (const task of doc.tasks) {
213
+ try {
214
+ await (0, api_1.savePortfolioTask)({
215
+ projectSlug: slug,
216
+ title: task.title,
217
+ description: task.description,
218
+ ownerType: task.owner,
219
+ ownerLabel: task.ownerLabel,
220
+ status: task.status,
221
+ priority: task.priority,
222
+ tags: task.tags,
223
+ sourceType: "project-context",
224
+ sourceId: `project:${slug}:${task.id}`,
225
+ syncRepo: false,
226
+ });
227
+ pushed += 1;
228
+ }
229
+ catch {
230
+ failed += 1;
231
+ }
232
+ }
233
+ if (!quiet && failed > 0) {
234
+ console.log(` ${ACCENT("!")} ${failed} task(s) failed to sync ${DIM("(offline or not logged in — local files are still the truth)")}`);
235
+ }
236
+ return { pushed, failed };
237
+ }
238
+ async function tasksCommand(subcommand, args, options = {}) {
239
+ const json = !!options.json;
240
+ // ── autonomous cross-project sync (machine sync-now runs this) ─────
241
+ if (subcommand === "sync-all") {
242
+ const roots = options.roots ? options.roots.split(",") : defaultScanRoots();
243
+ const spinner = json ? null : new render_1.BrailleSpinner("syncing every project's tasks...");
244
+ spinner?.start();
245
+ const dirs = discoverContextDirs(roots);
246
+ let projects = 0;
247
+ let pushed = 0;
248
+ let failed = 0;
249
+ for (const contextDir of dirs) {
250
+ const repoRoot = path.dirname(contextDir);
251
+ const project = (0, projectContext_1.deriveProjectName)(repoRoot);
252
+ const { doc, migrated } = (0, tasksFile_1.readTasksDoc)(contextDir, project);
253
+ if (!doc.tasks.length)
254
+ continue;
255
+ projects += 1;
256
+ // A legacy preview has no durable local IDs yet. Syncing it would mint a
257
+ // different source identity on every scan, so leave it read-only until
258
+ // an explicit task mutation persists canonical tasks.json.
259
+ if (migrated) {
260
+ failed += doc.tasks.length;
261
+ continue;
262
+ }
263
+ const res = await syncDoc(doc, true);
264
+ pushed += res.pushed;
265
+ failed += res.failed;
266
+ // Remote identifiers never enter canonical tasks.json. Legacy imports
267
+ // remain review-only until an explicit task mutation persists them.
268
+ }
269
+ if (failed > 0) {
270
+ spinner?.fail(`${pushed} synced, ${failed} failed across ${projects} projects`);
271
+ }
272
+ else {
273
+ spinner?.stop(`${pushed} tasks across ${projects} projects`);
274
+ }
275
+ if (json)
276
+ console.log(JSON.stringify({ ok: failed === 0, projects, pushed, failed }));
277
+ if (failed > 0)
278
+ process.exitCode = 1;
279
+ return;
280
+ }
281
+ // ── cross-project view ────────────────────────────────────────────
282
+ if (subcommand === "all") {
283
+ const roots = options.roots ? options.roots.split(",") : defaultScanRoots();
284
+ const spinner = json ? null : new render_1.BrailleSpinner("walking every project you own...");
285
+ spinner?.start();
286
+ const dirs = discoverContextDirs(roots);
287
+ const all = [];
288
+ for (const contextDir of dirs) {
289
+ const repoRoot = path.dirname(contextDir);
290
+ const project = (0, projectContext_1.deriveProjectName)(repoRoot);
291
+ const { doc } = (0, tasksFile_1.readTasksDoc)(contextDir, project);
292
+ if (!doc.tasks.length)
293
+ continue;
294
+ all.push({ project, contextDir, open: (0, tasksFile_1.openTasks)(doc), total: doc.tasks.length });
295
+ }
296
+ spinner?.stop(`${all.length} projects with tasks`);
297
+ if (json) {
298
+ console.log(JSON.stringify({ ok: true, projects: all }));
299
+ return;
300
+ }
301
+ console.log("");
302
+ for (const entry of all) {
303
+ if (!entry.open.length)
304
+ continue;
305
+ console.log(" " + chalk_1.default.bold(entry.project) + DIM(` — ${entry.open.length} open`));
306
+ for (const t of entry.open.slice(0, 8))
307
+ printTask(t);
308
+ console.log("");
309
+ }
310
+ const totalOpen = all.reduce((n, e) => n + e.open.length, 0);
311
+ console.log(` ${DIM(`${totalOpen} open tasks across ${all.length} projects`)}`);
312
+ console.log("");
313
+ return;
314
+ }
315
+ const { contextDir, project } = resolveCurrentContext();
316
+ const targetProject = options.project || project;
317
+ const { doc, migrated, reconciled } = (0, tasksFile_1.readTasksDoc)(contextDir, targetProject);
318
+ // ── add ───────────────────────────────────────────────────────────
319
+ if (subcommand === "add") {
320
+ const title = args.join(" ").trim();
321
+ if (!title) {
322
+ console.log(` ${ACCENT("ERR")} give the task a title: ${ACCENT("youmd tasks add <title>")}`);
323
+ process.exitCode = 1;
324
+ return;
325
+ }
326
+ const task = (0, tasksFile_1.addTask)(doc, {
327
+ title,
328
+ description: options.description,
329
+ priority: options.priority || "normal",
330
+ owner: options.agent ? "agent" : "human",
331
+ tags: options.tags ? options.tags.split(",").map((t) => t.trim()).filter(Boolean) : [],
332
+ verify: options.verify,
333
+ source: "manual",
334
+ });
335
+ (0, tasksFile_1.writeTasksDoc)(contextDir, doc);
336
+ if (options.sync !== false)
337
+ await syncDoc(doc, json);
338
+ if (json) {
339
+ console.log(JSON.stringify({ ok: true, task }));
340
+ }
341
+ else {
342
+ console.log("");
343
+ console.log(` ${GREEN("+")} ${task.title} ${DIM(`(${task.id})`)}`);
344
+ console.log("");
345
+ }
346
+ return;
347
+ }
348
+ // ── start / done / cancel ─────────────────────────────────────────
349
+ if (subcommand === "start" || subcommand === "done" || subcommand === "cancel") {
350
+ const needle = args.join(" ").trim();
351
+ const task = (0, tasksFile_1.findTask)(doc, needle);
352
+ if (!task) {
353
+ if (json) {
354
+ console.log(JSON.stringify({ ok: false, error: "not_found", query: needle }));
355
+ }
356
+ else {
357
+ console.log(` ${ACCENT("ERR")} no task matching "${needle}"`);
358
+ }
359
+ process.exitCode = 1;
360
+ return;
361
+ }
362
+ const status = subcommand === "start" ? "in_progress" : subcommand === "done" ? "done" : "cancelled";
363
+ task.status = status;
364
+ task.updatedAt = new Date().toISOString();
365
+ if (status === "done")
366
+ task.completedAt = task.updatedAt;
367
+ else
368
+ task.completedAt = undefined;
369
+ (0, tasksFile_1.writeTasksDoc)(contextDir, doc);
370
+ if (options.sync !== false)
371
+ await syncDoc(doc, json);
372
+ if (json) {
373
+ console.log(JSON.stringify({ ok: true, task }));
374
+ }
375
+ else {
376
+ const mark = status === "done" ? GREEN("✓") : status === "in_progress" ? GREEN("▸") : DIM("✗");
377
+ console.log("");
378
+ console.log(` ${mark} ${task.title} ${DIM(`→ ${status}`)}`);
379
+ console.log("");
380
+ }
381
+ return;
382
+ }
383
+ // ── assign (flip owner: human ↔ agent) ────────────────────────────
384
+ if (subcommand === "assign") {
385
+ const needle = args.join(" ").trim();
386
+ const wantAgent = !!options.agent;
387
+ const wantHuman = !!options.human;
388
+ if (!needle || wantAgent === wantHuman) {
389
+ if (json) {
390
+ console.log(JSON.stringify({ ok: false, error: "usage", usage: "youmd tasks assign <id|title> --agent|--human [--label <name>]" }));
391
+ }
392
+ else {
393
+ console.log(` ${ACCENT("ERR")} usage: ${ACCENT("youmd tasks assign <id|title> --agent|--human [--label <name>]")}`);
394
+ }
395
+ process.exitCode = 1;
396
+ return;
397
+ }
398
+ const task = (0, tasksFile_1.findTask)(doc, needle);
399
+ if (!task) {
400
+ if (json) {
401
+ console.log(JSON.stringify({ ok: false, error: "not_found", query: needle }));
402
+ }
403
+ else {
404
+ console.log(` ${ACCENT("ERR")} no task matching "${needle}"`);
405
+ }
406
+ process.exitCode = 1;
407
+ return;
408
+ }
409
+ applyAssign(task, wantAgent ? "agent" : "human", options.label);
410
+ (0, tasksFile_1.writeTasksDoc)(contextDir, doc);
411
+ if (options.sync !== false)
412
+ await syncDoc(doc, json);
413
+ if (json) {
414
+ console.log(JSON.stringify({ ok: true, task }));
415
+ }
416
+ else {
417
+ const who = task.owner === "agent" ? ACCENT(task.ownerLabel ? `agent:${task.ownerLabel}` : "agent") : GREEN(task.ownerLabel || "you");
418
+ console.log("");
419
+ console.log(` ${GREEN("→")} ${task.title} ${DIM(`(${task.id})`)} ${DIM("now owned by")} ${who}`);
420
+ console.log("");
421
+ }
422
+ return;
423
+ }
424
+ // ── triage (interactive-free batch status/priority) ───────────────
425
+ if (subcommand === "triage") {
426
+ const ids = (options.ids ? options.ids.split(",") : args).map((s) => s.trim()).filter(Boolean);
427
+ const status = options.status;
428
+ const priority = options.priority;
429
+ const badStatus = status && !tasksFile_1.TASK_STATUSES.includes(status);
430
+ const badPriority = priority && !tasksFile_1.TASK_PRIORITIES.includes(priority);
431
+ if (!ids.length || (!status && !priority) || badStatus || badPriority) {
432
+ const reason = badStatus
433
+ ? `status must be one of: ${tasksFile_1.TASK_STATUSES.join(" | ")}`
434
+ : badPriority
435
+ ? `priority must be one of: ${tasksFile_1.TASK_PRIORITIES.join(" | ")}`
436
+ : "usage: youmd tasks triage --ids a,b,c --status <s> --priority <p> (at least one of status/priority)";
437
+ if (json) {
438
+ console.log(JSON.stringify({ ok: false, error: "usage", detail: reason }));
439
+ }
440
+ else {
441
+ console.log(` ${ACCENT("ERR")} ${reason}`);
442
+ }
443
+ process.exitCode = 1;
444
+ return;
445
+ }
446
+ const result = applyTriage(doc, ids, { status, priority });
447
+ if (result.updated.length > 0) {
448
+ (0, tasksFile_1.writeTasksDoc)(contextDir, doc);
449
+ if (options.sync !== false) {
450
+ const spinner = json ? null : new render_1.BrailleSpinner("filing the triage decisions...");
451
+ spinner?.start();
452
+ const { failed } = await syncDoc(doc, true);
453
+ if (failed > 0)
454
+ spinner?.fail(`${result.updated.length} triaged, ${failed} failed to sync`);
455
+ else
456
+ spinner?.stop(`${result.updated.length} triaged`);
457
+ }
458
+ }
459
+ if (json) {
460
+ console.log(JSON.stringify({
461
+ ok: result.notFound.length === 0,
462
+ updated: result.updated,
463
+ notFound: result.notFound,
464
+ status: status ?? null,
465
+ priority: priority ?? null,
466
+ }));
467
+ }
468
+ else {
469
+ console.log("");
470
+ for (const t of result.updated)
471
+ printTask(t);
472
+ for (const miss of result.notFound)
473
+ console.log(` ${ACCENT("!")} no task matching "${miss}"`);
474
+ const patched = [status && `status=${status}`, priority && `priority=${priority}`].filter(Boolean).join(", ");
475
+ console.log("");
476
+ console.log(` ${DIM(`${result.updated.length} task(s) → ${patched}${result.notFound.length ? `, ${result.notFound.length} not found` : ""}`)}`);
477
+ console.log("");
478
+ }
479
+ if (result.updated.length === 0)
480
+ process.exitCode = 1;
481
+ return;
482
+ }
483
+ // ── sync ──────────────────────────────────────────────────────────
484
+ if (subcommand === "sync") {
485
+ if (migrated) {
486
+ if (json)
487
+ console.log(JSON.stringify({ ok: false, error: "legacy_migration_required" }));
488
+ else
489
+ console.log(` ${ACCENT("ERR")} legacy tasks.md must be adopted through a granted task mutation before sync`);
490
+ process.exitCode = 1;
491
+ return;
492
+ }
493
+ const spinner = json ? null : new render_1.BrailleSpinner("syncing tasks to your brain...");
494
+ spinner?.start();
495
+ const { pushed, failed } = await syncDoc(doc, true);
496
+ if (failed > 0) {
497
+ spinner?.fail(`${pushed} synced, ${failed} failed`);
498
+ }
499
+ else {
500
+ spinner?.stop(`${pushed} synced`);
501
+ }
502
+ if (json)
503
+ console.log(JSON.stringify({ ok: failed === 0, pushed, failed }));
504
+ return;
505
+ }
506
+ // ── default: list ─────────────────────────────────────────────────
507
+ if (json) {
508
+ console.log(JSON.stringify({ ok: true, project: doc.project, contextDir, migrated, reconciled, tasks: doc.tasks }));
509
+ return;
510
+ }
511
+ printDocSummary(doc, migrated, reconciled);
512
+ }
513
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"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"}