tripwire-pm 0.7.0__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 (461) hide show
  1. tripwire_pm-0.7.0/.github/workflows/ci.yml +23 -0
  2. tripwire_pm-0.7.0/.github/workflows/publish.yml +21 -0
  3. tripwire_pm-0.7.0/.gitignore +52 -0
  4. tripwire_pm-0.7.0/.pre-commit-config.yaml +47 -0
  5. tripwire_pm-0.7.0/LICENSE +21 -0
  6. tripwire_pm-0.7.0/Makefile +64 -0
  7. tripwire_pm-0.7.0/PKG-INFO +44 -0
  8. tripwire_pm-0.7.0/README.md +426 -0
  9. tripwire_pm-0.7.0/docs/agent-containers.md +923 -0
  10. tripwire_pm-0.7.0/docs/backlog.md +61 -0
  11. tripwire_pm-0.7.0/docs/kb-pivot-test-prompt.md +72 -0
  12. tripwire_pm-0.7.0/docs/overarching-plan.md +1304 -0
  13. tripwire_pm-0.7.0/docs/similar-tools.md +179 -0
  14. tripwire_pm-0.7.0/docs/superpowers/plans/2026-04-15-keel-v0.6a-pm-workflow.md +3470 -0
  15. tripwire_pm-0.7.0/docs/superpowers/plans/2026-04-15-keel-v0.6b-workspace.md +4026 -0
  16. tripwire_pm-0.7.0/docs/superpowers/plans/2026-04-16-session-spawn-agenda-worktrees.md +2727 -0
  17. tripwire_pm-0.7.0/docs/superpowers/plans/2026-04-21-v07a-rename-to-tripwire.md +1030 -0
  18. tripwire_pm-0.7.0/docs/superpowers/plans/2026-04-21-v07b-tripwire-features.md +4352 -0
  19. tripwire_pm-0.7.0/docs/superpowers/specs/2026-04-15-keel-workspace-design.md +924 -0
  20. tripwire_pm-0.7.0/docs/superpowers/specs/2026-04-16-session-spawn-agenda-worktrees-design.md +598 -0
  21. tripwire_pm-0.7.0/docs/superpowers/specs/2026-04-20-v07-unified-design.md +1099 -0
  22. tripwire_pm-0.7.0/docs/testing-guide-kb-pivot.md +428 -0
  23. tripwire_pm-0.7.0/docs/tripwire-core-features.md +199 -0
  24. tripwire_pm-0.7.0/docs/tripwire-plan.md +2409 -0
  25. tripwire_pm-0.7.0/docs/tripwire-ui.md +815 -0
  26. tripwire_pm-0.7.0/docs/v0.6b-workspace-migration.md +184 -0
  27. tripwire_pm-0.7.0/experiments/v01-kb-pivot-test.md +92 -0
  28. tripwire_pm-0.7.0/experiments/v02-kb-pivot-test.md +450 -0
  29. tripwire_pm-0.7.0/experiments/v03-kb-pivot-test.md +326 -0
  30. tripwire_pm-0.7.0/experiments/v04-graph-ui-v2-test.md +511 -0
  31. tripwire_pm-0.7.0/img/tripwire_full_black_bg.svg +11 -0
  32. tripwire_pm-0.7.0/img/tripwire_full_transparent.svg +10 -0
  33. tripwire_pm-0.7.0/img/tripwire_full_white_bg.svg +11 -0
  34. tripwire_pm-0.7.0/img/tripwire_mark_black_bg.svg +7 -0
  35. tripwire_pm-0.7.0/img/tripwire_mark_transparent.svg +6 -0
  36. tripwire_pm-0.7.0/img/tripwire_mark_white_bg.svg +7 -0
  37. tripwire_pm-0.7.0/pyproject.toml +79 -0
  38. tripwire_pm-0.7.0/src/tripwire/__init__.py +11 -0
  39. tripwire_pm-0.7.0/src/tripwire/cli/__init__.py +6 -0
  40. tripwire_pm-0.7.0/src/tripwire/cli/_profiling.py +77 -0
  41. tripwire_pm-0.7.0/src/tripwire/cli/_utils.py +25 -0
  42. tripwire_pm-0.7.0/src/tripwire/cli/agenda.py +249 -0
  43. tripwire_pm-0.7.0/src/tripwire/cli/artifacts.py +201 -0
  44. tripwire_pm-0.7.0/src/tripwire/cli/ci.py +76 -0
  45. tripwire_pm-0.7.0/src/tripwire/cli/completion.py +71 -0
  46. tripwire_pm-0.7.0/src/tripwire/cli/enums.py +133 -0
  47. tripwire_pm-0.7.0/src/tripwire/cli/graph.py +279 -0
  48. tripwire_pm-0.7.0/src/tripwire/cli/init.py +746 -0
  49. tripwire_pm-0.7.0/src/tripwire/cli/issue.py +193 -0
  50. tripwire_pm-0.7.0/src/tripwire/cli/lint.py +118 -0
  51. tripwire_pm-0.7.0/src/tripwire/cli/main.py +109 -0
  52. tripwire_pm-0.7.0/src/tripwire/cli/next_key.py +73 -0
  53. tripwire_pm-0.7.0/src/tripwire/cli/node.py +108 -0
  54. tripwire_pm-0.7.0/src/tripwire/cli/plan.py +71 -0
  55. tripwire_pm-0.7.0/src/tripwire/cli/refresh.py +42 -0
  56. tripwire_pm-0.7.0/src/tripwire/cli/refs.py +384 -0
  57. tripwire_pm-0.7.0/src/tripwire/cli/scaffold.py +514 -0
  58. tripwire_pm-0.7.0/src/tripwire/cli/session.py +1528 -0
  59. tripwire_pm-0.7.0/src/tripwire/cli/status.py +211 -0
  60. tripwire_pm-0.7.0/src/tripwire/cli/templates.py +147 -0
  61. tripwire_pm-0.7.0/src/tripwire/cli/ui.py +93 -0
  62. tripwire_pm-0.7.0/src/tripwire/cli/uuid_cmd.py +30 -0
  63. tripwire_pm-0.7.0/src/tripwire/cli/validate.py +231 -0
  64. tripwire_pm-0.7.0/src/tripwire/cli/view.py +237 -0
  65. tripwire_pm-0.7.0/src/tripwire/cli/workspace.py +1159 -0
  66. tripwire_pm-0.7.0/src/tripwire/core/__init__.py +5 -0
  67. tripwire_pm-0.7.0/src/tripwire/core/branch_naming.py +134 -0
  68. tripwire_pm-0.7.0/src/tripwire/core/concept_graph.py +159 -0
  69. tripwire_pm-0.7.0/src/tripwire/core/dependency_graph.py +261 -0
  70. tripwire_pm-0.7.0/src/tripwire/core/enum_loader.py +225 -0
  71. tripwire_pm-0.7.0/src/tripwire/core/freshness.py +253 -0
  72. tripwire_pm-0.7.0/src/tripwire/core/git_helpers.py +103 -0
  73. tripwire_pm-0.7.0/src/tripwire/core/graph_cache.py +647 -0
  74. tripwire_pm-0.7.0/src/tripwire/core/handoff_store.py +41 -0
  75. tripwire_pm-0.7.0/src/tripwire/core/id_generator.py +54 -0
  76. tripwire_pm-0.7.0/src/tripwire/core/insights_store.py +56 -0
  77. tripwire_pm-0.7.0/src/tripwire/core/issue_artifact_store.py +117 -0
  78. tripwire_pm-0.7.0/src/tripwire/core/key_allocator.py +108 -0
  79. tripwire_pm-0.7.0/src/tripwire/core/lint_rules/__init__.py +15 -0
  80. tripwire_pm-0.7.0/src/tripwire/core/lint_rules/branch_convention.py +52 -0
  81. tripwire_pm-0.7.0/src/tripwire/core/lint_rules/gap_analysis.py +59 -0
  82. tripwire_pm-0.7.0/src/tripwire/core/lint_rules/orphan_concepts.py +94 -0
  83. tripwire_pm-0.7.0/src/tripwire/core/lint_rules/session_stale.py +47 -0
  84. tripwire_pm-0.7.0/src/tripwire/core/lint_rules/stale_workspace_nodes.py +69 -0
  85. tripwire_pm-0.7.0/src/tripwire/core/lint_rules/unpushed_promotions.py +57 -0
  86. tripwire_pm-0.7.0/src/tripwire/core/lint_rules/unresolved_merge_briefs.py +31 -0
  87. tripwire_pm-0.7.0/src/tripwire/core/linter.py +92 -0
  88. tripwire_pm-0.7.0/src/tripwire/core/locks.py +103 -0
  89. tripwire_pm-0.7.0/src/tripwire/core/manifest_loader.py +119 -0
  90. tripwire_pm-0.7.0/src/tripwire/core/merge_brief.py +221 -0
  91. tripwire_pm-0.7.0/src/tripwire/core/node_store.py +88 -0
  92. tripwire_pm-0.7.0/src/tripwire/core/parser.py +101 -0
  93. tripwire_pm-0.7.0/src/tripwire/core/paths.py +283 -0
  94. tripwire_pm-0.7.0/src/tripwire/core/planner.py +150 -0
  95. tripwire_pm-0.7.0/src/tripwire/core/process_helpers.py +24 -0
  96. tripwire_pm-0.7.0/src/tripwire/core/reference_parser.py +76 -0
  97. tripwire_pm-0.7.0/src/tripwire/core/selectors.py +130 -0
  98. tripwire_pm-0.7.0/src/tripwire/core/session_agenda.py +184 -0
  99. tripwire_pm-0.7.0/src/tripwire/core/session_complete.py +230 -0
  100. tripwire_pm-0.7.0/src/tripwire/core/session_monitor.py +147 -0
  101. tripwire_pm-0.7.0/src/tripwire/core/session_readiness.py +173 -0
  102. tripwire_pm-0.7.0/src/tripwire/core/session_review.py +105 -0
  103. tripwire_pm-0.7.0/src/tripwire/core/session_store.py +109 -0
  104. tripwire_pm-0.7.0/src/tripwire/core/spawn_config.py +140 -0
  105. tripwire_pm-0.7.0/src/tripwire/core/status.py +67 -0
  106. tripwire_pm-0.7.0/src/tripwire/core/store.py +185 -0
  107. tripwire_pm-0.7.0/src/tripwire/core/stream_json.py +52 -0
  108. tripwire_pm-0.7.0/src/tripwire/core/uuid_helpers.py +39 -0
  109. tripwire_pm-0.7.0/src/tripwire/core/validator.py +2429 -0
  110. tripwire_pm-0.7.0/src/tripwire/core/workspace_store.py +98 -0
  111. tripwire_pm-0.7.0/src/tripwire/core/workspace_sync.py +136 -0
  112. tripwire_pm-0.7.0/src/tripwire/models/__init__.py +92 -0
  113. tripwire_pm-0.7.0/src/tripwire/models/comment.py +28 -0
  114. tripwire_pm-0.7.0/src/tripwire/models/enums.py +162 -0
  115. tripwire_pm-0.7.0/src/tripwire/models/graph.py +141 -0
  116. tripwire_pm-0.7.0/src/tripwire/models/handoff.py +55 -0
  117. tripwire_pm-0.7.0/src/tripwire/models/insights.py +56 -0
  118. tripwire_pm-0.7.0/src/tripwire/models/issue.py +79 -0
  119. tripwire_pm-0.7.0/src/tripwire/models/issue_artifacts.py +38 -0
  120. tripwire_pm-0.7.0/src/tripwire/models/manifest.py +40 -0
  121. tripwire_pm-0.7.0/src/tripwire/models/node.py +97 -0
  122. tripwire_pm-0.7.0/src/tripwire/models/project.py +156 -0
  123. tripwire_pm-0.7.0/src/tripwire/models/session.py +176 -0
  124. tripwire_pm-0.7.0/src/tripwire/models/spawn.py +45 -0
  125. tripwire_pm-0.7.0/src/tripwire/models/workspace.py +63 -0
  126. tripwire_pm-0.7.0/src/tripwire/templates/__init__.py +18 -0
  127. tripwire_pm-0.7.0/src/tripwire/templates/agent_templates/backend-coder.yaml +51 -0
  128. tripwire_pm-0.7.0/src/tripwire/templates/agent_templates/frontend-coder.yaml +45 -0
  129. tripwire_pm-0.7.0/src/tripwire/templates/agent_templates/pm.yaml +52 -0
  130. tripwire_pm-0.7.0/src/tripwire/templates/agent_templates/verifier.yaml +37 -0
  131. tripwire_pm-0.7.0/src/tripwire/templates/artifacts/manifest.yaml +65 -0
  132. tripwire_pm-0.7.0/src/tripwire/templates/artifacts/plan.md.j2 +34 -0
  133. tripwire_pm-0.7.0/src/tripwire/templates/artifacts/post-completion-comments.md.j2 +23 -0
  134. tripwire_pm-0.7.0/src/tripwire/templates/artifacts/recommended-testing-plan.md.j2 +23 -0
  135. tripwire_pm-0.7.0/src/tripwire/templates/artifacts/task-checklist.md.j2 +20 -0
  136. tripwire_pm-0.7.0/src/tripwire/templates/artifacts/verification-checklist.md.j2 +35 -0
  137. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-agenda.md +18 -0
  138. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-close.md +10 -0
  139. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-edit.md +28 -0
  140. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-graph.md +30 -0
  141. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-handoff.md +28 -0
  142. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-issue-artifact.md +31 -0
  143. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-issue-close.md +40 -0
  144. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-lint.md +30 -0
  145. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-plan.md +11 -0
  146. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-project-create.md +36 -0
  147. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-project-sync.md +53 -0
  148. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-rescope.md +39 -0
  149. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-review.md +37 -0
  150. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-scope.md +18 -0
  151. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-session-agenda.md +22 -0
  152. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-session-check.md +24 -0
  153. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-session-complete.md +34 -0
  154. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-session-create.md +51 -0
  155. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-session-monitor.md +35 -0
  156. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-session-progress.md +19 -0
  157. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-session-queue.md +57 -0
  158. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-session-review.md +31 -0
  159. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-session-spawn.md +27 -0
  160. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-status.md +29 -0
  161. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-triage.md +35 -0
  162. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-update.md +10 -0
  163. tripwire_pm-0.7.0/src/tripwire/templates/commands/pm-validate.md +36 -0
  164. tripwire_pm-0.7.0/src/tripwire/templates/comment_templates/completion.yaml.j2 +23 -0
  165. tripwire_pm-0.7.0/src/tripwire/templates/comment_templates/question.yaml.j2 +19 -0
  166. tripwire_pm-0.7.0/src/tripwire/templates/comment_templates/status_change.yaml.j2 +10 -0
  167. tripwire_pm-0.7.0/src/tripwire/templates/enums/agent_state.yaml +42 -0
  168. tripwire_pm-0.7.0/src/tripwire/templates/enums/agent_type.yaml +15 -0
  169. tripwire_pm-0.7.0/src/tripwire/templates/enums/agent_types.yaml +12 -0
  170. tripwire_pm-0.7.0/src/tripwire/templates/enums/artifact_phase.yaml +18 -0
  171. tripwire_pm-0.7.0/src/tripwire/templates/enums/branch_type.yaml +21 -0
  172. tripwire_pm-0.7.0/src/tripwire/templates/enums/comment_type.yaml +18 -0
  173. tripwire_pm-0.7.0/src/tripwire/templates/enums/executor.yaml +12 -0
  174. tripwire_pm-0.7.0/src/tripwire/templates/enums/issue_status.yaml +31 -0
  175. tripwire_pm-0.7.0/src/tripwire/templates/enums/message_type.yaml +27 -0
  176. tripwire_pm-0.7.0/src/tripwire/templates/enums/node_status.yaml +15 -0
  177. tripwire_pm-0.7.0/src/tripwire/templates/enums/node_type.yaml +33 -0
  178. tripwire_pm-0.7.0/src/tripwire/templates/enums/priority.yaml +15 -0
  179. tripwire_pm-0.7.0/src/tripwire/templates/enums/re_engagement_trigger.yaml +45 -0
  180. tripwire_pm-0.7.0/src/tripwire/templates/enums/session_status.yaml +49 -0
  181. tripwire_pm-0.7.0/src/tripwire/templates/enums/verifier.yaml +12 -0
  182. tripwire_pm-0.7.0/src/tripwire/templates/issue_artifacts/developer.md.j2 +27 -0
  183. tripwire_pm-0.7.0/src/tripwire/templates/issue_artifacts/manifest.yaml +25 -0
  184. tripwire_pm-0.7.0/src/tripwire/templates/issue_artifacts/verified.md.j2 +25 -0
  185. tripwire_pm-0.7.0/src/tripwire/templates/issue_templates/default.yaml.j2 +60 -0
  186. tripwire_pm-0.7.0/src/tripwire/templates/orchestration/default.yaml +67 -0
  187. tripwire_pm-0.7.0/src/tripwire/templates/orchestration/hooks/__init__.py +22 -0
  188. tripwire_pm-0.7.0/src/tripwire/templates/project/.github/workflows/tripwire.yml.j2 +27 -0
  189. tripwire_pm-0.7.0/src/tripwire/templates/project/CLAUDE.md.j2 +44 -0
  190. tripwire_pm-0.7.0/src/tripwire/templates/project/gitignore.j2 +15 -0
  191. tripwire_pm-0.7.0/src/tripwire/templates/project/project.yaml.j2 +87 -0
  192. tripwire_pm-0.7.0/src/tripwire/templates/scoping-artifacts/compliance.md +67 -0
  193. tripwire_pm-0.7.0/src/tripwire/templates/scoping-artifacts/gap-analysis.md +37 -0
  194. tripwire_pm-0.7.0/src/tripwire/templates/scoping-artifacts/scoping-plan.md +34 -0
  195. tripwire_pm-0.7.0/src/tripwire/templates/session_templates/default.yaml.j2 +60 -0
  196. tripwire_pm-0.7.0/src/tripwire/templates/session_templates/handoff.yaml.j2 +16 -0
  197. tripwire_pm-0.7.0/src/tripwire/templates/skills/agent-messaging/SKILL.md +182 -0
  198. tripwire_pm-0.7.0/src/tripwire/templates/skills/agent-messaging/references/ANTI_PATTERNS.md +171 -0
  199. tripwire_pm-0.7.0/src/tripwire/templates/skills/agent-messaging/references/EXAMPLES.md +109 -0
  200. tripwire_pm-0.7.0/src/tripwire/templates/skills/agent-messaging/references/MESSAGE_TYPES.md +153 -0
  201. tripwire_pm-0.7.0/src/tripwire/templates/skills/backend-development/SKILL.md +255 -0
  202. tripwire_pm-0.7.0/src/tripwire/templates/skills/backend-development/references/COMMIT_PATTERN.md +97 -0
  203. tripwire_pm-0.7.0/src/tripwire/templates/skills/backend-development/references/DEPENDENCIES.md +73 -0
  204. tripwire_pm-0.7.0/src/tripwire/templates/skills/backend-development/references/TDD.md +115 -0
  205. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/SKILL.md +400 -0
  206. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/examples/artifacts/compliance.md +66 -0
  207. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/examples/artifacts/gap-analysis.md +53 -0
  208. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/examples/artifacts/plan.md +85 -0
  209. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/examples/artifacts/scoping-verification.md +20 -0
  210. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/examples/artifacts/task-checklist.md +19 -0
  211. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/examples/artifacts/verification-checklist.md +35 -0
  212. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/examples/comment-status-change.yaml +15 -0
  213. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/examples/issue-epic.yaml +35 -0
  214. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/examples/issue-fully-formed.yaml +78 -0
  215. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/examples/issue-with-references.yaml +69 -0
  216. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/examples/node-config.yaml +28 -0
  217. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/examples/node-contract.yaml +37 -0
  218. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/examples/node-decision.yaml +45 -0
  219. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/examples/node-endpoint.yaml +39 -0
  220. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/examples/node-model.yaml +31 -0
  221. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/examples/orchestration-default.yaml +47 -0
  222. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/examples/session-multi-repo.yaml +60 -0
  223. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/examples/session-planned.yaml +37 -0
  224. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/examples/session-single-issue.yaml +31 -0
  225. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/ANTI_PATTERNS.md +218 -0
  226. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/BRANCH_NAMING.md +59 -0
  227. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/COMMIT_CONVENTIONS.md +103 -0
  228. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/CONCEPT_GRAPH.md +155 -0
  229. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/ID_ALLOCATION.md +108 -0
  230. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/POLICIES.md +42 -0
  231. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/REFERENCES.md +117 -0
  232. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/SCHEMA_ARTIFACTS.md +143 -0
  233. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/SCHEMA_COMMENTS.md +61 -0
  234. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/SCHEMA_ISSUES.md +109 -0
  235. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/SCHEMA_NODES.md +107 -0
  236. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/SCHEMA_PROJECT.md +80 -0
  237. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/SCHEMA_SESSIONS.md +203 -0
  238. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/SUBAGENT_DELEGATION.md +70 -0
  239. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/VALIDATION.md +257 -0
  240. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/WORKFLOWS_INCREMENTAL_UPDATE.md +95 -0
  241. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/WORKFLOWS_INITIAL_SCOPING.md +375 -0
  242. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/WORKFLOWS_REVIEW.md +151 -0
  243. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/WORKFLOWS_TRIAGE.md +78 -0
  244. tripwire_pm-0.7.0/src/tripwire/templates/skills/project-manager/references/WORKSPACE_SYNC.md +111 -0
  245. tripwire_pm-0.7.0/src/tripwire/templates/skills/verification/SKILL.md +278 -0
  246. tripwire_pm-0.7.0/src/tripwire/templates/skills/verification/references/REWARD_HACKING.md +195 -0
  247. tripwire_pm-0.7.0/src/tripwire/templates/skills/verification/references/SECURITY_CHECKLIST.md +113 -0
  248. tripwire_pm-0.7.0/src/tripwire/templates/spawn/defaults.yaml +42 -0
  249. tripwire_pm-0.7.0/src/tripwire/templates/standards.md.j2 +56 -0
  250. tripwire_pm-0.7.0/src/tripwire/ui/__init__.py +9 -0
  251. tripwire_pm-0.7.0/src/tripwire/ui/config.py +80 -0
  252. tripwire_pm-0.7.0/src/tripwire/ui/dependencies.py +100 -0
  253. tripwire_pm-0.7.0/src/tripwire/ui/events.py +245 -0
  254. tripwire_pm-0.7.0/src/tripwire/ui/file_watcher.py +383 -0
  255. tripwire_pm-0.7.0/src/tripwire/ui/frontend/.gitignore +2 -0
  256. tripwire_pm-0.7.0/src/tripwire/ui/frontend/.gitkeep +0 -0
  257. tripwire_pm-0.7.0/src/tripwire/ui/frontend/biome.json +22 -0
  258. tripwire_pm-0.7.0/src/tripwire/ui/frontend/components.json +21 -0
  259. tripwire_pm-0.7.0/src/tripwire/ui/frontend/index.html +12 -0
  260. tripwire_pm-0.7.0/src/tripwire/ui/frontend/package-lock.json +6346 -0
  261. tripwire_pm-0.7.0/src/tripwire/ui/frontend/package.json +58 -0
  262. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/__tests__/api/client.test.ts +161 -0
  263. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/__tests__/api/queryKeys.test.ts +137 -0
  264. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/__tests__/app/router.test.tsx +70 -0
  265. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/__tests__/components/test_MarkdownBody.test.tsx +224 -0
  266. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/__tests__/setup.ts +1 -0
  267. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/app/AgentStatusBar.tsx +10 -0
  268. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/app/App.tsx +6 -0
  269. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/app/PhaseBadge.tsx +6 -0
  270. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/app/Placeholder.tsx +20 -0
  271. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/app/ProjectShell.tsx +37 -0
  272. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/app/RootRedirect.tsx +7 -0
  273. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/app/Sidebar.tsx +20 -0
  274. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/app/TopBar.tsx +52 -0
  275. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/app/V2Placeholder.tsx +14 -0
  276. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/app/ValidationStatusIndicator.tsx +9 -0
  277. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/app/router.tsx +36 -0
  278. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/components/MarkdownBody.tsx +181 -0
  279. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/components/markdown/remark-tripwire-refs.ts +73 -0
  280. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/components/markdown/sanitize-schema.ts +38 -0
  281. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/components/ui/badge.tsx +33 -0
  282. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/components/ui/button.tsx +49 -0
  283. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/components/ui/card.tsx +55 -0
  284. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/components/ui/dialog.tsx +102 -0
  285. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/components/ui/dropdown-menu.tsx +187 -0
  286. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/components/ui/input.tsx +22 -0
  287. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/components/ui/popover.tsx +29 -0
  288. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/components/ui/scroll-area.tsx +44 -0
  289. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/components/ui/separator.tsx +24 -0
  290. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/components/ui/skeleton.tsx +7 -0
  291. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/components/ui/sonner.tsx +37 -0
  292. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/components/ui/table.tsx +91 -0
  293. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/components/ui/tabs.tsx +55 -0
  294. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/components/ui/tooltip.tsx +28 -0
  295. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/lib/api/client.ts +78 -0
  296. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/lib/api/endpoints/index.ts +10 -0
  297. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/lib/api/queryKeys.ts +62 -0
  298. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/lib/queryClient.ts +15 -0
  299. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/lib/utils.ts +6 -0
  300. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/main.tsx +19 -0
  301. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/styles/app.css +73 -0
  302. tripwire_pm-0.7.0/src/tripwire/ui/frontend/src/vite-env.d.ts +1 -0
  303. tripwire_pm-0.7.0/src/tripwire/ui/frontend/tsconfig.json +17 -0
  304. tripwire_pm-0.7.0/src/tripwire/ui/frontend/vite.config.ts +37 -0
  305. tripwire_pm-0.7.0/src/tripwire/ui/routes/__init__.py +62 -0
  306. tripwire_pm-0.7.0/src/tripwire/ui/routes/_v2_stub.py +40 -0
  307. tripwire_pm-0.7.0/src/tripwire/ui/routes/actions.py +60 -0
  308. tripwire_pm-0.7.0/src/tripwire/ui/routes/artifacts.py +24 -0
  309. tripwire_pm-0.7.0/src/tripwire/ui/routes/containers.py +62 -0
  310. tripwire_pm-0.7.0/src/tripwire/ui/routes/enums.py +21 -0
  311. tripwire_pm-0.7.0/src/tripwire/ui/routes/github.py +38 -0
  312. tripwire_pm-0.7.0/src/tripwire/ui/routes/graph.py +29 -0
  313. tripwire_pm-0.7.0/src/tripwire/ui/routes/health.py +17 -0
  314. tripwire_pm-0.7.0/src/tripwire/ui/routes/issues.py +23 -0
  315. tripwire_pm-0.7.0/src/tripwire/ui/routes/messages.py +52 -0
  316. tripwire_pm-0.7.0/src/tripwire/ui/routes/nodes.py +24 -0
  317. tripwire_pm-0.7.0/src/tripwire/ui/routes/orchestration.py +26 -0
  318. tripwire_pm-0.7.0/src/tripwire/ui/routes/pm_reviews.py +56 -0
  319. tripwire_pm-0.7.0/src/tripwire/ui/routes/projects.py +27 -0
  320. tripwire_pm-0.7.0/src/tripwire/ui/routes/sessions.py +22 -0
  321. tripwire_pm-0.7.0/src/tripwire/ui/routes/ws.py +58 -0
  322. tripwire_pm-0.7.0/src/tripwire/ui/server.py +211 -0
  323. tripwire_pm-0.7.0/src/tripwire/ui/services/__init__.py +1 -0
  324. tripwire_pm-0.7.0/src/tripwire/ui/services/container_service.py +111 -0
  325. tripwire_pm-0.7.0/src/tripwire/ui/services/enum_service.py +197 -0
  326. tripwire_pm-0.7.0/src/tripwire/ui/services/github_service.py +85 -0
  327. tripwire_pm-0.7.0/src/tripwire/ui/services/graph_service.py +441 -0
  328. tripwire_pm-0.7.0/src/tripwire/ui/services/issue_service.py +300 -0
  329. tripwire_pm-0.7.0/src/tripwire/ui/services/message_service.py +102 -0
  330. tripwire_pm-0.7.0/src/tripwire/ui/services/node_service.py +361 -0
  331. tripwire_pm-0.7.0/src/tripwire/ui/services/orchestration_service.py +236 -0
  332. tripwire_pm-0.7.0/src/tripwire/ui/services/pm_review_service.py +74 -0
  333. tripwire_pm-0.7.0/src/tripwire/ui/services/project_service.py +316 -0
  334. tripwire_pm-0.7.0/src/tripwire/ui/services/session_service.py +354 -0
  335. tripwire_pm-0.7.0/src/tripwire/ui/ws/__init__.py +1 -0
  336. tripwire_pm-0.7.0/src/tripwire/ui/ws/hub.py +171 -0
  337. tripwire_pm-0.7.0/tests/__init__.py +0 -0
  338. tripwire_pm-0.7.0/tests/conftest.py +244 -0
  339. tripwire_pm-0.7.0/tests/integration/__init__.py +0 -0
  340. tripwire_pm-0.7.0/tests/integration/test_init.py +487 -0
  341. tripwire_pm-0.7.0/tests/integration/test_next_key.py +263 -0
  342. tripwire_pm-0.7.0/tests/integration/test_read_commands.py +1000 -0
  343. tripwire_pm-0.7.0/tests/integration/test_scaffold.py +467 -0
  344. tripwire_pm-0.7.0/tests/integration/test_scaffold_alias.py +89 -0
  345. tripwire_pm-0.7.0/tests/integration/test_session_lifecycle.py +108 -0
  346. tripwire_pm-0.7.0/tests/integration/test_session_spawn_lifecycle.py +190 -0
  347. tripwire_pm-0.7.0/tests/integration/test_validate_fix_concurrent.py +151 -0
  348. tripwire_pm-0.7.0/tests/integration/test_workspace_integration.py +345 -0
  349. tripwire_pm-0.7.0/tests/ui/__init__.py +0 -0
  350. tripwire_pm-0.7.0/tests/ui/routes/__init__.py +0 -0
  351. tripwire_pm-0.7.0/tests/ui/routes/conftest.py +33 -0
  352. tripwire_pm-0.7.0/tests/ui/routes/test_v2_containers.py +66 -0
  353. tripwire_pm-0.7.0/tests/ui/routes/test_v2_github.py +68 -0
  354. tripwire_pm-0.7.0/tests/ui/routes/test_v2_messages.py +70 -0
  355. tripwire_pm-0.7.0/tests/ui/routes/test_v2_pm_reviews.py +83 -0
  356. tripwire_pm-0.7.0/tests/ui/routes/test_v2_stub_helper.py +36 -0
  357. tripwire_pm-0.7.0/tests/ui/services/__init__.py +0 -0
  358. tripwire_pm-0.7.0/tests/ui/services/test_enum_service.py +153 -0
  359. tripwire_pm-0.7.0/tests/ui/services/test_graph_service.py +195 -0
  360. tripwire_pm-0.7.0/tests/ui/services/test_issue_service.py +254 -0
  361. tripwire_pm-0.7.0/tests/ui/services/test_node_service.py +353 -0
  362. tripwire_pm-0.7.0/tests/ui/services/test_orchestration_service.py +193 -0
  363. tripwire_pm-0.7.0/tests/ui/services/test_project_service.py +417 -0
  364. tripwire_pm-0.7.0/tests/ui/services/test_session_service.py +221 -0
  365. tripwire_pm-0.7.0/tests/ui/test_config.py +115 -0
  366. tripwire_pm-0.7.0/tests/ui/test_dependencies.py +169 -0
  367. tripwire_pm-0.7.0/tests/ui/test_file_watcher.py +396 -0
  368. tripwire_pm-0.7.0/tests/ui/test_route_registration.py +97 -0
  369. tripwire_pm-0.7.0/tests/ui/test_server.py +158 -0
  370. tripwire_pm-0.7.0/tests/ui/test_static_serving.py +88 -0
  371. tripwire_pm-0.7.0/tests/ui/ws/__init__.py +0 -0
  372. tripwire_pm-0.7.0/tests/ui/ws/test_events.py +338 -0
  373. tripwire_pm-0.7.0/tests/ui/ws/test_hub.py +349 -0
  374. tripwire_pm-0.7.0/tests/ui/ws/test_ws_route.py +255 -0
  375. tripwire_pm-0.7.0/tests/unit/__init__.py +0 -0
  376. tripwire_pm-0.7.0/tests/unit/cli/__init__.py +0 -0
  377. tripwire_pm-0.7.0/tests/unit/cli/test_ui_cmd.py +119 -0
  378. tripwire_pm-0.7.0/tests/unit/test_agenda.py +116 -0
  379. tripwire_pm-0.7.0/tests/unit/test_branch_naming.py +132 -0
  380. tripwire_pm-0.7.0/tests/unit/test_ci_cli.py +98 -0
  381. tripwire_pm-0.7.0/tests/unit/test_cli_completion.py +47 -0
  382. tripwire_pm-0.7.0/tests/unit/test_cli_profiling.py +127 -0
  383. tripwire_pm-0.7.0/tests/unit/test_cli_verbose.py +129 -0
  384. tripwire_pm-0.7.0/tests/unit/test_concept_graph.py +149 -0
  385. tripwire_pm-0.7.0/tests/unit/test_context_budget.py +107 -0
  386. tripwire_pm-0.7.0/tests/unit/test_dependency_graph.py +165 -0
  387. tripwire_pm-0.7.0/tests/unit/test_enum_loader.py +105 -0
  388. tripwire_pm-0.7.0/tests/unit/test_freshness.py +273 -0
  389. tripwire_pm-0.7.0/tests/unit/test_git_helpers.py +136 -0
  390. tripwire_pm-0.7.0/tests/unit/test_graph_cache.py +476 -0
  391. tripwire_pm-0.7.0/tests/unit/test_graph_navigation.py +109 -0
  392. tripwire_pm-0.7.0/tests/unit/test_handoff_model.py +65 -0
  393. tripwire_pm-0.7.0/tests/unit/test_handoff_store.py +55 -0
  394. tripwire_pm-0.7.0/tests/unit/test_id_generator.py +52 -0
  395. tripwire_pm-0.7.0/tests/unit/test_init_workspace_flag.py +134 -0
  396. tripwire_pm-0.7.0/tests/unit/test_insights.py +118 -0
  397. tripwire_pm-0.7.0/tests/unit/test_insights_cli.py +240 -0
  398. tripwire_pm-0.7.0/tests/unit/test_issue_artifact_model.py +58 -0
  399. tripwire_pm-0.7.0/tests/unit/test_issue_artifact_store.py +75 -0
  400. tripwire_pm-0.7.0/tests/unit/test_issue_cli.py +142 -0
  401. tripwire_pm-0.7.0/tests/unit/test_key_allocator.py +167 -0
  402. tripwire_pm-0.7.0/tests/unit/test_key_prefix_extract.py +103 -0
  403. tripwire_pm-0.7.0/tests/unit/test_lint_rules.py +122 -0
  404. tripwire_pm-0.7.0/tests/unit/test_lint_workspace_rules.py +175 -0
  405. tripwire_pm-0.7.0/tests/unit/test_linter_framework.py +71 -0
  406. tripwire_pm-0.7.0/tests/unit/test_manifest_loader.py +92 -0
  407. tripwire_pm-0.7.0/tests/unit/test_manifest_model.py +78 -0
  408. tripwire_pm-0.7.0/tests/unit/test_merge_brief.py +151 -0
  409. tripwire_pm-0.7.0/tests/unit/test_models.py +409 -0
  410. tripwire_pm-0.7.0/tests/unit/test_node_model_workspace_fields.py +70 -0
  411. tripwire_pm-0.7.0/tests/unit/test_node_store.py +113 -0
  412. tripwire_pm-0.7.0/tests/unit/test_parser.py +96 -0
  413. tripwire_pm-0.7.0/tests/unit/test_paths_overrides.py +47 -0
  414. tripwire_pm-0.7.0/tests/unit/test_paths_workspace.py +39 -0
  415. tripwire_pm-0.7.0/tests/unit/test_phase_status_coherence.py +37 -0
  416. tripwire_pm-0.7.0/tests/unit/test_process_helpers.py +29 -0
  417. tripwire_pm-0.7.0/tests/unit/test_project_model.py +44 -0
  418. tripwire_pm-0.7.0/tests/unit/test_project_model_workspace_field.py +34 -0
  419. tripwire_pm-0.7.0/tests/unit/test_reference_parser.py +87 -0
  420. tripwire_pm-0.7.0/tests/unit/test_refresh.py +77 -0
  421. tripwire_pm-0.7.0/tests/unit/test_refs_cli.py +36 -0
  422. tripwire_pm-0.7.0/tests/unit/test_selectors.py +68 -0
  423. tripwire_pm-0.7.0/tests/unit/test_session_agenda.py +128 -0
  424. tripwire_pm-0.7.0/tests/unit/test_session_cli.py +223 -0
  425. tripwire_pm-0.7.0/tests/unit/test_session_complete.py +197 -0
  426. tripwire_pm-0.7.0/tests/unit/test_session_lifecycle_cli.py +421 -0
  427. tripwire_pm-0.7.0/tests/unit/test_session_monitor.py +92 -0
  428. tripwire_pm-0.7.0/tests/unit/test_session_monitor_cli.py +79 -0
  429. tripwire_pm-0.7.0/tests/unit/test_session_readiness.py +69 -0
  430. tripwire_pm-0.7.0/tests/unit/test_session_review.py +86 -0
  431. tripwire_pm-0.7.0/tests/unit/test_session_review_cli.py +150 -0
  432. tripwire_pm-0.7.0/tests/unit/test_session_spawn_cli.py +114 -0
  433. tripwire_pm-0.7.0/tests/unit/test_session_store.py +136 -0
  434. tripwire_pm-0.7.0/tests/unit/test_skill_examples.py +349 -0
  435. tripwire_pm-0.7.0/tests/unit/test_slash_command_templates.py +143 -0
  436. tripwire_pm-0.7.0/tests/unit/test_slash_frontmatter.py +105 -0
  437. tripwire_pm-0.7.0/tests/unit/test_slash_naming_convention.py +27 -0
  438. tripwire_pm-0.7.0/tests/unit/test_slash_no_deprecated_refs.py +51 -0
  439. tripwire_pm-0.7.0/tests/unit/test_smoke.py +10 -0
  440. tripwire_pm-0.7.0/tests/unit/test_spawn_config.py +133 -0
  441. tripwire_pm-0.7.0/tests/unit/test_spawn_models.py +43 -0
  442. tripwire_pm-0.7.0/tests/unit/test_status.py +85 -0
  443. tripwire_pm-0.7.0/tests/unit/test_store.py +275 -0
  444. tripwire_pm-0.7.0/tests/unit/test_stream_json.py +58 -0
  445. tripwire_pm-0.7.0/tests/unit/test_uuid_helpers.py +50 -0
  446. tripwire_pm-0.7.0/tests/unit/test_validator.py +1279 -0
  447. tripwire_pm-0.7.0/tests/unit/test_validator_coherence.py +129 -0
  448. tripwire_pm-0.7.0/tests/unit/test_validator_handoff.py +87 -0
  449. tripwire_pm-0.7.0/tests/unit/test_validator_issue_artifacts.py +74 -0
  450. tripwire_pm-0.7.0/tests/unit/test_validator_manifest.py +50 -0
  451. tripwire_pm-0.7.0/tests/unit/test_workspace_cli.py +208 -0
  452. tripwire_pm-0.7.0/tests/unit/test_workspace_copy.py +191 -0
  453. tripwire_pm-0.7.0/tests/unit/test_workspace_fork_promote.py +227 -0
  454. tripwire_pm-0.7.0/tests/unit/test_workspace_merge_resolve.py +183 -0
  455. tripwire_pm-0.7.0/tests/unit/test_workspace_model.py +61 -0
  456. tripwire_pm-0.7.0/tests/unit/test_workspace_pull.py +236 -0
  457. tripwire_pm-0.7.0/tests/unit/test_workspace_pull_conflict.py +174 -0
  458. tripwire_pm-0.7.0/tests/unit/test_workspace_push.py +182 -0
  459. tripwire_pm-0.7.0/tests/unit/test_workspace_store.py +115 -0
  460. tripwire_pm-0.7.0/tests/unit/test_workspace_sync.py +89 -0
  461. tripwire_pm-0.7.0/uv.lock +1124 -0
