@embeddables/cli 0.12.1 → 0.13.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 (42) hide show
  1. package/dist/cli.js +125 -20
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/login.d.ts +6 -1
  4. package/dist/commands/login.d.ts.map +1 -1
  5. package/dist/commands/login.js +46 -1
  6. package/dist/commands/login.js.map +1 -1
  7. package/dist/commands/pull.d.ts.map +1 -1
  8. package/dist/commands/pull.js +1 -1
  9. package/dist/commands/pull.js.map +1 -1
  10. package/dist/commands/tasks-add-branch.d.ts +9 -0
  11. package/dist/commands/tasks-add-branch.d.ts.map +1 -0
  12. package/dist/commands/tasks-add-branch.js +26 -0
  13. package/dist/commands/tasks-add-branch.js.map +1 -0
  14. package/dist/commands/tasks-assign.d.ts +10 -0
  15. package/dist/commands/tasks-assign.d.ts.map +1 -0
  16. package/dist/commands/tasks-assign.js +56 -0
  17. package/dist/commands/tasks-assign.js.map +1 -0
  18. package/dist/commands/tasks-comment.d.ts +9 -0
  19. package/dist/commands/tasks-comment.d.ts.map +1 -0
  20. package/dist/commands/tasks-comment.js +33 -0
  21. package/dist/commands/tasks-comment.js.map +1 -0
  22. package/dist/commands/tasks-get.d.ts +8 -0
  23. package/dist/commands/tasks-get.d.ts.map +1 -0
  24. package/dist/commands/tasks-get.js +100 -0
  25. package/dist/commands/tasks-get.js.map +1 -0
  26. package/dist/commands/tasks-list.d.ts +8 -0
  27. package/dist/commands/tasks-list.d.ts.map +1 -0
  28. package/dist/commands/tasks-list.js +93 -0
  29. package/dist/commands/tasks-list.js.map +1 -0
  30. package/dist/commands/tasks-update-status.d.ts +9 -0
  31. package/dist/commands/tasks-update-status.d.ts.map +1 -0
  32. package/dist/commands/tasks-update-status.js +33 -0
  33. package/dist/commands/tasks-update-status.js.map +1 -0
  34. package/dist/prompts/index.d.ts +2 -0
  35. package/dist/prompts/index.d.ts.map +1 -1
  36. package/dist/prompts/index.js +1 -0
  37. package/dist/prompts/index.js.map +1 -1
  38. package/dist/prompts/tasks.d.ts +115 -0
  39. package/dist/prompts/tasks.d.ts.map +1 -0
  40. package/dist/prompts/tasks.js +274 -0
  41. package/dist/prompts/tasks.js.map +1 -0
  42. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks-comment.d.ts","sourceRoot":"","sources":["../../src/commands/tasks-comment.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B9E"}
