@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,140 @@
1
+ # AI-DLC Skill — Requirements
2
+
3
+ ## Overview
4
+
5
+ This skill implements the AI-Driven Development Lifecycle for **monorepo multi-component stacks** (native + desktop + web + backend + wxa + mya + tta) with four core phases — Understand (SDD+BDD), Plan (SDD+TDD), Verify (BDD+TDD), Deliver (SDD+Cloud) — plus a first-class **Integration** discipline that governs cross-component contracts (API, events, shared types).
6
+
7
+ ## Topology
8
+
9
+ ```
10
+ ┌──────────────────── Monorepo Root ─────────────────────┐
11
+ │ │
12
+ │ apps/native apps/desktop apps/web apps/backend │
13
+ │ (NATIVE-FR-) (DESKTOP-FR-) (WEB-FR-) (BE-FR-) │
14
+ │ apps/wxa apps/mya apps/tta │
15
+ │ (WXA-FR-) (MYA-FR-) (TTA-FR-) │
16
+ │ │ │ │ │
17
+ │ └──────┬───────┴─────┬─────┘ │
18
+ │ │ │ │
19
+ │ contracts/ packages/shared/ │
20
+ │ (INT-FR-*) (generated types) │
21
+ │ │
22
+ │ features/ tests/ openspec/ providers/ │
23
+ └────────────────────────────────────────────────────────┘
24
+ ```
25
+
26
+ FR namespaces:
27
+
28
+ | Prefix | Owner | Scope |
29
+ |--------|-------|-------|
30
+ | `NATIVE-*` | `apps/native` | Native mobile behavior |
31
+ | `DESKTOP-*` | `apps/desktop` | Desktop client behavior |
32
+ | `WEB-*` | `apps/web` | Browser frontend behavior |
33
+ | `BE-*` | `apps/backend` | Server/service behavior |
34
+ | `WXA-*` | `apps/wxa` | WeChat Mini Program behavior |
35
+ | `MYA-*` | `apps/mya` | Mini Program (e.g. Alipay) behavior |
36
+ | `TTA-*` | `apps/tta` | TikTok Mini Program behavior |
37
+ | `INT-*` | `contracts/`, `packages/shared/` | Cross-component contract & integration |
38
+
39
+ ## Functional Requirements
40
+
41
+ ### FR-001: Understand Phase
42
+
43
+ **Priority:** P0
44
+
45
+ **When** a developer starts a new feature (single-component or cross-cutting),
46
+ **the system SHALL** capture intent, produce an OpenSpec spec delta in EARS format, and write BDD feature files with Given/When/Then scenarios.
47
+
48
+ **Acceptance Criteria:**
49
+ - Intent documented before implementation
50
+ - Spec delta uses EARS (Ubiquitous/Event-Driven/State-Driven/Unwanted/Optional)
51
+ - Each FR tagged with `@FR-{PREFIX}-NNN` in `.feature` files
52
+ - Cross-component features use `INT-*` FRs in addition to per-component FRs
53
+ - Minimum 3 scenarios per FR: positive, negative, edge
54
+ - Scenarios reviewed and approved by human
55
+
56
+ ### FR-002: Plan Phase
57
+
58
+ **Priority:** P0
59
+
60
+ **When** spec and feature files are approved,
61
+ **the system SHALL** produce a technical design, decompose work into units with dependency DAG, and write test plans.
62
+
63
+ **Acceptance Criteria:**
64
+ - Design doc includes architecture, data model, API contract, state machine
65
+ - Tasks have explicit dependencies (DAG), per-component and cross-component
66
+ - Cross-component tasks reference the relevant `INT-*` contract FR
67
+ - Test plan written per scenario before implementation
68
+
69
+ ### FR-003: Verify Phase
70
+
71
+ **Priority:** P0
72
+
73
+ **When** design and tasks are approved,
74
+ **the system SHALL** execute TDD red-green-refactor per BDD scenario and verify all scenarios pass.
75
+
76
+ **Acceptance Criteria:**
77
+ - Tests written before implementation (Red)
78
+ - Tests fail initially (confirming assertion works)
79
+ - Minimum implementation written to pass (Green)
80
+ - Implementation refactored, all tests still pass
81
+ - All BDD scenarios pass via pytest-bdd (or equivalent per component)
82
+ - Quality gates enforced: coverage ≥80%, scenarios ≥90%, 0 vulns, no TODO
83
+ - Per-component unit, integration, and e2e layers are all green
84
+ - Cross-stack e2e scenarios pass against the unified preview URL
85
+
86
+ ### FR-004: Deliver Phase
87
+
88
+ **Priority:** P1
89
+
90
+ **When** all scenarios pass quality gates,
91
+ **the system SHALL** deploy the full stack to preview, run cross-stack BDD e2e tests, and after human approval deploy to production with BVT verification.
92
+
93
+ **Acceptance Criteria:**
94
+ - Unified preview URL dynamically resolved per platform (TCB/Aliyun)
95
+ - BDD e2e tests run against preview URL for the component they target
96
+ - Cross-stack e2e tests run against the unified preview URL
97
+ - Production deploy requires human approval
98
+ - BVT (Build Verification Test) passes after production deploy
99
+ - Failed BVT triggers rollback
100
+
101
+ ### FR-005: Cross-Component Contract Discipline
102
+
103
+ **Priority:** P0
104
+
105
+ **When** a feature spans more than one component (e.g. `WEB-*` + `BE-*`, or `NATIVE-*` + `BE-*`),
106
+ **the system SHALL** define and verify the contract between components before integration.
107
+
108
+ **Acceptance Criteria:**
109
+ - All public APIs and async events are described in `contracts/` (OpenAPI/AsyncAPI) and tagged with `INT-FR-NNN`
110
+ - Contract changes require a contract-diff review (backward-compat by default)
111
+ - Shared types are generated from contracts, not hand-written, in `packages/shared/`
112
+ - Contract tests run on every PR that touches `contracts/` or any consumer
113
+ - A breaking contract change requires a major version bump and human approval
114
+
115
+ ### FR-006: Monorepo Stack Awareness
116
+
117
+ **Priority:** P0
118
+
119
+ **When** the AI agent operates in a monorepo with multiple components,
120
+ **the system SHALL** be aware of which component(s) the current work affects and apply the right scope, tests, and deploy steps.
121
+
122
+ **Acceptance Criteria:**
123
+ - Spec delta, design doc, and task list each declare an `affects: [native, desktop, web, backend, wxa, mya, tta, contracts]` field
124
+ - Test plan enumerates the layers it covers: `unit`, `integration`, `e2e`, `cross-stack`
125
+ - Only the affected components are deployed in the unified preview (others reused or stubbed)
126
+ - BVT and rollback operate on the whole stack, not a single component
127
+
128
+ ## Cross-Cutting Rules (summary)
129
+
130
+ See `rules/` for full definitions.
131
+
132
+ | Prefix | File | Phase | Scope |
133
+ |--------|------|-------|-------|
134
+ | UND | `rules/understand.md` | Understand | Single + multi-component |
135
+ | PLN | `rules/plan.md` | Plan | Single + multi-component |
136
+ | VRF | `rules/verify.md` | Verify | Single + multi-component |
137
+ | DLV | `rules/deliver.md` | Deliver | Stack deploy + rollback |
138
+ | INT | `rules/integration.md` | All phases | Cross-component contracts |
139
+ | STK | `rules/stack.md` | All phases | Monorepo / multi-component |
140
+ | SEC | `rules/security.md` | All phases | Security baseline |
@@ -0,0 +1,147 @@
1
+ categories:
2
+ - ai-dlc
3
+ - development
4
+ - sdd
5
+ - bdd
6
+ - tdd
7
+ - specification
8
+ - cloud
9
+ - monorepo
10
+ - integration
11
+ description: >-
12
+ AI-Driven Development Lifecycle for monorepo multi-component stacks
13
+ (native + desktop + web + backend + wxa + mya + tta). Adaptive orchestration:
14
+ Master Agent evaluates complexity, delegates sub-tasks via CDHA Task tool.
15
+ Core phases: Understand (SDD+BDD) → Plan (SDD+TDD) → Verify (BDD+TDD) →
16
+ Deliver (SDD+Cloud), with cross-stack Integration rules governing
17
+ component boundaries. FR namespaces: NATIVE-*, DESKTOP-*, WEB-*, BE-*,
18
+ WXA-*, MYA-*, TTA-*, INT-*. Default cloud platform: TCB. Also supports Aliyun.
19
+ enabled: true
20
+ entry: SKILL.md
21
+ name: ai-dlc-skill
22
+ version: 4.0.0
23
+
24
+ stack:
25
+ topology: monorepo
26
+ components:
27
+ - id: native
28
+ kind: mobile
29
+ tech: react-native | flutter
30
+ default_language: dart
31
+ default_ui_framework: flutter-sdk
32
+ owns: apps/native
33
+ fr_prefix: NATIVE
34
+ - id: desktop
35
+ kind: desktop
36
+ tech: electron | tauri
37
+ default_language: typescript
38
+ default_ui_framework: electron-react
39
+ owns: apps/desktop
40
+ fr_prefix: DESKTOP
41
+ - id: web
42
+ kind: frontend
43
+ tech: react | vue | svelte
44
+ default_language: typescript
45
+ default_ui_framework: nextjs
46
+ owns: apps/web
47
+ fr_prefix: WEB
48
+ - id: backend
49
+ kind: service
50
+ tech: python | node | go
51
+ owns: apps/backend
52
+ fr_prefix: BE
53
+ - id: wxa
54
+ kind: mini-program
55
+ tech: miniprogram
56
+ default_language: javascript
57
+ default_ui_framework: vant-weapp
58
+ owns: apps/wxa
59
+ fr_prefix: WXA
60
+ - id: mya
61
+ kind: mini-program
62
+ tech: miniprogram
63
+ default_language: javascript
64
+ default_ui_framework: ant-design-mini
65
+ owns: apps/mya
66
+ fr_prefix: MYA
67
+ - id: tta
68
+ kind: mini-program
69
+ tech: miniprogram
70
+ default_language: typescript
71
+ owns: apps/tta
72
+ fr_prefix: TTA
73
+ cross_cutting:
74
+ fr_prefix: INT
75
+ owns:
76
+ - contracts/
77
+ - packages/shared/
78
+ e2e_layers:
79
+ - unit
80
+ - integration
81
+ - e2e
82
+ - cross-stack
83
+ storage:
84
+ default_provider: tcb
85
+ providers:
86
+ tcb:
87
+ object_storage: cloudbase-storage
88
+ document_db: docdb
89
+ relational_db: mysql
90
+ cdn: tencent-cloud-cdn
91
+ aliyun:
92
+ object_storage: oss
93
+ document_db: mongodb
94
+ relational_db: rds-mysql
95
+ cdn: aliyun-cdn
96
+
97
+ integration:
98
+ contract_first: true
99
+ contract_format: openapi-3.1
100
+ backward_compat: required
101
+ breaking_change_gate: human-approval
102
+ shared_types:
103
+ generator: openapi-typescript | openapi-python
104
+ output: packages/shared/
105
+ publish: workspace-package
106
+ event_contract:
107
+ format: asyncapi | cloudevent
108
+ registry: contracts/events/
109
+ version_strategy: semver-major-for-breaking
110
+
111
+ deploy:
112
+ preview:
113
+ strategy: unified
114
+ description: >-
115
+ Single stack preview deploys all components together.
116
+ PREVIEW_URL is the backend gateway; web, native, desktop,
117
+ and mini-programs receive it as a build-time/runtime config.
118
+ ttl: 24h
119
+ bdd_target: cross-stack
120
+ environments:
121
+ - preview
122
+ - staging
123
+ - production
124
+
125
+ quality_gates:
126
+ coverage_min: 80
127
+ bdd_pass_rate: 100
128
+ contract_diff: required
129
+ no_todo: true
130
+ no_secrets_in_diff: true
131
+
132
+ agents:
133
+ - name: ai-dlc-master
134
+ entry: SKILL.md
135
+ mode: primary
136
+ - name: ai-dlc-understand
137
+ entry: phases/understand/entry.md
138
+ mode: subagent
139
+ - name: ai-dlc-plan
140
+ entry: phases/plan/entry.md
141
+ mode: subagent
142
+ - name: ai-dlc-verify
143
+ entry: phases/verify/entry.md
144
+ mode: subagent
145
+ - name: ai-dlc-deliver
146
+ entry: phases/deliver/entry.md
147
+ mode: subagent
@@ -0,0 +1,41 @@
1
+ # Contracts Changelog
2
+
3
+ All notable changes to any contract in `contracts/` are recorded here. Format follows
4
+ [Keep a Changelog](https://keepachangelog.com/) and the project uses [SemVer](https://semver.org/).
5
+
6
+ > **Breaking change rule (INT-002):** any MAJOR bump requires human approval and a
7
+ > Migration section. `tools/contract_diff.py` flags breaking changes automatically.
8
+
9
+ ## [Unreleased]
10
+
11
+ ### Added
12
+ - _None yet_
13
+
14
+ ### Changed
15
+ - _None yet_
16
+
17
+ ### Removed
18
+ - _None yet_
19
+
20
+ ### Migration
21
+ - _None yet_
22
+
23
+ ---
24
+
25
+ ## {{version}} — {{date}} — {{change_id}}
26
+
27
+ **FRs:** {{list_of_frs}}
28
+ **Affects:** {{components}}
29
+
30
+ ### Added
31
+ - {{new_endpoint_or_field}}
32
+
33
+ ### Changed
34
+ - {{additive_change}}
35
+
36
+ ### Removed
37
+ - {{breaking_removal}}
38
+
39
+ ### Migration
40
+ 1. {{step_1}}
41
+ 2. {{step_2}}
@@ -0,0 +1,43 @@
1
+ asyncapi: 3.0.0
2
+ info:
3
+ title: {{title}}
4
+ version: {{version}}
5
+ description: |
6
+ Async contract for INT-FR-{{int_fr_id}}.
7
+ Producer: {{producer}}
8
+ Consumers: {{consumers}}
9
+ x-change-id: {{change_id}}
10
+ x-fr: INT-FR-{{int_fr_id}}
11
+
12
+ channels:
13
+ {{channel_name}}:
14
+ address: {{channel_address}}
15
+ messages:
16
+ {{message_name}}:
17
+ $ref: '#/components/messages/{{MessageName}}'
18
+
19
+ operations:
20
+ {{operation_name}}:
21
+ action: {{send | receive}}
22
+ channel:
23
+ $ref: '#/channels/{{channel_name}}'
24
+
25
+ components:
26
+ messages:
27
+ {{MessageName}}:
28
+ name: {{message_name}}
29
+ title: {{message_title}}
30
+ contentType: application/cloudevents+json
31
+ payload:
32
+ $ref: '#/components/schemas/{{PayloadName}}'
33
+ schemas:
34
+ {{PayloadName}}:
35
+ type: object
36
+ required: [id, type, time, data]
37
+ properties:
38
+ id: { type: string, format: uuid }
39
+ type: { type: string }
40
+ source: { type: string }
41
+ time: { type: string, format: date-time }
42
+ specversion: { type: string, enum: ["1.0"] }
43
+ data: { type: object }
@@ -0,0 +1,63 @@
1
+ # Contract Diff — {{change_id}}
2
+
3
+ > Auto-generated by `tools/contract_diff.py`. Reviewed during Verify and Deliver.
4
+
5
+ ## Summary
6
+
7
+ | Field | Value |
8
+ |-------|-------|
9
+ | Change ID | `{{change_id}}` |
10
+ | Base version | `{{base_version}}` |
11
+ | Head version | `{{head_version}}` |
12
+ | Breaking? | {{yes / no}} |
13
+ | Approval required | {{yes / no}} |
14
+
15
+ ## Files Changed
16
+
17
+ | File | Old Version | New Version | Breaking |
18
+ |------|-------------|-------------|----------|
19
+ | `{{path}}` | `{{old}}` | `{{new}}` | {{y / n}} |
20
+
21
+ ## OpenAPI Diff
22
+
23
+ ```diff
24
+ --- a/contracts/api/{{file}}.yaml
25
+ +++ b/contracts/api/{{file}}.yaml
26
+ @@
27
+ - removed: {{field}}
28
+ + added: {{field}}
29
+ ~ changed: {{field}} ({{old_type}} → {{new_type}})
30
+ ```
31
+
32
+ ## AsyncAPI Diff
33
+
34
+ ```diff
35
+ --- a/contracts/events/{{file}}.yaml
36
+ +++ b/contracts/events/{{file}}.yaml
37
+ @@
38
+ - channel removed: {{name}}
39
+ + channel added: {{name}}
40
+ ~ payload field: {{field}}
41
+ ```
42
+
43
+ ## Breaking Change Detail
44
+
45
+ > _Filled automatically. Each breaking change must link to a migration note in `contracts/CHANGELOG.md`._
46
+
47
+ - {{breaking_change_1}}
48
+ - Migration: {{link}}
49
+
50
+ ## Compat Check Result
51
+
52
+ ```
53
+ $ tools/contract_diff.py --base {{base}} --head {{head}}
54
+ RESULT: {{COMPATIBLE | BREAKING}}
55
+ EXIT: {{0 | 1}}
56
+ ```
57
+
58
+ ## Sign-off
59
+
60
+ - [ ] Contracts owner reviewed
61
+ - [ ] Provider team reviewed
62
+ - [ ] Consumer teams reviewed
63
+ - [ ] (If breaking) Human approval received
@@ -0,0 +1,49 @@
1
+ # Contract Spec — {{contract_name}}
2
+
3
+ > Source of truth for cross-component contract. Implements `INT-FR-{{int_fr_id}}`.
4
+ > Consumers: {{consumers}}
5
+ > Producers: {{producers}}
6
+
7
+ ## Kind
8
+
9
+ - [ ] REST API (OpenAPI 3.1) — `contracts/api/{{name}}.yaml`
10
+ - [ ] AsyncAPI event — `contracts/events/{{name}}.yaml`
11
+ - [ ] GraphQL schema — `contracts/api/{{name}}.graphql`
12
+
13
+ ## Versioning
14
+
15
+ - Current version: `{{version}}` (SemVer: MAJOR.MINOR.PATCH)
16
+ - MAJOR: breaking (field removed, type changed, status code changed)
17
+ - MINOR: additive (new optional field, new endpoint)
18
+ - PATCH: doc / example only
19
+
20
+ > Any MAJOR bump requires human approval (INT-002) and a migration note in
21
+ > `contracts/CHANGELOG.md`.
22
+
23
+ ## Change
24
+
25
+ | Field | Value |
26
+ |-------|-------|
27
+ | Change ID | `{{change_id}}` |
28
+ | Affects | {{affects: [native, desktop, web, backend, wxa, mya, tta]}} |
29
+ | Direction | {{provider → consumer / bidirectional}} |
30
+ | Breaking? | {{yes / no}} |
31
+ | Migration | {{link to migration doc or "none"}} |
32
+
33
+ ## FR Mapping
34
+
35
+ | FR | Component | Role |
36
+ |----|-----------|------|
37
+ | `INT-FR-{{int_fr_id}}` | contracts | Contract definition |
38
+ | `{{provider_namespace}}-FR-{{provider_fr}}` | {{provider}} | Provider behavior |
39
+ | `{{consumer_namespace}}-FR-{{consumer_fr}}` | {{consumer}} | Consumer behavior |
40
+
41
+ ## Contract Test Mapping
42
+
43
+ - `tests/contract/test_{{contract_name}}.py`
44
+ - Scenarios: @INT-FR-{{int_fr_id}} @positive / @negative / @edge
45
+
46
+ ## See Also
47
+
48
+ - `contracts/CHANGELOG.md` — version history
49
+ - `openspec/changes/{{change_id}}/contract-diff.md` — auto-generated diff
@@ -0,0 +1,18 @@
1
+ openapi: 3.1.0
2
+ info:
3
+ title: {{title}}
4
+ version: {{version}}
5
+ description: |
6
+ Implements INT-FR-{{int_fr_id}}.
7
+ Consumers: {{consumers}}
8
+ Producers: {{producers}}
9
+ x-change-id: {{change_id}}
10
+ x-fr: INT-FR-{{int_fr_id}}
11
+
12
+ servers:
13
+ - url: ${BACKEND_URL}
14
+ description: Stack preview / staging / production (URL injected at deploy)
15
+
16
+ paths:
17
+ /{{resource}}:
18
+ {{methods}}
@@ -0,0 +1,36 @@
1
+ # Runtime Contract 模板 — Serverless 函数接口声明
2
+ # Provider-agnostic: 描述函数"做什么",不涉及具体部署平台
3
+ # 放置在 contracts/functions/{name}.yaml
4
+
5
+ function: {{function_name}}
6
+ version: {{semver}}
7
+ fr_ref: {{INT-FR-NNN}}
8
+ description: {{description}}
9
+
10
+ triggers:
11
+ - type: http # http | timer | event | oss | mns
12
+ method: POST
13
+ path: /{{endpoint}}
14
+ - type: event
15
+ source: {{event_source}}
16
+
17
+ timeout: {{timeout}}s
18
+ memory: {{memory}}MB
19
+
20
+ env:
21
+ {{env_var_name}}: {from: {{source}}} # stack_env | secrets | literal
22
+
23
+ # Provider-specific 映射 (自动选择)
24
+ # 部署时根据 --provider + --compute-mode 选择合适的 runtime
25
+ provider_map:
26
+ tcb:
27
+ compute_mode: cloudbase-functions
28
+ runtime: nodejs18 | python3.10 | go1.18
29
+ aliyun:
30
+ compute_mode: fc # Function Compute
31
+ runtime: python3.10 | nodejs18
32
+ # 或 SAE 模式 (container):
33
+ sae:
34
+ type: web-app
35
+ port: 8080
36
+ health_check: /health
@@ -0,0 +1,49 @@
1
+ # Technical Design — {{feature_name}}
2
+
3
+ ## Overview
4
+
5
+ {{brief_description}}
6
+
7
+ ## Architecture
8
+
9
+ ```
10
+ [Client] → [API Gateway] → [Function] → [Database]
11
+ ```
12
+
13
+ ## Data Model
14
+
15
+ ```python
16
+ @dataclass
17
+ class {{model_name}}:
18
+ id: str
19
+ {{field_1}}: {{type_1}}
20
+ {{field_2}}: {{type_2}}
21
+ ```
22
+
23
+ | Field | Type | Constraints | Description |
24
+ |-------|------|-------------|-------------|
25
+ | {{field}} | {{type}} | {{constraints}} | {{description}} |
26
+
27
+ ## API Contract
28
+
29
+ | Method | Path | Request | Response | Status |
30
+ |--------|------|---------|----------|--------|
31
+ | {{method}} | {{path}} | {{request}} | {{response}} | {{status_code}} |
32
+
33
+ ## State Machine
34
+
35
+ ```
36
+ {{state_a}} → {{state_b}} → {{state_c}}
37
+ {{state_b}} → {{error_state}} (on validation failure)
38
+ ```
39
+
40
+ ## Dependencies
41
+
42
+ - {{dependency_1}}
43
+ - {{dependency_2}}
44
+
45
+ ## BDD Scenarios
46
+
47
+ - `features/{{domain}}/{{feature}}.feature` — @FR-{{fr_id}} @positive
48
+ - `features/{{domain}}/{{feature}}.feature` — @FR-{{fr_id}} @negative
49
+ - `features/{{domain}}/{{feature}}.feature` — @FR-{{fr_id}} @edge
@@ -0,0 +1,32 @@
1
+ # Task List — {{feature_name}}
2
+
3
+ ## Dependency Graph
4
+
5
+ ```mermaid
6
+ graph TD
7
+ {{dag_nodes}}
8
+ ```
9
+
10
+ ## Units
11
+
12
+ ### Unit 1: {{unit_1_name}}
13
+
14
+ - **Depends on:** none
15
+ - **Scenarios:** {{scenario_tags_1}}
16
+ - **Tasks:**
17
+ - [ ] {{task_1}}
18
+ - [ ] {{task_2}}
19
+ - **Test plan:**
20
+ - `test_{{case_1}}` → {{expected_1}}
21
+ - `test_{{case_2}}` → {{expected_2}}
22
+
23
+ ### Unit 2: {{unit_2_name}}
24
+
25
+ - **Depends on:** {{unit_1_name}}
26
+ - **Scenarios:** {{scenario_tags_2}}
27
+ - **Tasks:**
28
+ - [ ] {{task_1}}
29
+ - [ ] {{task_2}}
30
+ - **Test plan:**
31
+ - `test_{{case_1}}` → {{expected_1}}
32
+ - `test_{{case_2}}` → {{expected_2}}