@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,319 @@
|
|
|
1
|
+
# Aliyun Database (RDS + TableStore)
|
|
2
|
+
|
|
3
|
+
## When to Use Each Database Type
|
|
4
|
+
|
|
5
|
+
**Use RDS MySQL/PostgreSQL when:**
|
|
6
|
+
- Need ACID transactions
|
|
7
|
+
- Complex SQL queries with joins
|
|
8
|
+
- Fixed, well-defined schema
|
|
9
|
+
- Data integrity is critical
|
|
10
|
+
- Reporting and analytics
|
|
11
|
+
- Traditional web application data
|
|
12
|
+
|
|
13
|
+
**Use TableStore when:**
|
|
14
|
+
- Massive scale (petabyte level)
|
|
15
|
+
- Time-series data
|
|
16
|
+
- Wide-column storage needs
|
|
17
|
+
- High write throughput
|
|
18
|
+
- No complex joins needed
|
|
19
|
+
- Event logs, sensor data, analytics
|
|
20
|
+
|
|
21
|
+
## Agent Decision Guide
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
Need to store data?
|
|
25
|
+
├── Relational, SQL needed → RDS (MySQL/PostgreSQL)
|
|
26
|
+
├── Massive scale, time-series → TableStore
|
|
27
|
+
├── Flexible schema, JSON → TableStore (OTS)
|
|
28
|
+
└── Both → Use both (RDS for transactions, OTS for logs)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## RDS (Relational Database Service)
|
|
32
|
+
|
|
33
|
+
### Connection
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Using MySQL client
|
|
37
|
+
mysql -h ${RDS_HOST} -P 3306 -u ${RDS_USER} -p${RDS_PASSWORD}
|
|
38
|
+
|
|
39
|
+
# Using PostgreSQL client
|
|
40
|
+
psql -h ${RDS_HOST} -P 5432 -U ${RDS_USER} -d ${RDS_DATABASE}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Schema Design
|
|
44
|
+
|
|
45
|
+
```sql
|
|
46
|
+
-- Users table
|
|
47
|
+
CREATE TABLE users (
|
|
48
|
+
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
|
49
|
+
user_id VARCHAR(64) UNIQUE NOT NULL,
|
|
50
|
+
nickname VARCHAR(128),
|
|
51
|
+
avatar_url VARCHAR(512),
|
|
52
|
+
status TINYINT DEFAULT 1,
|
|
53
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
54
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
55
|
+
INDEX idx_status (status),
|
|
56
|
+
INDEX idx_created (created_at)
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
-- Orders table
|
|
60
|
+
CREATE TABLE orders (
|
|
61
|
+
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
|
62
|
+
order_no VARCHAR(64) UNIQUE NOT NULL,
|
|
63
|
+
user_id BIGINT NOT NULL,
|
|
64
|
+
amount DECIMAL(10, 2) NOT NULL,
|
|
65
|
+
status VARCHAR(32) NOT NULL,
|
|
66
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
67
|
+
FOREIGN KEY (user_id) REFERENCES users(id),
|
|
68
|
+
INDEX idx_user (user_id),
|
|
69
|
+
INDEX idx_order_no (order_no)
|
|
70
|
+
);
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Transaction Support
|
|
74
|
+
|
|
75
|
+
```javascript
|
|
76
|
+
const mysql = require('mysql2/promise');
|
|
77
|
+
|
|
78
|
+
const connection = await mysql.createConnection({
|
|
79
|
+
host: process.env.RDS_HOST,
|
|
80
|
+
port: process.env.RDS_PORT,
|
|
81
|
+
user: process.env.RDS_USER,
|
|
82
|
+
password: process.env.RDS_PASSWORD,
|
|
83
|
+
database: process.env.RDS_DATABASE
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
await connection.beginTransaction();
|
|
87
|
+
try {
|
|
88
|
+
await connection.execute(
|
|
89
|
+
'INSERT INTO orders (order_no, user_id, amount) VALUES (?, ?, ?)',
|
|
90
|
+
[orderNo, userId, amount]
|
|
91
|
+
);
|
|
92
|
+
await connection.execute(
|
|
93
|
+
'UPDATE users SET status = ? WHERE id = ?',
|
|
94
|
+
['active', userId]
|
|
95
|
+
);
|
|
96
|
+
await connection.commit();
|
|
97
|
+
} catch (error) {
|
|
98
|
+
await connection.rollback();
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## TableStore (OTS)
|
|
104
|
+
|
|
105
|
+
### Data Model
|
|
106
|
+
|
|
107
|
+
- **Instance** = Database
|
|
108
|
+
- **Table** = Collection
|
|
109
|
+
- **Row** = Document
|
|
110
|
+
- **Column** = Field (dynamic, no fixed schema)
|
|
111
|
+
|
|
112
|
+
### Table Structure
|
|
113
|
+
|
|
114
|
+
```javascript
|
|
115
|
+
// Primary key structure (required)
|
|
116
|
+
const tableSchema = {
|
|
117
|
+
tableName: 'user_events',
|
|
118
|
+
primaryKey: [
|
|
119
|
+
{ name: 'user_id', type: 'STRING' },
|
|
120
|
+
{ name: 'event_time', type: 'STRING' } // Sort key
|
|
121
|
+
],
|
|
122
|
+
// Defined columns (optional - for indexing)
|
|
123
|
+
definedColumns: [
|
|
124
|
+
{ name: 'event_type', type: 'STRING' },
|
|
125
|
+
{ name: 'event_data', type: 'STRING' }
|
|
126
|
+
],
|
|
127
|
+
// Reserved throughput
|
|
128
|
+
reservedThroughput: {
|
|
129
|
+
capacityUnit: { read: 1, write: 1 }
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Query Syntax
|
|
135
|
+
|
|
136
|
+
```javascript
|
|
137
|
+
const { client, Long } = require('aliyun-sdk');
|
|
138
|
+
|
|
139
|
+
constOTS = new client.OTS({
|
|
140
|
+
accessKeyId: process.env.ALICLOUD_ACCESS_KEY,
|
|
141
|
+
accessKeySecret: process.env.ALICLOUD_SECRET_KEY,
|
|
142
|
+
endpoint: `https://${process.env.OTS_REGION}.ots.aliyuncs.com`,
|
|
143
|
+
instanceName: process.env.OTS_INSTANCE
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
// Put row
|
|
147
|
+
await otsClient.putRow({
|
|
148
|
+
tableName: 'user_events',
|
|
149
|
+
primaryKey: [{ user_id: 'user-123' }, { event_time: '2024-01-01T00:00:00Z' }],
|
|
150
|
+
attributeColumns: [
|
|
151
|
+
{ event_type: 'click' },
|
|
152
|
+
{ event_data: JSON.stringify({ page: '/home' }) }
|
|
153
|
+
]
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
// Get row
|
|
157
|
+
const result = await otsClient.getRow({
|
|
158
|
+
tableName: 'user_events',
|
|
159
|
+
primaryKey: [{ user_id: 'user-123' }, { event_time: '2024-01-01T00:00:00Z' }]
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
// Query with filter
|
|
163
|
+
const queryResult = await otsClient.search({
|
|
164
|
+
tableName: 'user_events',
|
|
165
|
+
indexName: 'event_type_index',
|
|
166
|
+
searchQuery: {
|
|
167
|
+
offset: 0,
|
|
168
|
+
limit: 10,
|
|
169
|
+
query: {
|
|
170
|
+
terms: [{ event_type: 'click' }]
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## CLI Reference (RDS)
|
|
177
|
+
|
|
178
|
+
| Command | Description |
|
|
179
|
+
|---------|-------------|
|
|
180
|
+
| `aliyun rds DescribeDBInstances` | List RDS instances |
|
|
181
|
+
| `aliyun rds CreateDatabase --DBInstanceId xxx` | Create database |
|
|
182
|
+
| `aliyun rds CreateAccount --DBInstanceId xxx` | Create account |
|
|
183
|
+
| `mysqldump -h ${HOST} -u ${USER} -p` | Backup database |
|
|
184
|
+
|
|
185
|
+
## CLI Reference (TableStore)
|
|
186
|
+
|
|
187
|
+
| Command | Description |
|
|
188
|
+
|---------|-------------|
|
|
189
|
+
| `ots shell --instance xxx` | Interactive OTS shell |
|
|
190
|
+
| `ots listTable --instance xxx` | List tables |
|
|
191
|
+
| `ots describeTable --instance xxx --table xxx` | Table schema |
|
|
192
|
+
|
|
193
|
+
## Limits and Quotas
|
|
194
|
+
|
|
195
|
+
| Limit | RDS | TableStore |
|
|
196
|
+
|-------|-----|------------|
|
|
197
|
+
| Storage | 200GB (max) | Unlimited |
|
|
198
|
+
| Max connections | 1000 (MySQL) | N/A |
|
|
199
|
+
| Max query result | 10000 | 1000 (client pagination) |
|
|
200
|
+
| Throughput | Instance size dependent | Pay per request |
|
|
201
|
+
|
|
202
|
+
## Database Selection Flow
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
┌─────────────────┐
|
|
206
|
+
│ Need to store │
|
|
207
|
+
│ data? │
|
|
208
|
+
└────────┬────────┘
|
|
209
|
+
│
|
|
210
|
+
┌──────────────┼──────────────┐
|
|
211
|
+
│ │ │
|
|
212
|
+
▼ ▼ ▼
|
|
213
|
+
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
214
|
+
│ Relational, │ │ Massive │ │ Flexible │
|
|
215
|
+
│ SQL │ │ scale, time │ │ schema │
|
|
216
|
+
│ │ │ series │ │ (JSON) │
|
|
217
|
+
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
|
|
218
|
+
│ │ │
|
|
219
|
+
▼ ▼ ▼
|
|
220
|
+
RDS MySQL TableStore TableStore
|
|
221
|
+
(PG also) (OTS) (OTS)
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## Indexing Strategy
|
|
225
|
+
|
|
226
|
+
### RDS Indexes
|
|
227
|
+
|
|
228
|
+
```sql
|
|
229
|
+
-- Single column
|
|
230
|
+
CREATE INDEX idx_email ON users(email);
|
|
231
|
+
|
|
232
|
+
-- Composite (for WHERE status = ? AND created_at > ?)
|
|
233
|
+
CREATE INDEX idx_status_created ON users(status, created_at);
|
|
234
|
+
|
|
235
|
+
-- Covering index
|
|
236
|
+
CREATE INDEX idx_status_created_covering ON users(status, created_at, id, nickname);
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### TableStore Indexes
|
|
240
|
+
|
|
241
|
+
```javascript
|
|
242
|
+
// Create search index
|
|
243
|
+
await otsClient.createSearchIndex({
|
|
244
|
+
tableName: 'user_events',
|
|
245
|
+
indexName: 'event_type_index',
|
|
246
|
+
schema: {
|
|
247
|
+
fieldSchemas: [
|
|
248
|
+
{ fieldName: 'event_type', fieldType: 'KEYWORD' },
|
|
249
|
+
{ fieldName: 'event_time', fieldType: 'TIMESTAMP' },
|
|
250
|
+
{ fieldName: 'event_data', fieldType: 'TEXT' }
|
|
251
|
+
]
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
## Best Practices
|
|
257
|
+
|
|
258
|
+
### RDS
|
|
259
|
+
|
|
260
|
+
1. **Normalize for write integrity** - Use proper relations
|
|
261
|
+
2. **Index wisely** - Too many indexes slow writes
|
|
262
|
+
3. **Use connection pooling** - Don't create new connection per request
|
|
263
|
+
4. **Parameterize queries** - Prevent SQL injection
|
|
264
|
+
5. **Use transactions** - For operations affecting multiple tables
|
|
265
|
+
6. **Enable slow query log** - Monitor and optimize
|
|
266
|
+
|
|
267
|
+
### TableStore
|
|
268
|
+
|
|
269
|
+
1. **Design primary key** - Hotspot avoidance (spread writes)
|
|
270
|
+
2. **Use search index** - For non-primary key queries
|
|
271
|
+
3. **Batch operations** - Use batchWrite for efficiency
|
|
272
|
+
4. **Partition by time** - For time-series data
|
|
273
|
+
5. **Monitor throughput** - Adjust reserved capacity
|
|
274
|
+
|
|
275
|
+
## Accessing Databases from Functions
|
|
276
|
+
|
|
277
|
+
### From Function Compute
|
|
278
|
+
|
|
279
|
+
```javascript
|
|
280
|
+
const mysql = require('mysql2/promise');
|
|
281
|
+
|
|
282
|
+
module.exports.handler = async (event, context) => {
|
|
283
|
+
// RDS connection
|
|
284
|
+
const connection = await mysql.createConnection({
|
|
285
|
+
host: process.env.RDS_HOST,
|
|
286
|
+
port: process.env.RDS_PORT,
|
|
287
|
+
user: process.env.RDS_USER,
|
|
288
|
+
password: process.env.RDS_PASSWORD,
|
|
289
|
+
database: process.env.RDS_DATABASE
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
const [rows] = await connection.execute('SELECT * FROM users LIMIT 10');
|
|
293
|
+
return { users: rows };
|
|
294
|
+
};
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
```javascript
|
|
298
|
+
// TableStore from FC
|
|
299
|
+
const OTS = require('ali-oss');
|
|
300
|
+
|
|
301
|
+
const otsClient = new OTS({
|
|
302
|
+
region: process.env.ALICLOUD_REGION,
|
|
303
|
+
accessKeyId: process.env.ALICLOUD_ACCESS_KEY,
|
|
304
|
+
accessKeySecret: process.env.ALICLOUD_SECRET_KEY,
|
|
305
|
+
bucket: process.env.OTS_INSTANCE
|
|
306
|
+
});
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
## Troubleshooting
|
|
310
|
+
|
|
311
|
+
| Issue | Cause | Solution |
|
|
312
|
+
|-------|-------|----------|
|
|
313
|
+
| Connection refused | Wrong host/port | Check RDS/OTS endpoint |
|
|
314
|
+
| Access denied | Wrong credentials | Verify RAM permissions |
|
|
315
|
+
| Query timeout | Large dataset, no index | Add index, paginate |
|
|
316
|
+
| TableStore throttle | Throughput exceeded | Increase reserved capacity |
|
|
317
|
+
| SQL syntax error | Invalid SQL | Check MySQL syntax |
|
|
318
|
+
|
|
319
|
+
For detailed troubleshooting → `../best-practices/troubleshooting.md`
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
# Function Compute (FC)
|
|
2
|
+
|
|
3
|
+
## When to Use Function Compute
|
|
4
|
+
|
|
5
|
+
**Use Function Compute when:**
|
|
6
|
+
- Responding to HTTP requests (API endpoints)
|
|
7
|
+
- Processing events (OSS uploads, timers, queue messages)
|
|
8
|
+
- Running short-lived, stateless computations (< 600s)
|
|
9
|
+
- Needing automatic scaling without managing servers
|
|
10
|
+
|
|
11
|
+
**Do NOT use Function Compute when:**
|
|
12
|
+
- Execution time exceeds 600 seconds → Use SAE
|
|
13
|
+
- Need persistent connections or background workers
|
|
14
|
+
- Require very large memory (> 3GB)
|
|
15
|
+
- Stateful computation requiring local disk persistence
|
|
16
|
+
|
|
17
|
+
## Agent Decision Guide
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Need serverless compute?
|
|
21
|
+
├── Short task (<600s), event-driven → Function Compute
|
|
22
|
+
├── Long-running (>600s) → Serverless App Engine (SAE)
|
|
23
|
+
├── Custom container image → Function Compute (custom runtime)
|
|
24
|
+
└── Containerized workload → Serverless App Engine (SAE)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Function Types
|
|
28
|
+
|
|
29
|
+
### HTTP Functions
|
|
30
|
+
|
|
31
|
+
Responding to HTTP requests via API Gateway.
|
|
32
|
+
|
|
33
|
+
```javascript
|
|
34
|
+
module.exports.handler = async (req, resp, context) => {
|
|
35
|
+
// req: HTTP request { headers, queries, path, method, body }
|
|
36
|
+
// context: FC context info
|
|
37
|
+
return {
|
|
38
|
+
statusCode: 200,
|
|
39
|
+
body: JSON.stringify({ message: "Hello World" })
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Access URL pattern:** `https://{service}.{region}.fc.devs.com/{functionName}`
|
|
45
|
+
|
|
46
|
+
### Event Functions
|
|
47
|
+
|
|
48
|
+
Triggered by various event sources.
|
|
49
|
+
|
|
50
|
+
```javascript
|
|
51
|
+
module.exports.handler = async (event, context) => {
|
|
52
|
+
// event: varies by trigger type
|
|
53
|
+
// e.g., OSS event: { bucket, object, operation }
|
|
54
|
+
// e.g., Timer event: { triggerTime, ... }
|
|
55
|
+
return { processed: true };
|
|
56
|
+
};
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### WebSocket Functions
|
|
60
|
+
|
|
61
|
+
For real-time bidirectional communication.
|
|
62
|
+
|
|
63
|
+
```javascript
|
|
64
|
+
module.exports.handler = async (event, context) => {
|
|
65
|
+
// event: { type: 'connect' | 'message' | 'disconnect', connectionId, ... }
|
|
66
|
+
switch (event.type) {
|
|
67
|
+
case 'connect':
|
|
68
|
+
// Handle new connection
|
|
69
|
+
break;
|
|
70
|
+
case 'message':
|
|
71
|
+
// Handle incoming message
|
|
72
|
+
break;
|
|
73
|
+
case 'disconnect':
|
|
74
|
+
// Handle disconnection
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Function Structure
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
my-project/
|
|
84
|
+
├── index.js # Entry point
|
|
85
|
+
├── package.json # Dependencies
|
|
86
|
+
├── template.yml # FC deployment config
|
|
87
|
+
└── .funignore # Files to exclude
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### template.yml Example
|
|
91
|
+
|
|
92
|
+
```yaml
|
|
93
|
+
ROSTemplateFormatVersion: '2015-09-01'
|
|
94
|
+
Transform: Alibaba Cloud Resource Orchestration Service (ROS)
|
|
95
|
+
Resources:
|
|
96
|
+
my-service:
|
|
97
|
+
Type: Alibaba Cloud::Function Compute::Function
|
|
98
|
+
Properties:
|
|
99
|
+
ServiceName: my-service
|
|
100
|
+
FunctionName: hello
|
|
101
|
+
Runtime: nodejs16
|
|
102
|
+
Handler: index.handler
|
|
103
|
+
MemorySize: 256
|
|
104
|
+
Timeout: 60
|
|
105
|
+
CodeUri: ./
|
|
106
|
+
EnvironmentVariables:
|
|
107
|
+
NODE_ENV: production
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Deployment
|
|
111
|
+
|
|
112
|
+
### Using fun CLI
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# Deploy with template
|
|
116
|
+
fun deploy --template template.yml
|
|
117
|
+
|
|
118
|
+
# Deploy specific function
|
|
119
|
+
fun deploy --function hello --service my-service
|
|
120
|
+
|
|
121
|
+
# Deploy all functions in template
|
|
122
|
+
fun deploy
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Using serverless devs (s.yaml)
|
|
126
|
+
|
|
127
|
+
```yaml
|
|
128
|
+
edition: 1.0.0
|
|
129
|
+
services:
|
|
130
|
+
my-app:
|
|
131
|
+
component: fc
|
|
132
|
+
props:
|
|
133
|
+
region: cn-shanghai
|
|
134
|
+
service:
|
|
135
|
+
name: my-service
|
|
136
|
+
description: My service
|
|
137
|
+
function:
|
|
138
|
+
name: hello
|
|
139
|
+
runtime: nodejs16
|
|
140
|
+
handler: index.handler
|
|
141
|
+
memorySize: 256
|
|
142
|
+
timeout: 60
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
s deploy
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## CLI Reference
|
|
150
|
+
|
|
151
|
+
| Command | Description |
|
|
152
|
+
|---------|-------------|
|
|
153
|
+
| `fun init --template http-trigger` | Initialize new function project |
|
|
154
|
+
| `fun deploy --template template.yml` | Deploy from template |
|
|
155
|
+
| `fun invoke --function hello --service my-service` | Invoke function |
|
|
156
|
+
| `fun logs --function hello --service my-service` | View logs |
|
|
157
|
+
| `fun list functions --service my-service` | List functions |
|
|
158
|
+
| `fun remove --function hello --service my-service` | Delete function |
|
|
159
|
+
|
|
160
|
+
## Limits and Quotas
|
|
161
|
+
|
|
162
|
+
| Limit | Value | Notes |
|
|
163
|
+
|-------|-------|-------|
|
|
164
|
+
| Timeout | 600s (default), up to 600s | Use SAE for longer |
|
|
165
|
+
| Memory | 128-3072MB | Adjust in template |
|
|
166
|
+
| Concurrent executions | 1000 (default) | Can request increase |
|
|
167
|
+
| Package size | 50MB (compressed) | Include dependencies |
|
|
168
|
+
| Environment variables | 4KB total | Per function |
|
|
169
|
+
| VPC | Supported | Requires config |
|
|
170
|
+
|
|
171
|
+
## Cold Start Optimization
|
|
172
|
+
|
|
173
|
+
### Problem
|
|
174
|
+
Cold start adds 500ms-2s latency when function is idle.
|
|
175
|
+
|
|
176
|
+
### Solutions
|
|
177
|
+
|
|
178
|
+
1. **Use provisioned concurrency** (paid feature)
|
|
179
|
+
```yaml
|
|
180
|
+
function:
|
|
181
|
+
name: hello
|
|
182
|
+
provisionedConcurrency: 2 # Keep 2 instances warm
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
2. **Reduce package size**
|
|
186
|
+
- Minimize dependencies
|
|
187
|
+
- Use ES modules
|
|
188
|
+
- Tree-shake unused code
|
|
189
|
+
|
|
190
|
+
3. **Use larger memory allocation**
|
|
191
|
+
- More memory → faster CPU
|
|
192
|
+
- 512MB+ recommended for latency-sensitive functions
|
|
193
|
+
|
|
194
|
+
4. **Avoid VPC if possible**
|
|
195
|
+
- VPC adds 10-30s cold start
|
|
196
|
+
|
|
197
|
+
## Error Handling
|
|
198
|
+
|
|
199
|
+
### Function Errors
|
|
200
|
+
|
|
201
|
+
```javascript
|
|
202
|
+
module.exports.handler = async (req, resp, context) => {
|
|
203
|
+
try {
|
|
204
|
+
// Business logic
|
|
205
|
+
const result = await processData(req.body);
|
|
206
|
+
return { success: true, data: result };
|
|
207
|
+
|
|
208
|
+
} catch (error) {
|
|
209
|
+
// Log error for debugging
|
|
210
|
+
console.error('Error:', error.message);
|
|
211
|
+
// Return error response
|
|
212
|
+
resp.statusCode = 500;
|
|
213
|
+
return { error: error.message };
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Retry Behavior
|
|
219
|
+
|
|
220
|
+
- HTTP functions: No automatic retry (client should retry)
|
|
221
|
+
- Event functions: Depends on trigger (OSS triggers have built-in retry)
|
|
222
|
+
- For critical operations, implement idempotency
|
|
223
|
+
|
|
224
|
+
## Accessing Aliyun Services from Functions
|
|
225
|
+
|
|
226
|
+
```javascript
|
|
227
|
+
const OSS = require('ali-oss');
|
|
228
|
+
const FC = require('@alicloud/fc-builders');
|
|
229
|
+
|
|
230
|
+
module.exports.handler = async (event, context) => {
|
|
231
|
+
const accessKeyId = process.env.ALICLOUD_ACCESS_KEY;
|
|
232
|
+
const accessKeySecret = process.env.ALICLOUD_SECRET_KEY;
|
|
233
|
+
|
|
234
|
+
// Access OSS
|
|
235
|
+
const ossClient = new OSS({
|
|
236
|
+
region: process.env.ALICLOUD_REGION,
|
|
237
|
+
accessKeyId,
|
|
238
|
+
accessKeySecret,
|
|
239
|
+
bucket: 'my-bucket'
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
// Access TableStore
|
|
243
|
+
const TableStore = require('tablestore');
|
|
244
|
+
const client = new TableStore.Client({
|
|
245
|
+
accessKeyId,
|
|
246
|
+
accessKeySecret,
|
|
247
|
+
instanceName: 'my-instance',
|
|
248
|
+
region: process.env.ALICLOUD_REGION
|
|
249
|
+
});
|
|
250
|
+
};
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
## Best Practices
|
|
254
|
+
|
|
255
|
+
1. **Stateless design** - Don't rely on in-memory state between invocations
|
|
256
|
+
2. **Idempotent operations** - Handle duplicate invocations gracefully
|
|
257
|
+
3. **Structured logging** - Use `console.log` with JSON format
|
|
258
|
+
4. **Environment-specific config** - Use env vars, not hardcoded values
|
|
259
|
+
5. **Minimize dependencies** - Faster cold start, smaller package
|
|
260
|
+
6. **Set appropriate timeout** - Not too short (failures), not too long (cost)
|
|
261
|
+
7. **Use VPC wisely** - VPC adds cold start time
|
|
262
|
+
|
|
263
|
+
## Troubleshooting
|
|
264
|
+
|
|
265
|
+
| Issue | Cause | Solution |
|
|
266
|
+
|-------|-------|----------|
|
|
267
|
+
| Function timeout | Long execution | Optimize code or use SAE |
|
|
268
|
+
| 403 Forbidden | Permission error | Check RAM roles |
|
|
269
|
+
| Cold start too slow | Large package, VPC | Minimize deps, avoid VPC |
|
|
270
|
+
| Memory exceeded | Memory limit exceeded | Increase memory in template |
|
|
271
|
+
| Concurrent limit reached | Too many requests | Request increase or implement throttling |
|
|
272
|
+
|
|
273
|
+
For detailed troubleshooting → `../best-practices/troubleshooting.md`
|