@@ -0,0 +1,33 @@
1
+ import { isLoggedIn } from '../auth/index.js';
2
+ import { createTaskComment } from '../prompts/index.js';
3
+ import { createLogger, exit } from '../logger.js';
4
+ import * as stdout from '../stdout.js';
5
+ /**
6
+ * Add a comment to a task.
7
+ */
8
+ export async function runTasksComment(opts) {
9
+ const logger = createLogger('runTasksComment');
10
+ if (!isLoggedIn()) {
11
+ stdout.warn('Not logged in.');
12
+ stdout.dim('Run "embeddables login" first.');
13
+ await exit(1);
14
+ return;
15
+ }
16
+ const content = opts.message?.trim();
17
+ if (!content) {
18
+ stdout.error('Comment content is required.');
19
+ logger.error('empty comment');
20
+ await exit(1);
21
+ return;
22
+ }
23
+ const ok = await createTaskComment(opts.id, content);
24
+ if (!ok) {
25
+ stdout.error('Failed to add comment.');
26
+ logger.error('add comment failed', { taskId: opts.id });
27
+ await exit(1);
28
+ return;
29
+ }
30
+ stdout.success('Comment added.');
31
+ logger.info('tasks comment complete', { taskId: opts.id });
32
+ }
33
+ //# sourceMappingURL=tasks-comment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks-comment.js","sourceRoot":"","sources":["../../src/commands/tasks-comment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAOtC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAyB;IAC7D,MAAM,MAAM,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAA;IAE9C,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC7B,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;QAC5C,MAAM,IAAI,CAAC,CAAC,CAAC,CAAA;QACb,OAAM;IACR,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAA;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAA;QAC5C,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;QAC7B,MAAM,IAAI,CAAC,CAAC,CAAC,CAAA;QACb,OAAM;IACR,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IACpD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;QACtC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;QACvD,MAAM,IAAI,CAAC,CAAC,CAAC,CAAA;QACb,OAAM;IACR,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAChC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;AAC5D,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface TasksGetOptions {
2
+ id: string;
3
+ }
4
+ /**
5
+ * Fetch and display a single task by ID.
6
+ */
7
+ export declare function runTasksGet(opts: TasksGetOptions): Promise<void>;
8
+ //# sourceMappingURL=tasks-get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks-get.d.ts","sourceRoot":"","sources":["../../src/commands/tasks-get.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;CACX;AA4ED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBtE"}
@@ -0,0 +1,100 @@
1
+ import pc from 'picocolors';
2
+ import { isLoggedIn } from '../auth/index.js';
3
+ import { fetchTaskById } from '../prompts/index.js';
4
+ import { createLogger, exit } from '../logger.js';
5
+ import * as stdout from '../stdout.js';
6
+ /**
7
+ * Format a date string for display.
8
+ */
9
+ function formatDate(s) {
10
+ if (!s)
11
+ return '—';
12
+ try {
13
+ const d = new Date(s);
14
+ return isNaN(d.getTime()) ? s : d.toLocaleString();
15
+ }
16
+ catch {
17
+ return s;
18
+ }
19
+ }
20
+ /**
21
+ * Format user (creator/assignee/owner) for display.
22
+ */
23
+ function formatUser(u) {
24
+ if (!u || !u.id)
25
+ return '—';
26
+ const parts = [];
27
+ if (u.name)
28
+ parts.push(u.name);
29
+ if (u.email)
30
+ parts.push(`<${u.email}>`);
31
+ return parts.length > 0 ? parts.join(' ') : u.id;
32
+ }
33
+ /**
34
+ * Render a single task in human-readable sections.
35
+ */
36
+ function renderTaskDetail(t) {
37
+ stdout.header(t.title ?? t.id, t.id);
38
+ const meta = [
39
+ ['Status', t.status ?? '—'],
40
+ ['Priority', t.priority ?? '—'],
41
+ ['Type', t.type ?? '—'],
42
+ ['Assignee', formatUser(t.assignee)],
43
+ ['Owner', formatUser(t.owner)],
44
+ ['Creator', formatUser(t.creator)],
45
+ ];
46
+ stdout.kvBlock(meta);
47
+ stdout.gap();
48
+ const dates = [
49
+ ['Desired start', formatDate(t.desired_start_date)],
50
+ ['Desired due', formatDate(t.desired_due_date)],
51
+ ['Start', formatDate(t.start_date)],
52
+ ['Due', formatDate(t.due_date)],
53
+ ['Completed', formatDate(t.completed_at)],
54
+ ];
55
+ stdout.kvBlock(dates);
56
+ stdout.gap();
57
+ if (t.body) {
58
+ stdout.print(pc.bold(' Body:'));
59
+ stdout.print(pc.gray(' ' + t.body.replace(/\n/g, '\n ')));
60
+ stdout.gap();
61
+ }
62
+ if (t.blocked_by_task_id || t.block_reason) {
63
+ const block = [
64
+ ['Blocked by', t.blocked_by_task_id ?? '—'],
65
+ ['Block reason', t.block_reason ?? '—'],
66
+ ];
67
+ stdout.kvBlock(block);
68
+ stdout.gap();
69
+ }
70
+ if (t.level_of_effort || t.actual_level_of_effort) {
71
+ const effort = [];
72
+ if (t.level_of_effort)
73
+ effort.push(['Level of effort', t.level_of_effort]);
74
+ if (t.actual_level_of_effort)
75
+ effort.push(['Actual effort', t.actual_level_of_effort]);
76
+ stdout.kvBlock(effort);
77
+ }
78
+ }
79
+ /**
80
+ * Fetch and display a single task by ID.
81
+ */
82
+ export async function runTasksGet(opts) {
83
+ const logger = createLogger('runTasksGet');
84
+ if (!isLoggedIn()) {
85
+ stdout.warn('Not logged in.');
86
+ stdout.dim('Run "embeddables login" first.');
87
+ await exit(1);
88
+ return;
89
+ }
90
+ const task = await fetchTaskById(opts.id);
91
+ if (!task) {
92
+ stdout.error(`Task not found: ${opts.id}`);
93
+ logger.error('task not found', { taskId: opts.id });
94
+ await exit(1);
95
+ return;
96
+ }
97
+ renderTaskDetail(task);
98
+ logger.info('tasks get complete', { taskId: opts.id });
99
+ }
100
+ //# sourceMappingURL=tasks-get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks-get.js","sourceRoot":"","sources":["../../src/commands/tasks-get.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface TasksListOptions {
2
+ projectId?: string;
3
+ }
4
+ /**
5
+ * List project tasks. Resolves project from --project-id, embeddables.json, or prompt.
6
+ */
7
+ export declare function runTasksList(opts: TasksListOptions): Promise<void>;
8
+ //# sourceMappingURL=tasks-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks-list.d.ts","sourceRoot":"","sources":["../../src/commands/tasks-list.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA0DD;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCxE"}
@@ -0,0 +1,93 @@
1
+ import pc from 'picocolors';
2
+ import { isLoggedIn } from '../auth/index.js';
3
+ import { getProjectId, writeProjectConfig } from '../config/index.js';
4
+ import { fetchProjectTasks, promptForProject } from '../prompts/index.js';
5
+ import { createLogger, exit } from '../logger.js';
6
+ import * as stdout from '../stdout.js';
7
+ /**
8
+ * Format a date string for display (YYYY-MM-DD or short form).
9
+ */
10
+ function formatDate(s) {
11
+ if (!s)
12
+ return '—';
13
+ try {
14
+ const d = new Date(s);
15
+ return isNaN(d.getTime()) ? s : d.toISOString().slice(0, 10);
16
+ }
17
+ catch {
18
+ return s;
19
+ }
20
+ }
21
+ /**
22
+ * Format assignee for list row (name or email, or "—" if none).
23
+ */
24
+ function formatAssignee(t) {
25
+ const a = t.assignee;
26
+ if (!a || !a.id)
27
+ return '—';
28
+ return a.name || a.email || a.id;
29
+ }
30
+ /**
31
+ * Render a compact table-like list of tasks to the terminal.
32
+ */
33
+ function renderTaskList(tasks) {
34
+ if (tasks.length === 0) {
35
+ stdout.print(pc.gray('No tasks found.'));
36
+ return;
37
+ }
38
+ const idLen = Math.max(8, ...tasks.map((t) => t.id.length));
39
+ const statusLen = Math.max(6, ...tasks.map((t) => (t.status ?? '—').length));
40
+ const titleLen = Math.min(40, Math.max(20, ...tasks.map((t) => (t.title ?? t.id).length)));
41
+ const pad = (s, n) => s.padEnd(n).slice(0, n);
42
+ const header = [
43
+ pad('ID', idLen),
44
+ pad('Status', statusLen),
45
+ pad('Title', titleLen),
46
+ 'Assignee',
47
+ 'Due',
48
+ ].join(' ');
49
+ stdout.print(pc.bold(header));
50
+ stdout.print(pc.gray('─'.repeat(header.length)));
51
+ for (const t of tasks) {
52
+ const id = t.id.padEnd(idLen);
53
+ const status = pad(t.status ?? '—', statusLen);
54
+ const title = pad((t.title ?? t.id).slice(0, titleLen), titleLen);
55
+ const assignee = formatAssignee(t);
56
+ const due = formatDate(t.due_date ?? t.desired_due_date);
57
+ stdout.print(`${id} ${status} ${title} ${assignee} ${due}`);
58
+ }
59
+ }
60
+ /**
61
+ * List project tasks. Resolves project from --project-id, embeddables.json, or prompt.
62
+ */
63
+ export async function runTasksList(opts) {
64
+ const logger = createLogger('runTasksList');
65
+ if (!isLoggedIn()) {
66
+ stdout.warn('Not logged in.');
67
+ stdout.dim('Run "embeddables login" first.');
68
+ await exit(1);
69
+ return;
70
+ }
71
+ let projectId = opts.projectId ?? getProjectId();
72
+ if (!projectId) {
73
+ stdout.step('No project configured. Fetching projects…');
74
+ const selectedProject = await promptForProject();
75
+ if (!selectedProject) {
76
+ await exit(1);
77
+ return;
78
+ }
79
+ projectId = selectedProject.id;
80
+ writeProjectConfig({
81
+ org_id: selectedProject.org_id || undefined,
82
+ org_title: selectedProject.org_title || undefined,
83
+ project_id: projectId,
84
+ project_name: selectedProject.title || undefined,
85
+ });
86
+ stdout.success('Saved project to embeddables.json');
87
+ stdout.gap();
88
+ }
89
+ const tasks = await fetchProjectTasks(projectId);
90
+ renderTaskList(tasks);
91
+ logger.info('tasks list complete', { projectId, count: tasks.length });
92
+ }
93
+ //# sourceMappingURL=tasks-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks-list.js","sourceRoot":"","sources":["../../src/commands/tasks-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEzE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAMtC;;GAEG;AACH,SAAS,UAAU,CAAC,CAAgB;IAClC,IAAI,CAAC,CAAC;QAAE,OAAO,GAAG,CAAA;IAClB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAA;QACrB,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAA;IACV,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,CAAO;IAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAA;IACpB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO,GAAG,CAAA;IAC3B,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAA;AAClC,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,KAAa;IACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAA;QACxC,OAAM;IACR,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAE1F,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC7D,MAAM,MAAM,GAAG;QACb,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;QAChB,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC;QACxB,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC;QACtB,UAAU;QACV,KAAK;KACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACZ,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAC7B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAEhD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,EAAE,SAAS,CAAC,CAAA;QAC9C,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAA;QACjE,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;QAClC,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAA;QACxD,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,MAAM,KAAK,KAAK,KAAK,QAAQ,KAAK,GAAG,EAAE,CAAC,CAAA;IACjE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAsB;IACvD,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,CAAC,CAAA;IAE3C,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC7B,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;QAC5C,MAAM,IAAI,CAAC,CAAC,CAAC,CAAA;QACb,OAAM;IACR,CAAC;IAED,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,YAAY,EAAE,CAAA;IAChD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;QACxD,MAAM,eAAe,GAAG,MAAM,gBAAgB,EAAE,CAAA;QAChD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,CAAC,CAAC,CAAA;YACb,OAAM;QACR,CAAC;QACD,SAAS,GAAG,eAAe,CAAC,EAAE,CAAA;QAC9B,kBAAkB,CAAC;YACjB,MAAM,EAAE,eAAe,CAAC,MAAM,IAAI,SAAS;YAC3C,SAAS,EAAE,eAAe,CAAC,SAAS,IAAI,SAAS;YACjD,UAAU,EAAE,SAAS;YACrB,YAAY,EAAE,eAAe,CAAC,KAAK,IAAI,SAAS;SACjD,CAAC,CAAA;QACF,MAAM,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAA;QACnD,MAAM,CAAC,GAAG,EAAE,CAAA;IACd,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAA;IAChD,cAAc,CAAC,KAAK,CAAC,CAAA;IACrB,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;AACxE,CAAC"}
@@ -0,0 +1,9 @@
1
+ export interface TasksUpdateStatusOptions {
2
+ id: string;
3
+ status: string;
4
+ }
5
+ /**
6
+ * Update a task's status. Validates status against TaskStatus enum.
7
+ */
8
+ export declare function runTasksUpdateStatus(opts: TasksUpdateStatusOptions): Promise<void>;
9
+ //# sourceMappingURL=tasks-update-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks-update-status.d.ts","sourceRoot":"","sources":["../../src/commands/tasks-update-status.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BxF"}
@@ -0,0 +1,33 @@
1
+ import { isLoggedIn } from '../auth/index.js';
2
+ import { updateTaskStatus, TASK_STATUSES, } from '../prompts/index.js';
3
+ import { createLogger, exit } from '../logger.js';
4
+ import * as stdout from '../stdout.js';
5
+ /**
6
+ * Update a task's status. Validates status against TaskStatus enum.
7
+ */
8
+ export async function runTasksUpdateStatus(opts) {
9
+ const logger = createLogger('runTasksUpdateStatus');
10
+ if (!isLoggedIn()) {
11
+ stdout.warn('Not logged in.');
12
+ stdout.dim('Run "embeddables login" first.');
13
+ await exit(1);
14
+ return;
15
+ }
16
+ const status = opts.status.toLowerCase().replace(/-/g, '_');
17
+ if (!TASK_STATUSES.includes(status)) {
18
+ stdout.error(`Invalid status "${opts.status}". Valid values: ${TASK_STATUSES.join(', ')}`);
19
+ logger.error('invalid status', { status: opts.status });
20
+ await exit(1);
21
+ return;
22
+ }
23
+ const ok = await updateTaskStatus(opts.id, status);
24
+ if (!ok) {
25
+ stdout.error('Failed to update task status.');
26
+ logger.error('update task status failed', { taskId: opts.id });
27
+ await exit(1);
28
+ return;
29
+ }
30
+ stdout.success(`Task status updated to "${status}"`);
31
+ logger.info('tasks update-status complete', { taskId: opts.id, status });
32
+ }
33
+ //# sourceMappingURL=tasks-update-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks-update-status.js","sourceRoot":"","sources":["../../src/commands/tasks-update-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EACL,gBAAgB,EAChB,aAAa,GAEd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAOtC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAA8B;IACvE,MAAM,MAAM,GAAG,YAAY,CAAC,sBAAsB,CAAC,CAAA;IAEnD,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC7B,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;QAC5C,MAAM,IAAI,CAAC,CAAC,CAAC,CAAA;QACb,OAAM;IACR,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAe,CAAA;IACzE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,KAAK,CACV,mBAAmB,IAAI,CAAC,MAAM,oBAAoB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7E,CAAA;QACD,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QACvD,MAAM,IAAI,CAAC,CAAC,CAAC,CAAA;QACb,OAAM;IACR,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IAClD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAA;QAC7C,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;QAC9D,MAAM,IAAI,CAAC,CAAC,CAAC,CAAA;QACb,OAAM;IACR,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,2BAA2B,MAAM,GAAG,CAAC,CAAA;IACpD,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;AAC1E,CAAC"}
@@ -8,4 +8,6 @@ export { fetchRecentVersions, promptForVersion } from './versions.js';
8
8
  export type { VersionInfo } from './versions.js';
