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,87 @@
1
+ import { OrbitMapAPIError } from './errors.js';
2
+ /**
3
+ * Prefixed display IDs (`TS-uw9yh5`, `IS-4k2p9q`, …) are what the CLI prints and therefore
4
+ * what users paste back in. This module is the single place that understands them.
5
+ *
6
+ * The Agent API is asymmetric about them: `/issues/{id}`, `/ideas/{id}`, `/intents/{id}` and
7
+ * `/missions/{id}` resolve a prefixed ID inline, server-side, but **tasks do not** — a task
8
+ * reference that is not a uuid has to go through `/tasks/by-number/{number}` first, with the
9
+ * `TS-` prefix stripped. Before this module the CLI patched that around in four copies of the
10
+ * same two helpers and simply omitted it in eight commands, so the same identifier worked in
11
+ * `orbitmap task` and 404'd in `orbitmap status`.
12
+ *
13
+ * Resolution lives in the adapter layer (see `resolveTaskRef` below and its callers in
14
+ * `adapters/cloud.ts`), not in the commands: per CLAUDE.md commands never talk to the network
15
+ * and never reimplement rules, and putting it there means a new task command gets prefixed-ID
16
+ * support for free instead of having to remember. `LocalAdapter` already resolves every task
17
+ * reference through `requireTaskFile`, so this brings cloud mode up to the same contract.
18
+ */
19
+ /** Two-letter prefix → object type, as the Agent API assigns them. */
20
+ export const OBJECT_PREFIXES = {
21
+ TS: 'task',
22
+ IS: 'issue',
23
+ ID: 'idea',
24
+ VB: 'vibe',
25
+ IN: 'intent',
26
+ MS: 'mission',
27
+ };
28
+ /**
29
+ * A prefixed display ID or a bare object code — i.e. anything that is NOT a uuid and has to
30
+ * be resolved by number. Six base-36 characters, optionally behind a two-letter prefix.
31
+ *
32
+ * This is the one shared predicate for the number-vs-uuid decision; a uuid is 36 characters
33
+ * with dashes and can never match, and a value that matches can never be a uuid, so the two
34
+ * paths are mutually exclusive by construction. Kept byte-identical to the four helper copies
35
+ * it replaces so no existing input changes meaning.
36
+ */
37
+ export function isObjectNumber(id) {
38
+ return /^([A-Z]{2}-)?[a-z0-9]{6}$/.test(id.trim());
39
+ }
40
+ /** Canonical uuid check, for callers that need the positive form rather than {@link isObjectNumber}. */
41
+ export function isUuid(id) {
42
+ return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(id.trim());
43
+ }
44
+ /**
45
+ * Drop the two-letter prefix from a display ID, leaving the bare object code. A value with no
46
+ * prefix (a bare code, or a uuid) is returned unchanged, so this is safe to call on anything.
47
+ */
48
+ export function stripPrefix(id) {
49
+ return id.trim().replace(/^[A-Z]{2}-/, '');
50
+ }
51
+ /** The prefix of a display ID, or `undefined` when there is none. Never mangles the input. */
52
+ export function objectPrefix(id) {
53
+ const match = id.trim().match(/^([A-Z]{2})-/);
54
+ const prefix = match?.[1];
55
+ return prefix && prefix in OBJECT_PREFIXES ? prefix : undefined;
56
+ }
57
+ /** Dig the task uuid out of a `/tasks/by-number/{n}` (or `/tasks/{id}`) response envelope. */
58
+ function taskIdFromEnvelope(response) {
59
+ const data = response?.data;
60
+ const task = data?.task ?? data;
61
+ const id = task?.id;
62
+ return typeof id === 'string' && id.length > 0 ? id : undefined;
63
+ }
64
+ /**
65
+ * Turn any task reference — uuid, `TS-uw9yh5` or the bare code `uw9yh5` — into the uuid the
66
+ * task endpoints expect.
67
+ *
68
+ * A uuid costs **no extra request**: it is returned as-is, synchronously in effect, so the
69
+ * commands that already passed uuids keep their single round trip. Only a by-number reference
70
+ * pays for the `/tasks/by-number/{n}` lookup, which is the price of the API asymmetry this
71
+ * works around (see the module comment) and disappears if `/tasks/{id}` ever resolves
72
+ * prefixed IDs inline the way `/intents/{id}` already does.
73
+ */
74
+ export async function resolveTaskRef(ref, lookup) {
75
+ const trimmed = ref.trim();
76
+ if (!isObjectNumber(trimmed))
77
+ return trimmed;
78
+ const response = await lookup.getTaskByNumber(stripPrefix(trimmed));
79
+ const id = taskIdFromEnvelope(response);
80
+ if (!id) {
81
+ // The lookup answered but without an id — a contract drift we must not paper over by
82
+ // sending the unresolved reference on and letting it 404 somewhere less obvious.
83
+ throw new OrbitMapAPIError(`Could not resolve task \`${trimmed}\` to an id — the API returned no task id for it.`, 'NOT_FOUND', 404);
84
+ }
85
+ return id;
86
+ }
87
+ //# sourceMappingURL=id-resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-resolve.js","sourceRoot":"","sources":["../src/id-resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;;;;;;;;;;GAgBG;AAEH,sEAAsE;AACtE,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,SAAS;CACL,CAAC;AAIX;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,OAAO,2BAA2B,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,MAAM,CAAC,EAAU;IAC/B,OAAO,iEAAiE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3F,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1B,OAAO,MAAM,IAAI,MAAM,IAAI,eAAe,CAAC,CAAC,CAAE,MAAuB,CAAC,CAAC,CAAC,SAAS,CAAC;AACpF,CAAC;AAOD,8FAA8F;AAC9F,SAAS,kBAAkB,CAAC,QAAiB;IAC3C,MAAM,IAAI,GAAI,QAA+B,EAAE,IAAI,CAAC;IACpD,MAAM,IAAI,GAAI,IAA2B,EAAE,IAAI,IAAI,IAAI,CAAC;IACxD,MAAM,EAAE,GAAI,IAAyB,EAAE,EAAE,CAAC;IAC1C,OAAO,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAW,EACX,MAAwB;IAExB,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAE7C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACpE,MAAM,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,qFAAqF;QACrF,iFAAiF;QACjF,MAAM,IAAI,gBAAgB,CACxB,4BAA4B,OAAO,mDAAmD,EACtF,WAAW,EACX,GAAG,CACJ,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}