orbitmap 0.3.0 → 0.4.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 (174) hide show
  1. package/README.md +546 -212
  2. package/dist/adapters/cloud.d.ts +367 -0
  3. package/dist/adapters/cloud.js +582 -0
  4. package/dist/adapters/cloud.js.map +1 -0
  5. package/dist/adapters/factory.d.ts +15 -0
  6. package/dist/adapters/factory.js +31 -0
  7. package/dist/adapters/factory.js.map +1 -0
  8. package/dist/adapters/local/adapter.d.ts +351 -0
  9. package/dist/adapters/local/adapter.js +346 -0
  10. package/dist/adapters/local/adapter.js.map +1 -0
  11. package/dist/adapters/local/context.d.ts +112 -0
  12. package/dist/adapters/local/context.js +137 -0
  13. package/dist/adapters/local/context.js.map +1 -0
  14. package/dist/adapters/local/entities/documents.d.ts +85 -0
  15. package/dist/adapters/local/entities/documents.js +251 -0
  16. package/dist/adapters/local/entities/documents.js.map +1 -0
  17. package/dist/adapters/local/entities/planning.d.ts +108 -0
  18. package/dist/adapters/local/entities/planning.js +540 -0
  19. package/dist/adapters/local/entities/planning.js.map +1 -0
  20. package/dist/adapters/local/entities/tasks.d.ts +95 -0
  21. package/dist/adapters/local/entities/tasks.js +442 -0
  22. package/dist/adapters/local/entities/tasks.js.map +1 -0
  23. package/dist/adapters/local/entities/work-items.d.ts +110 -0
  24. package/dist/adapters/local/entities/work-items.js +623 -0
  25. package/dist/adapters/local/entities/work-items.js.map +1 -0
  26. package/dist/adapters/local/rules.d.ts +172 -0
  27. package/dist/adapters/local/rules.js +319 -0
  28. package/dist/adapters/local/rules.js.map +1 -0
  29. package/dist/adapters/local/shapes.d.ts +209 -0
  30. package/dist/adapters/local/shapes.js +558 -0
  31. package/dist/adapters/local/shapes.js.map +1 -0
  32. package/dist/adapters/local/store.d.ts +200 -0
  33. package/dist/adapters/local/store.js +665 -0
  34. package/dist/adapters/local/store.js.map +1 -0
  35. package/dist/adapters/local/types.d.ts +226 -0
  36. package/dist/adapters/local/types.js +41 -0
  37. package/dist/adapters/local/types.js.map +1 -0
  38. package/dist/adapters/types.d.ts +332 -0
  39. package/dist/adapters/types.js +2 -0
  40. package/dist/adapters/types.js.map +1 -0
  41. package/dist/agent-instructions.d.ts +25 -9
  42. package/dist/agent-instructions.js +285 -237
  43. package/dist/agent-instructions.js.map +1 -1
  44. package/dist/api-client.d.ts +8 -239
  45. package/dist/api-client.js +8 -403
  46. package/dist/api-client.js.map +1 -1
  47. package/dist/commands/agents.d.ts +1 -1
  48. package/dist/commands/agents.js +10 -10
  49. package/dist/commands/agents.js.map +1 -1
  50. package/dist/commands/areas.d.ts +3 -0
  51. package/dist/commands/areas.js +29 -0
  52. package/dist/commands/areas.js.map +1 -0
  53. package/dist/commands/assign.d.ts +3 -2
  54. package/dist/commands/assign.js +52 -15
  55. package/dist/commands/assign.js.map +1 -1
  56. package/dist/commands/context.d.ts +1 -1
  57. package/dist/commands/context.js +18 -12
  58. package/dist/commands/context.js.map +1 -1
  59. package/dist/commands/create-area.d.ts +7 -0
  60. package/dist/commands/create-area.js +29 -0
  61. package/dist/commands/create-area.js.map +1 -0
  62. package/dist/commands/create.d.ts +3 -1
  63. package/dist/commands/create.js +5 -8
  64. package/dist/commands/create.js.map +1 -1
  65. package/dist/commands/dep.d.ts +2 -2
  66. package/dist/commands/dep.js +3 -3
  67. package/dist/commands/dep.js.map +1 -1
  68. package/dist/commands/doc-import.d.ts +1 -1
  69. package/dist/commands/doc-import.js +2 -2
  70. package/dist/commands/doc-import.js.map +1 -1
  71. package/dist/commands/doc-patch.d.ts +1 -1
  72. package/dist/commands/doc-patch.js +2 -2
  73. package/dist/commands/doc-patch.js.map +1 -1
  74. package/dist/commands/doc-share.d.ts +6 -6
  75. package/dist/commands/doc-share.js +13 -13
  76. package/dist/commands/doc-share.js.map +1 -1
  77. package/dist/commands/doc-update.d.ts +1 -1
  78. package/dist/commands/doc-update.js +2 -2
  79. package/dist/commands/doc-update.js.map +1 -1
  80. package/dist/commands/doc.d.ts +1 -1
  81. package/dist/commands/doc.js +5 -4
  82. package/dist/commands/doc.js.map +1 -1
  83. package/dist/commands/docs-cache.d.ts +2 -2
  84. package/dist/commands/docs-cache.js +3 -3
  85. package/dist/commands/docs-cache.js.map +1 -1
  86. package/dist/commands/docs.d.ts +1 -1
  87. package/dist/commands/docs.js +2 -2
  88. package/dist/commands/docs.js.map +1 -1
  89. package/dist/commands/get.d.ts +1 -1
  90. package/dist/commands/get.js +43 -3
  91. package/dist/commands/get.js.map +1 -1
  92. package/dist/commands/ideas.d.ts +4 -4
  93. package/dist/commands/ideas.js +6 -11
  94. package/dist/commands/ideas.js.map +1 -1
  95. package/dist/commands/init.d.ts +45 -3
  96. package/dist/commands/init.js +452 -104
  97. package/dist/commands/init.js.map +1 -1
  98. package/dist/commands/intent.d.ts +41 -0
  99. package/dist/commands/intent.js +237 -0
  100. package/dist/commands/intent.js.map +1 -0
  101. package/dist/commands/issues.d.ts +6 -5
  102. package/dist/commands/issues.js +8 -12
  103. package/dist/commands/issues.js.map +1 -1
  104. package/dist/commands/log.d.ts +1 -1
  105. package/dist/commands/log.js +2 -2
  106. package/dist/commands/log.js.map +1 -1
  107. package/dist/commands/mission.d.ts +42 -0
  108. package/dist/commands/mission.js +219 -0
  109. package/dist/commands/mission.js.map +1 -0
  110. package/dist/commands/orbit.d.ts +40 -3
  111. package/dist/commands/orbit.js +231 -58
  112. package/dist/commands/orbit.js.map +1 -1
  113. package/dist/commands/overview.d.ts +2 -2
  114. package/dist/commands/overview.js +25 -28
  115. package/dist/commands/overview.js.map +1 -1
  116. package/dist/commands/setup-agent.d.ts +27 -0
  117. package/dist/commands/setup-agent.js +85 -30
  118. package/dist/commands/setup-agent.js.map +1 -1
  119. package/dist/commands/setup-mcp.d.ts +1 -1
  120. package/dist/commands/setup-mcp.js +20 -49
  121. package/dist/commands/setup-mcp.js.map +1 -1
  122. package/dist/commands/start.d.ts +1 -1
  123. package/dist/commands/start.js +2 -2
  124. package/dist/commands/start.js.map +1 -1
  125. package/dist/commands/status.d.ts +2 -1
  126. package/dist/commands/status.js +3 -3
  127. package/dist/commands/status.js.map +1 -1
  128. package/dist/commands/subtask.d.ts +1 -1
  129. package/dist/commands/subtask.js +2 -2
  130. package/dist/commands/subtask.js.map +1 -1
  131. package/dist/commands/task-edit-content.d.ts +1 -1
  132. package/dist/commands/task-edit-content.js +2 -2
  133. package/dist/commands/task-edit-content.js.map +1 -1
  134. package/dist/commands/task.d.ts +10 -3
  135. package/dist/commands/task.js +19 -21
  136. package/dist/commands/task.js.map +1 -1
  137. package/dist/commands/tasks.d.ts +1 -1
  138. package/dist/commands/tasks.js +2 -2
  139. package/dist/commands/tasks.js.map +1 -1
  140. package/dist/commands/vibes.d.ts +4 -4
  141. package/dist/commands/vibes.js +5 -5
  142. package/dist/commands/vibes.js.map +1 -1
  143. package/dist/config.d.ts +69 -9
  144. package/dist/config.js +206 -23
  145. package/dist/config.js.map +1 -1
  146. package/dist/doc-cache.d.ts +23 -3
  147. package/dist/doc-cache.js +72 -12
  148. package/dist/doc-cache.js.map +1 -1
  149. package/dist/errors.d.ts +19 -2
  150. package/dist/errors.js +35 -0
  151. package/dist/errors.js.map +1 -1
  152. package/dist/id-resolve.d.ts +61 -0
  153. package/dist/id-resolve.js +87 -0
  154. package/dist/id-resolve.js.map +1 -0
  155. package/dist/index.js +477 -104
  156. package/dist/index.js.map +1 -1
  157. package/dist/mcp-config.d.ts +36 -0
  158. package/dist/mcp-config.js +51 -0
  159. package/dist/mcp-config.js.map +1 -0
  160. package/dist/oauth.d.ts +8 -0
  161. package/dist/oauth.js +54 -15
  162. package/dist/oauth.js.map +1 -1
  163. package/dist/output.js +7 -2
  164. package/dist/output.js.map +1 -1
  165. package/dist/paths.d.ts +97 -0
  166. package/dist/paths.js +178 -0
  167. package/dist/paths.js.map +1 -0
  168. package/dist/project-config.d.ts +75 -0
  169. package/dist/project-config.js +55 -0
  170. package/dist/project-config.js.map +1 -0
  171. package/dist/workspace-resolve.d.ts +158 -0
  172. package/dist/workspace-resolve.js +284 -0
  173. package/dist/workspace-resolve.js.map +1 -0
  174. package/package.json +53 -50
