@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,285 @@
|
|
|
1
|
+
# CloudBase Run (CaaS)
|
|
2
|
+
|
|
3
|
+
## When to Use CloudBase Run
|
|
4
|
+
|
|
5
|
+
**Use CloudBase Run when:**
|
|
6
|
+
- Long-running processes (> 60s timeout)
|
|
7
|
+
- Need persistent state or connections
|
|
8
|
+
- Require GPU or large memory (> 1536MB)
|
|
9
|
+
- Custom runtime not supported by Functions
|
|
10
|
+
- Container-based microservices architecture
|
|
11
|
+
- WebSocket connections that persist
|
|
12
|
+
|
|
13
|
+
**Do NOT use CloudBase Run when:**
|
|
14
|
+
- Short, stateless functions → Use CloudBase Functions
|
|
15
|
+
- Event-driven, bursty workloads → Use CloudBase Functions
|
|
16
|
+
- Simple HTTP endpoints → Use CloudBase Functions (cheaper)
|
|
17
|
+
- Serverless is requirement → Use CloudBase Functions
|
|
18
|
+
|
|
19
|
+
## Agent Decision Guide
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
Need compute?
|
|
23
|
+
├── Short tasks (<60s), stateless → CloudBase Functions
|
|
24
|
+
├── Long-running (>60s) → CloudBase Run
|
|
25
|
+
├── Custom container image → CloudBase Run
|
|
26
|
+
├── GPU workload → CloudBase Run
|
|
27
|
+
└── WebSocket server → CloudBase Run
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## CloudBase Run vs CloudBase Functions
|
|
31
|
+
|
|
32
|
+
| Criteria | CloudBase Functions | CloudBase Run |
|
|
33
|
+
|----------|---------------------|---------------|
|
|
34
|
+
| Max timeout | 60s | 3600s |
|
|
35
|
+
| Max memory | 1536MB | 4096MB |
|
|
36
|
+
| Cold start | 100-500ms | 1-5s |
|
|
37
|
+
| Pricing | Per invocation | Per CPU-second + memory |
|
|
38
|
+
| Container | No (managed runtime) | Yes (Docker) |
|
|
39
|
+
| SSH access | No | No (but logs available) |
|
|
40
|
+
| Persistent disk | No | No (stateless containers) |
|
|
41
|
+
| WebSocket | Yes | Yes |
|
|
42
|
+
| GPU | No | Yes |
|
|
43
|
+
|
|
44
|
+
## Container Deployment
|
|
45
|
+
|
|
46
|
+
### Dockerfile Example
|
|
47
|
+
|
|
48
|
+
```dockerfile
|
|
49
|
+
FROM node:18-alpine
|
|
50
|
+
|
|
51
|
+
WORKDIR /app
|
|
52
|
+
|
|
53
|
+
COPY package*.json ./
|
|
54
|
+
RUN npm ci --only=production
|
|
55
|
+
|
|
56
|
+
COPY . .
|
|
57
|
+
|
|
58
|
+
EXPOSE 8080
|
|
59
|
+
|
|
60
|
+
CMD ["node", "server.js"]
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Server Example (Express)
|
|
64
|
+
|
|
65
|
+
```javascript
|
|
66
|
+
const express = require('express');
|
|
67
|
+
const app = express();
|
|
68
|
+
|
|
69
|
+
app.use(express.json());
|
|
70
|
+
|
|
71
|
+
app.get('/health', (req, res) => {
|
|
72
|
+
res.json({ status: 'ok', timestamp: Date.now() });
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
app.post('/api/process', async (req, res) => {
|
|
76
|
+
const { data } = req.body;
|
|
77
|
+
// Long running task
|
|
78
|
+
const result = await processLongTask(data);
|
|
79
|
+
res.json({ result });
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
const PORT = process.env.PORT || 8080;
|
|
83
|
+
app.listen(PORT, () => {
|
|
84
|
+
console.log(`Server running on port ${PORT}`);
|
|
85
|
+
});
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Deployment
|
|
89
|
+
|
|
90
|
+
### Deploy Container
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
tcb run deploy --name my-service --image myregistry.azurecr.io/myapp:latest --env $TCB_ENV_ID
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Deploy from Local Build
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# Build and push to TCB registry
|
|
100
|
+
tcb run deploy --name my-service --dockerfile ./Dockerfile --dir ./ --env $TCB_ENV_ID
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Scale Configuration
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# Set min/max instances
|
|
107
|
+
tcb run update --name my-service --min-instances 1 --max-instances 10 --env $TCB_ENV_ID
|
|
108
|
+
|
|
109
|
+
# Set CPU and memory
|
|
110
|
+
tcb run update --name my-service --cpu 1 --memory 2 --env $TCB_ENV_ID
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## CLI Reference
|
|
114
|
+
|
|
115
|
+
| Command | Description |
|
|
116
|
+
|---------|-------------|
|
|
117
|
+
| `tcb run deploy --name <name> --image <image> --env <envId>` | Deploy service |
|
|
118
|
+
| `tcb run list --env <envId>` | List services |
|
|
119
|
+
| `tcb run update --name <name> --min-instances <n> --max-instances <n>` | Update scaling |
|
|
120
|
+
| `tcb run logs --name <name> --env <envId>` | View logs |
|
|
121
|
+
| `tcb run delete --name <name> --env <envId>` | Delete service |
|
|
122
|
+
| `tcb run detail --name <name> --env <envId>` | Get service details |
|
|
123
|
+
|
|
124
|
+
## Service Configuration
|
|
125
|
+
|
|
126
|
+
### cloudbaserc.json
|
|
127
|
+
|
|
128
|
+
```json
|
|
129
|
+
{
|
|
130
|
+
"container": {
|
|
131
|
+
"my-service": {
|
|
132
|
+
"image": "myregistry.azurecr.io/myapp:latest",
|
|
133
|
+
"port": 8080,
|
|
134
|
+
"minInstances": 1,
|
|
135
|
+
"maxInstances": 10,
|
|
136
|
+
"cpu": 1,
|
|
137
|
+
"memory": 2,
|
|
138
|
+
"envVars": {
|
|
139
|
+
"NODE_ENV": "production",
|
|
140
|
+
"DATABASE_URL": "${DATABASE_URL}"
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Access Patterns
|
|
148
|
+
|
|
149
|
+
### HTTP Endpoint
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
# Get service URL
|
|
153
|
+
curl https://{service}-{env-id}.tcb-preview.com/health
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### WebSocket
|
|
157
|
+
|
|
158
|
+
```javascript
|
|
159
|
+
const ws = new WebSocket('wss://{service}-{env-id}.tcb-preview.com');
|
|
160
|
+
|
|
161
|
+
// Or from functions
|
|
162
|
+
const result = await app.callFunction({
|
|
163
|
+
name: 'call-run-service',
|
|
164
|
+
data: { service: 'my-service', path: '/api/data' }
|
|
165
|
+
});
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Internal Communication
|
|
169
|
+
|
|
170
|
+
Services in the same environment can communicate internally:
|
|
171
|
+
|
|
172
|
+
```javascript
|
|
173
|
+
// From CloudBase Function to CloudBase Run service
|
|
174
|
+
const response = await fetch('http://my-service:8080/api/internal', {
|
|
175
|
+
method: 'POST',
|
|
176
|
+
headers: {
|
|
177
|
+
'X-Internal-Token': process.env.INTERNAL_TOKEN
|
|
178
|
+
},
|
|
179
|
+
body: JSON.stringify({ data })
|
|
180
|
+
});
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Scaling
|
|
184
|
+
|
|
185
|
+
### Auto-scaling Configuration
|
|
186
|
+
|
|
187
|
+
| Metric | Threshold | Action |
|
|
188
|
+
|--------|-----------|--------|
|
|
189
|
+
| CPU | > 70% | Scale up |
|
|
190
|
+
| Memory | > 80% | Scale up |
|
|
191
|
+
| Request count | > 100/min | Scale up |
|
|
192
|
+
| Idle | < 5 min | Scale down to min |
|
|
193
|
+
|
|
194
|
+
### Manual Scaling
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
# Scale immediately
|
|
198
|
+
tcb run update --name my-service --instances 5 --env $TCB_ENV_ID
|
|
199
|
+
|
|
200
|
+
# Scale to zero (cost saving)
|
|
201
|
+
tcb run update --name my-service --instances 0 --env $TCB_ENV_ID
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Limits and Quotas
|
|
205
|
+
|
|
206
|
+
| Limit | Value |
|
|
207
|
+
|-------|-------|
|
|
208
|
+
| Max timeout | 3600s |
|
|
209
|
+
| Max CPU | 4 cores |
|
|
210
|
+
| Max memory | 8GB |
|
|
211
|
+
| Max instances | 20 |
|
|
212
|
+
| Min instances | 0 (scale to zero) |
|
|
213
|
+
| Concurrent requests | 1000 per instance |
|
|
214
|
+
| Max container size | 10GB |
|
|
215
|
+
|
|
216
|
+
## Best Practices
|
|
217
|
+
|
|
218
|
+
1. **Graceful shutdown** - Handle SIGTERM for clean shutdown
|
|
219
|
+
2. **Health checks** - Implement `/health` endpoint
|
|
220
|
+
3. **Logging** - Use structured JSON logging
|
|
221
|
+
4. **Environment variables** - Don't hardcode secrets
|
|
222
|
+
5. **Connection pooling** - Reuse DB connections
|
|
223
|
+
6. **Startup time** - Keep container startup under 30s
|
|
224
|
+
7. **Stateless design** - Even with persistent storage, keep compute stateless
|
|
225
|
+
|
|
226
|
+
### Graceful Shutdown Example
|
|
227
|
+
|
|
228
|
+
```javascript
|
|
229
|
+
let isShuttingDown = false;
|
|
230
|
+
|
|
231
|
+
app.use((req, res, next) => {
|
|
232
|
+
if (isShuttingDown) {
|
|
233
|
+
res.status(503).json({ error: 'Service is restarting' });
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
next();
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
process.on('SIGTERM', () => {
|
|
240
|
+
console.log('SIGTERM received, starting graceful shutdown');
|
|
241
|
+
isShuttingDown = true;
|
|
242
|
+
server.close(() => {
|
|
243
|
+
console.log('Server closed');
|
|
244
|
+
process.exit(0);
|
|
245
|
+
});
|
|
246
|
+
});
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
## Cost Optimization
|
|
250
|
+
|
|
251
|
+
### Scale to Zero
|
|
252
|
+
|
|
253
|
+
For services not always needed:
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
# Scale down when not in use
|
|
257
|
+
tcb run update --name my-service --min-instances 0 --env $TCB_ENV_ID
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### Right-size Resources
|
|
261
|
+
|
|
262
|
+
- Monitor actual CPU/memory usage
|
|
263
|
+
- Don't over-provision for peak
|
|
264
|
+
- Use auto-scaling to handle spikes
|
|
265
|
+
|
|
266
|
+
### Cost Comparison
|
|
267
|
+
|
|
268
|
+
| Service | Use Case | Approximate Cost |
|
|
269
|
+
|---------|----------|------------------|
|
|
270
|
+
| CloudBase Functions | 100k invocations, 128MB, 100ms | ~$0.05/day |
|
|
271
|
+
| CloudBase Run | 1 core, 1GB, 24h | ~$0.50/day |
|
|
272
|
+
|
|
273
|
+
CloudBase Run is more predictable but can be more expensive for sporadic workloads.
|
|
274
|
+
|
|
275
|
+
## Troubleshooting
|
|
276
|
+
|
|
277
|
+
| Issue | Cause | Solution |
|
|
278
|
+
|-------|-------|----------|
|
|
279
|
+
| Container fails to start | Image error, port issue | Check logs: `tcb run logs` |
|
|
280
|
+
| 503 errors | Container overloaded | Scale up instances |
|
|
281
|
+
| Slow response | Cold start, resource limits | Increase memory, enable min instances |
|
|
282
|
+
| Out of memory | Memory limit exceeded | Increase memory allocation |
|
|
283
|
+
| Connection refused | Service not ready | Add health check, delay start |
|
|
284
|
+
|
|
285
|
+
For detailed troubleshooting → `../best-practices/troubleshooting.md`
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
# CloudBase Storage (COS)
|
|
2
|
+
|
|
3
|
+
## When to Use CloudBase Storage
|
|
4
|
+
|
|
5
|
+
**Use COS (Cloud Object Storage) when:**
|
|
6
|
+
- Store files (images, videos, documents)
|
|
7
|
+
- Host static assets for CDN delivery
|
|
8
|
+
- Store user-generated content
|
|
9
|
+
- Backup and archive data
|
|
10
|
+
- Store function deployment packages
|
|
11
|
+
|
|
12
|
+
**Do NOT use COS when:**
|
|
13
|
+
- Need database-like queries → Use DocDB
|
|
14
|
+
- Need to store < 1KB metadata → Use DocDB field
|
|
15
|
+
- Hot data requiring instant retrieval → Consider Tencent Cloud Redis
|
|
16
|
+
|
|
17
|
+
## Agent Decision Guide
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Need to store files?
|
|
21
|
+
├── User uploads (images, videos) → COS
|
|
22
|
+
├── Function code packages → COS (automatic with --deployMode cos)
|
|
23
|
+
├── Static website assets → COS + CloudBase Hosting
|
|
24
|
+
└── Temporary files during processing → COS with lifecycle policy
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Storage Structure
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
Bucket: {env-id}-cos-{region}
|
|
31
|
+
├── /uploads/ # User uploaded files
|
|
32
|
+
├── /avatars/ # User profile images
|
|
33
|
+
├── /documents/ # Document storage
|
|
34
|
+
└── /backups/ # Database backups
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## File Operations
|
|
38
|
+
|
|
39
|
+
### Upload File
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
tcb storage upload --local ./file.txt --remote /uploads/file.txt --env $TCB_ENV_ID
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Download File
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
tcb storage download --local ./download.txt --remote /uploads/file.txt --env $TCB_ENV_ID
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### List Files
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
tcb storage list --path /uploads --env $TCB_ENV_ID
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Delete File
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
tcb storage delete --remote /uploads/file.txt --env $TCB_ENV_ID
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Get File URL
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
tcb storage url --remote /uploads/file.txt --env $TCB_ENV_ID
|
|
67
|
+
# Returns: https://{bucket}.cos.{region}.myqcloud.com/uploads/file.txt
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## CLI Reference
|
|
71
|
+
|
|
72
|
+
| Command | Description |
|
|
73
|
+
|---------|-------------|
|
|
74
|
+
| `tcb storage list --path <path> --env <envId>` | List files in path |
|
|
75
|
+
| `tcb storage upload --local <path> --remote <path> --env <envId>` | Upload file |
|
|
76
|
+
| `tcb storage download --local <path> --remote <path> --env <envId>` | Download file |
|
|
77
|
+
| `tcb storage delete --remote <path> --env <envId>` | Delete file |
|
|
78
|
+
| `tcb storage url --remote <path> --env <envId>` | Get file URL (with signature) |
|
|
79
|
+
| `tcb storage createFolder --path <path> --env <envId>` | Create folder |
|
|
80
|
+
| `tcb storage deleteFolder --path <path> --env <envId>` | Delete folder |
|
|
81
|
+
|
|
82
|
+
## Access Control
|
|
83
|
+
|
|
84
|
+
### Public vs Private Buckets
|
|
85
|
+
|
|
86
|
+
| Type | Access | Use Case |
|
|
87
|
+
|------|--------|----------|
|
|
88
|
+
| Public | Anyone with URL | Static assets, public downloads |
|
|
89
|
+
| Private | Requires signature | User uploads, private documents |
|
|
90
|
+
|
|
91
|
+
### Signed URLs (for private files)
|
|
92
|
+
|
|
93
|
+
Private files require a signed URL with expiration:
|
|
94
|
+
|
|
95
|
+
```javascript
|
|
96
|
+
// Generate signed URL (valid for 1 hour)
|
|
97
|
+
const signedUrl = await app.getTempFileURL({
|
|
98
|
+
filePath: '/uploads/private.pdf',
|
|
99
|
+
maxAge: 3600
|
|
100
|
+
});
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### File Permissions
|
|
104
|
+
|
|
105
|
+
```javascript
|
|
106
|
+
// Make file publicly readable
|
|
107
|
+
await app.uploadFile({
|
|
108
|
+
cloudPath: '/uploads/public.txt',
|
|
109
|
+
filePath: './local.txt',
|
|
110
|
+
onUploadProgress: (progress) => {
|
|
111
|
+
console.log(`Uploaded: ${progress.loaded}/${progress.total}`);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
// Or set ACL via SDK
|
|
116
|
+
const cos = app.uploadFile({
|
|
117
|
+
// ...
|
|
118
|
+
});
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Upload from Functions
|
|
122
|
+
|
|
123
|
+
### Direct Upload (small files < 5MB)
|
|
124
|
+
|
|
125
|
+
```javascript
|
|
126
|
+
const tcb = require('@cloudbase/node-sdk');
|
|
127
|
+
const fs = require('fs');
|
|
128
|
+
|
|
129
|
+
const app = tcb.init({
|
|
130
|
+
env: process.env.TCB_ENV_ID
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
exports.main = async (event, context) => {
|
|
134
|
+
// event.fileContent is base64 encoded for small files
|
|
135
|
+
const buffer = Buffer.from(event.fileContent, 'base64');
|
|
136
|
+
|
|
137
|
+
const result = await app.uploadFile({
|
|
138
|
+
cloudPath: '/uploads/' + event.filename,
|
|
139
|
+
fileContent: buffer
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
return { fileID: result.fileID };
|
|
143
|
+
};
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Server-Side Upload (recommended for large files)
|
|
147
|
+
|
|
148
|
+
```javascript
|
|
149
|
+
// Get upload credentials from TCB
|
|
150
|
+
exports.main = async (event, context) => {
|
|
151
|
+
const { fileName, contentType } = event;
|
|
152
|
+
|
|
153
|
+
// Get upload parameters
|
|
154
|
+
const uploadData = await app.uploadFile({
|
|
155
|
+
cloudPath: '/uploads/' + fileName
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
// Frontend uses these to upload directly to COS
|
|
159
|
+
return {
|
|
160
|
+
url: uploadData.url, // Upload to this URL
|
|
161
|
+
token: uploadData.token, // Upload token
|
|
162
|
+
fileId: uploadData.fileID, // TCB file ID
|
|
163
|
+
cloudPath: uploadData.cloudPath
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Frontend Upload Example
|
|
169
|
+
|
|
170
|
+
```javascript
|
|
171
|
+
// Get upload credentials from function
|
|
172
|
+
const { url, token } = await callFunction({
|
|
173
|
+
name: 'get-upload-params',
|
|
174
|
+
data: { fileName: 'avatar.jpg', contentType: 'image/jpeg' }
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
// Upload directly to COS
|
|
178
|
+
const formData = new FormData();
|
|
179
|
+
formData.append('key', 'uploads/avatar.jpg');
|
|
180
|
+
formData.append('token', token);
|
|
181
|
+
formData.append('file', fileInput.files[0]);
|
|
182
|
+
|
|
183
|
+
await fetch(url, {
|
|
184
|
+
method: 'POST',
|
|
185
|
+
body: formData
|
|
186
|
+
});
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Storage in CloudBase Hosting
|
|
190
|
+
|
|
191
|
+
Files in COS are served through CDN for CloudBase Hosting:
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
User Request → CDN Edge → COS Origin → Static File
|
|
195
|
+
↓ (cache)
|
|
196
|
+
First request caches result
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
CDN automatically caches:
|
|
200
|
+
- Static assets (`.js`, `.css`, `.jpg`, etc.)
|
|
201
|
+
- Configurable cache duration
|
|
202
|
+
|
|
203
|
+
## Limits and Quotas
|
|
204
|
+
|
|
205
|
+
| Limit | Value |
|
|
206
|
+
|-------|-------|
|
|
207
|
+
| Max file size | 50GB (single file) |
|
|
208
|
+
| Max bucket size | Unlimited |
|
|
209
|
+
| Max files per folder | 1000 (recommend pagination) |
|
|
210
|
+
| Upload speed | Limited by function memory |
|
|
211
|
+
| Download speed | Limited by CDN带宽 |
|
|
212
|
+
|
|
213
|
+
## Lifecycle Policies
|
|
214
|
+
|
|
215
|
+
Set automatic deletion or transition for old files:
|
|
216
|
+
|
|
217
|
+
```javascript
|
|
218
|
+
// Via TCB console or API
|
|
219
|
+
// Examples:
|
|
220
|
+
// - Delete temp files after 7 days
|
|
221
|
+
// - Move logs to archive storage after 30 days
|
|
222
|
+
// - Clean up failed upload chunks
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## Best Practices
|
|
226
|
+
|
|
227
|
+
1. **Use meaningful paths** - `/uploads/{userId}/{timestamp}_{filename}`
|
|
228
|
+
2. **Implement cleanup** - Delete old temporary files
|
|
229
|
+
3. **Use content type** - Set correct `Content-Type` for browser display
|
|
230
|
+
4. **Compress images** - Resize on upload to save storage
|
|
231
|
+
5. **Use CDN** - Enable CDN for frequently accessed files
|
|
232
|
+
6. **Handle duplicates** - Check if file exists before upload
|
|
233
|
+
7. **Secure uploads** - Validate file types, scan for malware
|
|
234
|
+
|
|
235
|
+
## Troubleshooting
|
|
236
|
+
|
|
237
|
+
| Issue | Cause | Solution |
|
|
238
|
+
|-------|-------|----------|
|
|
239
|
+
| Upload fails | File too large | Use server-side upload flow |
|
|
240
|
+
| 403 Forbidden | Private bucket | Use signed URL |
|
|
241
|
+
| File not found | Wrong path | Check path is case-sensitive |
|
|
242
|
+
| Slow download | Not cached | Enable CDN caching |
|
|
243
|
+
| Upload timeout | Slow connection | Increase function timeout |
|
|
244
|
+
|
|
245
|
+
For detailed troubleshooting → `../best-practices/troubleshooting.md`
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# TCB Platform Overview
|
|
2
|
+
|
|
3
|
+
## What is Tencent CloudBase
|
|
4
|
+
|
|
5
|
+
Tencent CloudBase (TCB) is a serverless cloud development platform that provides a complete cloud-native backend infrastructure. It eliminates the need to manage servers while providing database, storage, computing, and hosting capabilities.
|
|
6
|
+
|
|
7
|
+
## Core Services
|
|
8
|
+
|
|
9
|
+
| Service | Type | Description | Limits |
|
|
10
|
+
|---------|------|-------------|--------|
|
|
11
|
+
| CloudBase Functions | FaaS | Event-driven serverless functions | 60s timeout, 1536MB memory, 100 max instances |
|
|
12
|
+
| CloudBase Run | CaaS | Container-based hosting | 3600s timeout, 4096MB memory |
|
|
13
|
+
| CloudBase Database | NoSQL | Document database (JSON-like) | 2GB storage per env |
|
|
14
|
+
| MySQL | RDBMS | Relational database | 20GB storage per env |
|
|
15
|
+
| COS | Object Storage | File storage | 50GB per env |
|
|
16
|
+
| CloudBase Hosting | Static | Static website + SSR support | 2GB per site |
|
|
17
|
+
|
|
18
|
+
## Agent Decision Guide
|
|
19
|
+
|
|
20
|
+
### When to Use Each Service
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
Need to run code in response to events?
|
|
24
|
+
├── Yes → CloudBase Functions (FaaS)
|
|
25
|
+
└── No → Continue
|
|
26
|
+
|
|
27
|
+
Need long-running process or persistent state?
|
|
28
|
+
├── Yes → CloudBase Run (CaaS)
|
|
29
|
+
└── No → Continue
|
|
30
|
+
|
|
31
|
+
Need to store structured data?
|
|
32
|
+
├── JSON-like documents → CloudBase Database (DocDB)
|
|
33
|
+
├── Relational data with SQL → MySQL
|
|
34
|
+
└── Key-value cache → Use memory/redis pattern
|
|
35
|
+
|
|
36
|
+
Need to store files?
|
|
37
|
+
└── COS (Cloud Object Storage)
|
|
38
|
+
|
|
39
|
+
Need to host a website?
|
|
40
|
+
└── CloudBase Hosting (static + optional SSR)
|
|
41
|
+
|
|
42
|
+
Need all of the above?
|
|
43
|
+
└── TCB Environment (all services integrated)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Service Comparison
|
|
47
|
+
|
|
48
|
+
| Criteria | CloudBase Functions | CloudBase Run |
|
|
49
|
+
|----------|---------------------|---------------|
|
|
50
|
+
| Billing | Per invocation | Per resource usage |
|
|
51
|
+
| Cold start | 100-500ms | 1-5s (if image not warm) |
|
|
52
|
+
| Max timeout | 60s | 3600s |
|
|
53
|
+
| Memory | 128-1536MB | Up to 4096MB |
|
|
54
|
+
| Stateless | Yes (encouraged) | Yes (persistence optional) |
|
|
55
|
+
| WebSocket | Yes (with --ws) | Full support |
|
|
56
|
+
| Persistent connection | No | Yes |
|
|
57
|
+
| GPU support | No | Yes |
|
|
58
|
+
|
|
59
|
+
### Database Selection
|
|
60
|
+
|
|
61
|
+
| Criteria | DocDB (NoSQL) | MySQL (RDBMS) |
|
|
62
|
+
|----------|---------------|---------------|
|
|
63
|
+
| Schema flexibility | Dynamic (no schema) | Fixed schema required |
|
|
64
|
+
| Query language | Mongoose-like filters | SQL |
|
|
65
|
+
| Transactions | Limited | Full ACID |
|
|
66
|
+
| Joins | No (denormalize) | Yes |
|
|
67
|
+
| Scaling | Horizontal | Vertical + Read replicas |
|
|
68
|
+
| Use when | Rapid iteration, flexible schema | Complex queries, relations, data integrity |
|
|
69
|
+
|
|
70
|
+
## Environment Architecture
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
┌──────────────────────────────────────────────────────────────┐
|
|
74
|
+
│ TCB Environment │
|
|
75
|
+
│ env-xxxxx │
|
|
76
|
+
├──────────────────────────────────────────────────────────────┤
|
|
77
|
+
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
|
78
|
+
│ │ Functions │ │ Database │ │ Storage │ │
|
|
79
|
+
│ │ Namespace │ │ (DocDB) │ │ (COS) │ │
|
|
80
|
+
│ └─────────────┘ └─────────────┘ └─────────────┘ │
|
|
81
|
+
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
|
82
|
+
│ │ Cloud Run │ │ MySQL │ │ Hosting │ │
|
|
83
|
+
│ │ Services │ │ │ │ (CDN) │ │
|
|
84
|
+
│ └─────────────┘ └─────────────┘ └─────────────┘ │
|
|
85
|
+
├──────────────────────────────────────────────────────────────┤
|
|
86
|
+
│ Shared: CDN, SSL, Custom Domain │
|
|
87
|
+
└──────────────────────────────────────────────────────────────┘
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Region Selection
|
|
91
|
+
|
|
92
|
+
| Region ID | Region Name | Use Case |
|
|
93
|
+
|-----------|-------------|----------|
|
|
94
|
+
| `ap-shanghai` | Shanghai | China mainland (default) |
|
|
95
|
+
| `ap-beijing` | Beijing | China mainland alternative |
|
|
96
|
+
| `ap-guangzhou` | Guangzhou | China mainland alternative |
|
|
97
|
+
| `ap-singapore` | Singapore | Southeast Asia |
|
|
98
|
+
|
|
99
|
+
## Pricing Model
|
|
100
|
+
|
|
101
|
+
| Service | Billing | Notes |
|
|
102
|
+
|---------|---------|-------|
|
|
103
|
+
| CloudBase Functions | Per invocation + traffic | Free tier: 100k invocations/month |
|
|
104
|
+
| CloudBase Run | Per CPU-second + memory | More predictable than FaaS |
|
|
105
|
+
| DocDB | Included in environment | Storage included |
|
|
106
|
+
| COS | Per GB stored + traffic | First 50GB free |
|
|
107
|
+
| Hosting | Included | CDN traffic may incur cost |
|
|
108
|
+
|
|
109
|
+
## Agent Interaction Patterns
|
|
110
|
+
|
|
111
|
+
### Pattern 1: Event-Driven Function
|
|
112
|
+
```javascript
|
|
113
|
+
// Triggered by HTTP request
|
|
114
|
+
exports.main = async (event, context) => {
|
|
115
|
+
// event contains request data
|
|
116
|
+
// context contains TCB info
|
|
117
|
+
return { message: "Hello" };
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Pattern 2: Background Processing
|
|
122
|
+
```javascript
|
|
123
|
+
// Triggered by timer or queue
|
|
124
|
+
exports.main = async (event) => {
|
|
125
|
+
// Process in background
|
|
126
|
+
// Return result (or don't wait)
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Pattern 3: API Gateway
|
|
131
|
+
```javascript
|
|
132
|
+
// Deployed as HTTP function
|
|
133
|
+
// Accessible at: https://{env-id}.tcb-preview.com/{path}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Pattern 4: Full-Stack with Hosting
|
|
137
|
+
```
|
|
138
|
+
Web App (Hosting) → API Functions → Database
|
|
139
|
+
↓
|
|
140
|
+
Static assets (COS CDN)
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Common Architectures
|
|
144
|
+
|
|
145
|
+
### Architecture 1: Serverless Web App
|
|
146
|
+
```
|
|
147
|
+
Browser → CloudBase Hosting (SPA) → API Functions → DocDB/MySQL
|
|
148
|
+
↓
|
|
149
|
+
COS (file storage)
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Architecture 2: Mini-Program Backend
|
|
153
|
+
```
|
|
154
|
+
WXA/MYA/TTA → TCB API Gateway → CloudBase Functions → DocDB
|
|
155
|
+
↓
|
|
156
|
+
COS (media storage)
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Architecture 3: Long-Running Service
|
|
160
|
+
```
|
|
161
|
+
Internet → CloudBase Run (Container) → DocDB/MySQL + COS
|
|
162
|
+
↓
|
|
163
|
+
Persistent connections
|
|
164
|
+
Background workers
|
|
165
|
+
GPU workloads
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Next Steps
|
|
169
|
+
|
|
170
|
+
- For function development → `services/cloud-functions.md`
|
|
171
|
+
- For container workloads → `services/cloud-run.md`
|
|
172
|
+
- For data storage → `services/cloud-database.md`
|
|
173
|
+
- For file storage → `services/cloud-storage.md`
|
|
174
|
+
- For static hosting → `services/cloud-hosting.md`
|