@starlove/orbit 1.4.0 → 2.0.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 (329) hide show
  1. package/Dockerfile +10 -8
  2. package/README.md +146 -164
  3. package/dist/full/csp.txt +1 -0
  4. package/dist/full/fonts/JetBrains_Mono/JetBrainsMono-subset.woff2 +0 -0
  5. package/dist/full/fonts/JetBrains_Mono/README.txt +5 -0
  6. package/dist/full/fonts/Mona_Sans/MonaSans-subset.woff2 +0 -0
  7. package/{public/fonts/Open_Sans → dist/full/fonts/Mona_Sans}/OFL.txt +93 -93
  8. package/dist/full/fonts/Mona_Sans/README.txt +10 -0
  9. package/{public/fonts/JetBrains_Mono → dist/full/fonts/Newsreader}/OFL.txt +93 -93
  10. package/dist/full/fonts/Newsreader/README.txt +8 -0
  11. package/dist/full/fonts/Newsreader/newsreader.woff2 +0 -0
  12. package/dist/full/index.html +36 -653
  13. package/dist/full/js/app.BmuponPJ.js +32 -0
  14. package/dist/full/js/app.BmuponPJ.js.map +1 -0
  15. package/dist/full/js/chunk.1fJGQGbW.js +2 -0
  16. package/dist/full/js/chunk.1fJGQGbW.js.map +1 -0
  17. package/dist/full/js/chunk.5D7JO2zp.js +2 -0
  18. package/dist/full/js/chunk.5D7JO2zp.js.map +1 -0
  19. package/dist/full/js/chunk.BrNn_D79.js +2 -0
  20. package/dist/full/js/chunk.BrNn_D79.js.map +1 -0
  21. package/dist/full/js/chunk.CokJXIqM.js +2 -0
  22. package/dist/full/js/chunk.CokJXIqM.js.map +1 -0
  23. package/dist/full/js/chunk.D_Haqy6R.js +2 -0
  24. package/dist/full/js/chunk.D_Haqy6R.js.map +1 -0
  25. package/dist/full/js/chunk.RO0jsH6I.js +15 -0
  26. package/dist/full/js/chunk.RO0jsH6I.js.map +1 -0
  27. package/dist/full/js/chunk.dqWOEtBM.js +2 -0
  28. package/dist/full/js/chunk.dqWOEtBM.js.map +1 -0
  29. package/dist/full/js/warm.f260bbbc.js +15 -0
  30. package/dist/full/orbits-favicon.png +0 -0
  31. package/dist/full/orbits-logo-bg-wide.png +0 -0
  32. package/dist/full/orbits-logo-bg.png +0 -0
  33. package/dist/full/orbits-logo.png +0 -0
  34. package/dist/full/styles.2b154ffe.css +1 -0
  35. package/dist/full/vendor/starlove-ui/theme-init.js +66 -0
  36. package/dist/full/version.json +2 -2
  37. package/docs/AGENT_GUIDE.md +114 -0
  38. package/docs/UPDATING.md +249 -64
  39. package/lib/adapters/indexeddb/blobs.d.ts +3 -0
  40. package/lib/adapters/indexeddb/blobs.js +54 -0
  41. package/lib/adapters/indexeddb/database.d.ts +60 -0
  42. package/lib/adapters/indexeddb/database.js +126 -0
  43. package/lib/adapters/indexeddb/index.d.ts +5 -0
  44. package/lib/adapters/indexeddb/index.js +3 -0
  45. package/lib/adapters/indexeddb/locks.d.ts +14 -0
  46. package/lib/adapters/indexeddb/locks.js +40 -0
  47. package/lib/adapters/indexeddb/store.d.ts +40 -0
  48. package/lib/adapters/indexeddb/store.js +424 -0
  49. package/lib/adapters/indexeddb/tables.d.ts +43 -0
  50. package/lib/adapters/indexeddb/tables.js +127 -0
  51. package/lib/adapters/memory/blobs.d.ts +3 -0
  52. package/lib/adapters/memory/blobs.js +44 -0
  53. package/lib/adapters/memory/board.d.ts +41 -0
  54. package/lib/adapters/memory/board.js +521 -0
  55. package/lib/adapters/memory/index.d.ts +2 -0
  56. package/lib/adapters/memory/index.js +2 -0
  57. package/lib/adapters/memory/search.d.ts +6 -0
  58. package/lib/adapters/memory/search.js +30 -0
  59. package/lib/adapters/memory/store.d.ts +34 -0
  60. package/lib/adapters/memory/store.js +266 -0
  61. package/lib/adapters/sqlite/backups.d.ts +53 -0
  62. package/lib/adapters/sqlite/backups.js +232 -0
  63. package/lib/adapters/sqlite/blobs.d.ts +14 -0
  64. package/lib/adapters/sqlite/blobs.js +109 -0
  65. package/lib/adapters/sqlite/board.d.ts +77 -0
  66. package/lib/adapters/sqlite/board.js +328 -0
  67. package/lib/adapters/sqlite/database.d.ts +67 -0
  68. package/lib/adapters/sqlite/database.js +285 -0
  69. package/lib/adapters/sqlite/index.d.ts +3 -0
  70. package/lib/adapters/sqlite/index.js +2 -0
  71. package/lib/adapters/sqlite/lock.d.ts +11 -0
  72. package/lib/adapters/sqlite/lock.js +34 -0
  73. package/lib/adapters/sqlite/records.d.ts +54 -0
  74. package/lib/adapters/sqlite/records.js +546 -0
  75. package/lib/adapters/sqlite/schema.d.ts +54 -0
  76. package/lib/adapters/sqlite/schema.js +276 -0
  77. package/lib/adapters/sqlite/store.d.ts +39 -0
  78. package/lib/adapters/sqlite/store.js +385 -0
  79. package/lib/browser/in-page.d.ts +31 -0
  80. package/lib/browser/in-page.js +46 -0
  81. package/lib/browser/old-preview.d.ts +13 -0
  82. package/lib/browser/old-preview.js +80 -0
  83. package/lib/browser/preview-board.d.ts +8 -0
  84. package/lib/browser/preview-board.js +69 -0
  85. package/lib/cli/main.d.ts +7 -0
  86. package/lib/cli/main.js +343 -0
  87. package/lib/cli/orbit.d.ts +8 -0
  88. package/lib/cli/orbit.js +25 -0
  89. package/lib/client/http.d.ts +38 -0
  90. package/lib/client/http.js +334 -0
  91. package/lib/client/local.d.ts +26 -0
  92. package/lib/client/local.js +190 -0
  93. package/lib/client/object-url.d.ts +8 -0
  94. package/lib/client/object-url.js +21 -0
  95. package/lib/client/types.d.ts +268 -0
  96. package/lib/client/types.js +8 -0
  97. package/lib/commands/agent-tools.d.ts +31 -0
  98. package/lib/commands/agent-tools.js +100 -0
  99. package/lib/commands/index.d.ts +56 -0
  100. package/lib/commands/index.js +298 -0
  101. package/lib/commands/parse.d.ts +73 -0
  102. package/lib/commands/parse.js +231 -0
  103. package/lib/commands/present.d.ts +134 -0
  104. package/lib/commands/present.js +198 -0
  105. package/lib/commands/session.d.ts +85 -0
  106. package/lib/commands/session.js +138 -0
  107. package/lib/commands/verbs.d.ts +35 -0
  108. package/lib/commands/verbs.js +842 -0
  109. package/lib/core/actors.d.ts +18 -0
  110. package/lib/core/actors.js +45 -0
  111. package/lib/core/agent.d.ts +128 -0
  112. package/lib/core/agent.js +323 -0
  113. package/lib/core/boards.d.ts +113 -0
  114. package/lib/core/boards.js +288 -0
  115. package/lib/core/bootstrap.d.ts +47 -0
  116. package/lib/core/bootstrap.js +100 -0
  117. package/lib/core/bytes.d.ts +10 -0
  118. package/lib/core/bytes.js +52 -0
  119. package/lib/core/card-paths.d.ts +25 -0
  120. package/lib/core/card-paths.js +44 -0
  121. package/lib/core/context.d.ts +60 -0
  122. package/lib/core/context.js +42 -0
  123. package/lib/core/cross-board.d.ts +81 -0
  124. package/lib/core/cross-board.js +228 -0
  125. package/lib/core/describe.d.ts +21 -0
  126. package/lib/core/describe.js +81 -0
  127. package/lib/core/errors.d.ts +159 -0
  128. package/lib/core/errors.js +160 -0
  129. package/lib/core/files.d.ts +79 -0
  130. package/lib/core/files.js +262 -0
  131. package/lib/core/history.d.ts +20 -0
  132. package/lib/core/history.js +53 -0
  133. package/lib/core/image-types.d.ts +16 -0
  134. package/lib/core/image-types.js +36 -0
  135. package/lib/core/model.d.ts +263 -0
  136. package/lib/core/model.js +34 -0
  137. package/lib/core/nebula-link.d.ts +14 -0
  138. package/lib/core/nebula-link.js +39 -0
  139. package/lib/core/relations.d.ts +58 -0
  140. package/lib/core/relations.js +112 -0
  141. package/lib/core/search.d.ts +38 -0
  142. package/lib/core/search.js +92 -0
  143. package/lib/core/sessions.d.ts +44 -0
  144. package/lib/core/sessions.js +158 -0
  145. package/lib/core/snapshot-schema.d.ts +295 -0
  146. package/lib/core/snapshot-schema.js +82 -0
  147. package/lib/core/snapshots.d.ts +75 -0
  148. package/lib/core/snapshots.js +409 -0
  149. package/lib/core/states.d.ts +25 -0
  150. package/lib/core/states.js +126 -0
  151. package/lib/core/text.d.ts +40 -0
  152. package/lib/core/text.js +113 -0
  153. package/lib/core/tickets.d.ts +69 -0
  154. package/lib/core/tickets.js +311 -0
  155. package/lib/core/trello.d.ts +17 -0
  156. package/lib/core/trello.js +269 -0
  157. package/lib/core/verdicts.d.ts +28 -0
  158. package/lib/core/verdicts.js +92 -0
  159. package/lib/core/views.d.ts +95 -0
  160. package/lib/core/views.js +186 -0
  161. package/lib/http/app.d.ts +46 -0
  162. package/lib/http/app.js +491 -0
  163. package/lib/mcp-server.d.ts +10 -0
  164. package/lib/mcp-server.js +120 -0
  165. package/lib/node/assets.d.ts +7 -0
  166. package/lib/node/assets.js +68 -0
  167. package/lib/node/data-folder.d.ts +21 -0
  168. package/lib/node/data-folder.js +34 -0
  169. package/lib/node/env.d.ts +38 -0
  170. package/lib/node/env.js +49 -0
  171. package/lib/node/host-check.d.ts +24 -0
  172. package/lib/node/host-check.js +53 -0
  173. package/lib/node/host-services.d.ts +9 -0
  174. package/lib/node/host-services.js +150 -0
  175. package/lib/node/local.d.ts +22 -0
  176. package/lib/node/local.js +61 -0
  177. package/lib/node/migrate.d.ts +53 -0
  178. package/lib/node/migrate.js +635 -0
  179. package/lib/node/package.d.ts +7 -0
  180. package/lib/node/package.js +14 -0
  181. package/lib/node/repo-board.d.ts +49 -0
  182. package/lib/node/repo-board.js +245 -0
  183. package/lib/node/serve.d.ts +8 -0
  184. package/lib/node/serve.js +106 -0
  185. package/lib/orbit.d.ts +47 -0
  186. package/lib/orbit.js +44 -0
  187. package/lib/quiet-sqlite-warning.d.ts +1 -0
  188. package/lib/quiet-sqlite-warning.js +18 -0
  189. package/lib/store/blob-path.d.ts +6 -0
  190. package/lib/store/blob-path.js +12 -0
  191. package/lib/store/conformance.d.ts +52 -0
  192. package/lib/store/conformance.js +1449 -0
  193. package/lib/store/search-words.d.ts +10 -0
  194. package/lib/store/search-words.js +19 -0
  195. package/lib/store/types.d.ts +452 -0
  196. package/lib/store/types.js +34 -0
  197. package/llms.txt +63 -0
  198. package/package.json +109 -25
  199. package/src/cli/orbit.js +11 -658
  200. package/src/mcp-server.js +16 -876
  201. package/SKILL-ORBIT.md +0 -151
  202. package/build.mjs +0 -210
  203. package/dist/full/js/app.62905fcb.js +0 -952
  204. package/dist/full/js/app.62905fcb.js.map +0 -7
  205. package/dist/full/styles.4e60d824.css +0 -1
  206. package/docs/AGENT_PROTOCOL.md +0 -424
  207. package/docs/MCP_SETUP.md +0 -54
  208. package/docs/ORBIT_DISPATCH.md +0 -280
  209. package/docs/SS-Orbit-Dark.png +0 -0
  210. package/docs/SS-Orbit-Light.png +0 -0
  211. package/docs/mcp-client.example.json +0 -13
  212. package/docs/setup/orbit-init-wizard.md +0 -174
  213. package/public/apple-touch-icon.png +0 -0
  214. package/public/cursors/live_arrow.cur +0 -0
  215. package/public/cursors/live_link.cur +0 -0
  216. package/public/cursors/live_move.cur +0 -0
  217. package/public/cursors/live_select.cur +0 -0
  218. package/public/cursors/live_unavail.cur +0 -0
  219. package/public/favicon-32x32.png +0 -0
  220. package/public/fonts/Chakra_Petch/ChakraPetch-Bold.ttf +0 -0
  221. package/public/fonts/Chakra_Petch/ChakraPetch-BoldItalic.ttf +0 -0
  222. package/public/fonts/Chakra_Petch/ChakraPetch-Italic.ttf +0 -0
  223. package/public/fonts/Chakra_Petch/ChakraPetch-Light.ttf +0 -0
  224. package/public/fonts/Chakra_Petch/ChakraPetch-LightItalic.ttf +0 -0
  225. package/public/fonts/Chakra_Petch/ChakraPetch-Medium.ttf +0 -0
  226. package/public/fonts/Chakra_Petch/ChakraPetch-MediumItalic.ttf +0 -0
  227. package/public/fonts/Chakra_Petch/ChakraPetch-Regular.ttf +0 -0
  228. package/public/fonts/Chakra_Petch/ChakraPetch-SemiBold.ttf +0 -0
  229. package/public/fonts/Chakra_Petch/ChakraPetch-SemiBoldItalic.ttf +0 -0
  230. package/public/fonts/Chakra_Petch/OFL.txt +0 -93
  231. package/public/fonts/Inter/Inter-Italic-VariableFont_opsz,wght.ttf +0 -0
  232. package/public/fonts/Inter/Inter-VariableFont_opsz,wght.ttf +0 -0
  233. package/public/fonts/Inter/OFL.txt +0 -93
  234. package/public/fonts/Inter/README.txt +0 -118
  235. package/public/fonts/JetBrains_Mono/JetBrainsMono-Italic-VariableFont_wght.ttf +0 -0
  236. package/public/fonts/JetBrains_Mono/JetBrainsMono-VariableFont_wght.ttf +0 -0
  237. package/public/fonts/JetBrains_Mono/README.txt +0 -79
  238. package/public/fonts/OpenRing-Regular.ttf +0 -0
  239. package/public/fonts/Open_Sans/OpenSans-Italic-VariableFont_wdth,wght.ttf +0 -0
  240. package/public/fonts/Open_Sans/OpenSans-VariableFont_wdth,wght.ttf +0 -0
  241. package/public/fonts/Open_Sans/README.txt +0 -100
  242. package/public/fonts/Orbitron/OFL.txt +0 -93
  243. package/public/fonts/Orbitron/Orbitron-VariableFont_wght.ttf +0 -0
  244. package/public/fonts/Orbitron/README.txt +0 -68
  245. package/public/fonts/Rajdhani/OFL.txt +0 -93
  246. package/public/fonts/Rajdhani/Rajdhani-Bold.ttf +0 -0
  247. package/public/fonts/Rajdhani/Rajdhani-Light.ttf +0 -0
  248. package/public/fonts/Rajdhani/Rajdhani-Medium.ttf +0 -0
  249. package/public/fonts/Rajdhani/Rajdhani-Regular.ttf +0 -0
  250. package/public/fonts/Rajdhani/Rajdhani-SemiBold.ttf +0 -0
  251. package/public/fonts/runescape-uf.ttf +0 -0
  252. package/public/index.html +0 -769
  253. package/public/js/actor-labels.js +0 -65
  254. package/public/js/api.js +0 -39
  255. package/public/js/app.js +0 -45
  256. package/public/js/artifact-drawer.js +0 -79
  257. package/public/js/board-export.js +0 -161
  258. package/public/js/board-menu.js +0 -374
  259. package/public/js/card-actions.js +0 -545
  260. package/public/js/config.js +0 -20
  261. package/public/js/create-card.js +0 -190
  262. package/public/js/dom.js +0 -19
  263. package/public/js/drawer.js +0 -273
  264. package/public/js/font-preference.js +0 -229
  265. package/public/js/format.js +0 -433
  266. package/public/js/help-menu.js +0 -31
  267. package/public/js/icons.js +0 -16
  268. package/public/js/kanban.js +0 -694
  269. package/public/js/local-backend.js +0 -1015
  270. package/public/js/main.js +0 -161
  271. package/public/js/modal.js +0 -33
  272. package/public/js/motion-preference.js +0 -64
  273. package/public/js/panel.js +0 -58
  274. package/public/js/router.js +0 -134
  275. package/public/js/search.js +0 -56
  276. package/public/js/settings-tabs.js +0 -7
  277. package/public/js/settings.js +0 -1634
  278. package/public/js/sse.js +0 -159
  279. package/public/js/starscape.js +0 -332
  280. package/public/js/state.js +0 -129
  281. package/public/js/text-editing.js +0 -128
  282. package/public/js/theme-preference.js +0 -95
  283. package/public/js/ticket-detail.js +0 -1516
  284. package/public/js/ticket-typeahead.js +0 -49
  285. package/public/js/toast.js +0 -89
  286. package/public/js/topbar-notes.js +0 -155
  287. package/public/js/transport.js +0 -22
  288. package/public/js/typeahead.js +0 -206
  289. package/public/js/unread.js +0 -121
  290. package/public/js/update-check.js +0 -58
  291. package/public/js/url-routes.js +0 -94
  292. package/public/orbits-favicon.png +0 -0
  293. package/public/orbits-logo-bg-wide.png +0 -0
  294. package/public/orbits-logo-bg.png +0 -0
  295. package/public/orbits-logo.png +0 -0
  296. package/public/styles.css +0 -7709
  297. package/src/core/agent.js +0 -387
  298. package/src/core/agents-md.js +0 -109
  299. package/src/core/artifacts.js +0 -149
  300. package/src/core/attachments.js +0 -238
  301. package/src/core/auth.js +0 -85
  302. package/src/core/backups.js +0 -142
  303. package/src/core/board.js +0 -148
  304. package/src/core/boards.js +0 -409
  305. package/src/core/bootstrap.js +0 -170
  306. package/src/core/css-bundle.js +0 -30
  307. package/src/core/db.js +0 -315
  308. package/src/core/delete-board.js +0 -163
  309. package/src/core/dispatch.js +0 -1007
  310. package/src/core/events.js +0 -314
  311. package/src/core/http.js +0 -115
  312. package/src/core/migrate.js +0 -198
  313. package/src/core/paths.js +0 -55
  314. package/src/core/provision-repo-board.js +0 -119
  315. package/src/core/queries.js +0 -246
  316. package/src/core/registry.js +0 -211
  317. package/src/core/relations.js +0 -163
  318. package/src/core/review-verdicts.js +0 -138
  319. package/src/core/router.js +0 -556
  320. package/src/core/search.js +0 -183
  321. package/src/core/seed.js +0 -234
  322. package/src/core/snapshots.js +0 -692
  323. package/src/core/states.js +0 -167
  324. package/src/core/system-picker.js +0 -109
  325. package/src/core/tickets.js +0 -400
  326. package/src/core/util.js +0 -106
  327. package/src/core/version-check.js +0 -154
  328. package/src/mcp/orbit-client.js +0 -287
  329. package/src/server.js +0 -115
