taskops-cli 0.3.0__tar.gz → 0.3.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 (247) hide show
  1. taskops_cli-0.3.1/.claude/settings.json +36 -0
  2. taskops_cli-0.3.1/.mcp.json +14 -0
  3. taskops_cli-0.3.1/.taskops/board/cache.sqlite +0 -0
  4. taskops_cli-0.3.1/.taskops/board/cache.sqlite-shm +0 -0
  5. taskops_cli-0.3.1/.taskops/board/cache.sqlite-wal +0 -0
  6. taskops_cli-0.3.1/.taskops/board/events.jsonl +774 -0
  7. taskops_cli-0.3.1/.taskops/board/live.sqlite +0 -0
  8. taskops_cli-0.3.1/.taskops/board/live.sqlite-shm +0 -0
  9. taskops_cli-0.3.1/.taskops/board/live.sqlite-wal +0 -0
  10. taskops_cli-0.3.1/.taskops/board.json +1 -0
  11. taskops_cli-0.3.1/.taskops/reports/lifecycle-chapter.html +497 -0
  12. taskops_cli-0.3.1/.taskops/reports/reports-chapter.html +403 -0
  13. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ARCHITECTURE.md +545 -15
  14. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/CHANGELOG.md +31 -0
  15. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/CLAUDE.md +52 -3
  16. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/PKG-INFO +114 -10
  17. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/README.md +113 -9
  18. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/_version.py +1 -1
  19. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/_wire.py +45 -0
  20. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/cli/commands.py +43 -34
  21. taskops_cli-0.3.1/src/taskops/cli/enrol.py +127 -0
  22. taskops_cli-0.3.1/src/taskops/cli/grants.py +59 -0
  23. taskops_cli-0.3.1/src/taskops/cli/hooks.py +50 -0
  24. taskops_cli-0.3.1/src/taskops/cli/main.py +116 -0
  25. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/cli/operate.py +57 -40
  26. taskops_cli-0.3.1/src/taskops/cli/paging.py +75 -0
  27. taskops_cli-0.3.0/src/taskops/cli/main.py → taskops_cli-0.3.1/src/taskops/cli/parser.py +85 -101
  28. taskops_cli-0.3.1/src/taskops/cli/pull.py +162 -0
  29. taskops_cli-0.3.1/src/taskops/cli/rm.py +63 -0
  30. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/cli/serving.py +13 -15
  31. taskops_cli-0.3.1/src/taskops/cli/window.py +154 -0
  32. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/core/event.py +17 -7
  33. taskops_cli-0.3.1/src/taskops/core/forge.py +85 -0
  34. taskops_cli-0.3.1/src/taskops/core/holding.py +100 -0
  35. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/core/replay.py +1 -1
  36. taskops_cli-0.3.1/src/taskops/core/reports.py +116 -0
  37. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/core/scope.py +17 -0
  38. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/core/types.py +4 -0
  39. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/gitwork/install.py +15 -0
  40. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/gitwork/patch.py +24 -4
  41. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/http/admin.py +33 -2
  42. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/http/gitdoor.py +86 -1
  43. taskops_cli-0.3.1/src/taskops/http/github.py +180 -0
  44. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/http/handler.py +29 -2
  45. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/http/ingest.py +10 -5
  46. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/http/login.py +12 -2
  47. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/http/mounts.py +30 -2
  48. taskops_cli-0.3.1/src/taskops/http/removal.py +106 -0
  49. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/http/server.py +20 -0
  50. taskops_cli-0.3.1/src/taskops/mcp/activity.py +131 -0
  51. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/mcp/dossier.py +14 -4
  52. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/mcp/schema.py +26 -0
  53. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/mcp/tools.py +30 -2
  54. taskops_cli-0.3.1/src/taskops/py.typed +0 -0
  55. taskops_cli-0.3.1/src/taskops/ui/app.js +60 -0
  56. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/verbs/__init__.py +10 -0
  57. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/verbs/_facts.py +30 -2
  58. taskops_cli-0.3.1/src/taskops/verbs/_stories.py +94 -0
  59. taskops_cli-0.3.1/src/taskops/verbs/activity.py +145 -0
  60. taskops_cli-0.3.1/src/taskops/verbs/filed.py +114 -0
  61. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/verbs/project.py +53 -7
  62. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/verbs/pulse.py +9 -0
  63. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/tests/test_core.py +194 -1
  64. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/tests/test_mcp.py +67 -3
  65. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/tests/test_topology.py +1419 -1
  66. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/tests/test_ui.py +149 -14
  67. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/tests/test_verbs.py +455 -2
  68. taskops_cli-0.3.1/tests/test_window.py +187 -0
  69. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/fixture.json +154 -105
  70. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/sections/actors.tsx +12 -4
  71. taskops_cli-0.3.1/ui/smoke/sections/report-sandbox.tsx +230 -0
  72. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/sections/section.ts +14 -3
  73. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/App.tsx +35 -4
  74. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/chrome/TabNav.tsx +11 -5
  75. taskops_cli-0.3.1/ui/src/components/reports/ReportFrame.tsx +168 -0
  76. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/links.tsx +81 -1
  77. taskops_cli-0.3.1/ui/src/pages/Reports.tsx +252 -0
  78. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/types.ts +69 -0
  79. taskops_cli-0.3.0/src/taskops/cli/enrol.py +0 -45
  80. taskops_cli-0.3.0/src/taskops/ui/app.js +0 -60
  81. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/.gitattributes +0 -0
  82. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/.github/workflows/ci.yml +0 -0
  83. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/.github/workflows/workflow.yml +0 -0
  84. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/.gitignore +0 -0
  85. /taskops_cli-0.3.0/src/taskops/py.typed → /taskops_cli-0.3.1/.taskops/ui.lock +0 -0
  86. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/pyproject.toml +0 -0
  87. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/__init__.py +0 -0
  88. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/_clock.py +0 -0
  89. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/_errors.py +0 -0
  90. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/_ids.py +0 -0
  91. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/_json.py +0 -0
  92. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/_locate.py +0 -0
  93. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/board.py +0 -0
  94. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/cli/__init__.py +0 -0
  95. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/cli/__main__.py +0 -0
  96. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/cli/admin.py +0 -0
  97. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/cli/claude.py +0 -0
  98. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/cli/push.py +0 -0
  99. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/cli/remote.py +0 -0
  100. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/cli/watch.py +0 -0
  101. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/cli/wording.py +0 -0
  102. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/core/__init__.py +0 -0
  103. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/core/actors.py +0 -0
  104. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/core/challenge.py +0 -0
  105. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/core/chapters.py +0 -0
  106. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/core/graph.py +0 -0
  107. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/core/hours.py +0 -0
  108. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/core/machine.py +0 -0
  109. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/core/mentions.py +0 -0
  110. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/core/review.py +0 -0
  111. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/core/seams.py +0 -0
  112. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/gitwork/__init__.py +0 -0
  113. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/gitwork/bind.py +0 -0
  114. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/gitwork/catchup.py +0 -0
  115. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/gitwork/claudefiles.py +0 -0
  116. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/gitwork/diff.py +0 -0
  117. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/gitwork/landing.py +0 -0
  118. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/gitwork/remote.py +0 -0
  119. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/gitwork/run.py +0 -0
  120. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/gitwork/sig.py +0 -0
  121. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/gitwork/trailer.py +0 -0
  122. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/gitwork/trees.py +0 -0
  123. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/http/__init__.py +0 -0
  124. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/http/auth.py +0 -0
  125. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/http/feed.py +0 -0
  126. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/http/grants.py +0 -0
  127. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/http/rpc.py +0 -0
  128. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/http/scoped.py +0 -0
  129. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/http/static.py +0 -0
  130. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/http/upstream.py +0 -0
  131. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/http/watcher.py +0 -0
  132. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/identity.py +0 -0
  133. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/mcp/__init__.py +0 -0
  134. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/mcp/__main__.py +0 -0
  135. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/mcp/before.py +0 -0
  136. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/mcp/boards.py +0 -0
  137. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/mcp/boardview.py +0 -0
  138. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/mcp/brief.py +0 -0
  139. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/mcp/fields.py +0 -0
  140. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/mcp/gitmoves.py +0 -0
  141. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/mcp/hello.py +0 -0
  142. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/mcp/integrate.py +0 -0
  143. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/mcp/render.py +0 -0
  144. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/mcp/server.py +0 -0
  145. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/mcp/thread.py +0 -0
  146. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/session.py +0 -0
  147. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/store/__init__.py +0 -0
  148. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/store/cache.py +0 -0
  149. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/store/creds.py +0 -0
  150. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/store/live.py +0 -0
  151. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/store/log.py +0 -0
  152. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/store/pubkeys.py +0 -0
  153. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/store/reviews.py +0 -0
  154. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/store/server.py +0 -0
  155. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/store/stores.py +0 -0
  156. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/ui/index.html +0 -0
  157. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/ui/style.css +0 -0
  158. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/verbs/_args.py +0 -0
  159. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/verbs/_cards.py +0 -0
  160. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/verbs/_context.py +0 -0
  161. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/verbs/_mentions.py +0 -0
  162. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/verbs/_rows.py +0 -0
  163. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/verbs/_waiting.py +0 -0
  164. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/verbs/assign.py +0 -0
  165. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/verbs/card.py +0 -0
  166. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/verbs/events.py +0 -0
  167. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/verbs/plan.py +0 -0
  168. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/verbs/record.py +0 -0
  169. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/verbs/report.py +0 -0
  170. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/verbs/review.py +0 -0
  171. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/verbs/take.py +0 -0
  172. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/src/taskops/verbs/update.py +0 -0
  173. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/tests/__init__.py +0 -0
  174. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/tests/conftest.py +0 -0
  175. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/tests/test_architecture.py +0 -0
  176. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/tests/test_claude.py +0 -0
  177. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/tests/test_git.py +0 -0
  178. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/tests/test_report.py +0 -0
  179. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/tests/test_store.py +0 -0
  180. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/tests/ui_harness.js +0 -0
  181. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/build.mjs +0 -0
  182. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/index.html +0 -0
  183. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/package-lock.json +0 -0
  184. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/package.json +0 -0
  185. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/main.tsx +0 -0
  186. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/run.mjs +0 -0
  187. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/sections/board-columns.tsx +0 -0
  188. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/sections/chapter-landed.tsx +0 -0
  189. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/sections/chapters-open.tsx +0 -0
  190. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/sections/comment-box.tsx +0 -0
  191. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/sections/diff-page.tsx +0 -0
  192. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/sections/dossier.tsx +0 -0
  193. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/sections/event-stream.tsx +0 -0
  194. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/sections/forge-links.tsx +0 -0
  195. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/sections/git-diff.tsx +0 -0
  196. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/sections/monitor-panes.tsx +0 -0
  197. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/sections/overlay-escape.tsx +0 -0
  198. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/sections/reviewing-skew.tsx +0 -0
  199. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/sections/swarm-topology.tsx +0 -0
  200. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/sections/thread-closing-note.tsx +0 -0
  201. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/sections/worktrees-index.tsx +0 -0
  202. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/smoke/sections.mjs +0 -0
  203. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/client.ts +0 -0
  204. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/actors/Daysheet.tsx +0 -0
  205. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/actors/DevPanel.tsx +0 -0
  206. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/board/CardTile.tsx +0 -0
  207. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/board/Column.tsx +0 -0
  208. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/card/CommentBox.tsx +0 -0
  209. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/card/Drawer.tsx +0 -0
  210. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/card/Patch.tsx +0 -0
  211. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/card/Sections.tsx +0 -0
  212. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/card/Thread.tsx +0 -0
  213. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/card/split.ts +0 -0
  214. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/card/tokens.ts +0 -0
  215. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/chrome/AvatarStack.tsx +0 -0
  216. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/chrome/Header.tsx +0 -0
  217. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/chrome/KpiRail.tsx +0 -0
  218. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/chrome/MilestonePicker.tsx +0 -0
  219. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/monitor/Chapter.tsx +0 -0
  220. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/monitor/DependencyChain.tsx +0 -0
  221. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/monitor/EditSurface.tsx +0 -0
  222. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/monitor/EventStream.tsx +0 -0
  223. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/monitor/LeaseHealth.tsx +0 -0
  224. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/monitor/LiveLeases.tsx +0 -0
  225. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/monitor/Mentions.tsx +0 -0
  226. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/monitor/Pane.tsx +0 -0
  227. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/monitor/Swarm.tsx +0 -0
  228. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/monitor/Throughput.tsx +0 -0
  229. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/monitor/panels.ts +0 -0
  230. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/shared/Markdown.tsx +0 -0
  231. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/shared/Overlay.tsx +0 -0
  232. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/components/shared/overlayStack.ts +0 -0
  233. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/format.ts +0 -0
  234. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/main.tsx +0 -0
  235. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/markdown.ts +0 -0
  236. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/pages/Actors.tsx +0 -0
  237. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/pages/Board.tsx +0 -0
  238. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/pages/Monitor.tsx +0 -0
  239. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/pages/WorktreeDiff.tsx +0 -0
  240. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/pages/Worktrees.tsx +0 -0
  241. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/theme/theme.ts +0 -0
  242. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/theme/tokens.css +0 -0
  243. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/useBoard.ts +0 -0
  244. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/src/useEvents.ts +0 -0
  245. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/styles/index.css +0 -0
  246. {taskops_cli-0.3.0 → taskops_cli-0.3.1}/ui/tsconfig.json +0 -0
  247. {taskops_cli-0.3.0 → taskops_cli-0.3.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
+ }
@@ -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
+ }