@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,75 @@
1
+ ---
2
+ name: ai-dlc-skill
3
+ description: |
4
+ AI-Driven Development Lifecycle for monorepo multi-component stacks.
5
+ Adaptive orchestration: Master Agent evaluates complexity, delegates sub-tasks.
6
+ allowed_tools:
7
+ - read
8
+ - grep
9
+ - glob
10
+ - bash
11
+ - edit
12
+ - write
13
+ - webfetch
14
+ - websearch
15
+ - task
16
+ - skill
17
+ triggers:
18
+ - ai-dlc
19
+ - ai dlc
20
+ compatibility:
21
+ cdh: ">=1.4"
22
+ opencode: ">=1.15"
23
+ claude-code: ">=1.0"
24
+ openai-codex: ">=1.0"
25
+ cursor: ">=0.45"
26
+ license: Apache-2.0
27
+ metadata:
28
+ version: "4.0.0"
29
+ stack_topology: monorepo
30
+ fr_namespaces: [NATIVE, DESKTOP, WEB, BE, WXA, MYA, TTA, INT]
31
+ ---
32
+
33
+ # AI-DLC Master Orchestrator
34
+
35
+ ## Core Cycle
36
+
37
+ ```
38
+ ① Understand (SDD+BDD) Intent → Spec Delta → BDD Feature Files
39
+ ② Plan (SDD+TDD) Design Doc → Task DAG → Test Plan
40
+ ③ Verify (BDD+TDD) Red → Green → Refactor per scenario
41
+ ④ Deliver (SDD+Cloud) Stack Preview → e2e → Production + BVT
42
+ ```
43
+
44
+ ## Components
45
+
46
+ | Prefix | Component | Directory | FR Namespace |
47
+ |--------|-----------|-----------|--------------|
48
+ | NATIVE | Mobile | `apps/native/` | `NATIVE-FR-NNN` |
49
+ | DESKTOP | Desktop | `apps/desktop/` | `DESKTOP-FR-NNN` |
50
+ | WEB | Browser | `apps/web/` | `WEB-FR-NNN` |
51
+ | BE | Service | `apps/backend/` | `BE-FR-NNN` |
52
+ | WXA | WeChat Mini | `apps/wxa/` | `WXA-FR-NNN` |
53
+ | MYA | Alipay Mini | `apps/mya/` | `MYA-FR-NNN` |
54
+ | TTA | TikTok Mini | `apps/tta/` | `TTA-FR-NNN` |
55
+ | INT | Contracts | `contracts/`, `packages/shared/` | `INT-FR-NNN` |
56
+
57
+ ## Adaptive Flow
58
+
59
+ See `core/adaptive-flow.md` for complexity assessment.
60
+
61
+ 1. Analyze intent → determine complexity (L1-L5)
62
+ 2. Select phases to execute
63
+ 3. Delegate each phase via `Task(agent_type="general", prompt=...)` using the phase's `prompt.md`
64
+ 4. Collect results, enforce gates, iterate or advance
65
+
66
+ ## Phase Reference
67
+
68
+ | Phase | Lifecycle | Rules | Practices |
69
+ |-------|-----------|-------|-----------|
70
+ | ① Understand | `phases/understand/lifecycle.md` | `phases/understand/rules.md` | SDD, BDD |
71
+ | ② Plan | `phases/plan/lifecycle.md` | `phases/plan/rules.md` | SDD, TDD |
72
+ | ③ Verify | `phases/verify/lifecycle.md` | `phases/verify/rules.md` | BDD, TDD |
73
+ | ④ Deliver | `phases/deliver/lifecycle.md` | `phases/deliver/rules.md` | SDD, Cloud |
74
+
75
+ Security baseline: `core/security.md` (all phases).
@@ -0,0 +1,24 @@
1
+ # Deliver Agent 指令
2
+
3
+ 你是一个 AI-DLC Deliver Phase Agent。
4
+ 由 Master Agent 委派处理部署交付。
5
+
6
+ ## 入口
7
+
8
+ `phases/deliver/prompt.md` — 完整的委派 prompt 模板。
9
+ `phases/deliver/lifecycle.md` — 阶段流程说明。
10
+ `phases/deliver/rules.md` — DLV-001 到 DLV-004 + STK-001 到 STK-006 规则。
11
+
12
+ ## 关键产出
13
+
14
+ 1. Stack Preview → `deploy_stack --preview`
15
+ 2. Per-component e2e + Cross-stack e2e
16
+ 3. Staging smoke test
17
+ 4. Production deploy + BVT
18
+ 5. Stack rollback(BVT 失败时)
19
+
20
+ ## 约束
21
+
22
+ - 遵守 `core/security.md`
23
+ - Production deploy 必须等待 Human Approval
24
+ - BVT 失败自动触发 stack rollback
@@ -0,0 +1,44 @@
1
+ # Master Agent 指令
2
+
3
+ 你是 AI-DLC Master Orchestrator Agent。
4
+
5
+ ## 职责
6
+
7
+ 1. **分析意图**:读取用户输入,判断复杂度级别 L1-L5
8
+ 2. **选择阶段**:根据复杂度选择需执行的 phase 序列
9
+ 3. **委派执行**:对每个 phase 使用 `Task(agent_type="general", prompt="...")` 委派给子 Agent
10
+ 4. **收集结果**:检查每个 phase 的 Gate 是否通过
11
+ 5. **Human Gate**:关键决策点(breaking change、production deploy)暂停等待用户确认
12
+
13
+ ## 复杂度判断
14
+
15
+ 见 `core/adaptive-flow.md`。
16
+
17
+ ## 委派模式
18
+
19
+ ```python
20
+ # 示例:委派 Understand Phase
21
+ Task(
22
+ agent_type="general",
23
+ prompt=f"""
24
+ 你是一个 Understand Phase Agent。
25
+ 请完成以下任务:
26
+ 1. 读取 phases/understand/prompt.md 获取完整指令
27
+ 2. 对 {intent_desc} 执行需求分析
28
+ 3. 遵守 phases/understand/rules.md 中的规则
29
+ """
30
+ )
31
+ ```
32
+
33
+ ## Phase 执行参考
34
+
35
+ | Phase | Prompt | Rules |
36
+ |-------|--------|-------|
37
+ | Understand | `phases/understand/prompt.md` | `phases/understand/rules.md` |
38
+ | Plan | `phases/plan/prompt.md` | `phases/plan/rules.md` |
39
+ | Verify | `phases/verify/prompt.md` | `phases/verify/rules.md` |
40
+ | Deliver | `phases/deliver/prompt.md` | `phases/deliver/rules.md` |
41
+
42
+ ## 安全基线
43
+
44
+ 始终遵守 `core/security.md`。
@@ -0,0 +1,23 @@
1
+ # Plan Agent 指令
2
+
3
+ 你是一个 AI-DLC Plan Phase Agent。
4
+ 由 Master Agent 委派处理方案设计。
5
+
6
+ ## 入口
7
+
8
+ `phases/plan/prompt.md` — 完整的委派 prompt 模板。
9
+ `phases/plan/lifecycle.md` — 阶段流程说明。
10
+ `phases/plan/rules.md` — PLN-001 到 PLN-004 规则。
11
+
12
+ ## 关键产出
13
+
14
+ 1. Design Doc → `openspec/changes/{id}/design.md`
15
+ 2. Task DAG → `openspec/changes/{id}/task-list.md`
16
+ 3. Test Plan → embedded in task-list
17
+ 4. Contract Plan → `contract-diff.md` 占位
18
+
19
+ ## 约束
20
+
21
+ - 遵守 `core/security.md`
22
+ - 遵守 STK-001, STK-002
23
+ - 完成前必须通过 Human Gate
@@ -0,0 +1,23 @@
1
+ # Understand Agent 指令
2
+
3
+ 你是一个 AI-DLC Understand Phase Agent。
4
+ 由 Master Agent 委派处理需求分析。
5
+
6
+ ## 入口
7
+
8
+ `phases/understand/prompt.md` — 完整的委派 prompt 模板。
9
+ `phases/understand/lifecycle.md` — 阶段流程说明。
10
+ `phases/understand/rules.md` — UND-001 到 UND-006 规则。
11
+
12
+ ## 关键产出
13
+
14
+ 1. Intent 捕获 → `requirements.md`
15
+ 2. Spec Delta (EARS) → `openspec/changes/{id}/spec-delta.md`
16
+ 3. BDD Feature 文件 → `apps/{component}/features/`
17
+ 4. 跨组件 Feature 文件 → `features/cross-stack/`(如适用)
18
+ 5. 合约文件 → `contracts/{api,events}/`(跨组件时)
19
+
20
+ ## 约束
21
+
22
+ - 遵守 `core/security.md`
23
+ - 完成前必须通过 Human Gate
@@ -0,0 +1,27 @@
1
+ # Verify Agent 指令
2
+
3
+ 你是一个 AI-DLC Verify Phase Agent。
4
+ 由 Master Agent 委派处理测试验证。
5
+
6
+ ## 入口
7
+
8
+ `phases/verify/prompt.md` — 完整的委派 prompt 模板。
9
+ `phases/verify/lifecycle.md` — 阶段流程说明。
10
+ `phases/verify/rules.md` — VRF-001 到 VRF-006 + INT-001 到 INT-006 规则。
11
+
12
+ ## 关键产出
13
+
14
+ 1. TDD 测试代码 → `apps/{component}/tests/`
15
+ 2. TDD 实现代码 → `apps/{component}/src/`
16
+ 3. BDD step defs → `apps/{component}/features/steps/`
17
+ 4. 合约测试 → `tests/contract/`
18
+ 5. 跨组件 e2e → `tests/cross-stack/`
19
+ 6. Contract Diff → `openspec/changes/{id}/contract-diff.md`
20
+
21
+ ## 质量门禁
22
+
23
+ - coverage ≥ 80%
24
+ - BDD scenarios 100% pass
25
+ - 0 vulns, no TODO
26
+ - Contract backward-compat
27
+ - Cross-stack e2e 100% pass
@@ -0,0 +1,78 @@
1
+ # 项目工程目录架构
2
+
3
+ ## 顶层布局
4
+
5
+ ```
6
+ {{project_root}}/
7
+ ├── apps/
8
+ │ ├── native/ # NATIVE-FR-* Mobile (Flutter/Dart)
9
+ │ ├── desktop/ # DESKTOP-FR-* Desktop (Electron/TypeScript)
10
+ │ ├── web/ # WEB-FR-* Browser (Next.js/TypeScript)
11
+ │ ├── backend/ # BE-FR-* Service (Python / Node / Go)
12
+ │ ├── wxa/ # WXA-FR-* WeChat Mini Program (Vant Weapp/JavaScript)
13
+ │ ├── mya/ # MYA-FR-* Alipay Mini Program (Ant Design Mini/JavaScript)
14
+ │ └── tta/ # TTA-FR-* TikTok Mini Program (TypeScript)
15
+ ├── contracts/ # INT-FR-* OpenAPI / AsyncAPI / Runtime Contract
16
+ │ ├── api/
17
+ │ ├── events/
18
+ │ └── functions/
19
+ ├── packages/shared/ # INT-FR-* 从 contracts 生成的共享类型
20
+ ├── features/ # BDD feature 文件
21
+ │ └── cross-stack/ # 跨组件集成场景
22
+ ├── tests/
23
+ │ ├── contract/ # 合约测试 (INT-FR 级别, provider-agnostic)
24
+ │ └── cross-stack/ # 跨组件 e2e 测试 (对 STACK_URL 运行)
25
+ ├── openspec/ # AI-DLC 生命周期产出物
26
+ │ └── changes/{id}/
27
+ │ ├── spec-delta.md
28
+ │ ├── design.md
29
+ │ ├── task-list.md
30
+ │ ├── contract-diff.md
31
+ │ └── walkthrough.md
32
+ ├── providers/ # 云平台部署配置
33
+ │ ├── tcb/
34
+ │ └── aliyun/
35
+ ├── tools/ # 脚手架脚本
36
+ │ ├── generate_shared.py
37
+ │ └── contract_diff.py
38
+ ├── .opencode/ # OpenCode 配置
39
+ │ └── skills/ai-dlc-skill/
40
+ ├── .cdh/ # CDHA 项目状态
41
+ │ ├── config.yaml
42
+ │ ├── state.json
43
+ │ └── SKILL.md
44
+ └── AI-DLC-CONTEXT.md # Brownfield 上下文摘要 (自动生成)
45
+ ```
46
+
47
+ ## 组件内部结构 (标准模板)
48
+
49
+ ```
50
+ apps/{component}/
51
+ ├── src/ # 实现代码
52
+ │ └── {module}/
53
+ ├── tests/
54
+ │ ├── unit/ # TDD 单元测试
55
+ │ ├── integration/ # 集成测试 (含 DB)
56
+ │ └── e2e/ # E2E 测试 (对 preview URL)
57
+ ├── features/ # BDD feature 文件
58
+ │ └── steps/ # BDD step definitions
59
+ ├── contracts/ # 组件级合约引用
60
+ ├── .skill/ # 组件级 Skill (自动生成)
61
+ │ └── SKILL.md
62
+ ├── package.json
63
+ └── ...
64
+ ```
65
+
66
+ ## FR 命名空间 ↔ 目录映射
67
+
68
+ | FR 前缀 | 目录 | 测试目录 | e2e target |
69
+ |---------|------|---------|------------|
70
+ | NATIVE-FR-NNN | `apps/native/src/` | `apps/native/tests/` | BACKEND_URL |
71
+ | DESKTOP-FR-NNN | `apps/desktop/src/` | `apps/desktop/tests/` | BACKEND_URL |
72
+ | WEB-FR-NNN | `apps/web/src/` | `apps/web/tests/` | WEB_URL + BACKEND_URL |
73
+ | BE-FR-NNN | `apps/backend/src/` | `apps/backend/tests/` | BACKEND_URL |
74
+ | WXA-FR-NNN | `apps/wxa/` | `apps/wxa/tests/` | BACKEND_URL |
75
+ | MYA-FR-NNN | `apps/mya/` | `apps/mya/tests/` | BACKEND_URL |
76
+ | TTA-FR-NNN | `apps/tta/` | `apps/tta/tests/` | BACKEND_URL |
77
+ | INT-FR-NNN | `contracts/` + `packages/shared/` | `tests/contract/` | generated types |
78
+ | 跨组件 | `features/cross-stack/` | `tests/cross-stack/` | STACK_URL |
@@ -0,0 +1,30 @@
1
+ # Brownfield 存量项目支持
2
+
3
+ 为已有项目自动生成语义上下文,辅助 AI Agent 理解代码库。
4
+
5
+ ## 使用方式
6
+
7
+ ```bash
8
+ # 一键生成 AI-DLC-CONTEXT.md
9
+ ./brownfield/generate-context.sh
10
+
11
+ # 单独步骤
12
+ ./brownfield/scripts/discover.sh # 组件发现
13
+ ./brownfield/scripts/extract-api.sh # API 表面提取
14
+ ./brownfield/scripts/deps.sh # 跨组件依赖图
15
+ ```
16
+
17
+ ## 产出
18
+
19
+ `AI-DLC-CONTEXT.md` 文件包含:
20
+ 1. 发现的组件列表 + 技术栈
21
+ 2. API 端点摘要
22
+ 3. 跨组件依赖 Mermaid 图
23
+ 4. 架构速览
24
+
25
+ ## 在 Phase 中的应用
26
+
27
+ Master Agent 在 `affects` 声明后自动触发 Brownfield Phase:
28
+ ```
29
+ L2+ 且有存量代码 → Task(agent_type="explore", prompt="...brownfield/scripts/...")
30
+ ```
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env bash
2
+ # generate-context.sh — Generate AI-DLC-CONTEXT.md for brownfield projects
3
+ set -euo pipefail
4
+
5
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
6
+ PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
7
+ OUTPUT="$PROJECT_ROOT/AI-DLC-CONTEXT.md"
8
+
9
+ echo "# AI-DLC Context — $(basename "$PROJECT_ROOT")"
10
+ echo ""
11
+ echo "Auto-generated on $(date -u +%Y-%m-%dT%H:%M:%SZ)"
12
+ echo ""
13
+
14
+ # 1. Component discovery
15
+ echo "## Components"
16
+ echo ""
17
+ for comp_dir in "$PROJECT_ROOT"/apps/*/; do
18
+ name="$(basename "$comp_dir")"
19
+ pkg="$comp_dir/package.json"
20
+ if [ -f "$pkg" ]; then
21
+ framework="$(python3 -c "import json; d=json.load(open('$pkg')); print(d.get('framework','?'))" 2>/dev/null || echo "?")"
22
+ echo "- **$name**: $framework"
23
+ else
24
+ echo "- **$name**: (no package.json)"
25
+ fi
26
+ done
27
+ echo ""
28
+
29
+ # 2. API surface
30
+ echo "## API Surface"
31
+ echo ""
32
+ if [ -d "$PROJECT_ROOT/contracts/api" ]; then
33
+ find "$PROJECT_ROOT/contracts/api" -name "*.yaml" -o -name "*.yml" | while read -r f; do
34
+ echo "- $(basename "$f")"
35
+ done
36
+ else
37
+ echo "(No contract files discovered)"
38
+ fi
39
+ echo ""
40
+
41
+ # 3. Dependency map (simplified)
42
+ echo "## Dependency Map"
43
+ echo ""
44
+ echo '```mermaid'
45
+ echo 'graph LR'
46
+ for comp_dir in "$PROJECT_ROOT"/apps/*/; do
47
+ name="$(basename "$comp_dir")"
48
+ pkg="$comp_dir/package.json"
49
+ if [ -f "$pkg" ]; then
50
+ python3 -c "
51
+ import json
52
+ d=json.load(open('$pkg'))
53
+ for dep in d.get('dependencies',{}):
54
+ print(f' {name} -->|depends| {dep}')
55
+ for dep in d.get('devDependencies',{}):
56
+ pass
57
+ " 2>/dev/null || true
58
+ fi
59
+ done
60
+ echo '```'
61
+ echo ""
62
+
63
+ echo "---"
64
+ echo "Generated by brownfield/generate-context.sh"
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env bash
2
+ # deps.sh — Cross-component dependency graph generator
3
+ set -euo pipefail
4
+
5
+ PROJECT_ROOT="$(cd "$(dirname "$0")/../../.." && pwd)"
6
+
7
+ echo '```mermaid'
8
+ echo 'graph LR'
9
+
10
+ for comp_dir in "$PROJECT_ROOT"/apps/*/; do
11
+ name=$(basename "$comp_dir")
12
+ pkg="$comp_dir/package.json"
13
+
14
+ if [ -f "$pkg" ]; then
15
+ # Internal cross-component dependencies via workspace references
16
+ python3 -c "
17
+ import json
18
+ d = json.load(open('$pkg'))
19
+ for dep_type in ['dependencies', 'devDependencies']:
20
+ for dep in d.get(dep_type, {}):
21
+ if dep.startswith('@') or dep.startswith('packages/'):
22
+ print(f' {name} -->|depends| {dep}')
23
+ " 2>/dev/null || true
24
+ fi
25
+ done
26
+
27
+ echo '```'
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env bash
2
+ # discover.sh — Component discovery for brownfield projects
3
+ set -euo pipefail
4
+
5
+ PROJECT_ROOT="$(cd "$(dirname "$0")/../../.." && pwd)"
6
+
7
+ echo "{
8
+ \"components\": ["
9
+
10
+ first=true
11
+ for comp_dir in "$PROJECT_ROOT"/apps/*/; do
12
+ name=$(basename "$comp_dir")
13
+ pkg="$comp_dir/package.json"
14
+ $first || echo ","
15
+ first=false
16
+
17
+ if [ -f "$pkg" ]; then
18
+ python3 -c "
19
+ import json
20
+ d=json.load(open('$pkg'))
21
+ print(json.dumps({
22
+ 'id': '$name',
23
+ 'path': '$comp_dir',
24
+ 'name': d.get('name', '$name'),
25
+ 'framework': d.get('framework', '?'),
26
+ 'language': d.get('language', '?'),
27
+ }, indent=2))
28
+ " 2>/dev/null || echo "{\"id\": \"$name\", \"path\": \"$comp_dir\"}"
29
+ else
30
+ echo "{\"id\": \"$name\", \"path\": \"$comp_dir\", \"warning\": \"no package.json\"}"
31
+ fi
32
+ done
33
+
34
+ echo "]}"
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env bash
2
+ # extract-api.sh — Extract API surface from contracts/ directory
3
+ set -euo pipefail
4
+
5
+ PROJECT_ROOT="$(cd "$(dirname "$0")/../../.." && pwd)"
6
+
7
+ echo "# API Surface"
8
+ echo ""
9
+
10
+ if [ ! -d "$PROJECT_ROOT/contracts" ]; then
11
+ echo "(No contracts/ directory found)"
12
+ exit 0
13
+ fi
14
+
15
+ # OpenAPI
16
+ for f in "$PROJECT_ROOT"/contracts/api/*.yaml "$PROJECT_ROOT"/contracts/api/*.yml; do
17
+ [ -f "$f" ] || continue
18
+ echo "## File: $(basename "$f")"
19
+ python3 -c "
20
+ import yaml, json
21
+ d = yaml.safe_load(open('$f'))
22
+ if 'paths' in d:
23
+ for path, methods in d['paths'].items():
24
+ for method, spec in methods.items():
25
+ print(f\" {method.upper()} {path} — {spec.get('summary', '?')}\")
26
+ if 'info' in d:
27
+ print(f\" Title: {d['info'].get('title', '?')}\")
28
+ print(f\" Version: {d['info'].get('version', '?')}\")
29
+ " 2>/dev/null || echo " (parse error)"
30
+ echo ""
31
+ done
32
+
33
+ # AsyncAPI
34
+ for f in "$PROJECT_ROOT"/contracts/events/*.yaml "$PROJECT_ROOT"/contracts/events/*.yml; do
35
+ [ -f "$f" ] || continue
36
+ echo "## File: $(basename "$f")"
37
+ python3 -c "
38
+ import yaml
39
+ d = yaml.safe_load(open('$f'))
40
+ channels = d.get('channels', {})
41
+ for name, ch in channels.items():
42
+ print(f\" Channel: {name}\")
43
+ " 2>/dev/null || echo " (parse error)"
44
+ echo ""
45
+ done
@@ -0,0 +1,34 @@
1
+ # Backend 组件开发指南 (BE-FR-*)
2
+
3
+ ## 技术栈
4
+ - 语言: Python / Node.js / Go
5
+ - 框架: FastAPI / Express / Gin
6
+ - 构建: poetry / pnpm / go build
7
+ - 测试: pytest / vitest / go test
8
+ - BDD: pytest-bdd
9
+
10
+ ## 关键命令
11
+ - 构建: `pnpm --filter backend build`
12
+ - 测试全部: `pnpm --filter backend test`
13
+ - BDD: `pytest-bdd apps/backend/features/`
14
+ - Lint: `pnpm --filter backend lint`
15
+ - DB 迁移: `tcb db migrate` / `rds migrate`
16
+
17
+ ## 目录约定
18
+ - `src/` → 组件源码(按模块组织)
19
+ - `tests/unit/` → 单元测试
20
+ - `tests/integration/` → 集成测试(含 DB)
21
+ - `tests/e2e/` → E2E 测试(对 preview URL)
22
+ - `features/` → BDD feature 文件
23
+ - `features/steps/` → BDD step definitions
24
+
25
+ ## FR 命名空间
26
+ - Prefix: BE-FR-NNN
27
+ - 范围: 服务端/API 行为
28
+
29
+ ## 特定约束
30
+ - 后端组件是 Stack 部署的入口点(先部署再暴露 BACKEND_URL)
31
+ - API 合约定义在 `contracts/api/`(OpenAPI 3.1)
32
+ - 依赖注入使用 provider pattern
33
+ - 所有输入必须验证(SEC-002)
34
+ - DB 查询必须使用参数化语句(SEC-003)
@@ -0,0 +1,30 @@
1
+ # Desktop 组件开发指南 (DESKTOP-FR-*)
2
+
3
+ ## 技术栈
4
+ - 框架: Electron / Tauri
5
+ - 语言: TypeScript (Electron) / Rust + TS (Tauri)
6
+ - 构建: `pnpm build:desktop`
7
+ - 测试: Vitest / Jest
8
+ - BDD: Spectron / WebDriverIO
9
+
10
+ ## 关键命令
11
+ - 构建: `pnpm --filter desktop build`
12
+ - 测试全部: `pnpm --filter desktop test`
13
+ - BDD: `spectron test`
14
+ - Lint: `pnpm --filter desktop lint`
15
+
16
+ ## 目录约定
17
+ - `src/` → 组件源码
18
+ - `tests/unit/` → 单元测试
19
+ - `tests/e2e/` → E2E 测试
20
+ - `features/` → BDD feature 文件
21
+ - `features/steps/` → BDD step definitions
22
+
23
+ ## FR 命名空间
24
+ - Prefix: DESKTOP-FR-NNN
25
+ - 范围: 桌面端行为(macOS + Windows + Linux)
26
+
27
+ ## 特定约束
28
+ - Desktop 组件依赖 `BACKEND_URL` 在构建时注入
29
+ - 支持离线模式(本地优先)
30
+ - 自动更新通过内置更新器
@@ -0,0 +1,29 @@
1
+ # MYA 组件开发指南 (MYA-FR-*) — 支付宝小程序
2
+
3
+ ## 技术栈
4
+ - 框架: 支付宝原生小程序 / uni-app
5
+ - 语言: JavaScript / TypeScript
6
+ - 构建: 支付宝开发者工具
7
+ - 测试: Jest
8
+ - BDD: 手动 + miniprogram-automator
9
+
10
+ ## 关键命令
11
+ - 构建: `pnpm --filter mya build`
12
+ - 测试: `pnpm --filter mya test`
13
+ - 预览: 上传到支付宝小程序预览平台
14
+ - Lint: `pnpm --filter mya lint`
15
+
16
+ ## 目录约定
17
+ - `src/` → 组件源码
18
+ - `tests/unit/` → 单元测试
19
+ - `features/` → BDD feature 文件
20
+
21
+ ## FR 命名空间
22
+ - Prefix: MYA-FR-NNN
23
+ - 范围: 支付宝小程序行为
24
+
25
+ ## 特定约束
26
+ - 支付宝小程序有独立的审核流程
27
+ - 预览通过小程序预览 QR 码访问
28
+ - `BACKEND_URL` 在构建时注入
29
+ - 支付功能使用支付宝小程序支付 SDK
@@ -0,0 +1,30 @@
1
+ # Native 组件开发指南 (NATIVE-FR-*)
2
+
3
+ ## 技术栈
4
+ - 框架: React Native / Flutter
5
+ - 语言: TypeScript (React Native) / Dart (Flutter)
6
+ - 构建: `pnpm build:native`
7
+ - 测试: Jest (RN) / flutter_test (Flutter)
8
+ - BDD: Detox / Maestro
9
+
10
+ ## 关键命令
11
+ - 构建: `pnpm --filter native build`
12
+ - 测试全部: `pnpm --filter native test`
13
+ - BDD: `detox test` / `maestro test`
14
+ - Lint: `pnpm --filter native lint`
15
+
16
+ ## 目录约定
17
+ - `src/` → 组件源码
18
+ - `tests/unit/` → 单元测试
19
+ - `tests/e2e/` → E2E 测试
20
+ - `features/` → BDD feature 文件
21
+ - `features/steps/` → BDD step definitions
22
+
23
+ ## FR 命名空间
24
+ - Prefix: NATIVE-FR-NNN
25
+ - 范围: 原生移动端行为(iOS + Android)
26
+
27
+ ## 特定约束
28
+ - Native 组件依赖 `BACKEND_URL` 在构建时注入
29
+ - E2E 测试在真机或模拟器中运行
30
+ - 不包含平台特定 UI 逻辑(web 端)
@@ -0,0 +1,29 @@
1
+ # TTA 组件开发指南 (TTA-FR-*) — 抖音小程序
2
+
3
+ ## 技术栈
4
+ - 框架: 抖音原生小程序 / uni-app
5
+ - 语言: JavaScript / TypeScript
6
+ - 构建: 抖音开发者工具
7
+ - 测试: Jest
8
+ - BDD: 手动 + miniprogram-automator
9
+
10
+ ## 关键命令
11
+ - 构建: `pnpm --filter tta build`
12
+ - 测试: `pnpm --filter tta test`
13
+ - 预览: 上传到抖音小程序预览平台
14
+ - Lint: `pnpm --filter tta lint`
15
+
16
+ ## 目录约定
17
+ - `src/` → 组件源码
18
+ - `tests/unit/` → 单元测试
19
+ - `features/` → BDD feature 文件
20
+
21
+ ## FR 命名空间
22
+ - Prefix: TTA-FR-NNN
23
+ - 范围: 抖音小程序行为
24
+
25
+ ## 特定约束
26
+ - 抖音小程序审核流程
27
+ - 预览通过小程序预览 QR 码访问
28
+ - `BACKEND_URL` 在构建时注入
29
+ - 视频/直播相关功能使用抖音小程序 API