@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,424 @@
|
|
|
1
|
+
# Function Compute Design Best Practices
|
|
2
|
+
|
|
3
|
+
## Core Principles
|
|
4
|
+
|
|
5
|
+
1. **Stateless** - Functions should not rely on in-memory state
|
|
6
|
+
2. **Idempotent** - Handle duplicate invocations gracefully
|
|
7
|
+
3. **Single responsibility** - One function, one purpose
|
|
8
|
+
4. **Fail fast** - Validate inputs early, fail with clear errors
|
|
9
|
+
5. **Observable** - Log all significant events
|
|
10
|
+
|
|
11
|
+
## Function Structure
|
|
12
|
+
|
|
13
|
+
### Recommended Template
|
|
14
|
+
|
|
15
|
+
```javascript
|
|
16
|
+
/**
|
|
17
|
+
* Process user registration
|
|
18
|
+
* @param {Object} event - { userId, email, nickname }
|
|
19
|
+
* @param {Object} context - FC context info
|
|
20
|
+
*/
|
|
21
|
+
module.exports.handler = async (event, context) => {
|
|
22
|
+
const startTime = Date.now();
|
|
23
|
+
|
|
24
|
+
try {
|
|
25
|
+
// 1. Validate input
|
|
26
|
+
validateInput(event);
|
|
27
|
+
|
|
28
|
+
// 2. Initialize Aliyun clients
|
|
29
|
+
const OSS = require('ali-oss');
|
|
30
|
+
const client = new OSS({
|
|
31
|
+
region: process.env.ALICLOUD_REGION,
|
|
32
|
+
accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
|
|
33
|
+
accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
|
|
34
|
+
stsToken: process.env.ALIBABA_CLOUD_SECURITY_TOKEN
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
// 3. Business logic
|
|
38
|
+
const result = await processRegistration(client, event);
|
|
39
|
+
|
|
40
|
+
// 4. Return success
|
|
41
|
+
return {
|
|
42
|
+
success: true,
|
|
43
|
+
data: result,
|
|
44
|
+
duration: Date.now() - startTime
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
} catch (error) {
|
|
48
|
+
// Log error
|
|
49
|
+
console.error('Registration failed:', {
|
|
50
|
+
error: error.message,
|
|
51
|
+
userId: event.userId,
|
|
52
|
+
duration: Date.now() - startTime
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
// Return error response
|
|
56
|
+
return {
|
|
57
|
+
success: false,
|
|
58
|
+
error: error.message,
|
|
59
|
+
code: error.code || 'UNKNOWN_ERROR'
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
function validateInput(event) {
|
|
65
|
+
if (!event.email) {
|
|
66
|
+
throw { code: 'INVALID_INPUT', message: 'Email is required' };
|
|
67
|
+
}
|
|
68
|
+
if (!event.email.includes('@')) {
|
|
69
|
+
throw { code: 'INVALID_INPUT', message: 'Invalid email format' };
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Cold Start Optimization
|
|
75
|
+
|
|
76
|
+
### Problem
|
|
77
|
+
Cold start adds 500ms-2s latency when function is idle.
|
|
78
|
+
|
|
79
|
+
### Solutions
|
|
80
|
+
|
|
81
|
+
#### 1. Minimize Package Size
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# Bad: Include everything
|
|
85
|
+
npm install express mongoose axios lodash
|
|
86
|
+
|
|
87
|
+
# Good: Only what's needed
|
|
88
|
+
npm install ali-oss
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
#### 2. Keep Dependencies Minimal
|
|
92
|
+
|
|
93
|
+
Use native methods instead of heavy libraries:
|
|
94
|
+
|
|
95
|
+
```javascript
|
|
96
|
+
// Bad: Large utility library
|
|
97
|
+
import _ from 'lodash';
|
|
98
|
+
const sum = _.sum([1, 2, 3]);
|
|
99
|
+
|
|
100
|
+
// Good: Native method
|
|
101
|
+
const sum = [1, 2, 3].reduce((a, b) => a + b, 0);
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
#### 3. Provisioned Concurrency (paid)
|
|
105
|
+
|
|
106
|
+
```yaml
|
|
107
|
+
function:
|
|
108
|
+
name: hello
|
|
109
|
+
provisionedConcurrency: 2 # Keep 2 instances warm
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
#### 4. Allocate More Memory
|
|
113
|
+
|
|
114
|
+
More memory = faster CPU = faster cold start.
|
|
115
|
+
|
|
116
|
+
```yaml
|
|
117
|
+
function:
|
|
118
|
+
name: hello
|
|
119
|
+
memorySize: 512 # More memory = faster CPU
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Error Handling Patterns
|
|
123
|
+
|
|
124
|
+
### Pattern 1: Structured Error Response
|
|
125
|
+
|
|
126
|
+
```javascript
|
|
127
|
+
module.exports.handler = async (event, context) => {
|
|
128
|
+
try {
|
|
129
|
+
// Business logic
|
|
130
|
+
const result = await doSomething(event);
|
|
131
|
+
return { success: true, data: result };
|
|
132
|
+
|
|
133
|
+
} catch (error) {
|
|
134
|
+
console.error('Error:', error);
|
|
135
|
+
|
|
136
|
+
if (error.code === 'InvalidAccessKeyId') {
|
|
137
|
+
return {
|
|
138
|
+
success: false,
|
|
139
|
+
error: 'Credential error',
|
|
140
|
+
code: 'CREDENTIAL_ERROR'
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return {
|
|
145
|
+
success: false,
|
|
146
|
+
error: 'Internal server error',
|
|
147
|
+
code: 'INTERNAL_ERROR'
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Pattern 2: Validation Errors
|
|
154
|
+
|
|
155
|
+
```javascript
|
|
156
|
+
function validateEvent(event) {
|
|
157
|
+
const errors = [];
|
|
158
|
+
|
|
159
|
+
if (!event.userId) {
|
|
160
|
+
errors.push('userId is required');
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (!event.email || !event.email.includes('@')) {
|
|
164
|
+
errors.push('Valid email is required');
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (errors.length > 0) {
|
|
168
|
+
const error = new Error('Validation failed');
|
|
169
|
+
error.code = 'VALIDATION_ERROR';
|
|
170
|
+
error.details = errors;
|
|
171
|
+
throw error;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Pattern 3: Retry with Backoff
|
|
177
|
+
|
|
178
|
+
```javascript
|
|
179
|
+
async function withRetry(fn, maxRetries = 3) {
|
|
180
|
+
let lastError;
|
|
181
|
+
|
|
182
|
+
for (let i = 0; i < maxRetries; i++) {
|
|
183
|
+
try {
|
|
184
|
+
return await fn();
|
|
185
|
+
} catch (error) {
|
|
186
|
+
lastError = error;
|
|
187
|
+
|
|
188
|
+
if (!isTransientError(error)) {
|
|
189
|
+
throw error;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
await sleep(Math.pow(2, i) * 100);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
throw lastError;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
function isTransientError(error) {
|
|
200
|
+
const transientCodes = ['ETIMEDOUT', 'ECONNRESET', 'Throttling'];
|
|
201
|
+
return transientCodes.includes(error.code);
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## Timeout Strategy
|
|
206
|
+
|
|
207
|
+
### Set Appropriate Timeout
|
|
208
|
+
|
|
209
|
+
```yaml
|
|
210
|
+
function:
|
|
211
|
+
name: quick-op
|
|
212
|
+
timeout: 5 # Quick operations
|
|
213
|
+
|
|
214
|
+
name: db-query
|
|
215
|
+
timeout: 30 # Database operations
|
|
216
|
+
|
|
217
|
+
name: complex-process
|
|
218
|
+
timeout: 300 # Long running
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Handle Timeout Gracefully
|
|
222
|
+
|
|
223
|
+
```javascript
|
|
224
|
+
module.exports.handler = async (event, context) => {
|
|
225
|
+
const timeout = new Promise((_, reject) => {
|
|
226
|
+
setTimeout(() => reject(new Error('Function timeout')), 55000);
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
try {
|
|
230
|
+
const result = await Promise.race([
|
|
231
|
+
longRunningTask(event),
|
|
232
|
+
timeout
|
|
233
|
+
]);
|
|
234
|
+
return { success: true, data: result };
|
|
235
|
+
|
|
236
|
+
} catch (error) {
|
|
237
|
+
if (error.message === 'Function timeout') {
|
|
238
|
+
return {
|
|
239
|
+
success: false,
|
|
240
|
+
error: 'Operation timed out',
|
|
241
|
+
code: 'TIMEOUT',
|
|
242
|
+
partial: true
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
throw error;
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
## Memory Management
|
|
251
|
+
|
|
252
|
+
### Monitor Memory Usage
|
|
253
|
+
|
|
254
|
+
```javascript
|
|
255
|
+
module.exports.handler = async (event, context) => {
|
|
256
|
+
const initialMemory = process.memoryUsage();
|
|
257
|
+
|
|
258
|
+
const result = await processLargeDataset(event);
|
|
259
|
+
|
|
260
|
+
const finalMemory = process.memoryUsage();
|
|
261
|
+
console.log('Memory delta:', {
|
|
262
|
+
heapUsed: (finalMemory.heapUsed - initialMemory.heapUsed) / 1024 / 1024 + 'MB'
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
return result;
|
|
266
|
+
};
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### Memory-Efficient Patterns
|
|
270
|
+
|
|
271
|
+
```javascript
|
|
272
|
+
// Bad: Load all data into memory
|
|
273
|
+
const allUsers = await getAllUsers();
|
|
274
|
+
|
|
275
|
+
// Good: Process in batches
|
|
276
|
+
async function* batchUsers(batchSize = 100) {
|
|
277
|
+
let marker = '';
|
|
278
|
+
while (true) {
|
|
279
|
+
const batch = await getUsers(marker, batchSize);
|
|
280
|
+
if (batch.items.length === 0) break;
|
|
281
|
+
yield batch.items;
|
|
282
|
+
marker = batch.nextMarker;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
## Async Patterns
|
|
288
|
+
|
|
289
|
+
### Await Parallel Operations
|
|
290
|
+
|
|
291
|
+
```javascript
|
|
292
|
+
module.exports.handler = async (event, context) => {
|
|
293
|
+
// Bad: Sequential
|
|
294
|
+
const user = await getUser(event.userId);
|
|
295
|
+
const orders = await getOrders(event.userId);
|
|
296
|
+
const preferences = await getPreferences(event.userId);
|
|
297
|
+
|
|
298
|
+
// Good: Parallel
|
|
299
|
+
const [user, orders, preferences] = await Promise.all([
|
|
300
|
+
getUser(event.userId),
|
|
301
|
+
getOrders(event.userId),
|
|
302
|
+
getPreferences(event.userId)
|
|
303
|
+
]);
|
|
304
|
+
|
|
305
|
+
return { user, orders, preferences };
|
|
306
|
+
};
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### Handle Array of Items
|
|
310
|
+
|
|
311
|
+
```javascript
|
|
312
|
+
module.exports.handler = async (event, context) => {
|
|
313
|
+
const items = event.items || [];
|
|
314
|
+
const BATCH_SIZE = 10;
|
|
315
|
+
const results = [];
|
|
316
|
+
|
|
317
|
+
for (let i = 0; i < items.length; i += BATCH_SIZE) {
|
|
318
|
+
const batch = items.slice(i, i + BATCH_SIZE);
|
|
319
|
+
const batchResults = await Promise.all(
|
|
320
|
+
batch.map(item => processItem(item))
|
|
321
|
+
);
|
|
322
|
+
results.push(...batchResults);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
return { processed: results.length, results };
|
|
326
|
+
};
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
## Logging Best Practices
|
|
330
|
+
|
|
331
|
+
### Structured Logging
|
|
332
|
+
|
|
333
|
+
```javascript
|
|
334
|
+
module.exports.handler = async (event, context) => {
|
|
335
|
+
console.log(JSON.stringify({
|
|
336
|
+
level: 'info',
|
|
337
|
+
message: 'Processing request',
|
|
338
|
+
requestId: context.requestId,
|
|
339
|
+
userId: event.userId,
|
|
340
|
+
timestamp: new Date().toISOString()
|
|
341
|
+
}));
|
|
342
|
+
|
|
343
|
+
try {
|
|
344
|
+
const result = await processEvent(event);
|
|
345
|
+
|
|
346
|
+
console.log(JSON.stringify({
|
|
347
|
+
level: 'info',
|
|
348
|
+
message: 'Request completed',
|
|
349
|
+
requestId: context.requestId,
|
|
350
|
+
duration: Date.now() - startTime
|
|
351
|
+
}));
|
|
352
|
+
|
|
353
|
+
return result;
|
|
354
|
+
|
|
355
|
+
} catch (error) {
|
|
356
|
+
console.log(JSON.stringify({
|
|
357
|
+
level: 'error',
|
|
358
|
+
message: 'Request failed',
|
|
359
|
+
requestId: context.requestId,
|
|
360
|
+
error: error.message
|
|
361
|
+
}));
|
|
362
|
+
throw error;
|
|
363
|
+
}
|
|
364
|
+
};
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
## Security Best Practices
|
|
368
|
+
|
|
369
|
+
### Validate All Inputs
|
|
370
|
+
|
|
371
|
+
```javascript
|
|
372
|
+
function sanitizeInput(input) {
|
|
373
|
+
if (typeof input !== 'string') {
|
|
374
|
+
throw new Error('Input must be string');
|
|
375
|
+
}
|
|
376
|
+
return input.replace(/[<>'"]/g, '');
|
|
377
|
+
}
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
### Don't Log Sensitive Data
|
|
381
|
+
|
|
382
|
+
```javascript
|
|
383
|
+
// Bad
|
|
384
|
+
console.log('User login:', { password: event.password });
|
|
385
|
+
|
|
386
|
+
// Good
|
|
387
|
+
console.log('User login:', { userId: event.userId });
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
## VPC Considerations
|
|
391
|
+
|
|
392
|
+
### When to Use VPC
|
|
393
|
+
|
|
394
|
+
- Need to access VPC resources (RDS, ECS)
|
|
395
|
+
- Enhanced network isolation required
|
|
396
|
+
|
|
397
|
+
### VPC Impact on Cold Start
|
|
398
|
+
|
|
399
|
+
```yaml
|
|
400
|
+
service:
|
|
401
|
+
name: my-service
|
|
402
|
+
vpcConfig:
|
|
403
|
+
vpcId: vpc-xxxxx
|
|
404
|
+
vswitchIds: [vsw-xxxxx]
|
|
405
|
+
securityGroupId: sg-xxxxx
|
|
406
|
+
# VPC adds 10-30s to cold start
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
## Performance Checklist
|
|
410
|
+
|
|
411
|
+
- [ ] Minimize dependencies
|
|
412
|
+
- [ ] Use appropriate memory allocation
|
|
413
|
+
- [ ] Set realistic timeout
|
|
414
|
+
- [ ] Implement error handling
|
|
415
|
+
- [ ] Add structured logging
|
|
416
|
+
- [ ] Validate inputs
|
|
417
|
+
- [ ] Use parallel awaits where possible
|
|
418
|
+
- [ ] Process large datasets in batches
|
|
419
|
+
- [ ] Avoid keeping state between invocations
|
|
420
|
+
- [ ] Use VPC only when needed (cold start impact)
|
|
421
|
+
|
|
422
|
+
## Troubleshooting
|
|
423
|
+
|
|
424
|
+
For common issues → `../best-practices/troubleshooting.md`
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
# Aliyun Troubleshooting Guide
|
|
2
|
+
|
|
3
|
+
## Quick Diagnosis
|
|
4
|
+
|
|
5
|
+
Run these commands to diagnose common issues:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Check function status
|
|
9
|
+
fun list functions --service my-service
|
|
10
|
+
|
|
11
|
+
# Get function logs
|
|
12
|
+
fun logs --function hello --service my-service --tail 50
|
|
13
|
+
|
|
14
|
+
# Check OSS bucket
|
|
15
|
+
ossutil ls oss://my-bucket/
|
|
16
|
+
|
|
17
|
+
# Check RDS instance
|
|
18
|
+
aliyun rds DescribeDBInstances --region cn-shanghai
|
|
19
|
+
|
|
20
|
+
# Check CDN domain
|
|
21
|
+
aliyun cdn DescribeCdnDomainDetail --DomainName example.com
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Function Issues
|
|
25
|
+
|
|
26
|
+
### Function Deployment Fails
|
|
27
|
+
|
|
28
|
+
| Error | Cause | Solution |
|
|
29
|
+
|-------|-------|----------|
|
|
30
|
+
| `Function not found` | Wrong function name or service | `fun list functions` to verify |
|
|
31
|
+
| `Deploy timeout` | Network or package size | Check package size, reduce dependencies |
|
|
32
|
+
| `Code package too large` | > 50MB compressed | Minimize dependencies |
|
|
33
|
+
| `Invalid handler` | Handler path wrong | Check template.yml handler setting |
|
|
34
|
+
| `Runtime not supported` | Wrong runtime | Use nodejs16, python3.9, etc. |
|
|
35
|
+
|
|
36
|
+
### Function Invocation Fails
|
|
37
|
+
|
|
38
|
+
| Error | Cause | Solution |
|
|
39
|
+
|-------|-------|----------|
|
|
40
|
+
| `Function timeout` | Execution > timeout | Optimize function, or use SAE |
|
|
41
|
+
| `Memory exceeded` | > memory limit | Increase memory in template |
|
|
42
|
+
| `Concurrent limit` | > 1000 concurrent | Request increase or implement throttling |
|
|
43
|
+
| `Permission denied` | No access to resource | Check RAM policies |
|
|
44
|
+
| `Handler not found` | Export name wrong | Module must export `handler` |
|
|
45
|
+
|
|
46
|
+
### Cold Start Issues
|
|
47
|
+
|
|
48
|
+
| Symptom | Cause | Solution |
|
|
49
|
+
|---------|-------|----------|
|
|
50
|
+
| First request slow | Cold start | Normal, 500ms-2s expected |
|
|
51
|
+
| Every request slow | Large package | Minimize dependencies |
|
|
52
|
+
| Slow after idle | Container recycled | Use provisioned concurrency |
|
|
53
|
+
| Inconsistent latency | VPC cold start | Avoid VPC if possible |
|
|
54
|
+
|
|
55
|
+
## Database Issues
|
|
56
|
+
|
|
57
|
+
### RDS Connection Fails
|
|
58
|
+
|
|
59
|
+
| Error | Cause | Solution |
|
|
60
|
+
|-------|-------|----------|
|
|
61
|
+
| `Connection refused` | Wrong host/port | Check RDS endpoint |
|
|
62
|
+
| `Access denied` | Wrong credentials | Verify username/password |
|
|
63
|
+
| `Unknown database` | Database doesn't exist | Create database first |
|
|
64
|
+
| `Too many connections` | Connection pool exhausted | Close connections properly |
|
|
65
|
+
|
|
66
|
+
### TableStore Issues
|
|
67
|
+
|
|
68
|
+
| Error | Cause | Solution |
|
|
69
|
+
|-------|-------|----------|
|
|
70
|
+
| `OTS permission denied` | No RAM policy | Add OTS permissions to RAM role |
|
|
71
|
+
| `OTS throttle` | Throughput exceeded | Increase reserved capacity |
|
|
72
|
+
| `OTS table not found` | Wrong table name | `ots listtable` to verify |
|
|
73
|
+
| `OTS timeout` | Large query | Reduce limit, paginate |
|
|
74
|
+
|
|
75
|
+
### Database Performance
|
|
76
|
+
|
|
77
|
+
| Symptom | Cause | Solution |
|
|
78
|
+
|---------|-------|----------|
|
|
79
|
+
| Slow queries | No index | Add indexes for WHERE/ORDER BY |
|
|
80
|
+
| Timeout | Large result set | Use pagination, limit results |
|
|
81
|
+
| High memory | Fetching too much | Add `.limit()`, project fields |
|
|
82
|
+
| Connection errors | Pool exhausted | Close connections, check pool size |
|
|
83
|
+
|
|
84
|
+
## Storage Issues
|
|
85
|
+
|
|
86
|
+
### OSS Upload/Download Fails
|
|
87
|
+
|
|
88
|
+
| Error | Cause | Solution |
|
|
89
|
+
|-------|-------|----------|
|
|
90
|
+
| `Bucket not exist` | Wrong bucket name | Check bucket name |
|
|
91
|
+
| `Object not exist` | Wrong object path | Check path (case-sensitive) |
|
|
92
|
+
| `Permission denied` | No write access | Check RAM policy |
|
|
93
|
+
| `Upload timeout` | Large file | Use multipart upload |
|
|
94
|
+
| `Invalid argument` | Path format wrong | Use `oss://bucket/path` format |
|
|
95
|
+
|
|
96
|
+
### Upload Best Practice for Large Files
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# Use multipart for files > 5GB
|
|
100
|
+
ossutil cp ./large-file.zip oss://my-bucket/backups/ \
|
|
101
|
+
--part-size 104857600 # 100MB parts
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## CDN Issues
|
|
105
|
+
|
|
106
|
+
### CDN Not Working
|
|
107
|
+
|
|
108
|
+
| Symptom | Cause | Solution |
|
|
109
|
+
|---------|-------|----------|
|
|
110
|
+
| 404 on content | Cache not refreshed | Refresh CDN after deploy |
|
|
111
|
+
| Old content | CDN serving cached version | Refresh specific path |
|
|
112
|
+
| SSL not ready | Certificate provisioning | Wait 1-10 minutes |
|
|
113
|
+
| DNS not propagated | CNAME not active | Wait 5-10 minutes |
|
|
114
|
+
|
|
115
|
+
### Refresh CDN
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# Refresh single file
|
|
119
|
+
aliyun cdn RefreshObjectCaches \
|
|
120
|
+
--ObjectType File \
|
|
121
|
+
--ObjectPath http://example.com/index.html
|
|
122
|
+
|
|
123
|
+
# Refresh directory
|
|
124
|
+
aliyun cdn RefreshObjectCaches \
|
|
125
|
+
--ObjectType Directory \
|
|
126
|
+
--ObjectPath http://example.com/static/
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Authentication Issues
|
|
130
|
+
|
|
131
|
+
### Login/Permission Errors
|
|
132
|
+
|
|
133
|
+
| Error | Cause | Solution |
|
|
134
|
+
|-------|-------|----------|
|
|
135
|
+
| `InvalidAccessKeyId` | Wrong AccessKey | Verify in RAM console |
|
|
136
|
+
| `SignatureDoesNotMatch` | Secret key mismatch | Check AccessKey Secret |
|
|
137
|
+
| `Permission denied` | Insufficient RAM permissions | Grant more permissions |
|
|
138
|
+
| `Token expired` | STS token too old | Refresh credentials |
|
|
139
|
+
|
|
140
|
+
### Credential Troubleshooting
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# Check if credentials are set
|
|
144
|
+
echo $ALICLOUD_ACCESS_KEY
|
|
145
|
+
echo $ALICLOUD_SECRET_KEY
|
|
146
|
+
|
|
147
|
+
# Verify credentials work
|
|
148
|
+
aliyun ecs DescribeInstances --region cn-shanghai
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Network Issues
|
|
152
|
+
|
|
153
|
+
### Function Can't Reach External API
|
|
154
|
+
|
|
155
|
+
```javascript
|
|
156
|
+
// FC functions can access internet by default
|
|
157
|
+
// If behind VPC, configure NAT gateway
|
|
158
|
+
|
|
159
|
+
// Test from function
|
|
160
|
+
module.exports.handler = async (event, context) => {
|
|
161
|
+
const response = await fetch('https://api.example.com/data');
|
|
162
|
+
return await response.json();
|
|
163
|
+
};
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### CORS Errors
|
|
167
|
+
|
|
168
|
+
```javascript
|
|
169
|
+
// In function, set CORS headers
|
|
170
|
+
module.exports.handler = async (req, resp, context) => {
|
|
171
|
+
resp.setHeader('Access-Control-Allow-Origin', '*');
|
|
172
|
+
resp.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
|
|
173
|
+
resp.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
|
|
174
|
+
};
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## CI/CD Issues
|
|
178
|
+
|
|
179
|
+
### GitHub Actions Deployment Fails
|
|
180
|
+
|
|
181
|
+
| Error | Cause | Solution |
|
|
182
|
+
|-------|-------|----------|
|
|
183
|
+
| `InvalidAccessKeyId` | Secrets not set | Add Aliyun secrets to GitHub |
|
|
184
|
+
| `Function not found` | Wrong service name | Check FC_SERVICE secret |
|
|
185
|
+
| `Deploy timeout` | Build takes too long | Optimize build, increase timeout |
|
|
186
|
+
| `E2E tests fail` | Deployment issue | Check function logs |
|
|
187
|
+
|
|
188
|
+
### Debug CI/CD
|
|
189
|
+
|
|
190
|
+
```yaml
|
|
191
|
+
- name: Debug
|
|
192
|
+
run: |
|
|
193
|
+
echo "ALICLOUD_REGION: ${{ secrets.ALICLOUD_REGION }}"
|
|
194
|
+
fun --access-key-id ${{ secrets.ALICLOUD_ACCESS_KEY }} \
|
|
195
|
+
--access-key-secret ${{ secrets.ALICLOUD_SECRET_KEY }} \
|
|
196
|
+
list functions --service my-service
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Performance Issues
|
|
200
|
+
|
|
201
|
+
### Function Performance
|
|
202
|
+
|
|
203
|
+
| Symptom | Cause | Solution |
|
|
204
|
+
|---------|-------|----------|
|
|
205
|
+
| High latency | Cold start | Increase memory, use provisioned |
|
|
206
|
+
| Memory pressure | Large variables | Minimize in-memory data |
|
|
207
|
+
| Timeout | Long execution | Optimize, increase timeout |
|
|
208
|
+
| Inconsistent | Cold starts | Normal, expect variance |
|
|
209
|
+
|
|
210
|
+
### Database Performance
|
|
211
|
+
|
|
212
|
+
| Symptom | Cause | Solution |
|
|
213
|
+
|---------|-------|----------|
|
|
214
|
+
| Slow queries | Missing index | Add indexes |
|
|
215
|
+
| Timeout | Large result | Paginate, limit |
|
|
216
|
+
| High memory | Fetching too much | Project fields, limit |
|
|
217
|
+
|
|
218
|
+
## Getting Help
|
|
219
|
+
|
|
220
|
+
### Collect Debug Info
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
# Function logs
|
|
224
|
+
fun logs --function hello --service my-service --tail 100 > logs.txt
|
|
225
|
+
|
|
226
|
+
# OSS bucket contents
|
|
227
|
+
ossutil ls oss://my-bucket/ > bucket.txt
|
|
228
|
+
|
|
229
|
+
# RDS instance info
|
|
230
|
+
aliyun rds DescribeDBInstances --region cn-shanghai > rds.txt
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### Common Solutions Summary
|
|
234
|
+
|
|
235
|
+
1. **Deployment fails** → Check credentials, function name, package size
|
|
236
|
+
2. **Function timeout** → Optimize code, increase timeout, or use SAE
|
|
237
|
+
3. **Database error** → Check indexes, pagination, permissions
|
|
238
|
+
4. **Permission denied** → Verify RAM policies, credentials
|
|
239
|
+
5. **CDN stale content** → Refresh CDN after deploy
|
|
240
|
+
6. **OSS access fails** → Check bucket name, path, RAM policy
|
|
241
|
+
|
|
242
|
+
### Useful Commands
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
# Full function status
|
|
246
|
+
fun list functions --service my-service
|
|
247
|
+
fun info --function hello --service my-service
|
|
248
|
+
|
|
249
|
+
# Function logs
|
|
250
|
+
fun logs --function hello --service my-service --tail --follow
|
|
251
|
+
|
|
252
|
+
# OSS debugging
|
|
253
|
+
ossutil ls oss://my-bucket/ --max-size 10
|
|
254
|
+
ossutil stat oss://my-bucket/path
|
|
255
|
+
|
|
256
|
+
# RDS debugging
|
|
257
|
+
aliyun rds DescribeDBInstanceAttribute --DBInstanceId rm-xxxxx
|
|
258
|
+
```
|