@uzukko/agentpm 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/bin/taskapp.js +2 -0
  2. package/dist/api-client.d.ts +2 -0
  3. package/dist/api-client.js +27 -0
  4. package/dist/api-client.js.map +1 -0
  5. package/dist/commands/activity.d.ts +2 -0
  6. package/dist/commands/activity.js +88 -0
  7. package/dist/commands/activity.js.map +1 -0
  8. package/dist/commands/ball.d.ts +2 -0
  9. package/dist/commands/ball.js +69 -0
  10. package/dist/commands/ball.js.map +1 -0
  11. package/dist/commands/client.d.ts +2 -0
  12. package/dist/commands/client.js +149 -0
  13. package/dist/commands/client.js.map +1 -0
  14. package/dist/commands/config-cmd.d.ts +2 -0
  15. package/dist/commands/config-cmd.js +95 -0
  16. package/dist/commands/config-cmd.js.map +1 -0
  17. package/dist/commands/meeting.d.ts +2 -0
  18. package/dist/commands/meeting.js +100 -0
  19. package/dist/commands/meeting.js.map +1 -0
  20. package/dist/commands/milestone.d.ts +2 -0
  21. package/dist/commands/milestone.js +98 -0
  22. package/dist/commands/milestone.js.map +1 -0
  23. package/dist/commands/minutes.d.ts +2 -0
  24. package/dist/commands/minutes.js +62 -0
  25. package/dist/commands/minutes.js.map +1 -0
  26. package/dist/commands/review.d.ts +2 -0
  27. package/dist/commands/review.js +98 -0
  28. package/dist/commands/review.js.map +1 -0
  29. package/dist/commands/scheduling.d.ts +2 -0
  30. package/dist/commands/scheduling.js +184 -0
  31. package/dist/commands/scheduling.js.map +1 -0
  32. package/dist/commands/space.d.ts +2 -0
  33. package/dist/commands/space.js +69 -0
  34. package/dist/commands/space.js.map +1 -0
  35. package/dist/commands/task.d.ts +2 -0
  36. package/dist/commands/task.js +192 -0
  37. package/dist/commands/task.js.map +1 -0
  38. package/dist/commands/wiki.d.ts +2 -0
  39. package/dist/commands/wiki.js +121 -0
  40. package/dist/commands/wiki.js.map +1 -0
  41. package/dist/config.d.ts +8 -0
  42. package/dist/config.js +41 -0
  43. package/dist/config.js.map +1 -0
  44. package/dist/defaults.d.ts +4 -0
  45. package/dist/defaults.js +8 -0
  46. package/dist/defaults.js.map +1 -0
  47. package/dist/index.d.ts +1 -0
  48. package/dist/index.js +48 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/output.d.ts +2 -0
  51. package/dist/output.js +140 -0
  52. package/dist/output.js.map +1 -0
  53. package/package.json +31 -0
  54. package/src/api-client.ts +32 -0
  55. package/src/commands/activity.ts +83 -0
  56. package/src/commands/ball.ts +64 -0
  57. package/src/commands/client.ts +135 -0
  58. package/src/commands/config-cmd.ts +106 -0
  59. package/src/commands/meeting.ts +91 -0
  60. package/src/commands/milestone.ts +89 -0
  61. package/src/commands/minutes.ts +57 -0
  62. package/src/commands/review.ts +89 -0
  63. package/src/commands/scheduling.ts +171 -0
  64. package/src/commands/space.ts +62 -0
  65. package/src/commands/task.ts +179 -0
  66. package/src/commands/wiki.ts +110 -0
  67. package/src/config.ts +56 -0
  68. package/src/index.ts +51 -0
  69. package/src/output.ts +139 -0
  70. package/tsconfig.json +19 -0
