@scemoon/cdh 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (528) hide show
  1. package/ai-dlc-skill/SKILL.md +75 -0
  2. package/ai-dlc-skill/agents/deliver-agent.md +24 -0
  3. package/ai-dlc-skill/agents/master.md +44 -0
  4. package/ai-dlc-skill/agents/plan-agent.md +23 -0
  5. package/ai-dlc-skill/agents/understand-agent.md +23 -0
  6. package/ai-dlc-skill/agents/verify-agent.md +27 -0
  7. package/ai-dlc-skill/architecture/project-structure.md +78 -0
  8. package/ai-dlc-skill/brownfield/README.md +30 -0
  9. package/ai-dlc-skill/brownfield/generate-context.sh +64 -0
  10. package/ai-dlc-skill/brownfield/scripts/deps.sh +27 -0
  11. package/ai-dlc-skill/brownfield/scripts/discover.sh +34 -0
  12. package/ai-dlc-skill/brownfield/scripts/extract-api.sh +45 -0
  13. package/ai-dlc-skill/components/backend.md +34 -0
  14. package/ai-dlc-skill/components/desktop.md +30 -0
  15. package/ai-dlc-skill/components/mya.md +29 -0
  16. package/ai-dlc-skill/components/native.md +30 -0
  17. package/ai-dlc-skill/components/tta.md +29 -0
  18. package/ai-dlc-skill/components/web.md +31 -0
  19. package/ai-dlc-skill/components/wxa.md +29 -0
  20. package/ai-dlc-skill/contracts/README.md +25 -0
  21. package/ai-dlc-skill/core/adaptive-flow.md +36 -0
  22. package/ai-dlc-skill/core/security.md +29 -0
  23. package/ai-dlc-skill/cross-tool/cline/export.sh +31 -0
  24. package/ai-dlc-skill/cross-tool/copilot/export.sh +47 -0
  25. package/ai-dlc-skill/cross-tool/cursor/export.sh +32 -0
  26. package/ai-dlc-skill/cross-tool/export.sh +22 -0
  27. package/ai-dlc-skill/cross-tool/onecode/config.yaml.tpl +17 -0
  28. package/ai-dlc-skill/cross-tool/onecode/export-skills.sh +31 -0
  29. package/ai-dlc-skill/cross-tool/onecode/export.sh +48 -0
  30. package/ai-dlc-skill/phases/deliver/entry.md +26 -0
  31. package/ai-dlc-skill/phases/deliver/lifecycle.md +185 -0
  32. package/ai-dlc-skill/phases/deliver/prompt.md +40 -0
  33. package/ai-dlc-skill/phases/deliver/rules.md +61 -0
  34. package/ai-dlc-skill/phases/plan/entry.md +25 -0
  35. package/ai-dlc-skill/phases/plan/lifecycle.md +204 -0
  36. package/ai-dlc-skill/phases/plan/prompt.md +38 -0
  37. package/ai-dlc-skill/phases/plan/rules.md +25 -0
  38. package/ai-dlc-skill/phases/understand/entry.md +26 -0
  39. package/ai-dlc-skill/phases/understand/lifecycle.md +184 -0
  40. package/ai-dlc-skill/phases/understand/prompt.md +41 -0
  41. package/ai-dlc-skill/phases/understand/rules.md +37 -0
  42. package/ai-dlc-skill/phases/verify/entry.md +26 -0
  43. package/ai-dlc-skill/phases/verify/lifecycle.md +192 -0
  44. package/ai-dlc-skill/phases/verify/prompt.md +43 -0
  45. package/ai-dlc-skill/phases/verify/rules.md +73 -0
  46. package/ai-dlc-skill/practices/bdd.md +91 -0
  47. package/ai-dlc-skill/practices/sdd.md +84 -0
  48. package/ai-dlc-skill/practices/tdd.md +95 -0
  49. package/ai-dlc-skill/providers/README.md +114 -0
  50. package/ai-dlc-skill/providers/aliyun/deployment.yaml +66 -0
  51. package/ai-dlc-skill/providers/aliyun/preview.yaml +84 -0
  52. package/ai-dlc-skill/providers/aliyun/provider.yaml +160 -0
  53. package/ai-dlc-skill/providers/tcb/deployment.yaml +69 -0
  54. package/ai-dlc-skill/providers/tcb/preview.yaml +83 -0
  55. package/ai-dlc-skill/providers/tcb/provider.yaml +172 -0
  56. package/ai-dlc-skill/requirements.md +140 -0
  57. package/ai-dlc-skill/skill.yaml +147 -0
  58. package/ai-dlc-skill/templates/integration/CHANGELOG.md +41 -0
  59. package/ai-dlc-skill/templates/integration/asyncapi.yaml +43 -0
  60. package/ai-dlc-skill/templates/integration/contract-diff.md +63 -0
  61. package/ai-dlc-skill/templates/integration/contract-spec.md +49 -0
  62. package/ai-dlc-skill/templates/integration/openapi.yaml +18 -0
  63. package/ai-dlc-skill/templates/integration/runtime-contract.yaml +36 -0
  64. package/ai-dlc-skill/templates/plan/design.md +49 -0
  65. package/ai-dlc-skill/templates/plan/task-list.md +32 -0
  66. package/ai-dlc-skill/templates/project/README.md +127 -0
  67. package/ai-dlc-skill/templates/project/template.md +119 -0
  68. package/ai-dlc-skill/templates/understand/feature.feature +23 -0
  69. package/ai-dlc-skill/templates/understand/intent.md +29 -0
  70. package/ai-dlc-skill/templates/understand/spec-delta.md +47 -0
  71. package/ai-dlc-skill/templates/verify/test-unit.py +27 -0
  72. package/ai-dlc-skill/walkthrough/collect.sh +50 -0
  73. package/ai-dlc-skill/walkthrough/template.md +54 -0
  74. package/ai-dlc-skill/workflows/ai-dlc.yaml +110 -0
  75. package/ai-dlc-skill/workflows/deployment.yaml +199 -0
  76. package/cdh/__init__.py +0 -0
  77. package/cdh/__main__.py +4 -0
  78. package/cdh/__pycache__/__init__.cpython-313.pyc +0 -0
  79. package/cdh/__pycache__/__init__.cpython-314.pyc +0 -0
  80. package/cdh/__pycache__/cli.cpython-314.pyc +0 -0
  81. package/cdh/__pycache__/scaffold.cpython-313.pyc +0 -0
  82. package/cdh/__pycache__/scaffold.cpython-314.pyc +0 -0
  83. package/cdh/cli.py +361 -0
  84. package/cdh/scaffold.py +312 -0
  85. package/cli.js +2 -0
  86. package/onecode/__init__.py +1 -0
  87. package/onecode/__main__.py +4 -0
  88. package/onecode/__pycache__/__init__.cpython-314.pyc +0 -0
  89. package/onecode/__pycache__/cli.cpython-314.pyc +0 -0
  90. package/onecode/__pycache__/commands.cpython-314.pyc +0 -0
  91. package/onecode/__pycache__/config.cpython-314.pyc +0 -0
  92. package/onecode/__pycache__/config_screen.cpython-314.pyc +0 -0
  93. package/onecode/__pycache__/mock_data.cpython-314.pyc +0 -0
  94. package/onecode/agent/__init__.py +0 -0
  95. package/onecode/agent/__pycache__/__init__.cpython-314.pyc +0 -0
  96. package/onecode/agent/__pycache__/cdh_agent_acp.cpython-313.pyc +0 -0
  97. package/onecode/agent/__pycache__/cdh_agent_acp.cpython-314.pyc +0 -0
  98. package/onecode/agent/__pycache__/cdh_loader.cpython-314.pyc +0 -0
  99. package/onecode/agent/__pycache__/context.cpython-314.pyc +0 -0
  100. package/onecode/agent/__pycache__/engine.cpython-314.pyc +0 -0
  101. package/onecode/agent/__pycache__/harness_skill.cpython-314.pyc +0 -0
  102. package/onecode/agent/__pycache__/hooks.cpython-314.pyc +0 -0
  103. package/onecode/agent/__pycache__/onecode_agent_acp.cpython-314.pyc +0 -0
  104. package/onecode/agent/__pycache__/permissions.cpython-314.pyc +0 -0
  105. package/onecode/agent/__pycache__/permissions_store.cpython-314.pyc +0 -0
  106. package/onecode/agent/__pycache__/session.cpython-314.pyc +0 -0
  107. package/onecode/agent/agents/__init__.py +29 -0
  108. package/onecode/agent/agents/__pycache__/__init__.cpython-314.pyc +0 -0
  109. package/onecode/agent/agents/__pycache__/types.cpython-314.pyc +0 -0
  110. package/onecode/agent/agents/types.py +662 -0
  111. package/onecode/agent/attachments.py +113 -0
  112. package/onecode/agent/cdh_loader.py +262 -0
  113. package/onecode/agent/context.py +338 -0
  114. package/onecode/agent/engine.py +1894 -0
  115. package/onecode/agent/hooks.py +86 -0
  116. package/onecode/agent/onecode_agent_acp.py +2203 -0
  117. package/onecode/agent/permissions.py +151 -0
  118. package/onecode/agent/permissions_store.py +62 -0
  119. package/onecode/agent/session.py +186 -0
  120. package/onecode/agent/snapshot.py +145 -0
  121. package/onecode/agent/tools/__init__.py +17 -0
  122. package/onecode/agent/tools/__pycache__/__init__.cpython-314.pyc +0 -0
  123. package/onecode/agent/tools/__pycache__/agent_tools.cpython-314.pyc +0 -0
  124. package/onecode/agent/tools/__pycache__/apply_patch_tool.cpython-314.pyc +0 -0
  125. package/onecode/agent/tools/__pycache__/bash_tool.cpython-314.pyc +0 -0
  126. package/onecode/agent/tools/__pycache__/communication_tools.cpython-314.pyc +0 -0
  127. package/onecode/agent/tools/__pycache__/config_tool.cpython-314.pyc +0 -0
  128. package/onecode/agent/tools/__pycache__/cron_tools.cpython-314.pyc +0 -0
  129. package/onecode/agent/tools/__pycache__/errors.cpython-314.pyc +0 -0
  130. package/onecode/agent/tools/__pycache__/file_ops.cpython-314.pyc +0 -0
  131. package/onecode/agent/tools/__pycache__/file_tools.cpython-314.pyc +0 -0
  132. package/onecode/agent/tools/__pycache__/git_tools.cpython-314.pyc +0 -0
  133. package/onecode/agent/tools/__pycache__/lsp_tools.cpython-314.pyc +0 -0
  134. package/onecode/agent/tools/__pycache__/mcp_tools.cpython-314.pyc +0 -0
  135. package/onecode/agent/tools/__pycache__/permission_handler.cpython-314.pyc +0 -0
  136. package/onecode/agent/tools/__pycache__/permissions.cpython-314.pyc +0 -0
  137. package/onecode/agent/tools/__pycache__/protocol.cpython-314.pyc +0 -0
  138. package/onecode/agent/tools/__pycache__/registry.cpython-314.pyc +0 -0
  139. package/onecode/agent/tools/__pycache__/sandbox.cpython-314.pyc +0 -0
  140. package/onecode/agent/tools/__pycache__/schema_validation.cpython-314.pyc +0 -0
  141. package/onecode/agent/tools/__pycache__/skill_tools.cpython-314.pyc +0 -0
  142. package/onecode/agent/tools/__pycache__/task_tools.cpython-314.pyc +0 -0
  143. package/onecode/agent/tools/__pycache__/web_tools.cpython-314.pyc +0 -0
  144. package/onecode/agent/tools/agent_tools.py +134 -0
  145. package/onecode/agent/tools/apply_patch_tool.py +144 -0
  146. package/onecode/agent/tools/bash_tool.py +91 -0
  147. package/onecode/agent/tools/communication_tools.py +149 -0
  148. package/onecode/agent/tools/config_tool.py +130 -0
  149. package/onecode/agent/tools/cron_tools.py +179 -0
  150. package/onecode/agent/tools/errors.py +17 -0
  151. package/onecode/agent/tools/file_ops.py +187 -0
  152. package/onecode/agent/tools/file_tools.py +226 -0
  153. package/onecode/agent/tools/git_tools.py +88 -0
  154. package/onecode/agent/tools/lsp_tools.py +404 -0
  155. package/onecode/agent/tools/mcp_tools.py +129 -0
  156. package/onecode/agent/tools/permission_handler.py +46 -0
  157. package/onecode/agent/tools/permissions.py +77 -0
  158. package/onecode/agent/tools/protocol.py +20 -0
  159. package/onecode/agent/tools/registry.py +134 -0
  160. package/onecode/agent/tools/sandbox.py +264 -0
  161. package/onecode/agent/tools/schema_validation.py +100 -0
  162. package/onecode/agent/tools/skill_tools.py +52 -0
  163. package/onecode/agent/tools/task_tools.py +249 -0
  164. package/onecode/agent/tools/web_tools.py +170 -0
  165. package/onecode/builtin_skills/git/SKILL.md +64 -0
  166. package/onecode/builtin_skills/git/skill.yaml +7 -0
  167. package/onecode/builtin_skills/shell/SKILL.md +58 -0
  168. package/onecode/builtin_skills/shell/skill.yaml +8 -0
  169. package/onecode/cli.py +755 -0
  170. package/onecode/cloud/__init__.py +0 -0
  171. package/onecode/cloud/base.py +20 -0
  172. package/onecode/codebase/__init__.py +69 -0
  173. package/onecode/codebase/__pycache__/__init__.cpython-314.pyc +0 -0
  174. package/onecode/codebase/__pycache__/chunker.cpython-314.pyc +0 -0
  175. package/onecode/codebase/__pycache__/config.cpython-314.pyc +0 -0
  176. package/onecode/codebase/__pycache__/indexer.cpython-314.pyc +0 -0
  177. package/onecode/codebase/__pycache__/retriever.cpython-314.pyc +0 -0
  178. package/onecode/codebase/__pycache__/storage.cpython-314.pyc +0 -0
  179. package/onecode/codebase/__pycache__/tools.cpython-314.pyc +0 -0
  180. package/onecode/codebase/chunker.py +130 -0
  181. package/onecode/codebase/indexer.py +136 -0
  182. package/onecode/codebase/retriever.py +192 -0
  183. package/onecode/codebase/storage.py +130 -0
  184. package/onecode/codebase/tools.py +59 -0
  185. package/onecode/commands.py +276 -0
  186. package/onecode/config.py +285 -0
  187. package/onecode/config_screen.py +594 -0
  188. package/onecode/cron/__init__.py +3 -0
  189. package/onecode/lsp/__init__.py +3 -0
  190. package/onecode/mcp/__init__.py +4 -0
  191. package/onecode/mcp/__pycache__/__init__.cpython-314.pyc +0 -0
  192. package/onecode/mcp/__pycache__/client.cpython-314.pyc +0 -0
  193. package/onecode/mcp/__pycache__/manager.cpython-314.pyc +0 -0
  194. package/onecode/mcp/client.py +193 -0
  195. package/onecode/mcp/manager.py +191 -0
  196. package/onecode/memory/__init__.py +95 -0
  197. package/onecode/memory/__pycache__/__init__.cpython-314.pyc +0 -0
  198. package/onecode/memory/__pycache__/backend.cpython-314.pyc +0 -0
  199. package/onecode/memory/__pycache__/offload.cpython-314.pyc +0 -0
  200. package/onecode/memory/__pycache__/pyramid.cpython-314.pyc +0 -0
  201. package/onecode/memory/__pycache__/recall.cpython-314.pyc +0 -0
  202. package/onecode/memory/__pycache__/symbolic.cpython-314.pyc +0 -0
  203. package/onecode/memory/backend.py +185 -0
  204. package/onecode/memory/offload.py +114 -0
  205. package/onecode/memory/pyramid.py +202 -0
  206. package/onecode/memory/recall.py +168 -0
  207. package/onecode/memory/symbolic.py +164 -0
  208. package/onecode/models/__init__.py +4 -0
  209. package/onecode/models/__pycache__/__init__.cpython-314.pyc +0 -0
  210. package/onecode/models/__pycache__/errors.cpython-314.pyc +0 -0
  211. package/onecode/models/__pycache__/messages.cpython-314.pyc +0 -0
  212. package/onecode/models/__pycache__/provider.cpython-314.pyc +0 -0
  213. package/onecode/models/__pycache__/registry.cpython-314.pyc +0 -0
  214. package/onecode/models/errors.py +94 -0
  215. package/onecode/models/messages.py +662 -0
  216. package/onecode/models/provider.py +450 -0
  217. package/onecode/models/providers/__init__.py +17 -0
  218. package/onecode/models/providers/__pycache__/__init__.cpython-314.pyc +0 -0
  219. package/onecode/models/providers/__pycache__/anthropic_provider.cpython-314.pyc +0 -0
  220. package/onecode/models/providers/__pycache__/deepseek_provider.cpython-314.pyc +0 -0
  221. package/onecode/models/providers/__pycache__/glm_provider.cpython-314.pyc +0 -0
  222. package/onecode/models/providers/__pycache__/minimax_provider.cpython-314.pyc +0 -0
  223. package/onecode/models/providers/__pycache__/minimaxi_provider.cpython-314.pyc +0 -0
  224. package/onecode/models/providers/__pycache__/mock_provider.cpython-314.pyc +0 -0
  225. package/onecode/models/providers/__pycache__/ollama_provider.cpython-314.pyc +0 -0
  226. package/onecode/models/providers/__pycache__/openai_provider.cpython-314.pyc +0 -0
  227. package/onecode/models/providers/anthropic_provider.py +224 -0
  228. package/onecode/models/providers/deepseek_provider.py +210 -0
  229. package/onecode/models/providers/glm_provider.py +154 -0
  230. package/onecode/models/providers/minimax_provider.py +154 -0
  231. package/onecode/models/providers/minimaxi_provider.py +363 -0
  232. package/onecode/models/providers/ollama_provider.py +96 -0
  233. package/onecode/models/providers/openai_provider.py +233 -0
  234. package/onecode/models/registry.py +212 -0
  235. package/onecode/server/__init__.py +3 -0
  236. package/onecode/server/app.py +224 -0
  237. package/onecode/skills/__init__.py +11 -0
  238. package/onecode/skills/__pycache__/__init__.cpython-314.pyc +0 -0
  239. package/onecode/skills/__pycache__/argument_substitution.cpython-314.pyc +0 -0
  240. package/onecode/skills/__pycache__/create.cpython-314.pyc +0 -0
  241. package/onecode/skills/__pycache__/frontmatter.cpython-314.pyc +0 -0
  242. package/onecode/skills/__pycache__/loader.cpython-314.pyc +0 -0
  243. package/onecode/skills/__pycache__/manager.cpython-314.pyc +0 -0
  244. package/onecode/skills/__pycache__/model.cpython-314.pyc +0 -0
  245. package/onecode/skills/argument_substitution.py +39 -0
  246. package/onecode/skills/create.py +56 -0
  247. package/onecode/skills/frontmatter.py +33 -0
  248. package/onecode/skills/loader.py +157 -0
  249. package/onecode/skills/manager.py +75 -0
  250. package/onecode/skills/model.py +43 -0
  251. package/onecode/storage/__init__.py +0 -0
  252. package/onecode/storage/activity.py +64 -0
  253. package/onecode/storage/project.py +54 -0
  254. package/onecode/storage/session.py +113 -0
  255. package/onecode/tasks/__init__.py +26 -0
  256. package/onecode/tasks/manager.py +219 -0
  257. package/onecode/tasks/models.py +240 -0
  258. package/onecode/trace/__init__.py +0 -0
  259. package/onecode/trace/tracer.py +174 -0
  260. package/onecode/utils/__init__.py +0 -0
  261. package/onecode/utils/helpers.py +20 -0
  262. package/onecode-cli.js +2 -0
  263. package/package.json +32 -0
  264. package/pyproject.toml +60 -0
  265. package/run.js +86 -0
  266. package/tui/__init__.py +46 -0
  267. package/tui/__main__.py +4 -0
  268. package/tui/__pycache__/__init__.cpython-314.pyc +0 -0
  269. package/tui/__pycache__/_loop.cpython-314.pyc +0 -0
  270. package/tui/__pycache__/_path_fuzzy_search.cpython-314.pyc +0 -0
  271. package/tui/__pycache__/_path_match.cpython-314.pyc +0 -0
  272. package/tui/__pycache__/agent.cpython-314.pyc +0 -0
  273. package/tui/__pycache__/agent_schema.cpython-314.pyc +0 -0
  274. package/tui/__pycache__/agents.cpython-314.pyc +0 -0
  275. package/tui/__pycache__/answer.cpython-314.pyc +0 -0
  276. package/tui/__pycache__/app.cpython-314.pyc +0 -0
  277. package/tui/__pycache__/atomic.cpython-314.pyc +0 -0
  278. package/tui/__pycache__/complete.cpython-314.pyc +0 -0
  279. package/tui/__pycache__/constants.cpython-314.pyc +0 -0
  280. package/tui/__pycache__/conversation_markdown.cpython-314.pyc +0 -0
  281. package/tui/__pycache__/danger.cpython-314.pyc +0 -0
  282. package/tui/__pycache__/db.cpython-314.pyc +0 -0
  283. package/tui/__pycache__/dec.cpython-314.pyc +0 -0
  284. package/tui/__pycache__/directory.cpython-314.pyc +0 -0
  285. package/tui/__pycache__/directory_suggester.cpython-314.pyc +0 -0
  286. package/tui/__pycache__/directory_watcher.cpython-314.pyc +0 -0
  287. package/tui/__pycache__/format_path.cpython-314.pyc +0 -0
  288. package/tui/__pycache__/fuzzy.cpython-314.pyc +0 -0
  289. package/tui/__pycache__/fuzzy_index.cpython-314.pyc +0 -0
  290. package/tui/__pycache__/history.cpython-314.pyc +0 -0
  291. package/tui/__pycache__/jsonrpc.cpython-314.pyc +0 -0
  292. package/tui/__pycache__/menus.cpython-314.pyc +0 -0
  293. package/tui/__pycache__/message_log.cpython-314.pyc +0 -0
  294. package/tui/__pycache__/messages.cpython-314.pyc +0 -0
  295. package/tui/__pycache__/path_complete.cpython-314.pyc +0 -0
  296. package/tui/__pycache__/path_filter.cpython-314.pyc +0 -0
  297. package/tui/__pycache__/paths.cpython-314.pyc +0 -0
  298. package/tui/__pycache__/pill.cpython-314.pyc +0 -0
  299. package/tui/__pycache__/platform_commands.cpython-314.pyc +0 -0
  300. package/tui/__pycache__/protocol.cpython-314.pyc +0 -0
  301. package/tui/__pycache__/session_tracker.cpython-314.pyc +0 -0
  302. package/tui/__pycache__/settings.cpython-314.pyc +0 -0
  303. package/tui/__pycache__/settings_schema.cpython-314.pyc +0 -0
  304. package/tui/__pycache__/shell.cpython-314.pyc +0 -0
  305. package/tui/__pycache__/shell_read.cpython-314.pyc +0 -0
  306. package/tui/__pycache__/slash_command.cpython-314.pyc +0 -0
  307. package/tui/__pycache__/version.cpython-314.pyc +0 -0
  308. package/tui/_loop.py +86 -0
  309. package/tui/_path_fuzzy_search.py +48 -0
  310. package/tui/_path_match.py +141 -0
  311. package/tui/about.py +95 -0
  312. package/tui/acp/__pycache__/agent.cpython-314.pyc +0 -0
  313. package/tui/acp/__pycache__/api.cpython-314.pyc +0 -0
  314. package/tui/acp/__pycache__/encode_tool_call_id.cpython-314.pyc +0 -0
  315. package/tui/acp/__pycache__/messages.cpython-314.pyc +0 -0
  316. package/tui/acp/__pycache__/prompt.cpython-314.pyc +0 -0
  317. package/tui/acp/__pycache__/protocol.cpython-314.pyc +0 -0
  318. package/tui/acp/agent.py +886 -0
  319. package/tui/acp/api.py +55 -0
  320. package/tui/acp/encode_tool_call_id.py +12 -0
  321. package/tui/acp/messages.py +190 -0
  322. package/tui/acp/prompt.py +110 -0
  323. package/tui/acp/protocol.py +462 -0
  324. package/tui/agent.py +70 -0
  325. package/tui/agent_schema.py +76 -0
  326. package/tui/agents.py +45 -0
  327. package/tui/ansi/__init__.py +1 -0
  328. package/tui/ansi/__pycache__/__init__.cpython-314.pyc +0 -0
  329. package/tui/ansi/__pycache__/_ansi.cpython-314.pyc +0 -0
  330. package/tui/ansi/__pycache__/_ansi_colors.cpython-314.pyc +0 -0
  331. package/tui/ansi/__pycache__/_control_codes.cpython-314.pyc +0 -0
  332. package/tui/ansi/__pycache__/_keys.cpython-314.pyc +0 -0
  333. package/tui/ansi/__pycache__/_sgr_styles.cpython-314.pyc +0 -0
  334. package/tui/ansi/__pycache__/_stream_parser.cpython-314.pyc +0 -0
  335. package/tui/ansi/_ansi.py +1689 -0
  336. package/tui/ansi/_ansi_colors.py +264 -0
  337. package/tui/ansi/_control_codes.py +37 -0
  338. package/tui/ansi/_keys.py +251 -0
  339. package/tui/ansi/_sgr_styles.py +64 -0
  340. package/tui/ansi/_stream_parser.py +418 -0
  341. package/tui/answer.py +12 -0
  342. package/tui/app.py +1236 -0
  343. package/tui/atomic.py +37 -0
  344. package/tui/cli.py +313 -0
  345. package/tui/code_analyze.py +27 -0
  346. package/tui/complete.py +38 -0
  347. package/tui/constants.py +61 -0
  348. package/tui/conversation_markdown.py +30 -0
  349. package/tui/danger.py +372 -0
  350. package/tui/data/agents/ampcode.com.toml +51 -0
  351. package/tui/data/agents/augmentcode.com.toml +40 -0
  352. package/tui/data/agents/cdh.cloud-dev-harness.toml +22 -0
  353. package/tui/data/agents/claude.com.toml +41 -0
  354. package/tui/data/agents/copilot.github.com.toml +29 -0
  355. package/tui/data/agents/crowai.dev.toml +35 -0
  356. package/tui/data/agents/cursor.com.toml +38 -0
  357. package/tui/data/agents/deepagents.langchain.com +33 -0
  358. package/tui/data/agents/docker.com.toml +59 -0
  359. package/tui/data/agents/geminicli.com.toml +28 -0
  360. package/tui/data/agents/goose.ai.toml +51 -0
  361. package/tui/data/agents/inference.huggingface.co.toml +41 -0
  362. package/tui/data/agents/kimi.com.toml +35 -0
  363. package/tui/data/agents/kiro.dev.toml +42 -0
  364. package/tui/data/agents/openai.com.toml +53 -0
  365. package/tui/data/agents/openclaw.ai.toml +37 -0
  366. package/tui/data/agents/opencode.ai.toml +39 -0
  367. package/tui/data/agents/openhands.dev.toml +45 -0
  368. package/tui/data/agents/stakpak.dev.toml +61 -0
  369. package/tui/data/agents/vibe.mistral.ai.toml +30 -0
  370. package/tui/data/agents/vtcode.dev.toml +62 -0
  371. package/tui/data/images/frog.png +0 -0
  372. package/tui/data/sounds/question.wav +0 -0
  373. package/tui/data/sounds/turn-over.wav +0 -0
  374. package/tui/db.py +190 -0
  375. package/tui/dec.py +332 -0
  376. package/tui/directory.py +234 -0
  377. package/tui/directory_suggester.py +93 -0
  378. package/tui/directory_watcher.py +197 -0
  379. package/tui/format_path.py +25 -0
  380. package/tui/fuzzy.py +140 -0
  381. package/tui/fuzzy_index.py +275 -0
  382. package/tui/gist.py +33 -0
  383. package/tui/history.py +138 -0
  384. package/tui/jsonrpc.py +578 -0
  385. package/tui/menus.py +14 -0
  386. package/tui/message_log.py +69 -0
  387. package/tui/messages.py +139 -0
  388. package/tui/option_content.py +51 -0
  389. package/tui/os.py +0 -0
  390. package/tui/path_complete.py +217 -0
  391. package/tui/path_filter.py +124 -0
  392. package/tui/paths.py +71 -0
  393. package/tui/pill.py +23 -0
  394. package/tui/platform_commands.py +52 -0
  395. package/tui/prompt/__pycache__/extract.cpython-314.pyc +0 -0
  396. package/tui/prompt/__pycache__/resource.cpython-314.pyc +0 -0
  397. package/tui/prompt/extract.py +19 -0
  398. package/tui/prompt/resource.py +68 -0
  399. package/tui/protocol.py +28 -0
  400. package/tui/screens/__init__.py +0 -0
  401. package/tui/screens/__pycache__/__init__.cpython-314.pyc +0 -0
  402. package/tui/screens/__pycache__/log.cpython-314.pyc +0 -0
  403. package/tui/screens/__pycache__/main.cpython-314.pyc +0 -0
  404. package/tui/screens/__pycache__/projects_screen.cpython-314.pyc +0 -0
  405. package/tui/screens/__pycache__/sessions.cpython-314.pyc +0 -0
  406. package/tui/screens/__pycache__/settings.cpython-314.pyc +0 -0
  407. package/tui/screens/__pycache__/store.cpython-314.pyc +0 -0
  408. package/tui/screens/action_modal.py +94 -0
  409. package/tui/screens/agent_modal.py +175 -0
  410. package/tui/screens/command_edit_modal.py +74 -0
  411. package/tui/screens/log.py +553 -0
  412. package/tui/screens/main.py +411 -0
  413. package/tui/screens/main.tcss +655 -0
  414. package/tui/screens/permissions.py +404 -0
  415. package/tui/screens/permissions.tcss +72 -0
  416. package/tui/screens/projects.tcss +66 -0
  417. package/tui/screens/projects_app.py +319 -0
  418. package/tui/screens/projects_screen.py +142 -0
  419. package/tui/screens/session_resume_modal.py +172 -0
  420. package/tui/screens/session_resume_modal.tcss +35 -0
  421. package/tui/screens/sessions.py +166 -0
  422. package/tui/screens/sessions.tcss +119 -0
  423. package/tui/screens/settings.py +254 -0
  424. package/tui/screens/settings.tcss +101 -0
  425. package/tui/screens/store.py +500 -0
  426. package/tui/screens/store.tcss +274 -0
  427. package/tui/screens/tool_content_screen.py +59 -0
  428. package/tui/session_tracker.py +120 -0
  429. package/tui/settings.py +353 -0
  430. package/tui/settings_schema.py +431 -0
  431. package/tui/shell.py +304 -0
  432. package/tui/shell_read.py +42 -0
  433. package/tui/slash_command.py +34 -0
  434. package/tui/tui.tcss +246 -0
  435. package/tui/twitter.py +38 -0
  436. package/tui/version.py +80 -0
  437. package/tui/visuals/__init__.py +0 -0
  438. package/tui/visuals/__pycache__/__init__.cpython-314.pyc +0 -0
  439. package/tui/visuals/__pycache__/columns.cpython-314.pyc +0 -0
  440. package/tui/visuals/columns.py +273 -0
  441. package/tui/widgets/__init__.py +0 -0
  442. package/tui/widgets/__pycache__/__init__.cpython-314.pyc +0 -0
  443. package/tui/widgets/__pycache__/acp_content.cpython-314.pyc +0 -0
  444. package/tui/widgets/__pycache__/agent_response.cpython-314.pyc +0 -0
  445. package/tui/widgets/__pycache__/agent_thought.cpython-314.pyc +0 -0
  446. package/tui/widgets/__pycache__/ask_user.cpython-314.pyc +0 -0
  447. package/tui/widgets/__pycache__/condensed_path.cpython-314.pyc +0 -0
  448. package/tui/widgets/__pycache__/context_stats.cpython-314.pyc +0 -0
  449. package/tui/widgets/__pycache__/conversation.cpython-313.pyc +0 -0
  450. package/tui/widgets/__pycache__/conversation.cpython-314.pyc +0 -0
  451. package/tui/widgets/__pycache__/diff_view.cpython-314.pyc +0 -0
  452. package/tui/widgets/__pycache__/directory_input.cpython-314.pyc +0 -0
  453. package/tui/widgets/__pycache__/flash.cpython-314.pyc +0 -0
  454. package/tui/widgets/__pycache__/future_text.cpython-314.pyc +0 -0
  455. package/tui/widgets/__pycache__/grid_select.cpython-314.pyc +0 -0
  456. package/tui/widgets/__pycache__/highlighted_textarea.cpython-314.pyc +0 -0
  457. package/tui/widgets/__pycache__/mandelbrot.cpython-314.pyc +0 -0
  458. package/tui/widgets/__pycache__/markdown_note.cpython-314.pyc +0 -0
  459. package/tui/widgets/__pycache__/menu.cpython-314.pyc +0 -0
  460. package/tui/widgets/__pycache__/modified_files.cpython-314.pyc +0 -0
  461. package/tui/widgets/__pycache__/non_selectable_label.cpython-314.pyc +0 -0
  462. package/tui/widgets/__pycache__/note.cpython-314.pyc +0 -0
  463. package/tui/widgets/__pycache__/path_search.cpython-314.pyc +0 -0
  464. package/tui/widgets/__pycache__/plan.cpython-314.pyc +0 -0
  465. package/tui/widgets/__pycache__/project_directory_tree.cpython-314.pyc +0 -0
  466. package/tui/widgets/__pycache__/project_grid_select.cpython-314.pyc +0 -0
  467. package/tui/widgets/__pycache__/project_summary.cpython-314.pyc +0 -0
  468. package/tui/widgets/__pycache__/prompt.cpython-314.pyc +0 -0
  469. package/tui/widgets/__pycache__/question.cpython-314.pyc +0 -0
  470. package/tui/widgets/__pycache__/session_grid_select.cpython-314.pyc +0 -0
  471. package/tui/widgets/__pycache__/session_summary.cpython-314.pyc +0 -0
  472. package/tui/widgets/__pycache__/session_tabs.cpython-314.pyc +0 -0
  473. package/tui/widgets/__pycache__/shell_result.cpython-314.pyc +0 -0
  474. package/tui/widgets/__pycache__/shell_terminal.cpython-314.pyc +0 -0
  475. package/tui/widgets/__pycache__/side_bar.cpython-314.pyc +0 -0
  476. package/tui/widgets/__pycache__/slash_complete.cpython-314.pyc +0 -0
  477. package/tui/widgets/__pycache__/strike_text.cpython-314.pyc +0 -0
  478. package/tui/widgets/__pycache__/subagent.cpython-314.pyc +0 -0
  479. package/tui/widgets/__pycache__/terminal.cpython-313.pyc +0 -0
  480. package/tui/widgets/__pycache__/terminal.cpython-314.pyc +0 -0
  481. package/tui/widgets/__pycache__/throbber.cpython-314.pyc +0 -0
  482. package/tui/widgets/__pycache__/tool_call.cpython-313.pyc +0 -0
  483. package/tui/widgets/__pycache__/tool_call.cpython-314.pyc +0 -0
  484. package/tui/widgets/__pycache__/user_input.cpython-314.pyc +0 -0
  485. package/tui/widgets/acp_content.py +70 -0
  486. package/tui/widgets/agent_response.py +77 -0
  487. package/tui/widgets/agent_thought.py +168 -0
  488. package/tui/widgets/ask_user.py +264 -0
  489. package/tui/widgets/command_pane.py +223 -0
  490. package/tui/widgets/condensed_path.py +115 -0
  491. package/tui/widgets/context_stats.py +66 -0
  492. package/tui/widgets/conversation.py +2441 -0
  493. package/tui/widgets/danger_warning.py +65 -0
  494. package/tui/widgets/diff_view.py +59 -0
  495. package/tui/widgets/directory_input.py +8 -0
  496. package/tui/widgets/flash.py +81 -0
  497. package/tui/widgets/future_text.py +126 -0
  498. package/tui/widgets/grid_select.py +234 -0
  499. package/tui/widgets/highlighted_textarea.py +180 -0
  500. package/tui/widgets/mandelbrot.py +294 -0
  501. package/tui/widgets/markdown_note.py +13 -0
  502. package/tui/widgets/menu.py +147 -0
  503. package/tui/widgets/modified_files.py +106 -0
  504. package/tui/widgets/non_selectable_label.py +5 -0
  505. package/tui/widgets/note.py +18 -0
  506. package/tui/widgets/path_search.py +492 -0
  507. package/tui/widgets/plan.py +263 -0
  508. package/tui/widgets/project_directory_tree.py +90 -0
  509. package/tui/widgets/project_grid_select.py +35 -0
  510. package/tui/widgets/project_summary.py +33 -0
  511. package/tui/widgets/prompt.py +795 -0
  512. package/tui/widgets/question.py +360 -0
  513. package/tui/widgets/session_grid_select.py +224 -0
  514. package/tui/widgets/session_summary.py +115 -0
  515. package/tui/widgets/session_tabs.py +188 -0
  516. package/tui/widgets/shell_result.py +35 -0
  517. package/tui/widgets/shell_terminal.py +40 -0
  518. package/tui/widgets/side_bar.py +114 -0
  519. package/tui/widgets/slash_complete.py +235 -0
  520. package/tui/widgets/strike_text.py +70 -0
  521. package/tui/widgets/subagent.py +87 -0
  522. package/tui/widgets/terminal.py +577 -0
  523. package/tui/widgets/terminal_tool.py +351 -0
  524. package/tui/widgets/throbber.py +100 -0
  525. package/tui/widgets/tool_call.py +368 -0
  526. package/tui/widgets/user_input.py +23 -0
  527. package/tui/widgets/version.py +5 -0
  528. package/tui/widgets/welcome.py +31 -0