@@ -0,0 +1,582 @@
1
+ import { createReadStream, statSync } from 'node:fs';
2
+ import { basename, extname } from 'node:path';
3
+ import { OrbitMapAPIError } from '../errors.js';
4
+ import { loadConfig, resolveAuth, DEFAULT_API_URL } from '../config.js';
5
+ import { resolveArea } from '../workspace-resolve.js';
6
+ import { isObjectNumber, resolveTaskRef, stripPrefix } from '../id-resolve.js';
7
+ export class CloudAdapter {
8
+ apiKey;
9
+ baseUrl;
10
+ area;
11
+ /**
12
+ * Task reference → uuid, for the lifetime of this adapter. A command that touches the same
13
+ * task twice (`dep add TS-a TS-b` resolves two, `status` then reads back) pays for one
14
+ * `/tasks/by-number/{n}` lookup per distinct reference, not per call site.
15
+ */
16
+ taskIdCache = new Map();
17
+ constructor(apiKey, area, apiUrl) {
18
+ this.apiKey = apiKey;
19
+ this.area = area;
20
+ this.baseUrl = (apiUrl ?? DEFAULT_API_URL).replace(/\/$/, '');
21
+ }
22
+ async request(method, path, options) {
23
+ const url = new URL(`${this.baseUrl}${path}`);
24
+ if (options?.params) {
25
+ for (const [key, value] of Object.entries(options.params)) {
26
+ if (value !== undefined) {
27
+ url.searchParams.set(key, value);
28
+ }
29
+ }
30
+ }
31
+ const headers = {
32
+ Authorization: `Bearer ${this.apiKey}`,
33
+ Accept: 'application/json',
34
+ };
35
+ if (this.area) {
36
+ headers['X-Orbitmap-Area'] = this.area;
37
+ }
38
+ if (options?.body !== undefined) {
39
+ headers['Content-Type'] = 'application/json';
40
+ }
41
+ const controller = new AbortController();
42
+ const timeout = setTimeout(() => controller.abort(), 30_000);
43
+ try {
44
+ const response = await fetch(url.toString(), {
45
+ method,
46
+ headers,
47
+ body: options?.body !== undefined ? JSON.stringify(options.body) : undefined,
48
+ signal: controller.signal,
49
+ });
50
+ // Handle 204 No Content — no body to parse
51
+ if (response.status === 204) {
52
+ return undefined;
53
+ }
54
+ const text = await response.text();
55
+ let json;
56
+ try {
57
+ json = JSON.parse(text);
58
+ }
59
+ catch {
60
+ if (!response.ok) {
61
+ throw new OrbitMapAPIError(`HTTP ${response.status}: ${text}`, 'HTTP_ERROR', response.status);
62
+ }
63
+ throw new OrbitMapAPIError('Invalid JSON response from API', 'PARSE_ERROR', response.status);
64
+ }
65
+ if (!response.ok) {
66
+ if (OrbitMapAPIError.isApiErrorBody(json)) {
67
+ throw OrbitMapAPIError.fromResponse(json);
68
+ }
69
+ // Billing/usage-limit rejections (402, 429) use a flat shape where
70
+ // `error` is a string — dispatch on the type of `error`, not status.
71
+ if (OrbitMapAPIError.isFlatApiErrorBody(json)) {
72
+ throw OrbitMapAPIError.fromFlatResponse(json, response.status);
73
+ }
74
+ throw new OrbitMapAPIError(`HTTP ${response.status}`, 'HTTP_ERROR', response.status);
75
+ }
76
+ return json;
77
+ }
78
+ catch (error) {
79
+ if (error instanceof OrbitMapAPIError)
80
+ throw error;
81
+ if (error instanceof DOMException && error.name === 'AbortError') {
82
+ throw new OrbitMapAPIError('Request timed out after 30s', 'TIMEOUT', 0);
83
+ }
84
+ throw error;
85
+ }
86
+ finally {
87
+ clearTimeout(timeout);
88
+ }
89
+ }
90
+ // ── Context ──
91
+ async getContext(areaId) {
92
+ return this.request('GET', '/context', {
93
+ params: { area_id: areaId },
94
+ });
95
+ }
96
+ /**
97
+ * The area this client was constructed with (`--area` → `ORBITMAP_AREA` →
98
+ * `.orbitmap/link.json` → nearest project `.orbitmap/config.json` that sets `area` →
99
+ * global config `area` (deprecated) — the one ladder, `resolveArea` in
100
+ * `workspace-resolve.ts`, applied by `createClient`). No request is made.
101
+ */
102
+ async getDefaultArea() {
103
+ return this.area;
104
+ }
105
+ // ── Tasks ──
106
+ async getTasks(options) {
107
+ return this.request('GET', '/tasks', {
108
+ params: {
109
+ status: options?.status,
110
+ priority: options?.priority,
111
+ area_id: options?.areaId,
112
+ orbit_id: options?.orbit,
113
+ },
114
+ });
115
+ }
116
+ /**
117
+ * Resolve any task reference — uuid, `TS-uw9yh5` or the bare code — to the uuid the task
118
+ * endpoints require. A uuid costs no extra request; see `id-resolve.ts` for why tasks need
119
+ * this at all when every other entity resolves its prefix server-side.
120
+ */
121
+ taskId(ref) {
122
+ const trimmed = ref.trim();
123
+ if (!isObjectNumber(trimmed))
124
+ return Promise.resolve(trimmed);
125
+ const cached = this.taskIdCache.get(trimmed);
126
+ if (cached)
127
+ return cached;
128
+ // The *promise* is cached, not the resolved value, so callers that resolve two references
129
+ // concurrently (`dep add TS-a TS-a`) share one in-flight lookup instead of racing past an
130
+ // entry that is only written after the await.
131
+ const pending = resolveTaskRef(trimmed, this);
132
+ this.taskIdCache.set(trimmed, pending);
133
+ // A failed lookup must not be cached: the next command run should retry, not replay the
134
+ // rejection for the lifetime of this adapter.
135
+ pending.catch(() => this.taskIdCache.delete(trimmed));
136
+ return pending;
137
+ }
138
+ async getTask(taskId) {
139
+ // A by-number reference is answered by the by-number endpoint directly: resolving to a
140
+ // uuid first and then fetching would be two requests for the same body.
141
+ const trimmed = taskId.trim();
142
+ if (isObjectNumber(trimmed))
143
+ return this.getTaskByNumber(stripPrefix(trimmed));
144
+ return this.request('GET', `/tasks/${trimmed}`);
145
+ }
146
+ async getTaskByNumber(taskNumber) {
147
+ return this.request('GET', `/tasks/by-number/${taskNumber}`);
148
+ }
149
+ async startTask(taskId) {
150
+ if (taskId) {
151
+ return this.request('POST', `/tasks/${await this.taskId(taskId)}/start`);
152
+ }
153
+ return this.request('POST', '/tasks/start');
154
+ }
155
+ async updateTaskStatus(taskId, status, deliveryStatus,
156
+ // `force` (spec §6.2) is deliberately ignored in cloud mode: the API already allows
157
+ // any→any status transitions, so honouring the flag means doing nothing. It is NOT
158
+ // put on the wire — an unknown request field would be contract drift with the
159
+ // Agent API. The parameter exists only so commands never branch on the mode.
160
+ _force) {
161
+ const body = {};
162
+ if (status !== undefined)
163
+ body.status = status;
164
+ if (deliveryStatus !== undefined)
165
+ body.delivery_status = deliveryStatus;
166
+ return this.request('PATCH', `/tasks/${await this.taskId(taskId)}/status`, { body });
167
+ }
168
+ async createSubtasks(parentId, subtasks) {
169
+ return this.request('POST', `/tasks/${await this.taskId(parentId)}/subtasks`, {
170
+ body: { subtasks },
171
+ });
172
+ }
173
+ async createTask(data) {
174
+ return this.request('POST', '/tasks', { body: data });
175
+ }
176
+ async editTaskContent(taskId, data) {
177
+ return this.request('PATCH', `/tasks/${await this.taskId(taskId)}/content`, {
178
+ body: data,
179
+ });
180
+ }
181
+ // ── Assignment ──
182
+ async assignTask(taskId, assignment) {
183
+ return this.request('PATCH', `/tasks/${await this.taskId(taskId)}/assign`, {
184
+ body: assignment,
185
+ });
186
+ }
187
+ async assignItem(objectType, objectId, assignment) {
188
+ const segments = {
189
+ task: 'tasks',
190
+ issue: 'issues',
191
+ idea: 'ideas',
192
+ intent: 'intents',
193
+ };
194
+ // Tasks only: `/issues|ideas|intents/{id}/assign` resolve a prefixed ID server-side, so
195
+ // their reference is passed through untouched (stripping it would break them).
196
+ const ref = objectType === 'task' ? await this.taskId(objectId) : objectId;
197
+ return this.request('PATCH', `/${segments[objectType]}/${ref}/assign`, {
198
+ body: assignment,
199
+ });
200
+ }
201
+ // ── Task Dependencies ──
202
+ async addTaskDependency(taskId, data) {
203
+ // Both ends are task references and both may be prefixed — the target travels in the body
204
+ // rather than the path, which is exactly why it was easy to miss.
205
+ const [id, targetTaskId] = await Promise.all([
206
+ this.taskId(taskId),
207
+ this.taskId(data.target_task_id),
208
+ ]);
209
+ return this.request('POST', `/tasks/${id}/dependencies`, {
210
+ body: { ...data, target_task_id: targetTaskId },
211
+ });
212
+ }
213
+ async removeTaskDependency(taskId, targetTaskId, type) {
214
+ const [id, target] = await Promise.all([
215
+ this.taskId(taskId),
216
+ this.taskId(targetTaskId),
217
+ ]);
218
+ return this.request('DELETE', `/tasks/${id}/dependencies/${target}`, {
219
+ params: { type },
220
+ });
221
+ }
222
+ // ── Logs ──
223
+ async logWork(taskId, type, content, metadata) {
224
+ return this.request('POST', `/tasks/${await this.taskId(taskId)}/logs`, {
225
+ body: { type, content, metadata },
226
+ });
227
+ }
228
+ // ── Documents ──
229
+ async getDocuments(options) {
230
+ return this.request('GET', '/documents', {
231
+ params: {
232
+ type: options?.type,
233
+ search: options?.search,
234
+ area_id: options?.areaId,
235
+ },
236
+ });
237
+ }
238
+ async getDocument(idOrSlug, mode, options) {
239
+ return this.request('GET', `/documents/${idOrSlug}`, {
240
+ params: {
241
+ mode,
242
+ full: options?.full ? 'true' : undefined,
243
+ section: options?.section,
244
+ },
245
+ });
246
+ }
247
+ async importDocument(data) {
248
+ return this.request('POST', '/documents', { body: data });
249
+ }
250
+ async updateDocument(idOrSlug, content, changelog) {
251
+ return this.request('PUT', `/documents/${idOrSlug}`, {
252
+ body: { content, changelog },
253
+ });
254
+ }
255
+ async patchDocument(idOrSlug, operations, baseVersion, changelog) {
256
+ return this.request('PATCH', `/documents/${idOrSlug}`, {
257
+ body: { base_version: baseVersion, operations, changelog },
258
+ });
259
+ }
260
+ // ── Presigned URL upload ──
261
+ async requestUploadUrl(data) {
262
+ return this.request('POST', '/documents/upload-url', { body: data });
263
+ }
264
+ async confirmUpload(uploadId) {
265
+ return this.request('POST', '/documents/confirm-upload', {
266
+ body: { upload_id: uploadId },
267
+ });
268
+ }
269
+ async requestUpdateUploadUrl(idOrSlug, changelog) {
270
+ return this.request('POST', `/documents/${idOrSlug}/upload-url`, {
271
+ body: changelog ? { changelog } : {},
272
+ });
273
+ }
274
+ async confirmUpdateUpload(idOrSlug, uploadId) {
275
+ return this.request('POST', `/documents/${idOrSlug}/confirm-upload`, {
276
+ body: { upload_id: uploadId },
277
+ });
278
+ }
279
+ async uploadToPresignedUrl(presignedUrl, filePath, onProgress) {
280
+ const stat = statSync(filePath);
281
+ const totalBytes = stat.size;
282
+ const ext = extname(filePath).toLowerCase();
283
+ const contentType = ext === '.md' ? 'text/markdown' : 'application/octet-stream';
284
+ const stream = createReadStream(filePath);
285
+ // Collect chunks for progress tracking and body assembly
286
+ const chunks = [];
287
+ let bytesRead = 0;
288
+ for await (const chunk of stream) {
289
+ const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
290
+ chunks.push(buf);
291
+ bytesRead += buf.length;
292
+ onProgress?.(bytesRead, totalBytes);
293
+ }
294
+ const body = Buffer.concat(chunks);
295
+ const response = await fetch(presignedUrl, {
296
+ method: 'PUT',
297
+ headers: {
298
+ 'Content-Type': contentType,
299
+ 'Content-Length': String(totalBytes),
300
+ },
301
+ body,
302
+ });
303
+ if (!response.ok) {
304
+ const text = await response.text();
305
+ throw new OrbitMapAPIError(`R2 upload failed: HTTP ${response.status} — ${text.slice(0, 200)}`, 'UPLOAD_FAILED', response.status);
306
+ }
307
+ }
308
+ /**
309
+ * Attempts presigned URL upload for a new document.
310
+ * Returns null if the endpoint is not available (404), signaling caller to fall back.
311
+ */
312
+ async presignedImport(filePath, data, onProgress) {
313
+ let uploadResponse;
314
+ try {
315
+ uploadResponse = await this.requestUploadUrl({
316
+ title: data.title,
317
+ type: data.type,
318
+ filename: basename(filePath),
319
+ source_path: data.source_path,
320
+ context: data.context,
321
+ workspace_id: data.workspace_id,
322
+ });
323
+ }
324
+ catch (err) {
325
+ if (err instanceof OrbitMapAPIError && err.status === 404) {
326
+ return null; // endpoint not available — fallback
327
+ }
328
+ throw err;
329
+ }
330
+ await this.uploadToPresignedUrl(uploadResponse.data.presigned_url, filePath, onProgress);
331
+ const confirmed = await this.confirmUpload(uploadResponse.data.upload_id);
332
+ return { data: confirmed.data, upload_method: 'presigned' };
333
+ }
334
+ /**
335
+ * Attempts presigned URL upload for updating a document.
336
+ * Returns null if the endpoint is not available (404), signaling caller to fall back.
337
+ */
338
+ async presignedUpdate(idOrSlug, filePath, changelog, onProgress) {
339
+ let uploadResponse;
340
+ try {
341
+ uploadResponse = await this.requestUpdateUploadUrl(idOrSlug, changelog);
342
+ }
343
+ catch (err) {
344
+ if (err instanceof OrbitMapAPIError && err.status === 404) {
345
+ return null; // endpoint not available — fallback
346
+ }
347
+ throw err;
348
+ }
349
+ await this.uploadToPresignedUrl(uploadResponse.data.presigned_url, filePath, onProgress);
350
+ const confirmed = await this.confirmUpdateUpload(idOrSlug, uploadResponse.data.upload_id);
351
+ return { data: confirmed.data, upload_method: 'presigned' };
352
+ }
353
+ // ── Document sharing ──
354
+ async shareDocument(documentId, areaId, agentIds) {
355
+ return this.request('POST', `/documents/${documentId}/share`, {
356
+ body: { area_id: areaId, agent_ids: agentIds },
357
+ });
358
+ }
359
+ async unshareDocument(documentId, areaId) {
360
+ return this.request('DELETE', `/documents/${documentId}/share/${areaId}`);
361
+ }
362
+ async setDocumentVisibility(documentId, areaId, agentIds) {
363
+ return this.request('PUT', `/documents/${documentId}/share/${areaId}/visibility`, { body: { agent_ids: agentIds } });
364
+ }
365
+ // ── Areas ──
366
+ async getAreas() {
367
+ return this.request('GET', '/areas');
368
+ }
369
+ async getAreaMembers(areaId) {
370
+ return this.request('GET', `/areas/${areaId}/members`);
371
+ }
372
+ async getAreaOverview(areaId) {
373
+ return this.request('GET', `/areas/${areaId}/overview`);
374
+ }
375
+ async createArea(data) {
376
+ return this.request('POST', '/areas', { body: data });
377
+ }
378
+ // ── Issues ──
379
+ async registerIssue(data) {
380
+ return this.request('POST', '/issues', { body: data });
381
+ }
382
+ async listIssues(options) {
383
+ return this.request('GET', '/issues', {
384
+ params: {
385
+ status: options?.status,
386
+ severity: options?.severity,
387
+ limit: options?.limit,
388
+ },
389
+ });
390
+ }
391
+ async getIssue(idOrNumber) {
392
+ return this.request('GET', `/issues/${idOrNumber}`);
393
+ }
394
+ async getIssueByNumber(issueNumber) {
395
+ return this.request('GET', `/issues/by-number/${issueNumber}`);
396
+ }
397
+ async resolveIssueByNumber(issueNumber, data) {
398
+ return this.request('PATCH', `/issues/by-number/${issueNumber}/resolve`, {
399
+ body: data,
400
+ });
401
+ }
402
+ async resolveIssue(idOrNumber, data) {
403
+ return this.request('PATCH', `/issues/${idOrNumber}/resolve`, {
404
+ body: data,
405
+ });
406
+ }
407
+ async updateIssueStatus(idOrNumber, data) {
408
+ return this.request('PATCH', `/issues/${idOrNumber}/status`, {
409
+ body: data,
410
+ });
411
+ }
412
+ async updateIssueStatusByNumber(issueNumber, data) {
413
+ return this.request('PATCH', `/issues/by-number/${issueNumber}/status`, {
414
+ body: data,
415
+ });
416
+ }
417
+ // ── Vibes ──
418
+ async logVibe(data) {
419
+ return this.request('POST', '/vibes', { body: data });
420
+ }
421
+ async listVibes(options) {
422
+ return this.request('GET', '/vibes', {
423
+ params: {
424
+ type: options?.type,
425
+ since: options?.since,
426
+ limit: options?.limit,
427
+ },
428
+ });
429
+ }
430
+ async getVibe(id) {
431
+ return this.request('GET', `/vibes/${id}`);
432
+ }
433
+ async updateVibe(id, data) {
434
+ return this.request('PATCH', `/vibes/${id}`, { body: data });
435
+ }
436
+ // ── Ideas ──
437
+ async listIdeas(options) {
438
+ return this.request('GET', '/ideas', {
439
+ params: { status: options?.status, priority: options?.priority, limit: options?.limit },
440
+ });
441
+ }
442
+ async getIdea(idOrNumber) {
443
+ return this.request('GET', `/ideas/${idOrNumber}`);
444
+ }
445
+ async getIdeaByNumber(ideaNumber) {
446
+ return this.request('GET', `/ideas/by-number/${ideaNumber}`);
447
+ }
448
+ async createIdea(data) {
449
+ return this.request('POST', '/ideas', { body: data });
450
+ }
451
+ async updateIdeaStatus(idOrNumber, data) {
452
+ return this.request('PATCH', `/ideas/${idOrNumber}/status`, { body: data });
453
+ }
454
+ async updateIdeaStatusByNumber(ideaNumber, data) {
455
+ return this.request('PATCH', `/ideas/by-number/${ideaNumber}/status`, { body: data });
456
+ }
457
+ // ── Orbits ──
458
+ async listOrbits(options) {
459
+ return this.request('GET', '/orbits', {
460
+ params: {
461
+ area_id: options?.areaId,
462
+ workspace_id: options?.workspaceId,
463
+ },
464
+ });
465
+ }
466
+ async getOrbit(idOrSlug) {
467
+ return this.request('GET', `/orbits/${idOrSlug}`);
468
+ }
469
+ async createOrbit(data) {
470
+ return this.request('POST', '/orbits', { body: data });
471
+ }
472
+ async updateOrbit(idOrSlug, data) {
473
+ return this.request('PATCH', `/orbits/${idOrSlug}`, { body: data });
474
+ }
475
+ async getOrbitItems(orbitIdOrSlug, options) {
476
+ return this.request('GET', `/orbits/${orbitIdOrSlug}/items`, {
477
+ params: { object_type: options?.type },
478
+ });
479
+ }
480
+ async orbitAttach(orbitIdOrSlug, data) {
481
+ return this.request('POST', `/orbits/${orbitIdOrSlug}/items`, {
482
+ body: { action: 'attach', ...data },
483
+ });
484
+ }
485
+ async orbitDetach(orbitIdOrSlug, data) {
486
+ return this.request('POST', `/orbits/${orbitIdOrSlug}/items`, {
487
+ body: { action: 'detach', ...data },
488
+ });
489
+ }
490
+ async addOrbitArea(orbitIdOrSlug, areaId) {
491
+ return this.request('POST', `/orbits/${orbitIdOrSlug}/areas`, {
492
+ body: { area_id: areaId },
493
+ });
494
+ }
495
+ async removeOrbitArea(orbitIdOrSlug, areaId) {
496
+ return this.request('DELETE', `/orbits/${orbitIdOrSlug}/areas/${areaId}`);
497
+ }
498
+ async addOrbitDependency(orbitIdOrSlug, data) {
499
+ return this.request('POST', `/orbits/${orbitIdOrSlug}/dependencies`, {
500
+ body: data,
501
+ });
502
+ }
503
+ // ── Intents ──
504
+ async listIntents(options) {
505
+ return this.request('GET', '/intents', {
506
+ params: { status: options?.status, limit: options?.limit },
507
+ });
508
+ }
509
+ async getIntent(idOrNumber) {
510
+ return this.request('GET', `/intents/${idOrNumber}`);
511
+ }
512
+ async createIntent(data) {
513
+ return this.request('POST', '/intents', { body: data });
514
+ }
515
+ async updateIntent(idOrNumber, data) {
516
+ return this.request('PATCH', `/intents/${idOrNumber}`, { body: data });
517
+ }
518
+ async linkIntentItem(idOrNumber, data) {
519
+ return this.request('POST', `/intents/${idOrNumber}/items`, { body: data });
520
+ }
521
+ async unlinkIntentItem(idOrNumber, data) {
522
+ return this.request('DELETE', `/intents/${idOrNumber}/items`, { body: data });
523
+ }
524
+ async setIntentOrbit(idOrNumber, orbitId) {
525
+ if (orbitId === null) {
526
+ return this.request('DELETE', `/intents/${idOrNumber}/orbit`);
527
+ }
528
+ return this.request('PUT', `/intents/${idOrNumber}/orbit`, {
529
+ body: { orbit_id: orbitId },
530
+ });
531
+ }
532
+ // ── Missions ──
533
+ async listMissions(options) {
534
+ return this.request('GET', '/missions', {
535
+ params: { status: options?.status, limit: options?.limit },
536
+ });
537
+ }
538
+ async getMission(idOrNumber) {
539
+ return this.request('GET', `/missions/${idOrNumber}`);
540
+ }
541
+ async createMission(data) {
542
+ return this.request('POST', '/missions', { body: data });
543
+ }
544
+ async updateMission(idOrNumber, data) {
545
+ return this.request('PATCH', `/missions/${idOrNumber}`, { body: data });
546
+ }
547
+ async setMissionStatus(idOrNumber, data) {
548
+ return this.request('PATCH', `/missions/${idOrNumber}/status`, {
549
+ body: data,
550
+ });
551
+ }
552
+ async linkMissionItem(idOrNumber, data) {
553
+ return this.request('POST', `/missions/${idOrNumber}/items`, { body: data });
554
+ }
555
+ async unlinkMissionItem(idOrNumber, data) {
556
+ return this.request('DELETE', `/missions/${idOrNumber}/items`, { body: data });
557
+ }
558
+ // ── Prompts ──
559
+ async getWorkPrompt() {
560
+ return this.request('GET', '/prompts/work-on-next-task');
561
+ }
562
+ async getImportDocsPrompt() {
563
+ return this.request('GET', '/prompts/import-docs');
564
+ }
565
+ }
566
+ /** Backwards-compatible alias for the pre-adapter class name. */
567
+ export { CloudAdapter as OrbitMapClient };
568
+ /**
569
+ * Build a {@link CloudAdapter} from the resolved credentials and area.
570
+ *
571
+ * There is exactly **one** area ladder — `resolveArea` in `workspace-resolve.ts` (ADR
572
+ * 0002 §2). `resolveAuth` used to carry a second, shorter copy of it that was missing the
573
+ * `link.json` rung, so a cloud project with a `.orbitmap/link.json` got a different area
574
+ * depending on which entry point it came through.
575
+ */
576
+ export async function createClient(explicitArea, options = {}) {
577
+ const config = options.config ?? (await loadConfig());
578
+ const auth = await resolveAuth({ config });
579
+ const area = explicitArea ?? options.area ?? resolveArea({ config }).area;
580
+ return new CloudAdapter(auth.apiKey, area, auth.apiUrl);
581
+ }
582
+ //# sourceMappingURL=cloud.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud.js","sourceRoot":"","sources":["../../src/adapters/cloud.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { WorkspaceAdapter } from './types.js';
2
+ /**
3
+ * Resolves the workspace adapter for the current invocation.
4
+ *
5
+ * Signature-compatible with the former `createClient(area?)`. The resolved mode
6
+ * (ADR 0002 / §3.3: `--workspace` → `ORBITMAP_MODE` → nearest `.orbitmap/config.json` that
7
+ * sets `mode` → local marker found by walking up from cwd → global config `mode`,
8
+ * defaulting to `'cloud'`) decides the backend: `local` returns a {@link LocalAdapter} over
9
+ * the resolved workspace directory, anything else the cloud adapter.
10
+ *
11
+ * Both branches consume the *same* resolved context — in particular the same `area`. The
12
+ * cloud branch used to throw `context.area` away and let `resolveAuth` re-run a shorter
13
+ * ladder of its own, which disagreed with this one about `.orbitmap/link.json`.
14
+ */
15
+ export declare function createAdapter(explicitArea?: string): Promise<WorkspaceAdapter>;
@@ -0,0 +1,31 @@
1
+ // Imported through the `src/api-client.js` compatibility shim (which re-exports
2
+ // `./cloud.js`) so that existing consumers and test doubles targeting the
3
+ // historical module path keep working unchanged.
4
+ import { createClient } from '../api-client.js';
5
+ import { resolveWorkspaceContext } from '../workspace-resolve.js';
6
+ import { LocalAdapter } from './local/adapter.js';
7
+ /**
8
+ * Resolves the workspace adapter for the current invocation.
9
+ *
10
+ * Signature-compatible with the former `createClient(area?)`. The resolved mode
11
+ * (ADR 0002 / §3.3: `--workspace` → `ORBITMAP_MODE` → nearest `.orbitmap/config.json` that
12
+ * sets `mode` → local marker found by walking up from cwd → global config `mode`,
13
+ * defaulting to `'cloud'`) decides the backend: `local` returns a {@link LocalAdapter} over
14
+ * the resolved workspace directory, anything else the cloud adapter.
15
+ *
16
+ * Both branches consume the *same* resolved context — in particular the same `area`. The
17
+ * cloud branch used to throw `context.area` away and let `resolveAuth` re-run a shorter
18
+ * ladder of its own, which disagreed with this one about `.orbitmap/link.json`.
19
+ */
20
+ export async function createAdapter(explicitArea) {
21
+ const context = await resolveWorkspaceContext({ area: explicitArea });
22
+ if (context.mode === 'local' && context.workspacePath) {
23
+ return new LocalAdapter({
24
+ workspacePath: context.workspacePath,
25
+ area: context.area,
26
+ areaSource: context.areaSource,
27
+ });
28
+ }
29
+ return createClient(explicitArea, { area: context.area, config: context.config });
30
+ }
31
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/adapters/factory.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,0EAA0E;AAC1E,iDAAiD;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,YAAqB;IAErB,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;IAEtE,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QACtD,OAAO,IAAI,YAAY,CAAC;YACtB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,YAAY,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACpF,CAAC"}