taskops-cli 0.4.0__tar.gz → 0.4.1__tar.gz

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 (287) hide show
  1. taskops_cli-0.4.1/.claude/settings.json +36 -0
  2. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/.github/workflows/ci.yml +1 -1
  3. taskops_cli-0.4.1/.mcp.json +14 -0
  4. taskops_cli-0.4.1/.taskops/board/cache.sqlite +0 -0
  5. taskops_cli-0.4.1/.taskops/board/cache.sqlite-shm +0 -0
  6. taskops_cli-0.4.1/.taskops/board/cache.sqlite-wal +0 -0
  7. taskops_cli-0.4.1/.taskops/board/events.jsonl +794 -0
  8. taskops_cli-0.4.1/.taskops/board/live.sqlite +0 -0
  9. taskops_cli-0.4.1/.taskops/board/live.sqlite-shm +0 -0
  10. taskops_cli-0.4.1/.taskops/board/live.sqlite-wal +0 -0
  11. taskops_cli-0.4.1/.taskops/board.json +1 -0
  12. taskops_cli-0.4.1/.taskops/reports/lifecycle-chapter.html +497 -0
  13. taskops_cli-0.4.1/.taskops/reports/reports-chapter.html +403 -0
  14. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ARCHITECTURE.md +1006 -32
  15. taskops_cli-0.4.1/CHANGELOG.md +332 -0
  16. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/CLAUDE.md +92 -11
  17. taskops_cli-0.4.1/PKG-INFO +458 -0
  18. taskops_cli-0.4.1/README.md +446 -0
  19. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/_version.py +1 -1
  20. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/_wire.py +48 -0
  21. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/cli/commands.py +45 -42
  22. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/cli/enrol.py +12 -0
  23. taskops_cli-0.4.1/src/taskops/cli/github.py +196 -0
  24. taskops_cli-0.4.1/src/taskops/cli/grants.py +59 -0
  25. taskops_cli-0.4.1/src/taskops/cli/hooks.py +50 -0
  26. taskops_cli-0.4.1/src/taskops/cli/main.py +116 -0
  27. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/cli/operate.py +59 -38
  28. taskops_cli-0.4.1/src/taskops/cli/paging.py +75 -0
  29. taskops_cli-0.4.0/src/taskops/cli/main.py → taskops_cli-0.4.1/src/taskops/cli/parser.py +76 -101
  30. taskops_cli-0.4.1/src/taskops/cli/pull.py +162 -0
  31. taskops_cli-0.4.1/src/taskops/cli/rm.py +63 -0
  32. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/cli/serving.py +14 -16
  33. taskops_cli-0.4.1/src/taskops/cli/team.py +96 -0
  34. taskops_cli-0.4.1/src/taskops/cli/window.py +154 -0
  35. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/cli/wording.py +2 -2
  36. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/core/chapters.py +5 -0
  37. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/core/event.py +17 -7
  38. taskops_cli-0.4.1/src/taskops/core/forge.py +85 -0
  39. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/core/graph.py +4 -0
  40. taskops_cli-0.4.1/src/taskops/core/holding.py +100 -0
  41. taskops_cli-0.4.1/src/taskops/core/hours.py +193 -0
  42. taskops_cli-0.4.1/src/taskops/core/kinds.py +45 -0
  43. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/core/replay.py +1 -1
  44. taskops_cli-0.4.1/src/taskops/core/reports.py +116 -0
  45. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/core/scope.py +26 -0
  46. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/core/types.py +18 -33
  47. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/gitwork/bind.py +11 -2
  48. taskops_cli-0.4.1/src/taskops/gitwork/catchup.py +114 -0
  49. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/gitwork/install.py +15 -0
  50. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/gitwork/patch.py +24 -4
  51. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/gitwork/remote.py +14 -1
  52. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/http/admin.py +36 -2
  53. taskops_cli-0.4.1/src/taskops/http/gitdoor.py +198 -0
  54. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/http/handler.py +15 -1
  55. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/http/ingest.py +10 -5
  56. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/http/login.py +16 -2
  57. taskops_cli-0.4.1/src/taskops/http/members.py +178 -0
  58. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/http/mounts.py +30 -2
  59. taskops_cli-0.4.1/src/taskops/http/removal.py +106 -0
  60. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/http/server.py +20 -0
  61. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/http/static.py +30 -0
  62. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/http/upstream.py +1 -1
  63. taskops_cli-0.4.1/src/taskops/mcp/activity.py +131 -0
  64. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/mcp/before.py +10 -0
  65. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/mcp/boardview.py +10 -1
  66. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/mcp/brief.py +8 -0
  67. taskops_cli-0.4.0/src/taskops/mcp/gitmoves.py → taskops_cli-0.4.1/src/taskops/mcp/chapter.py +46 -83
  68. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/mcp/dossier.py +14 -4
  69. taskops_cli-0.4.1/src/taskops/mcp/gitmoves.py +90 -0
  70. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/mcp/integrate.py +17 -6
  71. taskops_cli-0.4.1/src/taskops/mcp/orders.py +79 -0
  72. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/mcp/schema.py +37 -48
  73. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/mcp/server.py +2 -2
  74. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/mcp/tools.py +37 -5
  75. taskops_cli-0.4.1/src/taskops/py.typed +0 -0
  76. taskops_cli-0.4.1/src/taskops/store/handover.py +61 -0
  77. taskops_cli-0.4.1/src/taskops/ui/app.js +61 -0
  78. taskops_cli-0.4.1/src/taskops/ui/style.css +1 -0
  79. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/verbs/__init__.py +10 -0
  80. taskops_cli-0.4.1/src/taskops/verbs/_chapter.py +64 -0
  81. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/verbs/_facts.py +38 -2
  82. taskops_cli-0.4.1/src/taskops/verbs/_rows.py +78 -0
  83. taskops_cli-0.4.1/src/taskops/verbs/_stories.py +94 -0
  84. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/verbs/_waiting.py +1 -1
  85. taskops_cli-0.4.1/src/taskops/verbs/_windows.py +95 -0
  86. taskops_cli-0.4.1/src/taskops/verbs/activity.py +145 -0
  87. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/verbs/assign.py +13 -10
  88. taskops_cli-0.4.1/src/taskops/verbs/filed.py +114 -0
  89. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/verbs/plan.py +3 -0
  90. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/verbs/project.py +53 -7
  91. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/verbs/pulse.py +27 -0
  92. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/verbs/record.py +23 -6
  93. taskops_cli-0.4.1/src/taskops/verbs/report.py +166 -0
  94. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/verbs/update.py +9 -39
  95. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/tests/test_claude.py +5 -1
  96. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/tests/test_core.py +281 -4
  97. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/tests/test_git.py +165 -0
  98. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/tests/test_mcp.py +246 -7
  99. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/tests/test_topology.py +1546 -1
  100. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/tests/test_ui.py +192 -15
  101. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/tests/test_verbs.py +778 -7
  102. taskops_cli-0.4.1/tests/test_window.py +244 -0
  103. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/fixture.json +164 -105
  104. taskops_cli-0.4.1/ui/smoke/sections/actors-window-filter.tsx +266 -0
  105. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/sections/actors.tsx +12 -4
  106. taskops_cli-0.4.1/ui/smoke/sections/board-flow-view.tsx +174 -0
  107. taskops_cli-0.4.1/ui/smoke/sections/board-motion-and-avatars.tsx +205 -0
  108. taskops_cli-0.4.1/ui/smoke/sections/chapter-completion-derivation.tsx +120 -0
  109. taskops_cli-0.4.1/ui/smoke/sections/chapter-story-grid.tsx +251 -0
  110. taskops_cli-0.4.1/ui/smoke/sections/comment-toasts-model.tsx +198 -0
  111. taskops_cli-0.4.1/ui/smoke/sections/comment-toasts-stack.tsx +201 -0
  112. taskops_cli-0.4.1/ui/smoke/sections/feed-reconnect.tsx +229 -0
  113. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/sections/forge-links.tsx +18 -5
  114. taskops_cli-0.4.1/ui/smoke/sections/forge-opens-the-board.tsx +80 -0
  115. taskops_cli-0.4.1/ui/smoke/sections/report-markdown.tsx +86 -0
  116. taskops_cli-0.4.1/ui/smoke/sections/report-sandbox.tsx +251 -0
  117. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/sections/section.ts +14 -3
  118. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/sections.mjs +20 -6
  119. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/App.tsx +118 -7
  120. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/client.ts +54 -7
  121. taskops_cli-0.4.1/ui/src/completed.ts +48 -0
  122. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/actors/DevPanel.tsx +10 -2
  123. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/board/CardTile.tsx +53 -22
  124. taskops_cli-0.4.1/ui/src/components/board/ViewToggle.tsx +42 -0
  125. taskops_cli-0.4.1/ui/src/components/board/flip.ts +105 -0
  126. taskops_cli-0.4.1/ui/src/components/board/useFlip.ts +96 -0
  127. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/card/Drawer.tsx +9 -2
  128. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/card/Sections.tsx +32 -21
  129. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/card/tokens.ts +10 -0
  130. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/chrome/AvatarStack.tsx +12 -44
  131. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/chrome/Header.tsx +33 -4
  132. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/chrome/TabNav.tsx +11 -5
  133. taskops_cli-0.4.1/ui/src/components/flow/FlowView.tsx +270 -0
  134. taskops_cli-0.4.1/ui/src/components/flow/layout.ts +166 -0
  135. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/monitor/Chapter.tsx +1 -1
  136. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/monitor/EventStream.tsx +16 -16
  137. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/monitor/panels.ts +10 -0
  138. taskops_cli-0.4.1/ui/src/components/reports/ReportFrame.tsx +203 -0
  139. taskops_cli-0.4.1/ui/src/components/shared/Avatar.tsx +132 -0
  140. taskops_cli-0.4.1/ui/src/components/shared/Segmented.tsx +78 -0
  141. taskops_cli-0.4.1/ui/src/components/story/ChapterStory.tsx +423 -0
  142. taskops_cli-0.4.1/ui/src/components/story/stats.ts +108 -0
  143. taskops_cli-0.4.1/ui/src/components/toasts/ToastStack.tsx +231 -0
  144. taskops_cli-0.4.1/ui/src/components/toasts/model.ts +189 -0
  145. taskops_cli-0.4.1/ui/src/components/toasts/useToasts.ts +147 -0
  146. taskops_cli-0.4.1/ui/src/hoursWindow.ts +111 -0
  147. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/links.tsx +81 -1
  148. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/main.tsx +13 -3
  149. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/pages/Actors.tsx +56 -9
  150. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/pages/Board.tsx +104 -1
  151. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/pages/Monitor.tsx +16 -13
  152. taskops_cli-0.4.1/ui/src/pages/Reports.tsx +252 -0
  153. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/theme/tokens.css +17 -0
  154. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/types.ts +184 -1
  155. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/useBoard.ts +53 -9
  156. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/useEvents.ts +36 -1
  157. taskops_cli-0.4.0/CHANGELOG.md +0 -40
  158. taskops_cli-0.4.0/PKG-INFO +0 -239
  159. taskops_cli-0.4.0/README.md +0 -227
  160. taskops_cli-0.4.0/src/taskops/core/hours.py +0 -123
  161. taskops_cli-0.4.0/src/taskops/gitwork/catchup.py +0 -59
  162. taskops_cli-0.4.0/src/taskops/http/gitdoor.py +0 -103
  163. taskops_cli-0.4.0/src/taskops/ui/app.js +0 -60
  164. taskops_cli-0.4.0/src/taskops/ui/style.css +0 -1
  165. taskops_cli-0.4.0/src/taskops/verbs/_rows.py +0 -46
  166. taskops_cli-0.4.0/src/taskops/verbs/report.py +0 -120
  167. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/.gitattributes +0 -0
  168. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/.github/workflows/workflow.yml +0 -0
  169. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/.gitignore +0 -0
  170. /taskops_cli-0.4.0/src/taskops/py.typed → /taskops_cli-0.4.1/.taskops/ui.lock +0 -0
  171. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/pyproject.toml +0 -0
  172. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/__init__.py +0 -0
  173. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/_clock.py +0 -0
  174. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/_errors.py +0 -0
  175. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/_ids.py +0 -0
  176. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/_json.py +0 -0
  177. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/_locate.py +0 -0
  178. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/board.py +0 -0
  179. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/cli/__init__.py +0 -0
  180. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/cli/__main__.py +0 -0
  181. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/cli/admin.py +0 -0
  182. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/cli/claude.py +0 -0
  183. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/cli/push.py +0 -0
  184. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/cli/remote.py +0 -0
  185. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/cli/watch.py +0 -0
  186. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/core/__init__.py +0 -0
  187. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/core/actors.py +0 -0
  188. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/core/challenge.py +0 -0
  189. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/core/machine.py +0 -0
  190. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/core/mentions.py +0 -0
  191. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/core/review.py +0 -0
  192. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/core/seams.py +0 -0
  193. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/gitwork/__init__.py +0 -0
  194. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/gitwork/claudefiles.py +0 -0
  195. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/gitwork/diff.py +0 -0
  196. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/gitwork/landing.py +0 -0
  197. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/gitwork/run.py +0 -0
  198. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/gitwork/sig.py +0 -0
  199. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/gitwork/trailer.py +0 -0
  200. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/gitwork/trees.py +0 -0
  201. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/http/__init__.py +0 -0
  202. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/http/auth.py +0 -0
  203. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/http/feed.py +0 -0
  204. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/http/grants.py +0 -0
  205. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/http/rpc.py +0 -0
  206. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/http/scoped.py +0 -0
  207. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/http/watcher.py +0 -0
  208. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/identity.py +0 -0
  209. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/mcp/__init__.py +0 -0
  210. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/mcp/__main__.py +0 -0
  211. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/mcp/boards.py +0 -0
  212. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/mcp/fields.py +0 -0
  213. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/mcp/hello.py +0 -0
  214. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/mcp/render.py +0 -0
  215. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/mcp/thread.py +0 -0
  216. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/session.py +0 -0
  217. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/store/__init__.py +0 -0
  218. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/store/cache.py +0 -0
  219. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/store/creds.py +0 -0
  220. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/store/live.py +0 -0
  221. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/store/log.py +0 -0
  222. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/store/pubkeys.py +0 -0
  223. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/store/reviews.py +0 -0
  224. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/store/server.py +0 -0
  225. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/store/stores.py +0 -0
  226. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/ui/index.html +0 -0
  227. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/verbs/_args.py +0 -0
  228. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/verbs/_cards.py +0 -0
  229. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/verbs/_context.py +0 -0
  230. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/verbs/_mentions.py +0 -0
  231. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/verbs/card.py +0 -0
  232. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/verbs/events.py +0 -0
  233. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/verbs/review.py +0 -0
  234. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/src/taskops/verbs/take.py +0 -0
  235. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/tests/__init__.py +0 -0
  236. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/tests/conftest.py +0 -0
  237. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/tests/test_architecture.py +0 -0
  238. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/tests/test_report.py +0 -0
  239. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/tests/test_store.py +0 -0
  240. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/tests/ui_harness.js +0 -0
  241. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/build.mjs +0 -0
  242. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/index.html +0 -0
  243. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/package-lock.json +0 -0
  244. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/package.json +0 -0
  245. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/main.tsx +0 -0
  246. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/run.mjs +0 -0
  247. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/sections/board-columns.tsx +0 -0
  248. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/sections/chapter-landed.tsx +0 -0
  249. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/sections/chapters-open.tsx +0 -0
  250. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/sections/comment-box.tsx +0 -0
  251. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/sections/diff-page.tsx +0 -0
  252. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/sections/dossier.tsx +0 -0
  253. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/sections/event-stream.tsx +0 -0
  254. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/sections/git-diff.tsx +0 -0
  255. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/sections/monitor-panes.tsx +0 -0
  256. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/sections/overlay-escape.tsx +0 -0
  257. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/sections/reviewing-skew.tsx +0 -0
  258. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/sections/swarm-topology.tsx +0 -0
  259. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/sections/thread-closing-note.tsx +0 -0
  260. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/smoke/sections/worktrees-index.tsx +0 -0
  261. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/actors/Daysheet.tsx +0 -0
  262. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/board/Column.tsx +0 -0
  263. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/card/CommentBox.tsx +0 -0
  264. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/card/Patch.tsx +0 -0
  265. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/card/Thread.tsx +0 -0
  266. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/card/split.ts +0 -0
  267. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/chrome/KpiRail.tsx +0 -0
  268. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/chrome/MilestonePicker.tsx +0 -0
  269. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/monitor/DependencyChain.tsx +0 -0
  270. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/monitor/EditSurface.tsx +0 -0
  271. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/monitor/LeaseHealth.tsx +0 -0
  272. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/monitor/LiveLeases.tsx +0 -0
  273. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/monitor/Mentions.tsx +0 -0
  274. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/monitor/Pane.tsx +0 -0
  275. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/monitor/Swarm.tsx +0 -0
  276. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/monitor/Throughput.tsx +0 -0
  277. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/shared/Markdown.tsx +0 -0
  278. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/shared/Overlay.tsx +0 -0
  279. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/components/shared/overlayStack.ts +0 -0
  280. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/format.ts +0 -0
  281. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/markdown.ts +0 -0
  282. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/pages/WorktreeDiff.tsx +0 -0
  283. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/pages/Worktrees.tsx +0 -0
  284. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/src/theme/theme.ts +0 -0
  285. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/styles/index.css +0 -0
  286. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/ui/tsconfig.json +0 -0
  287. {taskops_cli-0.4.0 → taskops_cli-0.4.1}/uv.lock +0 -0