@@ -0,0 +1,61 @@
1
+ # Deliver Rules (DLV-*) + Stack Rules (STK-*)
2
+
3
+ ## DLV-001: Unified Stack Preview Before Production
4
+ **Severity:** MUST
5
+ **Description:** Every release MUST deploy as unified stack preview with per-component e2e + cross-stack e2e passing before production.
6
+ **Valid:** `deploy_stack --preview` → `pytest tests/cross-stack/ --stack-url $STACK_URL`.
7
+ **Invalid:** Deploying only one component to preview.
8
+
9
+ ## DLV-002: Production Approval Gate
10
+ **Severity:** MUST
11
+ **Description:** Production deployment requires explicit human approval reviewing per-component e2e, cross-stack e2e, staging smoke, and contract-diff.md.
12
+ **Valid:** Human reviews all reports and explicitly approves.
13
+ **Invalid:** Automated production deployment triggered solely by test pass.
14
+
15
+ ## DLV-003: Stack BVT Validation
16
+ **Severity:** MUST
17
+ **Description:** After production deploy, BVT MUST run against the stack. Failure triggers automatic stack rollback.
18
+ **Valid:** `bvt ${PRODUCTION_URL}` → fail → `deploy_stack --rollback`.
19
+ **Invalid:** BVT skip or success with errors.
20
+
21
+ ## DLV-004: Per-Component Preview URL Isolation
22
+ **Severity:** MUST
23
+ **Description:** e2e tests run against dynamic preview URLs, never hardcoded production URLs.
24
+ **Valid:** `pytest apps/web/tests/e2e/ --preview-url $WEB_URL`.
25
+ **Invalid:** Hardcoded `https://prod.example.com` in tests.
26
+
27
+ ## STK-001: Component Scope Declaration
28
+ **Severity:** MUST
29
+ **Description:** Every spec delta, design doc, task list MUST declare `affects:`.
30
+ **Valid:** `affects: [web, backend, contracts]`.
31
+ **Invalid:** Missing `affects` declaration.
32
+
33
+ ## STK-002: Cross-Component Tasks Have Edges
34
+ **Severity:** MUST
35
+ **Description:** Tasks consuming a contract MUST have explicit `depends_on` edge to producing task.
36
+ **Valid:** `depends_on: [int-contract-auth-login, be-login-endpoint]`.
37
+ **Invalid:** Implicit dependency with no DAG edge.
38
+
39
+ ## STK-003: Cross-Stack E2E Mandatory for ≥2 Components
40
+ **Severity:** MUST
41
+ **Description:** Changes affecting ≥2 components MUST have cross-stack e2e testing real flow between components.
42
+ **Valid:** Real web client against real backend preview.
43
+ **Invalid:** Cross-stack test that mocks the other component.
44
+
45
+ ## STK-004: Unified Stack Deploy
46
+ **Severity:** MUST
47
+ **Description:** Shared environments MUST use `deploy_stack` orchestrator, not per-component ad-hoc deploys.
48
+ **Valid:** `deploy_stack --preview` deploys all components.
49
+ **Invalid:** Ad-hoc per-component deploy to shared preview.
50
+
51
+ ## STK-005: Cross-Component Build Config Injection
52
+ **Severity:** MUST
53
+ **Description:** All client builds receive `BACKEND_URL` as build-time env var, never hardcoded.
54
+ **Valid:** `pnpm --filter web build --env BACKEND_URL=$BACKEND_URL`.
55
+ **Invalid:** Hardcoded URLs in `.env.production`.
56
+
57
+ ## STK-006: Stack-Level Rollback
58
+ **Severity:** MUST
59
+ **Description:** Rollback is stack operation. Entire previous stable version reverts together.
60
+ **Valid:** `deploy_stack --rollback v1.2.3` reverts all components.
61
+ **Invalid:** Rolling back only backend while leaving clients on new version.
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: ai-dlc-plan
3
+ description: "Plan Phase: Design Doc → Task DAG → Test Plan"
4
+ triggers:
5
+ - plan
6
+ - design
7
+ - task-list
8
+ ---
9
+
10
+ # Plan Phase (规划)
11
+
12
+ Convert approved spec into technical design and task decomposition.
13
+
14
+ ## Entry
15
+
16
+ See `lifecycle.md` for the full phase flow.
17
+ See `rules.md` for enforceable rules (PLN-001 to PLN-004).
18
+ See `prompt.md` for the sub-agent delegation prompt template.
19
+
20
+ ## 当被委派时
21
+
22
+ 1. 读取 spec-delta 和 feature 文件
23
+ 2. 生成设计文档(per-component + integration)
24
+ 3. 分解为带 DAG 依赖的任务单元
25
+ 4. 编写测试计划(每层)
@@ -0,0 +1,204 @@
1
+ # AI-DLC Phase 2: Plan (规划)
2
+
3
+ Design the solution and decompose work into tracked, dependency-ordered units, including cross-component edges.
4
+
5
+ ## Goal
6
+
7
+ Translate approved specifications into a concrete technical plan that can be executed unit by unit, with explicit cross-component dependencies and contract references.
8
+
9
+ ## Flow
10
+
11
+ ```
12
+ Approved Spec + BDD Features (per-component + cross-stack)
13
+
14
+
15
+ SDD: Design Doc
16
+ - architecture (per component)
17
+ - data model
18
+ - API contract (references INT-FR-*)
19
+ - state machine
20
+ - integration section (cross-component flow)
21
+
22
+
23
+ SDD: Task Decomposition (units with DAG, including cross-component edges)
24
+
25
+
26
+ TDD: Test Plan (per scenario, written before implementation)
27
+ - unit / integration / e2e / cross-stack layer
28
+
29
+
30
+ INT: Contract plan (which contracts change, version impact)
31
+
32
+
33
+ Gate: Human review → approved or revise
34
+ ```
35
+
36
+ ## SDD — Design Document (multi-component aware)
37
+
38
+ A multi-component design doc is organized by **component sections** plus an **integration section**.
39
+
40
+ ```markdown
41
+ ## Design — CHG-{{id}}
42
+
43
+ **Affects:** [{{components}}]
44
+ **Contracts touched:** {{list or "none"}}
45
+
46
+ ### Component: backend (BE-FR-*)
47
+ - Architecture: {{serverless / container / ...}}
48
+ - Data model: {{tables / collections}}
49
+ - API surface: {{references INT-FR-* contract}}
50
+ - State machine: {{...}}
51
+
52
+ ### Component: web (WEB-FR-*)
53
+ - Architecture: {{SPA / SSR}}
54
+ - Routes: {{...}}
55
+ - Data flow: {{uses packages/shared generated from INT-FR-001}}
56
+
57
+ ### Component: native (NATIVE-FR-*)
58
+ - Architecture: {{native architecture}}
59
+ - Data flow: {{uses packages/shared generated from INT-FR-*}}
60
+
61
+ ### Component: desktop (DESKTOP-FR-*)
62
+ - Architecture: {{desktop architecture}}
63
+ - Data flow: {{uses packages/shared generated from INT-FR-*}}
64
+
65
+ ### Component: wxa (WXA-FR-*)
66
+ - Architecture: {{WeChat Mini Program}}
67
+ - Data flow: {{uses packages/shared generated from INT-FR-*}}
68
+
69
+ ### Component: mya (MYA-FR-*)
70
+ - Architecture: {{Mini Program}}
71
+ - Data flow: {{uses packages/shared generated from INT-FR-*}}
72
+
73
+ ### Component: tta (TTA-FR-*)
74
+ - Architecture: {{TikTok Mini Program}}
75
+ - Data flow: {{uses packages/shared generated from INT-FR-*}}
76
+
77
+ ### Integration
78
+ - Flow: {{web → backend → DB; or app → backend → event → ...}}
79
+ - Contract refs: INT-FR-001, INT-FR-002
80
+ - Failure modes: {{timeout, retry, fallback}}
81
+ - Backward compat: {{additive / breaking → migration}}
82
+ ```
83
+
84
+ ### Data Model
85
+
86
+ | Field | Type | Constraints |
87
+ |-------|------|-------------|
88
+ | id | UUID | PK |
89
+ | email | string | UNIQUE, NOT NULL |
90
+ | password_hash | string | NOT NULL |
91
+
92
+ ### API Contract
93
+
94
+ | Method | Path | INT FR | Provider | Consumer |
95
+ |--------|------|--------|----------|----------|
96
+ | POST | /auth/login | INT-FR-001 | BE-FR-001 | WEB-FR-001, NATIVE-FR-001, DESKTOP-FR-001, WXA-FR-001, MYA-FR-001, TTA-FR-001 |
97
+
98
+ ### State Machine
99
+
100
+ ```
101
+ ANONYMOUS → LOGGED_IN → SESSION_EXPIRED
102
+
103
+ LOGGED_OUT
104
+ ```
105
+
106
+ ## SDD — Task Decomposition with DAG (multi-component)
107
+
108
+ Tasks MUST include cross-component edges. A task that produces or consumes a contract depends on the corresponding `INT-FR-*` task.
109
+
110
+ ```mermaid
111
+ graph TD
112
+ INT1[INT-FR-001: define /auth/login contract]
113
+ BE1[BE-FR-001 unit-1: DB schema + models]
114
+ BE2[BE-FR-001 unit-2: login endpoint]
115
+ WEB1[WEB-FR-001 unit-1: login form + API client]
116
+ WEB2[WEB-FR-001 unit-2: token storage + redirect]
117
+ CS1[INT-FR-001 cross-stack: e2e login flow]
118
+
119
+ INT1 --> BE2
120
+ INT1 --> WEB1
121
+ BE1 --> BE2
122
+ BE2 --> CS1
123
+ WEB1 --> CS1
124
+ WEB2 --> CS1
125
+ ```
126
+
127
+ ```yaml
128
+ units:
129
+ - id: int-contract-1
130
+ fr: INT-FR-001
131
+ affects: [contracts]
132
+ depends_on: []
133
+ deliverables: [contracts/api/auth.yaml]
134
+ - id: be-unit-1
135
+ fr: BE-FR-001
136
+ affects: [backend]
137
+ depends_on: []
138
+ scenarios: []
139
+ - id: be-unit-2
140
+ fr: BE-FR-001
141
+ affects: [backend]
142
+ depends_on: [int-contract-1, be-unit-1]
143
+ scenarios: ["BE-FR-001 @positive", "BE-FR-001 @negative"]
144
+ - id: web-unit-1
145
+ fr: WEB-FR-001
146
+ affects: [web]
147
+ depends_on: [int-contract-1]
148
+ scenarios: ["WEB-FR-001 @positive", "WEB-FR-001 @negative"]
149
+ - id: cross-stack-1
150
+ fr: INT-FR-001
151
+ affects: [web, backend]
152
+ depends_on: [be-unit-2, web-unit-1]
153
+ layer: cross-stack
154
+ scenarios: ["INT-FR-001 @positive", "INT-FR-001 @negative", "INT-FR-001 @edge"]
155
+ ```
156
+
157
+ ## TDD — Test Plan (per scenario, per layer)
158
+
159
+ Each scenario gets a test plan that names the **layer** it runs at.
160
+
161
+ ```markdown
162
+ ## BE-FR-001 @positive: Login API success
163
+ Layer: integration
164
+ Test cases:
165
+ 1. test_login_valid_credentials_returns_jwt
166
+ 2. test_login_sets_expiry_3600
167
+
168
+ ## WEB-FR-001 @positive: Login form happy path
169
+ Layer: e2e
170
+ Test cases:
171
+ 1. test_login_form_submits_and_redirects
172
+
173
+ ## INT-FR-001 @positive: Full web→backend login flow
174
+ Layer: cross-stack
175
+ Test cases:
176
+ 1. test_web_login_e2e_against_preview_url
177
+ ```
178
+
179
+ ## INT — Contract Plan
180
+
181
+ For each contract change, list:
182
+ - Old version, new version
183
+ - Breaking? (yes / no) → if yes, plan migration in `contracts/CHANGELOG.md`
184
+ - Consumers affected (which components will pull the new shared types)
185
+ - Backward-compat strategy (additive vs. deprecate-then-remove)
186
+
187
+ ## Artifacts
188
+
189
+ | Artifact | Location | Purpose |
190
+ |----------|----------|---------|
191
+ | Design doc | `openspec/changes/{id}/design.md` | Per-component + integration |
192
+ | Task list | `openspec/changes/{id}/task-list.md` | DAG with cross-component edges |
193
+ | Test plan | Embedded in task-list or separate | Per-scenario, per-layer |
194
+ | Contract plan | `openspec/changes/{id}/contract-diff.md` placeholder | Filled in Verify |
195
+
196
+ ## Gate
197
+
198
+ **Before advancing to Verify phase:**
199
+ - [ ] Design doc has per-component sections + integration section
200
+ - [ ] Tasks decomposed with explicit dependency DAG (including cross-component edges)
201
+ - [ ] `INT-FR-*` tasks precede the consuming per-component tasks
202
+ - [ ] Test plans name the layer (`unit` / `integration` / `e2e` / `cross-stack`) per scenario
203
+ - [ ] Contract plan identifies breaking vs. additive
204
+ - [ ] Human reviewed and approved
@@ -0,0 +1,38 @@
1
+ # Plan Phase Agent Prompt
2
+
3
+ 你是一个 AI-DLC Plan Phase Agent。
4
+ 由 Master Agent 委派处理方案设计。
5
+
6
+ ## 输入
7
+ - `openspec/changes/{id}/spec-delta.md`
8
+ - BDD feature 文件
9
+
10
+ ## 任务
11
+
12
+ 1. **SDD: Design Doc**
13
+ - 在 `openspec/changes/{id}/design.md` 输出
14
+ - 包含:架构图(Mermaid)、数据模型、API 表、状态机
15
+ - 每组件独立 section + 集成 section
16
+
17
+ 2. **SDD: Task Decomposition**
18
+ - 在 `openspec/changes/{id}/task-list.md` 输出
19
+ - YAML 格式,unit 带 `depends_on` DAG
20
+ - 跨组件 task 显示声明 `depends_on` 关系
21
+
22
+ 3. **TDD: Test Plan**
23
+ - 每个 BDD scenario 对应最少一个测试 case
24
+ - 标注 layer: unit / integration / e2e / cross-stack / contract
25
+
26
+ 4. **Contract Plan**
27
+ - 标注版本影响:additive / breaking
28
+ - 如需 breaking change 标记为 human-approval 阻塞
29
+
30
+ ## 输出产物
31
+ - `openspec/changes/{id}/design.md`
32
+ - `openspec/changes/{id}/task-list.md`
33
+ - `openspec/changes/{id}/contract-diff.md`(占位)
34
+
35
+ ## 约束
36
+ - 遵守 `rules.md` 中的 PLN-001 到 PLN-004
37
+ - 遵守 STK-001, STK-002(affects 声明 + cross-component 依赖)
38
+ - 完成前必须通过 Human Gate 审查
@@ -0,0 +1,25 @@
1
+ # Plan Rules (PLN-*)
2
+
3
+ ## PLN-001: Design Documentation
4
+ **Severity:** MUST
5
+ **Description:** Each feature MUST have a design document covering architecture, data model, API contracts, and state machine. For multi-component features, MUST have per-component sections and an integration section.
6
+ **Valid:** `openspec/changes/{id}/design.md` with `## Component: backend`, `## Component: web`, `## Integration`.
7
+ **Invalid:** A single flat architecture section with no per-component concerns.
8
+
9
+ ## PLN-002: Dependency DAG
10
+ **Severity:** MUST
11
+ **Description:** Units MUST be decomposed with explicit dependency DAG including cross-component edges. A task producing/consuming a contract MUST depend on the corresponding `INT-FR-*` task.
12
+ **Valid:** `depends_on: [int-contract-1, be-unit-1]` for a web task consuming the contract.
13
+ **Invalid:** Per-component task lists with no cross-component edges.
14
+
15
+ ## PLN-003: Test Plan Before Implementation
16
+ **Severity:** MUST
17
+ **Description:** Test plans for each scenario MUST be written before implementation and MUST name the test layer (`unit`, `integration`, `e2e`, `cross-stack`, `contract`).
18
+ **Valid:** `BE-FR-001 @positive → layer: integration → test_login_valid_credentials`
19
+ **Invalid:** A test plan with no layer designation.
20
+
21
+ ## PLN-004: Contract Plan
22
+ **Severity:** MUST
23
+ **Description:** For each contract change, the design doc MUST identify version impact (additive vs. breaking), consumers affected, and backward-compat strategy.
24
+ **Valid:** `INT-FR-001 change: additive, MINOR bump; no consumer migration needed`
25
+ **Invalid:** Contract change with no version impact noted.
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: ai-dlc-understand
3
+ description: "Understand Phase: Intent → Spec Delta → BDD Feature Files"
4
+ triggers:
5
+ - understand
6
+ - spec-delta
7
+ - EARS
8
+ - feature file
9
+ ---
10
+
11
+ # Understand Phase (理解)
12
+
13
+ Transform business intent into formal specification and behavior scenarios.
14
+
15
+ ## Entry
16
+
17
+ See `lifecycle.md` for the full phase flow.
18
+ See `rules.md` for enforceable rules (UND-001 to UND-006).
19
+ See `prompt.md` for the sub-agent delegation prompt template.
20
+
21
+ ## 当被委派时
22
+
23
+ 1. 读取 intent 输入
24
+ 2. 按 SDD 方法生成 spec-delta(EARS 格式)
25
+ 3. 为每个 FR 写 BDD feature 文件(≥3 scenarios: positive, negative, edge)
26
+ 4. 输出到 `openspec/changes/{id}/`
@@ -0,0 +1,184 @@
1
+ # AI-DLC Phase 1: Understand (理解)
2
+
3
+ Transform business intent into formal specification and behavior scenarios, scoped to the right FR namespace.
4
+
5
+ ## Goal
6
+
7
+ Convert a business need into unambiguous, verifiable requirements before any design or code work begins. For multi-component features, capture the **cross-component boundary** in addition to per-component behavior.
8
+
9
+ ## Flow
10
+
11
+ ```
12
+ Intent (business need / user story)
13
+
14
+
15
+ Identify scope: which components does this touch?
16
+
17
+
18
+ SDD: Proposal (why, what, impact, affects: [native|desktop|web|backend|wxa|mya|tta|contracts])
19
+
20
+
21
+ SDD: Spec Delta (EARS format — ADDED/MODIFIED/REMOVED, FR namespaces)
22
+
23
+
24
+ BDD: Feature Files
25
+ - features/{component}/{domain}/{feature}.feature (per-component)
26
+ - features/cross-stack/{domain}/{feature}.feature (full flow, if applies)
27
+
28
+
29
+ Gate: Human review → approved or revise
30
+ ```
31
+
32
+ ## Scope Identification
33
+
34
+ Before writing the spec, declare which components the feature affects. This determines the FR namespaces and which lifecycle paths run.
35
+
36
+ | Affects | Example | FRs |
37
+ |---------|---------|-----|
38
+ | `[backend]` only | Internal API | `BE-FR-NNN` |
39
+ | `[web, backend]` | Login UI + API | `WEB-FR-NNN`, `BE-FR-NNN`, `INT-FR-NNN` |
40
+ | `[native, backend]` | Native login | `NATIVE-FR-NNN`, `BE-FR-NNN`, `INT-FR-NNN` |
41
+ | `[desktop, backend]` | Desktop login | `DESKTOP-FR-NNN`, `BE-FR-NNN`, `INT-FR-NNN` |
42
+ | `[wxa, backend]` | Mini-program login | `WXA-FR-NNN`, `BE-FR-NNN`, `INT-FR-NNN` |
43
+ | `[mya, backend]` | Mini-program login | `MYA-FR-NNN`, `BE-FR-NNN`, `INT-FR-NNN` |
44
+ | `[tta, backend]` | Mini-program login | `TTA-FR-NNN`, `BE-FR-NNN`, `INT-FR-NNN` |
45
+ | `[web, native, desktop, wxa, mya, tta, backend]` | Full feature | `WEB-FR-NNN`, `NATIVE-FR-NNN`, `DESKTOP-FR-NNN`, `WXA-FR-NNN`, `MYA-FR-NNN`, `TTA-FR-NNN`, `BE-FR-NNN`, `INT-FR-NNN` |
46
+ | `[contracts]` | Schema-only change | `INT-FR-NNN` only |
47
+
48
+ `affects: [contracts]` is reserved for **pure contract changes** (e.g. add a new field shared by all components). It still requires Plan + Verify.
49
+
50
+ ## SDD — Spec-Driven Development
51
+
52
+ ### Intent Capture
53
+
54
+ ```markdown
55
+ ## Intent
56
+
57
+ **Title:** {{title}}
58
+ **Affects:** [{{components}}]
59
+ **Why:** {{why}}
60
+ **What:** {{what}}
61
+ **Success:** {{success_criteria}}
62
+ ```
63
+
64
+ ### Spec Delta (EARS) with Namespace
65
+
66
+ ```markdown
67
+ ## Change: CHG-{{id}} — {{title}}
68
+
69
+ **Affects:** [{{components}}]
70
+ **Contracts touched:** {{list or "none"}}
71
+
72
+ ## ADDED Requirements
73
+
74
+ ### INT-FR-{{nnn}}: {{contract_title}}
75
+ (only if affects contracts or ≥2 components)
76
+
77
+ **Description (Event-Driven):**
78
+ When a {{event}}, the system SHALL {{behavior}} on the contract boundary.
79
+
80
+ ### BE-FR-{{nnn}}: {{backend_title}}
81
+ **Description (Event-Driven):**
82
+ When {{event}}, the backend SHALL {{behavior}}.
83
+
84
+ ### WEB-FR-{{nnn}}: {{web_title}}
85
+ **Description (Event-Driven):**
86
+ When {{event}}, the web client SHALL {{behavior}}.
87
+
88
+ ### NATIVE-FR-{{nnn}}: {{native_title}}
89
+ **Description (Event-Driven):**
90
+ When {{event}}, the native client SHALL {{behavior}}.
91
+
92
+ ### DESKTOP-FR-{{nnn}}: {{desktop_title}}
93
+ **Description (Event-Driven):**
94
+ When {{event}}, the desktop client SHALL {{behavior}}.
95
+
96
+ ### WXA-FR-{{nnn}}: {{wxa_title}}
97
+ **Description (Event-Driven):**
98
+ When {{event}}, the WeChat Mini Program SHALL {{behavior}}.
99
+
100
+ ### MYA-FR-{{nnn}}: {{mya_title}}
101
+ **Description (Event-Driven):**
102
+ When {{event}}, the Mini Program SHALL {{behavior}}.
103
+
104
+ ### TTA-FR-{{nnn}}: {{tta_title}}
105
+ **Description (Event-Driven):**
106
+ When {{event}}, the TikTok Mini Program SHALL {{behavior}}.
107
+ ```
108
+
109
+ ### EARS Patterns
110
+
111
+ | Pattern | Syntax | When to Use |
112
+ |---------|--------|-------------|
113
+ | Ubiquitous | `The system SHALL ...` | Always-active rules |
114
+ | Event-Driven | `When {event}, the system SHALL ...` | Trigger-based behavior |
115
+ | State-Driven | `While {state}, the system SHALL ...` | Active state conditions |
116
+ | Unwanted | `If {condition}, the system SHALL ...` | Error handling |
117
+ | Optional | `Where {feature} enabled, the system SHALL ...` | Feature flags |
118
+
119
+ ## BDD — Behavior-Driven Development
120
+
121
+ ### Per-Component Feature Files
122
+
123
+ ```gherkin
124
+ @WEB-FR-001
125
+ Feature: Web Login UI
126
+
127
+ @WEB-FR-001 @positive
128
+ Scenario: User logs in successfully
129
+ Given the web app is on the login page
130
+ When the user submits valid credentials
131
+ Then the user is redirected to dashboard
132
+ And the user receives a JWT in storage
133
+
134
+ @WEB-FR-001 @negative
135
+ Scenario: Invalid credentials show error
136
+ ...
137
+
138
+ @WEB-FR-001 @edge
139
+ Scenario: Empty fields show validation
140
+ ...
141
+ ```
142
+
143
+ ### Cross-Stack Feature File (mandatory for `affects ≥ 2 components`)
144
+
145
+ ```gherkin
146
+ @INT-FR-001
147
+ Feature: Cross-stack login flow
148
+
149
+ @INT-FR-001 @positive
150
+ Scenario: Web login reaches backend and stores token
151
+ Given the web app is on the login page
152
+ When the user submits valid credentials
153
+ Then the backend POST /auth/login returns 200 with JWT
154
+ And the web app stores the token
155
+ And the user is redirected to dashboard
156
+
157
+ @INT-FR-001 @negative
158
+ Scenario: Backend rejects invalid credentials with 401
159
+ ...
160
+
161
+ @INT-FR-001 @edge
162
+ Scenario: Backend timeout surfaces a user-friendly error
163
+ ...
164
+ ```
165
+
166
+ ## Artifacts
167
+
168
+ | Artifact | Location | Purpose |
169
+ |----------|----------|---------|
170
+ | Intent | `requirements.md` | Business need + `affects` |
171
+ | Spec delta | `openspec/changes/{id}/spec-delta.md` | EARS, FR namespaces, `affects` |
172
+ | Per-component BDD | `apps/{component}/features/{domain}/{feature}.feature` | Component behavior |
173
+ | Cross-stack BDD | `features/cross-stack/{domain}/{feature}.feature` | End-to-end flow |
174
+ | Contract spec | `contracts/{api,events}/{name}.{yaml,graphql}` | INT-FR-NNN source of truth |
175
+
176
+ ## Gate
177
+
178
+ **Before advancing to Plan phase:**
179
+ - [ ] `affects: [...]` declared in spec-delta
180
+ - [ ] Spec delta uses EARS format
181
+ - [ ] Per-component FRs: each tagged `@FR-{PREFIX}-NNN` (e.g. `@NATIVE-`, `@DESKTOP-`, `@WEB-`, `@BE-`, `@WXA-`, `@MYA-`, `@TTA-`), ≥3 scenarios (positive/negative/edge)
182
+ - [ ] If `affects` includes ≥2 components: at least one `INT-FR-NNN` and a `features/cross-stack/*.feature` with ≥3 scenarios
183
+ - [ ] If `affects` includes contracts: contract file present in `contracts/`
184
+ - [ ] Human reviewed and approved
@@ -0,0 +1,41 @@
1
+ # Understand Phase Agent Prompt
2
+
3
+ 你是一个 AI-DLC Understand Phase Agent。
4
+ 由 Master Agent 委派处理需求分析。
5
+
6
+ ## 输入
7
+ - Intent 描述(来自用户 / Master)
8
+ - `affects: [component list]` 声明
9
+
10
+ ## 任务
11
+
12
+ 1. **SDD: Intent Capture**
13
+ - 在 `requirements.md` 记录 Why / What / Success Criteria / Scope
14
+ - 声明 `affects: [native|desktop|web|backend|wxa|mya|tta|contracts]`
15
+
16
+ 2. **SDD: Spec Delta (EARS)**
17
+ - 在 `openspec/changes/{id}/spec-delta.md` 输出
18
+ - 使用 EARS 格式:Ubiquitous / Event-Driven / State-Driven / Unwanted / Optional
19
+ - FR 必须使用命名空间前缀(BE-FR-001, WEB-FR-001 等)
20
+
21
+ 3. **BDD: Feature Files**
22
+ - 每个 FR ≥3 个 scenario(positive / negative / edge)
23
+ - Per-component: `apps/{component}/features/{domain}/{feature}.feature`
24
+ - Cross-stack: `features/cross-stack/{domain}/{feature}.feature`
25
+ - Tag 使用 `@FR-PREFIX-NNN`
26
+
27
+ 4. **Contract First**(跨组件时)
28
+ - 在 `contracts/{api,events}/` 创建合约文件
29
+ - 引用 INT-FR-NNN
30
+
31
+ ## 输出产物
32
+ - `requirements.md`
33
+ - `openspec/changes/{id}/spec-delta.md`
34
+ - `apps/{component}/features/{domain}/{feature}.feature`
35
+ - `features/cross-stack/{domain}/{feature}.feature`(跨组件时)
36
+ - `contracts/{api,events}/{name}.yaml`(跨组件时)
37
+
38
+ ## 约束
39
+ - 遵守 `rules.md` 中的 UND-001 到 UND-006
40
+ - 遵守 `core/security.md`
41
+ - 完成前必须通过 Human Gate 审查
@@ -0,0 +1,37 @@
1
+ # Understand Rules (UND-*)
2
+
3
+ ## UND-001: Intent Documentation
4
+ **Severity:** MUST
5
+ **Description:** Before any specification or implementation, the business intent MUST be documented. Intent includes: what is being built, why, and how success is measured.
6
+ **Valid:** Intent captured in `requirements.md` with `affects: [...]` before spec delta.
7
+ **Invalid:** Starting spec delta or feature files without documented intent or without an `affects` declaration.
8
+
9
+ ## UND-002: EARS Format
10
+ **Severity:** MUST
11
+ **Description:** All functional requirements MUST use EARS syntax (Ubiquitous, Event-Driven, State-Driven, Unwanted, or Optional).
12
+ **Valid:** `When a user submits valid credentials, the system SHALL return a JWT token.`
13
+ **Invalid:** `The login should work well and be fast.`
14
+
15
+ ## UND-003: BDD Scenario Coverage
16
+ **Severity:** MUST
17
+ **Description:** Each functional requirement MUST have at least 3 BDD scenarios covering positive, negative, and edge cases. Scenarios MUST be tagged with the FR namespace prefix (`@NATIVE-`, `@DESKTOP-`, `@WEB-`, `@BE-`, `@WXA-`, `@MYA-`, `@TTA-`, or `@INT-`).
18
+ **Valid:** `@WEB-FR-001 @positive` with three scenarios per FR.
19
+ **Invalid:** One scenario per FR, or missing namespace prefix.
20
+
21
+ ## UND-004: Affects Declaration
22
+ **Severity:** MUST
23
+ **Description:** Every spec delta MUST declare `affects: [native, desktop, web, backend, wxa, mya, tta, contracts]`.
24
+ **Valid:** `## Change: CHG-001 — User Login\nAffects: [web, backend, contracts]`
25
+ **Invalid:** Spec delta without an `affects` declaration.
26
+
27
+ ## UND-005: Cross-Component Feature Decomposition
28
+ **Severity:** MUST
29
+ **Description:** A feature that affects ≥2 components MUST be split into: one FR per component, one or more `INT-*` FRs, and a `features/cross-stack/*.feature` file.
30
+ **Valid:** `affects: [web, backend]` → `WEB-FR-001`, `BE-FR-001`, `INT-FR-001`, plus cross-stack feature file.
31
+ **Invalid:** A single feature file claiming to test both web and backend behavior.
32
+
33
+ ## UND-006: Contract-First for Cross-Component
34
+ **Severity:** MUST
35
+ **Description:** When a feature introduces or changes a public API or event consumed by another component, a contract file MUST be added or updated in `contracts/` before any per-component implementation.
36
+ **Valid:** `contracts/api/auth.yaml` defines `POST /auth/login` before any code.
37
+ **Invalid:** Per-component code that depends on a contract not in `contracts/`.
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: ai-dlc-verify
3
+ description: "Verify Phase: TDD Red-Green-Refactor → Contract Test → Quality Gates"
4
+ triggers:
5
+ - verify
6
+ - TDD
7
+ - test
8
+ - quality-gate
9
+ ---
10
+
11
+ # Verify Phase (验证)
12
+
13
+ Execute TDD per BDD scenario, verify contracts, enforce quality gates.
14
+
15
+ ## Entry
16
+
17
+ See `lifecycle.md` for the full phase flow.
18
+ See `rules.md` for enforceable rules (VRF-001 to VRF-006 + INT-001 to INT-006).
19
+ See `prompt.md` for the sub-agent delegation prompt template.
20
+
21
+ ## 当被委派时
22
+
23
+ 1. 按 DAG 顺序对每个 unit 执行 TDD Red→Green→Refactor
24
+ 2. 运行合约测试 + 检查 backward-compat
25
+ 3. 运行 cross-stack e2e
26
+ 4. 执行质量门禁(cov≥80%, 0 vulns, no TODO)