@scemoon/cdh 1.0.9 → 1.0.10-beta.1

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 (786) hide show
  1. package/package.json +9 -2
  2. package/ai-dlc-skill/SKILL.md +0 -106
  3. package/ai-dlc-skill/architecture/project-structure.md +0 -78
  4. package/ai-dlc-skill/brownfield/README.md +0 -36
  5. package/ai-dlc-skill/brownfield/entry.md +0 -45
  6. package/ai-dlc-skill/brownfield/generate-context.sh +0 -64
  7. package/ai-dlc-skill/brownfield/scripts/deps.sh +0 -27
  8. package/ai-dlc-skill/brownfield/scripts/discover.sh +0 -34
  9. package/ai-dlc-skill/brownfield/scripts/extract-api.sh +0 -45
  10. package/ai-dlc-skill/components/backend.md +0 -47
  11. package/ai-dlc-skill/components/desktop.md +0 -63
  12. package/ai-dlc-skill/components/mya.md +0 -219
  13. package/ai-dlc-skill/components/native.md +0 -73
  14. package/ai-dlc-skill/components/tta.md +0 -235
  15. package/ai-dlc-skill/components/web.md +0 -77
  16. package/ai-dlc-skill/components/wxa.md +0 -219
  17. package/ai-dlc-skill/contracts/README.md +0 -25
  18. package/ai-dlc-skill/core/adaptive-flow.md +0 -107
  19. package/ai-dlc-skill/core/security.md +0 -29
  20. package/ai-dlc-skill/core/task-registry.md +0 -153
  21. package/ai-dlc-skill/cross-tool/README.md +0 -20
  22. package/ai-dlc-skill/cross-tool/cline/export.sh +0 -38
  23. package/ai-dlc-skill/cross-tool/copilot/export.sh +0 -41
  24. package/ai-dlc-skill/cross-tool/cursor/export.sh +0 -53
  25. package/ai-dlc-skill/cross-tool/onecode/export.sh +0 -27
  26. package/ai-dlc-skill/cross-tool/opencode/export.sh +0 -38
  27. package/ai-dlc-skill/phases/debug/entry.md +0 -48
  28. package/ai-dlc-skill/phases/debug/lifecycle.md +0 -284
  29. package/ai-dlc-skill/phases/deliver/entry.md +0 -35
  30. package/ai-dlc-skill/phases/deliver/lifecycle.md +0 -185
  31. package/ai-dlc-skill/phases/deliver/prompt.md +0 -54
  32. package/ai-dlc-skill/phases/deliver/rules.md +0 -61
  33. package/ai-dlc-skill/phases/plan/design_system/accessibility.md +0 -268
  34. package/ai-dlc-skill/phases/plan/design_system/atomic_design.md +0 -341
  35. package/ai-dlc-skill/phases/plan/design_system/component_spec.md +0 -398
  36. package/ai-dlc-skill/phases/plan/design_system/design_tokens.md +0 -190
  37. package/ai-dlc-skill/phases/plan/design_system/iconography.md +0 -299
  38. package/ai-dlc-skill/phases/plan/design_system/platform_ui/desktop.md +0 -318
  39. package/ai-dlc-skill/phases/plan/design_system/platform_ui/mya.md +0 -354
  40. package/ai-dlc-skill/phases/plan/design_system/platform_ui/native.md +0 -328
  41. package/ai-dlc-skill/phases/plan/design_system/platform_ui/tta.md +0 -394
  42. package/ai-dlc-skill/phases/plan/design_system/platform_ui/web.md +0 -287
  43. package/ai-dlc-skill/phases/plan/design_system/platform_ui/wxa.md +0 -374
  44. package/ai-dlc-skill/phases/plan/design_system/theme_system.md +0 -318
  45. package/ai-dlc-skill/phases/plan/entry.md +0 -33
  46. package/ai-dlc-skill/phases/plan/lifecycle.md +0 -260
  47. package/ai-dlc-skill/phases/plan/prompt.md +0 -75
  48. package/ai-dlc-skill/phases/plan/rules.md +0 -60
  49. package/ai-dlc-skill/phases/understand/entry.md +0 -36
  50. package/ai-dlc-skill/phases/understand/lifecycle.md +0 -184
  51. package/ai-dlc-skill/phases/understand/prompt.md +0 -58
  52. package/ai-dlc-skill/phases/understand/rules.md +0 -49
  53. package/ai-dlc-skill/phases/verify/config/base_url.md +0 -65
  54. package/ai-dlc-skill/phases/verify/entry.md +0 -59
  55. package/ai-dlc-skill/phases/verify/gates/browser_e2e.md +0 -96
  56. package/ai-dlc-skill/phases/verify/lifecycle.md +0 -217
  57. package/ai-dlc-skill/phases/verify/prompt.md +0 -73
  58. package/ai-dlc-skill/phases/verify/rules.md +0 -91
  59. package/ai-dlc-skill/phases/verify/runners/playwright_local.md +0 -103
  60. package/ai-dlc-skill/practices/bdd.md +0 -119
  61. package/ai-dlc-skill/practices/sdd.md +0 -84
  62. package/ai-dlc-skill/practices/tdd.md +0 -128
  63. package/ai-dlc-skill/providers/README.md +0 -114
  64. package/ai-dlc-skill/providers/aliyun/SKILL.md +0 -204
  65. package/ai-dlc-skill/providers/aliyun/api/rest-api.md +0 -214
  66. package/ai-dlc-skill/providers/aliyun/api/sdk.md +0 -307
  67. package/ai-dlc-skill/providers/aliyun/best-practices/database-design.md +0 -363
  68. package/ai-dlc-skill/providers/aliyun/best-practices/function-design.md +0 -424
  69. package/ai-dlc-skill/providers/aliyun/best-practices/troubleshooting.md +0 -258
  70. package/ai-dlc-skill/providers/aliyun/cli/database.md +0 -263
  71. package/ai-dlc-skill/providers/aliyun/cli/functions.md +0 -263
  72. package/ai-dlc-skill/providers/aliyun/cli/hosting.md +0 -226
  73. package/ai-dlc-skill/providers/aliyun/cli/setup.md +0 -235
  74. package/ai-dlc-skill/providers/aliyun/cli/storage.md +0 -315
  75. package/ai-dlc-skill/providers/aliyun/deployment.yaml +0 -66
  76. package/ai-dlc-skill/providers/aliyun/integration/ci-cd.md +0 -288
  77. package/ai-dlc-skill/providers/aliyun/preview.yaml +0 -84
  78. package/ai-dlc-skill/providers/aliyun/provider.yaml +0 -160
  79. package/ai-dlc-skill/providers/aliyun/security/authentication.md +0 -254
  80. package/ai-dlc-skill/providers/aliyun/services/cdn-hosting.md +0 -220
  81. package/ai-dlc-skill/providers/aliyun/services/database.md +0 -319
  82. package/ai-dlc-skill/providers/aliyun/services/function-compute.md +0 -273
  83. package/ai-dlc-skill/providers/aliyun/services/overview.md +0 -163
  84. package/ai-dlc-skill/providers/aliyun/services/serverless-app-engine.md +0 -266
  85. package/ai-dlc-skill/providers/aliyun/services/storage.md +0 -269
  86. package/ai-dlc-skill/providers/tcb/SKILL.md +0 -208
  87. package/ai-dlc-skill/providers/tcb/api/rest-api.md +0 -338
  88. package/ai-dlc-skill/providers/tcb/api/sdk.md +0 -288
  89. package/ai-dlc-skill/providers/tcb/best-practices/database-design.md +0 -452
  90. package/ai-dlc-skill/providers/tcb/best-practices/function-design.md +0 -502
  91. package/ai-dlc-skill/providers/tcb/best-practices/troubleshooting.md +0 -462
  92. package/ai-dlc-skill/providers/tcb/cli/cls.md +0 -133
  93. package/ai-dlc-skill/providers/tcb/cli/database.md +0 -230
  94. package/ai-dlc-skill/providers/tcb/cli/env.md +0 -207
  95. package/ai-dlc-skill/providers/tcb/cli/functions.md +0 -276
  96. package/ai-dlc-skill/providers/tcb/cli/hosting.md +0 -219
  97. package/ai-dlc-skill/providers/tcb/cli/setup.md +0 -218
  98. package/ai-dlc-skill/providers/tcb/cli/storage.md +0 -233
  99. package/ai-dlc-skill/providers/tcb/deployment.yaml +0 -111
  100. package/ai-dlc-skill/providers/tcb/integration/ci-cd.md +0 -309
  101. package/ai-dlc-skill/providers/tcb/integration/mcp-server.md +0 -371
  102. package/ai-dlc-skill/providers/tcb/preview.yaml +0 -83
  103. package/ai-dlc-skill/providers/tcb/provider.yaml +0 -172
  104. package/ai-dlc-skill/providers/tcb/security/authentication.md +0 -241
  105. package/ai-dlc-skill/providers/tcb/services/cloud-database.md +0 -299
  106. package/ai-dlc-skill/providers/tcb/services/cloud-functions.md +0 -265
  107. package/ai-dlc-skill/providers/tcb/services/cloud-hosting.md +0 -264
  108. package/ai-dlc-skill/providers/tcb/services/cloud-run.md +0 -285
  109. package/ai-dlc-skill/providers/tcb/services/cloud-storage.md +0 -245
  110. package/ai-dlc-skill/providers/tcb/services/overview.md +0 -174
  111. package/ai-dlc-skill/pybdd/README.md +0 -41
  112. package/ai-dlc-skill/pybdd/conftest.py +0 -17
  113. package/ai-dlc-skill/pybdd/example/auth/login.feature +0 -32
  114. package/ai-dlc-skill/pybdd/pytest.ini +0 -5
  115. package/ai-dlc-skill/pybdd/steps/.gitkeep +0 -1
  116. package/ai-dlc-skill/pybdd/steps/test_example_steps.py +0 -65
  117. package/ai-dlc-skill/requirements.md +0 -140
  118. package/ai-dlc-skill/skill.yaml +0 -135
  119. package/ai-dlc-skill/templates/brownfield/context.md +0 -78
  120. package/ai-dlc-skill/templates/integration/CHANGELOG.md +0 -41
  121. package/ai-dlc-skill/templates/integration/asyncapi.yaml +0 -43
  122. package/ai-dlc-skill/templates/integration/contract-diff.md +0 -63
  123. package/ai-dlc-skill/templates/integration/contract-spec.md +0 -49
  124. package/ai-dlc-skill/templates/integration/openapi.yaml +0 -18
  125. package/ai-dlc-skill/templates/integration/runtime-contract.yaml +0 -36
  126. package/ai-dlc-skill/templates/plan/design.md +0 -49
  127. package/ai-dlc-skill/templates/plan/task-list.md +0 -32
  128. package/ai-dlc-skill/templates/project/README.md +0 -126
  129. package/ai-dlc-skill/templates/project/template.md +0 -119
  130. package/ai-dlc-skill/templates/understand/feature.feature +0 -30
  131. package/ai-dlc-skill/templates/understand/intent.md +0 -29
  132. package/ai-dlc-skill/templates/understand/spec-delta.md +0 -47
  133. package/ai-dlc-skill/templates/verify/test-unit.py +0 -27
  134. package/ai-dlc-skill/walkthrough/collect.sh +0 -50
  135. package/ai-dlc-skill/walkthrough/template.md +0 -54
  136. package/cdh/__init__.py +0 -0
  137. package/cdh/__main__.py +0 -4
  138. package/cdh/__pycache__/__init__.cpython-314.pyc +0 -0
  139. package/cdh/__pycache__/cli.cpython-314.pyc +0 -0
  140. package/cdh/__pycache__/cli_logging.cpython-314.pyc +0 -0
  141. package/cdh/__pycache__/config.cpython-314.pyc +0 -0
  142. package/cdh/__pycache__/project_loader.cpython-314.pyc +0 -0
  143. package/cdh/__pycache__/scaffold.cpython-314.pyc +0 -0
  144. package/cdh/__pycache__/session_store.cpython-314.pyc +0 -0
  145. package/cdh/cdh_session_aggregator.py +0 -258
  146. package/cdh/cli.py +0 -3000
  147. package/cdh/cli_logging.py +0 -45
  148. package/cdh/config.py +0 -28
  149. package/cdh/event_loop/__init__.py +0 -7
  150. package/cdh/event_loop/bus.py +0 -123
  151. package/cdh/event_loop/events.py +0 -25
  152. package/cdh/event_loop/runner.py +0 -28
  153. package/cdh/event_loop/scheduler.py +0 -158
  154. package/cdh/generators/__init__.py +0 -35
  155. package/cdh/generators/_runtime.py +0 -176
  156. package/cdh/generators/ada/MANIFEST.toml +0 -14
  157. package/cdh/generators/ada/template.ads.tmpl +0 -7
  158. package/cdh/generators/bash/MANIFEST.toml +0 -14
  159. package/cdh/generators/bash/template.sh.tmpl +0 -16
  160. package/cdh/generators/builtin_index.json +0 -590
  161. package/cdh/generators/c/MANIFEST.toml +0 -14
  162. package/cdh/generators/c/template.h.tmpl +0 -20
  163. package/cdh/generators/cli.py +0 -379
  164. package/cdh/generators/clojure/MANIFEST.toml +0 -14
  165. package/cdh/generators/clojure/template.clj.tmpl +0 -13
  166. package/cdh/generators/cobol/MANIFEST.toml +0 -14
  167. package/cdh/generators/cobol/template.cbl.tmpl +0 -14
  168. package/cdh/generators/cpp/MANIFEST.toml +0 -14
  169. package/cdh/generators/cpp/template.hpp.tmpl +0 -32
  170. package/cdh/generators/crystal/MANIFEST.toml +0 -14
  171. package/cdh/generators/crystal/template.cr.tmpl +0 -11
  172. package/cdh/generators/csharp/MANIFEST.toml +0 -23
  173. package/cdh/generators/csharp/template.cs.tmpl +0 -14
  174. package/cdh/generators/cython/MANIFEST.toml +0 -14
  175. package/cdh/generators/cython/template.pyx.tmpl +0 -17
  176. package/cdh/generators/d/MANIFEST.toml +0 -14
  177. package/cdh/generators/d/template.d.tmpl +0 -24
  178. package/cdh/generators/dart/MANIFEST.toml +0 -17
  179. package/cdh/generators/dart/template.dart.tmpl +0 -27
  180. package/cdh/generators/elixir/MANIFEST.toml +0 -17
  181. package/cdh/generators/elixir/template.ex.tmpl +0 -27
  182. package/cdh/generators/elm/MANIFEST.toml +0 -14
  183. package/cdh/generators/elm/template.elm.tmpl +0 -20
  184. package/cdh/generators/erlang/MANIFEST.toml +0 -14
  185. package/cdh/generators/erlang/template.erl.tmpl +0 -18
  186. package/cdh/generators/fortran/MANIFEST.toml +0 -14
  187. package/cdh/generators/fortran/template.f90.tmpl +0 -24
  188. package/cdh/generators/fsharp/MANIFEST.toml +0 -14
  189. package/cdh/generators/fsharp/template.fs.tmpl +0 -17
  190. package/cdh/generators/go/MANIFEST.toml +0 -18
  191. package/cdh/generators/go/imports.go.tmpl +0 -3
  192. package/cdh/generators/go/template.go.tmpl +0 -9
  193. package/cdh/generators/graphql-schema/MANIFEST.toml +0 -18
  194. package/cdh/generators/graphql-schema/template.graphqls.tmpl +0 -12
  195. package/cdh/generators/groovy/MANIFEST.toml +0 -14
  196. package/cdh/generators/groovy/template.groovy.tmpl +0 -28
  197. package/cdh/generators/hack/MANIFEST.toml +0 -14
  198. package/cdh/generators/hack/template.hh.tmpl +0 -24
  199. package/cdh/generators/haskell/MANIFEST.toml +0 -14
  200. package/cdh/generators/haskell/template.hs.tmpl +0 -20
  201. package/cdh/generators/haxe/MANIFEST.toml +0 -14
  202. package/cdh/generators/haxe/template.hx.tmpl +0 -20
  203. package/cdh/generators/idris/MANIFEST.toml +0 -14
  204. package/cdh/generators/idris/template.idr.tmpl +0 -22
  205. package/cdh/generators/java/MANIFEST.toml +0 -18
  206. package/cdh/generators/java/template.java.tmpl +0 -13
  207. package/cdh/generators/julia/MANIFEST.toml +0 -14
  208. package/cdh/generators/julia/template.jl.tmpl +0 -27
  209. package/cdh/generators/kotlin/MANIFEST.toml +0 -18
  210. package/cdh/generators/kotlin/template.kt.tmpl +0 -12
  211. package/cdh/generators/lua/MANIFEST.toml +0 -14
  212. package/cdh/generators/lua/template.lua.tmpl +0 -27
  213. package/cdh/generators/matlab/MANIFEST.toml +0 -14
  214. package/cdh/generators/matlab/template.m.tmpl +0 -26
  215. package/cdh/generators/nim/MANIFEST.toml +0 -14
  216. package/cdh/generators/nim/template.nim.tmpl +0 -12
  217. package/cdh/generators/nix/MANIFEST.toml +0 -14
  218. package/cdh/generators/nix/template.nix.tmpl +0 -8
  219. package/cdh/generators/objective-c/MANIFEST.toml +0 -14
  220. package/cdh/generators/objective-c/template.m.tmpl +0 -31
  221. package/cdh/generators/ocaml/MANIFEST.toml +0 -14
  222. package/cdh/generators/ocaml/template.ml.tmpl +0 -13
  223. package/cdh/generators/pascal/MANIFEST.toml +0 -14
  224. package/cdh/generators/pascal/template.pas.tmpl +0 -5
  225. package/cdh/generators/perl/MANIFEST.toml +0 -14
  226. package/cdh/generators/perl/template.pm.tmpl +0 -27
  227. package/cdh/generators/php/MANIFEST.toml +0 -17
  228. package/cdh/generators/php/template.php.tmpl +0 -31
  229. package/cdh/generators/powershell/MANIFEST.toml +0 -14
  230. package/cdh/generators/powershell/template.ps1.tmpl +0 -20
  231. package/cdh/generators/protobuf/MANIFEST.toml +0 -18
  232. package/cdh/generators/protobuf/template.proto.tmpl +0 -13
  233. package/cdh/generators/python/MANIFEST.toml +0 -18
  234. package/cdh/generators/python/template.py.tmpl +0 -12
  235. package/cdh/generators/r/MANIFEST.toml +0 -14
  236. package/cdh/generators/r/template.R.tmpl +0 -29
  237. package/cdh/generators/racket/MANIFEST.toml +0 -14
  238. package/cdh/generators/racket/template.rkt.tmpl +0 -15
  239. package/cdh/generators/registry.py +0 -211
  240. package/cdh/generators/ruby/MANIFEST.toml +0 -17
  241. package/cdh/generators/ruby/template.rb.tmpl +0 -27
  242. package/cdh/generators/rust/MANIFEST.toml +0 -18
  243. package/cdh/generators/rust/template.rs.tmpl +0 -16
  244. package/cdh/generators/scala/MANIFEST.toml +0 -20
  245. package/cdh/generators/scala/template.scala.tmpl +0 -13
  246. package/cdh/generators/scheme/MANIFEST.toml +0 -14
  247. package/cdh/generators/scheme/template.scm.tmpl +0 -16
  248. package/cdh/generators/solidity/MANIFEST.toml +0 -14
  249. package/cdh/generators/solidity/template.sol.tmpl +0 -24
  250. package/cdh/generators/swift/MANIFEST.toml +0 -18
  251. package/cdh/generators/swift/template.swift.tmpl +0 -10
  252. package/cdh/generators/typescript/MANIFEST.toml +0 -18
  253. package/cdh/generators/typescript/template.ts.tmpl +0 -7
  254. package/cdh/generators/version.py +0 -214
  255. package/cdh/generators/zig/MANIFEST.toml +0 -14
  256. package/cdh/generators/zig/template.zig.tmpl +0 -20
  257. package/cdh/logging.py +0 -314
  258. package/cdh/optimizer/__init__.py +0 -7
  259. package/cdh/optimizer/loop.py +0 -201
  260. package/cdh/optimizer/mutation.py +0 -85
  261. package/cdh/optimizer/reward.py +0 -51
  262. package/cdh/optimizer/tracker.py +0 -118
  263. package/cdh/project_loader.py +0 -1022
  264. package/cdh/rules/patterns.yaml +0 -132
  265. package/cdh/rules/spectral.yaml +0 -301
  266. package/cdh/scaffold.py +0 -1436
  267. package/cdh/session_store.py +0 -221
  268. package/cdh/state_schema.py +0 -127
  269. package/cdh/tools/__init__.py +0 -57
  270. package/cdh/tools/cls_search.py +0 -406
  271. package/cdh/tools/contract_diff.py +0 -644
  272. package/cdh/tools/deploy_stack.py +0 -590
  273. package/cdh/tools/generate_shared.py +0 -300
  274. package/cdh/tools/iac_gen.py +0 -224
  275. package/cdh/tools/otel_export.py +0 -125
  276. package/cdh/tools/pattern_detect.py +0 -451
  277. package/cdh/tools/retrofit_labels.py +0 -505
  278. package/cdh/trace/__init__.py +0 -101
  279. package/cdh/trace/__pycache__/__init__.cpython-314.pyc +0 -0
  280. package/cdh/trace/dashboard/__init__.py +0 -61
  281. package/cdh/trace/dashboard/api.py +0 -1032
  282. package/cdh/trace/dashboard/app.html +0 -1321
  283. package/cdh/trace/dashboard/server.py +0 -310
  284. package/cdh/trace/otel_exporter.py +0 -462
  285. package/cdh/trace/otel_tracer.py +0 -281
  286. package/cdh/tui.py +0 -1084
  287. package/cdh/validators/__init__.py +0 -16
  288. package/cdh/validators/__pycache__/__init__.cpython-314.pyc +0 -0
  289. package/cdh/validators/__pycache__/bdd.cpython-314.pyc +0 -0
  290. package/cdh/validators/__pycache__/dag.cpython-314.pyc +0 -0
  291. package/cdh/validators/__pycache__/ears.cpython-314.pyc +0 -0
  292. package/cdh/validators/__pycache__/fr_namespace.cpython-314.pyc +0 -0
  293. package/cdh/validators/bdd.py +0 -144
  294. package/cdh/validators/dag.py +0 -179
  295. package/cdh/validators/ears.py +0 -452
  296. package/cdh/validators/fr_namespace.py +0 -143
  297. package/cdh/validators/spectral.py +0 -475
  298. package/cdh/verification/__init__.py +0 -3
  299. package/cdh/verification/aggregation.py +0 -53
  300. package/cdh/verification/gates/__init__.py +0 -5
  301. package/cdh/verification/gates/base.py +0 -18
  302. package/cdh/verification/gates/lint_gate.py +0 -37
  303. package/cdh/verification/gates/test_gate.py +0 -41
  304. package/cdh/verification/loop.py +0 -93
  305. package/cdh/verification/policy.py +0 -24
  306. package/onecode/__init__.py +0 -1
  307. package/onecode/__main__.py +0 -4
  308. package/onecode/__pycache__/__init__.cpython-314.pyc +0 -0
  309. package/onecode/__pycache__/cli.cpython-314.pyc +0 -0
  310. package/onecode/__pycache__/commands.cpython-314.pyc +0 -0
  311. package/onecode/__pycache__/config.cpython-314.pyc +0 -0
  312. package/onecode/__pycache__/migrate.cpython-314.pyc +0 -0
  313. package/onecode/agent/__init__.py +0 -0
  314. package/onecode/agent/__pycache__/__init__.cpython-314.pyc +0 -0
  315. package/onecode/agent/__pycache__/cdh_loader.cpython-314.pyc +0 -0
  316. package/onecode/agent/__pycache__/checkpoint.cpython-314.pyc +0 -0
  317. package/onecode/agent/__pycache__/context.cpython-314.pyc +0 -0
  318. package/onecode/agent/__pycache__/engine.cpython-314.pyc +0 -0
  319. package/onecode/agent/__pycache__/hooks.cpython-314.pyc +0 -0
  320. package/onecode/agent/__pycache__/onecode_agent_acp.cpython-314.pyc +0 -0
  321. package/onecode/agent/__pycache__/permissions.cpython-314.pyc +0 -0
  322. package/onecode/agent/__pycache__/permissions_store.cpython-314.pyc +0 -0
  323. package/onecode/agent/__pycache__/project_doc.cpython-314.pyc +0 -0
  324. package/onecode/agent/__pycache__/session.cpython-314.pyc +0 -0
  325. package/onecode/agent/__pycache__/turn_record.cpython-314.pyc +0 -0
  326. package/onecode/agent/agents/__init__.py +0 -29
  327. package/onecode/agent/agents/__pycache__/__init__.cpython-314.pyc +0 -0
  328. package/onecode/agent/agents/__pycache__/types.cpython-314.pyc +0 -0
  329. package/onecode/agent/agents/prompts/build-agent.md +0 -50
  330. package/onecode/agent/agents/prompts/compaction-instructions.md +0 -12
  331. package/onecode/agent/agents/prompts/explore-agent.md +0 -42
  332. package/onecode/agent/agents/prompts/plan-agent.md +0 -44
  333. package/onecode/agent/agents/prompts/plan-gate-hard.md +0 -4
  334. package/onecode/agent/agents/prompts/plan-gate-soft.md +0 -3
  335. package/onecode/agent/agents/prompts/solo-agent.md +0 -57
  336. package/onecode/agent/agents/prompts/subagent-constraints.md +0 -10
  337. package/onecode/agent/agents/prompts/summary-instructions.md +0 -7
  338. package/onecode/agent/agents/prompts/title-instructions.md +0 -3
  339. package/onecode/agent/agents/prompts/tool-descriptions.md +0 -129
  340. package/onecode/agent/agents/types.py +0 -786
  341. package/onecode/agent/attachments.py +0 -112
  342. package/onecode/agent/cdh_loader.py +0 -3
  343. package/onecode/agent/checkpoint.py +0 -285
  344. package/onecode/agent/context.py +0 -465
  345. package/onecode/agent/engine.py +0 -3547
  346. package/onecode/agent/event_bridge.py +0 -75
  347. package/onecode/agent/hooks.py +0 -86
  348. package/onecode/agent/onecode_agent_acp.py +0 -2993
  349. package/onecode/agent/permissions.py +0 -150
  350. package/onecode/agent/permissions_store.py +0 -73
  351. package/onecode/agent/project_doc.py +0 -19
  352. package/onecode/agent/question_detect.py +0 -230
  353. package/onecode/agent/session.py +0 -3
  354. package/onecode/agent/snapshot.py +0 -144
  355. package/onecode/agent/tools/__init__.py +0 -17
  356. package/onecode/agent/tools/__pycache__/__init__.cpython-314.pyc +0 -0
  357. package/onecode/agent/tools/__pycache__/agent_tools.cpython-314.pyc +0 -0
  358. package/onecode/agent/tools/__pycache__/apply_patch_tool.cpython-314.pyc +0 -0
  359. package/onecode/agent/tools/__pycache__/bash_tool.cpython-314.pyc +0 -0
  360. package/onecode/agent/tools/__pycache__/communication_tools.cpython-314.pyc +0 -0
  361. package/onecode/agent/tools/__pycache__/config_tool.cpython-314.pyc +0 -0
  362. package/onecode/agent/tools/__pycache__/cron_tools.cpython-314.pyc +0 -0
  363. package/onecode/agent/tools/__pycache__/errors.cpython-314.pyc +0 -0
  364. package/onecode/agent/tools/__pycache__/file_ops.cpython-314.pyc +0 -0
  365. package/onecode/agent/tools/__pycache__/file_tools.cpython-314.pyc +0 -0
  366. package/onecode/agent/tools/__pycache__/git_tools.cpython-314.pyc +0 -0
  367. package/onecode/agent/tools/__pycache__/lsp_tools.cpython-314.pyc +0 -0
  368. package/onecode/agent/tools/__pycache__/mcp_tools.cpython-314.pyc +0 -0
  369. package/onecode/agent/tools/__pycache__/permission_handler.cpython-314.pyc +0 -0
  370. package/onecode/agent/tools/__pycache__/permissions.cpython-314.pyc +0 -0
  371. package/onecode/agent/tools/__pycache__/protocol.cpython-314.pyc +0 -0
  372. package/onecode/agent/tools/__pycache__/registry.cpython-314.pyc +0 -0
  373. package/onecode/agent/tools/__pycache__/sandbox.cpython-314.pyc +0 -0
  374. package/onecode/agent/tools/__pycache__/schema_validation.cpython-314.pyc +0 -0
  375. package/onecode/agent/tools/__pycache__/skill_tools.cpython-314.pyc +0 -0
  376. package/onecode/agent/tools/__pycache__/todo_tools.cpython-314.pyc +0 -0
  377. package/onecode/agent/tools/__pycache__/web_tools.cpython-314.pyc +0 -0
  378. package/onecode/agent/tools/agent_tools.py +0 -128
  379. package/onecode/agent/tools/apply_patch_tool.py +0 -138
  380. package/onecode/agent/tools/bash_tool.py +0 -121
  381. package/onecode/agent/tools/communication_tools.py +0 -154
  382. package/onecode/agent/tools/config_tool.py +0 -130
  383. package/onecode/agent/tools/cron_tools.py +0 -178
  384. package/onecode/agent/tools/errors.py +0 -17
  385. package/onecode/agent/tools/file_ops.py +0 -221
  386. package/onecode/agent/tools/file_tools.py +0 -225
  387. package/onecode/agent/tools/git_tools.py +0 -88
  388. package/onecode/agent/tools/lsp_tools.py +0 -404
  389. package/onecode/agent/tools/mcp_tools.py +0 -211
  390. package/onecode/agent/tools/permission_handler.py +0 -46
  391. package/onecode/agent/tools/permissions.py +0 -77
  392. package/onecode/agent/tools/protocol.py +0 -20
  393. package/onecode/agent/tools/registry.py +0 -210
  394. package/onecode/agent/tools/sandbox.py +0 -460
  395. package/onecode/agent/tools/schema_validation.py +0 -100
  396. package/onecode/agent/tools/skill_tools.py +0 -52
  397. package/onecode/agent/tools/todo_tools.py +0 -208
  398. package/onecode/agent/tools/web_tools.py +0 -530
  399. package/onecode/agent/turn_record.py +0 -28
  400. package/onecode/builtin_skills/agent-browser/SKILL.md +0 -212
  401. package/onecode/builtin_skills/agent-browser/skill.yaml +0 -8
  402. package/onecode/builtin_skills/cloudbase/SKILL.md +0 -162
  403. package/onecode/builtin_skills/cloudbase/skill.yaml +0 -7
  404. package/onecode/builtin_skills/git/SKILL.md +0 -64
  405. package/onecode/builtin_skills/git/skill.yaml +0 -7
  406. package/onecode/builtin_skills/shell/SKILL.md +0 -58
  407. package/onecode/builtin_skills/shell/skill.yaml +0 -8
  408. package/onecode/builtin_skills/skill-creator/SKILL.md +0 -106
  409. package/onecode/builtin_skills/skill-creator/skill.yaml +0 -8
  410. package/onecode/cli.py +0 -1325
  411. package/onecode/codebase/__init__.py +0 -69
  412. package/onecode/codebase/__pycache__/__init__.cpython-314.pyc +0 -0
  413. package/onecode/codebase/__pycache__/chunker.cpython-314.pyc +0 -0
  414. package/onecode/codebase/__pycache__/indexer.cpython-314.pyc +0 -0
  415. package/onecode/codebase/__pycache__/retriever.cpython-314.pyc +0 -0
  416. package/onecode/codebase/__pycache__/storage.cpython-314.pyc +0 -0
  417. package/onecode/codebase/__pycache__/tools.cpython-314.pyc +0 -0
  418. package/onecode/codebase/chunker.py +0 -125
  419. package/onecode/codebase/indexer.py +0 -154
  420. package/onecode/codebase/retriever.py +0 -240
  421. package/onecode/codebase/storage.py +0 -153
  422. package/onecode/codebase/tools.py +0 -59
  423. package/onecode/commands.py +0 -673
  424. package/onecode/config.py +0 -539
  425. package/onecode/config_screen.py +0 -486
  426. package/onecode/cron/__init__.py +0 -3
  427. package/onecode/lsp/__init__.py +0 -3
  428. package/onecode/mcp/__init__.py +0 -11
  429. package/onecode/mcp/__pycache__/__init__.cpython-314.pyc +0 -0
  430. package/onecode/mcp/__pycache__/client.cpython-314.pyc +0 -0
  431. package/onecode/mcp/__pycache__/cloudbase.cpython-314.pyc +0 -0
  432. package/onecode/mcp/__pycache__/config.cpython-314.pyc +0 -0
  433. package/onecode/mcp/__pycache__/manager.cpython-314.pyc +0 -0
  434. package/onecode/mcp/__pycache__/oauth.cpython-314.pyc +0 -0
  435. package/onecode/mcp/client.py +0 -305
  436. package/onecode/mcp/cloudbase.py +0 -188
  437. package/onecode/mcp/config.py +0 -363
  438. package/onecode/mcp/manager.py +0 -603
  439. package/onecode/mcp/oauth.py +0 -199
  440. package/onecode/memory/__init__.py +0 -106
  441. package/onecode/memory/__pycache__/__init__.cpython-314.pyc +0 -0
  442. package/onecode/memory/__pycache__/backend.cpython-314.pyc +0 -0
  443. package/onecode/memory/__pycache__/pyramid.cpython-314.pyc +0 -0
  444. package/onecode/memory/__pycache__/recall.cpython-314.pyc +0 -0
  445. package/onecode/memory/backend.py +0 -179
  446. package/onecode/memory/pyramid.py +0 -145
  447. package/onecode/memory/recall.py +0 -322
  448. package/onecode/migrate.py +0 -122
  449. package/onecode/models/__init__.py +0 -4
  450. package/onecode/models/__pycache__/__init__.cpython-314.pyc +0 -0
  451. package/onecode/models/__pycache__/errors.cpython-314.pyc +0 -0
  452. package/onecode/models/__pycache__/messages.cpython-314.pyc +0 -0
  453. package/onecode/models/__pycache__/ollama_manager.cpython-314.pyc +0 -0
  454. package/onecode/models/__pycache__/provider.cpython-314.pyc +0 -0
  455. package/onecode/models/__pycache__/registry.cpython-314.pyc +0 -0
  456. package/onecode/models/errors.py +0 -104
  457. package/onecode/models/messages.py +0 -750
  458. package/onecode/models/ollama_manager.py +0 -167
  459. package/onecode/models/provider.py +0 -730
  460. package/onecode/models/providers/__init__.py +0 -17
  461. package/onecode/models/providers/__pycache__/__init__.cpython-314.pyc +0 -0
  462. package/onecode/models/providers/__pycache__/anthropic_provider.cpython-314.pyc +0 -0
  463. package/onecode/models/providers/__pycache__/deepseek_provider.cpython-314.pyc +0 -0
  464. package/onecode/models/providers/__pycache__/glm_provider.cpython-314.pyc +0 -0
  465. package/onecode/models/providers/__pycache__/minimax_provider.cpython-314.pyc +0 -0
  466. package/onecode/models/providers/__pycache__/minimaxi_provider.cpython-314.pyc +0 -0
  467. package/onecode/models/providers/__pycache__/ollama_provider.cpython-314.pyc +0 -0
  468. package/onecode/models/providers/__pycache__/openai_provider.cpython-314.pyc +0 -0
  469. package/onecode/models/providers/anthropic_provider.py +0 -286
  470. package/onecode/models/providers/deepseek_provider.py +0 -221
  471. package/onecode/models/providers/glm_provider.py +0 -219
  472. package/onecode/models/providers/minimax_provider.py +0 -182
  473. package/onecode/models/providers/minimaxi_provider.py +0 -426
  474. package/onecode/models/providers/ollama_provider.py +0 -183
  475. package/onecode/models/providers/openai_provider.py +0 -234
  476. package/onecode/models/registry.py +0 -349
  477. package/onecode/server/__init__.py +0 -3
  478. package/onecode/server/app.py +0 -251
  479. package/onecode/skills/__init__.py +0 -11
  480. package/onecode/skills/__pycache__/__init__.cpython-314.pyc +0 -0
  481. package/onecode/skills/__pycache__/argument_substitution.cpython-314.pyc +0 -0
  482. package/onecode/skills/__pycache__/bootstrap.cpython-314.pyc +0 -0
  483. package/onecode/skills/__pycache__/create.cpython-314.pyc +0 -0
  484. package/onecode/skills/__pycache__/frontmatter.cpython-314.pyc +0 -0
  485. package/onecode/skills/__pycache__/loader.cpython-314.pyc +0 -0
  486. package/onecode/skills/__pycache__/model.cpython-314.pyc +0 -0
  487. package/onecode/skills/argument_substitution.py +0 -38
  488. package/onecode/skills/bootstrap.py +0 -37
  489. package/onecode/skills/create.py +0 -56
  490. package/onecode/skills/frontmatter.py +0 -33
  491. package/onecode/skills/loader.py +0 -215
  492. package/onecode/skills/manager.py +0 -75
  493. package/onecode/skills/model.py +0 -43
  494. package/onecode/storage/__init__.py +0 -0
  495. package/onecode/storage/activity.py +0 -63
  496. package/onecode/storage/project.py +0 -54
  497. package/onecode/storage/session.py +0 -112
  498. package/onecode/tasks/__init__.py +0 -26
  499. package/onecode/tasks/manager.py +0 -232
  500. package/onecode/tasks/models.py +0 -240
  501. package/onecode/trace/__init__.py +0 -0
  502. package/onecode/trace/tracer.py +0 -173
  503. package/onecode/utils/__init__.py +0 -0
  504. package/onecode/utils/helpers.py +0 -20
  505. package/onecode/verification/__init__.py +0 -5
  506. package/onecode/verification/__pycache__/__init__.cpython-314.pyc +0 -0
  507. package/onecode/verification/__pycache__/aggregation.cpython-314.pyc +0 -0
  508. package/onecode/verification/__pycache__/loop.cpython-314.pyc +0 -0
  509. package/onecode/verification/__pycache__/policy.cpython-314.pyc +0 -0
  510. package/onecode/verification/aggregation.py +0 -53
  511. package/onecode/verification/gates/__init__.py +0 -6
  512. package/onecode/verification/gates/__pycache__/__init__.cpython-314.pyc +0 -0
  513. package/onecode/verification/gates/__pycache__/base.cpython-314.pyc +0 -0
  514. package/onecode/verification/gates/__pycache__/lint_gate.cpython-314.pyc +0 -0
  515. package/onecode/verification/gates/__pycache__/test_gate.cpython-314.pyc +0 -0
  516. package/onecode/verification/gates/__pycache__/type_gate.cpython-314.pyc +0 -0
  517. package/onecode/verification/gates/base.py +0 -20
  518. package/onecode/verification/gates/lint_gate.py +0 -45
  519. package/onecode/verification/gates/test_gate.py +0 -62
  520. package/onecode/verification/gates/type_gate.py +0 -46
  521. package/onecode/verification/loop.py +0 -95
  522. package/onecode/verification/policy.py +0 -29
  523. package/pyproject.toml +0 -84
  524. package/tui/__init__.py +0 -46
  525. package/tui/__main__.py +0 -4
  526. package/tui/__pycache__/__init__.cpython-314.pyc +0 -0
  527. package/tui/__pycache__/_loop.cpython-314.pyc +0 -0
  528. package/tui/__pycache__/_path_fuzzy_search.cpython-314.pyc +0 -0
  529. package/tui/__pycache__/_path_match.cpython-314.pyc +0 -0
  530. package/tui/__pycache__/agent.cpython-314.pyc +0 -0
  531. package/tui/__pycache__/agent_schema.cpython-314.pyc +0 -0
  532. package/tui/__pycache__/agents.cpython-314.pyc +0 -0
  533. package/tui/__pycache__/answer.cpython-314.pyc +0 -0
  534. package/tui/__pycache__/app.cpython-314.pyc +0 -0
  535. package/tui/__pycache__/atomic.cpython-314.pyc +0 -0
  536. package/tui/__pycache__/complete.cpython-314.pyc +0 -0
  537. package/tui/__pycache__/constants.cpython-314.pyc +0 -0
  538. package/tui/__pycache__/conversation_markdown.cpython-314.pyc +0 -0
  539. package/tui/__pycache__/db.cpython-314.pyc +0 -0
  540. package/tui/__pycache__/dec.cpython-314.pyc +0 -0
  541. package/tui/__pycache__/directory.cpython-314.pyc +0 -0
  542. package/tui/__pycache__/directory_watcher.cpython-314.pyc +0 -0
  543. package/tui/__pycache__/format_path.cpython-314.pyc +0 -0
  544. package/tui/__pycache__/fuzzy.cpython-314.pyc +0 -0
  545. package/tui/__pycache__/fuzzy_index.cpython-314.pyc +0 -0
  546. package/tui/__pycache__/history.cpython-314.pyc +0 -0
  547. package/tui/__pycache__/jsonrpc.cpython-314.pyc +0 -0
  548. package/tui/__pycache__/menus.cpython-314.pyc +0 -0
  549. package/tui/__pycache__/message_log.cpython-314.pyc +0 -0
  550. package/tui/__pycache__/messages.cpython-314.pyc +0 -0
  551. package/tui/__pycache__/path_complete.cpython-314.pyc +0 -0
  552. package/tui/__pycache__/path_filter.cpython-314.pyc +0 -0
  553. package/tui/__pycache__/paths.cpython-314.pyc +0 -0
  554. package/tui/__pycache__/pill.cpython-314.pyc +0 -0
  555. package/tui/__pycache__/platform_commands.cpython-314.pyc +0 -0
  556. package/tui/__pycache__/protocol.cpython-314.pyc +0 -0
  557. package/tui/__pycache__/session_tracker.cpython-314.pyc +0 -0
  558. package/tui/__pycache__/settings.cpython-314.pyc +0 -0
  559. package/tui/__pycache__/settings_schema.cpython-314.pyc +0 -0
  560. package/tui/__pycache__/shell.cpython-314.pyc +0 -0
  561. package/tui/__pycache__/shell_read.cpython-314.pyc +0 -0
  562. package/tui/__pycache__/slash_command.cpython-314.pyc +0 -0
  563. package/tui/__pycache__/version.cpython-314.pyc +0 -0
  564. package/tui/_loop.py +0 -86
  565. package/tui/_path_fuzzy_search.py +0 -48
  566. package/tui/_path_match.py +0 -141
  567. package/tui/about.py +0 -95
  568. package/tui/acp/__pycache__/agent.cpython-314.pyc +0 -0
  569. package/tui/acp/__pycache__/api.cpython-314.pyc +0 -0
  570. package/tui/acp/__pycache__/encode_tool_call_id.cpython-314.pyc +0 -0
  571. package/tui/acp/__pycache__/event_tap.cpython-314.pyc +0 -0
  572. package/tui/acp/__pycache__/messages.cpython-314.pyc +0 -0
  573. package/tui/acp/__pycache__/prompt.cpython-314.pyc +0 -0
  574. package/tui/acp/__pycache__/protocol.cpython-314.pyc +0 -0
  575. package/tui/acp/agent.py +0 -1212
  576. package/tui/acp/api.py +0 -79
  577. package/tui/acp/encode_tool_call_id.py +0 -12
  578. package/tui/acp/event_tap.py +0 -107
  579. package/tui/acp/messages.py +0 -222
  580. package/tui/acp/prompt.py +0 -53
  581. package/tui/acp/protocol.py +0 -551
  582. package/tui/agent.py +0 -70
  583. package/tui/agent_schema.py +0 -76
  584. package/tui/agents.py +0 -46
  585. package/tui/ansi/__init__.py +0 -1
  586. package/tui/ansi/__pycache__/__init__.cpython-314.pyc +0 -0
  587. package/tui/ansi/__pycache__/_ansi.cpython-314.pyc +0 -0
  588. package/tui/ansi/__pycache__/_ansi_colors.cpython-314.pyc +0 -0
  589. package/tui/ansi/__pycache__/_control_codes.cpython-314.pyc +0 -0
  590. package/tui/ansi/__pycache__/_keys.cpython-314.pyc +0 -0
  591. package/tui/ansi/__pycache__/_sgr_styles.cpython-314.pyc +0 -0
  592. package/tui/ansi/__pycache__/_stream_parser.cpython-314.pyc +0 -0
  593. package/tui/ansi/_ansi.py +0 -1689
  594. package/tui/ansi/_ansi_colors.py +0 -264
  595. package/tui/ansi/_control_codes.py +0 -37
  596. package/tui/ansi/_keys.py +0 -251
  597. package/tui/ansi/_sgr_styles.py +0 -64
  598. package/tui/ansi/_stream_parser.py +0 -418
  599. package/tui/answer.py +0 -12
  600. package/tui/app.py +0 -1195
  601. package/tui/atomic.py +0 -37
  602. package/tui/cli.py +0 -208
  603. package/tui/code_analyze.py +0 -27
  604. package/tui/complete.py +0 -38
  605. package/tui/constants.py +0 -61
  606. package/tui/conversation_markdown.py +0 -30
  607. package/tui/danger.py +0 -372
  608. package/tui/data/agents/ampcode.com.toml +0 -52
  609. package/tui/data/agents/augmentcode.com.toml +0 -41
  610. package/tui/data/agents/cdh.cloud-dev-harness.toml +0 -23
  611. package/tui/data/agents/claude.com.toml +0 -42
  612. package/tui/data/agents/copilot.github.com.toml +0 -29
  613. package/tui/data/agents/crowai.dev.toml +0 -36
  614. package/tui/data/agents/cursor.com.toml +0 -38
  615. package/tui/data/agents/deepagents.langchain.com +0 -34
  616. package/tui/data/agents/docker.com.toml +0 -60
  617. package/tui/data/agents/geminicli.com.toml +0 -28
  618. package/tui/data/agents/goose.ai.toml +0 -52
  619. package/tui/data/agents/inference.huggingface.co.toml +0 -41
  620. package/tui/data/agents/kimi.com.toml +0 -35
  621. package/tui/data/agents/kiro.dev.toml +0 -43
  622. package/tui/data/agents/onecode.dev.toml +0 -22
  623. package/tui/data/agents/openai.com.toml +0 -53
  624. package/tui/data/agents/openclaw.ai.toml +0 -37
  625. package/tui/data/agents/opencode.ai.toml +0 -39
  626. package/tui/data/agents/openhands.dev.toml +0 -46
  627. package/tui/data/agents/stakpak.dev.toml +0 -62
  628. package/tui/data/agents/vibe.mistral.ai.toml +0 -31
  629. package/tui/data/agents/vtcode.dev.toml +0 -63
  630. package/tui/data/images/frog.png +0 -0
  631. package/tui/data/sounds/question.wav +0 -0
  632. package/tui/data/sounds/turn-over.wav +0 -0
  633. package/tui/db.py +0 -213
  634. package/tui/dec.py +0 -332
  635. package/tui/diff_utils.py +0 -131
  636. package/tui/directory.py +0 -234
  637. package/tui/directory_suggester.py +0 -93
  638. package/tui/directory_watcher.py +0 -231
  639. package/tui/format_path.py +0 -25
  640. package/tui/fuzzy.py +0 -140
  641. package/tui/fuzzy_index.py +0 -275
  642. package/tui/gist.py +0 -33
  643. package/tui/history.py +0 -138
  644. package/tui/jsonrpc.py +0 -599
  645. package/tui/menus.py +0 -14
  646. package/tui/message_log.py +0 -69
  647. package/tui/messages.py +0 -144
  648. package/tui/option_content.py +0 -51
  649. package/tui/os.py +0 -0
  650. package/tui/path_complete.py +0 -217
  651. package/tui/path_filter.py +0 -124
  652. package/tui/paths.py +0 -87
  653. package/tui/pill.py +0 -23
  654. package/tui/platform_commands.py +0 -52
  655. package/tui/prompt/__pycache__/extract.cpython-314.pyc +0 -0
  656. package/tui/prompt/__pycache__/resource.cpython-314.pyc +0 -0
  657. package/tui/prompt/extract.py +0 -19
  658. package/tui/prompt/resource.py +0 -68
  659. package/tui/protocol.py +0 -28
  660. package/tui/screens/__init__.py +0 -0
  661. package/tui/screens/__pycache__/__init__.cpython-314.pyc +0 -0
  662. package/tui/screens/__pycache__/diff_screen.cpython-314.pyc +0 -0
  663. package/tui/screens/__pycache__/main.cpython-314.pyc +0 -0
  664. package/tui/screens/__pycache__/sessions.cpython-314.pyc +0 -0
  665. package/tui/screens/action_modal.py +0 -94
  666. package/tui/screens/agent_modal.py +0 -175
  667. package/tui/screens/command_edit_modal.py +0 -74
  668. package/tui/screens/diff_explorer_screen.py +0 -419
  669. package/tui/screens/diff_screen.py +0 -84
  670. package/tui/screens/ide_screen.py +0 -461
  671. package/tui/screens/main.py +0 -397
  672. package/tui/screens/main.tcss +0 -662
  673. package/tui/screens/permissions.py +0 -404
  674. package/tui/screens/permissions.tcss +0 -72
  675. package/tui/screens/projects.tcss +0 -84
  676. package/tui/screens/projects_app.py +0 -341
  677. package/tui/screens/projects_screen.py +0 -277
  678. package/tui/screens/session_resume_modal.py +0 -172
  679. package/tui/screens/session_resume_modal.tcss +0 -35
  680. package/tui/screens/sessions.py +0 -171
  681. package/tui/screens/sessions.tcss +0 -119
  682. package/tui/screens/settings.py +0 -293
  683. package/tui/screens/settings.tcss +0 -113
  684. package/tui/screens/store.py +0 -502
  685. package/tui/screens/store.tcss +0 -274
  686. package/tui/screens/tool_content_screen.py +0 -59
  687. package/tui/screens/trace.py +0 -317
  688. package/tui/session_tracker.py +0 -123
  689. package/tui/settings.py +0 -353
  690. package/tui/settings_schema.py +0 -467
  691. package/tui/shell.py +0 -304
  692. package/tui/shell_read.py +0 -42
  693. package/tui/slash_command.py +0 -34
  694. package/tui/tui.tcss +0 -246
  695. package/tui/twitter.py +0 -38
  696. package/tui/version.py +0 -80
  697. package/tui/visuals/__init__.py +0 -0
  698. package/tui/visuals/__pycache__/__init__.cpython-314.pyc +0 -0
  699. package/tui/visuals/__pycache__/columns.cpython-314.pyc +0 -0
  700. package/tui/visuals/columns.py +0 -272
  701. package/tui/widgets/__init__.py +0 -0
  702. package/tui/widgets/__pycache__/__init__.cpython-314.pyc +0 -0
  703. package/tui/widgets/__pycache__/agent_response.cpython-314.pyc +0 -0
  704. package/tui/widgets/__pycache__/agent_thought.cpython-314.pyc +0 -0
  705. package/tui/widgets/__pycache__/aidlc.cpython-314.pyc +0 -0
  706. package/tui/widgets/__pycache__/ask_user.cpython-314.pyc +0 -0
  707. package/tui/widgets/__pycache__/condensed_path.cpython-314.pyc +0 -0
  708. package/tui/widgets/__pycache__/context_stats.cpython-314.pyc +0 -0
  709. package/tui/widgets/__pycache__/conversation.cpython-314.pyc +0 -0
  710. package/tui/widgets/__pycache__/diff_view.cpython-314.pyc +0 -0
  711. package/tui/widgets/__pycache__/flash.cpython-314.pyc +0 -0
  712. package/tui/widgets/__pycache__/future_text.cpython-314.pyc +0 -0
  713. package/tui/widgets/__pycache__/grid_select.cpython-314.pyc +0 -0
  714. package/tui/widgets/__pycache__/highlighted_textarea.cpython-314.pyc +0 -0
  715. package/tui/widgets/__pycache__/load_more.cpython-314.pyc +0 -0
  716. package/tui/widgets/__pycache__/menu.cpython-314.pyc +0 -0
  717. package/tui/widgets/__pycache__/modified_files.cpython-314.pyc +0 -0
  718. package/tui/widgets/__pycache__/non_selectable_label.cpython-314.pyc +0 -0
  719. package/tui/widgets/__pycache__/note.cpython-314.pyc +0 -0
  720. package/tui/widgets/__pycache__/path_search.cpython-314.pyc +0 -0
  721. package/tui/widgets/__pycache__/pending_prompts.cpython-314.pyc +0 -0
  722. package/tui/widgets/__pycache__/plan.cpython-314.pyc +0 -0
  723. package/tui/widgets/__pycache__/project_directory_tree.cpython-314.pyc +0 -0
  724. package/tui/widgets/__pycache__/prompt.cpython-314.pyc +0 -0
  725. package/tui/widgets/__pycache__/question.cpython-314.pyc +0 -0
  726. package/tui/widgets/__pycache__/session_grid_select.cpython-314.pyc +0 -0
  727. package/tui/widgets/__pycache__/session_summary.cpython-314.pyc +0 -0
  728. package/tui/widgets/__pycache__/session_tabs.cpython-314.pyc +0 -0
  729. package/tui/widgets/__pycache__/shell_terminal.cpython-314.pyc +0 -0
  730. package/tui/widgets/__pycache__/side_bar.cpython-314.pyc +0 -0
  731. package/tui/widgets/__pycache__/slash_complete.cpython-314.pyc +0 -0
  732. package/tui/widgets/__pycache__/strike_text.cpython-314.pyc +0 -0
  733. package/tui/widgets/__pycache__/terminal.cpython-314.pyc +0 -0
  734. package/tui/widgets/__pycache__/throbber.cpython-314.pyc +0 -0
  735. package/tui/widgets/__pycache__/tool_call.cpython-314.pyc +0 -0
  736. package/tui/widgets/__pycache__/user_input.cpython-314.pyc +0 -0
  737. package/tui/widgets/acp_content.py +0 -70
  738. package/tui/widgets/agent_response.py +0 -76
  739. package/tui/widgets/agent_thought.py +0 -167
  740. package/tui/widgets/aidlc.py +0 -334
  741. package/tui/widgets/ask_user.py +0 -604
  742. package/tui/widgets/command_pane.py +0 -223
  743. package/tui/widgets/condensed_path.py +0 -115
  744. package/tui/widgets/context_stats.py +0 -66
  745. package/tui/widgets/conversation.py +0 -3235
  746. package/tui/widgets/danger_warning.py +0 -65
  747. package/tui/widgets/diff_view.py +0 -69
  748. package/tui/widgets/directory_input.py +0 -8
  749. package/tui/widgets/edit_field.py +0 -206
  750. package/tui/widgets/flash.py +0 -81
  751. package/tui/widgets/future_text.py +0 -126
  752. package/tui/widgets/grid_select.py +0 -234
  753. package/tui/widgets/highlighted_textarea.py +0 -183
  754. package/tui/widgets/load_more.py +0 -24
  755. package/tui/widgets/mandelbrot.py +0 -294
  756. package/tui/widgets/markdown_note.py +0 -13
  757. package/tui/widgets/menu.py +0 -147
  758. package/tui/widgets/model_status.py +0 -230
  759. package/tui/widgets/modified_files.py +0 -315
  760. package/tui/widgets/non_selectable_label.py +0 -5
  761. package/tui/widgets/note.py +0 -18
  762. package/tui/widgets/path_search.py +0 -492
  763. package/tui/widgets/pending_prompts.py +0 -36
  764. package/tui/widgets/plan.py +0 -285
  765. package/tui/widgets/project_directory_tree.py +0 -102
  766. package/tui/widgets/project_grid_select.py +0 -68
  767. package/tui/widgets/project_summary.py +0 -33
  768. package/tui/widgets/prompt.py +0 -935
  769. package/tui/widgets/question.py +0 -360
  770. package/tui/widgets/session_grid_select.py +0 -230
  771. package/tui/widgets/session_summary.py +0 -115
  772. package/tui/widgets/session_tabs.py +0 -194
  773. package/tui/widgets/shell_result.py +0 -35
  774. package/tui/widgets/shell_terminal.py +0 -40
  775. package/tui/widgets/side_bar.py +0 -124
  776. package/tui/widgets/slash_complete.py +0 -235
  777. package/tui/widgets/strike_text.py +0 -70
  778. package/tui/widgets/subagent.py +0 -287
  779. package/tui/widgets/subagent_screen.py +0 -715
  780. package/tui/widgets/terminal.py +0 -576
  781. package/tui/widgets/terminal_tool.py +0 -360
  782. package/tui/widgets/throbber.py +0 -100
  783. package/tui/widgets/tool_call.py +0 -432
  784. package/tui/widgets/user_input.py +0 -23
  785. package/tui/widgets/version.py +0 -5
  786. package/tui/widgets/welcome.py +0 -31