@@ -0,0 +1,36 @@
1
+ {
2
+ "hooks": {
3
+ "PostToolUse": [
4
+ {
5
+ "hooks": [
6
+ {
7
+ "type": "command",
8
+ "command": "\"/Users/berna/.local/share/uv/tools/taskops-cli/bin/python\" -m taskops.cli hook claude"
9
+ }
10
+ ],
11
+ "matcher": "*"
12
+ }
13
+ ],
14
+ "UserPromptSubmit": [
15
+ {
16
+ "hooks": [
17
+ {
18
+ "type": "command",
19
+ "command": "\"/Users/berna/.local/share/uv/tools/taskops-cli/bin/python\" -m taskops.cli hook claude"
20
+ }
21
+ ]
22
+ }
23
+ ],
24
+ "PreToolUse": [
25
+ {
26
+ "matcher": "Bash",
27
+ "hooks": [
28
+ {
29
+ "type": "command",
30
+ "command": "c=$(jq -r '.tool_input.command // \"\"'); printf '%s' \"$c\" | grep -qE 'python[0-9.]*[[:space:]]+-(c|[[:space:]]|$)' && printf '%s' \"$c\" | grep -qE 'open_board|board[.]call|taskops[.]mcp|taskops[.]board|gitmoves' && printf '%s' '{\"hookSpecificOutput\":{\"hookEventName\":\"PreToolUse\",\"permissionDecision\":\"deny\",\"permissionDecisionReason\":\"REFUSED: the board is driven through the taskops_* MCP tools, never through the shell. Use taskops_board, taskops_card, taskops_take, taskops_update, taskops_comment, taskops_assign, taskops_merge, taskops_review or taskops_plan, each with repo_path= and actor=. Why this is hard and not a preference: the MCP tool is the ONLY door that runs both halves. taskops_assign cuts the worktrees that the plain assign verb does not, and taskops_merge runs the git merge that the plain merged verb does not, so driving a verb from the shell records board state about git that never happened. A shelled call also skips the pulse line, so you stop being told what the board is waiting for. The taskops CLI stays fine for what it owns: join, remote add, ui, serve, invite, revoke, tidy, and board create/ls/push.\"}}'; exit 0"
31
+ }
32
+ ]
33
+ }
34
+ ]
35
+ }
36
+ }
@@ -2,7 +2,7 @@ name: ci
2
2
 
3
3
  on:
4
4
  push:
5
- branches: [main, master]
5
+ branches: [master]
6
6
  pull_request:
7
7
  workflow_call: # release.yml runs these same gates on the tag — no second copy
8
8
 
@@ -0,0 +1,14 @@
1
+ {
2
+ "mcpServers": {
3
+ "taskops": {
4
+ "command": "/Users/berna/.local/share/uv/tools/taskops-cli/bin/python",
5
+ "args": [
6
+ "-m",
7
+ "taskops.mcp"
8
+ ],
9
+ "env": {
10
+ "TASKOPS_ACTOR": "dev:berna"
11
+ }
12
+ }
13
+ }
14
+ }