@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.
- package/bin/taskapp.js +2 -0
- package/dist/api-client.d.ts +2 -0
- package/dist/api-client.js +27 -0
- package/dist/api-client.js.map +1 -0
- package/dist/commands/activity.d.ts +2 -0
- package/dist/commands/activity.js +88 -0
- package/dist/commands/activity.js.map +1 -0
- package/dist/commands/ball.d.ts +2 -0
- package/dist/commands/ball.js +69 -0
- package/dist/commands/ball.js.map +1 -0
- package/dist/commands/client.d.ts +2 -0
- package/dist/commands/client.js +149 -0
- package/dist/commands/client.js.map +1 -0
- package/dist/commands/config-cmd.d.ts +2 -0
- package/dist/commands/config-cmd.js +95 -0
- package/dist/commands/config-cmd.js.map +1 -0
- package/dist/commands/meeting.d.ts +2 -0
- package/dist/commands/meeting.js +100 -0
- package/dist/commands/meeting.js.map +1 -0
- package/dist/commands/milestone.d.ts +2 -0
- package/dist/commands/milestone.js +98 -0
- package/dist/commands/milestone.js.map +1 -0
- package/dist/commands/minutes.d.ts +2 -0
- package/dist/commands/minutes.js +62 -0
- package/dist/commands/minutes.js.map +1 -0
- package/dist/commands/review.d.ts +2 -0
- package/dist/commands/review.js +98 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/scheduling.d.ts +2 -0
- package/dist/commands/scheduling.js +184 -0
- package/dist/commands/scheduling.js.map +1 -0
- package/dist/commands/space.d.ts +2 -0
- package/dist/commands/space.js +69 -0
- package/dist/commands/space.js.map +1 -0
- package/dist/commands/task.d.ts +2 -0
- package/dist/commands/task.js +192 -0
- package/dist/commands/task.js.map +1 -0
- package/dist/commands/wiki.d.ts +2 -0
- package/dist/commands/wiki.js +121 -0
- package/dist/commands/wiki.js.map +1 -0
- package/dist/config.d.ts +8 -0
- package/dist/config.js +41 -0
- package/dist/config.js.map +1 -0
- package/dist/defaults.d.ts +4 -0
- package/dist/defaults.js +8 -0
- package/dist/defaults.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/output.d.ts +2 -0
- package/dist/output.js +140 -0
- package/dist/output.js.map +1 -0
- package/package.json +31 -0
- package/src/api-client.ts +32 -0
- package/src/commands/activity.ts +83 -0
- package/src/commands/ball.ts +64 -0
- package/src/commands/client.ts +135 -0
- package/src/commands/config-cmd.ts +106 -0
- package/src/commands/meeting.ts +91 -0
- package/src/commands/milestone.ts +89 -0
- package/src/commands/minutes.ts +57 -0
- package/src/commands/review.ts +89 -0
- package/src/commands/scheduling.ts +171 -0
- package/src/commands/space.ts +62 -0
- package/src/commands/task.ts +179 -0
- package/src/commands/wiki.ts +110 -0
- package/src/config.ts +56 -0
- package/src/index.ts +51 -0
- package/src/output.ts +139 -0
- 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,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":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAElD,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAA;IAEnE,IAAI;SACD,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iBAAiB,CAAC;SAC9B,MAAM,CAAC,uBAAuB,EAAE,YAAY,CAAC;SAC7C,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;SAC1C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE;gBACzC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;gBAC7B,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;aAC5B,CAAC,CAAA;YACF,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAA;QAAC,CAAC;IACrD,CAAC,CAAC,CAAA;IAEJ,IAAI;SACD,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,uBAAuB,CAAC;SACpC,MAAM,CAAC,uBAAuB,EAAE,YAAY,CAAC;SAC7C,cAAc,CAAC,gBAAgB,EAAE,cAAc,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE;gBACxC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;gBAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAA;YACF,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAA;QAAC,CAAC;IACrD,CAAC,CAAC,CAAA;IAEJ,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oBAAoB,CAAC;SACjC,MAAM,CAAC,uBAAuB,EAAE,YAAY,CAAC;SAC7C,cAAc,CAAC,iBAAiB,EAAE,YAAY,CAAC;SAC/C,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;SAC/C,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE;gBAC3C,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;gBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC,CAAA;YACF,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAA;QAAC,CAAC;IACrD,CAAC,CAAC,CAAA;IAEJ,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oBAAoB,CAAC;SACjC,MAAM,CAAC,uBAAuB,EAAE,YAAY,CAAC;SAC7C,cAAc,CAAC,gBAAgB,EAAE,cAAc,CAAC;SAChD,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC;SACtC,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC;SAC9C,MAAM,CAAC,kBAAkB,EAAE,UAAU,CAAC;SACtC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE;gBAC3C,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;gBAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC,CAAA;YACF,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAA;QAAC,CAAC;IACrD,CAAC,CAAC,CAAA;IAEJ,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oBAAoB,CAAC;SACjC,MAAM,CAAC,uBAAuB,EAAE,YAAY,CAAC;SAC7C,cAAc,CAAC,gBAAgB,EAAE,cAAc,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE;gBAC3C,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;gBAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAA;YACF,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAA;QAAC,CAAC;IACrD,CAAC,CAAC,CAAA;IAEJ,IAAI;SACD,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,uBAAuB,EAAE,YAAY,CAAC;SAC7C,cAAc,CAAC,gBAAgB,EAAE,cAAc,CAAC;SAChD,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;SAC1C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE;gBAC7C,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;gBAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;aAC5B,CAAC,CAAA;YACF,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAA;QAAC,CAAC;IACrD,CAAC,CAAC,CAAA;AACN,CAAC"}
|
package/dist/config.d.ts
ADDED
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"}
|
package/dist/defaults.js
ADDED
|
@@ -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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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"}
|
package/dist/output.d.ts
ADDED
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":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,MAAM,YAAY,CAAA;AAE9B,MAAM,UAAU,MAAM,CAAC,IAAa,EAAE,QAAiB;IACrD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAC5C,CAAC;SAAM,CAAC;QACN,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,UAAU,CAAC,IAAI,CAAC,CAAA;QAClB,CAAC;aAAM,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5C,MAAM,GAAG,GAAG,IAA+B,CAAA;YAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAEnC,oDAAoD;YACpD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;gBACnC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;oBAClG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAA;oBAClC,UAAU,CAAC,KAAkC,CAAC,CAAA;oBAC9C,OAAO,CAAC,GAAG,EAAE,CAAA;gBACf,CAAC;YACH,CAAC;YAED,8CAA8C;YAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;gBACnC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;oBAClG,SAAQ,CAAC,2BAA2B;gBACtC,CAAC;gBACD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;oBAAE,SAAQ;gBACnD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAC5E,CAAC;qBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACrC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;gBACtE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;gBAC/D,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAe;IACjC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;QACvC,OAAM;IACR,CAAC;IAED,uFAAuF;IACvF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,GAA8B,CAAA;QACxC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,SAAQ;YACzB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACX,+DAA+D;YAC/D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YACd,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;gBAChF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAEpC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACtB,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC/B,QAAQ,EAAE,IAAI;KACf,CAAC,CAAA;IAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,GAA8B,CAAA;QACxC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YACd,OAAO,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAC,CAAA;IACL,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,CAAA;AAClD,CAAC;AAED,SAAS,WAAW,CAAC,GAAW,EAAE,KAAc;IAC9C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACjE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,kBAAkB;QAClB,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACvC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC;QACD,wBAAwB;QACxB,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAA;QACxD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACjE,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACvF,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC5B,KAAK,aAAa,CAAC;QACnB,KAAK,WAAW,CAAC;QACjB,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU;YACb,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC3B,KAAK,SAAS,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC7B,KAAK,aAAa;YAChB,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAC9B,KAAK,WAAW,CAAC;QACjB,KAAK,SAAS,CAAC;QACf,KAAK,mBAAmB,CAAC;QACzB,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC1B;YACE,OAAO,MAAM,CAAA;IACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,QAAiB;IAC3D,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACtE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;IACnD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAA;IAC/C,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC"}
|