@bosun-sh/logbook 1.1.0 → 2.0.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 (461) hide show
  1. package/CHANGELOG.md +145 -0
  2. package/README.md +249 -318
  3. package/bin/logbook.cjs +18 -0
  4. package/dist/context/attachments.d.ts +55 -0
  5. package/dist/context/attachments.d.ts.map +1 -0
  6. package/dist/context/attachments.js +329 -0
  7. package/dist/context/attachments.js.map +1 -0
  8. package/dist/context/create.d.ts +31 -0
  9. package/dist/context/create.d.ts.map +1 -0
  10. package/dist/context/create.js +101 -0
  11. package/dist/context/create.js.map +1 -0
  12. package/dist/context/delete.d.ts +20 -0
  13. package/dist/context/delete.d.ts.map +1 -0
  14. package/dist/context/delete.js +55 -0
  15. package/dist/context/delete.js.map +1 -0
  16. package/dist/context/get.d.ts +20 -0
  17. package/dist/context/get.d.ts.map +1 -0
  18. package/dist/context/get.js +55 -0
  19. package/dist/context/get.js.map +1 -0
  20. package/dist/context/list.d.ts +30 -0
  21. package/dist/context/list.d.ts.map +1 -0
  22. package/dist/context/list.js +172 -0
  23. package/dist/context/list.js.map +1 -0
  24. package/dist/context/schema.d.ts +156 -0
  25. package/dist/context/schema.d.ts.map +1 -0
  26. package/dist/context/schema.js +34 -0
  27. package/dist/context/schema.js.map +1 -0
  28. package/dist/context/search.d.ts +27 -0
  29. package/dist/context/search.d.ts.map +1 -0
  30. package/dist/context/search.js +266 -0
  31. package/dist/context/search.js.map +1 -0
  32. package/dist/context/topics.d.ts +4 -0
  33. package/dist/context/topics.d.ts.map +1 -0
  34. package/dist/context/topics.js +54 -0
  35. package/dist/context/topics.js.map +1 -0
  36. package/dist/context/update.d.ts +29 -0
  37. package/dist/context/update.d.ts.map +1 -0
  38. package/dist/context/update.js +134 -0
  39. package/dist/context/update.js.map +1 -0
  40. package/dist/epic/cascade-delete.d.ts +30 -0
  41. package/dist/epic/cascade-delete.d.ts.map +1 -0
  42. package/dist/epic/cascade-delete.js +173 -0
  43. package/dist/epic/cascade-delete.js.map +1 -0
  44. package/dist/epic/create.d.ts +24 -0
  45. package/dist/epic/create.d.ts.map +1 -0
  46. package/dist/epic/create.js +54 -0
  47. package/dist/epic/create.js.map +1 -0
  48. package/dist/epic/delete.d.ts +21 -0
  49. package/dist/epic/delete.d.ts.map +1 -0
  50. package/dist/epic/delete.js +42 -0
  51. package/dist/epic/delete.js.map +1 -0
  52. package/dist/epic/get.d.ts +19 -0
  53. package/dist/epic/get.d.ts.map +1 -0
  54. package/dist/epic/get.js +31 -0
  55. package/dist/epic/get.js.map +1 -0
  56. package/dist/epic/list.d.ts +25 -0
  57. package/dist/epic/list.d.ts.map +1 -0
  58. package/dist/epic/list.js +114 -0
  59. package/dist/epic/list.js.map +1 -0
  60. package/dist/epic/rules.d.ts +34 -0
  61. package/dist/epic/rules.d.ts.map +1 -0
  62. package/dist/epic/rules.js +127 -0
  63. package/dist/epic/rules.js.map +1 -0
  64. package/dist/epic/schema.d.ts +85 -0
  65. package/dist/epic/schema.d.ts.map +1 -0
  66. package/dist/epic/schema.js +14 -0
  67. package/dist/epic/schema.js.map +1 -0
  68. package/dist/epic/update.d.ts +25 -0
  69. package/dist/epic/update.d.ts.map +1 -0
  70. package/dist/epic/update.js +69 -0
  71. package/dist/epic/update.js.map +1 -0
  72. package/dist/hook/list.d.ts +71 -0
  73. package/dist/hook/list.d.ts.map +1 -0
  74. package/dist/hook/list.js +364 -0
  75. package/dist/hook/list.js.map +1 -0
  76. package/dist/hook/ports.d.ts +16 -0
  77. package/dist/hook/ports.d.ts.map +1 -0
  78. package/dist/hook/ports.js +3 -0
  79. package/dist/hook/ports.js.map +1 -0
  80. package/dist/hook/run.d.ts +24 -0
  81. package/dist/hook/run.d.ts.map +1 -0
  82. package/dist/hook/run.js +185 -0
  83. package/dist/hook/run.js.map +1 -0
  84. package/dist/index.d.ts +31 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/index.js +31 -0
  87. package/dist/index.js.map +1 -0
  88. package/dist/plugin/hook-tools.d.ts +8 -0
  89. package/dist/plugin/hook-tools.d.ts.map +1 -0
  90. package/dist/plugin/hook-tools.js +31 -0
  91. package/dist/plugin/hook-tools.js.map +1 -0
  92. package/dist/plugin/linear-pull-tool.d.ts +20 -0
  93. package/dist/plugin/linear-pull-tool.d.ts.map +1 -0
  94. package/dist/plugin/linear-pull-tool.js +19 -0
  95. package/dist/plugin/linear-pull-tool.js.map +1 -0
  96. package/dist/plugin/linear-push-tool.d.ts +20 -0
  97. package/dist/plugin/linear-push-tool.d.ts.map +1 -0
  98. package/dist/plugin/linear-push-tool.js +27 -0
  99. package/dist/plugin/linear-push-tool.js.map +1 -0
  100. package/dist/plugin/linear-setup-tool.d.ts +2 -0
  101. package/dist/plugin/linear-setup-tool.d.ts.map +1 -0
  102. package/dist/plugin/linear-setup-tool.js +22 -0
  103. package/dist/plugin/linear-setup-tool.js.map +1 -0
  104. package/dist/plugin/linear-status-tool.d.ts +10 -0
  105. package/dist/plugin/linear-status-tool.d.ts.map +1 -0
  106. package/dist/plugin/linear-status-tool.js +10 -0
  107. package/dist/plugin/linear-status-tool.js.map +1 -0
  108. package/dist/plugin/list.d.ts +15 -0
  109. package/dist/plugin/list.d.ts.map +1 -0
  110. package/dist/plugin/list.js +87 -0
  111. package/dist/plugin/list.js.map +1 -0
  112. package/dist/plugin/public-schemas.d.ts +42 -0
  113. package/dist/plugin/public-schemas.d.ts.map +1 -0
  114. package/dist/plugin/public-schemas.js +577 -0
  115. package/dist/plugin/public-schemas.js.map +1 -0
  116. package/dist/plugin/registry.d.ts +3 -0
  117. package/dist/plugin/registry.d.ts.map +1 -0
  118. package/dist/plugin/registry.js +3 -0
  119. package/dist/plugin/registry.js.map +1 -0
  120. package/dist/plugin/results.d.ts +8 -0
  121. package/dist/plugin/results.d.ts.map +1 -0
  122. package/dist/plugin/results.js +114 -0
  123. package/dist/plugin/results.js.map +1 -0
  124. package/dist/plugin/sync-conflict-tools.d.ts +2 -0
  125. package/dist/plugin/sync-conflict-tools.d.ts.map +1 -0
  126. package/dist/plugin/sync-conflict-tools.js +5 -0
  127. package/dist/plugin/sync-conflict-tools.js.map +1 -0
  128. package/dist/plugin/tool-registry.d.ts +23 -0
  129. package/dist/plugin/tool-registry.d.ts.map +1 -0
  130. package/dist/plugin/tool-registry.js +251 -0
  131. package/dist/plugin/tool-registry.js.map +1 -0
  132. package/dist/plugin/workspace-init-tool.d.ts +2 -0
  133. package/dist/plugin/workspace-init-tool.d.ts.map +1 -0
  134. package/dist/plugin/workspace-init-tool.js +16 -0
  135. package/dist/plugin/workspace-init-tool.js.map +1 -0
  136. package/dist/plugin/workspace-status-tool.d.ts +2 -0
  137. package/dist/plugin/workspace-status-tool.d.ts.map +1 -0
  138. package/dist/plugin/workspace-status-tool.js +15 -0
  139. package/dist/plugin/workspace-status-tool.js.map +1 -0
  140. package/dist/shared/ids.d.ts +3 -0
  141. package/dist/shared/ids.d.ts.map +1 -0
  142. package/dist/shared/ids.js +15 -0
  143. package/dist/shared/ids.js.map +1 -0
  144. package/dist/shared/pagination.d.ts +19 -0
  145. package/dist/shared/pagination.d.ts.map +1 -0
  146. package/dist/shared/pagination.js +110 -0
  147. package/dist/shared/pagination.js.map +1 -0
  148. package/dist/shared/result.d.ts +20 -0
  149. package/dist/shared/result.d.ts.map +1 -0
  150. package/dist/shared/result.js +6 -0
  151. package/dist/shared/result.js.map +1 -0
  152. package/dist/shared/schema/value-objects.d.ts +363 -0
  153. package/dist/shared/schema/value-objects.d.ts.map +1 -0
  154. package/dist/shared/schema/value-objects.js +112 -0
  155. package/dist/shared/schema/value-objects.js.map +1 -0
  156. package/dist/shared/storage/atomic-write.d.ts +25 -0
  157. package/dist/shared/storage/atomic-write.d.ts.map +1 -0
  158. package/dist/shared/storage/atomic-write.js +71 -0
  159. package/dist/shared/storage/atomic-write.js.map +1 -0
  160. package/dist/shared/storage/jsonl-repository.d.ts +85 -0
  161. package/dist/shared/storage/jsonl-repository.d.ts.map +1 -0
  162. package/dist/shared/storage/jsonl-repository.js +278 -0
  163. package/dist/shared/storage/jsonl-repository.js.map +1 -0
  164. package/dist/shared/storage/transaction.d.ts +3 -0
  165. package/dist/shared/storage/transaction.d.ts.map +1 -0
  166. package/dist/shared/storage/transaction.js +22 -0
  167. package/dist/shared/storage/transaction.js.map +1 -0
  168. package/dist/shared/time.d.ts +3 -0
  169. package/dist/shared/time.d.ts.map +1 -0
  170. package/dist/shared/time.js +3 -0
  171. package/dist/shared/time.js.map +1 -0
  172. package/dist/shared/version.d.ts +2 -0
  173. package/dist/shared/version.d.ts.map +1 -0
  174. package/dist/shared/version.js +2 -0
  175. package/dist/shared/version.js.map +1 -0
  176. package/dist/story/cascade-delete.d.ts +22 -0
  177. package/dist/story/cascade-delete.d.ts.map +1 -0
  178. package/dist/story/cascade-delete.js +117 -0
  179. package/dist/story/cascade-delete.js.map +1 -0
  180. package/dist/story/create.d.ts +30 -0
  181. package/dist/story/create.d.ts.map +1 -0
  182. package/dist/story/create.js +69 -0
  183. package/dist/story/create.js.map +1 -0
  184. package/dist/story/delete.d.ts +21 -0
  185. package/dist/story/delete.d.ts.map +1 -0
  186. package/dist/story/delete.js +42 -0
  187. package/dist/story/delete.js.map +1 -0
  188. package/dist/story/get.d.ts +19 -0
  189. package/dist/story/get.d.ts.map +1 -0
  190. package/dist/story/get.js +31 -0
  191. package/dist/story/get.js.map +1 -0
  192. package/dist/story/hierarchy.d.ts +20 -0
  193. package/dist/story/hierarchy.d.ts.map +1 -0
  194. package/dist/story/hierarchy.js +30 -0
  195. package/dist/story/hierarchy.js.map +1 -0
  196. package/dist/story/list.d.ts +25 -0
  197. package/dist/story/list.d.ts.map +1 -0
  198. package/dist/story/list.js +118 -0
  199. package/dist/story/list.js.map +1 -0
  200. package/dist/story/rules.d.ts +34 -0
  201. package/dist/story/rules.d.ts.map +1 -0
  202. package/dist/story/rules.js +100 -0
  203. package/dist/story/rules.js.map +1 -0
  204. package/dist/story/schema.d.ts +65 -0
  205. package/dist/story/schema.d.ts.map +1 -0
  206. package/dist/story/schema.js +14 -0
  207. package/dist/story/schema.js.map +1 -0
  208. package/dist/story/update.d.ts +23 -0
  209. package/dist/story/update.d.ts.map +1 -0
  210. package/dist/story/update.js +67 -0
  211. package/dist/story/update.js.map +1 -0
  212. package/dist/sync/base-snapshot.d.ts +38 -0
  213. package/dist/sync/base-snapshot.d.ts.map +1 -0
  214. package/dist/sync/base-snapshot.js +86 -0
  215. package/dist/sync/base-snapshot.js.map +1 -0
  216. package/dist/sync/conflict-tools.d.ts +75 -0
  217. package/dist/sync/conflict-tools.d.ts.map +1 -0
  218. package/dist/sync/conflict-tools.js +53 -0
  219. package/dist/sync/conflict-tools.js.map +1 -0
  220. package/dist/sync/conflicts.d.ts +201 -0
  221. package/dist/sync/conflicts.d.ts.map +1 -0
  222. package/dist/sync/conflicts.js +526 -0
  223. package/dist/sync/conflicts.js.map +1 -0
  224. package/dist/sync/deferred-providers.d.ts +2 -0
  225. package/dist/sync/deferred-providers.d.ts.map +1 -0
  226. package/dist/sync/deferred-providers.js +6 -0
  227. package/dist/sync/deferred-providers.js.map +1 -0
  228. package/dist/sync/events.d.ts +401 -0
  229. package/dist/sync/events.d.ts.map +1 -0
  230. package/dist/sync/events.js +357 -0
  231. package/dist/sync/events.js.map +1 -0
  232. package/dist/sync/external-links.d.ts +154 -0
  233. package/dist/sync/external-links.d.ts.map +1 -0
  234. package/dist/sync/external-links.js +306 -0
  235. package/dist/sync/external-links.js.map +1 -0
  236. package/dist/sync/linear/config.d.ts +60 -0
  237. package/dist/sync/linear/config.d.ts.map +1 -0
  238. package/dist/sync/linear/config.js +302 -0
  239. package/dist/sync/linear/config.js.map +1 -0
  240. package/dist/sync/linear/mapping.d.ts +115 -0
  241. package/dist/sync/linear/mapping.d.ts.map +1 -0
  242. package/dist/sync/linear/mapping.js +159 -0
  243. package/dist/sync/linear/mapping.js.map +1 -0
  244. package/dist/sync/linear/pull.d.ts +33 -0
  245. package/dist/sync/linear/pull.d.ts.map +1 -0
  246. package/dist/sync/linear/pull.js +376 -0
  247. package/dist/sync/linear/pull.js.map +1 -0
  248. package/dist/sync/linear/push.d.ts +34 -0
  249. package/dist/sync/linear/push.d.ts.map +1 -0
  250. package/dist/sync/linear/push.js +681 -0
  251. package/dist/sync/linear/push.js.map +1 -0
  252. package/dist/sync/linear/setup.d.ts +33 -0
  253. package/dist/sync/linear/setup.d.ts.map +1 -0
  254. package/dist/sync/linear/setup.js +129 -0
  255. package/dist/sync/linear/setup.js.map +1 -0
  256. package/dist/sync/linear/status.d.ts +35 -0
  257. package/dist/sync/linear/status.d.ts.map +1 -0
  258. package/dist/sync/linear/status.js +138 -0
  259. package/dist/sync/linear/status.js.map +1 -0
  260. package/dist/sync/linear/transport.d.ts +47 -0
  261. package/dist/sync/linear/transport.d.ts.map +1 -0
  262. package/dist/sync/linear/transport.js +249 -0
  263. package/dist/sync/linear/transport.js.map +1 -0
  264. package/dist/sync/provider-port.d.ts +81 -0
  265. package/dist/sync/provider-port.d.ts.map +1 -0
  266. package/dist/sync/provider-port.js +16 -0
  267. package/dist/sync/provider-port.js.map +1 -0
  268. package/dist/sync/provider-registry.d.ts +38 -0
  269. package/dist/sync/provider-registry.d.ts.map +1 -0
  270. package/dist/sync/provider-registry.js +115 -0
  271. package/dist/sync/provider-registry.js.map +1 -0
  272. package/dist/sync/schema.d.ts +147 -0
  273. package/dist/sync/schema.d.ts.map +1 -0
  274. package/dist/sync/schema.js +28 -0
  275. package/dist/sync/schema.js.map +1 -0
  276. package/dist/task/comments.d.ts +9 -0
  277. package/dist/task/comments.d.ts.map +1 -0
  278. package/dist/task/comments.js +79 -0
  279. package/dist/task/comments.js.map +1 -0
  280. package/dist/task/create.d.ts +34 -0
  281. package/dist/task/create.d.ts.map +1 -0
  282. package/dist/task/create.js +126 -0
  283. package/dist/task/create.js.map +1 -0
  284. package/dist/task/current.d.ts +18 -0
  285. package/dist/task/current.d.ts.map +1 -0
  286. package/dist/task/current.js +105 -0
  287. package/dist/task/current.js.map +1 -0
  288. package/dist/task/edit.d.ts +22 -0
  289. package/dist/task/edit.d.ts.map +1 -0
  290. package/dist/task/edit.js +105 -0
  291. package/dist/task/edit.js.map +1 -0
  292. package/dist/task/estimate.d.ts +20 -0
  293. package/dist/task/estimate.d.ts.map +1 -0
  294. package/dist/task/estimate.js +141 -0
  295. package/dist/task/estimate.js.map +1 -0
  296. package/dist/task/get.d.ts +13 -0
  297. package/dist/task/get.d.ts.map +1 -0
  298. package/dist/task/get.js +29 -0
  299. package/dist/task/get.js.map +1 -0
  300. package/dist/task/hierarchy.d.ts +18 -0
  301. package/dist/task/hierarchy.d.ts.map +1 -0
  302. package/dist/task/hierarchy.js +56 -0
  303. package/dist/task/hierarchy.js.map +1 -0
  304. package/dist/task/lifecycle.d.ts +14 -0
  305. package/dist/task/lifecycle.d.ts.map +1 -0
  306. package/dist/task/lifecycle.js +80 -0
  307. package/dist/task/lifecycle.js.map +1 -0
  308. package/dist/task/list.d.ts +24 -0
  309. package/dist/task/list.d.ts.map +1 -0
  310. package/dist/task/list.js +116 -0
  311. package/dist/task/list.js.map +1 -0
  312. package/dist/task/model-assignment.d.ts +33 -0
  313. package/dist/task/model-assignment.d.ts.map +1 -0
  314. package/dist/task/model-assignment.js +145 -0
  315. package/dist/task/model-assignment.js.map +1 -0
  316. package/dist/task/ordering.d.ts +4 -0
  317. package/dist/task/ordering.d.ts.map +1 -0
  318. package/dist/task/ordering.js +14 -0
  319. package/dist/task/ordering.js.map +1 -0
  320. package/dist/task/ports.d.ts +37 -0
  321. package/dist/task/ports.d.ts.map +1 -0
  322. package/dist/task/ports.js +3 -0
  323. package/dist/task/ports.js.map +1 -0
  324. package/dist/task/schema.d.ts +447 -0
  325. package/dist/task/schema.d.ts.map +1 -0
  326. package/dist/task/schema.js +35 -0
  327. package/dist/task/schema.js.map +1 -0
  328. package/dist/task/session-assignment.d.ts +23 -0
  329. package/dist/task/session-assignment.d.ts.map +1 -0
  330. package/dist/task/session-assignment.js +197 -0
  331. package/dist/task/session-assignment.js.map +1 -0
  332. package/dist/task/session-registry.d.ts +8 -0
  333. package/dist/task/session-registry.d.ts.map +1 -0
  334. package/dist/task/session-registry.js +3 -0
  335. package/dist/task/session-registry.js.map +1 -0
  336. package/dist/task/update.d.ts +23 -0
  337. package/dist/task/update.d.ts.map +1 -0
  338. package/dist/task/update.js +92 -0
  339. package/dist/task/update.js.map +1 -0
  340. package/dist/task/v1-compat.d.ts +94 -0
  341. package/dist/task/v1-compat.d.ts.map +1 -0
  342. package/dist/task/v1-compat.js +181 -0
  343. package/dist/task/v1-compat.js.map +1 -0
  344. package/dist/workspace/bin-cli.d.ts +2 -0
  345. package/dist/workspace/bin-cli.d.ts.map +1 -0
  346. package/dist/workspace/bin-cli.js +36 -0
  347. package/dist/workspace/bin-cli.js.map +1 -0
  348. package/dist/workspace/cli-adapter.d.ts +17 -0
  349. package/dist/workspace/cli-adapter.d.ts.map +1 -0
  350. package/dist/workspace/cli-adapter.js +230 -0
  351. package/dist/workspace/cli-adapter.js.map +1 -0
  352. package/dist/workspace/cli-commands.d.ts +11 -0
  353. package/dist/workspace/cli-commands.d.ts.map +1 -0
  354. package/dist/workspace/cli-commands.js +12 -0
  355. package/dist/workspace/cli-commands.js.map +1 -0
  356. package/dist/workspace/duckdb-index.d.ts +56 -0
  357. package/dist/workspace/duckdb-index.d.ts.map +1 -0
  358. package/dist/workspace/duckdb-index.js +178 -0
  359. package/dist/workspace/duckdb-index.js.map +1 -0
  360. package/dist/workspace/hook-templates/need-info-notify/config.json +10 -0
  361. package/dist/workspace/hook-templates/need-info-notify/script.mjs +68 -0
  362. package/dist/workspace/hook-templates/review-spawn/config.json +10 -0
  363. package/dist/workspace/hook-templates/review-spawn/script.mjs +100 -0
  364. package/dist/workspace/init-onboarding.d.ts +9 -0
  365. package/dist/workspace/init-onboarding.d.ts.map +1 -0
  366. package/dist/workspace/init-onboarding.js +335 -0
  367. package/dist/workspace/init-onboarding.js.map +1 -0
  368. package/dist/workspace/init.d.ts +20 -0
  369. package/dist/workspace/init.d.ts.map +1 -0
  370. package/dist/workspace/init.js +288 -0
  371. package/dist/workspace/init.js.map +1 -0
  372. package/dist/workspace/layers.d.ts +127 -0
  373. package/dist/workspace/layers.d.ts.map +1 -0
  374. package/dist/workspace/layers.js +50 -0
  375. package/dist/workspace/layers.js.map +1 -0
  376. package/dist/workspace/mcp-server.d.ts +28 -0
  377. package/dist/workspace/mcp-server.d.ts.map +1 -0
  378. package/dist/workspace/mcp-server.js +191 -0
  379. package/dist/workspace/mcp-server.js.map +1 -0
  380. package/dist/workspace/mcp-stdio.d.ts +2 -0
  381. package/dist/workspace/mcp-stdio.d.ts.map +1 -0
  382. package/dist/workspace/mcp-stdio.js +66 -0
  383. package/dist/workspace/mcp-stdio.js.map +1 -0
  384. package/dist/workspace/mcp-tools.d.ts +24 -0
  385. package/dist/workspace/mcp-tools.d.ts.map +1 -0
  386. package/dist/workspace/mcp-tools.js +43 -0
  387. package/dist/workspace/mcp-tools.js.map +1 -0
  388. package/dist/workspace/migrate-v1.d.ts +12 -0
  389. package/dist/workspace/migrate-v1.d.ts.map +1 -0
  390. package/dist/workspace/migrate-v1.js +301 -0
  391. package/dist/workspace/migrate-v1.js.map +1 -0
  392. package/dist/workspace/ohtools-app.d.ts +3 -0
  393. package/dist/workspace/ohtools-app.d.ts.map +1 -0
  394. package/dist/workspace/ohtools-app.js +10 -0
  395. package/dist/workspace/ohtools-app.js.map +1 -0
  396. package/dist/workspace/repositories.d.ts +25 -0
  397. package/dist/workspace/repositories.d.ts.map +1 -0
  398. package/dist/workspace/repositories.js +76 -0
  399. package/dist/workspace/repositories.js.map +1 -0
  400. package/dist/workspace/runtime.d.ts +123 -0
  401. package/dist/workspace/runtime.d.ts.map +1 -0
  402. package/dist/workspace/runtime.js +4 -0
  403. package/dist/workspace/runtime.js.map +1 -0
  404. package/dist/workspace/session-liveness.d.ts +6 -0
  405. package/dist/workspace/session-liveness.d.ts.map +1 -0
  406. package/dist/workspace/session-liveness.js +3 -0
  407. package/dist/workspace/session-liveness.js.map +1 -0
  408. package/dist/workspace/status.d.ts +46 -0
  409. package/dist/workspace/status.d.ts.map +1 -0
  410. package/dist/workspace/status.js +345 -0
  411. package/dist/workspace/status.js.map +1 -0
  412. package/dist/workspace/storage-layout.d.ts +19 -0
  413. package/dist/workspace/storage-layout.d.ts.map +1 -0
  414. package/dist/workspace/storage-layout.js +55 -0
  415. package/dist/workspace/storage-layout.js.map +1 -0
  416. package/dist/workspace/storage-paths.d.ts +16 -0
  417. package/dist/workspace/storage-paths.d.ts.map +1 -0
  418. package/dist/workspace/storage-paths.js +15 -0
  419. package/dist/workspace/storage-paths.js.map +1 -0
  420. package/dist/workspace/v1-cli-aliases.d.ts +18 -0
  421. package/dist/workspace/v1-cli-aliases.d.ts.map +1 -0
  422. package/dist/workspace/v1-cli-aliases.js +223 -0
  423. package/dist/workspace/v1-cli-aliases.js.map +1 -0
  424. package/dist/workspace/v1-cli-task.d.ts +2 -0
  425. package/dist/workspace/v1-cli-task.d.ts.map +1 -0
  426. package/dist/workspace/v1-cli-task.js +53 -0
  427. package/dist/workspace/v1-cli-task.js.map +1 -0
  428. package/package.json +29 -12
  429. package/quickstart.md +174 -0
  430. package/hooks/need-info-notify/config.yml +0 -3
  431. package/hooks/need-info-notify/script.ts +0 -69
  432. package/hooks/review-spawn/config.yml +0 -3
  433. package/hooks/review-spawn/script.ts +0 -96
  434. package/src/cli/cli.ts +0 -489
  435. package/src/cli/init.ts +0 -230
  436. package/src/domain/fibonacci.ts +0 -39
  437. package/src/domain/kTokens.ts +0 -65
  438. package/src/domain/status-machine.ts +0 -49
  439. package/src/domain/types.ts +0 -66
  440. package/src/hook/hook-executor.ts +0 -70
  441. package/src/hook/ports.ts +0 -16
  442. package/src/infra/hook-config-loader.ts +0 -111
  443. package/src/infra/jsonl-task-repository.ts +0 -157
  444. package/src/infra/layer.ts +0 -34
  445. package/src/infra/logger.ts +0 -40
  446. package/src/infra/pid-session-registry.ts +0 -67
  447. package/src/mcp/error-codes.ts +0 -213
  448. package/src/mcp/server.ts +0 -396
  449. package/src/mcp/session.ts +0 -1
  450. package/src/mcp/tool-create-task.ts +0 -28
  451. package/src/mcp/tool-current-task.ts +0 -19
  452. package/src/mcp/tool-edit-task.ts +0 -40
  453. package/src/mcp/tool-list-tasks.ts +0 -34
  454. package/src/mcp/tool-update-task.ts +0 -55
  455. package/src/task/create-task.ts +0 -67
  456. package/src/task/current-task.ts +0 -111
  457. package/src/task/edit-task.ts +0 -59
  458. package/src/task/list-tasks.ts +0 -35
  459. package/src/task/ports.ts +0 -15
  460. package/src/task/session-registry.ts +0 -9
  461. package/src/task/update-task.ts +0 -160
