@scemoon/cdh 1.0.5 → 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 (551) hide show
  1. package/package.json +2 -2
  2. package/run.js +68 -14
  3. package/ai-dlc-skill/SKILL.md +0 -77
  4. package/ai-dlc-skill/agents/deliver-agent.md +0 -24
  5. package/ai-dlc-skill/agents/master.md +0 -50
  6. package/ai-dlc-skill/agents/plan-agent.md +0 -23
  7. package/ai-dlc-skill/agents/understand-agent.md +0 -23
  8. package/ai-dlc-skill/agents/verify-agent.md +0 -27
  9. package/ai-dlc-skill/architecture/project-structure.md +0 -78
  10. package/ai-dlc-skill/brownfield/README.md +0 -30
  11. package/ai-dlc-skill/brownfield/generate-context.sh +0 -64
  12. package/ai-dlc-skill/brownfield/scripts/deps.sh +0 -27
  13. package/ai-dlc-skill/brownfield/scripts/discover.sh +0 -34
  14. package/ai-dlc-skill/brownfield/scripts/extract-api.sh +0 -45
  15. package/ai-dlc-skill/components/backend.md +0 -34
  16. package/ai-dlc-skill/components/desktop.md +0 -30
  17. package/ai-dlc-skill/components/mya.md +0 -29
  18. package/ai-dlc-skill/components/native.md +0 -30
  19. package/ai-dlc-skill/components/tta.md +0 -29
  20. package/ai-dlc-skill/components/web.md +0 -31
  21. package/ai-dlc-skill/components/wxa.md +0 -29
  22. package/ai-dlc-skill/contracts/README.md +0 -25
  23. package/ai-dlc-skill/core/adaptive-flow.md +0 -36
  24. package/ai-dlc-skill/core/security.md +0 -29
  25. package/ai-dlc-skill/cross-tool/cline/export.sh +0 -31
  26. package/ai-dlc-skill/cross-tool/copilot/export.sh +0 -47
  27. package/ai-dlc-skill/cross-tool/cursor/export.sh +0 -32
  28. package/ai-dlc-skill/cross-tool/export.sh +0 -22
  29. package/ai-dlc-skill/cross-tool/onecode/config.yaml.tpl +0 -17
  30. package/ai-dlc-skill/cross-tool/onecode/export-skills.sh +0 -35
  31. package/ai-dlc-skill/cross-tool/onecode/export.sh +0 -54
  32. package/ai-dlc-skill/phases/deliver/entry.md +0 -26
  33. package/ai-dlc-skill/phases/deliver/lifecycle.md +0 -185
  34. package/ai-dlc-skill/phases/deliver/prompt.md +0 -40
  35. package/ai-dlc-skill/phases/deliver/rules.md +0 -61
  36. package/ai-dlc-skill/phases/plan/entry.md +0 -25
  37. package/ai-dlc-skill/phases/plan/lifecycle.md +0 -204
  38. package/ai-dlc-skill/phases/plan/prompt.md +0 -38
  39. package/ai-dlc-skill/phases/plan/rules.md +0 -25
  40. package/ai-dlc-skill/phases/understand/entry.md +0 -26
  41. package/ai-dlc-skill/phases/understand/lifecycle.md +0 -184
  42. package/ai-dlc-skill/phases/understand/prompt.md +0 -41
  43. package/ai-dlc-skill/phases/understand/rules.md +0 -37
  44. package/ai-dlc-skill/phases/verify/entry.md +0 -26
  45. package/ai-dlc-skill/phases/verify/lifecycle.md +0 -192
  46. package/ai-dlc-skill/phases/verify/prompt.md +0 -43
  47. package/ai-dlc-skill/phases/verify/rules.md +0 -73
  48. package/ai-dlc-skill/practices/bdd.md +0 -91
  49. package/ai-dlc-skill/practices/sdd.md +0 -84
  50. package/ai-dlc-skill/practices/tdd.md +0 -95
  51. package/ai-dlc-skill/providers/README.md +0 -114
  52. package/ai-dlc-skill/providers/aliyun/deployment.yaml +0 -66
  53. package/ai-dlc-skill/providers/aliyun/preview.yaml +0 -84
  54. package/ai-dlc-skill/providers/aliyun/provider.yaml +0 -160
  55. package/ai-dlc-skill/providers/tcb/deployment.yaml +0 -69
  56. package/ai-dlc-skill/providers/tcb/preview.yaml +0 -83
  57. package/ai-dlc-skill/providers/tcb/provider.yaml +0 -172
  58. package/ai-dlc-skill/requirements.md +0 -140
  59. package/ai-dlc-skill/skill.yaml +0 -147
  60. package/ai-dlc-skill/templates/integration/CHANGELOG.md +0 -41
  61. package/ai-dlc-skill/templates/integration/asyncapi.yaml +0 -43
  62. package/ai-dlc-skill/templates/integration/contract-diff.md +0 -63
  63. package/ai-dlc-skill/templates/integration/contract-spec.md +0 -49
  64. package/ai-dlc-skill/templates/integration/openapi.yaml +0 -18
  65. package/ai-dlc-skill/templates/integration/runtime-contract.yaml +0 -36
  66. package/ai-dlc-skill/templates/plan/design.md +0 -49
  67. package/ai-dlc-skill/templates/plan/task-list.md +0 -32
  68. package/ai-dlc-skill/templates/project/README.md +0 -126
  69. package/ai-dlc-skill/templates/project/template.md +0 -119
  70. package/ai-dlc-skill/templates/understand/feature.feature +0 -23
  71. package/ai-dlc-skill/templates/understand/intent.md +0 -29
  72. package/ai-dlc-skill/templates/understand/spec-delta.md +0 -47
  73. package/ai-dlc-skill/templates/verify/test-unit.py +0 -27
  74. package/ai-dlc-skill/walkthrough/collect.sh +0 -50
  75. package/ai-dlc-skill/walkthrough/template.md +0 -54
  76. package/ai-dlc-skill/workflows/ai-dlc.yaml +0 -110
  77. package/ai-dlc-skill/workflows/deployment.yaml +0 -199
  78. package/cdh/__init__.py +0 -0
  79. package/cdh/__main__.py +0 -4
  80. package/cdh/__pycache__/__init__.cpython-314.pyc +0 -0
  81. package/cdh/__pycache__/cdh_mcp_injector.cpython-314.pyc +0 -0
  82. package/cdh/__pycache__/cdh_mcp_loader.cpython-314.pyc +0 -0
  83. package/cdh/__pycache__/cdh_mcp_manager.cpython-314.pyc +0 -0
  84. package/cdh/__pycache__/cdh_session_aggregator.cpython-314.pyc +0 -0
  85. package/cdh/__pycache__/cdh_skill_loader.cpython-314.pyc +0 -0
  86. package/cdh/__pycache__/cdh_skill_manager.cpython-314.pyc +0 -0
  87. package/cdh/__pycache__/cli.cpython-313.pyc +0 -0
  88. package/cdh/__pycache__/cli.cpython-314.pyc +0 -0
  89. package/cdh/__pycache__/scaffold.cpython-314.pyc +0 -0
  90. package/cdh/cdh_mcp_injector.py +0 -115
  91. package/cdh/cdh_mcp_loader.py +0 -67
  92. package/cdh/cdh_mcp_manager.py +0 -73
  93. package/cdh/cdh_session_aggregator.py +0 -258
  94. package/cdh/cdh_skill_manager.py +0 -105
  95. package/cdh/cli.py +0 -758
  96. package/cdh/scaffold.py +0 -728
  97. package/onecode/__init__.py +0 -1
  98. package/onecode/__main__.py +0 -4
  99. package/onecode/__pycache__/__init__.cpython-314.pyc +0 -0
  100. package/onecode/__pycache__/cli.cpython-314.pyc +0 -0
  101. package/onecode/__pycache__/commands.cpython-314.pyc +0 -0
  102. package/onecode/__pycache__/config.cpython-314.pyc +0 -0
  103. package/onecode/__pycache__/config_screen.cpython-314.pyc +0 -0
  104. package/onecode/__pycache__/migrate.cpython-314.pyc +0 -0
  105. package/onecode/agent/__init__.py +0 -0
  106. package/onecode/agent/__pycache__/__init__.cpython-314.pyc +0 -0
  107. package/onecode/agent/__pycache__/cdh_loader.cpython-314.pyc +0 -0
  108. package/onecode/agent/__pycache__/context.cpython-314.pyc +0 -0
  109. package/onecode/agent/__pycache__/engine.cpython-314.pyc +0 -0
  110. package/onecode/agent/__pycache__/hooks.cpython-314.pyc +0 -0
  111. package/onecode/agent/__pycache__/onecode_agent_acp.cpython-314.pyc +0 -0
  112. package/onecode/agent/__pycache__/permissions.cpython-314.pyc +0 -0
  113. package/onecode/agent/__pycache__/permissions_store.cpython-314.pyc +0 -0
  114. package/onecode/agent/__pycache__/project_doc.cpython-314.pyc +0 -0
  115. package/onecode/agent/__pycache__/session.cpython-314.pyc +0 -0
  116. package/onecode/agent/agents/__init__.py +0 -29
  117. package/onecode/agent/agents/__pycache__/__init__.cpython-314.pyc +0 -0
  118. package/onecode/agent/agents/__pycache__/types.cpython-314.pyc +0 -0
  119. package/onecode/agent/agents/types.py +0 -589
  120. package/onecode/agent/attachments.py +0 -112
  121. package/onecode/agent/cdh_loader.py +0 -267
  122. package/onecode/agent/context.py +0 -343
  123. package/onecode/agent/engine.py +0 -2700
  124. package/onecode/agent/hooks.py +0 -86
  125. package/onecode/agent/onecode_agent_acp.py +0 -2743
  126. package/onecode/agent/onecode_agent_acp.py.bak +0 -2447
  127. package/onecode/agent/permissions.py +0 -150
  128. package/onecode/agent/permissions_store.py +0 -62
  129. package/onecode/agent/project_doc.py +0 -19
  130. package/onecode/agent/session.py +0 -195
  131. package/onecode/agent/snapshot.py +0 -144
  132. package/onecode/agent/tools/__init__.py +0 -17
  133. package/onecode/agent/tools/__pycache__/__init__.cpython-314.pyc +0 -0
  134. package/onecode/agent/tools/__pycache__/agent_tools.cpython-314.pyc +0 -0
  135. package/onecode/agent/tools/__pycache__/apply_patch_tool.cpython-314.pyc +0 -0
  136. package/onecode/agent/tools/__pycache__/bash_tool.cpython-314.pyc +0 -0
  137. package/onecode/agent/tools/__pycache__/communication_tools.cpython-314.pyc +0 -0
  138. package/onecode/agent/tools/__pycache__/config_tool.cpython-314.pyc +0 -0
  139. package/onecode/agent/tools/__pycache__/cron_tools.cpython-314.pyc +0 -0
  140. package/onecode/agent/tools/__pycache__/errors.cpython-314.pyc +0 -0
  141. package/onecode/agent/tools/__pycache__/file_ops.cpython-314.pyc +0 -0
  142. package/onecode/agent/tools/__pycache__/file_tools.cpython-314.pyc +0 -0
  143. package/onecode/agent/tools/__pycache__/git_tools.cpython-314.pyc +0 -0
  144. package/onecode/agent/tools/__pycache__/lsp_tools.cpython-314.pyc +0 -0
  145. package/onecode/agent/tools/__pycache__/mcp_tools.cpython-314.pyc +0 -0
  146. package/onecode/agent/tools/__pycache__/permission_handler.cpython-314.pyc +0 -0
  147. package/onecode/agent/tools/__pycache__/permissions.cpython-314.pyc +0 -0
  148. package/onecode/agent/tools/__pycache__/protocol.cpython-314.pyc +0 -0
  149. package/onecode/agent/tools/__pycache__/registry.cpython-314.pyc +0 -0
  150. package/onecode/agent/tools/__pycache__/sandbox.cpython-314.pyc +0 -0
  151. package/onecode/agent/tools/__pycache__/schema_validation.cpython-314.pyc +0 -0
  152. package/onecode/agent/tools/__pycache__/skill_tools.cpython-314.pyc +0 -0
  153. package/onecode/agent/tools/__pycache__/todo_tools.cpython-314.pyc +0 -0
  154. package/onecode/agent/tools/__pycache__/web_tools.cpython-314.pyc +0 -0
  155. package/onecode/agent/tools/agent_tools.py +0 -132
  156. package/onecode/agent/tools/apply_patch_tool.py +0 -138
  157. package/onecode/agent/tools/bash_tool.py +0 -111
  158. package/onecode/agent/tools/communication_tools.py +0 -148
  159. package/onecode/agent/tools/config_tool.py +0 -130
  160. package/onecode/agent/tools/cron_tools.py +0 -178
  161. package/onecode/agent/tools/errors.py +0 -17
  162. package/onecode/agent/tools/file_ops.py +0 -221
  163. package/onecode/agent/tools/file_tools.py +0 -225
  164. package/onecode/agent/tools/git_tools.py +0 -88
  165. package/onecode/agent/tools/lsp_tools.py +0 -404
  166. package/onecode/agent/tools/mcp_tools.py +0 -127
  167. package/onecode/agent/tools/permission_handler.py +0 -46
  168. package/onecode/agent/tools/permissions.py +0 -77
  169. package/onecode/agent/tools/protocol.py +0 -20
  170. package/onecode/agent/tools/registry.py +0 -201
  171. package/onecode/agent/tools/sandbox.py +0 -358
  172. package/onecode/agent/tools/schema_validation.py +0 -100
  173. package/onecode/agent/tools/skill_tools.py +0 -52
  174. package/onecode/agent/tools/todo_tools.py +0 -207
  175. package/onecode/agent/tools/web_tools.py +0 -169
  176. package/onecode/builtin_skills/agent-browser/SKILL.md +0 -212
  177. package/onecode/builtin_skills/agent-browser/skill.yaml +0 -8
  178. package/onecode/builtin_skills/git/SKILL.md +0 -64
  179. package/onecode/builtin_skills/git/skill.yaml +0 -7
  180. package/onecode/builtin_skills/shell/SKILL.md +0 -58
  181. package/onecode/builtin_skills/shell/skill.yaml +0 -8
  182. package/onecode/builtin_skills/skill-creator/SKILL.md +0 -106
  183. package/onecode/builtin_skills/skill-creator/skill.yaml +0 -8
  184. package/onecode/cli.py +0 -935
  185. package/onecode/cloud/__init__.py +0 -0
  186. package/onecode/cloud/base.py +0 -20
  187. package/onecode/codebase/__init__.py +0 -69
  188. package/onecode/codebase/__pycache__/__init__.cpython-314.pyc +0 -0
  189. package/onecode/codebase/__pycache__/chunker.cpython-314.pyc +0 -0
  190. package/onecode/codebase/__pycache__/indexer.cpython-314.pyc +0 -0
  191. package/onecode/codebase/__pycache__/retriever.cpython-314.pyc +0 -0
  192. package/onecode/codebase/__pycache__/storage.cpython-314.pyc +0 -0
  193. package/onecode/codebase/__pycache__/tools.cpython-314.pyc +0 -0
  194. package/onecode/codebase/chunker.py +0 -125
  195. package/onecode/codebase/indexer.py +0 -149
  196. package/onecode/codebase/retriever.py +0 -203
  197. package/onecode/codebase/storage.py +0 -131
  198. package/onecode/codebase/tools.py +0 -59
  199. package/onecode/commands.py +0 -596
  200. package/onecode/config.py +0 -314
  201. package/onecode/config_screen.py +0 -600
  202. package/onecode/cron/__init__.py +0 -3
  203. package/onecode/lsp/__init__.py +0 -3
  204. package/onecode/mcp/__init__.py +0 -4
  205. package/onecode/mcp/__pycache__/__init__.cpython-314.pyc +0 -0
  206. package/onecode/mcp/__pycache__/client.cpython-314.pyc +0 -0
  207. package/onecode/mcp/__pycache__/manager.cpython-314.pyc +0 -0
  208. package/onecode/mcp/client.py +0 -193
  209. package/onecode/mcp/manager.py +0 -190
  210. package/onecode/memory/__init__.py +0 -49
  211. package/onecode/memory/__pycache__/__init__.cpython-314.pyc +0 -0
  212. package/onecode/memory/__pycache__/backend.cpython-314.pyc +0 -0
  213. package/onecode/memory/__pycache__/offload.cpython-314.pyc +0 -0
  214. package/onecode/memory/__pycache__/pyramid.cpython-314.pyc +0 -0
  215. package/onecode/memory/__pycache__/recall.cpython-314.pyc +0 -0
  216. package/onecode/memory/__pycache__/symbolic.cpython-314.pyc +0 -0
  217. package/onecode/memory/backend.py +0 -159
  218. package/onecode/memory/pyramid.py +0 -133
  219. package/onecode/memory/recall.py +0 -203
  220. package/onecode/migrate.py +0 -122
  221. package/onecode/models/__init__.py +0 -4
  222. package/onecode/models/__pycache__/__init__.cpython-314.pyc +0 -0
  223. package/onecode/models/__pycache__/errors.cpython-314.pyc +0 -0
  224. package/onecode/models/__pycache__/messages.cpython-314.pyc +0 -0
  225. package/onecode/models/__pycache__/provider.cpython-314.pyc +0 -0
  226. package/onecode/models/__pycache__/registry.cpython-314.pyc +0 -0
  227. package/onecode/models/errors.py +0 -104
  228. package/onecode/models/messages.py +0 -739
  229. package/onecode/models/provider.py +0 -699
  230. package/onecode/models/providers/__init__.py +0 -17
  231. package/onecode/models/providers/__pycache__/__init__.cpython-314.pyc +0 -0
  232. package/onecode/models/providers/__pycache__/anthropic_provider.cpython-314.pyc +0 -0
  233. package/onecode/models/providers/__pycache__/deepseek_provider.cpython-314.pyc +0 -0
  234. package/onecode/models/providers/__pycache__/glm_provider.cpython-314.pyc +0 -0
  235. package/onecode/models/providers/__pycache__/minimax_provider.cpython-314.pyc +0 -0
  236. package/onecode/models/providers/__pycache__/minimaxi_provider.cpython-314.pyc +0 -0
  237. package/onecode/models/providers/__pycache__/ollama_provider.cpython-314.pyc +0 -0
  238. package/onecode/models/providers/__pycache__/openai_provider.cpython-314.pyc +0 -0
  239. package/onecode/models/providers/anthropic_provider.py +0 -273
  240. package/onecode/models/providers/deepseek_provider.py +0 -212
  241. package/onecode/models/providers/glm_provider.py +0 -195
  242. package/onecode/models/providers/minimax_provider.py +0 -158
  243. package/onecode/models/providers/minimaxi_provider.py +0 -417
  244. package/onecode/models/providers/ollama_provider.py +0 -100
  245. package/onecode/models/providers/openai_provider.py +0 -237
  246. package/onecode/models/registry.py +0 -212
  247. package/onecode/server/__init__.py +0 -3
  248. package/onecode/server/app.py +0 -224
  249. package/onecode/skills/__init__.py +0 -11
  250. package/onecode/skills/__pycache__/__init__.cpython-314.pyc +0 -0
  251. package/onecode/skills/__pycache__/argument_substitution.cpython-314.pyc +0 -0
  252. package/onecode/skills/__pycache__/bootstrap.cpython-314.pyc +0 -0
  253. package/onecode/skills/__pycache__/create.cpython-314.pyc +0 -0
  254. package/onecode/skills/__pycache__/frontmatter.cpython-314.pyc +0 -0
  255. package/onecode/skills/__pycache__/loader.cpython-314.pyc +0 -0
  256. package/onecode/skills/__pycache__/manager.cpython-314.pyc +0 -0
  257. package/onecode/skills/__pycache__/model.cpython-314.pyc +0 -0
  258. package/onecode/skills/argument_substitution.py +0 -38
  259. package/onecode/skills/bootstrap.py +0 -124
  260. package/onecode/skills/create.py +0 -56
  261. package/onecode/skills/frontmatter.py +0 -33
  262. package/onecode/skills/loader.py +0 -139
  263. package/onecode/skills/manager.py +0 -75
  264. package/onecode/skills/model.py +0 -43
  265. package/onecode/storage/__init__.py +0 -0
  266. package/onecode/storage/activity.py +0 -63
  267. package/onecode/storage/project.py +0 -54
  268. package/onecode/storage/session.py +0 -112
  269. package/onecode/tasks/__init__.py +0 -26
  270. package/onecode/tasks/manager.py +0 -232
  271. package/onecode/tasks/models.py +0 -240
  272. package/onecode/trace/__init__.py +0 -0
  273. package/onecode/trace/tracer.py +0 -173
  274. package/onecode/utils/__init__.py +0 -0
  275. package/onecode/utils/helpers.py +0 -20
  276. package/pyproject.toml +0 -74
  277. package/tui/__init__.py +0 -46
  278. package/tui/__main__.py +0 -4
  279. package/tui/__pycache__/__init__.cpython-314.pyc +0 -0
  280. package/tui/__pycache__/_loop.cpython-314.pyc +0 -0
  281. package/tui/__pycache__/_path_fuzzy_search.cpython-314.pyc +0 -0
  282. package/tui/__pycache__/_path_match.cpython-314.pyc +0 -0
  283. package/tui/__pycache__/about.cpython-314.pyc +0 -0
  284. package/tui/__pycache__/agent.cpython-314.pyc +0 -0
  285. package/tui/__pycache__/agent_schema.cpython-314.pyc +0 -0
  286. package/tui/__pycache__/agents.cpython-314.pyc +0 -0
  287. package/tui/__pycache__/answer.cpython-314.pyc +0 -0
  288. package/tui/__pycache__/app.cpython-313.pyc +0 -0
  289. package/tui/__pycache__/app.cpython-314.pyc +0 -0
  290. package/tui/__pycache__/atomic.cpython-314.pyc +0 -0
  291. package/tui/__pycache__/complete.cpython-314.pyc +0 -0
  292. package/tui/__pycache__/constants.cpython-314.pyc +0 -0
  293. package/tui/__pycache__/conversation_markdown.cpython-314.pyc +0 -0
  294. package/tui/__pycache__/danger.cpython-314.pyc +0 -0
  295. package/tui/__pycache__/db.cpython-314.pyc +0 -0
  296. package/tui/__pycache__/dec.cpython-314.pyc +0 -0
  297. package/tui/__pycache__/directory.cpython-314.pyc +0 -0
  298. package/tui/__pycache__/directory_suggester.cpython-314.pyc +0 -0
  299. package/tui/__pycache__/directory_watcher.cpython-314.pyc +0 -0
  300. package/tui/__pycache__/format_path.cpython-314.pyc +0 -0
  301. package/tui/__pycache__/fuzzy.cpython-314.pyc +0 -0
  302. package/tui/__pycache__/fuzzy_index.cpython-314.pyc +0 -0
  303. package/tui/__pycache__/history.cpython-314.pyc +0 -0
  304. package/tui/__pycache__/jsonrpc.cpython-314.pyc +0 -0
  305. package/tui/__pycache__/menus.cpython-314.pyc +0 -0
  306. package/tui/__pycache__/message_log.cpython-314.pyc +0 -0
  307. package/tui/__pycache__/messages.cpython-314.pyc +0 -0
  308. package/tui/__pycache__/path_complete.cpython-314.pyc +0 -0
  309. package/tui/__pycache__/path_filter.cpython-314.pyc +0 -0
  310. package/tui/__pycache__/paths.cpython-314.pyc +0 -0
  311. package/tui/__pycache__/pill.cpython-314.pyc +0 -0
  312. package/tui/__pycache__/platform_commands.cpython-314.pyc +0 -0
  313. package/tui/__pycache__/protocol.cpython-314.pyc +0 -0
  314. package/tui/__pycache__/session_tracker.cpython-314.pyc +0 -0
  315. package/tui/__pycache__/settings.cpython-314.pyc +0 -0
  316. package/tui/__pycache__/settings_schema.cpython-314.pyc +0 -0
  317. package/tui/__pycache__/shell.cpython-314.pyc +0 -0
  318. package/tui/__pycache__/shell_read.cpython-314.pyc +0 -0
  319. package/tui/__pycache__/slash_command.cpython-314.pyc +0 -0
  320. package/tui/__pycache__/version.cpython-314.pyc +0 -0
  321. package/tui/_loop.py +0 -86
  322. package/tui/_path_fuzzy_search.py +0 -48
  323. package/tui/_path_match.py +0 -141
  324. package/tui/about.py +0 -95
  325. package/tui/acp/__pycache__/agent.cpython-314.pyc +0 -0
  326. package/tui/acp/__pycache__/api.cpython-314.pyc +0 -0
  327. package/tui/acp/__pycache__/encode_tool_call_id.cpython-314.pyc +0 -0
  328. package/tui/acp/__pycache__/messages.cpython-314.pyc +0 -0
  329. package/tui/acp/__pycache__/prompt.cpython-314.pyc +0 -0
  330. package/tui/acp/__pycache__/protocol.cpython-314.pyc +0 -0
  331. package/tui/acp/agent.py +0 -1002
  332. package/tui/acp/api.py +0 -73
  333. package/tui/acp/encode_tool_call_id.py +0 -12
  334. package/tui/acp/messages.py +0 -203
  335. package/tui/acp/prompt.py +0 -53
  336. package/tui/acp/protocol.py +0 -499
  337. package/tui/agent.py +0 -70
  338. package/tui/agent_schema.py +0 -76
  339. package/tui/agents.py +0 -46
  340. package/tui/ansi/__init__.py +0 -1
  341. package/tui/ansi/__pycache__/__init__.cpython-314.pyc +0 -0
  342. package/tui/ansi/__pycache__/_ansi.cpython-314.pyc +0 -0
  343. package/tui/ansi/__pycache__/_ansi_colors.cpython-314.pyc +0 -0
  344. package/tui/ansi/__pycache__/_control_codes.cpython-314.pyc +0 -0
  345. package/tui/ansi/__pycache__/_keys.cpython-314.pyc +0 -0
  346. package/tui/ansi/__pycache__/_sgr_styles.cpython-314.pyc +0 -0
  347. package/tui/ansi/__pycache__/_stream_parser.cpython-314.pyc +0 -0
  348. package/tui/ansi/_ansi.py +0 -1689
  349. package/tui/ansi/_ansi_colors.py +0 -264
  350. package/tui/ansi/_control_codes.py +0 -37
  351. package/tui/ansi/_keys.py +0 -251
  352. package/tui/ansi/_sgr_styles.py +0 -64
  353. package/tui/ansi/_stream_parser.py +0 -418
  354. package/tui/answer.py +0 -12
  355. package/tui/app.py +0 -1266
  356. package/tui/atomic.py +0 -37
  357. package/tui/cli.py +0 -313
  358. package/tui/code_analyze.py +0 -27
  359. package/tui/complete.py +0 -38
  360. package/tui/constants.py +0 -61
  361. package/tui/conversation_markdown.py +0 -30
  362. package/tui/danger.py +0 -372
  363. package/tui/data/agents/ampcode.com.toml +0 -52
  364. package/tui/data/agents/augmentcode.com.toml +0 -41
  365. package/tui/data/agents/cdh.cloud-dev-harness.toml +0 -23
  366. package/tui/data/agents/claude.com.toml +0 -41
  367. package/tui/data/agents/copilot.github.com.toml +0 -29
  368. package/tui/data/agents/crowai.dev.toml +0 -36
  369. package/tui/data/agents/cursor.com.toml +0 -38
  370. package/tui/data/agents/deepagents.langchain.com +0 -34
  371. package/tui/data/agents/docker.com.toml +0 -60
  372. package/tui/data/agents/geminicli.com.toml +0 -28
  373. package/tui/data/agents/goose.ai.toml +0 -52
  374. package/tui/data/agents/inference.huggingface.co.toml +0 -41
  375. package/tui/data/agents/kimi.com.toml +0 -35
  376. package/tui/data/agents/kiro.dev.toml +0 -43
  377. package/tui/data/agents/onecode.dev.toml +0 -22
  378. package/tui/data/agents/openai.com.toml +0 -53
  379. package/tui/data/agents/openclaw.ai.toml +0 -37
  380. package/tui/data/agents/opencode.ai.toml +0 -39
  381. package/tui/data/agents/openhands.dev.toml +0 -46
  382. package/tui/data/agents/stakpak.dev.toml +0 -62
  383. package/tui/data/agents/vibe.mistral.ai.toml +0 -31
  384. package/tui/data/agents/vtcode.dev.toml +0 -63
  385. package/tui/data/images/frog.png +0 -0
  386. package/tui/data/sounds/question.wav +0 -0
  387. package/tui/data/sounds/turn-over.wav +0 -0
  388. package/tui/db.py +0 -213
  389. package/tui/dec.py +0 -332
  390. package/tui/directory.py +0 -234
  391. package/tui/directory_suggester.py +0 -93
  392. package/tui/directory_watcher.py +0 -231
  393. package/tui/format_path.py +0 -25
  394. package/tui/fuzzy.py +0 -140
  395. package/tui/fuzzy_index.py +0 -275
  396. package/tui/gist.py +0 -33
  397. package/tui/history.py +0 -138
  398. package/tui/jsonrpc.py +0 -578
  399. package/tui/menus.py +0 -14
  400. package/tui/message_log.py +0 -69
  401. package/tui/messages.py +0 -144
  402. package/tui/option_content.py +0 -51
  403. package/tui/os.py +0 -0
  404. package/tui/path_complete.py +0 -217
  405. package/tui/path_filter.py +0 -124
  406. package/tui/paths.py +0 -87
  407. package/tui/pill.py +0 -23
  408. package/tui/platform_commands.py +0 -52
  409. package/tui/prompt/__pycache__/extract.cpython-314.pyc +0 -0
  410. package/tui/prompt/__pycache__/resource.cpython-314.pyc +0 -0
  411. package/tui/prompt/extract.py +0 -19
  412. package/tui/prompt/resource.py +0 -68
  413. package/tui/protocol.py +0 -28
  414. package/tui/screens/__init__.py +0 -0
  415. package/tui/screens/__pycache__/__init__.cpython-314.pyc +0 -0
  416. package/tui/screens/__pycache__/agent_modal.cpython-314.pyc +0 -0
  417. package/tui/screens/__pycache__/component_picker.cpython-314.pyc +0 -0
  418. package/tui/screens/__pycache__/diff_screen.cpython-314.pyc +0 -0
  419. package/tui/screens/__pycache__/log.cpython-314.pyc +0 -0
  420. package/tui/screens/__pycache__/main.cpython-313.pyc +0 -0
  421. package/tui/screens/__pycache__/main.cpython-314.pyc +0 -0
  422. package/tui/screens/__pycache__/permissions.cpython-314.pyc +0 -0
  423. package/tui/screens/__pycache__/projects_app.cpython-314.pyc +0 -0
  424. package/tui/screens/__pycache__/projects_screen.cpython-314.pyc +0 -0
  425. package/tui/screens/__pycache__/sessions.cpython-314.pyc +0 -0
  426. package/tui/screens/__pycache__/store.cpython-314.pyc +0 -0
  427. package/tui/screens/__pycache__/tool_content_screen.cpython-314.pyc +0 -0
  428. package/tui/screens/action_modal.py +0 -94
  429. package/tui/screens/agent_modal.py +0 -175
  430. package/tui/screens/command_edit_modal.py +0 -74
  431. package/tui/screens/component_picker.py +0 -168
  432. package/tui/screens/diff_screen.py +0 -84
  433. package/tui/screens/log.py +0 -553
  434. package/tui/screens/main.py +0 -385
  435. package/tui/screens/main.tcss +0 -655
  436. package/tui/screens/permissions.py +0 -404
  437. package/tui/screens/permissions.tcss +0 -72
  438. package/tui/screens/projects.tcss +0 -80
  439. package/tui/screens/projects_app.py +0 -347
  440. package/tui/screens/projects_screen.py +0 -284
  441. package/tui/screens/session_resume_modal.py +0 -172
  442. package/tui/screens/session_resume_modal.tcss +0 -35
  443. package/tui/screens/sessions.py +0 -164
  444. package/tui/screens/sessions.tcss +0 -119
  445. package/tui/screens/settings.py +0 -254
  446. package/tui/screens/settings.tcss +0 -101
  447. package/tui/screens/store.py +0 -500
  448. package/tui/screens/store.tcss +0 -274
  449. package/tui/screens/tool_content_screen.py +0 -59
  450. package/tui/session_tracker.py +0 -123
  451. package/tui/settings.py +0 -353
  452. package/tui/settings_schema.py +0 -431
  453. package/tui/shell.py +0 -304
  454. package/tui/shell_read.py +0 -42
  455. package/tui/slash_command.py +0 -34
  456. package/tui/tui.tcss +0 -246
  457. package/tui/twitter.py +0 -38
  458. package/tui/version.py +0 -80
  459. package/tui/visuals/__init__.py +0 -0
  460. package/tui/visuals/__pycache__/__init__.cpython-314.pyc +0 -0
  461. package/tui/visuals/__pycache__/columns.cpython-314.pyc +0 -0
  462. package/tui/visuals/columns.py +0 -272
  463. package/tui/widgets/__init__.py +0 -0
  464. package/tui/widgets/__pycache__/__init__.cpython-314.pyc +0 -0
  465. package/tui/widgets/__pycache__/acp_content.cpython-314.pyc +0 -0
  466. package/tui/widgets/__pycache__/agent_response.cpython-314.pyc +0 -0
  467. package/tui/widgets/__pycache__/agent_thought.cpython-314.pyc +0 -0
  468. package/tui/widgets/__pycache__/ask_user.cpython-314.pyc +0 -0
  469. package/tui/widgets/__pycache__/condensed_path.cpython-314.pyc +0 -0
  470. package/tui/widgets/__pycache__/context_stats.cpython-314.pyc +0 -0
  471. package/tui/widgets/__pycache__/conversation.cpython-314.pyc +0 -0
  472. package/tui/widgets/__pycache__/diff_view.cpython-314.pyc +0 -0
  473. package/tui/widgets/__pycache__/directory_input.cpython-314.pyc +0 -0
  474. package/tui/widgets/__pycache__/flash.cpython-314.pyc +0 -0
  475. package/tui/widgets/__pycache__/future_text.cpython-314.pyc +0 -0
  476. package/tui/widgets/__pycache__/grid_select.cpython-314.pyc +0 -0
  477. package/tui/widgets/__pycache__/highlighted_textarea.cpython-314.pyc +0 -0
  478. package/tui/widgets/__pycache__/load_more.cpython-314.pyc +0 -0
  479. package/tui/widgets/__pycache__/mandelbrot.cpython-314.pyc +0 -0
  480. package/tui/widgets/__pycache__/markdown_note.cpython-314.pyc +0 -0
  481. package/tui/widgets/__pycache__/menu.cpython-314.pyc +0 -0
  482. package/tui/widgets/__pycache__/modified_files.cpython-314.pyc +0 -0
  483. package/tui/widgets/__pycache__/non_selectable_label.cpython-314.pyc +0 -0
  484. package/tui/widgets/__pycache__/note.cpython-314.pyc +0 -0
  485. package/tui/widgets/__pycache__/path_search.cpython-314.pyc +0 -0
  486. package/tui/widgets/__pycache__/plan.cpython-314.pyc +0 -0
  487. package/tui/widgets/__pycache__/project_directory_tree.cpython-314.pyc +0 -0
  488. package/tui/widgets/__pycache__/project_grid_select.cpython-314.pyc +0 -0
  489. package/tui/widgets/__pycache__/project_summary.cpython-314.pyc +0 -0
  490. package/tui/widgets/__pycache__/prompt.cpython-314.pyc +0 -0
  491. package/tui/widgets/__pycache__/question.cpython-314.pyc +0 -0
  492. package/tui/widgets/__pycache__/session_grid_select.cpython-314.pyc +0 -0
  493. package/tui/widgets/__pycache__/session_summary.cpython-314.pyc +0 -0
  494. package/tui/widgets/__pycache__/session_tabs.cpython-314.pyc +0 -0
  495. package/tui/widgets/__pycache__/shell_result.cpython-314.pyc +0 -0
  496. package/tui/widgets/__pycache__/shell_terminal.cpython-314.pyc +0 -0
  497. package/tui/widgets/__pycache__/side_bar.cpython-314.pyc +0 -0
  498. package/tui/widgets/__pycache__/slash_complete.cpython-314.pyc +0 -0
  499. package/tui/widgets/__pycache__/strike_text.cpython-314.pyc +0 -0
  500. package/tui/widgets/__pycache__/subagent.cpython-314.pyc +0 -0
  501. package/tui/widgets/__pycache__/subagent_screen.cpython-314.pyc +0 -0
  502. package/tui/widgets/__pycache__/terminal.cpython-314.pyc +0 -0
  503. package/tui/widgets/__pycache__/throbber.cpython-314.pyc +0 -0
  504. package/tui/widgets/__pycache__/tool_call.cpython-314.pyc +0 -0
  505. package/tui/widgets/__pycache__/user_input.cpython-314.pyc +0 -0
  506. package/tui/widgets/acp_content.py +0 -70
  507. package/tui/widgets/agent_response.py +0 -76
  508. package/tui/widgets/agent_thought.py +0 -167
  509. package/tui/widgets/ask_user.py +0 -264
  510. package/tui/widgets/command_pane.py +0 -223
  511. package/tui/widgets/condensed_path.py +0 -115
  512. package/tui/widgets/context_stats.py +0 -66
  513. package/tui/widgets/conversation.py +0 -2641
  514. package/tui/widgets/danger_warning.py +0 -65
  515. package/tui/widgets/diff_view.py +0 -69
  516. package/tui/widgets/directory_input.py +0 -8
  517. package/tui/widgets/flash.py +0 -81
  518. package/tui/widgets/future_text.py +0 -126
  519. package/tui/widgets/grid_select.py +0 -234
  520. package/tui/widgets/highlighted_textarea.py +0 -180
  521. package/tui/widgets/load_more.py +0 -24
  522. package/tui/widgets/mandelbrot.py +0 -294
  523. package/tui/widgets/markdown_note.py +0 -13
  524. package/tui/widgets/menu.py +0 -147
  525. package/tui/widgets/modified_files.py +0 -306
  526. package/tui/widgets/non_selectable_label.py +0 -5
  527. package/tui/widgets/note.py +0 -18
  528. package/tui/widgets/path_search.py +0 -492
  529. package/tui/widgets/plan.py +0 -285
  530. package/tui/widgets/project_directory_tree.py +0 -102
  531. package/tui/widgets/project_grid_select.py +0 -64
  532. package/tui/widgets/project_summary.py +0 -33
  533. package/tui/widgets/prompt.py +0 -795
  534. package/tui/widgets/question.py +0 -360
  535. package/tui/widgets/session_grid_select.py +0 -230
  536. package/tui/widgets/session_summary.py +0 -115
  537. package/tui/widgets/session_tabs.py +0 -188
  538. package/tui/widgets/shell_result.py +0 -35
  539. package/tui/widgets/shell_terminal.py +0 -40
  540. package/tui/widgets/side_bar.py +0 -124
  541. package/tui/widgets/slash_complete.py +0 -235
  542. package/tui/widgets/strike_text.py +0 -70
  543. package/tui/widgets/subagent.py +0 -287
  544. package/tui/widgets/subagent_screen.py +0 -709
  545. package/tui/widgets/terminal.py +0 -576
  546. package/tui/widgets/terminal_tool.py +0 -360
  547. package/tui/widgets/throbber.py +0 -100
  548. package/tui/widgets/tool_call.py +0 -398
  549. package/tui/widgets/user_input.py +0 -23
  550. package/tui/widgets/version.py +0 -5
  551. package/tui/widgets/welcome.py +0 -31
