orbitmap 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 (114) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +200 -0
  3. package/dist/api-client.d.ts +234 -0
  4. package/dist/api-client.js +401 -0
  5. package/dist/api-client.js.map +1 -0
  6. package/dist/commands/agents.d.ts +3 -0
  7. package/dist/commands/agents.js +44 -0
  8. package/dist/commands/agents.js.map +1 -0
  9. package/dist/commands/assign.d.ts +5 -0
  10. package/dist/commands/assign.js +44 -0
  11. package/dist/commands/assign.js.map +1 -0
  12. package/dist/commands/context.d.ts +4 -0
  13. package/dist/commands/context.js +37 -0
  14. package/dist/commands/context.js.map +1 -0
  15. package/dist/commands/create.d.ts +12 -0
  16. package/dist/commands/create.js +54 -0
  17. package/dist/commands/create.js.map +1 -0
  18. package/dist/commands/dep.d.ts +11 -0
  19. package/dist/commands/dep.js +56 -0
  20. package/dist/commands/dep.js.map +1 -0
  21. package/dist/commands/doc-import.d.ts +9 -0
  22. package/dist/commands/doc-import.js +97 -0
  23. package/dist/commands/doc-import.js.map +1 -0
  24. package/dist/commands/doc-patch.d.ts +16 -0
  25. package/dist/commands/doc-patch.js +142 -0
  26. package/dist/commands/doc-patch.js.map +1 -0
  27. package/dist/commands/doc-share.d.ts +14 -0
  28. package/dist/commands/doc-share.js +60 -0
  29. package/dist/commands/doc-share.js.map +1 -0
  30. package/dist/commands/doc-update.d.ts +6 -0
  31. package/dist/commands/doc-update.js +64 -0
  32. package/dist/commands/doc-update.js.map +1 -0
  33. package/dist/commands/doc.d.ts +6 -0
  34. package/dist/commands/doc.js +108 -0
  35. package/dist/commands/doc.js.map +1 -0
  36. package/dist/commands/docs-cache.d.ts +11 -0
  37. package/dist/commands/docs-cache.js +119 -0
  38. package/dist/commands/docs-cache.js.map +1 -0
  39. package/dist/commands/docs.d.ts +6 -0
  40. package/dist/commands/docs.js +35 -0
  41. package/dist/commands/docs.js.map +1 -0
  42. package/dist/commands/get.d.ts +8 -0
  43. package/dist/commands/get.js +102 -0
  44. package/dist/commands/get.js.map +1 -0
  45. package/dist/commands/ideas.d.ts +23 -0
  46. package/dist/commands/ideas.js +155 -0
  47. package/dist/commands/ideas.js.map +1 -0
  48. package/dist/commands/init.d.ts +7 -0
  49. package/dist/commands/init.js +175 -0
  50. package/dist/commands/init.js.map +1 -0
  51. package/dist/commands/issues.d.ts +32 -0
  52. package/dist/commands/issues.js +206 -0
  53. package/dist/commands/issues.js.map +1 -0
  54. package/dist/commands/log.d.ts +6 -0
  55. package/dist/commands/log.js +47 -0
  56. package/dist/commands/log.js.map +1 -0
  57. package/dist/commands/login.d.ts +3 -0
  58. package/dist/commands/login.js +48 -0
  59. package/dist/commands/login.js.map +1 -0
  60. package/dist/commands/logout.d.ts +1 -0
  61. package/dist/commands/logout.js +13 -0
  62. package/dist/commands/logout.js.map +1 -0
  63. package/dist/commands/orbit.d.ts +18 -0
  64. package/dist/commands/orbit.js +159 -0
  65. package/dist/commands/orbit.js.map +1 -0
  66. package/dist/commands/overview.d.ts +4 -0
  67. package/dist/commands/overview.js +56 -0
  68. package/dist/commands/overview.js.map +1 -0
  69. package/dist/commands/projects.d.ts +3 -0
  70. package/dist/commands/projects.js +28 -0
  71. package/dist/commands/projects.js.map +1 -0
  72. package/dist/commands/setup-agent.d.ts +3 -0
  73. package/dist/commands/setup-agent.js +178 -0
  74. package/dist/commands/setup-agent.js.map +1 -0
  75. package/dist/commands/start.d.ts +4 -0
  76. package/dist/commands/start.js +38 -0
  77. package/dist/commands/start.js.map +1 -0
  78. package/dist/commands/status.d.ts +5 -0
  79. package/dist/commands/status.js +54 -0
  80. package/dist/commands/status.js.map +1 -0
  81. package/dist/commands/subtask.d.ts +7 -0
  82. package/dist/commands/subtask.js +26 -0
  83. package/dist/commands/subtask.js.map +1 -0
  84. package/dist/commands/task-edit-content.d.ts +7 -0
  85. package/dist/commands/task-edit-content.js +45 -0
  86. package/dist/commands/task-edit-content.js.map +1 -0
  87. package/dist/commands/task.d.ts +66 -0
  88. package/dist/commands/task.js +92 -0
  89. package/dist/commands/task.js.map +1 -0
  90. package/dist/commands/tasks.d.ts +7 -0
  91. package/dist/commands/tasks.js +35 -0
  92. package/dist/commands/tasks.js.map +1 -0
  93. package/dist/commands/vibes.d.ts +27 -0
  94. package/dist/commands/vibes.js +142 -0
  95. package/dist/commands/vibes.js.map +1 -0
  96. package/dist/config.d.ts +14 -0
  97. package/dist/config.js +34 -0
  98. package/dist/config.js.map +1 -0
  99. package/dist/doc-cache.d.ts +24 -0
  100. package/dist/doc-cache.js +116 -0
  101. package/dist/doc-cache.js.map +1 -0
  102. package/dist/errors.d.ts +16 -0
  103. package/dist/errors.js +26 -0
  104. package/dist/errors.js.map +1 -0
  105. package/dist/index.d.ts +2 -0
  106. package/dist/index.js +705 -0
  107. package/dist/index.js.map +1 -0
  108. package/dist/oauth.d.ts +42 -0
  109. package/dist/oauth.js +207 -0
  110. package/dist/oauth.js.map +1 -0
  111. package/dist/output.d.ts +4 -0
  112. package/dist/output.js +66 -0
  113. package/dist/output.js.map +1 -0
  114. package/package.json +50 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc.js","sourceRoot":"","sources":["../../src/commands/doc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare function docsPullCommand(slug: string | undefined, options: {
2
+ json: boolean;
3
+ project?: string;
4
+ }): Promise<void>;
5
+ export declare function docsListCacheCommand(options: {
6
+ json: boolean;
7
+ }): Promise<void>;
8
+ export declare function docsCleanCommand(options: {
9
+ json: boolean;
10
+ project?: string;
11
+ }): Promise<void>;
@@ -0,0 +1,119 @@
1
+ import { createClient } from '../api-client.js';
2
+ import { formatOutput, printError, printSuccess, formatTable } from '../output.js';
3
+ import { readManifest, downloadDocument, cleanupCache } from '../doc-cache.js';
4
+ export async function docsPullCommand(slug, options) {
5
+ try {
6
+ const client = await createClient(options.project);
7
+ if (slug) {
8
+ const result = await downloadDocument(client, slug);
9
+ if (options.json) {
10
+ console.log(formatOutput({ data: result }, true));
11
+ return;
12
+ }
13
+ if (result.cached) {
14
+ console.log(`${result.slug} v${result.version} — already cached`);
15
+ }
16
+ else {
17
+ console.log(`${result.slug} v${result.version} — downloaded to ${result.filePath}`);
18
+ }
19
+ return;
20
+ }
21
+ // Pull all docs
22
+ const response = (await client.getDocuments());
23
+ const docs = response.data;
24
+ if (docs.length === 0) {
25
+ printSuccess('No documents to pull.', options.json);
26
+ return;
27
+ }
28
+ const results = [];
29
+ for (const doc of docs) {
30
+ try {
31
+ const result = await downloadDocument(client, doc.slug);
32
+ results.push(result);
33
+ if (!options.json) {
34
+ const status = result.cached ? 'cached' : 'downloaded';
35
+ console.log(` ${result.slug} v${result.version} — ${status}`);
36
+ }
37
+ }
38
+ catch (err) {
39
+ if (!options.json) {
40
+ const msg = err instanceof Error ? err.message : String(err);
41
+ console.error(` ${doc.slug} — failed: ${msg}`);
42
+ }
43
+ }
44
+ }
45
+ if (options.json) {
46
+ console.log(formatOutput({ data: results }, true));
47
+ return;
48
+ }
49
+ const downloaded = results.filter((r) => !r.cached).length;
50
+ const cached = results.filter((r) => r.cached).length;
51
+ console.log(`\nDone: ${downloaded} downloaded, ${cached} already cached.`);
52
+ }
53
+ catch (error) {
54
+ printError(error, options.json);
55
+ process.exitCode = 1;
56
+ }
57
+ }
58
+ export async function docsListCacheCommand(options) {
59
+ try {
60
+ const manifest = readManifest();
61
+ const entries = Object.entries(manifest);
62
+ if (options.json) {
63
+ console.log(formatOutput({ data: manifest }, true));
64
+ return;
65
+ }
66
+ if (entries.length === 0) {
67
+ console.log('No cached documents.');
68
+ return;
69
+ }
70
+ console.log(`Cached documents (${entries.length}):\n`);
71
+ console.log(formatTable(['Slug', 'Version', 'Size', 'Downloaded', 'Last Accessed'], entries.map(([slug, e]) => [
72
+ slug,
73
+ String(e.version),
74
+ formatBytes(e.size_bytes),
75
+ formatDate(e.downloaded_at),
76
+ formatDate(e.last_accessed),
77
+ ])));
78
+ }
79
+ catch (error) {
80
+ printError(error, options.json);
81
+ process.exitCode = 1;
82
+ }
83
+ }
84
+ export async function docsCleanCommand(options) {
85
+ try {
86
+ const client = await createClient(options.project);
87
+ const response = (await client.getDocuments());
88
+ const availableSlugs = response.data.map((d) => d.slug);
89
+ const { removed } = cleanupCache(availableSlugs);
90
+ if (options.json) {
91
+ console.log(formatOutput({ data: { removed } }, true));
92
+ return;
93
+ }
94
+ if (removed.length === 0) {
95
+ console.log('No stale documents to remove.');
96
+ }
97
+ else {
98
+ for (const slug of removed) {
99
+ console.log(` Removed: ${slug}`);
100
+ }
101
+ console.log(`\n${removed.length} stale document(s) removed.`);
102
+ }
103
+ }
104
+ catch (error) {
105
+ printError(error, options.json);
106
+ process.exitCode = 1;
107
+ }
108
+ }
109
+ function formatBytes(bytes) {
110
+ if (bytes < 1024)
111
+ return `${bytes} B`;
112
+ if (bytes < 1024 * 1024)
113
+ return `${(bytes / 1024).toFixed(1)} KB`;
114
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
115
+ }
116
+ function formatDate(iso) {
117
+ return iso.replace('T', ' ').replace(/\.\d+Z$/, '').replace(/Z$/, '');
118
+ }
119
+ //# sourceMappingURL=docs-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-cache.js","sourceRoot":"","sources":["../../src/commands/docs-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function docsCommand(options: {
2
+ json: boolean;
3
+ project?: string;
4
+ type?: string;
5
+ search?: string;
6
+ }): Promise<void>;
@@ -0,0 +1,35 @@
1
+ import { createClient } from '../api-client.js';
2
+ import { formatOutput, printError, formatTable } from '../output.js';
3
+ export async function docsCommand(options) {
4
+ try {
5
+ const client = await createClient(options.project);
6
+ const response = (await client.getDocuments({
7
+ type: options.type,
8
+ search: options.search,
9
+ }));
10
+ if (options.json) {
11
+ console.log(formatOutput(response, true));
12
+ return;
13
+ }
14
+ const docs = response.data;
15
+ if (docs.length === 0) {
16
+ console.log('No documents found.');
17
+ return;
18
+ }
19
+ console.log(`Documents (${response.meta.count}):\n`);
20
+ console.log(formatTable(['Title', 'Type', 'Slug', 'Ver', 'Sections', 'Shared', 'Context'], docs.map((d) => [
21
+ d.title,
22
+ d.type,
23
+ d.slug,
24
+ String(d.version),
25
+ d.sections_count !== undefined ? String(d.sections_count) : '',
26
+ d._shared ? 'yes' : '',
27
+ d.context ? (d.context.length > 60 ? d.context.slice(0, 57) + '...' : d.context) : '',
28
+ ])));
29
+ }
30
+ catch (error) {
31
+ printError(error, options.json);
32
+ process.exitCode = 1;
33
+ }
34
+ }
35
+ //# sourceMappingURL=docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/commands/docs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAoBrE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAKjC;IACC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC;YAC1C,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAiB,CAAC;QAEpB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAE3B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CACT,WAAW,CACT,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,EACjE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACd,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI;YACN,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YACjB,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE;YAC9D,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACtB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;SACtF,CAAC,CACH,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare function parsePrefix(id: string): {
2
+ type: string;
3
+ number: string;
4
+ } | null;
5
+ export declare function getCommand(prefixedId: string, options: {
6
+ json: boolean;
7
+ project?: string;
8
+ }): Promise<void>;
@@ -0,0 +1,102 @@
1
+ import { createClient } from '../api-client.js';
2
+ import { formatOutput, printError } from '../output.js';
3
+ import { printTaskDetail } from './task.js';
4
+ const PREFIX_MAP = {
5
+ TS: 'task',
6
+ IS: 'issue',
7
+ ID: 'idea',
8
+ VB: 'vibe',
9
+ };
10
+ export function parsePrefix(id) {
11
+ const match = id.match(/^([A-Z]{2})-([a-z0-9]{6})$/);
12
+ if (!match)
13
+ return null;
14
+ const type = PREFIX_MAP[match[1]];
15
+ if (!type)
16
+ return null;
17
+ return { type, number: match[2] };
18
+ }
19
+ export async function getCommand(prefixedId, options) {
20
+ const parsed = parsePrefix(prefixedId);
21
+ if (!parsed) {
22
+ const msg = `Invalid prefixed ID "${prefixedId}". Expected format: TS-xxxxxx, IS-xxxxxx, ID-xxxxxx, or VB-xxxxxx`;
23
+ if (options.json) {
24
+ console.error(JSON.stringify({ error: { message: msg } }));
25
+ }
26
+ else {
27
+ console.error(`Error: ${msg}`);
28
+ }
29
+ process.exitCode = 1;
30
+ return;
31
+ }
32
+ try {
33
+ const client = await createClient(options.project);
34
+ switch (parsed.type) {
35
+ case 'task': {
36
+ const response = await client.getTaskByNumber(parsed.number);
37
+ if (options.json) {
38
+ console.log(formatOutput(response, true));
39
+ }
40
+ else {
41
+ printTaskDetail(response);
42
+ }
43
+ break;
44
+ }
45
+ case 'issue': {
46
+ const response = await client.getIssueByNumber(parsed.number);
47
+ if (options.json) {
48
+ console.log(formatOutput(response, true));
49
+ }
50
+ else {
51
+ const issue = response.data;
52
+ const displayNum = issue.display_number ?? `IS-${issue.issue_number}`;
53
+ console.log(`Issue: ${issue.title} [${displayNum}]`);
54
+ console.log(`Severity: ${issue.severity} Status: ${issue.status}`);
55
+ if (issue.related_task_id)
56
+ console.log(`Related Task: ${issue.related_task_id}`);
57
+ if (issue.resolved_by_task_id)
58
+ console.log(`Resolved By Task: ${issue.resolved_by_task_id}`);
59
+ console.log(`\nDescription:\n${issue.description}`);
60
+ if (issue.resolution)
61
+ console.log(`\nResolution:\n${issue.resolution}`);
62
+ }
63
+ break;
64
+ }
65
+ case 'idea': {
66
+ const response = await client.getIdeaByNumber(parsed.number);
67
+ if (options.json) {
68
+ console.log(formatOutput(response, true));
69
+ }
70
+ else {
71
+ const idea = response.data;
72
+ const displayNum = idea.display_number ?? `ID-${idea.idea_number}`;
73
+ const titleLine = idea.title ? `Idea: ${idea.title} [${displayNum}]` : `Idea: ${displayNum}`;
74
+ console.log(titleLine);
75
+ console.log(`Priority: ${idea.priority ?? '-'} Status: ${idea.status}`);
76
+ if (idea.created_by)
77
+ console.log(`Author: ${idea.created_by.name}`);
78
+ console.log(`\nContent:\n${idea.content}`);
79
+ }
80
+ break;
81
+ }
82
+ case 'vibe': {
83
+ const response = await client.getVibe(parsed.number);
84
+ if (options.json) {
85
+ console.log(formatOutput(response, true));
86
+ }
87
+ else {
88
+ const vibe = response.data;
89
+ console.log(`Vibe: ${vibe.title ?? '(untitled)'} [VB-${parsed.number}]`);
90
+ console.log(`Type: ${vibe.type}`);
91
+ console.log(`\nContent:\n${vibe.content}`);
92
+ }
93
+ break;
94
+ }
95
+ }
96
+ }
97
+ catch (error) {
98
+ printError(error, options.json);
99
+ process.exitCode = 1;
100
+ }
101
+ }
102
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/commands/get.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export declare function ideaListCommand(options: {
2
+ json: boolean;
3
+ project?: string;
4
+ status?: string;
5
+ priority?: string;
6
+ limit?: string;
7
+ }): Promise<void>;
8
+ export declare function ideaShowCommand(idOrNumber: string, options: {
9
+ json: boolean;
10
+ project?: string;
11
+ }): Promise<void>;
12
+ export declare function ideaAddCommand(options: {
13
+ json: boolean;
14
+ project?: string;
15
+ content: string;
16
+ title?: string;
17
+ priority?: string;
18
+ }): Promise<void>;
19
+ export declare function ideaStatusCommand(idOrNumber: string, options: {
20
+ json: boolean;
21
+ project?: string;
22
+ status: string;
23
+ }): Promise<void>;
@@ -0,0 +1,155 @@
1
+ import { createClient } from '../api-client.js';
2
+ import { formatOutput, printError, printSuccess, formatTable } from '../output.js';
3
+ const VALID_IDEA_STATUSES = ['pending', 'accepted', 'used', 'rejected'];
4
+ const VALID_PRIORITIES = ['critical', 'high', 'medium', 'low'];
5
+ function isObjectNumber(id) {
6
+ return /^([A-Z]{2}-)?[a-z0-9]{6}$/.test(id);
7
+ }
8
+ function stripPrefix(id) {
9
+ return id.replace(/^[A-Z]{2}-/, '');
10
+ }
11
+ // ── Commands ──
12
+ export async function ideaListCommand(options) {
13
+ try {
14
+ const client = await createClient(options.project);
15
+ const response = (await client.listIdeas({
16
+ status: options.status,
17
+ priority: options.priority,
18
+ limit: options.limit,
19
+ }));
20
+ if (options.json) {
21
+ console.log(formatOutput(response, true));
22
+ return;
23
+ }
24
+ const ideas = response.data;
25
+ if (ideas.length === 0) {
26
+ console.log('No ideas found.');
27
+ return;
28
+ }
29
+ console.log(`Ideas (${response.meta.count}):\n`);
30
+ console.log(formatTable(['Number', 'Title / Content', 'Priority', 'Status', 'Created'], ideas.map((i) => [
31
+ i.display_number ?? `ID-${i.idea_number}`,
32
+ i.title ?? i.content.slice(0, 60) + (i.content.length > 60 ? '...' : ''),
33
+ i.priority ?? '-',
34
+ i.status,
35
+ i.created_at.replace('T', ' ').replace(/\+.*$/, ''),
36
+ ])));
37
+ }
38
+ catch (error) {
39
+ printError(error, options.json);
40
+ process.exitCode = 1;
41
+ }
42
+ }
43
+ export async function ideaShowCommand(idOrNumber, options) {
44
+ try {
45
+ const client = await createClient(options.project);
46
+ let response;
47
+ if (isObjectNumber(idOrNumber)) {
48
+ response = (await client.getIdeaByNumber(stripPrefix(idOrNumber)));
49
+ }
50
+ else {
51
+ response = (await client.getIdea(idOrNumber));
52
+ }
53
+ if (options.json) {
54
+ console.log(formatOutput(response, true));
55
+ return;
56
+ }
57
+ const idea = response.data;
58
+ const displayNum = idea.display_number ?? `ID-${idea.idea_number}`;
59
+ const titleLine = idea.title
60
+ ? `Idea: ${idea.title} [${displayNum}]`
61
+ : `Idea: ${displayNum}`;
62
+ console.log(titleLine);
63
+ console.log(`Priority: ${idea.priority ?? '-'} Status: ${idea.status}`);
64
+ if (idea.created_by)
65
+ console.log(`Author: ${idea.created_by.name}`);
66
+ console.log(`\nContent:\n${idea.content}`);
67
+ if (idea.metadata && Object.keys(idea.metadata).length > 0) {
68
+ console.log(`\nMetadata: ${JSON.stringify(idea.metadata)}`);
69
+ }
70
+ console.log(`\nCreated: ${idea.created_at.replace('T', ' ').replace(/\+.*$/, '')}`);
71
+ console.log(`Updated: ${idea.updated_at.replace('T', ' ').replace(/\+.*$/, '')}`);
72
+ }
73
+ catch (error) {
74
+ printError(error, options.json);
75
+ process.exitCode = 1;
76
+ }
77
+ }
78
+ export async function ideaAddCommand(options) {
79
+ if (!options.content) {
80
+ const msg = '--content is required';
81
+ if (options.json) {
82
+ console.error(JSON.stringify({ error: { message: msg } }));
83
+ }
84
+ else {
85
+ console.error(`Error: ${msg}`);
86
+ }
87
+ process.exitCode = 1;
88
+ return;
89
+ }
90
+ if (options.priority && !VALID_PRIORITIES.includes(options.priority)) {
91
+ const msg = `Invalid priority "${options.priority}". Valid: ${VALID_PRIORITIES.join(', ')}`;
92
+ if (options.json) {
93
+ console.error(JSON.stringify({ error: { message: msg } }));
94
+ }
95
+ else {
96
+ console.error(`Error: ${msg}`);
97
+ }
98
+ process.exitCode = 1;
99
+ return;
100
+ }
101
+ try {
102
+ const client = await createClient(options.project);
103
+ const response = (await client.createIdea({
104
+ content: options.content,
105
+ title: options.title,
106
+ priority: options.priority,
107
+ }));
108
+ if (options.json) {
109
+ console.log(formatOutput(response, true));
110
+ return;
111
+ }
112
+ printSuccess(`Created idea ${response.data.display_number ?? `ID-${response.data.idea_number}`} (${response.data.status}).`, false);
113
+ }
114
+ catch (error) {
115
+ printError(error, options.json);
116
+ process.exitCode = 1;
117
+ }
118
+ }
119
+ export async function ideaStatusCommand(idOrNumber, options) {
120
+ if (!VALID_IDEA_STATUSES.includes(options.status)) {
121
+ const msg = `Invalid idea status "${options.status}". Valid: ${VALID_IDEA_STATUSES.join(', ')}`;
122
+ if (options.json) {
123
+ console.error(JSON.stringify({ error: { message: msg } }));
124
+ }
125
+ else {
126
+ console.error(`Error: ${msg}`);
127
+ }
128
+ process.exitCode = 1;
129
+ return;
130
+ }
131
+ try {
132
+ const client = await createClient(options.project);
133
+ let response;
134
+ if (isObjectNumber(idOrNumber)) {
135
+ response = (await client.updateIdeaStatusByNumber(stripPrefix(idOrNumber), {
136
+ status: options.status,
137
+ }));
138
+ }
139
+ else {
140
+ response = (await client.updateIdeaStatus(idOrNumber, {
141
+ status: options.status,
142
+ }));
143
+ }
144
+ if (options.json) {
145
+ console.log(formatOutput(response, true));
146
+ return;
147
+ }
148
+ printSuccess(`Idea ${response.data.display_number ?? `ID-${response.data.idea_number}`} marked as ${response.data.status}.`, false);
149
+ }
150
+ catch (error) {
151
+ printError(error, options.json);
152
+ process.exitCode = 1;
153
+ }
154
+ }
155
+ //# sourceMappingURL=ideas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ideas.js","sourceRoot":"","sources":["../../src/commands/ideas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function initCommand(options?: {
2
+ advanced?: boolean;
3
+ key?: string;
4
+ token?: string;
5
+ project?: string;
6
+ profile?: string;
7
+ }): Promise<void>;