@scemoon/cdh 1.0.6 → 1.0.7

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 (550) hide show
  1. package/package.json +2 -2
  2. package/ai-dlc-skill/SKILL.md +0 -77
  3. package/ai-dlc-skill/agents/deliver-agent.md +0 -24
  4. package/ai-dlc-skill/agents/master.md +0 -50
  5. package/ai-dlc-skill/agents/plan-agent.md +0 -23
  6. package/ai-dlc-skill/agents/understand-agent.md +0 -23
  7. package/ai-dlc-skill/agents/verify-agent.md +0 -27
  8. package/ai-dlc-skill/architecture/project-structure.md +0 -78
  9. package/ai-dlc-skill/brownfield/README.md +0 -30
  10. package/ai-dlc-skill/brownfield/generate-context.sh +0 -64
  11. package/ai-dlc-skill/brownfield/scripts/deps.sh +0 -27
  12. package/ai-dlc-skill/brownfield/scripts/discover.sh +0 -34
  13. package/ai-dlc-skill/brownfield/scripts/extract-api.sh +0 -45
  14. package/ai-dlc-skill/components/backend.md +0 -34
  15. package/ai-dlc-skill/components/desktop.md +0 -30
  16. package/ai-dlc-skill/components/mya.md +0 -29
  17. package/ai-dlc-skill/components/native.md +0 -30
  18. package/ai-dlc-skill/components/tta.md +0 -29
  19. package/ai-dlc-skill/components/web.md +0 -31
  20. package/ai-dlc-skill/components/wxa.md +0 -29
  21. package/ai-dlc-skill/contracts/README.md +0 -25
  22. package/ai-dlc-skill/core/adaptive-flow.md +0 -36
  23. package/ai-dlc-skill/core/security.md +0 -29
  24. package/ai-dlc-skill/cross-tool/cline/export.sh +0 -31
  25. package/ai-dlc-skill/cross-tool/copilot/export.sh +0 -47
  26. package/ai-dlc-skill/cross-tool/cursor/export.sh +0 -32
  27. package/ai-dlc-skill/cross-tool/export.sh +0 -22
  28. package/ai-dlc-skill/cross-tool/onecode/config.yaml.tpl +0 -17
  29. package/ai-dlc-skill/cross-tool/onecode/export-skills.sh +0 -35
  30. package/ai-dlc-skill/cross-tool/onecode/export.sh +0 -54
  31. package/ai-dlc-skill/phases/deliver/entry.md +0 -26
  32. package/ai-dlc-skill/phases/deliver/lifecycle.md +0 -185
  33. package/ai-dlc-skill/phases/deliver/prompt.md +0 -40
  34. package/ai-dlc-skill/phases/deliver/rules.md +0 -61
  35. package/ai-dlc-skill/phases/plan/entry.md +0 -25
  36. package/ai-dlc-skill/phases/plan/lifecycle.md +0 -204
  37. package/ai-dlc-skill/phases/plan/prompt.md +0 -38
  38. package/ai-dlc-skill/phases/plan/rules.md +0 -25
  39. package/ai-dlc-skill/phases/understand/entry.md +0 -26
  40. package/ai-dlc-skill/phases/understand/lifecycle.md +0 -184
  41. package/ai-dlc-skill/phases/understand/prompt.md +0 -41
  42. package/ai-dlc-skill/phases/understand/rules.md +0 -37
  43. package/ai-dlc-skill/phases/verify/entry.md +0 -26
  44. package/ai-dlc-skill/phases/verify/lifecycle.md +0 -192
  45. package/ai-dlc-skill/phases/verify/prompt.md +0 -43
  46. package/ai-dlc-skill/phases/verify/rules.md +0 -73
  47. package/ai-dlc-skill/practices/bdd.md +0 -91
  48. package/ai-dlc-skill/practices/sdd.md +0 -84
  49. package/ai-dlc-skill/practices/tdd.md +0 -95
  50. package/ai-dlc-skill/providers/README.md +0 -114
  51. package/ai-dlc-skill/providers/aliyun/deployment.yaml +0 -66
  52. package/ai-dlc-skill/providers/aliyun/preview.yaml +0 -84
  53. package/ai-dlc-skill/providers/aliyun/provider.yaml +0 -160
  54. package/ai-dlc-skill/providers/tcb/deployment.yaml +0 -69
  55. package/ai-dlc-skill/providers/tcb/preview.yaml +0 -83
  56. package/ai-dlc-skill/providers/tcb/provider.yaml +0 -172
  57. package/ai-dlc-skill/requirements.md +0 -140
  58. package/ai-dlc-skill/skill.yaml +0 -147
  59. package/ai-dlc-skill/templates/integration/CHANGELOG.md +0 -41
  60. package/ai-dlc-skill/templates/integration/asyncapi.yaml +0 -43
  61. package/ai-dlc-skill/templates/integration/contract-diff.md +0 -63
  62. package/ai-dlc-skill/templates/integration/contract-spec.md +0 -49
  63. package/ai-dlc-skill/templates/integration/openapi.yaml +0 -18
  64. package/ai-dlc-skill/templates/integration/runtime-contract.yaml +0 -36
  65. package/ai-dlc-skill/templates/plan/design.md +0 -49
  66. package/ai-dlc-skill/templates/plan/task-list.md +0 -32
  67. package/ai-dlc-skill/templates/project/README.md +0 -126
  68. package/ai-dlc-skill/templates/project/template.md +0 -119
  69. package/ai-dlc-skill/templates/understand/feature.feature +0 -23
  70. package/ai-dlc-skill/templates/understand/intent.md +0 -29
  71. package/ai-dlc-skill/templates/understand/spec-delta.md +0 -47
  72. package/ai-dlc-skill/templates/verify/test-unit.py +0 -27
  73. package/ai-dlc-skill/walkthrough/collect.sh +0 -50
  74. package/ai-dlc-skill/walkthrough/template.md +0 -54
  75. package/ai-dlc-skill/workflows/ai-dlc.yaml +0 -110
  76. package/ai-dlc-skill/workflows/deployment.yaml +0 -199
  77. package/cdh/__init__.py +0 -0
  78. package/cdh/__main__.py +0 -4
  79. package/cdh/__pycache__/__init__.cpython-314.pyc +0 -0
  80. package/cdh/__pycache__/cdh_mcp_injector.cpython-314.pyc +0 -0
  81. package/cdh/__pycache__/cdh_mcp_loader.cpython-314.pyc +0 -0
  82. package/cdh/__pycache__/cdh_mcp_manager.cpython-314.pyc +0 -0
  83. package/cdh/__pycache__/cdh_session_aggregator.cpython-314.pyc +0 -0
  84. package/cdh/__pycache__/cdh_skill_loader.cpython-314.pyc +0 -0
  85. package/cdh/__pycache__/cdh_skill_manager.cpython-314.pyc +0 -0
  86. package/cdh/__pycache__/cli.cpython-313.pyc +0 -0
  87. package/cdh/__pycache__/cli.cpython-314.pyc +0 -0
  88. package/cdh/__pycache__/scaffold.cpython-314.pyc +0 -0
  89. package/cdh/cdh_mcp_injector.py +0 -115
  90. package/cdh/cdh_mcp_loader.py +0 -67
  91. package/cdh/cdh_mcp_manager.py +0 -73
  92. package/cdh/cdh_session_aggregator.py +0 -258
  93. package/cdh/cdh_skill_manager.py +0 -105
  94. package/cdh/cli.py +0 -807
  95. package/cdh/scaffold.py +0 -728
  96. package/onecode/__init__.py +0 -1
  97. package/onecode/__main__.py +0 -4
  98. package/onecode/__pycache__/__init__.cpython-314.pyc +0 -0
  99. package/onecode/__pycache__/cli.cpython-314.pyc +0 -0
  100. package/onecode/__pycache__/commands.cpython-314.pyc +0 -0
  101. package/onecode/__pycache__/config.cpython-314.pyc +0 -0
  102. package/onecode/__pycache__/config_screen.cpython-314.pyc +0 -0
  103. package/onecode/__pycache__/migrate.cpython-314.pyc +0 -0
  104. package/onecode/agent/__init__.py +0 -0
  105. package/onecode/agent/__pycache__/__init__.cpython-314.pyc +0 -0
  106. package/onecode/agent/__pycache__/cdh_loader.cpython-314.pyc +0 -0
  107. package/onecode/agent/__pycache__/context.cpython-314.pyc +0 -0
  108. package/onecode/agent/__pycache__/engine.cpython-314.pyc +0 -0
  109. package/onecode/agent/__pycache__/hooks.cpython-314.pyc +0 -0
  110. package/onecode/agent/__pycache__/onecode_agent_acp.cpython-314.pyc +0 -0
  111. package/onecode/agent/__pycache__/permissions.cpython-314.pyc +0 -0
  112. package/onecode/agent/__pycache__/permissions_store.cpython-314.pyc +0 -0
  113. package/onecode/agent/__pycache__/project_doc.cpython-314.pyc +0 -0
  114. package/onecode/agent/__pycache__/session.cpython-314.pyc +0 -0
  115. package/onecode/agent/agents/__init__.py +0 -29
  116. package/onecode/agent/agents/__pycache__/__init__.cpython-314.pyc +0 -0
  117. package/onecode/agent/agents/__pycache__/types.cpython-314.pyc +0 -0
  118. package/onecode/agent/agents/types.py +0 -589
  119. package/onecode/agent/attachments.py +0 -112
  120. package/onecode/agent/cdh_loader.py +0 -267
  121. package/onecode/agent/context.py +0 -343
  122. package/onecode/agent/engine.py +0 -2700
  123. package/onecode/agent/hooks.py +0 -86
  124. package/onecode/agent/onecode_agent_acp.py +0 -2743
  125. package/onecode/agent/onecode_agent_acp.py.bak +0 -2447
  126. package/onecode/agent/permissions.py +0 -150
  127. package/onecode/agent/permissions_store.py +0 -62
  128. package/onecode/agent/project_doc.py +0 -19
  129. package/onecode/agent/session.py +0 -195
  130. package/onecode/agent/snapshot.py +0 -144
  131. package/onecode/agent/tools/__init__.py +0 -17
  132. package/onecode/agent/tools/__pycache__/__init__.cpython-314.pyc +0 -0
  133. package/onecode/agent/tools/__pycache__/agent_tools.cpython-314.pyc +0 -0
  134. package/onecode/agent/tools/__pycache__/apply_patch_tool.cpython-314.pyc +0 -0
  135. package/onecode/agent/tools/__pycache__/bash_tool.cpython-314.pyc +0 -0
  136. package/onecode/agent/tools/__pycache__/communication_tools.cpython-314.pyc +0 -0
  137. package/onecode/agent/tools/__pycache__/config_tool.cpython-314.pyc +0 -0
  138. package/onecode/agent/tools/__pycache__/cron_tools.cpython-314.pyc +0 -0
  139. package/onecode/agent/tools/__pycache__/errors.cpython-314.pyc +0 -0
  140. package/onecode/agent/tools/__pycache__/file_ops.cpython-314.pyc +0 -0
  141. package/onecode/agent/tools/__pycache__/file_tools.cpython-314.pyc +0 -0
  142. package/onecode/agent/tools/__pycache__/git_tools.cpython-314.pyc +0 -0
  143. package/onecode/agent/tools/__pycache__/lsp_tools.cpython-314.pyc +0 -0
  144. package/onecode/agent/tools/__pycache__/mcp_tools.cpython-314.pyc +0 -0
  145. package/onecode/agent/tools/__pycache__/permission_handler.cpython-314.pyc +0 -0
  146. package/onecode/agent/tools/__pycache__/permissions.cpython-314.pyc +0 -0
  147. package/onecode/agent/tools/__pycache__/protocol.cpython-314.pyc +0 -0
  148. package/onecode/agent/tools/__pycache__/registry.cpython-314.pyc +0 -0
  149. package/onecode/agent/tools/__pycache__/sandbox.cpython-314.pyc +0 -0
  150. package/onecode/agent/tools/__pycache__/schema_validation.cpython-314.pyc +0 -0
  151. package/onecode/agent/tools/__pycache__/skill_tools.cpython-314.pyc +0 -0
  152. package/onecode/agent/tools/__pycache__/todo_tools.cpython-314.pyc +0 -0
  153. package/onecode/agent/tools/__pycache__/web_tools.cpython-314.pyc +0 -0
  154. package/onecode/agent/tools/agent_tools.py +0 -132
  155. package/onecode/agent/tools/apply_patch_tool.py +0 -138
  156. package/onecode/agent/tools/bash_tool.py +0 -111
  157. package/onecode/agent/tools/communication_tools.py +0 -148
  158. package/onecode/agent/tools/config_tool.py +0 -130
  159. package/onecode/agent/tools/cron_tools.py +0 -178
  160. package/onecode/agent/tools/errors.py +0 -17
  161. package/onecode/agent/tools/file_ops.py +0 -221
  162. package/onecode/agent/tools/file_tools.py +0 -225
  163. package/onecode/agent/tools/git_tools.py +0 -88
  164. package/onecode/agent/tools/lsp_tools.py +0 -404
  165. package/onecode/agent/tools/mcp_tools.py +0 -127
  166. package/onecode/agent/tools/permission_handler.py +0 -46
  167. package/onecode/agent/tools/permissions.py +0 -77
  168. package/onecode/agent/tools/protocol.py +0 -20
  169. package/onecode/agent/tools/registry.py +0 -201
  170. package/onecode/agent/tools/sandbox.py +0 -358
  171. package/onecode/agent/tools/schema_validation.py +0 -100
  172. package/onecode/agent/tools/skill_tools.py +0 -52
  173. package/onecode/agent/tools/todo_tools.py +0 -207
  174. package/onecode/agent/tools/web_tools.py +0 -169
  175. package/onecode/builtin_skills/agent-browser/SKILL.md +0 -212
  176. package/onecode/builtin_skills/agent-browser/skill.yaml +0 -8
  177. package/onecode/builtin_skills/git/SKILL.md +0 -64
  178. package/onecode/builtin_skills/git/skill.yaml +0 -7
  179. package/onecode/builtin_skills/shell/SKILL.md +0 -58
  180. package/onecode/builtin_skills/shell/skill.yaml +0 -8
  181. package/onecode/builtin_skills/skill-creator/SKILL.md +0 -106
  182. package/onecode/builtin_skills/skill-creator/skill.yaml +0 -8
  183. package/onecode/cli.py +0 -935
  184. package/onecode/cloud/__init__.py +0 -0
  185. package/onecode/cloud/base.py +0 -20
  186. package/onecode/codebase/__init__.py +0 -69
  187. package/onecode/codebase/__pycache__/__init__.cpython-314.pyc +0 -0
  188. package/onecode/codebase/__pycache__/chunker.cpython-314.pyc +0 -0
  189. package/onecode/codebase/__pycache__/indexer.cpython-314.pyc +0 -0
  190. package/onecode/codebase/__pycache__/retriever.cpython-314.pyc +0 -0
  191. package/onecode/codebase/__pycache__/storage.cpython-314.pyc +0 -0
  192. package/onecode/codebase/__pycache__/tools.cpython-314.pyc +0 -0
  193. package/onecode/codebase/chunker.py +0 -125
  194. package/onecode/codebase/indexer.py +0 -149
  195. package/onecode/codebase/retriever.py +0 -203
  196. package/onecode/codebase/storage.py +0 -131
  197. package/onecode/codebase/tools.py +0 -59
  198. package/onecode/commands.py +0 -596
  199. package/onecode/config.py +0 -314
  200. package/onecode/config_screen.py +0 -600
  201. package/onecode/cron/__init__.py +0 -3
  202. package/onecode/lsp/__init__.py +0 -3
  203. package/onecode/mcp/__init__.py +0 -4
  204. package/onecode/mcp/__pycache__/__init__.cpython-314.pyc +0 -0
  205. package/onecode/mcp/__pycache__/client.cpython-314.pyc +0 -0
  206. package/onecode/mcp/__pycache__/manager.cpython-314.pyc +0 -0
  207. package/onecode/mcp/client.py +0 -193
  208. package/onecode/mcp/manager.py +0 -190
  209. package/onecode/memory/__init__.py +0 -49
  210. package/onecode/memory/__pycache__/__init__.cpython-314.pyc +0 -0
  211. package/onecode/memory/__pycache__/backend.cpython-314.pyc +0 -0
  212. package/onecode/memory/__pycache__/offload.cpython-314.pyc +0 -0
  213. package/onecode/memory/__pycache__/pyramid.cpython-314.pyc +0 -0
  214. package/onecode/memory/__pycache__/recall.cpython-314.pyc +0 -0
  215. package/onecode/memory/__pycache__/symbolic.cpython-314.pyc +0 -0
  216. package/onecode/memory/backend.py +0 -159
  217. package/onecode/memory/pyramid.py +0 -133
  218. package/onecode/memory/recall.py +0 -203
  219. package/onecode/migrate.py +0 -122
  220. package/onecode/models/__init__.py +0 -4
  221. package/onecode/models/__pycache__/__init__.cpython-314.pyc +0 -0
  222. package/onecode/models/__pycache__/errors.cpython-314.pyc +0 -0
  223. package/onecode/models/__pycache__/messages.cpython-314.pyc +0 -0
  224. package/onecode/models/__pycache__/provider.cpython-314.pyc +0 -0
  225. package/onecode/models/__pycache__/registry.cpython-314.pyc +0 -0
  226. package/onecode/models/errors.py +0 -104
  227. package/onecode/models/messages.py +0 -739
  228. package/onecode/models/provider.py +0 -699
  229. package/onecode/models/providers/__init__.py +0 -17
  230. package/onecode/models/providers/__pycache__/__init__.cpython-314.pyc +0 -0
  231. package/onecode/models/providers/__pycache__/anthropic_provider.cpython-314.pyc +0 -0
  232. package/onecode/models/providers/__pycache__/deepseek_provider.cpython-314.pyc +0 -0
  233. package/onecode/models/providers/__pycache__/glm_provider.cpython-314.pyc +0 -0
  234. package/onecode/models/providers/__pycache__/minimax_provider.cpython-314.pyc +0 -0
  235. package/onecode/models/providers/__pycache__/minimaxi_provider.cpython-314.pyc +0 -0
  236. package/onecode/models/providers/__pycache__/ollama_provider.cpython-314.pyc +0 -0
  237. package/onecode/models/providers/__pycache__/openai_provider.cpython-314.pyc +0 -0
  238. package/onecode/models/providers/anthropic_provider.py +0 -273
  239. package/onecode/models/providers/deepseek_provider.py +0 -212
  240. package/onecode/models/providers/glm_provider.py +0 -195
  241. package/onecode/models/providers/minimax_provider.py +0 -158
  242. package/onecode/models/providers/minimaxi_provider.py +0 -417
  243. package/onecode/models/providers/ollama_provider.py +0 -100
  244. package/onecode/models/providers/openai_provider.py +0 -237
  245. package/onecode/models/registry.py +0 -212
  246. package/onecode/server/__init__.py +0 -3
  247. package/onecode/server/app.py +0 -224
  248. package/onecode/skills/__init__.py +0 -11
  249. package/onecode/skills/__pycache__/__init__.cpython-314.pyc +0 -0
  250. package/onecode/skills/__pycache__/argument_substitution.cpython-314.pyc +0 -0
  251. package/onecode/skills/__pycache__/bootstrap.cpython-314.pyc +0 -0
  252. package/onecode/skills/__pycache__/create.cpython-314.pyc +0 -0
  253. package/onecode/skills/__pycache__/frontmatter.cpython-314.pyc +0 -0
  254. package/onecode/skills/__pycache__/loader.cpython-314.pyc +0 -0
  255. package/onecode/skills/__pycache__/manager.cpython-314.pyc +0 -0
  256. package/onecode/skills/__pycache__/model.cpython-314.pyc +0 -0
  257. package/onecode/skills/argument_substitution.py +0 -38
  258. package/onecode/skills/bootstrap.py +0 -124
  259. package/onecode/skills/create.py +0 -56
  260. package/onecode/skills/frontmatter.py +0 -33
  261. package/onecode/skills/loader.py +0 -139
  262. package/onecode/skills/manager.py +0 -75
  263. package/onecode/skills/model.py +0 -43
  264. package/onecode/storage/__init__.py +0 -0
  265. package/onecode/storage/activity.py +0 -63
  266. package/onecode/storage/project.py +0 -54
  267. package/onecode/storage/session.py +0 -112
  268. package/onecode/tasks/__init__.py +0 -26
  269. package/onecode/tasks/manager.py +0 -232
  270. package/onecode/tasks/models.py +0 -240
  271. package/onecode/trace/__init__.py +0 -0
  272. package/onecode/trace/tracer.py +0 -173
  273. package/onecode/utils/__init__.py +0 -0
  274. package/onecode/utils/helpers.py +0 -20
  275. package/pyproject.toml +0 -74
  276. package/tui/__init__.py +0 -46
  277. package/tui/__main__.py +0 -4
  278. package/tui/__pycache__/__init__.cpython-314.pyc +0 -0
  279. package/tui/__pycache__/_loop.cpython-314.pyc +0 -0
  280. package/tui/__pycache__/_path_fuzzy_search.cpython-314.pyc +0 -0
  281. package/tui/__pycache__/_path_match.cpython-314.pyc +0 -0
  282. package/tui/__pycache__/about.cpython-314.pyc +0 -0
  283. package/tui/__pycache__/agent.cpython-314.pyc +0 -0
  284. package/tui/__pycache__/agent_schema.cpython-314.pyc +0 -0
  285. package/tui/__pycache__/agents.cpython-314.pyc +0 -0
  286. package/tui/__pycache__/answer.cpython-314.pyc +0 -0
  287. package/tui/__pycache__/app.cpython-313.pyc +0 -0
  288. package/tui/__pycache__/app.cpython-314.pyc +0 -0
  289. package/tui/__pycache__/atomic.cpython-314.pyc +0 -0
  290. package/tui/__pycache__/complete.cpython-314.pyc +0 -0
  291. package/tui/__pycache__/constants.cpython-314.pyc +0 -0
  292. package/tui/__pycache__/conversation_markdown.cpython-314.pyc +0 -0
  293. package/tui/__pycache__/danger.cpython-314.pyc +0 -0
  294. package/tui/__pycache__/db.cpython-314.pyc +0 -0
  295. package/tui/__pycache__/dec.cpython-314.pyc +0 -0
  296. package/tui/__pycache__/directory.cpython-314.pyc +0 -0
  297. package/tui/__pycache__/directory_suggester.cpython-314.pyc +0 -0
  298. package/tui/__pycache__/directory_watcher.cpython-314.pyc +0 -0
  299. package/tui/__pycache__/format_path.cpython-314.pyc +0 -0
  300. package/tui/__pycache__/fuzzy.cpython-314.pyc +0 -0
  301. package/tui/__pycache__/fuzzy_index.cpython-314.pyc +0 -0
  302. package/tui/__pycache__/history.cpython-314.pyc +0 -0
  303. package/tui/__pycache__/jsonrpc.cpython-314.pyc +0 -0
  304. package/tui/__pycache__/menus.cpython-314.pyc +0 -0
  305. package/tui/__pycache__/message_log.cpython-314.pyc +0 -0
  306. package/tui/__pycache__/messages.cpython-314.pyc +0 -0
  307. package/tui/__pycache__/path_complete.cpython-314.pyc +0 -0
  308. package/tui/__pycache__/path_filter.cpython-314.pyc +0 -0
  309. package/tui/__pycache__/paths.cpython-314.pyc +0 -0
  310. package/tui/__pycache__/pill.cpython-314.pyc +0 -0
  311. package/tui/__pycache__/platform_commands.cpython-314.pyc +0 -0
  312. package/tui/__pycache__/protocol.cpython-314.pyc +0 -0
  313. package/tui/__pycache__/session_tracker.cpython-314.pyc +0 -0
  314. package/tui/__pycache__/settings.cpython-314.pyc +0 -0
  315. package/tui/__pycache__/settings_schema.cpython-314.pyc +0 -0
  316. package/tui/__pycache__/shell.cpython-314.pyc +0 -0
  317. package/tui/__pycache__/shell_read.cpython-314.pyc +0 -0
  318. package/tui/__pycache__/slash_command.cpython-314.pyc +0 -0
  319. package/tui/__pycache__/version.cpython-314.pyc +0 -0
  320. package/tui/_loop.py +0 -86
  321. package/tui/_path_fuzzy_search.py +0 -48
  322. package/tui/_path_match.py +0 -141
  323. package/tui/about.py +0 -95
  324. package/tui/acp/__pycache__/agent.cpython-314.pyc +0 -0
  325. package/tui/acp/__pycache__/api.cpython-314.pyc +0 -0
  326. package/tui/acp/__pycache__/encode_tool_call_id.cpython-314.pyc +0 -0
  327. package/tui/acp/__pycache__/messages.cpython-314.pyc +0 -0
  328. package/tui/acp/__pycache__/prompt.cpython-314.pyc +0 -0
  329. package/tui/acp/__pycache__/protocol.cpython-314.pyc +0 -0
  330. package/tui/acp/agent.py +0 -1002
  331. package/tui/acp/api.py +0 -73
  332. package/tui/acp/encode_tool_call_id.py +0 -12
  333. package/tui/acp/messages.py +0 -203
  334. package/tui/acp/prompt.py +0 -53
  335. package/tui/acp/protocol.py +0 -499
  336. package/tui/agent.py +0 -70
  337. package/tui/agent_schema.py +0 -76
  338. package/tui/agents.py +0 -46
  339. package/tui/ansi/__init__.py +0 -1
  340. package/tui/ansi/__pycache__/__init__.cpython-314.pyc +0 -0
  341. package/tui/ansi/__pycache__/_ansi.cpython-314.pyc +0 -0
  342. package/tui/ansi/__pycache__/_ansi_colors.cpython-314.pyc +0 -0
  343. package/tui/ansi/__pycache__/_control_codes.cpython-314.pyc +0 -0
  344. package/tui/ansi/__pycache__/_keys.cpython-314.pyc +0 -0
  345. package/tui/ansi/__pycache__/_sgr_styles.cpython-314.pyc +0 -0
  346. package/tui/ansi/__pycache__/_stream_parser.cpython-314.pyc +0 -0
  347. package/tui/ansi/_ansi.py +0 -1689
  348. package/tui/ansi/_ansi_colors.py +0 -264
  349. package/tui/ansi/_control_codes.py +0 -37
  350. package/tui/ansi/_keys.py +0 -251
  351. package/tui/ansi/_sgr_styles.py +0 -64
  352. package/tui/ansi/_stream_parser.py +0 -418
  353. package/tui/answer.py +0 -12
  354. package/tui/app.py +0 -1266
  355. package/tui/atomic.py +0 -37
  356. package/tui/cli.py +0 -313
  357. package/tui/code_analyze.py +0 -27
  358. package/tui/complete.py +0 -38
  359. package/tui/constants.py +0 -61
  360. package/tui/conversation_markdown.py +0 -30
  361. package/tui/danger.py +0 -372
  362. package/tui/data/agents/ampcode.com.toml +0 -52
  363. package/tui/data/agents/augmentcode.com.toml +0 -41
  364. package/tui/data/agents/cdh.cloud-dev-harness.toml +0 -23
  365. package/tui/data/agents/claude.com.toml +0 -41
  366. package/tui/data/agents/copilot.github.com.toml +0 -29
  367. package/tui/data/agents/crowai.dev.toml +0 -36
  368. package/tui/data/agents/cursor.com.toml +0 -38
  369. package/tui/data/agents/deepagents.langchain.com +0 -34
  370. package/tui/data/agents/docker.com.toml +0 -60
  371. package/tui/data/agents/geminicli.com.toml +0 -28
  372. package/tui/data/agents/goose.ai.toml +0 -52
  373. package/tui/data/agents/inference.huggingface.co.toml +0 -41
  374. package/tui/data/agents/kimi.com.toml +0 -35
  375. package/tui/data/agents/kiro.dev.toml +0 -43
  376. package/tui/data/agents/onecode.dev.toml +0 -22
  377. package/tui/data/agents/openai.com.toml +0 -53
  378. package/tui/data/agents/openclaw.ai.toml +0 -37
  379. package/tui/data/agents/opencode.ai.toml +0 -39
  380. package/tui/data/agents/openhands.dev.toml +0 -46
  381. package/tui/data/agents/stakpak.dev.toml +0 -62
  382. package/tui/data/agents/vibe.mistral.ai.toml +0 -31
  383. package/tui/data/agents/vtcode.dev.toml +0 -63
  384. package/tui/data/images/frog.png +0 -0
  385. package/tui/data/sounds/question.wav +0 -0
  386. package/tui/data/sounds/turn-over.wav +0 -0
  387. package/tui/db.py +0 -213
  388. package/tui/dec.py +0 -332
  389. package/tui/directory.py +0 -234
  390. package/tui/directory_suggester.py +0 -93
  391. package/tui/directory_watcher.py +0 -231
  392. package/tui/format_path.py +0 -25
  393. package/tui/fuzzy.py +0 -140
  394. package/tui/fuzzy_index.py +0 -275
  395. package/tui/gist.py +0 -33
  396. package/tui/history.py +0 -138
  397. package/tui/jsonrpc.py +0 -578
  398. package/tui/menus.py +0 -14
  399. package/tui/message_log.py +0 -69
  400. package/tui/messages.py +0 -144
  401. package/tui/option_content.py +0 -51
  402. package/tui/os.py +0 -0
  403. package/tui/path_complete.py +0 -217
  404. package/tui/path_filter.py +0 -124
  405. package/tui/paths.py +0 -87
  406. package/tui/pill.py +0 -23
  407. package/tui/platform_commands.py +0 -52
  408. package/tui/prompt/__pycache__/extract.cpython-314.pyc +0 -0
  409. package/tui/prompt/__pycache__/resource.cpython-314.pyc +0 -0
  410. package/tui/prompt/extract.py +0 -19
  411. package/tui/prompt/resource.py +0 -68
  412. package/tui/protocol.py +0 -28
  413. package/tui/screens/__init__.py +0 -0
  414. package/tui/screens/__pycache__/__init__.cpython-314.pyc +0 -0
  415. package/tui/screens/__pycache__/agent_modal.cpython-314.pyc +0 -0
  416. package/tui/screens/__pycache__/component_picker.cpython-314.pyc +0 -0
  417. package/tui/screens/__pycache__/diff_screen.cpython-314.pyc +0 -0
  418. package/tui/screens/__pycache__/log.cpython-314.pyc +0 -0
  419. package/tui/screens/__pycache__/main.cpython-313.pyc +0 -0
  420. package/tui/screens/__pycache__/main.cpython-314.pyc +0 -0
  421. package/tui/screens/__pycache__/permissions.cpython-314.pyc +0 -0
  422. package/tui/screens/__pycache__/projects_app.cpython-314.pyc +0 -0
  423. package/tui/screens/__pycache__/projects_screen.cpython-314.pyc +0 -0
  424. package/tui/screens/__pycache__/sessions.cpython-314.pyc +0 -0
  425. package/tui/screens/__pycache__/store.cpython-314.pyc +0 -0
  426. package/tui/screens/__pycache__/tool_content_screen.cpython-314.pyc +0 -0
  427. package/tui/screens/action_modal.py +0 -94
  428. package/tui/screens/agent_modal.py +0 -175
  429. package/tui/screens/command_edit_modal.py +0 -74
  430. package/tui/screens/component_picker.py +0 -168
  431. package/tui/screens/diff_screen.py +0 -84
  432. package/tui/screens/log.py +0 -553
  433. package/tui/screens/main.py +0 -385
  434. package/tui/screens/main.tcss +0 -655
  435. package/tui/screens/permissions.py +0 -404
  436. package/tui/screens/permissions.tcss +0 -72
  437. package/tui/screens/projects.tcss +0 -80
  438. package/tui/screens/projects_app.py +0 -347
  439. package/tui/screens/projects_screen.py +0 -284
  440. package/tui/screens/session_resume_modal.py +0 -172
  441. package/tui/screens/session_resume_modal.tcss +0 -35
  442. package/tui/screens/sessions.py +0 -164
  443. package/tui/screens/sessions.tcss +0 -119
  444. package/tui/screens/settings.py +0 -254
  445. package/tui/screens/settings.tcss +0 -101
  446. package/tui/screens/store.py +0 -500
  447. package/tui/screens/store.tcss +0 -274
  448. package/tui/screens/tool_content_screen.py +0 -59
  449. package/tui/session_tracker.py +0 -123
  450. package/tui/settings.py +0 -353
  451. package/tui/settings_schema.py +0 -431
  452. package/tui/shell.py +0 -304
  453. package/tui/shell_read.py +0 -42
  454. package/tui/slash_command.py +0 -34
  455. package/tui/tui.tcss +0 -246
  456. package/tui/twitter.py +0 -38
  457. package/tui/version.py +0 -80
  458. package/tui/visuals/__init__.py +0 -0
  459. package/tui/visuals/__pycache__/__init__.cpython-314.pyc +0 -0
  460. package/tui/visuals/__pycache__/columns.cpython-314.pyc +0 -0
  461. package/tui/visuals/columns.py +0 -272
  462. package/tui/widgets/__init__.py +0 -0
  463. package/tui/widgets/__pycache__/__init__.cpython-314.pyc +0 -0
  464. package/tui/widgets/__pycache__/acp_content.cpython-314.pyc +0 -0
  465. package/tui/widgets/__pycache__/agent_response.cpython-314.pyc +0 -0
  466. package/tui/widgets/__pycache__/agent_thought.cpython-314.pyc +0 -0
  467. package/tui/widgets/__pycache__/ask_user.cpython-314.pyc +0 -0
  468. package/tui/widgets/__pycache__/condensed_path.cpython-314.pyc +0 -0
  469. package/tui/widgets/__pycache__/context_stats.cpython-314.pyc +0 -0
  470. package/tui/widgets/__pycache__/conversation.cpython-314.pyc +0 -0
  471. package/tui/widgets/__pycache__/diff_view.cpython-314.pyc +0 -0
  472. package/tui/widgets/__pycache__/directory_input.cpython-314.pyc +0 -0
  473. package/tui/widgets/__pycache__/flash.cpython-314.pyc +0 -0
  474. package/tui/widgets/__pycache__/future_text.cpython-314.pyc +0 -0
  475. package/tui/widgets/__pycache__/grid_select.cpython-314.pyc +0 -0
  476. package/tui/widgets/__pycache__/highlighted_textarea.cpython-314.pyc +0 -0
  477. package/tui/widgets/__pycache__/load_more.cpython-314.pyc +0 -0
  478. package/tui/widgets/__pycache__/mandelbrot.cpython-314.pyc +0 -0
  479. package/tui/widgets/__pycache__/markdown_note.cpython-314.pyc +0 -0
  480. package/tui/widgets/__pycache__/menu.cpython-314.pyc +0 -0
  481. package/tui/widgets/__pycache__/modified_files.cpython-314.pyc +0 -0
  482. package/tui/widgets/__pycache__/non_selectable_label.cpython-314.pyc +0 -0
  483. package/tui/widgets/__pycache__/note.cpython-314.pyc +0 -0
  484. package/tui/widgets/__pycache__/path_search.cpython-314.pyc +0 -0
  485. package/tui/widgets/__pycache__/plan.cpython-314.pyc +0 -0
  486. package/tui/widgets/__pycache__/project_directory_tree.cpython-314.pyc +0 -0
  487. package/tui/widgets/__pycache__/project_grid_select.cpython-314.pyc +0 -0
  488. package/tui/widgets/__pycache__/project_summary.cpython-314.pyc +0 -0
  489. package/tui/widgets/__pycache__/prompt.cpython-314.pyc +0 -0
  490. package/tui/widgets/__pycache__/question.cpython-314.pyc +0 -0
  491. package/tui/widgets/__pycache__/session_grid_select.cpython-314.pyc +0 -0
  492. package/tui/widgets/__pycache__/session_summary.cpython-314.pyc +0 -0
  493. package/tui/widgets/__pycache__/session_tabs.cpython-314.pyc +0 -0
  494. package/tui/widgets/__pycache__/shell_result.cpython-314.pyc +0 -0
  495. package/tui/widgets/__pycache__/shell_terminal.cpython-314.pyc +0 -0
  496. package/tui/widgets/__pycache__/side_bar.cpython-314.pyc +0 -0
  497. package/tui/widgets/__pycache__/slash_complete.cpython-314.pyc +0 -0
  498. package/tui/widgets/__pycache__/strike_text.cpython-314.pyc +0 -0
  499. package/tui/widgets/__pycache__/subagent.cpython-314.pyc +0 -0
  500. package/tui/widgets/__pycache__/subagent_screen.cpython-314.pyc +0 -0
  501. package/tui/widgets/__pycache__/terminal.cpython-314.pyc +0 -0
  502. package/tui/widgets/__pycache__/throbber.cpython-314.pyc +0 -0
  503. package/tui/widgets/__pycache__/tool_call.cpython-314.pyc +0 -0
  504. package/tui/widgets/__pycache__/user_input.cpython-314.pyc +0 -0
  505. package/tui/widgets/acp_content.py +0 -70
  506. package/tui/widgets/agent_response.py +0 -76
  507. package/tui/widgets/agent_thought.py +0 -167
  508. package/tui/widgets/ask_user.py +0 -264
  509. package/tui/widgets/command_pane.py +0 -223
  510. package/tui/widgets/condensed_path.py +0 -115
  511. package/tui/widgets/context_stats.py +0 -66
  512. package/tui/widgets/conversation.py +0 -2641
  513. package/tui/widgets/danger_warning.py +0 -65
  514. package/tui/widgets/diff_view.py +0 -69
  515. package/tui/widgets/directory_input.py +0 -8
  516. package/tui/widgets/flash.py +0 -81
  517. package/tui/widgets/future_text.py +0 -126
  518. package/tui/widgets/grid_select.py +0 -234
  519. package/tui/widgets/highlighted_textarea.py +0 -180
  520. package/tui/widgets/load_more.py +0 -24
  521. package/tui/widgets/mandelbrot.py +0 -294
  522. package/tui/widgets/markdown_note.py +0 -13
  523. package/tui/widgets/menu.py +0 -147
  524. package/tui/widgets/modified_files.py +0 -306
  525. package/tui/widgets/non_selectable_label.py +0 -5
  526. package/tui/widgets/note.py +0 -18
  527. package/tui/widgets/path_search.py +0 -492
  528. package/tui/widgets/plan.py +0 -285
  529. package/tui/widgets/project_directory_tree.py +0 -102
  530. package/tui/widgets/project_grid_select.py +0 -64
  531. package/tui/widgets/project_summary.py +0 -33
  532. package/tui/widgets/prompt.py +0 -795
  533. package/tui/widgets/question.py +0 -360
  534. package/tui/widgets/session_grid_select.py +0 -230
  535. package/tui/widgets/session_summary.py +0 -115
  536. package/tui/widgets/session_tabs.py +0 -188
  537. package/tui/widgets/shell_result.py +0 -35
  538. package/tui/widgets/shell_terminal.py +0 -40
  539. package/tui/widgets/side_bar.py +0 -124
  540. package/tui/widgets/slash_complete.py +0 -235
  541. package/tui/widgets/strike_text.py +0 -70
  542. package/tui/widgets/subagent.py +0 -287
  543. package/tui/widgets/subagent_screen.py +0 -709
  544. package/tui/widgets/terminal.py +0 -576
  545. package/tui/widgets/terminal_tool.py +0 -360
  546. package/tui/widgets/throbber.py +0 -100
  547. package/tui/widgets/tool_call.py +0 -398
  548. package/tui/widgets/user_input.py +0 -23
  549. package/tui/widgets/version.py +0 -5
  550. package/tui/widgets/welcome.py +0 -31
