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,159 @@
1
+ import { createClient } from '../api-client.js';
2
+ import { formatOutput, printError, printSuccess, formatTable } from '../output.js';
3
+ // ── Types ──
4
+ const VALID_ITEM_TYPES = ['task', 'issue', 'vibe', 'document'];
5
+ // ── Commands ──
6
+ export async function orbitItemsCommand(orbitIdOrSlug, options) {
7
+ if (options.type && !VALID_ITEM_TYPES.includes(options.type)) {
8
+ const msg = `Invalid type "${options.type}". Valid: ${VALID_ITEM_TYPES.join(', ')}`;
9
+ if (options.json) {
10
+ console.error(JSON.stringify({ error: { message: msg } }));
11
+ }
12
+ else {
13
+ console.error(`Error: ${msg}`);
14
+ }
15
+ process.exitCode = 1;
16
+ return;
17
+ }
18
+ try {
19
+ const client = await createClient(options.project);
20
+ const response = (await client.getOrbitItems(orbitIdOrSlug, {
21
+ type: options.type,
22
+ }));
23
+ if (options.json) {
24
+ console.log(formatOutput(response, true));
25
+ return;
26
+ }
27
+ const { orbit, items, summary } = response.data;
28
+ // Orbit header
29
+ const counts = Object.entries(summary)
30
+ .filter(([, count]) => count > 0)
31
+ .map(([type, count]) => `${count} ${type}${count !== 1 ? 's' : ''}`)
32
+ .join(', ');
33
+ console.log(`Orbit: ${orbit.name} (${orbit.status})${counts ? ` — ${counts}` : ''}\n`);
34
+ if (items.length === 0) {
35
+ console.log('No items in this orbit.');
36
+ return;
37
+ }
38
+ // Group items by type
39
+ const grouped = new Map();
40
+ for (const item of items) {
41
+ const existing = grouped.get(item.item_type) ?? [];
42
+ existing.push(item.item);
43
+ grouped.set(item.item_type, existing);
44
+ }
45
+ // Display each group
46
+ if (grouped.has('task')) {
47
+ const tasks = grouped.get('task');
48
+ console.log(`Tasks (${tasks.length}):`);
49
+ console.log(formatTable(['ID', 'Number', 'Title', 'Status', 'Priority'], tasks.map((t) => [
50
+ String(t.id ?? ''),
51
+ String(t.display_number ?? t.task_number ?? ''),
52
+ String(t.title ?? ''),
53
+ String(t.status ?? ''),
54
+ String(t.priority ?? ''),
55
+ ])));
56
+ console.log();
57
+ }
58
+ if (grouped.has('issue')) {
59
+ const issues = grouped.get('issue');
60
+ console.log(`Issues (${issues.length}):`);
61
+ console.log(formatTable(['ID', 'Number', 'Title', 'Severity', 'Status'], issues.map((i) => [
62
+ String(i.id ?? ''),
63
+ String(i.display_number ?? i.issue_number ?? ''),
64
+ String(i.title ?? ''),
65
+ String(i.severity ?? ''),
66
+ String(i.status ?? ''),
67
+ ])));
68
+ console.log();
69
+ }
70
+ if (grouped.has('document')) {
71
+ const docs = grouped.get('document');
72
+ console.log(`Documents (${docs.length}):`);
73
+ console.log(formatTable(['ID', 'Slug', 'Title', 'Type'], docs.map((d) => [
74
+ String(d.id ?? ''),
75
+ String(d.slug ?? ''),
76
+ String(d.title ?? ''),
77
+ String(d.type ?? ''),
78
+ ])));
79
+ console.log();
80
+ }
81
+ if (grouped.has('vibe')) {
82
+ const vibes = grouped.get('vibe');
83
+ console.log(`Vibes (${vibes.length}):`);
84
+ console.log(formatTable(['ID', 'Type', 'Title', 'Created'], vibes.map((v) => [
85
+ String(v.id ?? ''),
86
+ String(v.type ?? ''),
87
+ String(v.title ?? ''),
88
+ String(v.created_at ?? '').replace('T', ' ').replace(/\+.*$/, ''),
89
+ ])));
90
+ console.log();
91
+ }
92
+ }
93
+ catch (error) {
94
+ printError(error, options.json);
95
+ process.exitCode = 1;
96
+ }
97
+ }
98
+ export async function orbitAttachCommand(orbitIdOrSlug, options) {
99
+ if (!VALID_ITEM_TYPES.includes(options.type)) {
100
+ const msg = `Invalid type "${options.type}". Valid: ${VALID_ITEM_TYPES.join(', ')}`;
101
+ if (options.json) {
102
+ console.error(JSON.stringify({ error: { message: msg } }));
103
+ }
104
+ else {
105
+ console.error(`Error: ${msg}`);
106
+ }
107
+ process.exitCode = 1;
108
+ return;
109
+ }
110
+ try {
111
+ const client = await createClient(options.project);
112
+ const response = (await client.orbitAttach(orbitIdOrSlug, {
113
+ item_type: options.type,
114
+ item_id: options.id,
115
+ note: options.note,
116
+ }));
117
+ if (options.json) {
118
+ console.log(formatOutput(response, true));
119
+ return;
120
+ }
121
+ const { orbit } = response.data;
122
+ printSuccess(`Attached ${options.type} ${options.id} to orbit '${orbit.name}'.`, false);
123
+ }
124
+ catch (error) {
125
+ printError(error, options.json);
126
+ process.exitCode = 1;
127
+ }
128
+ }
129
+ export async function orbitDetachCommand(orbitIdOrSlug, options) {
130
+ if (!VALID_ITEM_TYPES.includes(options.type)) {
131
+ const msg = `Invalid type "${options.type}". Valid: ${VALID_ITEM_TYPES.join(', ')}`;
132
+ if (options.json) {
133
+ console.error(JSON.stringify({ error: { message: msg } }));
134
+ }
135
+ else {
136
+ console.error(`Error: ${msg}`);
137
+ }
138
+ process.exitCode = 1;
139
+ return;
140
+ }
141
+ try {
142
+ const client = await createClient(options.project);
143
+ const response = (await client.orbitDetach(orbitIdOrSlug, {
144
+ item_type: options.type,
145
+ item_id: options.id,
146
+ }));
147
+ if (options.json) {
148
+ console.log(formatOutput(response, true));
149
+ return;
150
+ }
151
+ const { orbit } = response.data;
152
+ printSuccess(`Detached ${options.type} ${options.id} from orbit '${orbit.name}'.`, false);
153
+ }
154
+ catch (error) {
155
+ printError(error, options.json);
156
+ process.exitCode = 1;
157
+ }
158
+ }
159
+ //# sourceMappingURL=orbit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orbit.js","sourceRoot":"","sources":["../../src/commands/orbit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function overviewCommand(projectId: string | undefined, options: {
2
+ json: boolean;
3
+ project?: string;
4
+ }): Promise<void>;
@@ -0,0 +1,56 @@
1
+ import { createClient } from '../api-client.js';
2
+ import { resolveAuth } from '../config.js';
3
+ import { formatOutput, printError } from '../output.js';
4
+ const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
5
+ export async function overviewCommand(projectId, options) {
6
+ let resolvedProjectId = projectId || options.project;
7
+ if (!resolvedProjectId) {
8
+ const auth = await resolveAuth();
9
+ resolvedProjectId = auth.projectId;
10
+ }
11
+ if (!resolvedProjectId) {
12
+ console.error('Error: Project ID is required. Use: orbitmap overview <project-id> or configure a default project.');
13
+ process.exitCode = 1;
14
+ return;
15
+ }
16
+ try {
17
+ const client = await createClient(options.project);
18
+ // Resolve slug to UUID if needed
19
+ let projectUuid = resolvedProjectId;
20
+ if (!UUID_RE.test(resolvedProjectId)) {
21
+ const projects = (await client.getProjects());
22
+ const found = projects.data.find((p) => p.slug === resolvedProjectId);
23
+ if (!found) {
24
+ console.error(`Error: Project with slug "${resolvedProjectId}" not found.`);
25
+ process.exitCode = 1;
26
+ return;
27
+ }
28
+ projectUuid = found.id;
29
+ }
30
+ const response = (await client.getProjectOverview(projectUuid));
31
+ if (options.json) {
32
+ console.log(formatOutput(response, true));
33
+ return;
34
+ }
35
+ const { project, task_stats: stats } = response.data;
36
+ console.log(`Project: ${project.name}`);
37
+ if (project.description)
38
+ console.log(`Desc: ${project.description}`);
39
+ if (project.git_url)
40
+ console.log(`Git: ${project.git_url}`);
41
+ console.log(`Branch: ${project.default_branch}`);
42
+ console.log(`\nTask Statistics (${stats.total} total):`);
43
+ console.log(` Backlog: ${stats.backlog}`);
44
+ console.log(` Todo: ${stats.todo}`);
45
+ console.log(` In Progress: ${stats.in_progress}`);
46
+ console.log(` In Review: ${stats.in_review}`);
47
+ console.log(` Review Changes: ${stats.review_changes}`);
48
+ console.log(` Done: ${stats.done}`);
49
+ console.log(` Blocked: ${stats.blocked}`);
50
+ }
51
+ catch (error) {
52
+ printError(error, options.json);
53
+ process.exitCode = 1;
54
+ }
55
+ }
56
+ //# sourceMappingURL=overview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overview.js","sourceRoot":"","sources":["../../src/commands/overview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function projectsCommand(options: {
2
+ json: boolean;
3
+ }): Promise<void>;
@@ -0,0 +1,28 @@
1
+ import { createClient } from '../api-client.js';
2
+ import { formatOutput, printError, formatTable } from '../output.js';
3
+ export async function projectsCommand(options) {
4
+ try {
5
+ const client = await createClient();
6
+ const response = (await client.getProjects());
7
+ if (options.json) {
8
+ console.log(formatOutput(response, true));
9
+ return;
10
+ }
11
+ const projects = response.data;
12
+ if (projects.length === 0) {
13
+ console.log('No projects found.');
14
+ return;
15
+ }
16
+ console.log(formatTable(['Name', 'Slug', 'Role', 'Current'], projects.map((p) => [
17
+ p.name,
18
+ p.slug,
19
+ p.role,
20
+ p._current ? '*' : '',
21
+ ])));
22
+ }
23
+ catch (error) {
24
+ printError(error, options.json);
25
+ process.exitCode = 1;
26
+ }
27
+ }
28
+ //# sourceMappingURL=projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/commands/projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAcrE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAErC;IACC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,CAAqB,CAAC;QAElE,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,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;QAE/B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CACT,WAAW,CACT,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EACnC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAClB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;SACtB,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,3 @@
1
+ export declare function setupAgentCommand(options: {
2
+ agent?: string;
3
+ }): Promise<void>;
@@ -0,0 +1,178 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import readline from 'node:readline';
4
+ const MARKER_START = '<!-- ORBITMAP_START -->';
5
+ const MARKER_END = '<!-- ORBITMAP_END -->';
6
+ const AGENTS = {
7
+ claude: { label: 'Claude Code', file: 'CLAUDE.md' },
8
+ gemini: { label: 'Gemini CLI', file: 'GEMINI.md' },
9
+ codex: { label: 'GPT Codex CLI', file: 'AGENTS.md' },
10
+ cursor: { label: 'Cursor', file: '.cursorrules' },
11
+ windsurf: { label: 'Windsurf', file: '.windsurfrules' },
12
+ generic: { label: 'Other / Generic', file: 'AGENTS.md' },
13
+ };
14
+ const MENU_ORDER = ['claude', 'gemini', 'codex', 'cursor', 'windsurf', 'generic'];
15
+ // --- Instruction template (same for all agent types) ---
16
+ const INSTRUCTIONS_TEMPLATE = `## OrbitMap Integration
17
+
18
+ This project uses OrbitMap for task management via CLI.
19
+ Run \`npx orbitmap --help\` to see all available commands and options.
20
+
21
+ ### Key Commands
22
+ - \`npx orbitmap tasks\` — list your assigned tasks
23
+ - \`npx orbitmap task <id>\` — view full task context
24
+ - \`npx orbitmap start\` — start next todo task
25
+ - \`npx orbitmap status <task-id> <status>\` — update task status
26
+ - \`npx orbitmap status <task-id> done --delivery on_branch\` — mark done with delivery status
27
+ - \`npx orbitmap assign <task-id> <agent-id>\` — assign task to agent
28
+ - \`npx orbitmap assign <task-id> --user-id <id>\` — assign task to user
29
+ - \`npx orbitmap log <task-id> "message" --type <type>\` — log work
30
+ - \`npx orbitmap docs\` — list project documents
31
+ - \`npx orbitmap doc <slug>\` — read a document
32
+ - \`npx orbitmap members <project-id>\` — list agents and users in project
33
+
34
+ ### Workflow
35
+ 1. Check for in-progress work: \`npx orbitmap tasks --status in_progress\`
36
+ 2. Resume or start next: \`npx orbitmap start\`
37
+ 3. Read agent_instructions from the task before implementing
38
+ 4. If the task has a branch_name, switch to it
39
+ 5. Log work as you go: \`npx orbitmap log <id> "what you did" --type code_change\`
40
+ 6. When done: log summary, then \`npx orbitmap status <id> done\`
41
+ 7. If session ends early: \`npx orbitmap log <id> "Resume point: ..." --type note\`
42
+
43
+ ### Delivery Flow
44
+ - Default to \`in_review\` when finishing a task — let a human verify before closing.
45
+ - When marking a task \`done\` or \`in_review\` after committing code, set delivery status:
46
+ \`npx orbitmap status <id> done --delivery on_branch\`
47
+ - Commit messages MUST include the task number: \`[OM-{task_number}] description\`
48
+ Example: \`[OM-r5d8zf] Add delivery status field\`
49
+ - When asked what's in a branch/PR, scan commits: \`git log target..source --oneline\`,
50
+ parse \`[OM-xxxxx]\` tags, and report matched tasks.
51
+ - When the user informs you about a merge or release, update delivery status:
52
+ \`npx orbitmap status <id> done --delivery merged\`
53
+ \`npx orbitmap status <id> done --delivery released\`
54
+
55
+ ### Rules
56
+ - One task at a time. Read agent_instructions first.
57
+ - Only work on subtasks assigned to you.
58
+ - Always log before marking done or ending session.
59
+ - Don't retry failed OrbitMap commands in a loop.`;
60
+ // --- Helpers ---
61
+ function prompt(question) {
62
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
63
+ return new Promise((resolve) => {
64
+ rl.question(question, (answer) => {
65
+ rl.close();
66
+ resolve(answer.trim());
67
+ });
68
+ });
69
+ }
70
+ function detectAgent() {
71
+ const cwd = process.cwd();
72
+ // Check for config files
73
+ if (fs.existsSync(path.join(cwd, 'CLAUDE.md')))
74
+ return 'claude';
75
+ if (fs.existsSync(path.join(cwd, 'GEMINI.md')))
76
+ return 'gemini';
77
+ if (fs.existsSync(path.join(cwd, '.cursorrules')))
78
+ return 'cursor';
79
+ if (fs.existsSync(path.join(cwd, '.windsurfrules')))
80
+ return 'windsurf';
81
+ // Check for directories
82
+ if (fs.existsSync(path.join(cwd, '.claude')))
83
+ return 'claude';
84
+ if (fs.existsSync(path.join(cwd, '.gemini')))
85
+ return 'gemini';
86
+ if (fs.existsSync(path.join(cwd, '.cursor')))
87
+ return 'cursor';
88
+ if (fs.existsSync(path.join(cwd, '.windsurf')))
89
+ return 'windsurf';
90
+ return null;
91
+ }
92
+ async function pickAgent() {
93
+ console.log('\nWhich agent are you using?');
94
+ for (let i = 0; i < MENU_ORDER.length; i++) {
95
+ const agent = MENU_ORDER[i];
96
+ console.log(` ${i + 1}) ${AGENTS[agent].label}`);
97
+ }
98
+ while (true) {
99
+ const answer = await prompt(`Select (1-${MENU_ORDER.length}): `);
100
+ const num = parseInt(answer, 10);
101
+ if (num >= 1 && num <= MENU_ORDER.length) {
102
+ return MENU_ORDER[num - 1];
103
+ }
104
+ console.log(`Please enter a number between 1 and ${MENU_ORDER.length}.`);
105
+ }
106
+ }
107
+ function buildBlock() {
108
+ return `${MARKER_START}\n${INSTRUCTIONS_TEMPLATE}\n${MARKER_END}`;
109
+ }
110
+ function writeInstructions(filePath) {
111
+ const block = buildBlock();
112
+ if (fs.existsSync(filePath)) {
113
+ const content = fs.readFileSync(filePath, 'utf-8');
114
+ const startIdx = content.indexOf(MARKER_START);
115
+ const endIdx = content.indexOf(MARKER_END);
116
+ if (startIdx !== -1 && endIdx !== -1) {
117
+ // Replace between markers
118
+ const before = content.slice(0, startIdx);
119
+ const after = content.slice(endIdx + MARKER_END.length);
120
+ fs.writeFileSync(filePath, before + block + after, 'utf-8');
121
+ return { action: 'updated' };
122
+ }
123
+ else {
124
+ // Append to file
125
+ const separator = content.endsWith('\n') ? '\n' : '\n\n';
126
+ fs.writeFileSync(filePath, content + separator + block + '\n', 'utf-8');
127
+ return { action: 'appended' };
128
+ }
129
+ }
130
+ else {
131
+ // Create new file
132
+ fs.writeFileSync(filePath, block + '\n', 'utf-8');
133
+ return { action: 'created' };
134
+ }
135
+ }
136
+ // --- Main command ---
137
+ export async function setupAgentCommand(options) {
138
+ let agentType;
139
+ if (options.agent) {
140
+ const key = options.agent.toLowerCase();
141
+ if (!(key in AGENTS)) {
142
+ console.error(`Error: Unknown agent type "${options.agent}". Valid types: ${Object.keys(AGENTS).join(', ')}`);
143
+ process.exitCode = 1;
144
+ return;
145
+ }
146
+ agentType = key;
147
+ }
148
+ else {
149
+ const detected = detectAgent();
150
+ if (detected) {
151
+ const answer = await prompt(`Detected ${AGENTS[detected].label}. Use this? (Y/n): `);
152
+ if (answer.toLowerCase() === 'n') {
153
+ agentType = await pickAgent();
154
+ }
155
+ else {
156
+ agentType = detected;
157
+ }
158
+ }
159
+ else {
160
+ agentType = await pickAgent();
161
+ }
162
+ }
163
+ const def = AGENTS[agentType];
164
+ const filePath = path.join(process.cwd(), def.file);
165
+ const { action } = writeInstructions(filePath);
166
+ switch (action) {
167
+ case 'created':
168
+ console.log(`Created ${def.file} with OrbitMap instructions.`);
169
+ break;
170
+ case 'updated':
171
+ console.log(`Updated OrbitMap instructions in ${def.file}.`);
172
+ break;
173
+ case 'appended':
174
+ console.log(`Appended OrbitMap instructions to ${def.file}.`);
175
+ break;
176
+ }
177
+ }
178
+ //# sourceMappingURL=setup-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-agent.js","sourceRoot":"","sources":["../../src/commands/setup-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function startCommand(taskId: string | undefined, options: {
2
+ json: boolean;
3
+ project?: string;
4
+ }): Promise<void>;
@@ -0,0 +1,38 @@
1
+ import { createClient } from '../api-client.js';
2
+ import { formatOutput, printError } from '../output.js';
3
+ import { printTaskDetail } from './task.js';
4
+ import { cleanupCache } from '../doc-cache.js';
5
+ export async function startCommand(taskId, options) {
6
+ try {
7
+ const client = await createClient(options.project);
8
+ const response = (await client.startTask(taskId));
9
+ if (options.json) {
10
+ console.log(formatOutput(response, true));
11
+ return;
12
+ }
13
+ if (response.data === null) {
14
+ console.log(response.meta?.message ?? 'No todo tasks available.');
15
+ return;
16
+ }
17
+ console.log('Task started!\n');
18
+ printTaskDetail({ data: response.data });
19
+ // Auto-cleanup cached docs silently
20
+ try {
21
+ const slugs = [
22
+ ...(response.data.available_docs ?? []).map((d) => d.slug),
23
+ ...(response.data.workspace_knowledge ?? []).map((d) => d.slug),
24
+ ];
25
+ if (slugs.length > 0) {
26
+ cleanupCache(slugs);
27
+ }
28
+ }
29
+ catch {
30
+ // Don't block task start on cache errors
31
+ }
32
+ }
33
+ catch (error) {
34
+ printError(error, options.json);
35
+ process.exitCode = 1;
36
+ }
37
+ }
38
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAY/C,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAA0B,EAC1B,OAA4C;IAE5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAkB,CAAC;QAEnE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,0BAA0B,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAsD,CAAC,CAAC;QAE7F,oCAAoC;QACpC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG;gBACZ,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC1D,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAChE,CAAC;YACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;IACH,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,5 @@
1
+ export declare function statusCommand(taskId: string, status: string, options: {
2
+ json: boolean;
3
+ project?: string;
4
+ delivery?: string;
5
+ }): Promise<void>;
@@ -0,0 +1,54 @@
1
+ import { createClient } from '../api-client.js';
2
+ import { formatOutput, printError, printSuccess } from '../output.js';
3
+ const VALID_STATUSES = [
4
+ 'backlog',
5
+ 'todo',
6
+ 'in_progress',
7
+ 'in_review',
8
+ 'review_changes',
9
+ 'done',
10
+ 'blocked',
11
+ ];
12
+ const VALID_DELIVERY_STATUSES = ['on_branch', 'merged', 'released'];
13
+ export async function statusCommand(taskId, status, options) {
14
+ if (!VALID_STATUSES.includes(status)) {
15
+ const msg = `Invalid status "${status}". Valid: ${VALID_STATUSES.join(', ')}`;
16
+ if (options.json) {
17
+ console.error(JSON.stringify({ error: { message: msg } }));
18
+ }
19
+ else {
20
+ console.error(`Error: ${msg}`);
21
+ }
22
+ process.exitCode = 1;
23
+ return;
24
+ }
25
+ if (options.delivery && !VALID_DELIVERY_STATUSES.includes(options.delivery)) {
26
+ const msg = `Invalid delivery status "${options.delivery}". Valid: ${VALID_DELIVERY_STATUSES.join(', ')}`;
27
+ if (options.json) {
28
+ console.error(JSON.stringify({ error: { message: msg } }));
29
+ }
30
+ else {
31
+ console.error(`Error: ${msg}`);
32
+ }
33
+ process.exitCode = 1;
34
+ return;
35
+ }
36
+ try {
37
+ const client = await createClient(options.project);
38
+ const response = (await client.updateTaskStatus(taskId, status, options.delivery));
39
+ if (options.json) {
40
+ console.log(formatOutput(response, true));
41
+ return;
42
+ }
43
+ let msg = `Status updated to "${response.data.status}".`;
44
+ if (response.data.delivery_status) {
45
+ msg += ` Delivery: ${response.data.delivery_status}.`;
46
+ }
47
+ printSuccess(msg, false);
48
+ }
49
+ catch (error) {
50
+ printError(error, options.json);
51
+ process.exitCode = 1;
52
+ }
53
+ }
54
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEtE,MAAM,cAAc,GAAG;IACrB,SAAS;IACT,MAAM;IACN,aAAa;IACb,WAAW;IACX,gBAAgB;IAChB,MAAM;IACN,SAAS;CACV,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAWpE,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAc,EACd,MAAc,EACd,OAA+D;IAE/D,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,mBAAmB,MAAM,aAAa,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9E,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5E,MAAM,GAAG,GAAG,4BAA4B,OAAO,CAAC,QAAQ,aAAa,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1G,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAC7C,MAAM,EACN,MAAM,EACN,OAAO,CAAC,QAAQ,CACjB,CAAmB,CAAC;QAErB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,IAAI,GAAG,GAAG,sBAAsB,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC;QACzD,IAAI,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAClC,GAAG,IAAI,cAAc,QAAQ,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC;QACxD,CAAC;QACD,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3B,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,7 @@
1
+ export declare function subtaskCommand(parentId: string, title: string, options: {
2
+ json: boolean;
3
+ project?: string;
4
+ desc?: string;
5
+ priority?: string;
6
+ effort?: string;
7
+ }): Promise<void>;
@@ -0,0 +1,26 @@
1
+ import { createClient } from '../api-client.js';
2
+ import { formatOutput, printError, printSuccess } from '../output.js';
3
+ export async function subtaskCommand(parentId, title, options) {
4
+ try {
5
+ const client = await createClient(options.project);
6
+ const response = (await client.createSubtasks(parentId, [
7
+ {
8
+ title,
9
+ description: options.desc,
10
+ priority: options.priority,
11
+ estimated_effort: options.effort,
12
+ },
13
+ ]));
14
+ if (options.json) {
15
+ console.log(formatOutput(response, true));
16
+ return;
17
+ }
18
+ const created = response.data.created_subtasks;
19
+ printSuccess(`Subtask created: ${created[0].title} (${created[0].status})`, false);
20
+ }
21
+ catch (error) {
22
+ printError(error, options.json);
23
+ process.exitCode = 1;
24
+ }
25
+ }
26
+ //# sourceMappingURL=subtask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subtask.js","sourceRoot":"","sources":["../../src/commands/subtask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAetE,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,KAAa,EACb,OAMC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE;YACtD;gBACE,KAAK;gBACL,WAAW,EAAE,OAAO,CAAC,IAAI;gBACzB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,gBAAgB,EAAE,OAAO,CAAC,MAAM;aACjC;SACF,CAAC,CAAoB,CAAC;QAEvB,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,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC/C,YAAY,CAAC,oBAAoB,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAE,CAAC,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC;IACvF,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,7 @@
1
+ export declare function taskEditContentCommand(taskId: string, options: {
2
+ json: boolean;
3
+ project?: string;
4
+ title?: string;
5
+ description?: string;
6
+ agentInstructions?: string;
7
+ }): Promise<void>;