@rlarua/agentteams-cli 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +428 -0
  2. package/dist/commands/agentConfig.d.ts +4 -0
  3. package/dist/commands/agentConfig.d.ts.map +1 -0
  4. package/dist/commands/agentConfig.js +34 -0
  5. package/dist/commands/agentConfig.js.map +1 -0
  6. package/dist/commands/convention.d.ts +4 -0
  7. package/dist/commands/convention.d.ts.map +1 -0
  8. package/dist/commands/convention.js +106 -0
  9. package/dist/commands/convention.js.map +1 -0
  10. package/dist/commands/dependency.d.ts +4 -0
  11. package/dist/commands/dependency.d.ts.map +1 -0
  12. package/dist/commands/dependency.js +34 -0
  13. package/dist/commands/dependency.js.map +1 -0
  14. package/dist/commands/index.d.ts +2 -0
  15. package/dist/commands/index.d.ts.map +1 -0
  16. package/dist/commands/index.js +295 -0
  17. package/dist/commands/index.js.map +1 -0
  18. package/dist/commands/init.d.ts +16 -0
  19. package/dist/commands/init.d.ts.map +1 -0
  20. package/dist/commands/init.js +77 -0
  21. package/dist/commands/init.js.map +1 -0
  22. package/dist/index.d.ts +3 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +206 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/types/index.d.ts +236 -0
  27. package/dist/types/index.d.ts.map +1 -0
  28. package/dist/types/index.js +6 -0
  29. package/dist/types/index.js.map +1 -0
  30. package/dist/utils/authServer.d.ts +22 -0
  31. package/dist/utils/authServer.d.ts.map +1 -0
  32. package/dist/utils/authServer.js +167 -0
  33. package/dist/utils/authServer.js.map +1 -0
  34. package/dist/utils/config.d.ts +31 -0
  35. package/dist/utils/config.d.ts.map +1 -0
  36. package/dist/utils/config.js +113 -0
  37. package/dist/utils/config.js.map +1 -0
  38. package/dist/utils/env.d.ts +7 -0
  39. package/dist/utils/env.d.ts.map +1 -0
  40. package/dist/utils/env.js +19 -0
  41. package/dist/utils/env.js.map +1 -0
  42. package/dist/utils/errors.d.ts +2 -0
  43. package/dist/utils/errors.d.ts.map +1 -0
  44. package/dist/utils/errors.js +33 -0
  45. package/dist/utils/errors.js.map +1 -0
  46. package/dist/utils/formatter.d.ts +2 -0
  47. package/dist/utils/formatter.d.ts.map +1 -0
  48. package/dist/utils/formatter.js +45 -0
  49. package/dist/utils/formatter.js.map +1 -0
  50. package/package.json +39 -0