@@ -0,0 +1,110 @@
1
+ const MAX_CURSOR_BYTES = 2_048;
2
+ const validationError = (message, details) => ({
3
+ ok: false,
4
+ error: {
5
+ code: "validation_error",
6
+ message,
7
+ ...(details === undefined ? {} : { details }),
8
+ },
9
+ });
10
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
11
+ const sortValueKind = (value) => {
12
+ if (value === null) {
13
+ return "null";
14
+ }
15
+ switch (typeof value) {
16
+ case "string":
17
+ return "string";
18
+ case "number":
19
+ return "number";
20
+ case "boolean":
21
+ return "boolean";
22
+ case "undefined":
23
+ return "undefined";
24
+ default:
25
+ return "object";
26
+ }
27
+ };
28
+ const assertCursorPayload = (value, options) => {
29
+ if (!isRecord(value)) {
30
+ return validationError("cursor payload must be an object");
31
+ }
32
+ if (typeof value.kind !== "string" || typeof value.lastId !== "string") {
33
+ return validationError("cursor payload is missing required fields");
34
+ }
35
+ if (!Array.isArray(value.lastSort)) {
36
+ return validationError("cursor payload lastSort must be an array");
37
+ }
38
+ if (value.kind !== options.kind) {
39
+ return validationError("cursor kind does not match operation", {
40
+ expected: options.kind,
41
+ actual: value.kind,
42
+ });
43
+ }
44
+ if (value.lastSort.length !== options.sortShape.length) {
45
+ return validationError("cursor sort shape does not match operation", {
46
+ expected: options.sortShape,
47
+ actualLength: value.lastSort.length,
48
+ });
49
+ }
50
+ for (let index = 0; index < options.sortShape.length; index += 1) {
51
+ const actual = sortValueKind(value.lastSort[index]);
52
+ const expected = options.sortShape[index];
53
+ if (actual !== expected) {
54
+ return validationError("cursor sort shape does not match operation", {
55
+ index,
56
+ expected,
57
+ actual,
58
+ });
59
+ }
60
+ }
61
+ if (Object.hasOwn(value, "providerCursor") &&
62
+ typeof value.providerCursor !== "undefined" &&
63
+ typeof value.providerCursor !== "string") {
64
+ return validationError("cursor providerCursor must be a string");
65
+ }
66
+ return {
67
+ ok: true,
68
+ data: {
69
+ kind: value.kind,
70
+ lastId: value.lastId,
71
+ lastSort: value.lastSort,
72
+ ...(typeof value.providerCursor === "string" ? { providerCursor: value.providerCursor } : {}),
73
+ },
74
+ };
75
+ };
76
+ export const PageCursor = {
77
+ encode(payload) {
78
+ const json = JSON.stringify(payload);
79
+ const encoded = Buffer.from(json, "utf8").toString("base64url");
80
+ if (Buffer.byteLength(encoded, "utf8") > MAX_CURSOR_BYTES) {
81
+ return validationError("cursor exceeds maximum encoded size", {
82
+ maxBytes: MAX_CURSOR_BYTES,
83
+ });
84
+ }
85
+ return {
86
+ ok: true,
87
+ data: encoded,
88
+ };
89
+ },
90
+ decode(cursor, options) {
91
+ if (Buffer.byteLength(cursor, "utf8") > MAX_CURSOR_BYTES) {
92
+ return validationError("cursor exceeds maximum encoded size", {
93
+ maxBytes: MAX_CURSOR_BYTES,
94
+ });
95
+ }
96
+ if (!/^[A-Za-z0-9_-]+$/.test(cursor)) {
97
+ return validationError("cursor must be base64url encoded");
98
+ }
99
+ let parsed;
100
+ try {
101
+ const json = Buffer.from(cursor, "base64url").toString("utf8");
102
+ parsed = JSON.parse(json);
103
+ }
104
+ catch {
105
+ return validationError("cursor must decode to JSON");
106
+ }
107
+ return assertCursorPayload(parsed, options);
108
+ },
109
+ };
110
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/shared/pagination.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ type ToolWarning = {
2
+ readonly code: string;
3
+ readonly message: string;
4
+ readonly details?: Record<string, unknown>;
5
+ };
6
+ type ToolError = {
7
+ readonly code: string;
8
+ readonly message: string;
9
+ readonly details?: Record<string, unknown>;
10
+ };
11
+ export type ToolResult<T> = {
12
+ readonly ok: true;
13
+ readonly data: T;
14
+ readonly warnings?: ToolWarning[];
15
+ } | {
16
+ readonly ok: false;
17
+ readonly error: ToolError;
18
+ };
19
+ export {};
20
+ //# sourceMappingURL=result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/shared/result.ts"],"names":[],"mappings":"AAAA,KAAK,WAAW,GAAG;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC3C,CAAA;AAED,KAAK,SAAS,GAAG;IACf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC3C,CAAA;AAKD,MAAM,MAAM,UAAU,CAAC,CAAC,IACpB;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;IACjB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAA;CAClC,GACD;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;IAClB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;CAC1B,CAAA"}
@@ -0,0 +1,6 @@
1
+ const MAX_WARNING_COUNT = 20;
2
+ const MAX_ERROR_DETAIL_BYTES = 65_536;
3
+ void MAX_WARNING_COUNT;
4
+ void MAX_ERROR_DETAIL_BYTES;
5
+ export {};
6
+ //# sourceMappingURL=result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/shared/result.ts"],"names":[],"mappings":"AAYA,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAC5B,MAAM,sBAAsB,GAAG,MAAM,CAAA;AAarC,KAAK,iBAAiB,CAAA;AACtB,KAAK,sBAAsB,CAAA"}
@@ -0,0 +1,363 @@
1
+ import { z } from "zod";
2
+ export declare const TitleSchema: z.ZodEffects<z.ZodString, string, string>;
3
+ export declare const CommentContentSchema: z.ZodEffects<z.ZodString, string, string>;
4
+ export declare const DefinitionOfDoneSchema: z.ZodEffects<z.ZodString, string, string>;
5
+ export declare const IsoDateTimeSchema: z.ZodString;
6
+ export declare const EntityMetaSchema: z.ZodObject<{
7
+ id: z.ZodString;
8
+ schemaVersion: z.ZodLiteral<"2">;
9
+ createdAt: z.ZodString;
10
+ updatedAt: z.ZodString;
11
+ deletedAt: z.ZodOptional<z.ZodString>;
12
+ }, "strict", z.ZodTypeAny, {
13
+ id: string;
14
+ schemaVersion: "2";
15
+ createdAt: string;
16
+ updatedAt: string;
17
+ deletedAt?: string | undefined;
18
+ }, {
19
+ id: string;
20
+ schemaVersion: "2";
21
+ createdAt: string;
22
+ updatedAt: string;
23
+ deletedAt?: string | undefined;
24
+ }>;
25
+ export type EntityMeta = z.infer<typeof EntityMetaSchema>;
26
+ export declare const AssignmentSchema: z.ZodObject<{
27
+ id: z.ZodString;
28
+ title: z.ZodEffects<z.ZodString, string, string>;
29
+ description: z.ZodOptional<z.ZodString>;
30
+ }, "strict", z.ZodTypeAny, {
31
+ id: string;
32
+ title: string;
33
+ description?: string | undefined;
34
+ }, {
35
+ id: string;
36
+ title: string;
37
+ description?: string | undefined;
38
+ }>;
39
+ export type Assignment = z.infer<typeof AssignmentSchema>;
40
+ export declare const ModelAssignmentSchema: z.ZodObject<{
41
+ id: z.ZodString;
42
+ provider: z.ZodOptional<z.ZodString>;
43
+ reason: z.ZodOptional<z.ZodString>;
44
+ }, "strict", z.ZodTypeAny, {
45
+ id: string;
46
+ provider?: string | undefined;
47
+ reason?: string | undefined;
48
+ }, {
49
+ id: string;
50
+ provider?: string | undefined;
51
+ reason?: string | undefined;
52
+ }>;
53
+ export type ModelAssignment = z.infer<typeof ModelAssignmentSchema>;
54
+ export declare const TaskPhaseSchema: z.ZodEnum<["plan", "test", "dev", "validate"]>;
55
+ export type TaskPhase = z.infer<typeof TaskPhaseSchema>;
56
+ export declare const TaskEstimateSchema: z.ZodObject<{
57
+ predictedKTokens: z.ZodNumber;
58
+ complexity: z.ZodEnum<["trivial", "small", "medium", "large", "complex"]>;
59
+ fibonacci: z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<5>, z.ZodLiteral<8>, z.ZodLiteral<13>, z.ZodLiteral<21>]>;
60
+ confidence: z.ZodEnum<["low", "medium", "high"]>;
61
+ rationale: z.ZodOptional<z.ZodString>;
62
+ }, "strict", z.ZodTypeAny, {
63
+ predictedKTokens: number;
64
+ complexity: "small" | "trivial" | "medium" | "large" | "complex";
65
+ fibonacci: 1 | 2 | 3 | 5 | 8 | 13 | 21;
66
+ confidence: "medium" | "low" | "high";
67
+ rationale?: string | undefined;
68
+ }, {
69
+ predictedKTokens: number;
70
+ complexity: "small" | "trivial" | "medium" | "large" | "complex";
71
+ fibonacci: 1 | 2 | 3 | 5 | 8 | 13 | 21;
72
+ confidence: "medium" | "low" | "high";
73
+ rationale?: string | undefined;
74
+ }>;
75
+ export type TaskEstimate = z.infer<typeof TaskEstimateSchema>;
76
+ export declare const CommentReplySchema: z.ZodObject<{
77
+ id: z.ZodString;
78
+ content: z.ZodEffects<z.ZodString, string, string>;
79
+ createdAt: z.ZodString;
80
+ author: z.ZodOptional<z.ZodObject<{
81
+ id: z.ZodString;
82
+ title: z.ZodEffects<z.ZodString, string, string>;
83
+ description: z.ZodOptional<z.ZodString>;
84
+ }, "strict", z.ZodTypeAny, {
85
+ id: string;
86
+ title: string;
87
+ description?: string | undefined;
88
+ }, {
89
+ id: string;
90
+ title: string;
91
+ description?: string | undefined;
92
+ }>>;
93
+ }, "strict", z.ZodTypeAny, {
94
+ id: string;
95
+ content: string;
96
+ createdAt: string;
97
+ author?: {
98
+ id: string;
99
+ title: string;
100
+ description?: string | undefined;
101
+ } | undefined;
102
+ }, {
103
+ id: string;
104
+ content: string;
105
+ createdAt: string;
106
+ author?: {
107
+ id: string;
108
+ title: string;
109
+ description?: string | undefined;
110
+ } | undefined;
111
+ }>;
112
+ export type CommentReply = z.infer<typeof CommentReplySchema>;
113
+ export declare const CommentSchema: z.ZodObject<{
114
+ id: z.ZodString;
115
+ title: z.ZodEffects<z.ZodString, string, string>;
116
+ content: z.ZodEffects<z.ZodString, string, string>;
117
+ kind: z.ZodEnum<["regular", "need_info", "review", "sync"]>;
118
+ createdAt: z.ZodString;
119
+ author: z.ZodOptional<z.ZodObject<{
120
+ id: z.ZodString;
121
+ title: z.ZodEffects<z.ZodString, string, string>;
122
+ description: z.ZodOptional<z.ZodString>;
123
+ }, "strict", z.ZodTypeAny, {
124
+ id: string;
125
+ title: string;
126
+ description?: string | undefined;
127
+ }, {
128
+ id: string;
129
+ title: string;
130
+ description?: string | undefined;
131
+ }>>;
132
+ replies: z.ZodArray<z.ZodObject<{
133
+ id: z.ZodString;
134
+ content: z.ZodEffects<z.ZodString, string, string>;
135
+ createdAt: z.ZodString;
136
+ author: z.ZodOptional<z.ZodObject<{
137
+ id: z.ZodString;
138
+ title: z.ZodEffects<z.ZodString, string, string>;
139
+ description: z.ZodOptional<z.ZodString>;
140
+ }, "strict", z.ZodTypeAny, {
141
+ id: string;
142
+ title: string;
143
+ description?: string | undefined;
144
+ }, {
145
+ id: string;
146
+ title: string;
147
+ description?: string | undefined;
148
+ }>>;
149
+ }, "strict", z.ZodTypeAny, {
150
+ id: string;
151
+ content: string;
152
+ createdAt: string;
153
+ author?: {
154
+ id: string;
155
+ title: string;
156
+ description?: string | undefined;
157
+ } | undefined;
158
+ }, {
159
+ id: string;
160
+ content: string;
161
+ createdAt: string;
162
+ author?: {
163
+ id: string;
164
+ title: string;
165
+ description?: string | undefined;
166
+ } | undefined;
167
+ }>, "many">;
168
+ }, "strict", z.ZodTypeAny, {
169
+ id: string;
170
+ kind: "regular" | "need_info" | "review" | "sync";
171
+ title: string;
172
+ content: string;
173
+ createdAt: string;
174
+ replies: {
175
+ id: string;
176
+ content: string;
177
+ createdAt: string;
178
+ author?: {
179
+ id: string;
180
+ title: string;
181
+ description?: string | undefined;
182
+ } | undefined;
183
+ }[];
184
+ author?: {
185
+ id: string;
186
+ title: string;
187
+ description?: string | undefined;
188
+ } | undefined;
189
+ }, {
190
+ id: string;
191
+ kind: "regular" | "need_info" | "review" | "sync";
192
+ title: string;
193
+ content: string;
194
+ createdAt: string;
195
+ replies: {
196
+ id: string;
197
+ content: string;
198
+ createdAt: string;
199
+ author?: {
200
+ id: string;
201
+ title: string;
202
+ description?: string | undefined;
203
+ } | undefined;
204
+ }[];
205
+ author?: {
206
+ id: string;
207
+ title: string;
208
+ description?: string | undefined;
209
+ } | undefined;
210
+ }>;
211
+ export type Comment = z.infer<typeof CommentSchema>;
212
+ export declare const ContextAttachmentSchema: z.ZodObject<{
213
+ kind: z.ZodEnum<["epic", "story", "task", "topic"]>;
214
+ id: z.ZodString;
215
+ }, "strict", z.ZodTypeAny, {
216
+ id: string;
217
+ kind: "epic" | "story" | "task" | "topic";
218
+ }, {
219
+ id: string;
220
+ kind: "epic" | "story" | "task" | "topic";
221
+ }>;
222
+ export type ContextAttachment = z.infer<typeof ContextAttachmentSchema>;
223
+ export declare const ExternalProviderSchema: z.ZodString;
224
+ export type ExternalProvider = z.infer<typeof ExternalProviderSchema>;
225
+ export declare const ExternalLinkRefSchema: z.ZodObject<{
226
+ provider: z.ZodString;
227
+ externalLinkId: z.ZodString;
228
+ }, "strict", z.ZodTypeAny, {
229
+ provider: string;
230
+ externalLinkId: string;
231
+ }, {
232
+ provider: string;
233
+ externalLinkId: string;
234
+ }>;
235
+ export type ExternalLinkRef = z.infer<typeof ExternalLinkRefSchema>;
236
+ export declare const SyncConflictFieldSchema: z.ZodObject<{
237
+ path: z.ZodString;
238
+ localValue: z.ZodUnknown;
239
+ remoteValue: z.ZodUnknown;
240
+ baseValue: z.ZodOptional<z.ZodUnknown>;
241
+ }, "strict", z.ZodTypeAny, {
242
+ path: string;
243
+ localValue?: unknown;
244
+ remoteValue?: unknown;
245
+ baseValue?: unknown;
246
+ }, {
247
+ path: string;
248
+ localValue?: unknown;
249
+ remoteValue?: unknown;
250
+ baseValue?: unknown;
251
+ }>;
252
+ export type SyncConflictField = z.infer<typeof SyncConflictFieldSchema>;
253
+ export declare const LocalRecordKindSchema: z.ZodEnum<["epic", "story", "task", "context_entry"]>;
254
+ export type LocalRecordKind = z.infer<typeof LocalRecordKindSchema>;
255
+ export declare const LocalRecordRefSchema: z.ZodObject<{
256
+ kind: z.ZodEnum<["epic", "story", "task", "context_entry"]>;
257
+ id: z.ZodString;
258
+ }, "strict", z.ZodTypeAny, {
259
+ id: string;
260
+ kind: "epic" | "story" | "task" | "context_entry";
261
+ }, {
262
+ id: string;
263
+ kind: "epic" | "story" | "task" | "context_entry";
264
+ }>;
265
+ export type LocalRecordRef = z.infer<typeof LocalRecordRefSchema>;
266
+ export declare const TaskPhaseModelOverridesSchema: z.ZodObject<{
267
+ plan: z.ZodOptional<z.ZodObject<{
268
+ id: z.ZodString;
269
+ provider: z.ZodOptional<z.ZodString>;
270
+ reason: z.ZodOptional<z.ZodString>;
271
+ }, "strict", z.ZodTypeAny, {
272
+ id: string;
273
+ provider?: string | undefined;
274
+ reason?: string | undefined;
275
+ }, {
276
+ id: string;
277
+ provider?: string | undefined;
278
+ reason?: string | undefined;
279
+ }>>;
280
+ test: z.ZodOptional<z.ZodObject<{
281
+ id: z.ZodString;
282
+ provider: z.ZodOptional<z.ZodString>;
283
+ reason: z.ZodOptional<z.ZodString>;
284
+ }, "strict", z.ZodTypeAny, {
285
+ id: string;
286
+ provider?: string | undefined;
287
+ reason?: string | undefined;
288
+ }, {
289
+ id: string;
290
+ provider?: string | undefined;
291
+ reason?: string | undefined;
292
+ }>>;
293
+ dev: z.ZodOptional<z.ZodObject<{
294
+ id: z.ZodString;
295
+ provider: z.ZodOptional<z.ZodString>;
296
+ reason: z.ZodOptional<z.ZodString>;
297
+ }, "strict", z.ZodTypeAny, {
298
+ id: string;
299
+ provider?: string | undefined;
300
+ reason?: string | undefined;
301
+ }, {
302
+ id: string;
303
+ provider?: string | undefined;
304
+ reason?: string | undefined;
305
+ }>>;
306
+ validate: z.ZodOptional<z.ZodObject<{
307
+ id: z.ZodString;
308
+ provider: z.ZodOptional<z.ZodString>;
309
+ reason: z.ZodOptional<z.ZodString>;
310
+ }, "strict", z.ZodTypeAny, {
311
+ id: string;
312
+ provider?: string | undefined;
313
+ reason?: string | undefined;
314
+ }, {
315
+ id: string;
316
+ provider?: string | undefined;
317
+ reason?: string | undefined;
318
+ }>>;
319
+ }, "strict", z.ZodTypeAny, {
320
+ plan?: {
321
+ id: string;
322
+ provider?: string | undefined;
323
+ reason?: string | undefined;
324
+ } | undefined;
325
+ test?: {
326
+ id: string;
327
+ provider?: string | undefined;
328
+ reason?: string | undefined;
329
+ } | undefined;
330
+ dev?: {
331
+ id: string;
332
+ provider?: string | undefined;
333
+ reason?: string | undefined;
334
+ } | undefined;
335
+ validate?: {
336
+ id: string;
337
+ provider?: string | undefined;
338
+ reason?: string | undefined;
339
+ } | undefined;
340
+ }, {
341
+ plan?: {
342
+ id: string;
343
+ provider?: string | undefined;
344
+ reason?: string | undefined;
345
+ } | undefined;
346
+ test?: {
347
+ id: string;
348
+ provider?: string | undefined;
349
+ reason?: string | undefined;
350
+ } | undefined;
351
+ dev?: {
352
+ id: string;
353
+ provider?: string | undefined;
354
+ reason?: string | undefined;
355
+ } | undefined;
356
+ validate?: {
357
+ id: string;
358
+ provider?: string | undefined;
359
+ reason?: string | undefined;
360
+ } | undefined;
361
+ }>;
362
+ export type TaskPhaseModelOverrides = z.infer<typeof TaskPhaseModelOverridesSchema>;
363
+ //# sourceMappingURL=value-objects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-objects.d.ts","sourceRoot":"","sources":["../../../src/shared/schema/value-objects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAgBvB,eAAO,MAAM,WAAW,2CAAoC,CAAA;AAC5D,eAAO,MAAM,oBAAoB,2CAAyC,CAAA;AAC1E,eAAO,MAAM,sBAAsB,2CAAkD,CAAA;AACrF,eAAO,MAAM,iBAAiB,aAAwC,CAAA;AAEtE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;EAQlB,CAAA;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAEzD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAMlB,CAAA;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAEzD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAMvB,CAAA;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEnE,eAAO,MAAM,eAAe,gDAA8C,CAAA;AAC1E,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAEvD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;EAgBpB,CAAA;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE7D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOpB,CAAA;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE7D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUf,CAAA;AAEX,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AAEnD,eAAO,MAAM,uBAAuB;;;;;;;;;EAKzB,CAAA;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAEvE,eAAO,MAAM,sBAAsB,aAAoB,CAAA;AACvD,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAErE,eAAO,MAAM,qBAAqB;;;;;;;;;EAKvB,CAAA;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEnE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EAOzB,CAAA;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAEvE,eAAO,MAAM,qBAAqB,uDAAqD,CAAA;AACvF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEnE,eAAO,MAAM,oBAAoB;;;;;;;;;EAKtB,CAAA;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEjE,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO/B,CAAA;AAEX,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAA"}
@@ -0,0 +1,112 @@
1
+ import { z } from "zod";
2
+ const textEncoder = new TextEncoder();
3
+ const byteLength = (value) => textEncoder.encode(value).length;
4
+ const stringWithByteLimit = (field, maxBytes) => z.string().superRefine((value, ctx) => {
5
+ if (byteLength(value) > maxBytes) {
6
+ ctx.addIssue({
7
+ code: z.ZodIssueCode.custom,
8
+ message: `${field} exceeds ${maxBytes} bytes`,
9
+ });
10
+ }
11
+ });
12
+ export const TitleSchema = stringWithByteLimit("title", 512);
13
+ export const CommentContentSchema = stringWithByteLimit("content", 65_536);
14
+ export const DefinitionOfDoneSchema = stringWithByteLimit("definitionOfDone", 65_536);
15
+ export const IsoDateTimeSchema = z.string().datetime({ offset: true });
16
+ export const EntityMetaSchema = z
17
+ .object({
18
+ id: z.string().min(1),
19
+ schemaVersion: z.literal("2"),
20
+ createdAt: IsoDateTimeSchema,
21
+ updatedAt: IsoDateTimeSchema,
22
+ deletedAt: IsoDateTimeSchema.optional(),
23
+ })
24
+ .strict();
25
+ export const AssignmentSchema = z
26
+ .object({
27
+ id: z.string().min(1),
28
+ title: TitleSchema,
29
+ description: z.string().optional(),
30
+ })
31
+ .strict();
32
+ export const ModelAssignmentSchema = z
33
+ .object({
34
+ id: z.string().min(1),
35
+ provider: z.string().min(1).optional(),
36
+ reason: z.string().optional(),
37
+ })
38
+ .strict();
39
+ export const TaskPhaseSchema = z.enum(["plan", "test", "dev", "validate"]);
40
+ export const TaskEstimateSchema = z
41
+ .object({
42
+ predictedKTokens: z.number().nonnegative(),
43
+ complexity: z.enum(["trivial", "small", "medium", "large", "complex"]),
44
+ fibonacci: z.union([
45
+ z.literal(1),
46
+ z.literal(2),
47
+ z.literal(3),
48
+ z.literal(5),
49
+ z.literal(8),
50
+ z.literal(13),
51
+ z.literal(21),
52
+ ]),
53
+ confidence: z.enum(["low", "medium", "high"]),
54
+ rationale: z.string().optional(),
55
+ })
56
+ .strict();
57
+ export const CommentReplySchema = z
58
+ .object({
59
+ id: z.string().min(1),
60
+ content: CommentContentSchema,
61
+ createdAt: IsoDateTimeSchema,
62
+ author: AssignmentSchema.optional(),
63
+ })
64
+ .strict();
65
+ export const CommentSchema = z
66
+ .object({
67
+ id: z.string().min(1),
68
+ title: TitleSchema,
69
+ content: CommentContentSchema,
70
+ kind: z.enum(["regular", "need_info", "review", "sync"]),
71
+ createdAt: IsoDateTimeSchema,
72
+ author: AssignmentSchema.optional(),
73
+ replies: z.array(CommentReplySchema),
74
+ })
75
+ .strict();
76
+ export const ContextAttachmentSchema = z
77
+ .object({
78
+ kind: z.enum(["epic", "story", "task", "topic"]),
79
+ id: z.string().min(1),
80
+ })
81
+ .strict();
82
+ export const ExternalProviderSchema = z.string().min(1);
83
+ export const ExternalLinkRefSchema = z
84
+ .object({
85
+ provider: ExternalProviderSchema,
86
+ externalLinkId: z.string().min(1),
87
+ })
88
+ .strict();
89
+ export const SyncConflictFieldSchema = z
90
+ .object({
91
+ path: z.string().min(1),
92
+ localValue: z.unknown(),
93
+ remoteValue: z.unknown(),
94
+ baseValue: z.unknown().optional(),
95
+ })
96
+ .strict();
97
+ export const LocalRecordKindSchema = z.enum(["epic", "story", "task", "context_entry"]);
98
+ export const LocalRecordRefSchema = z
99
+ .object({
100
+ kind: LocalRecordKindSchema,
101
+ id: z.string().min(1),
102
+ })
103
+ .strict();
104
+ export const TaskPhaseModelOverridesSchema = z
105
+ .object({
106
+ plan: ModelAssignmentSchema.optional(),
107
+ test: ModelAssignmentSchema.optional(),
108
+ dev: ModelAssignmentSchema.optional(),
109
+ validate: ModelAssignmentSchema.optional(),
110
+ })
111
+ .strict();
112
+ //# sourceMappingURL=value-objects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-objects.js","sourceRoot":"","sources":["../../../src/shared/schema/value-objects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;AAErC,MAAM,UAAU,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAA;AAE9E,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAE,EAAE,CAC9D,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACpC,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,QAAQ,EAAE,CAAC;QACjC,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,GAAG,KAAK,YAAY,QAAQ,QAAQ;SAC9C,CAAC,CAAA;IACJ,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AAC5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAA;AACrF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;AAEtE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IAC7B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,iBAAiB,CAAC,QAAQ,EAAE;CACxC,CAAC;KACD,MAAM,EAAE,CAAA;AAIX,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,KAAK,EAAE,WAAW;IAClB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC;KACD,MAAM,EAAE,CAAA;AAIX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC;KACD,MAAM,EAAE,CAAA;AAIX,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAA;AAG1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IAC1C,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACtE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC;QACjB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QACb,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;KACd,CAAC;IACF,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC;KACD,MAAM,EAAE,CAAA;AAIX,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,OAAO,EAAE,oBAAoB;IAC7B,SAAS,EAAE,iBAAiB;IAC5B,MAAM,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CACpC,CAAC;KACD,MAAM,EAAE,CAAA;AAIX,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE,oBAAoB;IAC7B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxD,SAAS,EAAE,iBAAiB;IAC5B,MAAM,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACnC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;CACrC,CAAC;KACD,MAAM,EAAE,CAAA;AAIX,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACtB,CAAC;KACD,MAAM,EAAE,CAAA;AAIX,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAGvD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,QAAQ,EAAE,sBAAsB;IAChC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAClC,CAAC;KACD,MAAM,EAAE,CAAA;AAIX,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;IACvB,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE;IACxB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC;KACD,MAAM,EAAE,CAAA;AAIX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAA;AAGvF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,IAAI,EAAE,qBAAqB;IAC3B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACtB,CAAC;KACD,MAAM,EAAE,CAAA;AAIX,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC;KAC3C,MAAM,CAAC;IACN,IAAI,EAAE,qBAAqB,CAAC,QAAQ,EAAE;IACtC,IAAI,EAAE,qBAAqB,CAAC,QAAQ,EAAE;IACtC,GAAG,EAAE,qBAAqB,CAAC,QAAQ,EAAE;IACrC,QAAQ,EAAE,qBAAqB,CAAC,QAAQ,EAAE;CAC3C,CAAC;KACD,MAAM,EAAE,CAAA"}
@@ -0,0 +1,25 @@
1
+ import { open, rename as renameFile, writeFile } from "node:fs/promises";
2
+ import { Effect } from "effect";
3
+ import { withCanonicalWriteLock } from "./transaction.js";
4
+ type AtomicWriteIo = {
5
+ readonly writeFile?: typeof writeFile;
6
+ readonly rename?: typeof renameFile;
7
+ readonly open?: typeof open;
8
+ };
9
+ export type AtomicWriteJsonlOptions = {
10
+ readonly filePath: string;
11
+ readonly lines: readonly string[];
12
+ readonly validateLine: (parsed: unknown, line: number) => void;
13
+ readonly maxTempSuffixAttempts?: number;
14
+ readonly io?: AtomicWriteIo;
15
+ };
16
+ export type AtomicWriteError = {
17
+ readonly _tag: "storage_error";
18
+ readonly message: string;
19
+ readonly filePath: string;
20
+ readonly operation: "write";
21
+ readonly cause?: unknown;
22
+ };
23
+ export declare const atomicWriteJsonl: (options: AtomicWriteJsonlOptions) => Effect.Effect<void, AtomicWriteError>;
24
+ export { withCanonicalWriteLock };
25
+ //# sourceMappingURL=atomic-write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atomic-write.d.ts","sourceRoot":"","sources":["../../../src/shared/storage/atomic-write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,IAAI,EAAE,MAAM,IAAI,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE/E,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAIzD,KAAK,aAAa,GAAG;IACnB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,SAAS,CAAA;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,UAAU,CAAA;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9D,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IACvC,QAAQ,CAAC,EAAE,CAAC,EAAE,aAAa,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,gBAAgB,GAC3B,SAAS,uBAAuB,KAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CA2CpC,CAAA;AAoCH,OAAO,EAAE,sBAAsB,EAAE,CAAA"}