@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,219 @@
|
|
|
1
|
+
# TCB CLI: Hosting Management
|
|
2
|
+
|
|
3
|
+
## When to Use Hosting Commands
|
|
4
|
+
|
|
5
|
+
| Goal | Command | Notes |
|
|
6
|
+
|------|---------|-------|
|
|
7
|
+
| Deploy static site | `tcb hosting deploy` | Main command |
|
|
8
|
+
| List hosting projects | `tcb hosting list` | View current deployments |
|
|
9
|
+
| Get hosting details | `tcb hosting detail` | See config and URLs |
|
|
10
|
+
| Add custom domain | `tcb hosting domain add` | HTTPS auto-provisioned |
|
|
11
|
+
| Delete hosting | `tcb hosting delete` | Removes all deployed files |
|
|
12
|
+
|
|
13
|
+
## Decision Tree for Hosting Operations
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
Need to deploy static content?
|
|
17
|
+
├── Deploy to shared env → deploy_stack --preview --provider tcb
|
|
18
|
+
├── Deploy to personal dev → tcb hosting deploy
|
|
19
|
+
├── Add custom domain → tcb hosting domain add
|
|
20
|
+
└── Delete deployment → tcb hosting delete (dev only)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Deploy Static Site
|
|
24
|
+
|
|
25
|
+
### Basic Deployment
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
tcb hosting deploy --env $TCB_ENV_ID --dir ./dist
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### With Build Environment Variables
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
tcb hosting deploy \
|
|
35
|
+
--env $TCB_ENV_ID \
|
|
36
|
+
--dir ./dist \
|
|
37
|
+
--build-env BACKEND_URL=$STACK_URL \
|
|
38
|
+
--build-env API_KEY=$API_KEY
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### With Configuration File
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
// cloudbaserc.json
|
|
45
|
+
{
|
|
46
|
+
"hosting": {
|
|
47
|
+
"dev": {
|
|
48
|
+
"cloudPath": "./dist",
|
|
49
|
+
"envId": "env-xxxxx",
|
|
50
|
+
"ignore": ["*.map", "node_modules/**"]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
tcb hosting deploy --env dev
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Deployment Options
|
|
61
|
+
|
|
62
|
+
| Option | Description |
|
|
63
|
+
|--------|-------------|
|
|
64
|
+
| `--env <envId>` | Target environment |
|
|
65
|
+
| `--dir <path>` | Local directory to deploy |
|
|
66
|
+
| `--build-env <key=value>` | Environment variables for build |
|
|
67
|
+
| `--force` | Overwrite existing files |
|
|
68
|
+
| `--yes` | Skip confirmation |
|
|
69
|
+
|
|
70
|
+
## List Hosting Projects
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
tcb hosting list --env $TCB_ENV_ID
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Output:
|
|
77
|
+
```
|
|
78
|
+
┌──────────────┬────────────────────────────┬──────────────┐
|
|
79
|
+
│ Environment │ URL │ Status │
|
|
80
|
+
├──────────────┼────────────────────────────┼──────────────┤
|
|
81
|
+
│ env-xxxxx │ https://env-xxxxx.tcb-preview.com │ deployed │
|
|
82
|
+
└──────────────┴────────────────────────────┴──────────────┘
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Get Hosting Details
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
tcb hosting detail --env $TCB_ENV_ID
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Shows:
|
|
92
|
+
- Current URL
|
|
93
|
+
- Custom domains
|
|
94
|
+
- Last deployment time
|
|
95
|
+
- File count
|
|
96
|
+
- Storage used
|
|
97
|
+
|
|
98
|
+
## Add Custom Domain
|
|
99
|
+
|
|
100
|
+
### Step 1: Add Domain
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
tcb hosting domain add --domain example.com --env $TCB_ENV_ID
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Output shows DNS records to add:
|
|
107
|
+
```
|
|
108
|
+
Please add the following DNS record:
|
|
109
|
+
Type: CNAME
|
|
110
|
+
Name: example.com
|
|
111
|
+
Value: env-xxxxx.tcb-ext.com
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Step 2: Configure DNS
|
|
115
|
+
|
|
116
|
+
Add CNAME record in your DNS provider:
|
|
117
|
+
```
|
|
118
|
+
Type: CNAME
|
|
119
|
+
Host: example.com
|
|
120
|
+
Value: env-xxxxx.tcb-ext.com
|
|
121
|
+
TTL: 600
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Step 3: Wait for SSL
|
|
125
|
+
|
|
126
|
+
SSL certificate auto-provisions via Let's Encrypt (1-5 minutes).
|
|
127
|
+
|
|
128
|
+
### Verify Domain
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
tcb hosting domain list --env $TCB_ENV_ID
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Domain HTTPS
|
|
135
|
+
|
|
136
|
+
- Certificate auto-provisioned
|
|
137
|
+
- Supports custom ports (443 only for HTTPS)
|
|
138
|
+
- Redirect from HTTP to HTTPS automatic
|
|
139
|
+
|
|
140
|
+
## Delete Hosting
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
tcb hosting delete --env $TCB_ENV_ID
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**Warning:** Deletes all deployed files. Cannot be undone.
|
|
147
|
+
|
|
148
|
+
## URL Patterns
|
|
149
|
+
|
|
150
|
+
| Environment | URL Pattern |
|
|
151
|
+
|-------------|-------------|
|
|
152
|
+
| Preview | `https://{env-id}.tcb-preview.com` |
|
|
153
|
+
| Custom Domain | `https://{your-domain.com}` |
|
|
154
|
+
| Staging | `https://{env-id}.tcb-preview.com` |
|
|
155
|
+
| Production | `https://{env-id}.tcb-ext.com` or custom domain |
|
|
156
|
+
|
|
157
|
+
## Agent Workflows
|
|
158
|
+
|
|
159
|
+
### Workflow: Deploy Web App with Backend URL
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
# 1. Get backend URL from stack
|
|
163
|
+
export STACK_URL=$(deploy_stack --preview --provider tcb --output url)
|
|
164
|
+
|
|
165
|
+
# 2. Deploy web with backend URL injected
|
|
166
|
+
tcb hosting deploy \
|
|
167
|
+
--env $TCB_ENV_ID \
|
|
168
|
+
--dir ./dist \
|
|
169
|
+
--build-env BACKEND_URL=$STACK_URL
|
|
170
|
+
|
|
171
|
+
# 3. Get web URL
|
|
172
|
+
export WEB_URL=$(deploy_stack --preview --provider tcb --output web_url)
|
|
173
|
+
|
|
174
|
+
# 4. Run e2e tests
|
|
175
|
+
pytest apps/web/tests/e2e/ --base-url $WEB_URL --api-url $BACKEND_URL
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Workflow: Deploy with Cache Busting
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
# Deploy with --force to ensure all files uploaded
|
|
182
|
+
tcb hosting deploy --env $TCB_ENV_ID --dir ./dist --force
|
|
183
|
+
|
|
184
|
+
# Or use content-hashed filenames (handled by build tools like Vite)
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Workflow: Debug Deployment
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
# 1. Check hosting status
|
|
191
|
+
tcb hosting detail --env $TCB_ENV_ID
|
|
192
|
+
|
|
193
|
+
# 2. List deployed files
|
|
194
|
+
tcb storage list --path /hosting --env $TCB_ENV_ID
|
|
195
|
+
|
|
196
|
+
# 3. Verify index.html exists
|
|
197
|
+
tcb storage list --path /hosting/index.html --env $TCB_ENV_ID
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Troubleshooting
|
|
201
|
+
|
|
202
|
+
| Issue | Cause | Solution |
|
|
203
|
+
|-------|-------|----------|
|
|
204
|
+
| `No index.html found` | Directory doesn't contain index.html | Ensure correct `--dir` path |
|
|
205
|
+
| `Deployment failed` | Build error | Check build output for errors |
|
|
206
|
+
| `404 on routes` | SPA routing not working | Should work automatically, check CDN |
|
|
207
|
+
| `Stale content` | Cache not cleared | Deploy with `--force` |
|
|
208
|
+
| `Domain not working` | DNS not propagated | Wait 5-10 min, verify CNAME |
|
|
209
|
+
| `SSL not ready` | Certificate provisioning | Wait 1-5 minutes |
|
|
210
|
+
|
|
211
|
+
### SPA Routing Issue
|
|
212
|
+
|
|
213
|
+
CloudBase Hosting automatically handles SPA routing (rewrites 404 to index.html). If routes return 404:
|
|
214
|
+
|
|
215
|
+
1. Verify `index.html` exists in deployed files
|
|
216
|
+
2. Check CDN cache (deploy with `--force`)
|
|
217
|
+
3. Verify your build tool outputs correct paths
|
|
218
|
+
|
|
219
|
+
For detailed troubleshooting → `../best-practices/troubleshooting.md`
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# TCB CLI Setup & Authentication
|
|
2
|
+
|
|
3
|
+
## When to Use CLI vs MCP vs SDK
|
|
4
|
+
|
|
5
|
+
**Use CLI when:**
|
|
6
|
+
- Deploying functions, databases, hosting from CI/CD
|
|
7
|
+
- Running one-off administrative tasks
|
|
8
|
+
- Scripting cloud operations
|
|
9
|
+
- Initial setup and configuration
|
|
10
|
+
|
|
11
|
+
**Use MCP when:**
|
|
12
|
+
- AI agent needs structured, composable tools
|
|
13
|
+
- Need to chain multiple operations
|
|
14
|
+
- Want type-safe parameter handling
|
|
15
|
+
|
|
16
|
+
**Use SDK when:**
|
|
17
|
+
- Building applications that interact with TCB
|
|
18
|
+
- Need programmatic access from within functions
|
|
19
|
+
- Complex business logic involving TCB services
|
|
20
|
+
|
|
21
|
+
## Installation
|
|
22
|
+
|
|
23
|
+
### Prerequisites
|
|
24
|
+
|
|
25
|
+
- Node.js 16.x or later
|
|
26
|
+
- npm or yarn
|
|
27
|
+
|
|
28
|
+
### Install CloudBase CLI
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm install -g @cloudbase/cli
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Verify installation:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
tcb --version
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Update CLI
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npm install -g @cloudbase/cli@latest
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Authentication Methods
|
|
47
|
+
|
|
48
|
+
### Method 1: Interactive Login (Recommended for local dev)
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
tcb login
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Opens browser for Tencent Cloud login. Session stored locally.
|
|
55
|
+
|
|
56
|
+
**Pros:** No credentials stored in plain text
|
|
57
|
+
**Cons:** Not suitable for CI/CD
|
|
58
|
+
|
|
59
|
+
### Method 2: API Key Authentication (Recommended for CI/CD)
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Set environment variables
|
|
63
|
+
export TENCENTCLOUD_SECRETID=your-secret-id
|
|
64
|
+
export TENCENTCLOUD_SECRETKEY=your-secret-key
|
|
65
|
+
|
|
66
|
+
# Or use TCB-specific credentials
|
|
67
|
+
export TCB_SECRET_ID=your-secret-id
|
|
68
|
+
export TCB_SECRET_KEY=your-secret-key
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Method 3: Configuration File
|
|
72
|
+
|
|
73
|
+
Store credentials in `~/.tcbrc` (not recommended for production):
|
|
74
|
+
|
|
75
|
+
```json
|
|
76
|
+
{
|
|
77
|
+
"secretId": "your-secret-id",
|
|
78
|
+
"secretKey": "your-secret-key"
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Method 4: Temporary Credentials via CDH
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
cdh cloudbase init --secret-id xxx --secret-key xxx
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
This stores credentials in `~/.cloud-harness-tokens.json` and auto-configures MCP.
|
|
89
|
+
|
|
90
|
+
## Credential Selection Decision Tree
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
Need to run TCB commands?
|
|
94
|
+
├── Local development
|
|
95
|
+
│ └── tcb login (interactive)
|
|
96
|
+
├── CI/CD pipeline
|
|
97
|
+
│ ├── Use environment variables (TCB_SECRET_ID/KEY)
|
|
98
|
+
│ └── Never commit credentials to git
|
|
99
|
+
├── AI Agent (CDH)
|
|
100
|
+
│ └── cdh cloudbase init (stores in ~/.cloud-harness-tokens.json)
|
|
101
|
+
└── From within a function
|
|
102
|
+
└── Environment variables (injected by TCB)
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Verifying Authentication
|
|
106
|
+
|
|
107
|
+
### Check Login Status
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
tcb env info
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
If authenticated, shows current environment info. If not, shows login prompt.
|
|
114
|
+
|
|
115
|
+
### Check MCP Status (CDH)
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
cdh cloudbase status
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Shows MCP server connection status and credential validity.
|
|
122
|
+
|
|
123
|
+
## Environment Variables Reference
|
|
124
|
+
|
|
125
|
+
| Variable | Description | Source |
|
|
126
|
+
|----------|-------------|--------|
|
|
127
|
+
| `TENCENTCLOUD_SECRETID` | Tencent Cloud root credential ID | Manual or `cdh cloudbase init` |
|
|
128
|
+
| `TENCENTCLOUD_SECRETKEY` | Tencent Cloud root credential key | Manual or `cdh cloudbase init` |
|
|
129
|
+
| `TCB_SECRET_ID` | TCB-specific credential ID | Manual or `cdh cloudbase init` |
|
|
130
|
+
| `TCB_SECRET_KEY` | TCB-specific credential key | Manual or `cdh cloudbase init` |
|
|
131
|
+
| `TCB_ENV_ID` | Target environment ID | Manual or `cdh cloudbase init` |
|
|
132
|
+
|
|
133
|
+
## Project-Level Configuration
|
|
134
|
+
|
|
135
|
+
For project-specific settings, create `cloudbaserc.json` in project root:
|
|
136
|
+
|
|
137
|
+
```json
|
|
138
|
+
{
|
|
139
|
+
"envId": "env-xxxxx",
|
|
140
|
+
"$schema": "https://raw.githubusercontent.com/TencentCloudBase/tcb-schema/main/schema.json",
|
|
141
|
+
"region": "ap-shanghai"
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Environment-Specific Config
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"envId": "${TCB_ENV_ID}",
|
|
150
|
+
"region": "ap-shanghai",
|
|
151
|
+
"functionRoot": "./functions",
|
|
152
|
+
"functions": [
|
|
153
|
+
{
|
|
154
|
+
"name": "hello",
|
|
155
|
+
"timeout": 10,
|
|
156
|
+
"memory": 256
|
|
157
|
+
}
|
|
158
|
+
],
|
|
159
|
+
"hosting": {
|
|
160
|
+
"dev": {
|
|
161
|
+
"cloudPath": "./dist",
|
|
162
|
+
"envId": "env-dev"
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## CLI Configuration
|
|
169
|
+
|
|
170
|
+
### Set Default Region
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
tcb configure set region ap-shanghai
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Set Default Environment
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
tcb configure set envId env-xxxxx
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### View Current Config
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
tcb configure list
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Security Best Practices
|
|
189
|
+
|
|
190
|
+
1. **Never commit credentials** - Add `*.json` with credentials to `.gitignore`
|
|
191
|
+
2. **Use environment variables in CI/CD** - Don't hardcode secrets
|
|
192
|
+
3. **Rotate credentials regularly** - Use TCB_SECRET_ID/KEY instead of root credentials
|
|
193
|
+
4. **Use least privilege** - Create dedicated API keys with minimal permissions
|
|
194
|
+
5. **Don't use root credentials** - TCB-specific credentials are preferred
|
|
195
|
+
|
|
196
|
+
### .gitignore Example
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
# TCB credentials
|
|
200
|
+
cloudbaserc.json
|
|
201
|
+
!.cloudbaserc.*.json
|
|
202
|
+
.tcbrc
|
|
203
|
+
|
|
204
|
+
# CDH tokens
|
|
205
|
+
.cloud-harness-tokens.json
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Troubleshooting
|
|
209
|
+
|
|
210
|
+
| Issue | Cause | Solution |
|
|
211
|
+
|-------|-------|----------|
|
|
212
|
+
| ` command not found: tcb` | CLI not installed | `npm install -g @cloudbase/cli` |
|
|
213
|
+
| `Login required` | Not authenticated | `tcb login` or set env vars |
|
|
214
|
+
| `Invalid credentials` | Wrong secret ID/key | Verify credentials in TCB console |
|
|
215
|
+
| `Permission denied` | Insufficient permissions | Check API key permissions in TCB console |
|
|
216
|
+
| `envId not found` | Wrong environment ID | `tcb env list` to see valid environments |
|
|
217
|
+
|
|
218
|
+
For detailed troubleshooting → `../best-practices/troubleshooting.md`
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
# TCB CLI: Storage Management
|
|
2
|
+
|
|
3
|
+
## When to Use Storage Commands
|
|
4
|
+
|
|
5
|
+
| Goal | Command | Notes |
|
|
6
|
+
|------|---------|-------|
|
|
7
|
+
| List files | `tcb storage list` | Path is case-sensitive |
|
|
8
|
+
| Upload file | `tcb storage upload` | Max 50GB per file |
|
|
9
|
+
| Download file | `tcb storage download` | From COS to local |
|
|
10
|
+
| Delete file | `tcb storage delete` | Permanent deletion |
|
|
11
|
+
| Get file URL | `tcb storage url` | Signed URL for private files |
|
|
12
|
+
|
|
13
|
+
## Decision Tree for Storage Operations
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
Need to work with files?
|
|
17
|
+
├── Upload user content → tcb storage upload
|
|
18
|
+
├── Download backup/file → tcb storage download
|
|
19
|
+
├── List directory → tcb storage list
|
|
20
|
+
├── Delete old files → tcb storage delete
|
|
21
|
+
├── Get public URL → tcb storage url
|
|
22
|
+
└── Large file upload → Use server-side upload flow (see services/cloud-storage.md)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## List Files
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
tcb storage list --path /uploads --env $TCB_ENV_ID
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Output:
|
|
32
|
+
```
|
|
33
|
+
┌────────────────────────────────┬──────────────┬──────────────────┐
|
|
34
|
+
│ Path │ Size │ Last Modified │
|
|
35
|
+
├────────────────────────────────┼──────────────┼──────────────────┤
|
|
36
|
+
│ /uploads/avatar.jpg │ 125 KB │ 2024-01-15 10:30 │
|
|
37
|
+
│ /uploads/doc.pdf │ 2.3 MB │ 2024-01-14 15:22 │
|
|
38
|
+
│ /uploads/image.png │ 450 KB │ 2024-01-13 09:45 │
|
|
39
|
+
└────────────────────────────────┴──────────────┴──────────────────┘
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### List with Pagination
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
tcb storage list --path /uploads --num 20 --marker <next-token> --env $TCB_ENV_ID
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### List Subdirectory
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
tcb storage list --path /uploads/2024/01 --env $TCB_ENV_ID
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Upload File
|
|
55
|
+
|
|
56
|
+
### Basic Upload
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
tcb storage upload --local ./avatar.jpg --remote /uploads/avatar.jpg --env $TCB_ENV_ID
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### With Content-Type
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
tcb storage upload \
|
|
66
|
+
--local ./document.pdf \
|
|
67
|
+
--remote /documents/report.pdf \
|
|
68
|
+
--content-type application/pdf \
|
|
69
|
+
--env $TCB_ENV_ID
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Upload with Progress
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
tcb storage upload \
|
|
76
|
+
--local ./large-file.zip \
|
|
77
|
+
--remote /backups/large-file.zip \
|
|
78
|
+
--env $TCB_ENV_ID
|
|
79
|
+
# Shows progress bar
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Upload Options
|
|
83
|
+
|
|
84
|
+
| Option | Description |
|
|
85
|
+
|--------|-------------|
|
|
86
|
+
| `--local <path>` | Local file path |
|
|
87
|
+
| `--remote <path>` | Remote COS path |
|
|
88
|
+
| `--content-type <type>` | MIME type (auto-detected if not specified) |
|
|
89
|
+
| `--env <envId>` | Target environment |
|
|
90
|
+
|
|
91
|
+
## Download File
|
|
92
|
+
|
|
93
|
+
### Basic Download
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
tcb storage download --local ./download.jpg --remote /uploads/avatar.jpg --env $TCB_ENV_ID
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Download with Progress
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
tcb storage download \
|
|
103
|
+
--local ./backup.zip \
|
|
104
|
+
--remote /backups/latest.zip \
|
|
105
|
+
--env $TCB_ENV_ID
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Delete File
|
|
109
|
+
|
|
110
|
+
### Delete Single File
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
tcb storage delete --remote /uploads/old-file.jpg --env $TCB_ENV_ID
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Delete Multiple Files
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# Delete specific files
|
|
120
|
+
tcb storage delete --remote /uploads/file1.jpg --env $TCB_ENV_ID
|
|
121
|
+
tcb storage delete --remote /uploads/file2.jpg --env $TCB_ENV_ID
|
|
122
|
+
|
|
123
|
+
# Or use pattern (via function)
|
|
124
|
+
# Call function to delete files matching pattern
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Delete Folder Contents
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
# List first to verify
|
|
131
|
+
tcb storage list --path /temp --env $TCB_ENV_ID
|
|
132
|
+
|
|
133
|
+
# Delete each file
|
|
134
|
+
for f in $(tcb storage list --path /temp --env $TCB_ENV_ID | grep -o '/temp/[^ ]*'); do
|
|
135
|
+
tcb storage delete --remote "$f" --env $TCB_ENV_ID
|
|
136
|
+
done
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Get File URL
|
|
140
|
+
|
|
141
|
+
### Get Signed URL (Private Files)
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
tcb storage url --remote /uploads/private.pdf --env $TCB_ENV_ID
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Returns a signed URL valid for 1 hour.
|
|
148
|
+
|
|
149
|
+
### Get URL with Custom Expiry
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
tcb storage url --remote /uploads/doc.pdf --expiry 3600 --env $TCB_ENV_ID
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### URL Types
|
|
156
|
+
|
|
157
|
+
| File Type | URL Type | Access |
|
|
158
|
+
|-----------|----------|--------|
|
|
159
|
+
| Public assets | Direct URL | Anyone with link |
|
|
160
|
+
| Private files | Signed URL | Valid for expiry period |
|
|
161
|
+
|
|
162
|
+
## Create/Delete Folder
|
|
163
|
+
|
|
164
|
+
### Create Folder
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
tcb storage createFolder --path /uploads/2024 --env $TCB_ENV_ID
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**Note:** In COS, "folders" are just empty objects with `/` suffix.
|
|
171
|
+
|
|
172
|
+
### Delete Empty Folder
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
tcb storage deleteFolder --path /uploads/2024 --env $TCB_ENV_ID
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Note:** Folder must be empty.
|
|
179
|
+
|
|
180
|
+
## Agent Workflows
|
|
181
|
+
|
|
182
|
+
### Workflow: Upload User Avatar
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
# 1. Upload file
|
|
186
|
+
tcb storage upload \
|
|
187
|
+
--local ./temp_avatar.jpg \
|
|
188
|
+
--remote /avatars/${userId}/avatar.jpg \
|
|
189
|
+
--env $TCB_ENV_ID
|
|
190
|
+
|
|
191
|
+
# 2. Get public URL (if public bucket)
|
|
192
|
+
tcb storage url --remote /avatars/${userId}/avatar.jpg --env $TCB_ENV_ID
|
|
193
|
+
|
|
194
|
+
# 3. Return URL to frontend
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Workflow: Backup Database
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
# 1. Export database
|
|
201
|
+
tcb db export --collection users --file ./backup/users.json --env $TCB_ENV_ID
|
|
202
|
+
|
|
203
|
+
# 2. Upload to storage
|
|
204
|
+
tcb storage upload \
|
|
205
|
+
--local ./backup/users.json \
|
|
206
|
+
--remote /backups/users_$(date +%Y%m%d).json \
|
|
207
|
+
--env $TCB_ENV_ID
|
|
208
|
+
|
|
209
|
+
# 3. Cleanup local file
|
|
210
|
+
rm ./backup/users.json
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Workflow: Cleanup Old Files
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
# 1. List files older than 30 days
|
|
217
|
+
# (COS doesn't have native date filter, so list and filter in function)
|
|
218
|
+
|
|
219
|
+
# 2. Delete old temp files
|
|
220
|
+
tcb fn invoke --name cleanup-temp-files --params '{}' --env $TCB_ENV_ID
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Troubleshooting
|
|
224
|
+
|
|
225
|
+
| Issue | Cause | Solution |
|
|
226
|
+
|-------|-------|----------|
|
|
227
|
+
| `File not found` | Wrong path | Check path is case-sensitive |
|
|
228
|
+
| `Upload failed` | File too large | Use server-side upload flow |
|
|
229
|
+
| `Permission denied` | No write access | Check environment permissions |
|
|
230
|
+
| `Invalid path` | Path format wrong | Use `/folder/file.jpg` format |
|
|
231
|
+
| `Download failed` | File doesn't exist | Verify with `tcb storage list` |
|
|
232
|
+
|
|
233
|
+
For detailed troubleshooting → `../best-practices/troubleshooting.md`
|