@@ -0,0 +1,192 @@
1
+ import { resolveSpaceId } from '../config.js';
2
+ import { callTool } from '../api-client.js';
3
+ import { output, outputError } from '../output.js';
4
+ export function registerTaskCommands(program) {
5
+ const task = program.command('task').description('Task management');
6
+ task
7
+ .command('list')
8
+ .description('List tasks')
9
+ .option('-s, --space-id <uuid>', 'Space UUID')
10
+ .option('--ball <side>', 'Filter: client|internal')
11
+ .option('--status <status>', 'Filter: backlog|todo|in_progress|in_review|done|considering')
12
+ .option('--type <type>', 'Filter: task|spec')
13
+ .option('--client-scope <scope>', 'Filter: deliverable|internal')
14
+ .option('--limit <n>', 'Max results', '50')
15
+ .action(async (opts) => {
16
+ try {
17
+ const result = await callTool('task_list', {
18
+ spaceId: resolveSpaceId(opts),
19
+ ball: opts.ball,
20
+ status: opts.status,
21
+ type: opts.type,
22
+ clientScope: opts.clientScope,
23
+ limit: parseInt(opts.limit),
24
+ });
25
+ output(result, program.opts().json);
26
+ }
27
+ catch (e) {
28
+ outputError(e, program.opts().json);
29
+ }
30
+ });
31
+ task
32
+ .command('create')
33
+ .description('Create a task')
34
+ .option('-s, --space-id <uuid>', 'Space UUID')
35
+ .requiredOption('--title <title>', 'Task title')
36
+ .option('--description <desc>', 'Task description')
37
+ .option('--type <type>', 'task|spec', 'task')
38
+ .option('--ball <side>', 'client|internal', 'internal')
39
+ .option('--origin <origin>', 'client|internal', 'internal')
40
+ .option('--client-scope <scope>', 'deliverable|internal', 'deliverable')
41
+ .option('--client-owner-ids <ids...>', 'Client owner UUIDs')
42
+ .option('--internal-owner-ids <ids...>', 'Internal owner UUIDs')
43
+ .option('--due-date <date>', 'Due date (YYYY-MM-DD)')
44
+ .option('--assignee-id <uuid>', 'Assignee UUID')
45
+ .option('--milestone-id <uuid>', 'Milestone UUID')
46
+ .option('--spec-path <path>', 'Spec path (required for type=spec)')
47
+ .option('--decision-state <state>', 'considering|decided|implemented')
48
+ .action(async (opts) => {
49
+ try {
50
+ const result = await callTool('task_create', {
51
+ spaceId: resolveSpaceId(opts),
52
+ title: opts.title,
53
+ description: opts.description,
54
+ type: opts.type,
55
+ ball: opts.ball,
56
+ origin: opts.origin,
57
+ clientScope: opts.clientScope,
58
+ clientOwnerIds: opts.clientOwnerIds || [],
59
+ internalOwnerIds: opts.internalOwnerIds || [],
60
+ dueDate: opts.dueDate,
61
+ assigneeId: opts.assigneeId,
62
+ milestoneId: opts.milestoneId,
63
+ specPath: opts.specPath,
64
+ decisionState: opts.decisionState,
65
+ });
66
+ output(result, program.opts().json);
67
+ }
68
+ catch (e) {
69
+ outputError(e, program.opts().json);
70
+ }
71
+ });
72
+ task
73
+ .command('get')
74
+ .description('Get task details')
75
+ .option('-s, --space-id <uuid>', 'Space UUID')
76
+ .requiredOption('--task-id <uuid>', 'Task UUID')
77
+ .action(async (opts) => {
78
+ try {
79
+ const result = await callTool('task_get', {
80
+ spaceId: resolveSpaceId(opts),
81
+ taskId: opts.taskId,
82
+ });
83
+ output(result, program.opts().json);
84
+ }
85
+ catch (e) {
86
+ outputError(e, program.opts().json);
87
+ }
88
+ });
89
+ task
90
+ .command('update')
91
+ .description('Update a task')
92
+ .option('-s, --space-id <uuid>', 'Space UUID')
93
+ .requiredOption('--task-id <uuid>', 'Task UUID')
94
+ .option('--title <title>', 'New title')
95
+ .option('--description <desc>', 'New description')
96
+ .option('--status <status>', 'New status')
97
+ .option('--due-date <date>', 'New due date')
98
+ .option('--assignee-id <uuid>', 'New assignee')
99
+ .option('--priority <n>', 'Priority (0-3)')
100
+ .option('--client-scope <scope>', 'deliverable|internal')
101
+ .option('--start-date <date>', 'Start date')
102
+ .option('--parent-task-id <uuid>', 'Parent task UUID')
103
+ .option('--actual-hours <n>', 'Actual hours')
104
+ .option('--milestone-id <uuid>', 'Milestone UUID')
105
+ .action(async (opts) => {
106
+ try {
107
+ const result = await callTool('task_update', {
108
+ spaceId: resolveSpaceId(opts),
109
+ taskId: opts.taskId,
110
+ title: opts.title,
111
+ description: opts.description,
112
+ status: opts.status,
113
+ dueDate: opts.dueDate,
114
+ assigneeId: opts.assigneeId,
115
+ priority: opts.priority !== undefined ? parseInt(opts.priority) : undefined,
116
+ clientScope: opts.clientScope,
117
+ startDate: opts.startDate,
118
+ parentTaskId: opts.parentTaskId,
119
+ actualHours: opts.actualHours !== undefined ? parseFloat(opts.actualHours) : undefined,
120
+ milestoneId: opts.milestoneId,
121
+ });
122
+ output(result, program.opts().json);
123
+ }
124
+ catch (e) {
125
+ outputError(e, program.opts().json);
126
+ }
127
+ });
128
+ task
129
+ .command('delete')
130
+ .description('Delete a task (dry-run by default)')
131
+ .option('-s, --space-id <uuid>', 'Space UUID')
132
+ .requiredOption('--task-id <uuid>', 'Task UUID')
133
+ .option('--no-dry-run', 'Actually delete (requires --confirm-token)')
134
+ .option('--confirm-token <token>', 'Confirmation token from dry-run')
135
+ .action(async (opts) => {
136
+ try {
137
+ const result = await callTool('task_delete', {
138
+ spaceId: resolveSpaceId(opts),
139
+ taskId: opts.taskId,
140
+ dryRun: opts.dryRun !== false,
141
+ confirmToken: opts.confirmToken,
142
+ });
143
+ output(result, program.opts().json);
144
+ }
145
+ catch (e) {
146
+ outputError(e, program.opts().json);
147
+ }
148
+ });
149
+ task
150
+ .command('list-my')
151
+ .description('List my tasks across all spaces (scope=user API key required)')
152
+ .option('--ball <side>', 'Filter: client|internal')
153
+ .option('--status <status>', 'Filter by status')
154
+ .option('--client-scope <scope>', 'Filter: deliverable|internal')
155
+ .option('--limit <n>', 'Max results', '50')
156
+ .action(async (opts) => {
157
+ try {
158
+ const result = await callTool('task_list_my', {
159
+ ball: opts.ball,
160
+ status: opts.status,
161
+ clientScope: opts.clientScope,
162
+ limit: parseInt(opts.limit),
163
+ });
164
+ output(result, program.opts().json);
165
+ }
166
+ catch (e) {
167
+ outputError(e, program.opts().json);
168
+ }
169
+ });
170
+ task
171
+ .command('stale')
172
+ .description('Find stale tasks')
173
+ .option('-s, --space-id <uuid>', 'Space UUID')
174
+ .option('--stale-days <n>', 'Days threshold', '7')
175
+ .option('--ball <side>', 'Filter: client|internal')
176
+ .option('--limit <n>', 'Max results', '50')
177
+ .action(async (opts) => {
178
+ try {
179
+ const result = await callTool('task_stale', {
180
+ spaceId: resolveSpaceId(opts),
181
+ staleDays: parseInt(opts.staleDays),
182
+ ball: opts.ball,
183
+ limit: parseInt(opts.limit),
184
+ });
185
+ output(result, program.opts().json);
186
+ }
187
+ catch (e) {
188
+ outputError(e, program.opts().json);
189
+ }
190
+ });
191
+ }
192
+ //# sourceMappingURL=task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerWikiCommands(program: Command): void;
@@ -0,0 +1,121 @@
1
+ import { resolveSpaceId } from '../config.js';
2
+ import { callTool } from '../api-client.js';
3
+ import { output, outputError } from '../output.js';
4
+ export function registerWikiCommands(program) {
5
+ const wiki = program.command('wiki').description('Wiki management');
6
+ wiki
7
+ .command('list')
8
+ .description('List wiki pages')
9
+ .option('-s, --space-id <uuid>', 'Space UUID')
10
+ .option('--limit <n>', 'Max results', '50')
11
+ .action(async (opts) => {
12
+ try {
13
+ const result = await callTool('wiki_list', {
14
+ spaceId: resolveSpaceId(opts),
15
+ limit: parseInt(opts.limit),
16
+ });
17
+ output(result, program.opts().json);
18
+ }
19
+ catch (e) {
20
+ outputError(e, program.opts().json);
21
+ }
22
+ });
23
+ wiki
24
+ .command('get')
25
+ .description('Get wiki page details')
26
+ .option('-s, --space-id <uuid>', 'Space UUID')
27
+ .requiredOption('--page-id <id>', 'Wiki page ID')
28
+ .action(async (opts) => {
29
+ try {
30
+ const result = await callTool('wiki_get', {
31
+ spaceId: resolveSpaceId(opts),
32
+ pageId: opts.pageId,
33
+ });
34
+ output(result, program.opts().json);
35
+ }
36
+ catch (e) {
37
+ outputError(e, program.opts().json);
38
+ }
39
+ });
40
+ wiki
41
+ .command('create')
42
+ .description('Create a wiki page')
43
+ .option('-s, --space-id <uuid>', 'Space UUID')
44
+ .requiredOption('--title <title>', 'Page title')
45
+ .option('--body <body>', 'Page body (Markdown)')
46
+ .option('--tags <tags...>', 'Tags')
47
+ .action(async (opts) => {
48
+ try {
49
+ const result = await callTool('wiki_create', {
50
+ spaceId: resolveSpaceId(opts),
51
+ title: opts.title,
52
+ body: opts.body,
53
+ tags: opts.tags,
54
+ });
55
+ output(result, program.opts().json);
56
+ }
57
+ catch (e) {
58
+ outputError(e, program.opts().json);
59
+ }
60
+ });
61
+ wiki
62
+ .command('update')
63
+ .description('Update a wiki page')
64
+ .option('-s, --space-id <uuid>', 'Space UUID')
65
+ .requiredOption('--page-id <id>', 'Wiki page ID')
66
+ .option('--title <title>', 'New title')
67
+ .option('--body <body>', 'New body (Markdown)')
68
+ .option('--tags <tags...>', 'New tags')
69
+ .action(async (opts) => {
70
+ try {
71
+ const result = await callTool('wiki_update', {
72
+ spaceId: resolveSpaceId(opts),
73
+ pageId: opts.pageId,
74
+ title: opts.title,
75
+ body: opts.body,
76
+ tags: opts.tags,
77
+ });
78
+ output(result, program.opts().json);
79
+ }
80
+ catch (e) {
81
+ outputError(e, program.opts().json);
82
+ }
83
+ });
84
+ wiki
85
+ .command('delete')
86
+ .description('Delete a wiki page')
87
+ .option('-s, --space-id <uuid>', 'Space UUID')
88
+ .requiredOption('--page-id <id>', 'Wiki page ID')
89
+ .action(async (opts) => {
90
+ try {
91
+ const result = await callTool('wiki_delete', {
92
+ spaceId: resolveSpaceId(opts),
93
+ pageId: opts.pageId,
94
+ });
95
+ output(result, program.opts().json);
96
+ }
97
+ catch (e) {
98
+ outputError(e, program.opts().json);
99
+ }
100
+ });
101
+ wiki
102
+ .command('versions')
103
+ .description('Get wiki page version history')
104
+ .option('-s, --space-id <uuid>', 'Space UUID')
105
+ .requiredOption('--page-id <id>', 'Wiki page ID')
106
+ .option('--limit <n>', 'Max results', '20')
107
+ .action(async (opts) => {
108
+ try {
109
+ const result = await callTool('wiki_versions', {
110
+ spaceId: resolveSpaceId(opts),
111
+ pageId: opts.pageId,
112
+ limit: parseInt(opts.limit),
113
+ });
114
+ output(result, program.opts().json);
115
+ }
116
+ catch (e) {
117
+ outputError(e, program.opts().json);
118
+ }
119
+ });
120
+ }
121
+ //# sourceMappingURL=wiki.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wiki.js","sourceRoot":"","sources":["../../src/commands/wiki.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function getConfigPath(): string;
2
+ export declare function loadCliConfig(cliOpts: {
3
+ apiKey?: string;
4
+ spaceId?: string;
5
+ }): void;
6
+ export declare function resolveSpaceId(opts: {
7
+ spaceId?: string;
8
+ }): string;
package/dist/config.js ADDED
@@ -0,0 +1,41 @@
1
+ import { readFileSync, existsSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { homedir } from 'node:os';
4
+ import { setApiConfig } from './api-client.js';
5
+ const CONFIG_PATH = join(homedir(), '.taskapprc.json');
6
+ export function getConfigPath() {
7
+ return CONFIG_PATH;
8
+ }
9
+ export function loadCliConfig(cliOpts) {
10
+ let fileConfig = {};
11
+ if (existsSync(CONFIG_PATH)) {
12
+ try {
13
+ fileConfig = JSON.parse(readFileSync(CONFIG_PATH, 'utf-8'));
14
+ }
15
+ catch {
16
+ // ignore invalid config file
17
+ }
18
+ }
19
+ // Priority: CLI flags > env vars > config file
20
+ const apiUrl = process.env.TASKAPP_API_URL || fileConfig.apiUrl;
21
+ const apiKey = cliOpts.apiKey || process.env.TASKAPP_API_KEY || fileConfig.apiKey;
22
+ if (!apiUrl || !apiKey) {
23
+ console.error('Error: Not configured. Run: agentpm login');
24
+ process.exit(1);
25
+ }
26
+ setApiConfig(apiUrl, apiKey);
27
+ // Set space ID for resolveSpaceId
28
+ const spaceId = cliOpts.spaceId || process.env.TASKAPP_SPACE_ID || fileConfig.defaultSpaceId;
29
+ if (spaceId) {
30
+ process.env.TASKAPP_SPACE_ID = spaceId;
31
+ }
32
+ }
33
+ export function resolveSpaceId(opts) {
34
+ const spaceId = opts.spaceId || process.env.TASKAPP_SPACE_ID;
35
+ if (!spaceId) {
36
+ console.error('Error: --space-id is required (or set TASKAPP_SPACE_ID / defaultSpaceId in ~/.taskapprc.json)');
37
+ process.exit(1);
38
+ }
39
+ return spaceId;
40
+ }
41
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAA;AAQtD,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAG7B;IACC,IAAI,UAAU,GAAc,EAAE,CAAA;IAC9B,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,6BAA6B;QAC/B,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,UAAU,CAAC,MAAM,CAAA;IAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,UAAU,CAAC,MAAM,CAAA;IAEjF,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE5B,kCAAkC;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,UAAU,CAAC,cAAc,CAAA;IAC5F,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,OAAO,CAAA;IACxC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAA0B;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAA;IAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,+FAA+F,CAAC,CAAA;QAC9G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const defaults: {
2
+ supabaseUrl: string;
3
+ supabaseServiceKey: string;
4
+ };
@@ -0,0 +1,8 @@
1
+ // Built-in defaults for the CLI.
2
+ // For npm publish builds, these are injected at build time via scripts/inject-defaults.sh.
3
+ // Developers can override any value via env vars or ~/.taskapprc.json.
4
+ export const defaults = {
5
+ supabaseUrl: process.env.TASKAPP_BUILTIN_SUPABASE_URL || '',
6
+ supabaseServiceKey: process.env.TASKAPP_BUILTIN_SUPABASE_SERVICE_KEY || '',
7
+ };
8
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,2FAA2F;AAC3F,uEAAuE;AAEvE,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,EAAE;IAC3D,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,oCAAoC,IAAI,EAAE;CAC3E,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,48 @@
1
+ import { Command } from 'commander';
2
+ import { loadCliConfig } from './config.js';
3
+ import { registerTaskCommands } from './commands/task.js';
4
+ import { registerBallCommands } from './commands/ball.js';
5
+ import { registerMeetingCommands } from './commands/meeting.js';
6
+ import { registerReviewCommands } from './commands/review.js';
7
+ import { registerMilestoneCommands } from './commands/milestone.js';
8
+ import { registerSpaceCommands } from './commands/space.js';
9
+ import { registerActivityCommands } from './commands/activity.js';
10
+ import { registerClientCommands } from './commands/client.js';
11
+ import { registerWikiCommands } from './commands/wiki.js';
12
+ import { registerMinutesCommands } from './commands/minutes.js';
13
+ import { registerSchedulingCommands } from './commands/scheduling.js';
14
+ import { registerConfigCommand } from './commands/config-cmd.js';
15
+ const program = new Command();
16
+ program
17
+ .name('agentpm')
18
+ .version('0.1.0')
19
+ .description('AgentPM CLI - AI-first task management')
20
+ .option('--json', 'Output raw JSON')
21
+ .option('-s, --space-id <uuid>', 'Override default space ID')
22
+ .option('--api-key <key>', 'Override API key')
23
+ .hook('preAction', (thisCommand, actionCommand) => {
24
+ // Walk up to find the root command name (handles nested subcommands)
25
+ let cmd = actionCommand;
26
+ while (cmd.parent && cmd.parent !== thisCommand) {
27
+ cmd = cmd.parent;
28
+ }
29
+ // config/login subcommands don't need auth
30
+ if (cmd.name() === 'config' || cmd.name() === 'login')
31
+ return;
32
+ const opts = thisCommand.opts();
33
+ loadCliConfig({ apiKey: opts.apiKey, spaceId: opts.spaceId });
34
+ });
35
+ registerTaskCommands(program);
36
+ registerBallCommands(program);
37
+ registerMeetingCommands(program);
38
+ registerReviewCommands(program);
39
+ registerMilestoneCommands(program);
40
+ registerSpaceCommands(program);
41
+ registerActivityCommands(program);
42
+ registerClientCommands(program);
43
+ registerWikiCommands(program);
44
+ registerMinutesCommands(program);
45
+ registerSchedulingCommands(program);
46
+ registerConfigCommand(program);
47
+ program.parseAsync();
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC;KACnC,MAAM,CAAC,uBAAuB,EAAE,2BAA2B,CAAC;KAC5D,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;KAC7C,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,EAAE;IAChD,qEAAqE;IACrE,IAAI,GAAG,GAAG,aAAa,CAAA;IACvB,OAAO,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAChD,GAAG,GAAG,GAAG,CAAC,MAAM,CAAA;IAClB,CAAC;IACD,2CAA2C;IAC3C,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,OAAO;QAAE,OAAM;IAE7D,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;IAC/B,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;AAC/D,CAAC,CAAC,CAAA;AAEJ,oBAAoB,CAAC,OAAO,CAAC,CAAA;AAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAA;AAC7B,uBAAuB,CAAC,OAAO,CAAC,CAAA;AAChC,sBAAsB,CAAC,OAAO,CAAC,CAAA;AAC/B,yBAAyB,CAAC,OAAO,CAAC,CAAA;AAClC,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAC9B,wBAAwB,CAAC,OAAO,CAAC,CAAA;AACjC,sBAAsB,CAAC,OAAO,CAAC,CAAA;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAA;AAC7B,uBAAuB,CAAC,OAAO,CAAC,CAAA;AAChC,0BAA0B,CAAC,OAAO,CAAC,CAAA;AACnC,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAE9B,OAAO,CAAC,UAAU,EAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function output(data: unknown, jsonMode: boolean): void;
2
+ export declare function outputError(error: unknown, jsonMode: boolean): void;
package/dist/output.js ADDED
@@ -0,0 +1,140 @@
1
+ import chalk from 'chalk';
2
+ import Table from 'cli-table3';
3
+ export function output(data, jsonMode) {
4
+ if (jsonMode) {
5
+ console.log(JSON.stringify(data, null, 2));
6
+ }
7
+ else {
8
+ if (Array.isArray(data)) {
9
+ printTable(data);
10
+ }
11
+ else if (data && typeof data === 'object') {
12
+ const obj = data;
13
+ const entries = Object.entries(obj);
14
+ // Display all array-of-objects properties as tables
15
+ for (const [key, value] of entries) {
16
+ if (Array.isArray(value) && value.length > 0 && typeof value[0] === 'object' && value[0] !== null) {
17
+ console.log(chalk.bold(`${key}:`));
18
+ printTable(value);
19
+ console.log();
20
+ }
21
+ }
22
+ // Print remaining non-array-of-objects values
23
+ for (const [key, value] of entries) {
24
+ if (Array.isArray(value) && value.length > 0 && typeof value[0] === 'object' && value[0] !== null) {
25
+ continue; // already printed as table
26
+ }
27
+ if (value === null || value === undefined)
28
+ continue;
29
+ if (Array.isArray(value)) {
30
+ console.log(`${chalk.gray(key)}: ${value.map(v => String(v)).join(', ')}`);
31
+ }
32
+ else if (typeof value === 'object') {
33
+ console.log(`${chalk.gray(key)}: ${JSON.stringify(value, null, 2)}`);
34
+ }
35
+ else {
36
+ console.log(`${chalk.gray(key)}: ${formatValue(key, value)}`);
37
+ }
38
+ }
39
+ }
40
+ else {
41
+ console.log(data);
42
+ }
43
+ }
44
+ }
45
+ function printTable(rows) {
46
+ if (rows.length === 0) {
47
+ console.log(chalk.gray('(no results)'));
48
+ return;
49
+ }
50
+ // Collect scalar keys from ALL rows (preserving insertion order from first occurrence)
51
+ const seen = new Set();
52
+ const keys = [];
53
+ for (const row of rows) {
54
+ const r = row;
55
+ for (const k of Object.keys(r)) {
56
+ if (seen.has(k))
57
+ continue;
58
+ seen.add(k);
59
+ // Include only scalar-ish columns (skip nested objects/arrays)
60
+ const v = r[k];
61
+ if (v === null || v === undefined || typeof v !== 'object' || v instanceof Date) {
62
+ keys.push(k);
63
+ }
64
+ }
65
+ }
66
+ // Limit columns for readability
67
+ const displayKeys = keys.slice(0, 8);
68
+ const table = new Table({
69
+ head: displayKeys.map((k) => chalk.cyan(k)),
70
+ style: { head: [], border: [] },
71
+ wordWrap: true,
72
+ });
73
+ for (const row of rows) {
74
+ const r = row;
75
+ table.push(displayKeys.map((k) => {
76
+ const v = r[k];
77
+ return formatValue(k, v);
78
+ }));
79
+ }
80
+ console.log(table.toString());
81
+ console.log(chalk.gray(`${rows.length} row(s)`));
82
+ }
83
+ function formatValue(key, value) {
84
+ if (value === null || value === undefined)
85
+ return chalk.gray('-');
86
+ if (typeof value === 'string') {
87
+ // Status coloring
88
+ if (key === 'status' || key === 'ball') {
89
+ return colorStatus(value);
90
+ }
91
+ // Truncate long strings
92
+ if (value.length > 50)
93
+ return value.slice(0, 47) + '...';
94
+ return value;
95
+ }
96
+ if (typeof value === 'number')
97
+ return chalk.yellow(String(value));
98
+ if (typeof value === 'boolean')
99
+ return value ? chalk.green('true') : chalk.red('false');
100
+ return String(value);
101
+ }
102
+ function colorStatus(status) {
103
+ switch (status) {
104
+ case 'done':
105
+ case 'approved':
106
+ case 'confirmed':
107
+ case 'accepted':
108
+ return chalk.green(status);
109
+ case 'in_progress':
110
+ case 'in_review':
111
+ case 'open':
112
+ case 'internal':
113
+ return chalk.blue(status);
114
+ case 'backlog':
115
+ case 'todo':
116
+ case 'planned':
117
+ case 'pending':
118
+ return chalk.yellow(status);
119
+ case 'considering':
120
+ return chalk.magenta(status);
121
+ case 'cancelled':
122
+ case 'expired':
123
+ case 'changes_requested':
124
+ case 'client':
125
+ return chalk.red(status);
126
+ default:
127
+ return status;
128
+ }
129
+ }
130
+ export function outputError(error, jsonMode) {
131
+ const message = error instanceof Error ? error.message : String(error);
132
+ if (jsonMode) {
133
+ console.error(JSON.stringify({ error: message }));
134
+ }
135
+ else {
136
+ console.error(chalk.red(`Error: ${message}`));
137
+ }
138
+ process.exit(1);
139
+ }
140
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}