@@ -1 +0,0 @@
1
- __version__ = "1.0.5"
@@ -1,4 +0,0 @@
1
- from onecode.cli import main
2
-
3
- if __name__ == "__main__":
4
- main()
File without changes
@@ -1,29 +0,0 @@
1
- from onecode.agent.agents.types import (
2
- AgentConfig,
3
- AgentMode,
4
- AgentPermission,
5
- BuildAgent,
6
- PlanAgent,
7
- GeneralAgent,
8
- ExploreAgent,
9
- ScoutAgent,
10
- create_agent,
11
- get_system_prompt,
12
- BUILT_IN_AGENTS,
13
- TOOL_DESCRIPTIONS,
14
- )
15
-
16
- __all__ = [
17
- "AgentConfig",
18
- "AgentMode",
19
- "AgentPermission",
20
- "BuildAgent",
21
- "PlanAgent",
22
- "GeneralAgent",
23
- "ExploreAgent",
24
- "ScoutAgent",
25
- "create_agent",
26
- "get_system_prompt",
27
- "BUILT_IN_AGENTS",
28
- "TOOL_DESCRIPTIONS",
29
- ]
@@ -1,589 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import fnmatch
4
- import re
5
- from dataclasses import dataclass, field
6
- from enum import Enum
7
- from typing import Optional
8
-
9
-
10
- class AgentMode(Enum):
11
- PRIMARY = "primary"
12
- SUBAGENT = "subagent"
13
- ALL = "all"
14
-
15
-
16
- class AgentPermission(Enum):
17
- ALLOW = "allow"
18
- ASK = "ask"
19
- DENY = "deny"
20
-
21
-
22
- @dataclass
23
- class ToolConfig:
24
- name: str
25
- permission: AgentPermission = AgentPermission.ALLOW
26
- patterns: list[str] = field(default_factory=list)
27
-
28
-
29
- @dataclass
30
- class AgentConfig:
31
- name: str
32
- description: str = ""
33
- mode: AgentMode = AgentMode.PRIMARY
34
- temperature: float = 0.3
35
- top_p: Optional[float] = None
36
- model: Optional[str] = None
37
- max_turns: int = 0
38
- steps: int = 0
39
- hidden: bool = False
40
- color: str = ""
41
- permission_edit: AgentPermission = AgentPermission.ALLOW
42
- permission_bash: AgentPermission = AgentPermission.ALLOW
43
- permission_read: AgentPermission = AgentPermission.ALLOW
44
- permission_webfetch: AgentPermission = AgentPermission.ALLOW
45
- permission_websearch: AgentPermission = AgentPermission.DENY
46
- permission_task: AgentPermission = AgentPermission.ALLOW
47
- permission_doom_loop: AgentPermission = AgentPermission.ASK
48
- permission_skill: AgentPermission = AgentPermission.ALLOW
49
- permission_lsp: AgentPermission = AgentPermission.ALLOW
50
- permission_question: AgentPermission = AgentPermission.ALLOW
51
- permission_external_directory: AgentPermission = AgentPermission.DENY
52
- permission_glob: AgentPermission = AgentPermission.ALLOW
53
- permission_grep: AgentPermission = AgentPermission.ALLOW
54
- permission_list: AgentPermission = AgentPermission.ALLOW
55
- permission_todowrite: AgentPermission = AgentPermission.ALLOW
56
- tools: list[str] = field(default_factory=list)
57
- disallowed_tools: list[str] = field(default_factory=list)
58
- prompt_file: str = ""
59
- bash_permissions: dict[str, str] = field(default_factory=dict)
60
-
61
- def get_tools_config(self) -> dict[str, AgentPermission]:
62
- return {
63
- "edit": self.permission_edit,
64
- "bash": self.permission_bash,
65
- "read": self.permission_read,
66
- "webfetch": self.permission_webfetch,
67
- "websearch": self.permission_websearch,
68
- "task": self.permission_task,
69
- "lsp": self.permission_lsp,
70
- "skill": self.permission_skill,
71
- "question": self.permission_question,
72
- "glob": self.permission_glob,
73
- "grep": self.permission_grep,
74
- "list": self.permission_list,
75
- "todowrite": self.permission_todowrite,
76
- "external_directory": self.permission_external_directory,
77
- "doom_loop": self.permission_doom_loop,
78
- }
79
-
80
- def should_ask_for_edit(self) -> bool:
81
- return self.permission_edit == AgentPermission.ASK
82
-
83
- def should_ask_for_bash(self) -> bool:
84
- return self.permission_bash == AgentPermission.ASK
85
-
86
- def tool_allowed(self, tool_name: str) -> bool:
87
- if self.tools:
88
- return tool_name in self.tools
89
- if self.disallowed_tools:
90
- return tool_name not in self.disallowed_tools
91
- return True
92
-
93
- def get_bash_permission(self, command: str) -> AgentPermission:
94
- for pattern, action in self.bash_permissions.items():
95
- if fnmatch.fnmatch(command, pattern) or fnmatch.fnmatch(command.split()[0] if command.split() else "", pattern):
96
- if action == "allow":
97
- return AgentPermission.ALLOW
98
- elif action == "ask":
99
- return AgentPermission.ASK
100
- elif action == "deny":
101
- return AgentPermission.DENY
102
- return self.permission_bash
103
-
104
- def get_effective_max_turns(self) -> int:
105
- if self.steps > 0:
106
- return min(self.steps, self.max_turns) if self.max_turns > 0 else self.steps
107
- return self.max_turns
108
-
109
- def is_hidden(self) -> bool:
110
- return self.hidden
111
-
112
-
113
- class BuildAgent(AgentConfig):
114
- def __init__(self):
115
- super().__init__(
116
- name="build",
117
- description=(
118
- "Full development agent with all tools enabled. Edits and shell "
119
- "commands require user approval. Uses CoT reasoning + ReAct loop "
120
- "with routing by complexity: simple work → TodoCreate, complex "
121
- "work → Spawn subagent."
122
- ),
123
- mode=AgentMode.PRIMARY,
124
- permission_edit=AgentPermission.ASK,
125
- permission_bash=AgentPermission.ASK,
126
- permission_read=AgentPermission.ALLOW,
127
- permission_webfetch=AgentPermission.ALLOW,
128
- permission_websearch=AgentPermission.ALLOW,
129
- max_turns=10,
130
- steps=0,
131
- tools=[],
132
- )
133
-
134
-
135
- class PlanAgent(AgentConfig):
136
- def __init__(self):
137
- super().__init__(
138
- name="plan",
139
- description=(
140
- "Plan mode: CoT + ReAct (思考→行动→观察) agent with hard plan "
141
- "gate. Creates a todo plan first via TodoCreate, presents for "
142
- "user review, then routes execution by complexity: simple todos "
143
- "run directly, complex todos are delegated to Spawn subagents. "
144
- "Human-in-the-loop."
145
- ),
146
- mode=AgentMode.PRIMARY,
147
- permission_edit=AgentPermission.ASK,
148
- permission_bash=AgentPermission.ASK,
149
- permission_read=AgentPermission.ALLOW,
150
- permission_webfetch=AgentPermission.ALLOW,
151
- permission_websearch=AgentPermission.ALLOW,
152
- max_turns=20,
153
- temperature=0.2,
154
- tools=[],
155
- )
156
-
157
-
158
- class SoloAgent(AgentConfig):
159
- def __init__(self):
160
- super().__init__(
161
- name="solo",
162
- description=(
163
- "Independent agent that plans first, then acts with full tool "
164
- "access. Uses CoT reasoning + ReAct loop with routing by "
165
- "complexity: simple work → TodoCreate, complex work → Spawn "
166
- "subagent. Shell commands require user approval."
167
- ),
168
- mode=AgentMode.PRIMARY,
169
- permission_edit=AgentPermission.ALLOW,
170
- permission_bash=AgentPermission.ASK,
171
- permission_read=AgentPermission.ALLOW,
172
- permission_webfetch=AgentPermission.ALLOW,
173
- permission_websearch=AgentPermission.ALLOW,
174
- max_turns=10,
175
- temperature=0.3,
176
- tools=[],
177
- )
178
-
179
-
180
- class GeneralAgent(AgentConfig):
181
- def __init__(self):
182
- super().__init__(
183
- name="general",
184
- description=(
185
- "General-purpose subagent for complex multi-step tasks. Executes "
186
- "focused work delegated by parent agent via Spawn tool. Uses "
187
- "CoT + ReAct internally."
188
- ),
189
- mode=AgentMode.SUBAGENT,
190
- permission_edit=AgentPermission.ALLOW,
191
- permission_bash=AgentPermission.ALLOW,
192
- permission_read=AgentPermission.ALLOW,
193
- permission_task=AgentPermission.DENY,
194
- permission_question=AgentPermission.ALLOW,
195
- disallowed_tools=["Spawn", "Agent", "AskUser", "TodoCreate", "TodoGet", "TodoList", "TodoUpdate", "TodoOutput", "TodoStop", "TodoClear"],
196
- )
197
-
198
-
199
- class ExploreAgent(AgentConfig):
200
- def __init__(self):
201
- super().__init__(
202
- name="explore",
203
- description="Fast read-only agent for exploring codebases",
204
- mode=AgentMode.SUBAGENT,
205
- permission_edit=AgentPermission.DENY,
206
- permission_bash=AgentPermission.DENY,
207
- permission_read=AgentPermission.ALLOW,
208
- permission_task=AgentPermission.DENY,
209
- permission_question=AgentPermission.DENY,
210
- disallowed_tools=["Spawn", "Agent", "AskUser", "TodoCreate", "TodoGet", "TodoList", "TodoUpdate", "TodoOutput", "TodoStop", "TodoClear"],
211
- hidden=True,
212
- )
213
-
214
-
215
- class ScoutAgent(AgentConfig):
216
- def __init__(self):
217
- super().__init__(
218
- name="scout",
219
- description="Read-only agent for external docs and dependency research",
220
- mode=AgentMode.SUBAGENT,
221
- permission_edit=AgentPermission.DENY,
222
- permission_bash=AgentPermission.DENY,
223
- permission_read=AgentPermission.ALLOW,
224
- permission_webfetch=AgentPermission.ALLOW,
225
- permission_websearch=AgentPermission.ALLOW,
226
- permission_task=AgentPermission.DENY,
227
- permission_question=AgentPermission.DENY,
228
- disallowed_tools=["Spawn", "Agent", "AskUser", "TodoCreate", "TodoGet", "TodoList", "TodoUpdate", "TodoOutput", "TodoStop", "TodoClear"],
229
- hidden=True,
230
- )
231
-
232
-
233
- class CompactionAgent(AgentConfig):
234
- def __init__(self):
235
- super().__init__(
236
- name="compaction",
237
- description="System agent that compacts long context into a smaller summary",
238
- mode=AgentMode.PRIMARY,
239
- permission_edit=AgentPermission.DENY,
240
- permission_bash=AgentPermission.DENY,
241
- permission_read=AgentPermission.ALLOW,
242
- permission_webfetch=AgentPermission.DENY,
243
- permission_websearch=AgentPermission.DENY,
244
- permission_task=AgentPermission.DENY,
245
- permission_skill=AgentPermission.DENY,
246
- hidden=True,
247
- temperature=0.1,
248
- tools=["read"],
249
- )
250
-
251
-
252
- class TitleAgent(AgentConfig):
253
- def __init__(self):
254
- super().__init__(
255
- name="title",
256
- description="System agent that generates short session titles",
257
- mode=AgentMode.PRIMARY,
258
- permission_edit=AgentPermission.DENY,
259
- permission_bash=AgentPermission.DENY,
260
- permission_read=AgentPermission.ALLOW,
261
- permission_webfetch=AgentPermission.DENY,
262
- permission_websearch=AgentPermission.DENY,
263
- permission_task=AgentPermission.DENY,
264
- permission_skill=AgentPermission.DENY,
265
- hidden=True,
266
- temperature=0.1,
267
- max_turns=1,
268
- tools=["read"],
269
- )
270
-
271
-
272
- class SummaryAgent(AgentConfig):
273
- def __init__(self):
274
- super().__init__(
275
- name="summary",
276
- description="System agent that creates session summaries",
277
- mode=AgentMode.PRIMARY,
278
- permission_edit=AgentPermission.DENY,
279
- permission_bash=AgentPermission.DENY,
280
- permission_read=AgentPermission.ALLOW,
281
- permission_webfetch=AgentPermission.DENY,
282
- permission_websearch=AgentPermission.DENY,
283
- permission_task=AgentPermission.DENY,
284
- permission_skill=AgentPermission.DENY,
285
- hidden=True,
286
- temperature=0.1,
287
- max_turns=2,
288
- tools=["read"],
289
- )
290
-
291
-
292
- BUILT_IN_AGENTS = {
293
- "build": BuildAgent,
294
- "plan": PlanAgent,
295
- "solo": SoloAgent,
296
- "general": GeneralAgent,
297
- "explore": ExploreAgent,
298
- "scout": ScoutAgent,
299
- "compaction": CompactionAgent,
300
- "title": TitleAgent,
301
- "summary": SummaryAgent,
302
- }
303
-
304
-
305
- def create_agent(agent_type: str) -> AgentConfig:
306
- agent_cls = BUILT_IN_AGENTS.get(agent_type)
307
- if agent_cls:
308
- return agent_cls()
309
- return BuildAgent()
310
-
311
-
312
- def get_agent_by_name(name: str) -> Optional[AgentConfig]:
313
- agent_cls = BUILT_IN_AGENTS.get(name)
314
- if agent_cls:
315
- return agent_cls()
316
- return None
317
-
318
-
319
- SUBAGENT_CONSTRAINTS = """
320
- ### Constraints (subagent)
321
- You are running as a subagent spawned by a parent agent via the Spawn tool.
322
- - You CANNOT spawn subagents (Spawn tool is disabled).
323
- - You CANNOT execute batched tool calls (Agent tool is disabled).
324
- - You CANNOT manage todos (all Todo* tools are disabled). The parent owns the shared plan.
325
- - You CANNOT interact with the user (AskUser is disabled).
326
- - You are a leaf node in the agent hierarchy. Execute the task in your prompt
327
- and return a structured SUMMARY/CHANGES/EVIDENCE/RISKS/BLOCKERS response.
328
- - Do not narrate "I will now..." in visible text; all reasoning in <thinking>.
329
- """
330
-
331
-
332
- def get_system_prompt(agent_type: str) -> str:
333
- agent = create_agent(agent_type)
334
- lines = [
335
- f"You are {agent.name}.",
336
- agent.description,
337
- ]
338
-
339
- if agent.should_ask_for_edit():
340
- lines.append("- File edits require user approval")
341
- if agent.should_ask_for_bash():
342
- lines.append("- Shell commands require user approval")
343
-
344
- if agent.mode == AgentMode.SUBAGENT:
345
- lines.append(SUBAGENT_CONSTRAINTS)
346
-
347
- return "\n".join(lines)
348
-
349
-
350
- TOOL_DESCRIPTIONS = """
351
- ## Available Tools
352
-
353
- ### Tool Call Format (REQUIRED)
354
-
355
- To call one or more tools in a single assistant turn, emit the structured
356
- ``<minimax:tool_call>`` block. Each tool call goes inside an
357
- ``<invoke name="ToolName">`` element with one or more
358
- ``<parameter name="arg">value</parameter>`` children. You may put multiple
359
- ``<invoke>`` blocks inside a single ``<minimax:tool_call>`` to run them in
360
- parallel.
361
-
362
- ```xml
363
- <minimax:tool_call>
364
- <invoke name="Read">
365
- <parameter name="path">SPEC.md</parameter>
366
- </invoke>
367
- <invoke name="Bash">
368
- <parameter name="command">ls -la</parameter>
369
- <parameter name="timeout">30</parameter>
370
- </invoke>
371
- </minimax:tool_call>
372
- ```
373
-
374
- Rules:
375
- - The outer wrapper is **always** ``<minimax:tool_call>...</minimax:tool_call>``.
376
- - Parameter values are written **inline** (no JSON encoding).
377
- - Escape only the five XML predefined entities: ``&lt;`` ``&gt;`` ``&amp;``
378
- ``&quot;`` ``&apos;`` — do not invent new escapes.
379
- - You may emit multiple tool calls in one block; the engine will execute
380
- them in document order.
381
- - Do NOT use bare ``{tool => "X", args => {...}}`` or
382
- ``[TOOL_CALL]...[/TOOL_CALL]`` formats — those are legacy and will be
383
- parsed only as a fallback for old session replays.
384
-
385
- ### File Operations
386
- - **Read**: read(path, offset=0, limit=0) - Read file contents. Returns content with line numbers.
387
- - **Write**: write(path, content) - Create or overwrite file with content.
388
- - **Edit**: edit(path, old_string, new_string) - Replace exact string in file. **CRITICAL**: old_string must be UNIQUE in the file — provide enough context (surrounding lines) to guarantee a single match. The edit WILL FAIL if old_string appears multiple times.
389
- - **Insert**: insert(path, line, text) - Insert text at a specific line. line=-1 for beginning, line=0 to insert after line 0, etc. Must read file first to verify target location.
390
- - **UndoEdit**: undo_edit(path) - Undo the most recent Edit/Insert on a file. Restores previous content.
391
- - **Glob**: glob(pattern) - Find files matching a glob pattern (e.g., "**/*.py").
392
- - **Grep**: grep(pattern, include=None) - Search for regex pattern in files.
393
- - **List**: list(path=".") - List directory contents.
394
- - **ApplyPatch**: apply_patch(patch) - Apply a patch file. Supports Add/Update/Move/Delete File markers.
395
-
396
- ### Shell
397
- - **Bash**: bash(command, timeout=60) - Execute shell command. Returns stdout/stderr.
398
-
399
- ### Web
400
- - **WebFetch**: webfetch(url, prompt) - Fetch URL content and extract info.
401
- - **WebSearch**: websearch(query) - Search the web and return results.
402
-
403
- ### Agent
404
- - **Spawn**: spawn(agent_type, prompt) - Delegate execution of a complex todo to a specialized subagent (isolated context). Use for multi-file/multi-step work. Then TodoUpdate(status="completed").
405
- - **Agent**: agent(calls, stop_on_error=True) - Execute a batch of tool calls as an atomic step. Each call includes {name, input}. Halts on first error when stop_on_error is true.
406
- - **ToolSearch**: tool_search(query) - Search for available tools by keyword.
407
- - **CodebaseSearch**: codebase_search(query, top_k=5) - Search the indexed codebase for code relevant to a query. Returns code chunks with file paths and line numbers. Use this to find relevant code before making changes.
408
- - **Skill**: skill(name) - Load skill by name.
409
-
410
- ### Communication
411
- - **SendMessage**: send_message(message, attachments=[]) - Send a user-visible message during execution. Use to communicate status updates, findings, or results.
412
-
413
- ### Human Interaction
414
- - **AskUser**: ask_user(question, context="", options=[]) - Ask the user a question. Use when you need:
415
- - Approval before modifying or creating files (when permission_edit is ASK)
416
- - Clarification on ambiguous requirements
417
- - Confirmation before destructive operations
418
- - Any time you need human input to continue
419
-
420
- When asking for confirmation or a simple choice, **always provide `options`** with predefined choices instead of free-text input. Each option supports:
421
- - `label` (str, required): Display text shown to the user
422
- - `value` (str, required): Value returned when selected
423
- - `key` (str, optional): Single-character keyboard shortcut (e.g. "y", "n", "1")
424
- - `default` (bool, optional): Auto-select if user doesn't respond (set on at most one option)
425
-
426
- Examples:
427
- ```
428
- # Confirmation with options
429
- ask_user(
430
- question="Please confirm SPEC.md is correct?",
431
- options=[
432
- {"label": "✓ Confirm", "value": "confirmed", "key": "y", "default": true},
433
- {"label": "✗ Needs changes", "value": "needs_changes", "key": "n"},
434
- ]
435
- )
436
-
437
- # Multiple choice
438
- ask_user(
439
- question="Which environment to deploy?",
440
- options=[
441
- {"label": "1. Development", "value": "dev", "key": "1"},
442
- {"label": "2. Staging", "value": "staging", "key": "2", "default": true},
443
- {"label": "3. Production", "value": "prod", "key": "3"},
444
- ]
445
- )
446
- ```
447
-
448
- ### Skills (CDH)
449
- - **Skill**: skill(name, arguments=[]) - Run a registered skill by name. Skills are markdown-based instruction sets with YAML frontmatter.
450
-
451
- ### MCP (CDH)
452
- - **MCPTool**: mcp_tool(server, tool, arguments) - Call a tool on a connected MCP server.
453
- - **MCPResources**: mcp_resources(server, action, uri) - List or read resources on a connected MCP server.
454
-
455
- ### LSP (CDH)
456
- - **LSP**: lsp(command, file_path, action, line, character, query) - Get code intelligence from a Language Server. Supported actions: diagnostics, gotoDefinition, findReferences, hover, documentSymbol, workspaceSymbol, gotoImplementation, callHierarchy, incomingCalls, outgoingCalls.
457
-
458
- ### Cron (CDH)
459
- - **CronCreate**: cron_create(name, interval_seconds, command) - Create a scheduled cron job.
460
- - **CronList**: cron_list() - List all cron jobs.
461
- - **CronRemove**: cron_remove(name) - Remove a cron job.
462
-
463
- ### Git (CDH)
464
- - **Worktree**: worktree(action, path, branch) - Manage git worktrees: create, list, prune.
465
-
466
- ### Config (CDH)
467
- - **ConfigRead**: config_read(key) - Read configuration values.
468
- - **ConfigWrite**: config_write(key, value) - Set allowed configuration values (does NOT expose secrets).
469
-
470
- ### Planning (Todo) & Delegation (Spawn)
471
- - **TodoCreate**: todo_create(subject, description, activeForm="", metadata={}) - Create a todo (plan item). ALL tasks use TodoCreate; persisted to .cdh/todos.json and mirrored to sidebar Plan. Returns todo id.
472
- - **TodoGet**: todo_get(taskId) - Retrieve a todo by ID.
473
- - **TodoList**: todo_list() - List all todos with status, owner, and blockers.
474
- - **TodoUpdate**: todo_update(taskId, subject, description, activeForm, status, owner, addBlocks, addBlockedBy, metadata, output) - Update todo fields, status, and dependencies.
475
- - **TodoOutput**: todo_output(taskId) - Get output from a todo.
476
- - **TodoStop**: todo_stop(taskId) - Stop a running todo.
477
- - **TodoClear**: todo_clear() - Clear ALL todos and start a fresh blank plan.
478
- - **Spawn**: spawn(agent_type, prompt) - Delegate EXECUTION of a complex todo to a specialized subagent (isolated context). Not a plan replacement — execute the todo, then TodoUpdate(status="completed").
479
- """
480
-
481
- def filter_tool_descriptions(
482
- allowlist: list[str] | None = None,
483
- denylist: list[str] | None = None,
484
- ) -> str:
485
- """Return TOOL_DESCRIPTIONS filtered to only show the allowed tools.
486
-
487
- When *allowlist* is non-empty, only those tool names are shown.
488
- When *denylist* is non-empty, those tool names are hidden (their
489
- description lines are removed, but category headers are kept).
490
- If both are empty, the full tool list is returned.
491
- """
492
- if not allowlist and not denylist:
493
- return TOOL_DESCRIPTIONS
494
-
495
- _TOOL_LINE_RE = re.compile(r'^- \*\*([^*]+)\*\*:')
496
-
497
- lines = TOOL_DESCRIPTIONS.split("\n")
498
- result_lines: list[str] = []
499
- skip_this_line = False
500
-
501
- for line in lines:
502
- m = _TOOL_LINE_RE.match(line.lstrip())
503
- if m:
504
- tool_name = m.group(1).strip()
505
- if allowlist:
506
- skip_this_line = tool_name not in allowlist
507
- elif denylist:
508
- skip_this_line = tool_name in denylist
509
- else:
510
- skip_this_line = False
511
- else:
512
- skip_this_line = False
513
-
514
- if not skip_this_line:
515
- result_lines.append(line)
516
-
517
- return "\n".join(result_lines)
518
-
519
-
520
- REACT_WORKFLOW = """
521
- ## Workflow: 思考 → Todo → 行动 (per-Round)
522
-
523
- Each round: `<thinking>` → Todo ops → tool execution → TodoUpdate.
524
- Tool results from the previous round are already in context — review them
525
- at the start of `<thinking>`. No separate "Observation" step is needed.
526
-
527
- ### Round Structure
528
-
529
- **思考** (inside `<thinking>`):
530
- 1. Review: what did the last round's tools produce? Any errors to address?
531
- 2. Progress: which todos are done, which are pending?
532
- 3. Decide: what is the single next action? Pick: direct tool or `Spawn`?
533
-
534
- **Todo** (before acting):
535
- - No todo for this work? → `TodoCreate` first.
536
- - Todo exists? → advance it (`in_progress`).
537
- - Completed work? → `TodoUpdate(status="completed")` immediately.
538
- - Do NOT mark a todo as completed unless its work was actually executed.
539
-
540
- **行动** (execute):
541
- - Simple (1 tool, 1 file) → call the tool directly.
542
- - Complex (multi-step/research) → `Spawn(agent_type, prompt)` to delegate.
543
- - Spawn executes a todo — it does not replace one.
544
-
545
- ### Routing
546
- - Every task = a `TodoCreate`. No work without a todo.
547
- - `Spawn` = execution delegation for complex todos only.
548
- """
549
-
550
- PLAN_GATE_HARD = """
551
- ### plan mode: hard gate
552
- Execution tools (Write/Edit/Insert/ApplyPatch/Bash) are BLOCKED until a todo plan exists.
553
- Create ALL todos upfront with `TodoCreate`, present for user review, then execute.
554
- """
555
-
556
- PLAN_GATE_SOFT = """
557
- ### build/solo mode: soft gate
558
- Execution is allowed but planning is encouraged. Create todos first via `TodoCreate`.
559
- """
560
-
561
- COMPACTION_INSTRUCTIONS = """
562
- ## Context Compaction
563
-
564
- You are a compaction agent. Your job is to summarize the conversation history into a concise format that preserves key information while minimizing token usage.
565
-
566
- Output a summary with these sections:
567
- - **Summary**: Brief overview of what has been discussed/accomplished
568
- - **Key Decisions**: Important choices made and their rationale
569
- - **Remaining Tasks**: What still needs to be done
570
- - **Context Needed**: Information required to continue the work
571
-
572
- Keep each section concise. Use bullet points where possible.
573
- """
574
-
575
- TITLE_INSTRUCTIONS = """
576
- Generate a short, descriptive title (max 5 words) for this conversation.
577
- The title should capture the main topic or task being worked on.
578
- Only output the title, nothing else.
579
- """
580
-
581
- SUMMARY_INSTRUCTIONS = """
582
- Create a summary of this conversation session. Include:
583
- - What was the user trying to accomplish
584
- - What was done
585
- - What was the outcome
586
- - Any important notes for future sessions
587
-
588
- Keep it concise but informative.
589
- """