@scemoon/cdh 1.0.8 → 1.0.9-beta.2
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.
- package/ai-dlc-skill/SKILL.md +106 -0
- package/ai-dlc-skill/architecture/project-structure.md +78 -0
- package/ai-dlc-skill/brownfield/README.md +36 -0
- package/ai-dlc-skill/brownfield/entry.md +45 -0
- package/ai-dlc-skill/brownfield/generate-context.sh +64 -0
- package/ai-dlc-skill/brownfield/scripts/deps.sh +27 -0
- package/ai-dlc-skill/brownfield/scripts/discover.sh +34 -0
- package/ai-dlc-skill/brownfield/scripts/extract-api.sh +45 -0
- package/ai-dlc-skill/components/backend.md +47 -0
- package/ai-dlc-skill/components/desktop.md +63 -0
- package/ai-dlc-skill/components/mya.md +219 -0
- package/ai-dlc-skill/components/native.md +73 -0
- package/ai-dlc-skill/components/tta.md +235 -0
- package/ai-dlc-skill/components/web.md +77 -0
- package/ai-dlc-skill/components/wxa.md +219 -0
- package/ai-dlc-skill/contracts/README.md +25 -0
- package/ai-dlc-skill/core/adaptive-flow.md +107 -0
- package/ai-dlc-skill/core/security.md +29 -0
- package/ai-dlc-skill/core/task-registry.md +153 -0
- package/ai-dlc-skill/cross-tool/README.md +20 -0
- package/ai-dlc-skill/cross-tool/cline/export.sh +38 -0
- package/ai-dlc-skill/cross-tool/copilot/export.sh +41 -0
- package/ai-dlc-skill/cross-tool/cursor/export.sh +53 -0
- package/ai-dlc-skill/cross-tool/onecode/export.sh +27 -0
- package/ai-dlc-skill/cross-tool/opencode/export.sh +38 -0
- package/ai-dlc-skill/phases/debug/entry.md +48 -0
- package/ai-dlc-skill/phases/debug/lifecycle.md +284 -0
- package/ai-dlc-skill/phases/deliver/entry.md +35 -0
- package/ai-dlc-skill/phases/deliver/lifecycle.md +185 -0
- package/ai-dlc-skill/phases/deliver/prompt.md +54 -0
- package/ai-dlc-skill/phases/deliver/rules.md +61 -0
- package/ai-dlc-skill/phases/plan/design_system/accessibility.md +268 -0
- package/ai-dlc-skill/phases/plan/design_system/atomic_design.md +341 -0
- package/ai-dlc-skill/phases/plan/design_system/component_spec.md +398 -0
- package/ai-dlc-skill/phases/plan/design_system/design_tokens.md +190 -0
- package/ai-dlc-skill/phases/plan/design_system/iconography.md +299 -0
- package/ai-dlc-skill/phases/plan/design_system/platform_ui/desktop.md +318 -0
- package/ai-dlc-skill/phases/plan/design_system/platform_ui/mya.md +354 -0
- package/ai-dlc-skill/phases/plan/design_system/platform_ui/native.md +328 -0
- package/ai-dlc-skill/phases/plan/design_system/platform_ui/tta.md +394 -0
- package/ai-dlc-skill/phases/plan/design_system/platform_ui/web.md +287 -0
- package/ai-dlc-skill/phases/plan/design_system/platform_ui/wxa.md +374 -0
- package/ai-dlc-skill/phases/plan/design_system/theme_system.md +318 -0
- package/ai-dlc-skill/phases/plan/entry.md +33 -0
- package/ai-dlc-skill/phases/plan/lifecycle.md +260 -0
- package/ai-dlc-skill/phases/plan/prompt.md +75 -0
- package/ai-dlc-skill/phases/plan/rules.md +60 -0
- package/ai-dlc-skill/phases/understand/entry.md +36 -0
- package/ai-dlc-skill/phases/understand/lifecycle.md +184 -0
- package/ai-dlc-skill/phases/understand/prompt.md +58 -0
- package/ai-dlc-skill/phases/understand/rules.md +49 -0
- package/ai-dlc-skill/phases/verify/config/base_url.md +65 -0
- package/ai-dlc-skill/phases/verify/entry.md +59 -0
- package/ai-dlc-skill/phases/verify/gates/browser_e2e.md +96 -0
- package/ai-dlc-skill/phases/verify/lifecycle.md +217 -0
- package/ai-dlc-skill/phases/verify/prompt.md +73 -0
- package/ai-dlc-skill/phases/verify/rules.md +91 -0
- package/ai-dlc-skill/phases/verify/runners/playwright_local.md +103 -0
- package/ai-dlc-skill/practices/bdd.md +119 -0
- package/ai-dlc-skill/practices/sdd.md +84 -0
- package/ai-dlc-skill/practices/tdd.md +128 -0
- package/ai-dlc-skill/providers/README.md +114 -0
- package/ai-dlc-skill/providers/aliyun/SKILL.md +204 -0
- package/ai-dlc-skill/providers/aliyun/api/rest-api.md +214 -0
- package/ai-dlc-skill/providers/aliyun/api/sdk.md +307 -0
- package/ai-dlc-skill/providers/aliyun/best-practices/database-design.md +363 -0
- package/ai-dlc-skill/providers/aliyun/best-practices/function-design.md +424 -0
- package/ai-dlc-skill/providers/aliyun/best-practices/troubleshooting.md +258 -0
- package/ai-dlc-skill/providers/aliyun/cli/database.md +263 -0
- package/ai-dlc-skill/providers/aliyun/cli/functions.md +263 -0
- package/ai-dlc-skill/providers/aliyun/cli/hosting.md +226 -0
- package/ai-dlc-skill/providers/aliyun/cli/setup.md +235 -0
- package/ai-dlc-skill/providers/aliyun/cli/storage.md +315 -0
- package/ai-dlc-skill/providers/aliyun/deployment.yaml +66 -0
- package/ai-dlc-skill/providers/aliyun/integration/ci-cd.md +288 -0
- package/ai-dlc-skill/providers/aliyun/preview.yaml +84 -0
- package/ai-dlc-skill/providers/aliyun/provider.yaml +160 -0
- package/ai-dlc-skill/providers/aliyun/security/authentication.md +254 -0
- package/ai-dlc-skill/providers/aliyun/services/cdn-hosting.md +220 -0
- package/ai-dlc-skill/providers/aliyun/services/database.md +319 -0
- package/ai-dlc-skill/providers/aliyun/services/function-compute.md +273 -0
- package/ai-dlc-skill/providers/aliyun/services/overview.md +163 -0
- package/ai-dlc-skill/providers/aliyun/services/serverless-app-engine.md +266 -0
- package/ai-dlc-skill/providers/aliyun/services/storage.md +269 -0
- package/ai-dlc-skill/providers/tcb/SKILL.md +208 -0
- package/ai-dlc-skill/providers/tcb/api/rest-api.md +338 -0
- package/ai-dlc-skill/providers/tcb/api/sdk.md +288 -0
- package/ai-dlc-skill/providers/tcb/best-practices/database-design.md +452 -0
- package/ai-dlc-skill/providers/tcb/best-practices/function-design.md +502 -0
- package/ai-dlc-skill/providers/tcb/best-practices/troubleshooting.md +462 -0
- package/ai-dlc-skill/providers/tcb/cli/cls.md +133 -0
- package/ai-dlc-skill/providers/tcb/cli/database.md +230 -0
- package/ai-dlc-skill/providers/tcb/cli/env.md +207 -0
- package/ai-dlc-skill/providers/tcb/cli/functions.md +276 -0
- package/ai-dlc-skill/providers/tcb/cli/hosting.md +219 -0
- package/ai-dlc-skill/providers/tcb/cli/setup.md +218 -0
- package/ai-dlc-skill/providers/tcb/cli/storage.md +233 -0
- package/ai-dlc-skill/providers/tcb/deployment.yaml +111 -0
- package/ai-dlc-skill/providers/tcb/integration/ci-cd.md +309 -0
- package/ai-dlc-skill/providers/tcb/integration/mcp-server.md +371 -0
- package/ai-dlc-skill/providers/tcb/preview.yaml +83 -0
- package/ai-dlc-skill/providers/tcb/provider.yaml +172 -0
- package/ai-dlc-skill/providers/tcb/security/authentication.md +241 -0
- package/ai-dlc-skill/providers/tcb/services/cloud-database.md +299 -0
- package/ai-dlc-skill/providers/tcb/services/cloud-functions.md +265 -0
- package/ai-dlc-skill/providers/tcb/services/cloud-hosting.md +264 -0
- package/ai-dlc-skill/providers/tcb/services/cloud-run.md +285 -0
- package/ai-dlc-skill/providers/tcb/services/cloud-storage.md +245 -0
- package/ai-dlc-skill/providers/tcb/services/overview.md +174 -0
- package/ai-dlc-skill/pybdd/README.md +41 -0
- package/ai-dlc-skill/pybdd/conftest.py +17 -0
- package/ai-dlc-skill/pybdd/example/auth/login.feature +32 -0
- package/ai-dlc-skill/pybdd/pytest.ini +5 -0
- package/ai-dlc-skill/pybdd/steps/.gitkeep +1 -0
- package/ai-dlc-skill/pybdd/steps/test_example_steps.py +65 -0
- package/ai-dlc-skill/requirements.md +140 -0
- package/ai-dlc-skill/skill.yaml +135 -0
- package/ai-dlc-skill/templates/brownfield/context.md +78 -0
- package/ai-dlc-skill/templates/integration/CHANGELOG.md +41 -0
- package/ai-dlc-skill/templates/integration/asyncapi.yaml +43 -0
- package/ai-dlc-skill/templates/integration/contract-diff.md +63 -0
- package/ai-dlc-skill/templates/integration/contract-spec.md +49 -0
- package/ai-dlc-skill/templates/integration/openapi.yaml +18 -0
- package/ai-dlc-skill/templates/integration/runtime-contract.yaml +36 -0
- package/ai-dlc-skill/templates/plan/design.md +49 -0
- package/ai-dlc-skill/templates/plan/task-list.md +32 -0
- package/ai-dlc-skill/templates/project/README.md +126 -0
- package/ai-dlc-skill/templates/project/template.md +119 -0
- package/ai-dlc-skill/templates/understand/feature.feature +30 -0
- package/ai-dlc-skill/templates/understand/intent.md +29 -0
- package/ai-dlc-skill/templates/understand/spec-delta.md +47 -0
- package/ai-dlc-skill/templates/verify/test-unit.py +27 -0
- package/ai-dlc-skill/walkthrough/collect.sh +50 -0
- package/ai-dlc-skill/walkthrough/template.md +54 -0
- package/cdh/__init__.py +0 -0
- package/cdh/__main__.py +4 -0
- package/cdh/__pycache__/__init__.cpython-314.pyc +0 -0
- package/cdh/__pycache__/cli.cpython-314.pyc +0 -0
- package/cdh/__pycache__/cli_logging.cpython-314.pyc +0 -0
- package/cdh/__pycache__/config.cpython-314.pyc +0 -0
- package/cdh/__pycache__/project_loader.cpython-314.pyc +0 -0
- package/cdh/__pycache__/scaffold.cpython-314.pyc +0 -0
- package/cdh/__pycache__/session_store.cpython-314.pyc +0 -0
- package/cdh/cdh_session_aggregator.py +258 -0
- package/cdh/cli.py +3000 -0
- package/cdh/cli_logging.py +45 -0
- package/cdh/config.py +28 -0
- package/cdh/event_loop/__init__.py +7 -0
- package/cdh/event_loop/bus.py +123 -0
- package/cdh/event_loop/events.py +25 -0
- package/cdh/event_loop/runner.py +28 -0
- package/cdh/event_loop/scheduler.py +158 -0
- package/cdh/generators/__init__.py +35 -0
- package/cdh/generators/_runtime.py +176 -0
- package/cdh/generators/ada/MANIFEST.toml +14 -0
- package/cdh/generators/ada/template.ads.tmpl +7 -0
- package/cdh/generators/bash/MANIFEST.toml +14 -0
- package/cdh/generators/bash/template.sh.tmpl +16 -0
- package/cdh/generators/builtin_index.json +590 -0
- package/cdh/generators/c/MANIFEST.toml +14 -0
- package/cdh/generators/c/template.h.tmpl +20 -0
- package/cdh/generators/cli.py +379 -0
- package/cdh/generators/clojure/MANIFEST.toml +14 -0
- package/cdh/generators/clojure/template.clj.tmpl +13 -0
- package/cdh/generators/cobol/MANIFEST.toml +14 -0
- package/cdh/generators/cobol/template.cbl.tmpl +14 -0
- package/cdh/generators/cpp/MANIFEST.toml +14 -0
- package/cdh/generators/cpp/template.hpp.tmpl +32 -0
- package/cdh/generators/crystal/MANIFEST.toml +14 -0
- package/cdh/generators/crystal/template.cr.tmpl +11 -0
- package/cdh/generators/csharp/MANIFEST.toml +23 -0
- package/cdh/generators/csharp/template.cs.tmpl +14 -0
- package/cdh/generators/cython/MANIFEST.toml +14 -0
- package/cdh/generators/cython/template.pyx.tmpl +17 -0
- package/cdh/generators/d/MANIFEST.toml +14 -0
- package/cdh/generators/d/template.d.tmpl +24 -0
- package/cdh/generators/dart/MANIFEST.toml +17 -0
- package/cdh/generators/dart/template.dart.tmpl +27 -0
- package/cdh/generators/elixir/MANIFEST.toml +17 -0
- package/cdh/generators/elixir/template.ex.tmpl +27 -0
- package/cdh/generators/elm/MANIFEST.toml +14 -0
- package/cdh/generators/elm/template.elm.tmpl +20 -0
- package/cdh/generators/erlang/MANIFEST.toml +14 -0
- package/cdh/generators/erlang/template.erl.tmpl +18 -0
- package/cdh/generators/fortran/MANIFEST.toml +14 -0
- package/cdh/generators/fortran/template.f90.tmpl +24 -0
- package/cdh/generators/fsharp/MANIFEST.toml +14 -0
- package/cdh/generators/fsharp/template.fs.tmpl +17 -0
- package/cdh/generators/go/MANIFEST.toml +18 -0
- package/cdh/generators/go/imports.go.tmpl +3 -0
- package/cdh/generators/go/template.go.tmpl +9 -0
- package/cdh/generators/graphql-schema/MANIFEST.toml +18 -0
- package/cdh/generators/graphql-schema/template.graphqls.tmpl +12 -0
- package/cdh/generators/groovy/MANIFEST.toml +14 -0
- package/cdh/generators/groovy/template.groovy.tmpl +28 -0
- package/cdh/generators/hack/MANIFEST.toml +14 -0
- package/cdh/generators/hack/template.hh.tmpl +24 -0
- package/cdh/generators/haskell/MANIFEST.toml +14 -0
- package/cdh/generators/haskell/template.hs.tmpl +20 -0
- package/cdh/generators/haxe/MANIFEST.toml +14 -0
- package/cdh/generators/haxe/template.hx.tmpl +20 -0
- package/cdh/generators/idris/MANIFEST.toml +14 -0
- package/cdh/generators/idris/template.idr.tmpl +22 -0
- package/cdh/generators/java/MANIFEST.toml +18 -0
- package/cdh/generators/java/template.java.tmpl +13 -0
- package/cdh/generators/julia/MANIFEST.toml +14 -0
- package/cdh/generators/julia/template.jl.tmpl +27 -0
- package/cdh/generators/kotlin/MANIFEST.toml +18 -0
- package/cdh/generators/kotlin/template.kt.tmpl +12 -0
- package/cdh/generators/lua/MANIFEST.toml +14 -0
- package/cdh/generators/lua/template.lua.tmpl +27 -0
- package/cdh/generators/matlab/MANIFEST.toml +14 -0
- package/cdh/generators/matlab/template.m.tmpl +26 -0
- package/cdh/generators/nim/MANIFEST.toml +14 -0
- package/cdh/generators/nim/template.nim.tmpl +12 -0
- package/cdh/generators/nix/MANIFEST.toml +14 -0
- package/cdh/generators/nix/template.nix.tmpl +8 -0
- package/cdh/generators/objective-c/MANIFEST.toml +14 -0
- package/cdh/generators/objective-c/template.m.tmpl +31 -0
- package/cdh/generators/ocaml/MANIFEST.toml +14 -0
- package/cdh/generators/ocaml/template.ml.tmpl +13 -0
- package/cdh/generators/pascal/MANIFEST.toml +14 -0
- package/cdh/generators/pascal/template.pas.tmpl +5 -0
- package/cdh/generators/perl/MANIFEST.toml +14 -0
- package/cdh/generators/perl/template.pm.tmpl +27 -0
- package/cdh/generators/php/MANIFEST.toml +17 -0
- package/cdh/generators/php/template.php.tmpl +31 -0
- package/cdh/generators/powershell/MANIFEST.toml +14 -0
- package/cdh/generators/powershell/template.ps1.tmpl +20 -0
- package/cdh/generators/protobuf/MANIFEST.toml +18 -0
- package/cdh/generators/protobuf/template.proto.tmpl +13 -0
- package/cdh/generators/python/MANIFEST.toml +18 -0
- package/cdh/generators/python/template.py.tmpl +12 -0
- package/cdh/generators/r/MANIFEST.toml +14 -0
- package/cdh/generators/r/template.R.tmpl +29 -0
- package/cdh/generators/racket/MANIFEST.toml +14 -0
- package/cdh/generators/racket/template.rkt.tmpl +15 -0
- package/cdh/generators/registry.py +211 -0
- package/cdh/generators/ruby/MANIFEST.toml +17 -0
- package/cdh/generators/ruby/template.rb.tmpl +27 -0
- package/cdh/generators/rust/MANIFEST.toml +18 -0
- package/cdh/generators/rust/template.rs.tmpl +16 -0
- package/cdh/generators/scala/MANIFEST.toml +20 -0
- package/cdh/generators/scala/template.scala.tmpl +13 -0
- package/cdh/generators/scheme/MANIFEST.toml +14 -0
- package/cdh/generators/scheme/template.scm.tmpl +16 -0
- package/cdh/generators/solidity/MANIFEST.toml +14 -0
- package/cdh/generators/solidity/template.sol.tmpl +24 -0
- package/cdh/generators/swift/MANIFEST.toml +18 -0
- package/cdh/generators/swift/template.swift.tmpl +10 -0
- package/cdh/generators/typescript/MANIFEST.toml +18 -0
- package/cdh/generators/typescript/template.ts.tmpl +7 -0
- package/cdh/generators/version.py +214 -0
- package/cdh/generators/zig/MANIFEST.toml +14 -0
- package/cdh/generators/zig/template.zig.tmpl +20 -0
- package/cdh/logging.py +314 -0
- package/cdh/optimizer/__init__.py +7 -0
- package/cdh/optimizer/loop.py +201 -0
- package/cdh/optimizer/mutation.py +85 -0
- package/cdh/optimizer/reward.py +51 -0
- package/cdh/optimizer/tracker.py +118 -0
- package/cdh/project_loader.py +1022 -0
- package/cdh/rules/patterns.yaml +132 -0
- package/cdh/rules/spectral.yaml +301 -0
- package/cdh/scaffold.py +1436 -0
- package/cdh/session_store.py +221 -0
- package/cdh/state_schema.py +127 -0
- package/cdh/tools/__init__.py +57 -0
- package/cdh/tools/cls_search.py +406 -0
- package/cdh/tools/contract_diff.py +644 -0
- package/cdh/tools/deploy_stack.py +590 -0
- package/cdh/tools/generate_shared.py +300 -0
- package/cdh/tools/iac_gen.py +224 -0
- package/cdh/tools/otel_export.py +125 -0
- package/cdh/tools/pattern_detect.py +451 -0
- package/cdh/tools/retrofit_labels.py +505 -0
- package/cdh/trace/__init__.py +101 -0
- package/cdh/trace/__pycache__/__init__.cpython-314.pyc +0 -0
- package/cdh/trace/dashboard/__init__.py +61 -0
- package/cdh/trace/dashboard/api.py +1032 -0
- package/cdh/trace/dashboard/app.html +1321 -0
- package/cdh/trace/dashboard/server.py +310 -0
- package/cdh/trace/otel_exporter.py +462 -0
- package/cdh/trace/otel_tracer.py +281 -0
- package/cdh/tui.py +1084 -0
- package/cdh/validators/__init__.py +16 -0
- package/cdh/validators/__pycache__/__init__.cpython-314.pyc +0 -0
- package/cdh/validators/__pycache__/bdd.cpython-314.pyc +0 -0
- package/cdh/validators/__pycache__/dag.cpython-314.pyc +0 -0
- package/cdh/validators/__pycache__/ears.cpython-314.pyc +0 -0
- package/cdh/validators/__pycache__/fr_namespace.cpython-314.pyc +0 -0
- package/cdh/validators/bdd.py +144 -0
- package/cdh/validators/dag.py +179 -0
- package/cdh/validators/ears.py +452 -0
- package/cdh/validators/fr_namespace.py +143 -0
- package/cdh/validators/spectral.py +475 -0
- package/cdh/verification/__init__.py +3 -0
- package/cdh/verification/aggregation.py +53 -0
- package/cdh/verification/gates/__init__.py +5 -0
- package/cdh/verification/gates/base.py +18 -0
- package/cdh/verification/gates/lint_gate.py +37 -0
- package/cdh/verification/gates/test_gate.py +41 -0
- package/cdh/verification/loop.py +93 -0
- package/cdh/verification/policy.py +24 -0
- package/onecode/__init__.py +1 -0
- package/onecode/__main__.py +4 -0
- package/onecode/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/__pycache__/cli.cpython-314.pyc +0 -0
- package/onecode/__pycache__/commands.cpython-314.pyc +0 -0
- package/onecode/__pycache__/config.cpython-314.pyc +0 -0
- package/onecode/__pycache__/migrate.cpython-314.pyc +0 -0
- package/onecode/agent/__init__.py +0 -0
- package/onecode/agent/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/agent/__pycache__/cdh_loader.cpython-314.pyc +0 -0
- package/onecode/agent/__pycache__/checkpoint.cpython-314.pyc +0 -0
- package/onecode/agent/__pycache__/context.cpython-314.pyc +0 -0
- package/onecode/agent/__pycache__/engine.cpython-314.pyc +0 -0
- package/onecode/agent/__pycache__/hooks.cpython-314.pyc +0 -0
- package/onecode/agent/__pycache__/onecode_agent_acp.cpython-314.pyc +0 -0
- package/onecode/agent/__pycache__/permissions.cpython-314.pyc +0 -0
- package/onecode/agent/__pycache__/permissions_store.cpython-314.pyc +0 -0
- package/onecode/agent/__pycache__/project_doc.cpython-314.pyc +0 -0
- package/onecode/agent/__pycache__/session.cpython-314.pyc +0 -0
- package/onecode/agent/__pycache__/turn_record.cpython-314.pyc +0 -0
- package/onecode/agent/agents/__init__.py +29 -0
- package/onecode/agent/agents/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/agent/agents/__pycache__/types.cpython-314.pyc +0 -0
- package/onecode/agent/agents/prompts/build-agent.md +50 -0
- package/onecode/agent/agents/prompts/compaction-instructions.md +12 -0
- package/onecode/agent/agents/prompts/explore-agent.md +42 -0
- package/onecode/agent/agents/prompts/plan-agent.md +44 -0
- package/onecode/agent/agents/prompts/plan-gate-hard.md +4 -0
- package/onecode/agent/agents/prompts/plan-gate-soft.md +3 -0
- package/onecode/agent/agents/prompts/solo-agent.md +57 -0
- package/onecode/agent/agents/prompts/subagent-constraints.md +10 -0
- package/onecode/agent/agents/prompts/summary-instructions.md +7 -0
- package/onecode/agent/agents/prompts/title-instructions.md +3 -0
- package/onecode/agent/agents/prompts/tool-descriptions.md +129 -0
- package/onecode/agent/agents/types.py +786 -0
- package/onecode/agent/attachments.py +112 -0
- package/onecode/agent/cdh_loader.py +3 -0
- package/onecode/agent/checkpoint.py +285 -0
- package/onecode/agent/context.py +465 -0
- package/onecode/agent/engine.py +3547 -0
- package/onecode/agent/event_bridge.py +75 -0
- package/onecode/agent/hooks.py +86 -0
- package/onecode/agent/onecode_agent_acp.py +2993 -0
- package/onecode/agent/permissions.py +150 -0
- package/onecode/agent/permissions_store.py +73 -0
- package/onecode/agent/project_doc.py +19 -0
- package/onecode/agent/question_detect.py +230 -0
- package/onecode/agent/session.py +3 -0
- package/onecode/agent/snapshot.py +144 -0
- package/onecode/agent/tools/__init__.py +17 -0
- package/onecode/agent/tools/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/agent_tools.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/apply_patch_tool.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/bash_tool.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/communication_tools.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/config_tool.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/cron_tools.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/errors.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/file_ops.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/file_tools.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/git_tools.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/lsp_tools.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/mcp_tools.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/permission_handler.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/permissions.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/protocol.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/registry.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/sandbox.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/schema_validation.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/skill_tools.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/todo_tools.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/web_tools.cpython-314.pyc +0 -0
- package/onecode/agent/tools/agent_tools.py +128 -0
- package/onecode/agent/tools/apply_patch_tool.py +138 -0
- package/onecode/agent/tools/bash_tool.py +121 -0
- package/onecode/agent/tools/communication_tools.py +154 -0
- package/onecode/agent/tools/config_tool.py +130 -0
- package/onecode/agent/tools/cron_tools.py +178 -0
- package/onecode/agent/tools/errors.py +17 -0
- package/onecode/agent/tools/file_ops.py +221 -0
- package/onecode/agent/tools/file_tools.py +225 -0
- package/onecode/agent/tools/git_tools.py +88 -0
- package/onecode/agent/tools/lsp_tools.py +404 -0
- package/onecode/agent/tools/mcp_tools.py +211 -0
- package/onecode/agent/tools/permission_handler.py +46 -0
- package/onecode/agent/tools/permissions.py +77 -0
- package/onecode/agent/tools/protocol.py +20 -0
- package/onecode/agent/tools/registry.py +210 -0
- package/onecode/agent/tools/sandbox.py +460 -0
- package/onecode/agent/tools/schema_validation.py +100 -0
- package/onecode/agent/tools/skill_tools.py +52 -0
- package/onecode/agent/tools/todo_tools.py +208 -0
- package/onecode/agent/tools/web_tools.py +530 -0
- package/onecode/agent/turn_record.py +28 -0
- package/onecode/builtin_skills/agent-browser/SKILL.md +212 -0
- package/onecode/builtin_skills/agent-browser/skill.yaml +8 -0
- package/onecode/builtin_skills/cloudbase/SKILL.md +162 -0
- package/onecode/builtin_skills/cloudbase/skill.yaml +7 -0
- package/onecode/builtin_skills/git/SKILL.md +64 -0
- package/onecode/builtin_skills/git/skill.yaml +7 -0
- package/onecode/builtin_skills/shell/SKILL.md +58 -0
- package/onecode/builtin_skills/shell/skill.yaml +8 -0
- package/onecode/builtin_skills/skill-creator/SKILL.md +106 -0
- package/onecode/builtin_skills/skill-creator/skill.yaml +8 -0
- package/onecode/cli.py +1325 -0
- package/onecode/codebase/__init__.py +69 -0
- package/onecode/codebase/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/codebase/__pycache__/chunker.cpython-314.pyc +0 -0
- package/onecode/codebase/__pycache__/indexer.cpython-314.pyc +0 -0
- package/onecode/codebase/__pycache__/retriever.cpython-314.pyc +0 -0
- package/onecode/codebase/__pycache__/storage.cpython-314.pyc +0 -0
- package/onecode/codebase/__pycache__/tools.cpython-314.pyc +0 -0
- package/onecode/codebase/chunker.py +125 -0
- package/onecode/codebase/indexer.py +154 -0
- package/onecode/codebase/retriever.py +240 -0
- package/onecode/codebase/storage.py +153 -0
- package/onecode/codebase/tools.py +59 -0
- package/onecode/commands.py +673 -0
- package/onecode/config.py +539 -0
- package/onecode/config_screen.py +486 -0
- package/onecode/cron/__init__.py +3 -0
- package/onecode/lsp/__init__.py +3 -0
- package/onecode/mcp/__init__.py +11 -0
- package/onecode/mcp/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/mcp/__pycache__/client.cpython-314.pyc +0 -0
- package/onecode/mcp/__pycache__/cloudbase.cpython-314.pyc +0 -0
- package/onecode/mcp/__pycache__/config.cpython-314.pyc +0 -0
- package/onecode/mcp/__pycache__/manager.cpython-314.pyc +0 -0
- package/onecode/mcp/__pycache__/oauth.cpython-314.pyc +0 -0
- package/onecode/mcp/client.py +305 -0
- package/onecode/mcp/cloudbase.py +188 -0
- package/onecode/mcp/config.py +363 -0
- package/onecode/mcp/manager.py +603 -0
- package/onecode/mcp/oauth.py +199 -0
- package/onecode/memory/__init__.py +106 -0
- package/onecode/memory/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/memory/__pycache__/backend.cpython-314.pyc +0 -0
- package/onecode/memory/__pycache__/pyramid.cpython-314.pyc +0 -0
- package/onecode/memory/__pycache__/recall.cpython-314.pyc +0 -0
- package/onecode/memory/backend.py +179 -0
- package/onecode/memory/pyramid.py +145 -0
- package/onecode/memory/recall.py +322 -0
- package/onecode/migrate.py +122 -0
- package/onecode/models/__init__.py +4 -0
- package/onecode/models/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/models/__pycache__/errors.cpython-314.pyc +0 -0
- package/onecode/models/__pycache__/messages.cpython-314.pyc +0 -0
- package/onecode/models/__pycache__/ollama_manager.cpython-314.pyc +0 -0
- package/onecode/models/__pycache__/provider.cpython-314.pyc +0 -0
- package/onecode/models/__pycache__/registry.cpython-314.pyc +0 -0
- package/onecode/models/errors.py +104 -0
- package/onecode/models/messages.py +750 -0
- package/onecode/models/ollama_manager.py +167 -0
- package/onecode/models/provider.py +730 -0
- package/onecode/models/providers/__init__.py +17 -0
- package/onecode/models/providers/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/models/providers/__pycache__/anthropic_provider.cpython-314.pyc +0 -0
- package/onecode/models/providers/__pycache__/deepseek_provider.cpython-314.pyc +0 -0
- package/onecode/models/providers/__pycache__/glm_provider.cpython-314.pyc +0 -0
- package/onecode/models/providers/__pycache__/minimax_provider.cpython-314.pyc +0 -0
- package/onecode/models/providers/__pycache__/minimaxi_provider.cpython-314.pyc +0 -0
- package/onecode/models/providers/__pycache__/ollama_provider.cpython-314.pyc +0 -0
- package/onecode/models/providers/__pycache__/openai_provider.cpython-314.pyc +0 -0
- package/onecode/models/providers/anthropic_provider.py +286 -0
- package/onecode/models/providers/deepseek_provider.py +221 -0
- package/onecode/models/providers/glm_provider.py +219 -0
- package/onecode/models/providers/minimax_provider.py +182 -0
- package/onecode/models/providers/minimaxi_provider.py +426 -0
- package/onecode/models/providers/ollama_provider.py +183 -0
- package/onecode/models/providers/openai_provider.py +234 -0
- package/onecode/models/registry.py +349 -0
- package/onecode/server/__init__.py +3 -0
- package/onecode/server/app.py +251 -0
- package/onecode/skills/__init__.py +11 -0
- package/onecode/skills/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/skills/__pycache__/argument_substitution.cpython-314.pyc +0 -0
- package/onecode/skills/__pycache__/bootstrap.cpython-314.pyc +0 -0
- package/onecode/skills/__pycache__/create.cpython-314.pyc +0 -0
- package/onecode/skills/__pycache__/frontmatter.cpython-314.pyc +0 -0
- package/onecode/skills/__pycache__/loader.cpython-314.pyc +0 -0
- package/onecode/skills/__pycache__/model.cpython-314.pyc +0 -0
- package/onecode/skills/argument_substitution.py +38 -0
- package/onecode/skills/bootstrap.py +37 -0
- package/onecode/skills/create.py +56 -0
- package/onecode/skills/frontmatter.py +33 -0
- package/onecode/skills/loader.py +215 -0
- package/onecode/skills/manager.py +75 -0
- package/onecode/skills/model.py +43 -0
- package/onecode/storage/__init__.py +0 -0
- package/onecode/storage/activity.py +63 -0
- package/onecode/storage/project.py +54 -0
- package/onecode/storage/session.py +112 -0
- package/onecode/tasks/__init__.py +26 -0
- package/onecode/tasks/manager.py +232 -0
- package/onecode/tasks/models.py +240 -0
- package/onecode/trace/__init__.py +0 -0
- package/onecode/trace/tracer.py +173 -0
- package/onecode/utils/__init__.py +0 -0
- package/onecode/utils/helpers.py +20 -0
- package/onecode/verification/__init__.py +5 -0
- package/onecode/verification/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/verification/__pycache__/aggregation.cpython-314.pyc +0 -0
- package/onecode/verification/__pycache__/loop.cpython-314.pyc +0 -0
- package/onecode/verification/__pycache__/policy.cpython-314.pyc +0 -0
- package/onecode/verification/aggregation.py +53 -0
- package/onecode/verification/gates/__init__.py +6 -0
- package/onecode/verification/gates/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/verification/gates/__pycache__/base.cpython-314.pyc +0 -0
- package/onecode/verification/gates/__pycache__/lint_gate.cpython-314.pyc +0 -0
- package/onecode/verification/gates/__pycache__/test_gate.cpython-314.pyc +0 -0
- package/onecode/verification/gates/__pycache__/type_gate.cpython-314.pyc +0 -0
- package/onecode/verification/gates/base.py +20 -0
- package/onecode/verification/gates/lint_gate.py +45 -0
- package/onecode/verification/gates/test_gate.py +62 -0
- package/onecode/verification/gates/type_gate.py +46 -0
- package/onecode/verification/loop.py +95 -0
- package/onecode/verification/policy.py +29 -0
- package/package.json +2 -2
- package/pyproject.toml +84 -0
- package/tui/__init__.py +46 -0
- package/tui/__main__.py +4 -0
- package/tui/__pycache__/__init__.cpython-314.pyc +0 -0
- package/tui/__pycache__/_loop.cpython-314.pyc +0 -0
- package/tui/__pycache__/_path_fuzzy_search.cpython-314.pyc +0 -0
- package/tui/__pycache__/_path_match.cpython-314.pyc +0 -0
- package/tui/__pycache__/agent.cpython-314.pyc +0 -0
- package/tui/__pycache__/agent_schema.cpython-314.pyc +0 -0
- package/tui/__pycache__/agents.cpython-314.pyc +0 -0
- package/tui/__pycache__/answer.cpython-314.pyc +0 -0
- package/tui/__pycache__/app.cpython-314.pyc +0 -0
- package/tui/__pycache__/atomic.cpython-314.pyc +0 -0
- package/tui/__pycache__/complete.cpython-314.pyc +0 -0
- package/tui/__pycache__/constants.cpython-314.pyc +0 -0
- package/tui/__pycache__/conversation_markdown.cpython-314.pyc +0 -0
- package/tui/__pycache__/db.cpython-314.pyc +0 -0
- package/tui/__pycache__/dec.cpython-314.pyc +0 -0
- package/tui/__pycache__/directory.cpython-314.pyc +0 -0
- package/tui/__pycache__/directory_watcher.cpython-314.pyc +0 -0
- package/tui/__pycache__/format_path.cpython-314.pyc +0 -0
- package/tui/__pycache__/fuzzy.cpython-314.pyc +0 -0
- package/tui/__pycache__/fuzzy_index.cpython-314.pyc +0 -0
- package/tui/__pycache__/history.cpython-314.pyc +0 -0
- package/tui/__pycache__/jsonrpc.cpython-314.pyc +0 -0
- package/tui/__pycache__/menus.cpython-314.pyc +0 -0
- package/tui/__pycache__/message_log.cpython-314.pyc +0 -0
- package/tui/__pycache__/messages.cpython-314.pyc +0 -0
- package/tui/__pycache__/path_complete.cpython-314.pyc +0 -0
- package/tui/__pycache__/path_filter.cpython-314.pyc +0 -0
- package/tui/__pycache__/paths.cpython-314.pyc +0 -0
- package/tui/__pycache__/pill.cpython-314.pyc +0 -0
- package/tui/__pycache__/platform_commands.cpython-314.pyc +0 -0
- package/tui/__pycache__/protocol.cpython-314.pyc +0 -0
- package/tui/__pycache__/session_tracker.cpython-314.pyc +0 -0
- package/tui/__pycache__/settings.cpython-314.pyc +0 -0
- package/tui/__pycache__/settings_schema.cpython-314.pyc +0 -0
- package/tui/__pycache__/shell.cpython-314.pyc +0 -0
- package/tui/__pycache__/shell_read.cpython-314.pyc +0 -0
- package/tui/__pycache__/slash_command.cpython-314.pyc +0 -0
- package/tui/__pycache__/version.cpython-314.pyc +0 -0
- package/tui/_loop.py +86 -0
- package/tui/_path_fuzzy_search.py +48 -0
- package/tui/_path_match.py +141 -0
- package/tui/about.py +95 -0
- package/tui/acp/__pycache__/agent.cpython-314.pyc +0 -0
- package/tui/acp/__pycache__/api.cpython-314.pyc +0 -0
- package/tui/acp/__pycache__/encode_tool_call_id.cpython-314.pyc +0 -0
- package/tui/acp/__pycache__/event_tap.cpython-314.pyc +0 -0
- package/tui/acp/__pycache__/messages.cpython-314.pyc +0 -0
- package/tui/acp/__pycache__/prompt.cpython-314.pyc +0 -0
- package/tui/acp/__pycache__/protocol.cpython-314.pyc +0 -0
- package/tui/acp/agent.py +1212 -0
- package/tui/acp/api.py +79 -0
- package/tui/acp/encode_tool_call_id.py +12 -0
- package/tui/acp/event_tap.py +107 -0
- package/tui/acp/messages.py +222 -0
- package/tui/acp/prompt.py +53 -0
- package/tui/acp/protocol.py +551 -0
- package/tui/agent.py +70 -0
- package/tui/agent_schema.py +76 -0
- package/tui/agents.py +46 -0
- package/tui/ansi/__init__.py +1 -0
- package/tui/ansi/__pycache__/__init__.cpython-314.pyc +0 -0
- package/tui/ansi/__pycache__/_ansi.cpython-314.pyc +0 -0
- package/tui/ansi/__pycache__/_ansi_colors.cpython-314.pyc +0 -0
- package/tui/ansi/__pycache__/_control_codes.cpython-314.pyc +0 -0
- package/tui/ansi/__pycache__/_keys.cpython-314.pyc +0 -0
- package/tui/ansi/__pycache__/_sgr_styles.cpython-314.pyc +0 -0
- package/tui/ansi/__pycache__/_stream_parser.cpython-314.pyc +0 -0
- package/tui/ansi/_ansi.py +1689 -0
- package/tui/ansi/_ansi_colors.py +264 -0
- package/tui/ansi/_control_codes.py +37 -0
- package/tui/ansi/_keys.py +251 -0
- package/tui/ansi/_sgr_styles.py +64 -0
- package/tui/ansi/_stream_parser.py +418 -0
- package/tui/answer.py +12 -0
- package/tui/app.py +1195 -0
- package/tui/atomic.py +37 -0
- package/tui/cli.py +208 -0
- package/tui/code_analyze.py +27 -0
- package/tui/complete.py +38 -0
- package/tui/constants.py +61 -0
- package/tui/conversation_markdown.py +30 -0
- package/tui/danger.py +372 -0
- package/tui/data/agents/ampcode.com.toml +52 -0
- package/tui/data/agents/augmentcode.com.toml +41 -0
- package/tui/data/agents/cdh.cloud-dev-harness.toml +23 -0
- package/tui/data/agents/claude.com.toml +41 -0
- package/tui/data/agents/copilot.github.com.toml +29 -0
- package/tui/data/agents/crowai.dev.toml +36 -0
- package/tui/data/agents/cursor.com.toml +38 -0
- package/tui/data/agents/deepagents.langchain.com +34 -0
- package/tui/data/agents/docker.com.toml +60 -0
- package/tui/data/agents/geminicli.com.toml +28 -0
- package/tui/data/agents/goose.ai.toml +52 -0
- package/tui/data/agents/inference.huggingface.co.toml +41 -0
- package/tui/data/agents/kimi.com.toml +35 -0
- package/tui/data/agents/kiro.dev.toml +43 -0
- package/tui/data/agents/onecode.dev.toml +22 -0
- package/tui/data/agents/openai.com.toml +53 -0
- package/tui/data/agents/openclaw.ai.toml +37 -0
- package/tui/data/agents/opencode.ai.toml +39 -0
- package/tui/data/agents/openhands.dev.toml +46 -0
- package/tui/data/agents/stakpak.dev.toml +62 -0
- package/tui/data/agents/vibe.mistral.ai.toml +31 -0
- package/tui/data/agents/vtcode.dev.toml +63 -0
- package/tui/data/images/frog.png +0 -0
- package/tui/data/sounds/question.wav +0 -0
- package/tui/data/sounds/turn-over.wav +0 -0
- package/tui/db.py +213 -0
- package/tui/dec.py +332 -0
- package/tui/diff_utils.py +131 -0
- package/tui/directory.py +234 -0
- package/tui/directory_suggester.py +93 -0
- package/tui/directory_watcher.py +231 -0
- package/tui/format_path.py +25 -0
- package/tui/fuzzy.py +140 -0
- package/tui/fuzzy_index.py +275 -0
- package/tui/gist.py +33 -0
- package/tui/history.py +138 -0
- package/tui/jsonrpc.py +599 -0
- package/tui/menus.py +14 -0
- package/tui/message_log.py +69 -0
- package/tui/messages.py +144 -0
- package/tui/option_content.py +51 -0
- package/tui/os.py +0 -0
- package/tui/path_complete.py +217 -0
- package/tui/path_filter.py +124 -0
- package/tui/paths.py +87 -0
- package/tui/pill.py +23 -0
- package/tui/platform_commands.py +52 -0
- package/tui/prompt/__pycache__/extract.cpython-314.pyc +0 -0
- package/tui/prompt/__pycache__/resource.cpython-314.pyc +0 -0
- package/tui/prompt/extract.py +19 -0
- package/tui/prompt/resource.py +68 -0
- package/tui/protocol.py +28 -0
- package/tui/screens/__init__.py +0 -0
- package/tui/screens/__pycache__/__init__.cpython-314.pyc +0 -0
- package/tui/screens/__pycache__/diff_screen.cpython-314.pyc +0 -0
- package/tui/screens/__pycache__/main.cpython-314.pyc +0 -0
- package/tui/screens/__pycache__/sessions.cpython-314.pyc +0 -0
- package/tui/screens/action_modal.py +94 -0
- package/tui/screens/agent_modal.py +175 -0
- package/tui/screens/command_edit_modal.py +74 -0
- package/tui/screens/diff_explorer_screen.py +419 -0
- package/tui/screens/diff_screen.py +84 -0
- package/tui/screens/ide_screen.py +461 -0
- package/tui/screens/main.py +397 -0
- package/tui/screens/main.tcss +662 -0
- package/tui/screens/permissions.py +404 -0
- package/tui/screens/permissions.tcss +72 -0
- package/tui/screens/projects.tcss +84 -0
- package/tui/screens/projects_app.py +341 -0
- package/tui/screens/projects_screen.py +277 -0
- package/tui/screens/session_resume_modal.py +172 -0
- package/tui/screens/session_resume_modal.tcss +35 -0
- package/tui/screens/sessions.py +171 -0
- package/tui/screens/sessions.tcss +119 -0
- package/tui/screens/settings.py +293 -0
- package/tui/screens/settings.tcss +113 -0
- package/tui/screens/store.py +502 -0
- package/tui/screens/store.tcss +274 -0
- package/tui/screens/tool_content_screen.py +59 -0
- package/tui/screens/trace.py +317 -0
- package/tui/session_tracker.py +123 -0
- package/tui/settings.py +353 -0
- package/tui/settings_schema.py +467 -0
- package/tui/shell.py +304 -0
- package/tui/shell_read.py +42 -0
- package/tui/slash_command.py +34 -0
- package/tui/tui.tcss +246 -0
- package/tui/twitter.py +38 -0
- package/tui/version.py +80 -0
- package/tui/visuals/__init__.py +0 -0
- package/tui/visuals/__pycache__/__init__.cpython-314.pyc +0 -0
- package/tui/visuals/__pycache__/columns.cpython-314.pyc +0 -0
- package/tui/visuals/columns.py +272 -0
- package/tui/widgets/__init__.py +0 -0
- package/tui/widgets/__pycache__/__init__.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/agent_response.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/agent_thought.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/aidlc.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/ask_user.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/condensed_path.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/context_stats.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/conversation.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/diff_view.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/flash.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/future_text.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/grid_select.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/highlighted_textarea.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/load_more.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/menu.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/modified_files.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/non_selectable_label.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/note.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/path_search.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/pending_prompts.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/plan.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/project_directory_tree.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/prompt.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/question.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/session_grid_select.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/session_summary.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/session_tabs.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/shell_terminal.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/side_bar.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/slash_complete.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/strike_text.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/terminal.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/throbber.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/tool_call.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/user_input.cpython-314.pyc +0 -0
- package/tui/widgets/acp_content.py +70 -0
- package/tui/widgets/agent_response.py +76 -0
- package/tui/widgets/agent_thought.py +167 -0
- package/tui/widgets/aidlc.py +334 -0
- package/tui/widgets/ask_user.py +604 -0
- package/tui/widgets/command_pane.py +223 -0
- package/tui/widgets/condensed_path.py +115 -0
- package/tui/widgets/context_stats.py +66 -0
- package/tui/widgets/conversation.py +3235 -0
- package/tui/widgets/danger_warning.py +65 -0
- package/tui/widgets/diff_view.py +69 -0
- package/tui/widgets/directory_input.py +8 -0
- package/tui/widgets/edit_field.py +206 -0
- package/tui/widgets/flash.py +81 -0
- package/tui/widgets/future_text.py +126 -0
- package/tui/widgets/grid_select.py +234 -0
- package/tui/widgets/highlighted_textarea.py +183 -0
- package/tui/widgets/load_more.py +24 -0
- package/tui/widgets/mandelbrot.py +294 -0
- package/tui/widgets/markdown_note.py +13 -0
- package/tui/widgets/menu.py +147 -0
- package/tui/widgets/model_status.py +230 -0
- package/tui/widgets/modified_files.py +315 -0
- package/tui/widgets/non_selectable_label.py +5 -0
- package/tui/widgets/note.py +18 -0
- package/tui/widgets/path_search.py +492 -0
- package/tui/widgets/pending_prompts.py +36 -0
- package/tui/widgets/plan.py +285 -0
- package/tui/widgets/project_directory_tree.py +102 -0
- package/tui/widgets/project_grid_select.py +68 -0
- package/tui/widgets/project_summary.py +33 -0
- package/tui/widgets/prompt.py +935 -0
- package/tui/widgets/question.py +360 -0
- package/tui/widgets/session_grid_select.py +230 -0
- package/tui/widgets/session_summary.py +115 -0
- package/tui/widgets/session_tabs.py +194 -0
- package/tui/widgets/shell_result.py +35 -0
- package/tui/widgets/shell_terminal.py +40 -0
- package/tui/widgets/side_bar.py +124 -0
- package/tui/widgets/slash_complete.py +235 -0
- package/tui/widgets/strike_text.py +70 -0
- package/tui/widgets/subagent.py +287 -0
- package/tui/widgets/subagent_screen.py +715 -0
- package/tui/widgets/terminal.py +576 -0
- package/tui/widgets/terminal_tool.py +360 -0
- package/tui/widgets/throbber.py +100 -0
- package/tui/widgets/tool_call.py +432 -0
- package/tui/widgets/user_input.py +23 -0
- package/tui/widgets/version.py +5 -0
- package/tui/widgets/welcome.py +31 -0
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
# TCB Authentication & Credentials
|
|
2
|
+
|
|
3
|
+
## Credential Types
|
|
4
|
+
|
|
5
|
+
| Type | Security | Use Case |
|
|
6
|
+
|------|----------|----------|
|
|
7
|
+
| Root Tencent Cloud credentials | ⚠️ Low (full access) | Not recommended |
|
|
8
|
+
| TCB-specific API key | ✅ Recommended | Production use |
|
|
9
|
+
| Temporary credentials (STS) | ✅✅ Best | Short-lived access |
|
|
10
|
+
| Anonymous login | ⚠️ Limited | Client-side only |
|
|
11
|
+
|
|
12
|
+
## Agent Decision Guide
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
Need to authenticate with TCB?
|
|
16
|
+
├── From CI/CD pipeline → Environment variables (TCB_SECRET_ID/KEY)
|
|
17
|
+
├── From local CLI → tcb login (interactive)
|
|
18
|
+
├── From AI agent (CDH) → cdh cloudbase init
|
|
19
|
+
├── From function code → Injected environment variables
|
|
20
|
+
└── From browser/client → Anonymous or custom login
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Environment Variables
|
|
24
|
+
|
|
25
|
+
### For CLI and Server-Side
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# Option 1: Tencent Cloud root credentials (not recommended)
|
|
29
|
+
export TENCENTCLOUD_SECRETID=AKIDxxxxxxxx
|
|
30
|
+
export TENCENTCLOUD_SECRETKEY=xxxxxxxx
|
|
31
|
+
|
|
32
|
+
# Option 2: TCB-specific credentials (recommended)
|
|
33
|
+
export TCB_SECRET_ID=AKIDxxxxxxxx
|
|
34
|
+
export TCB_SECRET_KEY=xxxxxxxx
|
|
35
|
+
|
|
36
|
+
# Environment ID
|
|
37
|
+
export TCB_ENV_ID=env-xxxxx
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Credential Priority
|
|
41
|
+
|
|
42
|
+
When both are set, TCB-specific credentials take priority:
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
TCB_SECRET_ID/KEY > TENCENTCLOUD_SECRETID/KEY
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Creating API Keys
|
|
49
|
+
|
|
50
|
+
### 1. Create via Tencent Cloud Console
|
|
51
|
+
|
|
52
|
+
1. Go to [Tencent Cloud Console](https://console.cloud.tencent.com/)
|
|
53
|
+
2. Navigate to: Access Keys → API Key Management
|
|
54
|
+
3. Create new key (or use existing)
|
|
55
|
+
|
|
56
|
+
### 2. Create TCB-Specific Credential
|
|
57
|
+
|
|
58
|
+
1. Go to TCB Console
|
|
59
|
+
2. Navigate to: Settings → API Keys
|
|
60
|
+
3. Create new TCB API key
|
|
61
|
+
|
|
62
|
+
**Benefits of TCB-specific credentials:**
|
|
63
|
+
- Limited to TCB services only
|
|
64
|
+
- Easier to rotate
|
|
65
|
+
- Audit trail per service
|
|
66
|
+
|
|
67
|
+
## Temporary Credentials (STS)
|
|
68
|
+
|
|
69
|
+
For short-lived access, use STS tokens:
|
|
70
|
+
|
|
71
|
+
### Get STS Token
|
|
72
|
+
|
|
73
|
+
```javascript
|
|
74
|
+
const tcb = require('@cloudbase/node-sdk');
|
|
75
|
+
|
|
76
|
+
const app = tcb.init({
|
|
77
|
+
env: process.env.TCB_ENV_ID
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
// Get temporary credentials
|
|
81
|
+
const { credentials } = await app.getTempCredentials();
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### STS Token Response
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"credentials": {
|
|
89
|
+
"tmpSecretId": "临时SecretId",
|
|
90
|
+
"tmpSecretKey": "临时SecretKey",
|
|
91
|
+
"sessionToken": "临时Token"
|
|
92
|
+
},
|
|
93
|
+
"expiredTime": 1640000000
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Use STS Token
|
|
98
|
+
|
|
99
|
+
```javascript
|
|
100
|
+
const app = tcb.init({
|
|
101
|
+
env: process.env.TCB_ENV_ID,
|
|
102
|
+
credentials: {
|
|
103
|
+
secretId: tempCredentials.tmpSecretId,
|
|
104
|
+
secretKey: tempCredentials.tmpSecretKey,
|
|
105
|
+
sessionToken: tempCredentials.sessionToken
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Credential Security Best Practices
|
|
111
|
+
|
|
112
|
+
### Do's ✅
|
|
113
|
+
|
|
114
|
+
1. **Use environment variables** - Don't hardcode credentials
|
|
115
|
+
2. **Rotate regularly** - Change API keys periodically
|
|
116
|
+
3. **Use TCB-specific credentials** - Over Tencent Cloud root keys
|
|
117
|
+
4. **Use least privilege** - Only grant needed permissions
|
|
118
|
+
5. **Store in secrets manager** - GitHub Secrets, Vault, etc.
|
|
119
|
+
6. **Use STS for client-side** - Temporary credentials expire
|
|
120
|
+
|
|
121
|
+
### Don'ts ❌
|
|
122
|
+
|
|
123
|
+
1. **Commit credentials** - Never commit to git
|
|
124
|
+
2. **Use root credentials** - In production workloads
|
|
125
|
+
3. **Share credentials** - Each user/service should have own key
|
|
126
|
+
4. **Use same credentials everywhere** - Separate per environment
|
|
127
|
+
|
|
128
|
+
## .gitignore for Credentials
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
# TCB credentials
|
|
132
|
+
cloudbaserc.json
|
|
133
|
+
!.cloudbaserc.*.json
|
|
134
|
+
.tcbrc
|
|
135
|
+
|
|
136
|
+
# CDH tokens
|
|
137
|
+
.cloud-harness-tokens.json
|
|
138
|
+
|
|
139
|
+
# Environment files
|
|
140
|
+
.env
|
|
141
|
+
.env.*
|
|
142
|
+
!.env.example
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Function Authentication
|
|
146
|
+
|
|
147
|
+
### How Functions Receive Credentials
|
|
148
|
+
|
|
149
|
+
TCB automatically injects environment variables into functions:
|
|
150
|
+
|
|
151
|
+
```javascript
|
|
152
|
+
exports.main = async (event, context) => {
|
|
153
|
+
// Available automatically in TCB functions
|
|
154
|
+
const envId = process.env.TCB_ENV_ID;
|
|
155
|
+
const secretId = process.env.TENCENTCLOUD_SECRETID;
|
|
156
|
+
const secretKey = process.env.TENCENTCLOUD_SECRETKEY;
|
|
157
|
+
|
|
158
|
+
console.log(`Running in environment: ${envId}`);
|
|
159
|
+
};
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Calling TCB Services from Functions
|
|
163
|
+
|
|
164
|
+
```javascript
|
|
165
|
+
const tcb = require('@cloudbase/node-sdk');
|
|
166
|
+
|
|
167
|
+
exports.main = async (event, context) => {
|
|
168
|
+
// Use injected credentials automatically
|
|
169
|
+
const app = tcb.init({
|
|
170
|
+
env: process.env.TCB_ENV_ID
|
|
171
|
+
// Credentials auto-injected from environment
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
// Query database
|
|
175
|
+
const db = app.database();
|
|
176
|
+
const { data } = await db.collection('users').get();
|
|
177
|
+
|
|
178
|
+
return { count: data.length };
|
|
179
|
+
};
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Client-Side Authentication
|
|
183
|
+
|
|
184
|
+
### Anonymous Login (for public data)
|
|
185
|
+
|
|
186
|
+
```javascript
|
|
187
|
+
const tcb = require('@cloudbase/js-sdk');
|
|
188
|
+
|
|
189
|
+
const app = tcb.init({
|
|
190
|
+
env: 'env-xxxxx'
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
// Sign in anonymously
|
|
194
|
+
await app.auth().anonymousAuthProvider().signIn();
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Custom Login (for authenticated users)
|
|
198
|
+
|
|
199
|
+
```javascript
|
|
200
|
+
const tcb = require('@cloudbase/js-sdk');
|
|
201
|
+
|
|
202
|
+
const app = tcb.init({
|
|
203
|
+
env: 'env-xxxxx'
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
// After server-side login returns custom token
|
|
207
|
+
await app.auth().signInWithCustomToken(customToken);
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Permission Model
|
|
211
|
+
|
|
212
|
+
### TCB Permissions
|
|
213
|
+
|
|
214
|
+
| Permission | Description |
|
|
215
|
+
|------------|-------------|
|
|
216
|
+
| `tcb:env:*` | Full environment access |
|
|
217
|
+
| `tcb:env:read` | Read-only environment access |
|
|
218
|
+
| `tcb:function:*` | Full function management |
|
|
219
|
+
| `tcb:function:invoke` | Invoke functions only |
|
|
220
|
+
| `tcb:database:*` | Full database access |
|
|
221
|
+
| `tcb:storage:*` | Full storage access |
|
|
222
|
+
| `tcb:hosting:*` | Full hosting access |
|
|
223
|
+
|
|
224
|
+
### Creating Limited Permissions
|
|
225
|
+
|
|
226
|
+
1. Go to [CAM](https://console.cloud.tencent.com/cam)
|
|
227
|
+
2. Create custom policy
|
|
228
|
+
3. Attach to specific API key
|
|
229
|
+
4. Grant minimum required permissions
|
|
230
|
+
|
|
231
|
+
## Troubleshooting
|
|
232
|
+
|
|
233
|
+
| Issue | Cause | Solution |
|
|
234
|
+
|-------|-------|----------|
|
|
235
|
+
| `Invalid SecretId` | Wrong or expired key | Verify API key in console |
|
|
236
|
+
| `Signature failed` | Key mismatch | Check secret key matches |
|
|
237
|
+
| `Permission denied` | Insufficient permissions | Grant more permissions |
|
|
238
|
+
| `Token expired` | STS token too old | Refresh temporary credentials |
|
|
239
|
+
| `Login required` | Not authenticated | Run `tcb login` or set env vars |
|
|
240
|
+
|
|
241
|
+
For general troubleshooting → `../best-practices/troubleshooting.md`
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
# CloudBase Database
|
|
2
|
+
|
|
3
|
+
## When to Use Each Database Type
|
|
4
|
+
|
|
5
|
+
**Use DocDB (NoSQL) when:**
|
|
6
|
+
- Schema is flexible or evolving rapidly
|
|
7
|
+
- JSON-like data structure (nested objects, arrays)
|
|
8
|
+
- No complex joins needed
|
|
9
|
+
- High write throughput required
|
|
10
|
+
- Data model is document-centric
|
|
11
|
+
|
|
12
|
+
**Use MySQL (RDBMS) when:**
|
|
13
|
+
- Need ACID transactions
|
|
14
|
+
- Complex SQL queries with joins
|
|
15
|
+
- Fixed, well-defined schema
|
|
16
|
+
- Data integrity is critical
|
|
17
|
+
- Reporting and analytics
|
|
18
|
+
|
|
19
|
+
**Do NOT use TCB Database when:**
|
|
20
|
+
- Need GraphDB or specialized databases → Use Tencent Cloud directly
|
|
21
|
+
|
|
22
|
+
## Agent Decision Guide
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
Need to store data?
|
|
26
|
+
├── Flexible JSON documents, no joins → DocDB (NoSQL)
|
|
27
|
+
├── Relational data, SQL needed → MySQL
|
|
28
|
+
└── Both needed → Use DocDB for most data, MySQL for transactions
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## DocDB (NoSQL Document Database)
|
|
32
|
+
|
|
33
|
+
### Data Model
|
|
34
|
+
|
|
35
|
+
- **Collection** = Table (analogous)
|
|
36
|
+
- **Document** = Row (JSON object)
|
|
37
|
+
- **Field** = Column
|
|
38
|
+
- No fixed schema - documents in same collection can have different fields
|
|
39
|
+
|
|
40
|
+
### Document Example
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"_id": "unique-document-id",
|
|
45
|
+
"name": "John Doe",
|
|
46
|
+
"email": "john@example.com",
|
|
47
|
+
"profile": {
|
|
48
|
+
"age": 30,
|
|
49
|
+
"city": "Shanghai"
|
|
50
|
+
},
|
|
51
|
+
"tags": ["developer", "cloud"],
|
|
52
|
+
"createdAt": "2024-01-01T00:00:00Z"
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Query Syntax (Mongoose-like)
|
|
57
|
+
|
|
58
|
+
```javascript
|
|
59
|
+
// Equal query
|
|
60
|
+
db.collection('users').where({ status: 'active' }).get()
|
|
61
|
+
|
|
62
|
+
// Comparison operators
|
|
63
|
+
db.collection('users').where({
|
|
64
|
+
age: db.command.gte(18),
|
|
65
|
+
status: 'active'
|
|
66
|
+
}).get()
|
|
67
|
+
|
|
68
|
+
// Or query
|
|
69
|
+
db.collection('users').where(
|
|
70
|
+
db.command.or([
|
|
71
|
+
{ status: 'active' },
|
|
72
|
+
{ vip: true }
|
|
73
|
+
])
|
|
74
|
+
).get()
|
|
75
|
+
|
|
76
|
+
// Regex search
|
|
77
|
+
db.collection('users').where({
|
|
78
|
+
name: db.RegExp({ pattern: '^John' })
|
|
79
|
+
}).get()
|
|
80
|
+
|
|
81
|
+
// Pagination
|
|
82
|
+
db.collection('users').skip(10).limit(20).get()
|
|
83
|
+
|
|
84
|
+
// Ordering
|
|
85
|
+
db.collection('users').orderBy('createdAt', 'desc').get()
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Aggregation
|
|
89
|
+
|
|
90
|
+
```javascript
|
|
91
|
+
db.collection('orders').aggregate()
|
|
92
|
+
.match({ status: 'completed' })
|
|
93
|
+
.group({ _id: '$productId', total: $.sum('$amount') })
|
|
94
|
+
.sort({ total: -1 })
|
|
95
|
+
.limit(10)
|
|
96
|
+
.end()
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## MySQL (Relational Database)
|
|
100
|
+
|
|
101
|
+
### Connection
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Via CLI (for migrations and admin)
|
|
105
|
+
tcb db migrate --env $TCB_ENV_ID
|
|
106
|
+
|
|
107
|
+
# Or use standard MySQL client
|
|
108
|
+
mysql -h ${MYSQL_HOST} -P ${MYSQL_PORT} -u ${MYSQL_USER} -p${MYSQL_PASSWORD}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Schema Design
|
|
112
|
+
|
|
113
|
+
```sql
|
|
114
|
+
-- Users table
|
|
115
|
+
CREATE TABLE users (
|
|
116
|
+
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
|
117
|
+
openid VARCHAR(64) UNIQUE NOT NULL,
|
|
118
|
+
nickname VARCHAR(128),
|
|
119
|
+
avatar_url VARCHAR(512),
|
|
120
|
+
status TINYINT DEFAULT 1,
|
|
121
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
122
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
123
|
+
INDEX idx_status (status),
|
|
124
|
+
INDEX idx_created (created_at)
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
-- Orders table
|
|
128
|
+
CREATE TABLE orders (
|
|
129
|
+
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
|
130
|
+
order_no VARCHAR(64) UNIQUE NOT NULL,
|
|
131
|
+
user_id BIGINT NOT NULL,
|
|
132
|
+
amount DECIMAL(10, 2) NOT NULL,
|
|
133
|
+
status VARCHAR(32) NOT NULL,
|
|
134
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
135
|
+
FOREIGN KEY (user_id) REFERENCES users(id),
|
|
136
|
+
INDEX idx_user (user_id),
|
|
137
|
+
INDEX idx_order_no (order_no)
|
|
138
|
+
);
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Transaction Support
|
|
142
|
+
|
|
143
|
+
```javascript
|
|
144
|
+
// Use MySQL for transactions
|
|
145
|
+
const connection = await mysql.createConnection({
|
|
146
|
+
host: process.env.MYSQL_HOST,
|
|
147
|
+
port: process.env.MYSQL_PORT,
|
|
148
|
+
user: process.env.MYSQL_USER,
|
|
149
|
+
password: process.env.MYSQL_PASSWORD,
|
|
150
|
+
database: process.env.MYSQL_DATABASE
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
await connection.beginTransaction();
|
|
154
|
+
try {
|
|
155
|
+
await connection.execute(
|
|
156
|
+
'INSERT INTO orders (order_no, user_id, amount) VALUES (?, ?, ?)',
|
|
157
|
+
[orderNo, userId, amount]
|
|
158
|
+
);
|
|
159
|
+
await connection.execute(
|
|
160
|
+
'UPDATE users SET status = ? WHERE id = ?',
|
|
161
|
+
['active', userId]
|
|
162
|
+
);
|
|
163
|
+
await connection.commit();
|
|
164
|
+
} catch (error) {
|
|
165
|
+
await connection.rollback();
|
|
166
|
+
throw error;
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## CLI Reference (DocDB)
|
|
171
|
+
|
|
172
|
+
| Command | Description |
|
|
173
|
+
|---------|-------------|
|
|
174
|
+
| `tcb db list --env <envId>` | List collections |
|
|
175
|
+
| `tcb db query "<sql-like>" --env <envId>` | Query documents |
|
|
176
|
+
| `tcb db migrate --env <envId>` | Run migrations |
|
|
177
|
+
| `tcb db import --collection <name> --file <path> --env <envId>` | Import JSON |
|
|
178
|
+
| `tcb db export --collection <name> --file <path> --env <envId>` | Export to JSON |
|
|
179
|
+
|
|
180
|
+
## CLI Reference (MySQL)
|
|
181
|
+
|
|
182
|
+
| Command | Description |
|
|
183
|
+
|---------|-------------|
|
|
184
|
+
| `tcb db migrate` | Run SQL migrations |
|
|
185
|
+
| `tcb db query "<sql>"` | Execute SQL query (admin only) |
|
|
186
|
+
|
|
187
|
+
## Limits and Quotas
|
|
188
|
+
|
|
189
|
+
| Limit | DocDB | MySQL |
|
|
190
|
+
|-------|-------|-------|
|
|
191
|
+
| Storage per env | 2GB | 20GB |
|
|
192
|
+
| Max collections | 100 | N/A |
|
|
193
|
+
| Max document size | 16MB | N/A |
|
|
194
|
+
| Max fields per document | 500 | N/A |
|
|
195
|
+
| Concurrent connections | 1000 | 100 |
|
|
196
|
+
| Max query result | 1000 (client-side pagination needed) | 10000 |
|
|
197
|
+
|
|
198
|
+
## Database Selection Flow
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
┌─────────────────┐
|
|
202
|
+
│ Need to store │
|
|
203
|
+
│ data? │
|
|
204
|
+
└────────┬────────┘
|
|
205
|
+
│
|
|
206
|
+
┌──────────────┼──────────────┐
|
|
207
|
+
│ │ │
|
|
208
|
+
▼ ▼ ▼
|
|
209
|
+
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
210
|
+
│ Flexible │ │ Relational, │ │ Need full │
|
|
211
|
+
│ JSON docs │ │ SQL │ │ ACID? │
|
|
212
|
+
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
|
|
213
|
+
│ │ │
|
|
214
|
+
▼ ▼ ▼
|
|
215
|
+
DocDB (NoSQL) MySQL (RDBMS) MySQL (RDBMS)
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## Indexing Strategy
|
|
219
|
+
|
|
220
|
+
### DocDB Indexes
|
|
221
|
+
|
|
222
|
+
```javascript
|
|
223
|
+
// Create index
|
|
224
|
+
db.collection('users').createIndex({
|
|
225
|
+
'email': 1,
|
|
226
|
+
'status': 1,
|
|
227
|
+
'createdAt': -1
|
|
228
|
+
}, { background: true });
|
|
229
|
+
|
|
230
|
+
// Composite index for common queries
|
|
231
|
+
// Query: { status: 'active', createdAt: { $gte: date } }
|
|
232
|
+
// Index: { status: 1, createdAt: -1 }
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### MySQL Indexes
|
|
236
|
+
|
|
237
|
+
```sql
|
|
238
|
+
-- Single column
|
|
239
|
+
CREATE INDEX idx_email ON users(email);
|
|
240
|
+
|
|
241
|
+
-- Composite (for WHERE status = ? AND created_at > ?)
|
|
242
|
+
CREATE INDEX idx_status_created ON users(status, created_at);
|
|
243
|
+
|
|
244
|
+
-- Covering index (includes all columns needed)
|
|
245
|
+
CREATE INDEX idx_status_created_covering ON users(status, created_at, id, nickname);
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## Best Practices
|
|
249
|
+
|
|
250
|
+
### DocDB
|
|
251
|
+
|
|
252
|
+
1. **Denormalize for read performance** - Embed related data, don't join
|
|
253
|
+
2. **Design for query patterns** - Create indexes matching your queries
|
|
254
|
+
3. **Use pagination** - Always use `skip()` and `limit()` for large datasets
|
|
255
|
+
4. **Implement soft delete** - Don't hard delete, use `status` field
|
|
256
|
+
5. **Use meaningful `_id`** - Consider using business IDs as `_id`
|
|
257
|
+
|
|
258
|
+
### MySQL
|
|
259
|
+
|
|
260
|
+
1. **Normalize for write integrity** - Use proper relations
|
|
261
|
+
2. **Index wisely** - Too many indexes slow writes
|
|
262
|
+
3. **Use connection pooling** - Don't create new connection per request
|
|
263
|
+
4. **Parameterize queries** - Prevent SQL injection
|
|
264
|
+
5. **Use transactions** - For operations affecting multiple tables
|
|
265
|
+
|
|
266
|
+
## Accessing Databases from Functions
|
|
267
|
+
|
|
268
|
+
```javascript
|
|
269
|
+
const tcb = require('@cloudbase/node-sdk');
|
|
270
|
+
const app = tcb.init({
|
|
271
|
+
env: process.env.TCB_ENV_ID,
|
|
272
|
+
credentials: {
|
|
273
|
+
secretId: process.env.TENCENTCLOUD_SECRETID,
|
|
274
|
+
secretKey: process.env.TENCENTCLOUD_SECRETKEY
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
// DocDB
|
|
279
|
+
const db = app.database();
|
|
280
|
+
const { data } = await db.collection('users').where({ status: 'active' }).get();
|
|
281
|
+
|
|
282
|
+
// MySQL (via http function calling backend)
|
|
283
|
+
const res = await app.callFunction({
|
|
284
|
+
name: 'mysql-query',
|
|
285
|
+
data: { sql: 'SELECT * FROM users' }
|
|
286
|
+
});
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
## Troubleshooting
|
|
290
|
+
|
|
291
|
+
| Issue | Cause | Solution |
|
|
292
|
+
|-------|-------|----------|
|
|
293
|
+
| Query timeout | Large dataset, no index | Add index, use pagination |
|
|
294
|
+
| Connection refused | Wrong credentials | Verify TCB_SECRET_ID/KEY |
|
|
295
|
+
| Document too large | > 16MB | Split into smaller docs, use COS for file storage |
|
|
296
|
+
| Write quota exceeded | Environment limits | Clean up old data or upgrade environment |
|
|
297
|
+
| SQL syntax error | Invalid SQL | Check MySQL syntax (TCB MySQL is standard MySQL) |
|
|
298
|
+
|
|
299
|
+
For detailed troubleshooting → `../best-practices/troubleshooting.md`
|