@@ -1,280 +0,0 @@
1
- # Orbit Dispatch
2
-
3
- `orbit dispatch` is the Orbit-to-Hermes handoff command. It turns an Orbit ticket into a bounded agent run without relying on a temporary prompt file as the source of truth.
4
-
5
- The design intent is simple:
6
-
7
- - Git remains canonical for code.
8
- - Orbit remains canonical for planning, handoff, run records, and implementation notes.
9
- - The ticket becomes the shared communication surface between the human, orchestrator, and dispatched agent.
10
-
11
- ## Local and remote board contract
12
-
13
- Local dispatch resolves boards through the local Orbit registry and mutates the local SQLite board file.
14
-
15
- Remote dispatch targets a hosted Orbit server through the HTTP API. It accepts either a full hosted ticket URL or an explicit server/board/ticket tuple:
16
-
17
- ```bash
18
- # Full hosted Orbit ticket URL. The board slug and ticket id are parsed from the hash route.
19
- orbit dispatch 'http://orbit.example/#/b/my-app/t/<ticket-id>' --profile nova --worktree
20
-
21
- # Equivalent explicit form.
22
- orbit dispatch \
23
- --server-url http://orbit.example \
24
- --board my-app \
25
- --ticket <ticket-id-or-number> \
26
- --profile nova \
27
- --worktree
28
- ```
29
-
30
- Remote dispatch uses hosted Orbit API state for ticket reads, blockers, AI Plan/plan artifact updates, run-record comments, and lane moves. It still uses the local `--cwd` repo as the code/worktree root, because hosted board paths may belong to another machine.
31
-
32
- Safe preview forms work in remote mode too:
33
-
34
- ```bash
35
- # Reads hosted board/ticket/blocker state, then exits with no writes.
36
- orbit dispatch 'http://orbit.example/#/b/my-app/t/<ticket-id>' --profile nova --dry-run
37
-
38
- # Writes handoff/run record/worktree and comments the hosted ticket, but does not spawn Hermes or move the card.
39
- orbit dispatch 'http://orbit.example/#/b/my-app/t/<ticket-id>' --profile nova --worktree --no-spawn
40
- ```
41
-
42
- ## Basic local use
43
-
44
- From the code repository you are working in, target the local Orbit board explicitly:
45
-
46
- ```bash
47
- orbit dispatch \
48
- --board my-app \
49
- --ticket 12 \
50
- --profile agent \
51
- --worktree
52
- ```
53
-
54
- Common variants:
55
-
56
- ```bash
57
- # Preview only. No files, worktrees, ticket fields, comments, or agents change.
58
- orbit dispatch --board my-app --ticket 12 --dry-run
59
-
60
- # Prepare the handoff/comment/worktree, but do not spawn Hermes and do not move the card to In Progress.
61
- orbit dispatch --board my-app --ticket 12 --profile agent --worktree --no-spawn
62
-
63
- # Attach the Hermes child process to the current terminal instead of detaching it.
64
- orbit dispatch --board my-app --ticket 12 --profile agent --worktree --foreground
65
-
66
- # Use an explicit branch/worktree name.
67
- orbit dispatch --board my-app --ticket 12 --profile agent --worktree \
68
- --branch orbit/my-app-12-search \
69
- --worktree-path .worktrees/my-app-12-search
70
-
71
- # Declare ticket-specific verification expectations in the handoff/run record.
72
- orbit dispatch --board my-app --ticket 12 --profile agent --worktree \
73
- --verify-command "node --test test/orbit-cli.test.mjs" \
74
- --verify-command "git diff --check"
75
- ```
76
-
77
- ## Preflight order
78
-
79
- Before filesystem writes, worktree creation, ticket mutation, or agent spawn, dispatch now:
80
-
81
- 1. Parses local vs remote target (`--server-url`, `--remote`, or hosted ticket URL select remote mode).
82
- 2. Resolves the board from `--board`, hosted URL, or local repo context.
83
- 3. Resolves the ticket from `--ticket` by number/id or from the hosted URL.
84
- 4. Refuses archived/missing tickets.
85
- 5. Refuses blocked tickets unless `--force` is passed.
86
- 6. Rejects missing or flag-looking `--verify-command` values during CLI argument parsing.
87
- 7. For spawn mode, checks that the Hermes binary exists and the requested profile is plausible.
88
- 8. Handles `--dry-run` as a true no-write preview.
89
-
90
- Only after those checks does dispatch create run artifacts/worktrees, write the handoff/comment, move the ticket, or spawn Hermes.
91
-
92
- ## What dispatch does
93
-
94
- In normal spawn mode:
95
-
96
- 1. Builds a run id such as `orbit-12-agent-abc123def0`.
97
- 2. Creates a run directory for run metadata and policy wrappers. Local board mode uses `<DATA_DIR>/dispatch-runs/<board>/<run-id>/`; remote mode uses `<repo>/.orbit/dispatch-runs/<run-id>/` so the handoff stays with the source checkout.
98
- 3. Creates and preserves a git worktree/branch when `--worktree` is used. Remote mode defaults to `<repo-parent>/.worktrees/<repo-name>/<run-id>/`.
99
- 4. Generates a full agent handoff.
100
- 5. Writes an initial durable `run-record.json` with status `prepared` before ticket mutation or agent spawn.
101
- 6. Writes the canonical handoff as a linked markdown artifact and stores a terse plan summary in AI Plan.
102
- 7. Moves the ticket to **In Progress**.
103
- 8. Starts Hermes.
104
- 9. Updates `run-record.json` to status `launched` with the child process id.
105
- 10. Comments a run record back onto the ticket.
106
-
107
- In `--no-spawn` mode, dispatch writes the handoff artifact, initial `run-record.json`, and compact run-record comment but leaves the ticket in its current lane.
108
-
109
- The run record includes profile, policy, ticket, branch, worktree, base commit, policy-bin path, child process id, command, declared verification commands, mode, transport (`local` or `remote`), and a `run-record.json` path. This makes the card the visible cockpit for the run while preserving a machine-readable artifact for later review/repair automation.
110
-
111
- ## Structured run record
112
-
113
- Every non-dry-run dispatch writes `run-record.json` with schema `orbit.dispatch.run.v1`.
114
-
115
- The JSON record currently captures:
116
-
117
- - run id, board id/slug, ticket id/number, profile, policy, transport, mode, and status (`prepared` for `--no-spawn`, `launched` for spawned runs)
118
- - prompt/handoff path, repo root, worktree, branch, and base commit
119
- - process id when a Hermes child was spawned
120
- - declared verification commands
121
- - empty `commit_shas` and `residual_risks` arrays for completion/review tooling to fill in later slices
122
- - a small environment-variance snapshot: platform, Node version, cwd, path format, and relevant `HOME`, `PROJECT_ROOT`, `DATA_DIR`, and `ORBIT_*` env vars
123
-
124
- URL-bearing values are presence-only redacted in `run-record.json`. `ORBIT_API_URL`, `ORBIT_SERVER_URL`, and the top-level `server_url` field are recorded as `[redacted-url-present]` when present, rather than persisting usernames, passwords, query tokens, fragments, hostnames, or paths. Non-URL environment checklist values such as `HOME`, `PROJECT_ROOT`, `DATA_DIR`, `ORBIT_MODE`, and `ORBIT_DEFAULT_BOARD` remain visible for variance debugging.
125
-
126
- Operators can override the default verification contract by repeating `--verify-command <cmd>` or using `--verify-command=<cmd>`. Bare `--verify-command`, `--verify-command=` and `--verify-command` followed by another flag are rejected before dispatch side effects. If omitted, dispatch declares the standard local-safe checklist: `npm test`, conditional `npm run build`, `node src/cli/orbit.js dispatch --help`, `git diff --check`, and `git diff --cached --check before commit`.
127
-
128
- ## Structured review verdict records
129
-
130
- Sentinel/agent review results are first-class board data in `review_verdicts`, not prose-only comments. Each record belongs to one ticket and stores:
131
-
132
- - `verdict`: one of `PASS`, `BLOCK`, or `QUESTION`
133
- - `blocking_findings`: JSON array for issues that must be repaired before approval
134
- - `optional_findings`: JSON array for non-blocking review notes
135
- - `evidence_commands`: JSON array of commands or probes the reviewer used as evidence
136
- - `reviewer_profile` and `reviewer_session_id`: optional reviewer identity/session metadata
137
- - `reviewed_commit_sha`: optional commit SHA under review
138
- - `dispatch_run_id`: optional dispatch run id tying the verdict back to `run-record.json`
139
- - `supersedes_prior_review_id`: optional link to an earlier verdict on the same ticket
140
-
141
- HTTP API:
142
-
143
- ```text
144
- POST /api/tickets/:ticket_id/review-verdicts
145
- GET /api/tickets/:ticket_id/review-verdicts?limit=50
146
- GET /api/review-verdicts/:review_id?board=<slug-or-id>
147
- ```
148
-
149
- MCP tools:
150
-
151
- ```text
152
- board_create_review_verdict
153
- board_list_review_verdicts
154
- board_get_review_verdict
155
- ```
156
-
157
- Comments may mirror verdict summaries for human scanning, but comments are not the source of truth for review automation. Later repair and re-review tooling should read these records directly.
158
-
159
- ## The linked markdown handoff
160
-
161
- Dispatch stores the generated handoff as a linked markdown artifact and keeps only a terse AI Plan summary visible on the ticket. The artifact includes:
162
-
163
- - mission and ticket metadata
164
- - repository root, worktree, branch, and run id
165
- - required reading order: `AGENTS.md`, `SKILL-ORBIT.md`, then the handoff
166
- - ticket description
167
- - terse AI Plan / Work Summary text, Revisions, and any linked artifact paths
168
- - board-level agent instructions
169
- - board Journal lessons/decisions when available
170
- - recent remote comments when remote dispatch uses the lean dispatch packet
171
- - parent/child ticket context
172
- - unresolved blockers
173
- - scope boundaries
174
- - autonomous policy
175
- - declared verification commands and environment-variance checklist
176
- - completion protocol
177
-
178
- The short prompt passed to `hermes chat -q` is intentionally small. The ticket is the source of truth; the CLI argument is only a bootstrap pointer.
179
-
180
- Board journal entries are framed as project constraints and lessons, not persona or roleplay instructions. Keep durable board entries focused on mechanisms, architectural/product boundaries, workflow invariants, public-product implications, and reusable pitfalls; use ticket fields/comments for run-specific chronology.
181
-
182
- ## Preserved worktrees
183
-
184
- Use `--worktree` when the agent will edit code. Dispatch creates a normal git worktree and gives the agent that directory as its working directory.
185
-
186
- This solves the ephemeral-agent problem: humans can test the branch/worktree before cleanup.
187
-
188
- Default local shape:
189
-
190
- ```text
191
- <repo>/.worktrees/<board>-<ticket>-<profile>-<shortid>
192
- orbit/<board>-<ticket>-<profile>-<shortid>
193
- ```
194
-
195
- Default remote shape:
196
-
197
- ```text
198
- <repo-parent>/.worktrees/<repo-name>/<run-id>
199
- orbit/<ticket>-<profile>-remote-<shortid>
200
- ```
201
-
202
- `.worktrees/` is ignored by git.
203
-
204
- ## Safe autonomous policy
205
-
206
- The default policy prepends the run directory’s `policy-bin` to the child agent's `PATH`. That directory contains wrappers for commands that should be restricted during an autonomous run.
207
-
208
- Allowed:
209
-
210
- - file reads/searches and local edits
211
- - `git status`, `git diff`, `git log`, `git show`, `git add`, local `git commit`, safe branch inspection/creation
212
- - package test/build/lint/check/typecheck scripts
213
-
214
- Blocked or requiring human approval:
215
-
216
- - Docker
217
- - `git push`
218
- - destructive git commands such as reset, clean, rebase, merge, checkout/switch/restore, tag, cherry-pick, worktree mutation
219
- - package install/publish/version/deploy/release commands
220
- - recursive or force `rm`
221
- - SSH/SCP/rsync
222
- - GitHub CLI
223
- - direct curl/wget network calls
224
- - cloud/deploy CLIs
225
- - `sudo`
226
-
227
- Use `--policy none` only when you intentionally want to dispatch without wrappers.
228
-
229
- ## Agent completion protocol
230
-
231
- The dispatched agent should:
232
-
233
- 1. Run relevant tests and focused manual/API checks.
234
- 2. Commit locally on the dispatch branch.
235
- 3. Put a terse human-readable result in **Work Summary** (`implementation_summary`).
236
- 4. If full detail matters, write a markdown report artifact and link it with `implementation_artifact_path`.
237
- 5. Leave Revisions (`implementation_updates`) blank unless this is a later change/correction after initial implementation; promote the most important code/pattern/project lessons and decisions to board Journal entries.
238
- 6. Add a compact completion comment/run receipt.
239
- 7. Move the card to **Review**, not Done, unless the human explicitly asked for auto-completion.
240
-
241
- ## Installing / enabling the command
242
-
243
- For source installs:
244
-
245
- ```bash
246
- cd /path/to/ss-orbit
247
- pnpm install
248
- pnpm run build:bundle
249
- pnpm link --global
250
- ```
251
-
252
- Then from a project repo with an Orbit board:
253
-
254
- ```bash
255
- orbit init # if the repo does not have a board yet
256
- orbit dispatch --board my-app --ticket 12 --profile agent --worktree --no-spawn
257
- ```
258
-
259
- For support, bug reports, and reproducibility notes, human users can print the installed CLI version with either form:
260
-
261
- ```bash
262
- orbit -v
263
- orbit --version
264
- ```
265
-
266
- ## Operator notes for orchestrators
267
-
268
- - Prefer `orbit dispatch` over writing a temporary handoff prompt file when targeting an Orbit ticket.
269
- - Use a full hosted Orbit ticket URL for the fastest remote path; dispatch will parse the server, board slug, and ticket id.
270
- - Use `--cwd` to point remote dispatch at the local code checkout when the hosted board records another machine’s repo path.
271
- - Use `--dry-run` when you want proof of what would happen without any side effects.
272
- - Use `--no-spawn` when you want to inspect the generated handoff/worktree/comment before starting an agent.
273
- - Use `--worktree` for code edits so the human can test before cleanup.
274
- - Treat the ticket fields as human-visible surfaces:
275
- - AI Plan: terse visible plan summary; full handoff/plan doc lives in human-editable `plan_artifact_path`
276
- - Work Summary: terse visible result summary; full report/evidence doc lives in human-editable `implementation_artifact_path`
277
- - Revisions: terse later corrections/changes after initial implementation only
278
- - Comments: compact run receipts and transient breadcrumbs
279
- - Board Journal: durable reusable project lessons/decisions
280
- - Do not push, deploy, or open PRs from the dispatched agent unless the human explicitly asked for that run to do so.
Binary file
Binary file
@@ -1,13 +0,0 @@
1
- {
2
- "mcpServers": {
3
- "minimal-agent-board": {
4
- "command": "node",
5
- "args": [
6
- "C:/path/to/minimal-agent-board/src/cli/orbit.js",
7
- "mcp",
8
- "--cwd",
9
- "C:/path/to/your/project"
10
- ]
11
- }
12
- }
13
- }
@@ -1,174 +0,0 @@
1
- # Orbit init wizard
2
-
3
- Status: focused implementation spec for ticket #61.
4
-
5
- This replaces the older Mission Control-shaped setup-mode design from Orbit tickets #26 and #27. Keep the useful lesson: `orbit init` should make the first board choice clear. Cut the rest. Orbit setup creates a project board and, optionally, the agent-ready affordances around that board. Suite and Sync concerns stay out.
6
-
7
- ## Goal
8
-
9
- `orbit init` supports two first-pass modes:
10
-
11
- 1. Local board / no AI
12
- 2. AI-assisted board
13
-
14
- Anything beyond those modes belongs to Starscape Suite, Starscape Sync, or an app-specific integration ticket.
15
-
16
- ## Command contract
17
-
18
- These commands must work:
19
-
20
- ```bash
21
- orbit init
22
- orbit init --ai
23
- orbit init --no-ai
24
- ```
25
-
26
- | Command | Mode | Contract |
27
- | --- | --- | --- |
28
- | `orbit init` | AI-assisted board | Backwards-compatible default. |
29
- | `orbit init --ai` | AI-assisted board | Explicit alias for the default. |
30
- | `orbit init --no-ai` | Local board / no AI | No AI collaboration assumptions. |
31
-
32
- Keep existing init flags:
33
-
34
- - `--cwd <dir>` selects the project root.
35
- - `--example` creates onboarding example tickets.
36
-
37
- `SKILL-ORBIT.md` is managed Orbit guidance: `orbit init` writes it, and `orbit run` refreshes registered repo copies on startup. Repo/team customization belongs in `AGENTS.md` or board `agent_instructions`, not in `SKILL-ORBIT.md`.
38
-
39
- Do not add `--multi-ai`, `--output=starlog-authored`, `--starlog`, `--suite`, `--forge`, `--sync`, hosted-service flags, agent-guidance refresh flags, or remote-sync flags in this pass.
40
-
41
- ## Wizard rules
42
-
43
- The first implementation should be clear without breaking scripts:
44
-
45
- - If `--ai` or `--no-ai` is present, do not prompt.
46
- - If running non-interactively, default to AI-assisted board.
47
- - If an interactive prompt is added, Enter chooses AI-assisted board.
48
- - Ask only for local/no-AI vs AI-assisted. Do not ask about Starlog, Suite dashboard, Nebula, Forgejo, Auth, hosted service, Sync links, artifacts, events, or remote sync.
49
-
50
- Suggested prompt:
51
-
52
- ```text
53
- Initialize Orbit for this repo
54
-
55
- Orbit keeps a project board next to your code. Git stays the truth for code;
56
- Orbit becomes the truth for tickets, planning state, handoff, and implementation notes.
57
-
58
- Choose a first-run mode:
59
-
60
- 1. Local board / no AI
61
- A local kanban board. No AI Ready lane or MCP setup step.
62
-
63
- 2. AI-assisted board (recommended)
64
- Adds AI Ready, agent handoff fields, generated agent instructions, and MCP setup guidance.
65
-
66
- Select a mode [2]:
67
- ```
68
-
69
- ## Mode behavior
70
-
71
- ### Local board / no AI
72
-
73
- Triggered by `orbit init --no-ai`.
74
-
75
- Behavior:
76
-
77
- - Create or repair the board database and registry row for the selected project root.
78
- - Persist `ai_enabled = 0`.
79
- - Do not create the `AI Ready` lane.
80
- - Keep ordinary lanes: `Backlog`, `Todo`, `In Progress`, `Review`, `Done`, `Cancelled`.
81
- - Keep Orbit usable for human planning, ticket history, blockers, comments, and implementation notes.
82
- - Generate `AGENTS.md` and `SKILL-ORBIT.md`, but do not present MCP connection as a required next step.
83
- - If `--example` is used, keep example tickets out of AI Ready.
84
-
85
- Success copy should say the board path returned by init, the selected mode, and the next `orbit run` step. It should not imply AI is required.
86
-
87
- ### AI-assisted board
88
-
89
- Triggered by `orbit init` and `orbit init --ai`.
90
-
91
- Behavior:
92
-
93
- - Create or repair the board database and registry row for the selected project root.
94
- - Persist `ai_enabled = 1`.
95
- - Ensure `AI Ready`, `In Progress`, and `Review` exist for agent flow.
96
- - Create/update `AGENTS.md` as the repo-owned pointer and write the managed `SKILL-ORBIT.md` so agents know to read board context, respect blockers, use MCP/API tools, and update `ai_plan`, `implementation_summary`, and `implementation_updates`.
97
- - Print MCP setup guidance after init, including project-root-specific `orbit mcp --cwd <repo>` / `PROJECT_ROOT=<repo>` guidance or the generated client snippet.
98
- - If `--example` is used, stage the stable MCP exercise ticket in `AI Ready`.
99
-
100
- Success copy should say AI collaboration lanes are present and the next step is connecting an agent through MCP.
101
-
102
- ## Generated guidance files
103
-
104
- `orbit init` preserves generation of:
105
-
106
- - `AGENTS.md`
107
- - `SKILL-ORBIT.md`
108
-
109
- `AGENTS.md` should stay terse and repo-owned: when work mentions Orbit/tickets/boards, read `SKILL-ORBIT.md` first. `SKILL-ORBIT.md` is Orbit-managed durable protocol and may be overwritten by `orbit init` or refreshed by `orbit run`; it tells agents to read board context, check blockers, use Orbit API/MCP instead of editing SQLite directly, update implementation fields, and hand off through Review.
110
-
111
- For local/no-AI boards, these files are still useful if an agent later opens the repo, but init output should not frame MCP as mandatory.
112
-
113
- ## MCP setup guidance
114
-
115
- For AI-assisted boards, keep the current guidance:
116
-
117
- - MCP config tells the AI client how to spawn Orbit's helper.
118
- - `AGENTS.md` and `SKILL-ORBIT.md` are normal repo files, not streamed through MCP.
119
- - Persistent MCP configs should use explicit `--cwd <repo>` / `PROJECT_ROOT=<repo>` so the helper attaches to the right board.
120
-
121
- For local/no-AI boards, omit MCP guidance or label it optional later setup.
122
-
123
- ## Board mode metadata
124
-
125
- First pass can keep `boards.ai_enabled` as the source of truth:
126
-
127
- ```text
128
- ai_enabled = 0 -> local board / no AI
129
- ai_enabled = 1 -> AI-assisted board
130
- ```
131
-
132
- If a mode field is added, keep it deliberately small:
133
-
134
- ```json
135
- {
136
- "setup_mode": "ai-assisted",
137
- "setup_schema_version": 1
138
- }
139
- ```
140
-
141
- Allowed `setup_mode` values: `local`, `ai-assisted`.
142
-
143
- Compatibility:
144
-
145
- ```text
146
- missing setup_mode + ai_enabled = 0 -> local
147
- missing setup_mode + ai_enabled = 1 -> ai-assisted
148
- ```
149
-
150
- Do not persist Starlog output mode, Suite profile, Forge mode, Sync mode, hosted Auth state, or remote-sync configuration in Orbit setup metadata.
151
-
152
- ## Explicitly out of scope
153
-
154
- | Deferred concern | Route |
155
- | --- | --- |
156
- | Starscape Suite dashboard, module/plugin setup, unified launcher, ecosystem settings | `ss-suite` #1 |
157
- | Nebula / whiteboard setup | `ss-suite` #1 or the Nebula board |
158
- | Starlog output/reporting mode, authored HTML outputs, templates | Suite/app integration work, not Orbit init |
159
- | Forgejo/Gitea suite mode, local forge provisioning, themed forge navigation | `ss-suite` #1 |
160
- | Starscape Auth, hosted service, cloud accounts, managed hosting | `ss-suite` #1 / hosted-service follow-up |
161
- | Cross-app registry, object identity, links/backrefs, artifacts, activity/events, export/import, remote sync | `ss-sync` #1 |
162
- | Mission Briefs, named agent ecology, wave execution, multi-agent orchestration | Later Orbit Mission Control work, not this wizard |
163
-
164
- Mapping note: Orbit keeps local project boards, generated agent guidance, agent-ready lanes, MCP setup, and ticket implementation records. Suite composition maps to `ss-suite` #1. Registry/link/artifact/event/sync semantics map to `ss-sync` #1.
165
-
166
- ## Implementation checklist for the next build ticket
167
-
168
- - `orbit init`, `orbit init --ai`, and `orbit init --no-ai` all work.
169
- - `orbit init --ai` is an explicit alias for the default AI-assisted path.
170
- - Local/no-AI mode creates no `AI Ready` lane and does not require MCP setup.
171
- - AI-assisted mode keeps AI lanes, generated guidance files, MCP guidance, and example-ticket staging behavior.
172
- - Generated `AGENTS.md` / `SKILL-ORBIT.md` keep agents on Orbit API/MCP rather than direct SQLite edits.
173
- - Setup metadata is limited to `local` / `ai-assisted` plus schema version, or remains derived from `ai_enabled`.
174
- - No Suite, Sync, Starlog, Nebula, Forgejo, Auth, hosted service, artifact, link, event, or remote-sync setup enters Orbit init.
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,93 +0,0 @@
1
- Copyright 2018 The Chakra Petch Project Authors (https://github.com/m4rc1e/Chakra-Petch.git)
2
-
3
- This Font Software is licensed under the SIL Open Font License, Version 1.1.
4
- This license is copied below, and is also available with a FAQ at:
5
- https://openfontlicense.org
6
-
7
-
8
- -----------------------------------------------------------
9
- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10
- -----------------------------------------------------------
11
-
12
- PREAMBLE
13
- The goals of the Open Font License (OFL) are to stimulate worldwide
14
- development of collaborative font projects, to support the font creation
15
- efforts of academic and linguistic communities, and to provide a free and
16
- open framework in which fonts may be shared and improved in partnership
17
- with others.
18
-
19
- The OFL allows the licensed fonts to be used, studied, modified and
20
- redistributed freely as long as they are not sold by themselves. The
21
- fonts, including any derivative works, can be bundled, embedded,
22
- redistributed and/or sold with any software provided that any reserved
23
- names are not used by derivative works. The fonts and derivatives,
24
- however, cannot be released under any other type of license. The
25
- requirement for fonts to remain under this license does not apply
26
- to any document created using the fonts or their derivatives.
27
-
28
- DEFINITIONS
29
- "Font Software" refers to the set of files released by the Copyright
30
- Holder(s) under this license and clearly marked as such. This may
31
- include source files, build scripts and documentation.
32
-
33
- "Reserved Font Name" refers to any names specified as such after the
34
- copyright statement(s).
35
-
36
- "Original Version" refers to the collection of Font Software components as
37
- distributed by the Copyright Holder(s).
38
-
39
- "Modified Version" refers to any derivative made by adding to, deleting,
40
- or substituting -- in part or in whole -- any of the components of the
41
- Original Version, by changing formats or by porting the Font Software to a
42
- new environment.
43
-
44
- "Author" refers to any designer, engineer, programmer, technical
45
- writer or other person who contributed to the Font Software.
46
-
47
- PERMISSION & CONDITIONS
48
- Permission is hereby granted, free of charge, to any person obtaining
49
- a copy of the Font Software, to use, study, copy, merge, embed, modify,
50
- redistribute, and sell modified and unmodified copies of the Font
51
- Software, subject to the following conditions:
52
-
53
- 1) Neither the Font Software nor any of its individual components,
54
- in Original or Modified Versions, may be sold by itself.
55
-
56
- 2) Original or Modified Versions of the Font Software may be bundled,
57
- redistributed and/or sold with any software, provided that each copy
58
- contains the above copyright notice and this license. These can be
59
- included either as stand-alone text files, human-readable headers or
60
- in the appropriate machine-readable metadata fields within text or
61
- binary files as long as those fields can be easily viewed by the user.
62
-
63
- 3) No Modified Version of the Font Software may use the Reserved Font
64
- Name(s) unless explicit written permission is granted by the corresponding
65
- Copyright Holder. This restriction only applies to the primary font name as
66
- presented to the users.
67
-
68
- 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69
- Software shall not be used to promote, endorse or advertise any
70
- Modified Version, except to acknowledge the contribution(s) of the
71
- Copyright Holder(s) and the Author(s) or with their explicit written
72
- permission.
73
-
74
- 5) The Font Software, modified or unmodified, in part or in whole,
75
- must be distributed entirely under this license, and must not be
76
- distributed under any other license. The requirement for fonts to
77
- remain under this license does not apply to any document created
78
- using the Font Software.
79
-
80
- TERMINATION
81
- This license becomes null and void if any of the above conditions are
82
- not met.
83
-
84
- DISCLAIMER
85
- THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88
- OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89
- COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90
- INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91
- DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92
- FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93
- OTHER DEALINGS IN THE FONT SOFTWARE.