@@ -1,199 +0,0 @@
1
- # AI-DLC Deliver Deployment Pipeline (Stack)
2
-
3
- Extends the Deliver phase with a unified stack deploy pipeline, per-component and cross-stack e2e, and stack-level BVT + rollback.
4
-
5
- ## Environments
6
-
7
- | Environment | Purpose | Deploy Trigger | TTL |
8
- |-------------|---------|----------------|-----|
9
- | preview | Per-component + cross-stack e2e verification | Feature branch | 24h, auto-cleanup |
10
- | staging | Pre-production stack validation | PR merge to main | — |
11
- | production | Live traffic | Release tag + human approval | — |
12
-
13
- ## Stack Topology
14
-
15
- ```yaml
16
- stack:
17
- components:
18
- - id: backend
19
- deploy:
20
- - functions: tcb fn deploy
21
- - db: tcb db migrate
22
- exposes: BACKEND_URL
23
- - id: web
24
- depends_on: [backend]
25
- deploy:
26
- - hosting: tcb hosting deploy --build-env BACKEND_URL=${BACKEND_URL}
27
- consumes: BACKEND_URL
28
- - id: native
29
- depends_on: [backend]
30
- deploy:
31
- - build: build with BACKEND_URL injected
32
- - distribute: upload to internal distribution
33
- consumes: BACKEND_URL
34
- - id: desktop
35
- depends_on: [backend]
36
- deploy:
37
- - build: build with BACKEND_URL injected
38
- - distribute: upload to internal distribution
39
- consumes: BACKEND_URL
40
- - id: wxa
41
- depends_on: [backend]
42
- deploy:
43
- - build: build with BACKEND_URL injected
44
- - distribute: upload to mini-program platform
45
- consumes: BACKEND_URL
46
- - id: mya
47
- depends_on: [backend]
48
- deploy:
49
- - build: build with BACKEND_URL injected
50
- - distribute: upload to mini-program platform
51
- consumes: BACKEND_URL
52
- - id: tta
53
- depends_on: [backend]
54
- deploy:
55
- - build: build with BACKEND_URL injected
56
- - distribute: upload to mini-program platform
57
- consumes: BACKEND_URL
58
- ```
59
-
60
- The `deploy_stack` orchestrator:
61
- 1. Resolves the platform (TCB / Aliyun) from the active provider.
62
- 2. Deploys `backend` first; captures `BACKEND_URL`.
63
- 3. Deploys all client components (`web`, `native`, `desktop`, `wxa`, `mya`, `tta`) in parallel with `BACKEND_URL` injected at build time.
64
- 4. Exposes `STACK_URL` (= `BACKEND_URL` for the gateway) and per-component URLs.
65
-
66
- ## Pipeline
67
-
68
- ```yaml
69
- name: deliver
70
- version: 3.0.0
71
-
72
- stages:
73
- - name: preview
74
- description: Unified stack preview with per-component + cross-stack e2e
75
- steps:
76
- - name: deploy_stack
77
- command: deploy_stack --preview
78
- platform: dynamic # TCB or Aliyun
79
- output:
80
- - name: stack_url
81
- - name: backend_url
82
- - name: web_url
83
- - name: e2e_backend
84
- command: pytest apps/backend/tests/e2e/ --base-url ${BACKEND_URL}
85
- requires: [deploy_stack]
86
- - name: e2e_web
87
- command: pytest apps/web/tests/e2e/ --base-url ${WEB_URL} --api-url ${BACKEND_URL}
88
- requires: [deploy_stack]
89
- - name: e2e_native
90
- command: pytest apps/native/tests/e2e/ --backend-url ${BACKEND_URL}
91
- requires: [deploy_stack]
92
- when: affects contains native
93
- - name: e2e_desktop
94
- command: pytest apps/desktop/tests/e2e/ --backend-url ${BACKEND_URL}
95
- requires: [deploy_stack]
96
- when: affects contains desktop
97
- - name: e2e_wxa
98
- command: pytest apps/wxa/tests/e2e/ --backend-url ${BACKEND_URL}
99
- requires: [deploy_stack]
100
- when: affects contains wxa
101
- - name: e2e_mya
102
- command: pytest apps/mya/tests/e2e/ --backend-url ${BACKEND_URL}
103
- requires: [deploy_stack]
104
- when: affects contains mya
105
- - name: e2e_tta
106
- command: pytest apps/tta/tests/e2e/ --backend-url ${BACKEND_URL}
107
- requires: [deploy_stack]
108
- when: affects contains tta
109
- - name: e2e_cross_stack
110
- command: pytest aidlc/tests/cross-stack/ --stack-url ${STACK_URL}
111
- requires: [e2e_backend, e2e_web, e2e_native, e2e_desktop, e2e_wxa, e2e_mya, e2e_tta]
112
- when: affects contains >= 2 components
113
-
114
- - name: staging
115
- description: Staging stack smoke test
116
- steps:
117
- - name: deploy_stack
118
- command: deploy_stack --env staging
119
- - name: smoke
120
- command: smoke-test ${STACK_URL}
121
- - name: cross_stack
122
- command: pytest aidlc/tests/cross-stack/ --stack-url ${STACK_URL}
123
-
124
- - name: production
125
- description: Stack production deploy with stack BVT
126
- conditions:
127
- branch: main
128
- steps:
129
- - name: approve
130
- command: human-approval-gate
131
- inputs:
132
- - per_component_e2e_reports
133
- - cross_stack_e2e_report
134
- - staging_smoke_report
135
- - aidlc/openspec/changes/{id}/contract-diff.md
136
- - name: deploy_stack
137
- command: deploy_stack --env production
138
- - name: bvt
139
- command: bvt ${PRODUCTION_URL}
140
- timeout: 60s
141
- - name: health_check
142
- command: curl -f ${PRODUCTION_URL}/health
143
- timeout: 30s
144
- - name: archive_contract_diff
145
- command: cp aidlc/openspec/changes/{id}/contract-diff.md aidlc/deploy-artifacts/
146
-
147
- rollback:
148
- triggers:
149
- - condition: BVT failure → automatic stack rollback
150
- - condition: Health check 5xx → automatic stack rollback
151
- - condition: Error rate >1% in 5min → manual stack rollback
152
- action: deploy_stack --rollback ${LAST_STABLE_STACK_VERSION}
153
- scope: stack # all components roll back together (STK-006)
154
- ```
155
-
156
- ## BVT Checklist (Stack)
157
-
158
- Executed after every production deployment. BVT operates on the **stack**, not a single component:
159
-
160
- ```bash
161
- bvt ${PRODUCTION_URL}
162
- # 1. backend /health returns 200 OK
163
- # 2. web home page returns 200 (SSR) or shell loads (SPA)
164
- # 3. native/desktop/mini-program launch probe (deep link resolves against BACKEND_URL)
165
- # 4. Core cross-stack flow (login) succeeds end-to-end
166
- # 5. Database reachable
167
- # 6. Error rate < 0.1%
168
- # 7. Latency p99 < 500ms
169
- # 8. Contract diff archived
170
- ```
171
-
172
- ## Build Config Injection
173
-
174
- All client builds (`web`, `native`, `desktop`, `wxa`, `mya`, `tta`) receive `BACKEND_URL` (and any other stack-level config) at build time. The orchestrator passes the env value; components MUST NOT hardcode URLs (STK-005).
175
-
176
- ```bash
177
- # web
178
- pnpm --filter web build --env BACKEND_URL=$BACKEND_URL
179
-
180
- # native
181
- cd apps/native && BACKEND_URL=$BACKEND_URL pnpm build
182
-
183
- # desktop
184
- cd apps/desktop && BACKEND_URL=$BACKEND_URL pnpm build
185
-
186
- # mini-programs (wxa, mya, tta)
187
- cd apps/wxa && BACKEND_URL=$BACKEND_URL pnpm build
188
- cd apps/mya && BACKEND_URL=$BACKEND_URL pnpm build
189
- cd apps/tta && BACKEND_URL=$BACKEND_URL pnpm build
190
- ```
191
-
192
- ## Component URL Resolution
193
-
194
- Per-platform URL patterns (resolved by `deploy_stack`):
195
-
196
- | Platform | STACK_URL | WEB_URL | NATIVE/DESKTOP distribution | MINI-PROGRAM distribution |
197
- |----------|-----------|---------|---------------------------|---------------------------|
198
- | TCB | `https://{env-id}.tcb-preview.com` | `https://{env-id}-{project}.tcb-preview.com` | internal distribution URL | mini-program preview QR |
199
- | Aliyun | `https://{gateway}.{region}.fc.devs.com` | `https://{bucket}.{region}.oss-website.aliyuncs.com` | internal distribution URL | mini-program preview QR |
package/cdh/__init__.py DELETED
File without changes
package/cdh/__main__.py DELETED
@@ -1,4 +0,0 @@
1
- from cdh.cli import main
2
-
3
- if __name__ == "__main__":
4
- main()
Binary file
Binary file
@@ -1,115 +0,0 @@
1
- """cdh platform MCP injector — injects platform MCPs into engines.
2
-
3
- Strategies (per engine capability):
4
- - env var: Set CDH_SHARED_MCP with JSON-serialized platform MCP configs
5
- - CLI args: Inject via engine-specific CLI flags (--mcp-server name=url)
6
- - config file: Write a temp config that the engine reads at startup
7
-
8
- Name conflict: engine private MCPs win over cdh platform MCPs.
9
- Engines that don't support injection get a silent fallback (INFO log).
10
- """
11
-
12
- from __future__ import annotations
13
-
14
- import json
15
- import logging
16
- import os
17
- from pathlib import Path
18
- from typing import Optional
19
-
20
- import yaml
21
-
22
- logger = logging.getLogger("cdh.mcp.injector")
23
-
24
- CDH_SHARED_MCP_ENV = "CDH_SHARED_MCP"
25
-
26
-
27
- class CdhMcpInjector:
28
- SUPPORTED_ENGINES = {"onecode", "opencode"}
29
-
30
- def __init__(self, platform_mcps_dir: Path | None = None):
31
- from cdh.cdh_mcp_manager import CDH_PLATFORM_MCPS_DIR
32
-
33
- self.platform_mcps_dir = platform_mcps_dir or CDH_PLATFORM_MCPS_DIR
34
-
35
- def inject_env(self) -> None:
36
- """Set CDH_SHARED_MCP env var with platform MCP configs."""
37
- config_path = self.platform_mcps_dir / "mcps.yaml"
38
- if not config_path.exists():
39
- return
40
- try:
41
- data = yaml.safe_load(config_path.read_text()) or {}
42
- os.environ[CDH_SHARED_MCP_ENV] = json.dumps(data)
43
- logger.debug("Set %s with %d MCP servers", CDH_SHARED_MCP_ENV, len(data))
44
- except Exception as e:
45
- logger.warning("Failed to inject platform MCPs via env: %s", e)
46
-
47
- def clear_env(self) -> None:
48
- os.environ.pop(CDH_SHARED_MCP_ENV, None)
49
-
50
- def get_shared_mcp_config(self) -> dict[str, dict]:
51
- raw = os.environ.get(CDH_SHARED_MCP_ENV, "")
52
- if not raw:
53
- return {}
54
- try:
55
- return json.loads(raw)
56
- except json.JSONDecodeError:
57
- logger.warning("Invalid %s value, ignoring", CDH_SHARED_MCP_ENV)
58
- return {}
59
-
60
- def inject_for_engine(
61
- self,
62
- engine_name: str,
63
- engine_mcps_path: Path | None = None,
64
- ) -> Optional[str]:
65
- """Inject platform MCPs for a specific engine.
66
-
67
- Returns an info/warning message, or None if no injection needed.
68
-
69
- For supported engines: sets CDH_SHARED_MCP env var.
70
- For unsupported engines: logs a silent INFO fallback.
71
- """
72
- platform_config = self._load_platform_config()
73
- if not platform_config:
74
- return None
75
-
76
- if engine_name not in self.SUPPORTED_ENGINES:
77
- logger.info(
78
- "Engine '%s' does not support cdh platform MCP injection. "
79
- "Platform MCPs available via %s env var.",
80
- engine_name,
81
- CDH_SHARED_MCP_ENV,
82
- )
83
- return None
84
-
85
- # Merge with engine private (engine wins)
86
- merged = dict(platform_config)
87
- if engine_mcps_path and engine_mcps_path.exists():
88
- try:
89
- engine_data = yaml.safe_load(engine_mcps_path.read_text()) or {}
90
- engine_data = {
91
- k: v for k, v in engine_data.items() if isinstance(v, dict)
92
- }
93
- except Exception:
94
- engine_data = {}
95
- merged.update(engine_data)
96
-
97
- os.environ[CDH_SHARED_MCP_ENV] = json.dumps(merged)
98
- logger.debug(
99
- "Injected %d platform MCPs + %d engine MCPs via %s for '%s'",
100
- len(platform_config),
101
- len(engine_data) if engine_mcps_path and engine_mcps_path.exists() else 0,
102
- CDH_SHARED_MCP_ENV,
103
- engine_name,
104
- )
105
- return f"{len(platform_config)} platform MCP(s) injected for '{engine_name}'"
106
-
107
- def _load_platform_config(self) -> dict[str, dict]:
108
- config_path = self.platform_mcps_dir / "mcps.yaml"
109
- if not config_path.exists():
110
- return {}
111
- try:
112
- data = yaml.safe_load(config_path.read_text()) or {}
113
- return {k: v for k, v in data.items() if isinstance(v, dict)}
114
- except Exception:
115
- return {}
@@ -1,67 +0,0 @@
1
- """cdh platform MCP loader — merges platform MCPs with engine-private MCPs.
2
-
3
- Discovery order:
4
- 1. Read engine-private MCPs from engine's own config (e.g. ~/.onecode/mcps/mcps.yaml)
5
- 2. Read cdh platform MCPs from ~/.cdh/mcps/mcps.yaml
6
- 3. Merge: engine private wins on name conflict
7
- 4. Return merged list for injection
8
- """
9
-
10
- from __future__ import annotations
11
-
12
- import logging
13
- from pathlib import Path
14
-
15
- import yaml
16
-
17
- from cdh.cdh_mcp_manager import CDH_PLATFORM_MCPS_DIR
18
-
19
- logger = logging.getLogger("cdh.mcp.loader")
20
-
21
-
22
- class CdhMcpLoader:
23
- def __init__(self, platform_mcps_dir: Path | None = None):
24
- self.platform_mcps_dir = platform_mcps_dir or CDH_PLATFORM_MCPS_DIR
25
- self._cache: dict[str, dict] | None = None
26
-
27
- def load_platform(self) -> dict[str, dict]:
28
- config_path = self.platform_mcps_dir / "mcps.yaml"
29
- if not config_path.exists():
30
- return {}
31
- try:
32
- data = yaml.safe_load(config_path.read_text()) or {}
33
- return {k: v for k, v in data.items() if isinstance(v, dict)}
34
- except Exception:
35
- logger.warning("Failed to load platform MCP config from %s", config_path)
36
- return {}
37
-
38
- def get_merged(
39
- self, engine_mcps_path: Path | None = None
40
- ) -> list[dict]:
41
- platform = self.load_platform()
42
-
43
- if engine_mcps_path and engine_mcps_path.exists():
44
- try:
45
- engine_data = yaml.safe_load(engine_mcps_path.read_text()) or {}
46
- engine_data = {k: v for k, v in engine_data.items() if isinstance(v, dict)}
47
- except Exception:
48
- engine_data = {}
49
- else:
50
- engine_data = {}
51
-
52
- merged = dict(platform)
53
- merged.update(engine_data)
54
-
55
- return [
56
- {"name": name, **cfg, "source": "engine" if name in engine_data else "platform"}
57
- for name, cfg in merged.items()
58
- ]
59
-
60
- def get_platform_only(self) -> list[dict]:
61
- return [
62
- {"name": name, **cfg, "source": "platform"}
63
- for name, cfg in self.load_platform().items()
64
- ]
65
-
66
- def invalidate_cache(self) -> None:
67
- self._cache = None
@@ -1,73 +0,0 @@
1
- """cdh platform MCP manager — operates ~/.cdh/mcps/.
2
-
3
- This is the cdh platform equivalent of onecode.mcp.manager.MCPManager,
4
- but operates strictly on ~/.cdh/mcps/ (cdh platform shared MCP pool).
5
- Engines (onecode/opencode/claude) read platform MCPs via env var
6
- injection at launch time (see cdh_mcp_injector.py).
7
- """
8
-
9
- from __future__ import annotations
10
-
11
- import logging
12
- from pathlib import Path
13
- from typing import Optional
14
-
15
- import yaml
16
-
17
- logger = logging.getLogger("cdh.mcp")
18
-
19
- CDH_PLATFORM_MCPS_DIR = Path.home() / ".cdh" / "mcps"
20
-
21
-
22
- class CdhMcpManager:
23
- def __init__(self, mcps_dir: Path | None = None):
24
- self.mcps_dir = mcps_dir or CDH_PLATFORM_MCPS_DIR
25
- self.mcps_dir.mkdir(parents=True, exist_ok=True)
26
- self.config_path = self.mcps_dir / "mcps.yaml"
27
- self._data: dict[str, dict] = {}
28
- if self.config_path.exists():
29
- try:
30
- self._data = yaml.safe_load(self.config_path.read_text()) or {}
31
- except Exception:
32
- self._data = {}
33
-
34
- def add(self, name: str, url: str, transport: str = "sse") -> None:
35
- self._data[name] = {"url": url, "transport": transport, "enabled": True}
36
- self._save()
37
-
38
- def add_stdio(self, name: str, command: str, args: list[str] | None = None) -> None:
39
- self._data[name] = {
40
- "command": command,
41
- "args": args or [],
42
- "transport": "stdio",
43
- "enabled": True,
44
- }
45
- self._save()
46
-
47
- def list(self) -> list[dict]:
48
- return [{"name": name, **cfg} for name, cfg in self._data.items()]
49
-
50
- def get(self, name: str) -> Optional[dict]:
51
- return self._data.get(name)
52
-
53
- def enable(self, name: str, enabled: bool = True) -> Optional[str]:
54
- if name not in self._data:
55
- return f"MCP server '{name}' not found"
56
- self._data[name]["enabled"] = enabled
57
- self._save()
58
- return None
59
-
60
- def remove(self, name: str) -> Optional[str]:
61
- if name not in self._data:
62
- return f"MCP server '{name}' not found"
63
- del self._data[name]
64
- self._save()
65
- return None
66
-
67
- def to_dict(self) -> dict[str, dict]:
68
- return dict(self._data)
69
-
70
- def _save(self) -> None:
71
- self.config_path.write_text(
72
- yaml.dump(self._data, default_flow_style=False), encoding="utf-8"
73
- )