@@ -0,0 +1,23 @@
1
+ name: CI
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches: [main]
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+ - uses: astral-sh/setup-uv@v3
14
+ with:
15
+ python-version: "3.13"
16
+ - name: Sync
17
+ run: uv sync
18
+ - name: Ruff check
19
+ run: uv run ruff check
20
+ - name: Ruff format check
21
+ run: uv run ruff format --check
22
+ - name: Pytest
23
+ run: uv run pytest tests/ -q
@@ -0,0 +1,21 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags: ["v*"]
6
+
7
+ jobs:
8
+ publish:
9
+ runs-on: ubuntu-latest
10
+ environment: pypi
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+ - uses: astral-sh/setup-uv@v3
14
+ with:
15
+ python-version: "3.13"
16
+ - name: Build
17
+ run: uv build
18
+ - name: Publish
19
+ env:
20
+ UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
21
+ run: uv publish
@@ -0,0 +1,52 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ dist/
9
+ *.egg-info/
10
+ .eggs/
11
+ *.egg
12
+
13
+ # Virtual environments
14
+ .venv/
15
+ venv/
16
+ env/
17
+
18
+ # uv
19
+ .python-version
20
+
21
+ # Tooling caches
22
+ .pytest_cache/
23
+ .ruff_cache/
24
+ .mypy_cache/
25
+ .tox/
26
+ .coverage
27
+ .coverage.*
28
+ htmlcov/
29
+ coverage.xml
30
+ *.cover
31
+
32
+ # IDE
33
+ .idea/
34
+ .vscode/
35
+ *.swp
36
+ *.swo
37
+ .DS_Store
38
+
39
+ # Editor backups
40
+ *~
41
+ *.bak
42
+
43
+ # Project-specific
44
+ tmp/
45
+
46
+ # UI frontend build artifacts
47
+ src/tripwire/ui/static/
48
+ src/tripwire/ui/frontend/node_modules/
49
+ src/tripwire/ui/frontend/dist/
50
+
51
+ # Worktrees
52
+ .worktrees/
@@ -0,0 +1,47 @@
1
+ # Pre-commit hooks for keel.
2
+ #
3
+ # Install once per clone:
4
+ # make pre-commit-install
5
+ #
6
+ # Run on all files (not just staged):
7
+ # make pre-commit-run
8
+ #
9
+ # Pinned versions are bumped manually when the in-project tooling moves
10
+ # in pyproject.toml. NO pytest hook — too slow per commit; gate via CI
11
+ # or `make check`.
12
+ repos:
13
+ - repo: https://github.com/astral-sh/ruff-pre-commit
14
+ # Keep this in sync with the ruff version in pyproject.toml so the
15
+ # hook formatting matches `make format` exactly.
16
+ rev: v0.15.9
17
+ hooks:
18
+ - id: ruff-check
19
+ args: [--fix]
20
+ - id: ruff-format
21
+
22
+ - repo: https://github.com/codespell-project/codespell
23
+ rev: v2.3.0
24
+ hooks:
25
+ - id: codespell
26
+ # Match the scope of `make lint`: src/ and tests/ only.
27
+ # Docs use product names (iTerm, etc.) that codespell flags.
28
+ files: ^(src|tests)/
29
+ args: [--skip=uv.lock]
30
+
31
+ - repo: https://github.com/pre-commit/pre-commit-hooks
32
+ rev: v5.0.0
33
+ hooks:
34
+ - id: trailing-whitespace
35
+ - id: end-of-file-fixer
36
+ - id: check-yaml
37
+ # Many shipped templates and examples are frontmatter+body files
38
+ # (delimited with `---`), which the YAML parser interprets as
39
+ # multi-document. Allow that, and skip Jinja2 templates entirely.
40
+ args: [--allow-multiple-documents]
41
+ exclude: |
42
+ (?x)^(
43
+ src/keel/templates/.*\.j2|
44
+ src/keel/templates/skills/project-manager/examples/.*\.yaml|
45
+ src/keel/templates/agent_templates/.*\.yaml
46
+ )$
47
+ - id: check-added-large-files
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Seido AI Ltd
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,64 @@
1
+ .PHONY: install sync test lint format check clean build pre-commit-install pre-commit-run
2
+
3
+ # ==============================================================================
4
+ # Installation
5
+ # ==============================================================================
6
+
7
+ install:
8
+ @command -v uv >/dev/null 2>&1 || { echo "uv is not installed. Install from https://docs.astral.sh/uv/"; exit 1; }
9
+ uv sync
10
+
11
+ sync: install
12
+
13
+ # ==============================================================================
14
+ # Testing
15
+ # ==============================================================================
16
+
17
+ test:
18
+ uv run pytest
19
+
20
+ test-unit:
21
+ uv run pytest tests/unit -v
22
+
23
+ test-integration:
24
+ uv run pytest tests/integration -v
25
+
26
+ # ==============================================================================
27
+ # Code Quality
28
+ # ==============================================================================
29
+
30
+ lint:
31
+ uv run ruff check src tests
32
+ uv run codespell src tests
33
+
34
+ format:
35
+ uv run ruff format src tests
36
+
37
+ format-check:
38
+ uv run ruff format --check src tests
39
+
40
+ # Run every quality gate (lint + format + tests)
41
+ check: lint format-check test
42
+
43
+ # ==============================================================================
44
+ # Build
45
+ # ==============================================================================
46
+
47
+ build:
48
+ uv build
49
+
50
+ clean:
51
+ rm -rf .pytest_cache .ruff_cache dist build *.egg-info
52
+ find . -type d -name __pycache__ -exec rm -rf {} +
53
+
54
+ # ==============================================================================
55
+ # Pre-commit
56
+ # ==============================================================================
57
+
58
+ # Install pre-commit git hook (one-time per clone)
59
+ pre-commit-install:
60
+ uv run pre-commit install
61
+
62
+ # Run all pre-commit hooks across the whole repo (not just staged files)
63
+ pre-commit-run:
64
+ uv run pre-commit run --all-files
@@ -0,0 +1,44 @@
1
+ Metadata-Version: 2.4
2
+ Name: tripwire-pm
3
+ Version: 0.7.0
4
+ Summary: Git-native project management with concept graph for AI agents
5
+ Author: Seido AI Ltd
6
+ License: MIT License
7
+
8
+ Copyright (c) 2026 Seido AI Ltd
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+ License-File: LICENSE
28
+ Requires-Python: <3.14,>=3.10
29
+ Requires-Dist: click<9.0,>=8.1
30
+ Requires-Dist: docker<8.0,>=7.0
31
+ Requires-Dist: fastapi<1.0,>=0.115
32
+ Requires-Dist: jinja2<4.0,>=3.1
33
+ Requires-Dist: pydantic<3.0,>=2.0
34
+ Requires-Dist: pyyaml<7.0,>=6.0
35
+ Requires-Dist: rich<14.0,>=13.0
36
+ Requires-Dist: uvicorn[standard]<1.0,>=0.30
37
+ Requires-Dist: watchdog<6.0,>=4.0
38
+ Requires-Dist: websockets<14.0,>=12.0
39
+ Provides-Extra: projects
40
+ Requires-Dist: click<9.0,>=8.1; extra == 'projects'
41
+ Requires-Dist: jinja2<4.0,>=3.1; extra == 'projects'
42
+ Requires-Dist: pydantic<3.0,>=2.0; extra == 'projects'
43
+ Requires-Dist: pyyaml<7.0,>=6.0; extra == 'projects'
44
+ Requires-Dist: rich<14.0,>=13.0; extra == 'projects'