@@ -1,150 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import fnmatch
4
- from dataclasses import dataclass, field
5
- from enum import Enum
6
- from pathlib import Path
7
- from typing import Optional
8
-
9
-
10
- class PermissionResult(Enum):
11
- ALLOW = "allow"
12
- DENY = "deny"
13
- ASK = "ask"
14
-
15
-
16
- @dataclass
17
- class PathRule:
18
- pattern: str
19
- permission: PermissionResult = PermissionResult.ALLOW
20
-
21
- def matches(self, path: str) -> bool:
22
- return (
23
- fnmatch.fnmatch(path, self.pattern) or
24
- fnmatch.fnmatch(Path(path).name, self.pattern) or
25
- fnmatch.fnmatch(Path(path).stem, self.pattern)
26
- )
27
-
28
-
29
- @dataclass
30
- class CommandRule:
31
- pattern: str
32
- permission: PermissionResult = PermissionResult.ALLOW
33
-
34
- def matches(self, cmd: str) -> bool:
35
- normalized = cmd.strip()
36
- if fnmatch.fnmatch(normalized, self.pattern):
37
- return True
38
- parts = normalized.split()
39
- if parts:
40
- cmd_base = parts[0]
41
- args = " ".join(parts[1:]) if len(parts) > 1 else ""
42
- if args and fnmatch.fnmatch(f"{cmd_base} {args}", self.pattern):
43
- return True
44
- if fnmatch.fnmatch(cmd_base, self.pattern):
45
- return True
46
- return False
47
-
48
-
49
- @dataclass
50
- class PermissionSet:
51
- path_rules: list[PathRule] = field(default_factory=list)
52
- command_rules: list[CommandRule] = field(default_factory=list)
53
- default_path_permission: PermissionResult = PermissionResult.ALLOW
54
- default_command_permission: PermissionResult = PermissionResult.ALLOW
55
-
56
- def check_path(self, path: str) -> PermissionResult:
57
- matched = self.default_path_permission
58
- for rule in self.path_rules:
59
- if rule.matches(path):
60
- matched = rule.permission
61
- return matched
62
-
63
- def check_command(self, cmd: str) -> PermissionResult:
64
- matched = self.default_command_permission
65
- for rule in self.command_rules:
66
- if rule.matches(cmd):
67
- matched = rule.permission
68
- return matched
69
-
70
- def allow_path(self, pattern: str) -> None:
71
- self.path_rules.append(PathRule(pattern, PermissionResult.ALLOW))
72
-
73
- def deny_path(self, pattern: str) -> None:
74
- self.path_rules.append(PathRule(pattern, PermissionResult.DENY))
75
-
76
- def ask_path(self, pattern: str) -> None:
77
- self.path_rules.append(PathRule(pattern, PermissionResult.ASK))
78
-
79
- def allow_command(self, pattern: str) -> None:
80
- self.command_rules.append(CommandRule(pattern, PermissionResult.ALLOW))
81
-
82
- def deny_command(self, pattern: str) -> None:
83
- self.command_rules.append(CommandRule(pattern, PermissionResult.DENY))
84
-
85
- def ask_command(self, pattern: str) -> None:
86
- self.command_rules.append(CommandRule(pattern, PermissionResult.ASK))
87
-
88
- @classmethod
89
- def from_config(cls, config: dict) -> "PermissionSet":
90
- ps = cls()
91
- perm_map = {"allow": PermissionResult.ALLOW, "ask": PermissionResult.ASK, "deny": PermissionResult.DENY}
92
-
93
- if "path" in config:
94
- for pattern, action in config["path"].items():
95
- if action in perm_map:
96
- getattr(ps, f"{action}_path")(pattern)
97
-
98
- if "command" in config:
99
- for pattern, action in config["command"].items():
100
- if action in perm_map:
101
- getattr(ps, f"{action}_command")(pattern)
102
-
103
- if "default" in config:
104
- default = config["default"]
105
- if "path" in default and default["path"] in perm_map:
106
- ps.default_path_permission = perm_map[default["path"]]
107
- if "command" in default and default["command"] in perm_map:
108
- ps.default_command_permission = perm_map[default["command"]]
109
-
110
- return ps
111
-
112
-
113
- class PermissionChecker:
114
- def __init__(self, permission_set: Optional[PermissionSet] = None):
115
- self.permission_set = permission_set or PermissionSet()
116
-
117
- def check_file_read(self, path: str) -> PermissionResult:
118
- return self.permission_set.check_path(path)
119
-
120
- def check_file_write(self, path: str) -> PermissionResult:
121
- return self.permission_set.check_path(path)
122
-
123
- def check_command(self, cmd: str) -> PermissionResult:
124
- return self.permission_set.check_command(cmd)
125
-
126
- def is_allowed(self, permission: PermissionResult) -> bool:
127
- return permission == PermissionResult.ALLOW
128
-
129
- def is_denied(self, permission: PermissionResult) -> bool:
130
- return permission == PermissionResult.DENY
131
-
132
- def requires_approval(self, permission: PermissionResult) -> bool:
133
- return permission == PermissionResult.ASK
134
-
135
-
136
- def create_safe_permission_set() -> PermissionSet:
137
- ps = PermissionSet()
138
- ps.deny_path("**/.env")
139
- ps.deny_path("**/secrets/**")
140
- ps.deny_path("**/credentials/**")
141
- ps.deny_command("rm -rf /")
142
- ps.deny_command("rm -rf /*")
143
- ps.deny_command("dd if=*")
144
- ps.deny_command("mkfs.*")
145
- ps.deny_command(":(){:|:&};:")
146
- ps.ask_command("sudo *")
147
- ps.ask_command("chmod 777 *")
148
- ps.ask_command("curl *")
149
- ps.ask_command("wget *")
150
- return ps
@@ -1,73 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from typing import Optional
4
-
5
- from onecode.agent.agents.types import AgentPermission
6
-
7
-
8
- class PermissionStore:
9
- """Persists user-defined allow_always / reject_always overrides across
10
- ``set_agent()`` calls so permissions survive mode switches.
11
-
12
- Usage::
13
-
14
- store = PermissionStore()
15
- store.set_override("bash", AgentPermission.ALLOW) # user said "Allow always"
16
- store.set_override("edit", AgentPermission.DENY) # user said "Reject always"
17
- ...
18
- store.apply_to(current_agent) # re-apply after set_agent
19
- """
20
-
21
- def __init__(self) -> None:
22
- # perm_key → AgentPermission (e.g. "bash" → AgentPermission.ALLOW)
23
- self._overrides: dict[str, AgentPermission] = {}
24
-
25
- def set_override(self, perm_key: str, perm: AgentPermission) -> None:
26
- """Record a user override for the given permission key."""
27
- self._overrides[perm_key] = perm
28
-
29
- def get_override(self, perm_key: str) -> Optional[AgentPermission]:
30
- return self._overrides.get(perm_key)
31
-
32
- def clear_override(self, perm_key: str) -> None:
33
- self._overrides.pop(perm_key, None)
34
-
35
- def clear_all(self) -> None:
36
- self._overrides.clear()
37
-
38
- def apply_to(self, agent) -> None:
39
- """Apply all recorded overrides to an AgentConfig instance.
40
-
41
- Call this after ``set_agent()`` to restore the user's choices.
42
-
43
- Agents with ``permissions_locked`` (e.g. PlanAgent) are skipped
44
- entirely — their permission set is an intentional mode-level
45
- restriction (read-only plan gate) that user overrides from other
46
- modes must never bypass, including fields that happen to be ASK
47
- rather than hard-DENY.
48
- """
49
- if getattr(agent, "permissions_locked", False):
50
- return
51
- for perm_key, perm in self._overrides.items():
52
- attr_name = f"permission_{perm_key}"
53
- if hasattr(agent, attr_name):
54
- current = getattr(agent, attr_name)
55
- if current == AgentPermission.DENY:
56
- continue
57
- setattr(agent, attr_name, perm)
58
-
59
- def to_dict(self) -> dict[str, str]:
60
- return {k: v.value for k, v in self._overrides.items()}
61
-
62
- @classmethod
63
- def from_dict(cls, d: dict[str, str]) -> PermissionStore:
64
- store = cls()
65
- for k, v in d.items():
66
- try:
67
- store._overrides[k] = AgentPermission(v)
68
- except ValueError:
69
- pass
70
- return store
71
-
72
- def snapshot(self) -> dict[str, AgentPermission]:
73
- return dict(self._overrides)
@@ -1,19 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from pathlib import Path
4
-
5
-
6
- def load_project_doc(workspace_root: Path) -> str:
7
- """Read ``AGENTS.md`` at the project root if present.
8
-
9
- Convention mirrors ``AGENTS.md`` / ``CLAUDE.md``: exactly one file at
10
- the workspace root that all AI agents must read. Unlike skills,
11
- this is not registered — it's injected directly as project context.
12
- """
13
- path = workspace_root.resolve() / "AGENTS.md"
14
- if not path.exists():
15
- return ""
16
- try:
17
- return path.read_text(encoding="utf-8")
18
- except Exception:
19
- return ""
@@ -1,230 +0,0 @@
1
- """Shared plain-text question detection for auto-AskUser conversion.
2
-
3
- Both the engine (intercepts mid-turn, before tool execution) and the ACP
4
- adapter (end-of-turn fallback) must agree on what counts as a question, or
5
- plain-text questions slip through and the user's input gets queued instead
6
- of becoming an AskUser dialog.
7
-
8
- Detection uses two layers:
9
- - Layer 1 — Semantic (intent): explicit "need user input" signals
10
- - Layer 2 — Syntax (punctuation): question marks as fallback
11
-
12
- Self-talk patterns are excluded (the LLM is reasoning to itself, no input
13
- needed).
14
- """
15
-
16
- from __future__ import annotations
17
-
18
- import re
19
-
20
- # Patterns indicating the LLM explicitly needs human input
21
- SEMANTIC_NEEDS_INPUT = [
22
- r"需要用户", r"需要您", r"需要您提供",
23
- r"请确认", r"请选择", r"询问您", r"问您",
24
- r"需要确认", r"需要知道", r"请告诉我",
25
- r"等待您的", r"需要.*信息", r"需要哪些参数",
26
- r"请提供", r"请问要", r"请问您", r"需要.*id",
27
- r"哪个用户", r"哪个文件", r"什么参数", r"如何处理",
28
- r"^请问",
29
- r"could you (tell me|confirm|provide|let me know)",
30
- r"i need to know",
31
- r"please (confirm|tell me|specify|provide|select|choose)",
32
- r"which .*(user|file|parameter|option|setting)",
33
- r"what .*(parameter|user|file|option|setting)",
34
- r"what should i",
35
- r"which (file|user|option|one)",
36
- r"should i (proceed|continue|upgrade|execute)",
37
- r"do you want (me to|to)",
38
- r"can you (tell me|confirm|specify)",
39
- r"let me know (which|what|if|whether)",
40
- r"i'?m not sure (which|what|who|how)",
41
- r"you('d| would) like (me to|to)",
42
- r"would you like (me to|to)",
43
- r"(could i|may i) get (the|your)",
44
- r"pick (a|an|the)",
45
- r"choose (a|an|the|which)",
46
- r"what'?s the (user|file|path|parameter)",
47
- r"which one",
48
- r"confirm the (user|file|path|parameter)",
49
- r"specify (the|which|what)",
50
- r"what .*(file|user|path|parameter)",
51
- r"which .*should i",
52
- r"(do you|would you|should i)",
53
- ]
54
-
55
- # Patterns where SEMANTIC_NEEDS_INPUT matched but it's actually a polite
56
- # instruction/statement rather than a genuine question. These are LLM
57
- # self-talk statements of what it needs ("请告诉我错误信息" = "tell me the error"
58
- # as a statement of need, not a question).
59
- SEMANTIC_NEEDS_INPUT_EXCLUSIONS = [
60
- r"请尝试后告知结果", r"请尝试", r"请告知", r"请先",
61
- r"请试试", r"请按", r"请过一会儿", r"请执行",
62
- r"请查看", r"请参考", r"请注意", r"请检查",
63
- r"请运行", r"请输入", r"请提交", r"请刷新",
64
- ]
65
-
66
- # Patterns indicating the LLM is just reasoning (self-talk, no input needed)
67
- SEMANTIC_SELF_TALK = [
68
- r"^让我想想", r"^我需要先", r"^我可以先",
69
- r"^首先", r"^然后", r"^接下来", r"^好的",
70
- r"自言自语", r"我在想", r"我在考虑",
71
- r"让我先", r"我先来", r"先执行",
72
- r"^let me (think|check|read|look|find|see)",
73
- r"^i('ll| will| can| should)?( be)? (checking|reading|looking|finding|seeing|thinking)",
74
- r"^first(ly)?(,| )?(i('ll| will| can| should)?)?",
75
- r"^then(,| )?(i('ll| will| can| should)?)?",
76
- r"^next(,| )?(i('ll| will| can| should)?)?",
77
- r"^okay(|,| ) (so|let me|i('ll| will| can| should)?)",
78
- r"^alright(|,| ) (so|let me|i('ll| will| can| should)?)",
79
- r"^sure(|,| ) (so|let me|i('ll| will| can| should)?)",
80
- r"^sounds good(|,| )",
81
- r"^i('ll| will| can| should)?( go ahead| start| begin| proceed| execute)",
82
- r"^i('ll| will| can| should)?( need to| have to| want to) (check|read|look|find|see|think|consider|proceed|execute|verify|confirm|fix|update|change|add|remove)",
83
- r"^i('m| am)( going to| about to)?",
84
- r"^looks like",
85
- r"^it seems (like|that)",
86
- r"^based on",
87
- r"^let me just",
88
- r"^i('ll| will)? just (check|read|look|find|see|try)",
89
- r"^i think (that )?",
90
- r"^i believe (that )?",
91
- r"i('m| am) thinking (about|that)",
92
- r"i('m| am) considering",
93
- r"^here('s| is)",
94
- r"^so(,| )? i('ll| will| can| should)?",
95
- r"^okay so",
96
- r"i need to consider",
97
- ]
98
-
99
-
100
- def semantic_needs_input(text: str) -> bool:
101
- """True when the text carries an explicit "I need user input" signal.
102
-
103
- Self-talk patterns take precedence: an LLM reasoning to itself does not
104
- need the user, even if it happens to mention an input-like phrase.
105
-
106
- Polite instruction exclusions: phrases like "请尝试后告知结果" are
107
- statements of what the LLM needs, not genuine questions.
108
- """
109
- if not text:
110
- return False
111
- for pattern in SEMANTIC_SELF_TALK:
112
- if re.search(pattern, text, re.IGNORECASE):
113
- return False
114
- for pattern in SEMANTIC_NEEDS_INPUT:
115
- if re.search(pattern, text, re.IGNORECASE):
116
- for excl in SEMANTIC_NEEDS_INPUT_EXCLUSIONS:
117
- if re.search(excl, text, re.IGNORECASE):
118
- return False
119
- return True
120
- return False
121
-
122
-
123
- def has_trailing_question_mark(text: str) -> bool:
124
- """True when the text ends with a question marker (?/CJK+?)."""
125
- stripped = text.rstrip() if text else ""
126
- if not stripped:
127
- return False
128
- if stripped.endswith("\uff1f"):
129
- return True
130
- if stripped.endswith("?") and len(stripped) >= 2:
131
- prev = stripped[-2]
132
- return "\u4e00" <= prev <= "\u9fff" or "\u3000" <= prev <= "\u303f"
133
- return False
134
-
135
-
136
- def has_question_mark_in_last_sentence(text: str) -> bool:
137
- """True when the FINAL sentence of the text contains a question mark.
138
-
139
- This is the loose fallback: unlike checking anywhere in the output, an
140
- aside or rhetorical ``?`` buried in the middle of the response does not
141
- count — only a question that closes the turn does. This keeps auto-ask
142
- from firing on every turn just because the LLM's prose happens to
143
- contain a question mark.
144
- """
145
- stripped = text.rstrip() if text else ""
146
- if not stripped:
147
- return False
148
- m = max(
149
- stripped.rfind("。"), stripped.rfind("!"), stripped.rfind("?"),
150
- stripped.rfind("."), stripped.rfind("!"), stripped.rfind("?"),
151
- stripped.rfind("\n"),
152
- )
153
- tail = stripped[m + 1:] if m >= 0 else stripped
154
- return "?" in tail or "?" in tail
155
-
156
-
157
- def looks_like_question(text: str, *, strict: bool = False) -> bool:
158
- """True when the text asks the user for input.
159
-
160
- ``strict=True`` (used when the LLM made no tool calls): the question
161
- must be signalled by intent or by trailing question punctuation, so
162
- ordinary prose or code containing a stray ``?`` is not misread.
163
-
164
- ``strict=False`` (used when tool calls accompany the text): a question
165
- mark in the FINAL sentence also counts, so a question followed by tool
166
- execution is still intercepted — but an aside ``?`` in the middle of the
167
- output does not trigger auto-ask.
168
- """
169
- if not text or not text.strip():
170
- return False
171
- if semantic_needs_input(text):
172
- return True
173
- if has_trailing_question_mark(text):
174
- return True
175
- if not strict and has_question_mark_in_last_sentence(text):
176
- return True
177
- return False
178
-
179
-
180
- # Common markdown block/emphasis markers that bloat the AskUser widget.
181
- # We strip these from the auto-ask question so the dialog stays compact.
182
- _MARKDOWN_STRIP = (
183
- r"\*\*", r"__", r"`", r"```", r"\*",
184
- r"^#+\s?", r"^>\s?", r"^\s*[-*+]\s+", r"^\s*\d+\.\s+",
185
- r"^---\s*$", r"^\|", r"\|\s*$",
186
- )
187
-
188
-
189
- def strip_markdown(text: str) -> str:
190
- """Strip common markdown syntax so question text renders cleanly."""
191
- if not text:
192
- return ""
193
- lines = []
194
- for raw in text.splitlines():
195
- line = raw
196
- for pat in _MARKDOWN_STRIP:
197
- line = re.sub(pat, "", line)
198
- lines.append(line.strip())
199
- return "\n".join(lines).strip()
200
-
201
-
202
- def compact_question(text: str, *, max_chars: int = 240) -> str:
203
- """Condense a (possibly markdown-laden) question to a compact snippet.
204
-
205
- Used for auto-AskUser conversion so the dialog shows the trailing
206
- question sentence instead of the whole preamble/plan text.
207
- """
208
- if not text:
209
- return ""
210
- clean = strip_markdown(text)
211
-
212
- # Prefer the final sentence, anchored on CJK/Latin sentence terminators.
213
- tail = ""
214
- for marker in ("。", "!", "\uff1f", ". ", "! ", "? ", "\n"):
215
- idx = clean.rfind(marker)
216
- if idx >= 0:
217
- tail = clean[idx + 1:].strip()
218
- break
219
- if len(tail) < 12:
220
- tail = clean
221
-
222
- if len(tail) <= max_chars:
223
- return tail
224
-
225
- # Hard truncate at a sentence boundary near the limit.
226
- prefix = tail[:max_chars]
227
- cut = max(prefix.rfind("。"), prefix.rfind(","), prefix.rfind(". "), prefix.rfind(", "))
228
- if cut >= max_chars * 3 // 4:
229
- prefix = prefix[:cut + 1]
230
- return prefix.rstrip() + "…"
@@ -1,3 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from cdh.session_store import AgentSession, SessionData # noqa: F401
@@ -1,144 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import fnmatch
4
- import json
5
- import os
6
- import shutil
7
- import tarfile
8
- import uuid
9
- from dataclasses import dataclass
10
- from datetime import datetime, timezone
11
- from pathlib import Path
12
- from typing import Optional
13
-
14
-
15
- @dataclass
16
- class SnapshotInfo:
17
- id: str
18
- name: str
19
- timestamp: str
20
- description: str
21
- size_bytes: int
22
- file_count: int
23
-
24
-
25
- class SnapshotManager:
26
- def __init__(self, base_path: Optional[Path] = None):
27
- from onecode.config import ONECODE_DIR
28
- self.base_path = base_path or (ONECODE_DIR / "snapshots")
29
- self.base_path.mkdir(parents=True, exist_ok=True)
30
-
31
- def create(
32
- self,
33
- workspace: Path,
34
- name: str,
35
- description: str = "",
36
- exclude_patterns: Optional[list[str]] = None,
37
- ) -> SnapshotInfo:
38
- snapshot_id = str(uuid.uuid4())[:8]
39
- snapshot_dir = self.base_path / snapshot_id
40
- snapshot_dir.mkdir(parents=True, exist_ok=True)
41
-
42
- tar_path = snapshot_dir / "snapshot.tar.gz"
43
- manifest_path = snapshot_dir / "manifest.json"
44
-
45
- exclude_patterns = exclude_patterns or [
46
- ".git",
47
- "node_modules",
48
- "__pycache__",
49
- "*.pyc",
50
- ".pytest_cache",
51
- ".venv",
52
- "venv",
53
- ".env",
54
- "*.egg-info",
55
- ".cdh",
56
- "snapshots",
57
- ]
58
-
59
- file_count = 0
60
- with tarfile.open(str(tar_path), "w:gz") as tar:
61
- for root, dirs, files in os.walk(workspace):
62
- dirs[:] = [d for d in dirs if not self._should_exclude(d, exclude_patterns)]
63
-
64
- for file in files:
65
- file_path = Path(root) / file
66
- if not self._should_exclude(file_path.name, exclude_patterns):
67
- try:
68
- tar.add(str(file_path), arcname=str(file_path.relative_to(workspace)))
69
- file_count += 1
70
- except Exception:
71
- pass
72
-
73
- size_bytes = tar_path.stat().st_size
74
-
75
- manifest = {
76
- "id": snapshot_id,
77
- "name": name,
78
- "description": description,
79
- "timestamp": datetime.now(timezone.utc).isoformat(),
80
- "workspace": str(workspace),
81
- "file_count": file_count,
82
- "size_bytes": size_bytes,
83
- }
84
- manifest_path.write_text(json.dumps(manifest, indent=2), encoding="utf-8")
85
-
86
- return SnapshotInfo(
87
- id=snapshot_id,
88
- name=name,
89
- timestamp=manifest["timestamp"],
90
- description=description,
91
- size_bytes=size_bytes,
92
- file_count=file_count,
93
- )
94
-
95
- def restore(self, snapshot_id: str, target_dir: Path) -> bool:
96
- snapshot_dir = self.base_path / snapshot_id
97
- if not snapshot_dir.exists():
98
- return False
99
-
100
- tar_path = snapshot_dir / "snapshot.tar.gz"
101
- if not tar_path.exists():
102
- return False
103
-
104
- target_dir.mkdir(parents=True, exist_ok=True)
105
-
106
- with tarfile.open(str(tar_path), "r:gz") as tar:
107
- tar.extractall(target_dir)
108
-
109
- return True
110
-
111
- def list(self) -> list[SnapshotInfo]:
112
- snapshots = []
113
- for snapshot_dir in self.base_path.iterdir():
114
- if not snapshot_dir.is_dir():
115
- continue
116
- manifest_path = snapshot_dir / "manifest.json"
117
- if not manifest_path.exists():
118
- continue
119
- try:
120
- manifest = json.loads(manifest_path.read_text(encoding="utf-8"))
121
- snapshots.append(SnapshotInfo(
122
- id=manifest["id"],
123
- name=manifest["name"],
124
- timestamp=manifest["timestamp"],
125
- description=manifest.get("description", ""),
126
- size_bytes=manifest.get("size_bytes", 0),
127
- file_count=manifest.get("file_count", 0),
128
- ))
129
- except Exception:
130
- continue
131
- return sorted(snapshots, key=lambda s: s.timestamp, reverse=True)
132
-
133
- def delete(self, snapshot_id: str) -> bool:
134
- snapshot_dir = self.base_path / snapshot_id
135
- if snapshot_dir.exists():
136
- shutil.rmtree(snapshot_dir)
137
- return True
138
- return False
139
-
140
- def _should_exclude(self, name: str, patterns: list[str]) -> bool:
141
- for pattern in patterns:
142
- if fnmatch.fnmatch(name, pattern):
143
- return True
144
- return False
@@ -1,17 +0,0 @@
1
- from onecode.agent.tools.file_ops import FileOps, ShellTool, ToolFactory
2
- from onecode.agent.tools.protocol import ToolCall, ToolResult
3
- from onecode.agent.tools.errors import ToolError, ToolInputError, ToolPermissionError, ToolExecutionError
4
- from onecode.agent.tools.registry import Tool, ToolRegistry, ToolSpec
5
- from onecode.agent.tools.permissions import ToolPermissionContext, PermissionResult
6
- from onecode.agent.tools.permission_handler import InteractivePermissionHandler, PermissionDecision, PermissionHandler
7
- from onecode.agent.tools.schema_validation import validate_json_schema
8
-
9
- __all__ = [
10
- "FileOps", "ShellTool", "ToolFactory",
11
- "ToolCall", "ToolResult",
12
- "ToolError", "ToolInputError", "ToolPermissionError", "ToolExecutionError",
13
- "Tool", "ToolRegistry", "ToolSpec",
14
- "ToolPermissionContext", "PermissionResult",
15
- "InteractivePermissionHandler", "PermissionDecision", "PermissionHandler",
16
- "validate_json_schema",
17
- ]