@@ -0,0 +1,295 @@
1
+ import axios from 'axios';
2
+ import { getApiConfig } from '../utils/env.js';
3
+ import { executeInitCommand } from './init.js';
4
+ import { conventionShow, conventionAppend, conventionUpdate } from './convention.js';
5
+ import { agentConfigList, agentConfigGet, agentConfigDelete } from './agentConfig.js';
6
+ import { dependencyList, dependencyCreate, dependencyDelete } from './dependency.js';
7
+ export async function executeCommand(resource, action, options) {
8
+ switch (resource) {
9
+ case 'init':
10
+ return executeInitCommand(options);
11
+ case 'convention':
12
+ return executeConventionLocalCommand(action);
13
+ case 'status':
14
+ case 'task':
15
+ case 'comment':
16
+ case 'report': {
17
+ const { apiKey, apiUrl } = getApiConfig();
18
+ const headers = {
19
+ 'X-API-Key': apiKey,
20
+ 'Content-Type': 'application/json',
21
+ };
22
+ if (resource === 'status') {
23
+ return executeStatusCommand(apiUrl, headers, action, options);
24
+ }
25
+ if (resource === 'task') {
26
+ return executeTaskCommand(apiUrl, headers, action, options);
27
+ }
28
+ if (resource === 'comment') {
29
+ return executeCommentCommand(apiUrl, headers, action, options);
30
+ }
31
+ return executeReportCommand(apiUrl, headers, action, options);
32
+ }
33
+ case 'dependency':
34
+ return executeDependencyCommand(action, options);
35
+ case 'agent-config':
36
+ return executeAgentConfigCommand(action, options);
37
+ case 'config':
38
+ return executeConfigCommand(action);
39
+ default:
40
+ throw new Error(`Unknown resource: ${resource}`);
41
+ }
42
+ }
43
+ async function executeStatusCommand(apiUrl, headers, action, options) {
44
+ switch (action) {
45
+ case 'report': {
46
+ const response = await axios.post(`${apiUrl}/agent-statuses`, {
47
+ agentName: options.agentName,
48
+ status: options.status,
49
+ projectId: options.projectId,
50
+ metadata: options.metadata,
51
+ }, { headers });
52
+ return response.data;
53
+ }
54
+ case 'list': {
55
+ const response = await axios.get(`${apiUrl}/agent-statuses`, { headers });
56
+ return response.data;
57
+ }
58
+ case 'get': {
59
+ if (!options.id)
60
+ throw new Error('--id is required for status get');
61
+ const response = await axios.get(`${apiUrl}/agent-statuses/${options.id}`, { headers });
62
+ return response.data;
63
+ }
64
+ case 'update': {
65
+ if (!options.id)
66
+ throw new Error('--id is required for status update');
67
+ const response = await axios.put(`${apiUrl}/agent-statuses/${options.id}`, {
68
+ agentName: options.agentName,
69
+ status: options.status,
70
+ metadata: options.metadata,
71
+ }, { headers });
72
+ return response.data;
73
+ }
74
+ case 'delete': {
75
+ if (!options.id)
76
+ throw new Error('--id is required for status delete');
77
+ const response = await axios.delete(`${apiUrl}/agent-statuses/${options.id}`, { headers });
78
+ return response.data;
79
+ }
80
+ default:
81
+ throw new Error(`Unknown action: ${action}`);
82
+ }
83
+ }
84
+ async function executeTaskCommand(apiUrl, headers, action, options) {
85
+ switch (action) {
86
+ case 'list': {
87
+ const response = await axios.get(`${apiUrl}/tasks`, { headers });
88
+ return response.data;
89
+ }
90
+ case 'get': {
91
+ if (!options.id)
92
+ throw new Error('--id is required for task get');
93
+ const response = await axios.get(`${apiUrl}/tasks/${options.id}`, {
94
+ headers,
95
+ });
96
+ return response.data;
97
+ }
98
+ case 'create': {
99
+ if (!options.title)
100
+ throw new Error('--title is required for task create');
101
+ const response = await axios.post(`${apiUrl}/tasks`, {
102
+ title: options.title,
103
+ description: options.description ?? '',
104
+ priority: options.priority ?? 'MEDIUM',
105
+ status: options.status,
106
+ planId: options.planId,
107
+ }, { headers });
108
+ return response.data;
109
+ }
110
+ case 'update': {
111
+ if (!options.id)
112
+ throw new Error('--id is required for task update');
113
+ const body = {};
114
+ if (options.title)
115
+ body.title = options.title;
116
+ if (options.description)
117
+ body.description = options.description;
118
+ if (options.status)
119
+ body.status = options.status;
120
+ if (options.priority)
121
+ body.priority = options.priority;
122
+ const response = await axios.put(`${apiUrl}/tasks/${options.id}`, body, { headers });
123
+ return response.data;
124
+ }
125
+ case 'delete': {
126
+ if (!options.id)
127
+ throw new Error('--id is required for task delete');
128
+ await axios.delete(`${apiUrl}/tasks/${options.id}`, { headers });
129
+ return { message: `Task ${options.id} deleted successfully` };
130
+ }
131
+ case 'assign': {
132
+ if (!options.id)
133
+ throw new Error('--id is required for task assign');
134
+ if (!options.agent)
135
+ throw new Error('--agent is required for task assign');
136
+ const response = await axios.post(`${apiUrl}/tasks/${options.id}/assign`, { assignedTo: options.agent }, { headers });
137
+ return response.data;
138
+ }
139
+ default:
140
+ throw new Error(`Unknown action: ${action}`);
141
+ }
142
+ }
143
+ async function executeCommentCommand(apiUrl, headers, action, options) {
144
+ switch (action) {
145
+ case 'list': {
146
+ if (!options.taskId)
147
+ throw new Error('--task-id is required for comment list');
148
+ const response = await axios.get(`${apiUrl}/tasks/${options.taskId}/comments`, { headers });
149
+ return response.data;
150
+ }
151
+ case 'get': {
152
+ if (!options.id)
153
+ throw new Error('--id is required for comment get');
154
+ const response = await axios.get(`${apiUrl}/comments/${options.id}`, { headers });
155
+ return response.data;
156
+ }
157
+ case 'create': {
158
+ if (!options.taskId)
159
+ throw new Error('--task-id is required for comment create');
160
+ if (!options.content)
161
+ throw new Error('--content is required for comment create');
162
+ const response = await axios.post(`${apiUrl}/tasks/${options.taskId}/comments`, {
163
+ content: options.content,
164
+ authorId: options.authorId,
165
+ }, { headers });
166
+ return response.data;
167
+ }
168
+ case 'update': {
169
+ if (!options.id)
170
+ throw new Error('--id is required for comment update');
171
+ if (!options.content)
172
+ throw new Error('--content is required for comment update');
173
+ const response = await axios.put(`${apiUrl}/comments/${options.id}`, { content: options.content }, { headers });
174
+ return response.data;
175
+ }
176
+ case 'delete': {
177
+ if (!options.id)
178
+ throw new Error('--id is required for comment delete');
179
+ await axios.delete(`${apiUrl}/comments/${options.id}`, { headers });
180
+ return { message: `Comment ${options.id} deleted successfully` };
181
+ }
182
+ default:
183
+ throw new Error(`Unknown action: ${action}`);
184
+ }
185
+ }
186
+ async function executeReportCommand(apiUrl, headers, action, options) {
187
+ switch (action) {
188
+ case 'list': {
189
+ const response = await axios.get(`${apiUrl}/completion-reports`, { headers });
190
+ return response.data;
191
+ }
192
+ case 'get': {
193
+ if (!options.id)
194
+ throw new Error('--id is required for report get');
195
+ const response = await axios.get(`${apiUrl}/completion-reports/${options.id}`, { headers });
196
+ return response.data;
197
+ }
198
+ case 'create': {
199
+ const response = await axios.post(`${apiUrl}/completion-reports`, {
200
+ taskId: options.taskId,
201
+ summary: options.summary,
202
+ agentId: options.agentId,
203
+ details: options.details,
204
+ }, { headers });
205
+ return response.data;
206
+ }
207
+ case 'update': {
208
+ if (!options.id)
209
+ throw new Error('--id is required for report update');
210
+ const body = {};
211
+ if (options.summary)
212
+ body.summary = options.summary;
213
+ if (options.details)
214
+ body.details = options.details;
215
+ const response = await axios.put(`${apiUrl}/completion-reports/${options.id}`, body, { headers });
216
+ return response.data;
217
+ }
218
+ case 'delete': {
219
+ if (!options.id)
220
+ throw new Error('--id is required for report delete');
221
+ await axios.delete(`${apiUrl}/completion-reports/${options.id}`, { headers });
222
+ return { message: `Report ${options.id} deleted successfully` };
223
+ }
224
+ default:
225
+ throw new Error(`Unknown action: ${action}`);
226
+ }
227
+ }
228
+ async function executeConventionLocalCommand(action) {
229
+ switch (action) {
230
+ case 'show':
231
+ return conventionShow();
232
+ case 'append':
233
+ return conventionAppend();
234
+ case 'update':
235
+ return conventionUpdate();
236
+ default:
237
+ throw new Error(`Unknown convention action: ${action}. Use show, append, or update.`);
238
+ }
239
+ }
240
+ async function executeAgentConfigCommand(action, options) {
241
+ switch (action) {
242
+ case 'list':
243
+ return agentConfigList();
244
+ case 'get': {
245
+ if (!options.id)
246
+ throw new Error('--id is required for agent-config get');
247
+ return agentConfigGet(options.id);
248
+ }
249
+ case 'delete': {
250
+ if (!options.id)
251
+ throw new Error('--id is required for agent-config delete');
252
+ return agentConfigDelete(options.id);
253
+ }
254
+ default:
255
+ throw new Error(`Unknown agent-config action: ${action}. Use list, get, or delete.`);
256
+ }
257
+ }
258
+ async function executeDependencyCommand(action, options) {
259
+ switch (action) {
260
+ case 'list': {
261
+ if (!options.taskId)
262
+ throw new Error('--task-id is required for dependency list');
263
+ return dependencyList(options.taskId);
264
+ }
265
+ case 'create': {
266
+ if (!options.taskId)
267
+ throw new Error('--task-id is required for dependency create');
268
+ if (!options.dependsOn)
269
+ throw new Error('--depends-on is required for dependency create');
270
+ return dependencyCreate(options.taskId, options.dependsOn);
271
+ }
272
+ case 'delete': {
273
+ if (!options.taskId)
274
+ throw new Error('--task-id is required for dependency delete');
275
+ if (!options.depId)
276
+ throw new Error('--dep-id is required for dependency delete');
277
+ return dependencyDelete(options.taskId, options.depId);
278
+ }
279
+ default:
280
+ throw new Error(`Unknown dependency action: ${action}. Use list, create, or delete.`);
281
+ }
282
+ }
283
+ async function executeConfigCommand(action) {
284
+ switch (action) {
285
+ case 'whoami': {
286
+ return {
287
+ apiKey: process.env.AGENTTEAMS_API_KEY,
288
+ apiUrl: process.env.AGENTTEAMS_API_URL,
289
+ };
290
+ }
291
+ default:
292
+ throw new Error(`Unknown action: ${action}`);
293
+ }
294
+ }
295
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ type InitOptions = {
2
+ cwd?: string;
3
+ };
4
+ type InitResult = {
5
+ success: true;
6
+ authUrl: string;
7
+ configPath: string;
8
+ conventionPath: string;
9
+ teamId: string;
10
+ projectId: string;
11
+ agentName: string;
12
+ environment: string;
13
+ };
14
+ export declare function executeInitCommand(options?: InitOptions): Promise<InitResult>;
15
+ export {};
16
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAYA,KAAK,WAAW,GAAG;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AA4CF,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA4CnF"}
@@ -0,0 +1,77 @@
1
+ import { writeFileSync } from 'node:fs';
2
+ import { join, resolve } from 'node:path';
3
+ import open from 'open';
4
+ import { startLocalAuthServer } from '../utils/authServer.js';
5
+ import { saveConfig } from '../utils/config.js';
6
+ const AUTH_BASE_URL = 'http://localhost:3000';
7
+ const CONFIG_DIR = '.agentteams';
8
+ const CONFIG_FILE = 'config.json';
9
+ const CONVENTION_FILE = 'convention.md';
10
+ function isSshEnvironment() {
11
+ return Boolean(process.env.SSH_CONNECTION || process.env.SSH_CLIENT || process.env.SSH_TTY);
12
+ }
13
+ function buildAuthorizeUrl(port) {
14
+ return `${AUTH_BASE_URL}/cli/authorize?port=${port}`;
15
+ }
16
+ function printAuthorizeUrl(url) {
17
+ console.log('Open this URL to continue authentication:');
18
+ console.log(url);
19
+ }
20
+ async function tryOpenBrowser(url) {
21
+ if (isSshEnvironment()) {
22
+ printAuthorizeUrl(url);
23
+ return;
24
+ }
25
+ try {
26
+ await open(url);
27
+ }
28
+ catch {
29
+ printAuthorizeUrl(url);
30
+ }
31
+ }
32
+ function toConfig(authResult) {
33
+ return {
34
+ teamId: authResult.teamId,
35
+ projectId: authResult.projectId,
36
+ agentName: authResult.agentName,
37
+ apiKey: authResult.apiKey,
38
+ apiUrl: authResult.apiUrl,
39
+ };
40
+ }
41
+ export async function executeInitCommand(options) {
42
+ const cwd = resolve(options?.cwd ?? process.cwd());
43
+ const configPath = join(cwd, CONFIG_DIR, CONFIG_FILE);
44
+ const conventionPath = join(cwd, CONFIG_DIR, CONVENTION_FILE);
45
+ let authContext;
46
+ try {
47
+ authContext = startLocalAuthServer();
48
+ }
49
+ catch (error) {
50
+ throw new Error(`Failed to start local OAuth server: ${error instanceof Error ? error.message : String(error)}`);
51
+ }
52
+ const authUrl = buildAuthorizeUrl(authContext.port);
53
+ await tryOpenBrowser(authUrl);
54
+ try {
55
+ const authResult = await authContext.waitForCallback();
56
+ const config = toConfig(authResult);
57
+ saveConfig(configPath, config);
58
+ writeFileSync(conventionPath, authResult.convention.content, 'utf-8');
59
+ return {
60
+ success: true,
61
+ authUrl,
62
+ configPath,
63
+ conventionPath,
64
+ teamId: authResult.teamId,
65
+ projectId: authResult.projectId,
66
+ agentName: authResult.agentName,
67
+ environment: authResult.environment,
68
+ };
69
+ }
70
+ catch (error) {
71
+ if (authContext.server.listening) {
72
+ authContext.server.close();
73
+ }
74
+ throw new Error(`Initialization failed: ${error instanceof Error ? error.message : String(error)}`);
75
+ }
76
+ }
77
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,206 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { executeCommand } from './commands/index.js';
4
+ import { formatOutput } from './utils/formatter.js';
5
+ import { handleError } from './utils/errors.js';
6
+ const program = new Command();
7
+ program
8
+ .name('agentteams')
9
+ .description('CLI tool for AgentTeams API')
10
+ .version('1.0.0');
11
+ program
12
+ .command('init')
13
+ .description('Initialize AgentTeams CLI via OAuth')
14
+ .option('--format <format>', 'Output format (json, text)', 'text')
15
+ .action(async (options) => {
16
+ try {
17
+ const result = await executeCommand('init', 'start', {});
18
+ console.log(formatOutput(result, options.format));
19
+ }
20
+ catch (error) {
21
+ console.error(handleError(error));
22
+ process.exit(1);
23
+ }
24
+ });
25
+ program
26
+ .command('status')
27
+ .description('Manage agent statuses')
28
+ .argument('<action>', 'Action to perform (report, list, get, update, delete)')
29
+ .option('--id <id>', 'Status ID')
30
+ .option('--agent-name <name>', 'Agent name')
31
+ .option('--status <status>', 'Agent status')
32
+ .option('--project-id <id>', 'Project ID', parseInt)
33
+ .option('--metadata <json>', 'Metadata as JSON string')
34
+ .option('--format <format>', 'Output format (json, text)', 'json')
35
+ .action(async (action, options) => {
36
+ try {
37
+ const result = await executeCommand('status', action, {
38
+ id: options.id,
39
+ agentName: options.agentName,
40
+ status: options.status,
41
+ projectId: options.projectId,
42
+ metadata: options.metadata ? JSON.parse(options.metadata) : undefined,
43
+ });
44
+ console.log(formatOutput(result, options.format));
45
+ }
46
+ catch (error) {
47
+ console.error(handleError(error));
48
+ process.exit(1);
49
+ }
50
+ });
51
+ program
52
+ .command('task')
53
+ .description('Manage tasks')
54
+ .argument('<action>', 'Action to perform (list, get, create, update, delete, assign)')
55
+ .option('--id <id>', 'Task ID')
56
+ .option('--title <title>', 'Task title')
57
+ .option('--description <description>', 'Task description')
58
+ .option('--status <status>', 'Task status (PENDING, IN_PROGRESS, DONE, CANCELLED)')
59
+ .option('--priority <priority>', 'Task priority (LOW, MEDIUM, HIGH)')
60
+ .option('--plan-id <planId>', 'Plan ID')
61
+ .option('--agent <agent>', 'Agent name or ID to assign')
62
+ .option('--format <format>', 'Output format (json, text)', 'json')
63
+ .action(async (action, options) => {
64
+ try {
65
+ const result = await executeCommand('task', action, {
66
+ id: options.id,
67
+ title: options.title,
68
+ description: options.description,
69
+ status: options.status,
70
+ priority: options.priority,
71
+ planId: options.planId,
72
+ agent: options.agent,
73
+ });
74
+ console.log(formatOutput(result, options.format));
75
+ }
76
+ catch (error) {
77
+ console.error(handleError(error));
78
+ process.exit(1);
79
+ }
80
+ });
81
+ program
82
+ .command('comment')
83
+ .description('Manage task comments')
84
+ .argument('<action>', 'Action to perform (list, get, create, update, delete)')
85
+ .option('--id <id>', 'Comment ID', parseInt)
86
+ .option('--task-id <id>', 'Task ID', parseInt)
87
+ .option('--content <content>', 'Comment content')
88
+ .option('--author-id <id>', 'Author ID', parseInt)
89
+ .option('--format <format>', 'Output format (json, text)', 'json')
90
+ .action(async (action, options) => {
91
+ try {
92
+ const result = await executeCommand('comment', action, {
93
+ id: options.id,
94
+ taskId: options.taskId,
95
+ content: options.content,
96
+ authorId: options.authorId,
97
+ });
98
+ console.log(formatOutput(result, options.format));
99
+ }
100
+ catch (error) {
101
+ console.error(handleError(error));
102
+ process.exit(1);
103
+ }
104
+ });
105
+ program
106
+ .command('report')
107
+ .description('Manage completion reports')
108
+ .argument('<action>', 'Action to perform (list, get, create, update, delete)')
109
+ .option('--id <id>', 'Report ID')
110
+ .option('--task-id <id>', 'Task ID', parseInt)
111
+ .option('--summary <summary>', 'Report summary')
112
+ .option('--agent-id <id>', 'Agent ID', parseInt)
113
+ .option('--details <json>', 'Details as JSON string')
114
+ .option('--format <format>', 'Output format (json, text)', 'json')
115
+ .action(async (action, options) => {
116
+ try {
117
+ const result = await executeCommand('report', action, {
118
+ id: options.id,
119
+ taskId: options.taskId,
120
+ summary: options.summary,
121
+ agentId: options.agentId,
122
+ details: options.details ? JSON.parse(options.details) : undefined,
123
+ });
124
+ console.log(formatOutput(result, options.format));
125
+ }
126
+ catch (error) {
127
+ console.error(handleError(error));
128
+ process.exit(1);
129
+ }
130
+ });
131
+ program
132
+ .command('convention')
133
+ .description('Manage project conventions')
134
+ .argument('<action>', 'Action to perform (show, append, update)')
135
+ .action(async (action) => {
136
+ try {
137
+ const result = await executeCommand('convention', action, {});
138
+ if (typeof result === 'string') {
139
+ console.log(result);
140
+ }
141
+ else {
142
+ console.log(formatOutput(result, 'text'));
143
+ }
144
+ }
145
+ catch (error) {
146
+ console.error(handleError(error));
147
+ process.exit(1);
148
+ }
149
+ });
150
+ program
151
+ .command('dependency')
152
+ .description('Manage task dependencies')
153
+ .argument('<action>', 'Action to perform (list, create, delete)')
154
+ .option('--task-id <id>', 'Task ID')
155
+ .option('--depends-on <id>', 'Dependency target task ID')
156
+ .option('--dep-id <id>', 'Dependency ID to delete')
157
+ .option('--format <format>', 'Output format (json, text)', 'json')
158
+ .action(async (action, options) => {
159
+ try {
160
+ const result = await executeCommand('dependency', action, {
161
+ taskId: options.taskId,
162
+ dependsOn: options.dependsOn,
163
+ depId: options.depId,
164
+ });
165
+ console.log(formatOutput(result, options.format));
166
+ }
167
+ catch (error) {
168
+ console.error(handleError(error));
169
+ process.exit(1);
170
+ }
171
+ });
172
+ program
173
+ .command('agent-config')
174
+ .description('Manage agent configurations')
175
+ .argument('<action>', 'Action to perform (list, get, delete)')
176
+ .option('--id <id>', 'Agent config ID')
177
+ .option('--format <format>', 'Output format (json, text)', 'json')
178
+ .action(async (action, options) => {
179
+ try {
180
+ const result = await executeCommand('agent-config', action, {
181
+ id: options.id,
182
+ });
183
+ console.log(formatOutput(result, options.format));
184
+ }
185
+ catch (error) {
186
+ console.error(handleError(error));
187
+ process.exit(1);
188
+ }
189
+ });
190
+ program
191
+ .command('config')
192
+ .description('Manage configuration')
193
+ .argument('<action>', 'Action to perform (whoami)')
194
+ .option('--format <format>', 'Output format (json, text)', 'json')
195
+ .action(async (action, options) => {
196
+ try {
197
+ const result = await executeCommand('config', action, {});
198
+ console.log(formatOutput(result, options.format));
199
+ }
200
+ catch (error) {
201
+ console.error(handleError(error));
202
+ process.exit(1);
203
+ }
204
+ });
205
+ program.parse();
206
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}