9
9
  export { fetchProjectExperiments, promptForExperiment, } from './experiments.js';
10
10
  export type { ExperimentInfo, PromptForExperimentOptions } from './experiments.js';
11
+ export { fetchProjectTasks, fetchTaskById, updateTaskStatus, updateTaskAssignee, createTaskComment, addTaskBranch, TASK_STATUSES, } from './tasks.js';
12
+ export type { Task, TaskStatus, TaskType, TaskTypeLegacy, TaskPriority, TaskLevelOfEffort, TaskUser, TaskEmbeddable, TaskBranch, TaskExperiment, TaskGoal, TaskFile, TaskBlockedBy, } from './tasks.js';
11
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC/D,YAAY,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAEzE,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,0BAA0B,GAC3B,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC9D,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE/C,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EACL,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC/D,YAAY,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAEzE,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,0BAA0B,GAC3B,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC9D,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE/C,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EACL,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAA;AAElF,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,UAAU,EACV,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,aAAa,GACd,MAAM,YAAY,CAAA"}
@@ -4,4 +4,5 @@ export { fetchProjectEmbeddables, fetchEmbeddableMetadata, promptForEmbeddable,
4
4
  export { fetchBranches, promptForBranch } from './branches.js';
5
5
  export { fetchRecentVersions, promptForVersion } from './versions.js';
6
6
  export { fetchProjectExperiments, promptForExperiment, } from './experiments.js';
7
+ export { fetchProjectTasks, fetchTaskById, updateTaskStatus, updateTaskAssignee, createTaskComment, addTaskBranch, TASK_STATUSES, } from './tasks.js';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AAEvC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAG/D,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,CAAA;AAQzB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAG9D,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAGrE,OAAO,EACL,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AAEvC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAG/D,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,CAAA;AAQzB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAG9D,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAGrE,OAAO,EACL,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAA"}
@@ -0,0 +1,115 @@
1
+ export type TaskStatus = 'to_do' | 'scoping' | 'in_progress' | 'feedback_cycle' | 'qa' | 'blocked' | 'completed' | 'cancelled';
2
+ /** Valid TaskStatus values for validation */
3
+ export declare const TASK_STATUSES: readonly TaskStatus[];
4
+ export type TaskType = 'new_funnel' | 'new_landing_page' | 'new_checkout' | 'new_integration' | 'new_experiment' | 'update_layout_design' | 'update_logic' | 'update_integration' | 'update_experiment' | 'bug_visual' | 'bug_logic' | 'bug_integrations' | 'bug_payments' | 'bug_experiments' | 'other';
5
+ export type TaskTypeLegacy = 'feature' | 'bug' | 'improvement' | 'research' | 'design' | 'content' | 'testing' | 'deployment';
6
+ export type TaskPriority = 'low' | 'medium' | 'high';
7
+ export type TaskLevelOfEffort = 'simple' | 'straightforward' | 'moderate' | 'complex' | 'highly_complex';
8
+ /** Minimal user shape for creator/assignee/owner relations */
9
+ export interface TaskUser {
10
+ id: string;
11
+ email: string;
12
+ name: string;
13
+ }
14
+ /** Minimal embeddable shape for task relations */
15
+ export interface TaskEmbeddable {
16
+ id: string;
17
+ title: string;
18
+ }
19
+ /** Minimal branch shape for task relations */
20
+ export interface TaskBranch {
21
+ id: string;
22
+ name: string;
23
+ status: string;
24
+ flow_id: string;
25
+ }
26
+ /** Minimal experiment shape for task relations */
27
+ export interface TaskExperiment {
28
+ id: string;
29
+ experiment_key: string;
30
+ name: string;
31
+ status: string;
32
+ flow_id: string;
33
+ variants?: unknown;
34
+ }
35
+ /** Minimal goal shape for task relations */
36
+ export interface TaskGoal {
37
+ id: string;
38
+ title: string;
39
+ }
40
+ /** Minimal file shape for attachments */
41
+ export interface TaskFile {
42
+ id?: string;
43
+ name?: string;
44
+ url?: string;
45
+ [key: string]: unknown;
46
+ }
47
+ /** Minimal blocked-by task shape */
48
+ export interface TaskBlockedBy {
49
+ id: string;
50
+ title: string | null;
51
+ status: TaskStatus | null;
52
+ assignee: TaskUser | null;
53
+ }
54
+ export interface Task {
55
+ id: string;
56
+ created_at: string;
57
+ creator_id: string | null;
58
+ owner_id: string | null;
59
+ assignee_id: string | null;
60
+ creator: TaskUser;
61
+ assignee: TaskUser;
62
+ owner: TaskUser;
63
+ title: string | null;
64
+ body: string | null;
65
+ status: TaskStatus | null;
66
+ desired_start_date: string | null;
67
+ desired_due_date: string | null;
68
+ start_date: string | null;
69
+ due_date: string | null;
70
+ type: TaskType | TaskTypeLegacy | null;
71
+ priority: TaskPriority | null;
72
+ level_of_effort: TaskLevelOfEffort | null;
73
+ actual_level_of_effort: TaskLevelOfEffort | null;
74
+ completed_at: string | null;
75
+ project_id: string;
76
+ embeddables?: TaskEmbeddable[];
77
+ branches?: TaskBranch[];
78
+ experiments?: TaskExperiment[];
79
+ goals?: TaskGoal[];
80
+ followers?: TaskUser[];
81
+ attachments?: TaskFile[];
82
+ blocked_by_task_id: string | null;
83
+ block_reason: string | null;
84
+ blocked_by_task?: TaskBlockedBy | null;
85
+ }
86
+ /**
87
+ * Fetch tasks for a project from Supabase.
88
+ * Returns empty array on auth failure, Supabase error, or no results.
89
+ */
90
+ export declare function fetchProjectTasks(projectId: string): Promise<Task[]>;
91
+ /**
92
+ * Fetch a single task by ID from Supabase.
93
+ * Returns null on auth failure, Supabase error, or not found.
94
+ */
95
+ export declare function fetchTaskById(taskId: string): Promise<Task | null>;
96
+ /**
97
+ * Update a task's status. Validates status against TASK_STATUSES.
98
+ * Returns true on success, false on auth/error.
99
+ */
100
+ export declare function updateTaskStatus(taskId: string, status: TaskStatus): Promise<boolean>;
101
+ /**
102
+ * Update a task's assignee. Returns true on success, false on auth/error.
103
+ */
104
+ export declare function updateTaskAssignee(taskId: string, assigneeId: string | null): Promise<boolean>;
105
+ /**
106
+ * Add a comment to a task. Inserts into comments table, then links via task_comments.
107
+ * Returns true on success, false on auth/error.
108
+ */
109
+ export declare function createTaskComment(taskId: string, content: string): Promise<boolean>;
110
+ /**
111
+ * Link a branch to a task via task_branches table.
112
+ * Returns true on success, false on auth/error.
113
+ */
114
+ export declare function addTaskBranch(taskId: string, branchId: string): Promise<boolean>;
115
+ //# sourceMappingURL=tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/prompts/tasks.ts"],"names":[],"mappings":"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"}