@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,163 @@
|
|
|
1
|
+
# Aliyun Platform Overview
|
|
2
|
+
|
|
3
|
+
## What is Alibaba Cloud (Aliyun)
|
|
4
|
+
|
|
5
|
+
Aliyun is Alibaba Cloud's comprehensive cloud computing platform offering 200+ cloud products and services globally. For serverless development, the key services are Function Compute, Serverless App Engine, OSS, RDS, and CDN.
|
|
6
|
+
|
|
7
|
+
## Core Services
|
|
8
|
+
|
|
9
|
+
| Service | Type | Description | Limits |
|
|
10
|
+
|---------|------|-------------|--------|
|
|
11
|
+
| Function Compute (FC) | FaaS | Event-driven serverless functions | 600s timeout, 3GB memory |
|
|
12
|
+
| Serverless App Engine (SAE) | CaaS | Container-based hosting | 86400s timeout, 32GB memory |
|
|
13
|
+
| RDS MySQL | RDBMS | Relational database | 200GB storage, 32GB memory |
|
|
14
|
+
| RDS PostgreSQL | RDBMS | Relational database | 200GB storage, 32GB memory |
|
|
15
|
+
| TableStore | NoSQL | Wide-column NoSQL | Unlimited, petabyte scale |
|
|
16
|
+
| OSS | Object Storage | File storage | Unlimited, 48TB per object |
|
|
17
|
+
| CDN | CDN | Global content delivery | 200+ edge nodes |
|
|
18
|
+
|
|
19
|
+
## Agent Decision Guide
|
|
20
|
+
|
|
21
|
+
### When to Use Each Service
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
Need to run code in response to events?
|
|
25
|
+
├── Yes → Function Compute (FC)
|
|
26
|
+
└── No → Continue
|
|
27
|
+
|
|
28
|
+
Need long-running process or persistent state?
|
|
29
|
+
├── Yes → Serverless App Engine (SAE)
|
|
30
|
+
└── No → Continue
|
|
31
|
+
|
|
32
|
+
Need to store structured data?
|
|
33
|
+
├── SQL queries, relations → RDS MySQL/PostgreSQL
|
|
34
|
+
├── Massive scale, wide columns → TableStore
|
|
35
|
+
└── JSON-like documents → TableStore (OTS)
|
|
36
|
+
|
|
37
|
+
Need to store files?
|
|
38
|
+
└── OSS (Object Storage Service)
|
|
39
|
+
|
|
40
|
+
Need to host a website?
|
|
41
|
+
└── OSS + CDN (static website hosting)
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Service Comparison
|
|
45
|
+
|
|
46
|
+
| Criteria | Function Compute | Serverless App Engine |
|
|
47
|
+
|----------|------------------|----------------------|
|
|
48
|
+
| Billing | Per invocation + traffic | Per resource usage |
|
|
49
|
+
| Cold start | 500ms-2s | 3-10s (if not warm) |
|
|
50
|
+
| Max timeout | 600s | 86400s |
|
|
51
|
+
| Memory | 128-3GB | Up to 32GB |
|
|
52
|
+
| Stateless | Yes (encouraged) | Yes (persistence optional) |
|
|
53
|
+
| WebSocket | Yes | Full support |
|
|
54
|
+
| Persistent connection | No | Yes |
|
|
55
|
+
| Custom runtime | Yes (custom container) | Yes |
|
|
56
|
+
|
|
57
|
+
### Database Selection
|
|
58
|
+
|
|
59
|
+
| Criteria | RDS (MySQL/PG) | TableStore |
|
|
60
|
+
|----------|---------------|------------|
|
|
61
|
+
| Schema | Fixed schema | Schema-less (wide columns) |
|
|
62
|
+
| Query language | SQL | SQL-like (Select/Filter) |
|
|
63
|
+
| Transactions | Full ACID | Limited |
|
|
64
|
+
| Joins | Yes | No (denormalize) |
|
|
65
|
+
| Scaling | Vertical + Read replicas | Horizontal auto-split |
|
|
66
|
+
| Use when | Traditional RDBMS needs | Massive data, time-series |
|
|
67
|
+
|
|
68
|
+
## Environment Architecture
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
┌──────────────────────────────────────────────────────────────┐
|
|
72
|
+
│ Aliyun Account │
|
|
73
|
+
├──────────────────────────────────────────────────────────────┤
|
|
74
|
+
│ ┌────────────────────────────────────────────────────────┐ │
|
|
75
|
+
│ │ Region: cn-shanghai │ │
|
|
76
|
+
│ ├────────────────────────────────────────────────────────┤ │
|
|
77
|
+
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
|
|
78
|
+
│ │ │ FC │ │ SAE │ │ RDS │ │ │
|
|
79
|
+
│ │ │ Services │ │ Instances │ │ Instances │ │ │
|
|
80
|
+
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
|
|
81
|
+
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
|
|
82
|
+
│ │ │ OSS │ │ TableStore │ │ CDN │ │ │
|
|
83
|
+
│ │ │ Buckets │ │ Instances │ │ Domains │ │ │
|
|
84
|
+
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
|
|
85
|
+
│ └────────────────────────────────────────────────────────┘ │
|
|
86
|
+
└──────────────────────────────────────────────────────────────┘
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Region Selection
|
|
90
|
+
|
|
91
|
+
| Region ID | Region Name | Use Case |
|
|
92
|
+
|-----------|-------------|----------|
|
|
93
|
+
| `cn-shanghai` | Shanghai | China mainland (default) |
|
|
94
|
+
| `cn-beijing` | Beijing | China mainland alternative |
|
|
95
|
+
| `cn-hangzhou` | Hangzhou | China mainland alternative |
|
|
96
|
+
| `ap-southeast-1` | Singapore | Southeast Asia, global access |
|
|
97
|
+
|
|
98
|
+
## Pricing Model
|
|
99
|
+
|
|
100
|
+
| Service | Billing | Notes |
|
|
101
|
+
|---------|---------|-------|
|
|
102
|
+
| Function Compute | Per invocation + CPU-time | Free tier: 1M invocations/month |
|
|
103
|
+
| SAE | Per CPU-second + memory | Pay-as-you-go |
|
|
104
|
+
| RDS | Per hour + storage | Backup storage extra |
|
|
105
|
+
| TableStore | Per request + storage | Reserved capacity cheaper |
|
|
106
|
+
| OSS | Per GB stored + traffic | First 50GB free |
|
|
107
|
+
| CDN | Per GB transferred | Traffic volume discount |
|
|
108
|
+
|
|
109
|
+
## Agent Interaction Patterns
|
|
110
|
+
|
|
111
|
+
### Pattern 1: Event-Driven Function
|
|
112
|
+
```javascript
|
|
113
|
+
// FC function triggered by HTTP or event
|
|
114
|
+
module.exports.handler = async (event, context) => {
|
|
115
|
+
// event contains request data
|
|
116
|
+
// context contains FC info
|
|
117
|
+
return { message: "Hello" };
|
|
118
|
+
};
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Pattern 2: API Gateway + Function
|
|
122
|
+
```javascript
|
|
123
|
+
// Deployed as HTTP function
|
|
124
|
+
// Accessible at: https://{service}.{region}.fc.devs.com/{path}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Pattern 3: Full-Stack with OSS+CDN
|
|
128
|
+
```
|
|
129
|
+
Browser → CDN (cached) → OSS (origin)
|
|
130
|
+
↓
|
|
131
|
+
Function Compute (API)
|
|
132
|
+
↓
|
|
133
|
+
RDS/OTS
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Common Architectures
|
|
137
|
+
|
|
138
|
+
### Architecture 1: Serverless Web App
|
|
139
|
+
```
|
|
140
|
+
Browser → CDN → OSS (static) → Function Compute (API) → RDS
|
|
141
|
+
↓
|
|
142
|
+
OSS (files)
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Architecture 2: Event-Driven Processing
|
|
146
|
+
```
|
|
147
|
+
OSS Upload → Event Trigger → Function Compute → TableStore
|
|
148
|
+
↓
|
|
149
|
+
OSS (processed files)
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Architecture 3: Containerized Microservices
|
|
153
|
+
```
|
|
154
|
+
Internet → SAE (Load Balancer) → Container Apps → RDS + OSS
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Next Steps
|
|
158
|
+
|
|
159
|
+
- For function development → `services/function-compute.md`
|
|
160
|
+
- For container workloads → `services/serverless-app-engine.md`
|
|
161
|
+
- For data storage → `services/database.md`
|
|
162
|
+
- For file storage → `services/storage.md`
|
|
163
|
+
- For static hosting → `services/cdn-hosting.md`
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
# Serverless App Engine (SAE)
|
|
2
|
+
|
|
3
|
+
## When to Use SAE
|
|
4
|
+
|
|
5
|
+
**Use SAE when:**
|
|
6
|
+
- Long-running processes (> 600s timeout)
|
|
7
|
+
- Need persistent state or connections
|
|
8
|
+
- Require large memory (> 3GB)
|
|
9
|
+
- Custom runtime or framework not supported by FC
|
|
10
|
+
- Container-based microservices architecture
|
|
11
|
+
- WebSocket connections that persist
|
|
12
|
+
- Java Spring Boot / PHP / Python applications
|
|
13
|
+
|
|
14
|
+
**Do NOT use SAE when:**
|
|
15
|
+
- Short, stateless functions → Use Function Compute (cheaper)
|
|
16
|
+
- Event-driven, bursty workloads → Use Function Compute
|
|
17
|
+
- Simple HTTP endpoints → Use Function Compute (cheaper)
|
|
18
|
+
|
|
19
|
+
## Agent Decision Guide
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
Need compute?
|
|
23
|
+
├── Short tasks (<600s), stateless → Function Compute
|
|
24
|
+
├── Long-running (>600s) → SAE
|
|
25
|
+
├── Custom container image → SAE or FC (custom runtime)
|
|
26
|
+
├── JVM-based app (Spring Boot) → SAE
|
|
27
|
+
└── WebSocket server → SAE
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## SAE vs Function Compute
|
|
31
|
+
|
|
32
|
+
| Criteria | Function Compute | SAE |
|
|
33
|
+
|----------|------------------|-----|
|
|
34
|
+
| Max timeout | 600s | 86400s |
|
|
35
|
+
| Max memory | 3GB | 32GB |
|
|
36
|
+
| Cold start | 500ms-2s | 3-10s |
|
|
37
|
+
| Pricing | Per invocation | Per CPU-second + memory |
|
|
38
|
+
| Container | Custom runtime | Full Docker support |
|
|
39
|
+
| SSH/Debug | No | Yes (via logs) |
|
|
40
|
+
| Persistent disk | No | Yes (NAS) |
|
|
41
|
+
| WebSocket | Yes | Yes |
|
|
42
|
+
| JVM support | Limited | Full |
|
|
43
|
+
| PHP/Python/Go | Supported | Full support |
|
|
44
|
+
|
|
45
|
+
## Application Deployment
|
|
46
|
+
|
|
47
|
+
### Java/Spring Boot
|
|
48
|
+
|
|
49
|
+
```dockerfile
|
|
50
|
+
FROM openjdk:8-jdk-alpine
|
|
51
|
+
VOLUME /tmp
|
|
52
|
+
ARG JAR_FILE
|
|
53
|
+
COPY ${JAR_FILE} app.jar
|
|
54
|
+
ENTRYPOINT ["java","-jar","/app.jar"]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### PHP
|
|
58
|
+
|
|
59
|
+
```dockerfile
|
|
60
|
+
FROM php:7.4-apache
|
|
61
|
+
COPY . /var/www/html/
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Python
|
|
65
|
+
|
|
66
|
+
```dockerfile
|
|
67
|
+
FROM python:3.9-slim
|
|
68
|
+
WORKDIR /app
|
|
69
|
+
COPY requirements.txt .
|
|
70
|
+
RUN pip install -r requirements.txt
|
|
71
|
+
COPY . .
|
|
72
|
+
CMD ["gunicorn", "app:app"]
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Deployment
|
|
76
|
+
|
|
77
|
+
### Using serverless devs
|
|
78
|
+
|
|
79
|
+
```yaml
|
|
80
|
+
edition: 1.0.0
|
|
81
|
+
services:
|
|
82
|
+
my-app:
|
|
83
|
+
component: sae
|
|
84
|
+
props:
|
|
85
|
+
region: cn-shanghai
|
|
86
|
+
app:
|
|
87
|
+
appName: my-sae-app
|
|
88
|
+
namespaceId: cn-shanghai
|
|
89
|
+
packageType: image
|
|
90
|
+
imageUrl: registry.cn-shanghai.aliyuncs.com/ns/image:latest
|
|
91
|
+
instances: 1-10 # auto-scaling
|
|
92
|
+
cpu: 1
|
|
93
|
+
memory: 2
|
|
94
|
+
envVars:
|
|
95
|
+
NODE_ENV: production
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
s deploy
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Using Console
|
|
103
|
+
|
|
104
|
+
1. Create application in SAE console
|
|
105
|
+
2. Upload container image or code package
|
|
106
|
+
3. Configure scaling rules
|
|
107
|
+
4. Deploy
|
|
108
|
+
|
|
109
|
+
## CLI Reference
|
|
110
|
+
|
|
111
|
+
| Command | Description |
|
|
112
|
+
|---------|-------------|
|
|
113
|
+
| `s cli sae deploy --app-name my-app` | Deploy application |
|
|
114
|
+
| `s cli sae list-apps` | List applications |
|
|
115
|
+
| `s cli sae update --instances 3` | Scale application |
|
|
116
|
+
| `s cli sae logs --app-name my-app` | View logs |
|
|
117
|
+
|
|
118
|
+
## Scaling Configuration
|
|
119
|
+
|
|
120
|
+
### Auto-scaling
|
|
121
|
+
|
|
122
|
+
```yaml
|
|
123
|
+
app:
|
|
124
|
+
scaling:
|
|
125
|
+
minInstances: 1
|
|
126
|
+
maxInstances: 10
|
|
127
|
+
cpuThreshold: 70 # scale up when CPU > 70%
|
|
128
|
+
memoryThreshold: 70
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Manual Scaling
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
s cli sae update --app-name my-app --instances 5
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Access Patterns
|
|
138
|
+
|
|
139
|
+
### HTTP Endpoint
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Get application URL
|
|
143
|
+
curl https://my-sae-app.cn-shanghai.p.sae.dev/health
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### WebSocket
|
|
147
|
+
|
|
148
|
+
```javascript
|
|
149
|
+
const ws = new WebSocket('wss://my-sae-app.cn-shanghai.p.sae.dev/ws');
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Internal Communication
|
|
153
|
+
|
|
154
|
+
Applications in same VPC can communicate internally:
|
|
155
|
+
|
|
156
|
+
```javascript
|
|
157
|
+
// From FC function to SAE application
|
|
158
|
+
const response = await fetch('http://my-sae-app:8080/api/internal', {
|
|
159
|
+
method: 'POST',
|
|
160
|
+
headers: {
|
|
161
|
+
'X-Internal-Token': process.env.INTERNAL_TOKEN
|
|
162
|
+
},
|
|
163
|
+
body: JSON.stringify({ data })
|
|
164
|
+
});
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Persistent Storage (NAS)
|
|
168
|
+
|
|
169
|
+
SAE supports NAS for persistent storage:
|
|
170
|
+
|
|
171
|
+
```yaml
|
|
172
|
+
app:
|
|
173
|
+
nasConfig:
|
|
174
|
+
mountDir: /app/data
|
|
175
|
+
accessMode: ReadWriteMany
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
```javascript
|
|
179
|
+
// Write to persistent storage
|
|
180
|
+
const fs = require('fs');
|
|
181
|
+
const data = fs.readFileSync('/app/data/cache.json', 'utf8');
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Limits and Quotas
|
|
185
|
+
|
|
186
|
+
| Limit | Value |
|
|
187
|
+
|-------|-------|
|
|
188
|
+
| Max timeout | 86400s |
|
|
189
|
+
| Max CPU | 16 cores |
|
|
190
|
+
| Max memory | 32GB |
|
|
191
|
+
| Max instances | 100 |
|
|
192
|
+
| Min instances | 0 (scale to zero) |
|
|
193
|
+
| Max concurrent requests | 10000 per instance |
|
|
194
|
+
| Max container size | 4GB |
|
|
195
|
+
|
|
196
|
+
## Best Practices
|
|
197
|
+
|
|
198
|
+
1. **Graceful shutdown** - Handle SIGTERM for clean shutdown
|
|
199
|
+
2. **Health checks** - Implement `/health` endpoint
|
|
200
|
+
3. **Logging** - Use structured JSON logging
|
|
201
|
+
4. **Environment variables** - Don't hardcode secrets
|
|
202
|
+
5. **Connection pooling** - Reuse DB connections
|
|
203
|
+
6. **Startup time** - Keep container startup under 60s
|
|
204
|
+
7. **Stateless design** - Use external storage for state
|
|
205
|
+
|
|
206
|
+
### Graceful Shutdown Example
|
|
207
|
+
|
|
208
|
+
```javascript
|
|
209
|
+
const http = require('http');
|
|
210
|
+
let isShuttingDown = false;
|
|
211
|
+
|
|
212
|
+
const server = http.createServer((req, res) => {
|
|
213
|
+
if (isShuttingDown) {
|
|
214
|
+
res.statusCode = 503;
|
|
215
|
+
res.end('Service is restarting');
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
// Handle request
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
process.on('SIGTERM', () => {
|
|
222
|
+
console.log('SIGTERM received, starting graceful shutdown');
|
|
223
|
+
isShuttingDown = true;
|
|
224
|
+
server.close(() => {
|
|
225
|
+
console.log('Server closed');
|
|
226
|
+
process.exit(0);
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## Cost Optimization
|
|
232
|
+
|
|
233
|
+
### Scale to Zero
|
|
234
|
+
|
|
235
|
+
For services not always needed:
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
s cli sae update --app-name my-app --min-instances 0
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Right-size Resources
|
|
242
|
+
|
|
243
|
+
- Monitor actual CPU/memory usage
|
|
244
|
+
- Don't over-provision for peak
|
|
245
|
+
- Use auto-scaling to handle spikes
|
|
246
|
+
|
|
247
|
+
### Cost Comparison
|
|
248
|
+
|
|
249
|
+
| Service | Use Case | Approximate Cost |
|
|
250
|
+
|---------|----------|------------------|
|
|
251
|
+
| Function Compute | 100k invocations, 128MB, 100ms | ~$0.02/day |
|
|
252
|
+
| SAE | 1 core, 1GB, 24h | ~$0.50/day |
|
|
253
|
+
|
|
254
|
+
SAE is more predictable but can be more expensive for sporadic workloads.
|
|
255
|
+
|
|
256
|
+
## Troubleshooting
|
|
257
|
+
|
|
258
|
+
| Issue | Cause | Solution |
|
|
259
|
+
|-------|-------|----------|
|
|
260
|
+
| Container fails to start | Image error, port issue | Check logs in SAE console |
|
|
261
|
+
| 503 errors | Container overloaded | Scale up instances |
|
|
262
|
+
| Slow response | Cold start, resource limits | Increase memory, enable min instances |
|
|
263
|
+
| Out of memory | Memory limit exceeded | Increase memory allocation |
|
|
264
|
+
| Deployment failed | Build or image issue | Check build logs |
|
|
265
|
+
|
|
266
|
+
For detailed troubleshooting → `../best-practices/troubleshooting.md`
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
# OSS (Object Storage Service)
|
|
2
|
+
|
|
3
|
+
## When to Use OSS
|
|
4
|
+
|
|
5
|
+
**Use OSS when:**
|
|
6
|
+
- Store files (images, videos, documents)
|
|
7
|
+
- Host static assets for CDN delivery
|
|
8
|
+
- Store user-generated content
|
|
9
|
+
- Backup and archive data
|
|
10
|
+
- Store function deployment packages
|
|
11
|
+
- Store function compute code packages
|
|
12
|
+
|
|
13
|
+
**Do NOT use OSS when:**
|
|
14
|
+
- Need database-like queries → Use TableStore or RDS
|
|
15
|
+
- Need to store < 1KB metadata → Use TableStore field
|
|
16
|
+
- Hot data requiring instant retrieval → Consider Redis
|
|
17
|
+
|
|
18
|
+
## Agent Decision Guide
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Need to store files?
|
|
22
|
+
├── User uploads (images, videos) → OSS
|
|
23
|
+
├── Function code packages → OSS (automatic with FC)
|
|
24
|
+
├── Static website assets → OSS + CDN
|
|
25
|
+
└── Temporary files during processing → OSS with lifecycle policy
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Storage Structure
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
Bucket: my-bucket-{region}
|
|
32
|
+
├── /uploads/ # User uploaded files
|
|
33
|
+
├── /avatars/ # User profile images
|
|
34
|
+
├── /documents/ # Document storage
|
|
35
|
+
└── /backups/ # Database backups
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## File Operations
|
|
39
|
+
|
|
40
|
+
### Upload File
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
ossutil cp ./file.txt oss://my-bucket/uploads/file.txt
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Download File
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
ossutil cp oss://my-bucket/uploads/file.txt ./download.txt
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### List Files
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
ossutil ls oss://my-bucket/uploads/
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Delete File
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
ossutil rm oss://my-bucket/uploads/file.txt
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Get File URL
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
ossutil stat oss://my-bucket/uploads/file.txt
|
|
68
|
+
# Returns object URL and metadata
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## CLI Reference (ossutil)
|
|
72
|
+
|
|
73
|
+
| Command | Description |
|
|
74
|
+
|---------|-------------|
|
|
75
|
+
| `ossutil ls oss://bucket/` | List objects |
|
|
76
|
+
| `ossutil cp localfile oss://bucket/path/` | Upload file |
|
|
77
|
+
| `ossutil cp oss://bucket/path localfile` | Download file |
|
|
78
|
+
| `ossutil rm oss://bucket/path` | Delete object |
|
|
79
|
+
| `ossutil stat oss://bucket/path` | Object metadata |
|
|
80
|
+
| `ossutil mkdir oss://bucket/dir/` | Create directory |
|
|
81
|
+
| `ossutil cp -r ./dir oss://bucket/dir/` | Upload directory |
|
|
82
|
+
| `ossutil sync oss://bucket1/ oss://bucket2/` | Sync between buckets |
|
|
83
|
+
| `ossutil sign oss://bucket/path` | Generate signed URL |
|
|
84
|
+
|
|
85
|
+
## Access Control
|
|
86
|
+
|
|
87
|
+
### Bucket Policies
|
|
88
|
+
|
|
89
|
+
| Type | Access | Use Case |
|
|
90
|
+
|------|--------|----------|
|
|
91
|
+
| public-read | Anyone with URL | Static assets, public downloads |
|
|
92
|
+
| private | Requires signature | User uploads, private documents |
|
|
93
|
+
|
|
94
|
+
### Signed URLs (for private buckets)
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# Generate signed URL (valid for 1 hour)
|
|
98
|
+
ossutil sign oss://my-bucket/private.pdf --timeout 3600
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### RAM Policy for Functions
|
|
102
|
+
|
|
103
|
+
```json
|
|
104
|
+
{
|
|
105
|
+
"Version": "1",
|
|
106
|
+
"Statement": [
|
|
107
|
+
{
|
|
108
|
+
"Effect": "Allow",
|
|
109
|
+
"Action": ["oss:GetObject", "oss:PutObject"],
|
|
110
|
+
"Resource": "acs:oss:*:*:my-bucket/*"
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Upload from Functions
|
|
117
|
+
|
|
118
|
+
### Direct Upload (Node.js)
|
|
119
|
+
|
|
120
|
+
```javascript
|
|
121
|
+
const OSS = require('ali-oss');
|
|
122
|
+
|
|
123
|
+
const client = new OSS({
|
|
124
|
+
region: process.env.ALICLOUD_REGION,
|
|
125
|
+
accessKeyId: process.env.ALICLOUD_ACCESS_KEY,
|
|
126
|
+
accessKeySecret: process.env.ALICLOUD_SECRET_KEY,
|
|
127
|
+
bucket: 'my-bucket'
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
async function uploadFile(fileName, fileContent) {
|
|
131
|
+
const result = await client.put(fileName, fileContent);
|
|
132
|
+
return result.url;
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Server-Side Upload (recommended for large files)
|
|
137
|
+
|
|
138
|
+
```javascript
|
|
139
|
+
// Get upload credentials from STS
|
|
140
|
+
const STM = require('aliyun-sdk').STS;
|
|
141
|
+
|
|
142
|
+
const sts = new STM({
|
|
143
|
+
accessKeyId: process.env.ALICLOUD_ACCESS_KEY,
|
|
144
|
+
accessKeySecret: process.env.ALICLOUD_SECRET_KEY,
|
|
145
|
+
region: process.env.ALICLOUD_REGION
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
const token = await sts.assumeRole({
|
|
149
|
+
RoleArn: 'acs:ram::xxx:role/oss-uploader',
|
|
150
|
+
RoleSessionName: 'uploader-session'
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
// Return credentials to client for direct upload
|
|
154
|
+
return {
|
|
155
|
+
AccessKeyId: token.credentials.AccessKeyId,
|
|
156
|
+
AccessKeySecret: token.credentials.AccessKeySecret,
|
|
157
|
+
SecurityToken: token.credentials.SecurityToken,
|
|
158
|
+
bucket: 'my-bucket',
|
|
159
|
+
endpoint: `oss-${process.env.ALICLOUD_REGION}.aliyuncs.com`
|
|
160
|
+
};
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Frontend Upload Example
|
|
164
|
+
|
|
165
|
+
```javascript
|
|
166
|
+
const client = new OSS({
|
|
167
|
+
region: 'oss-cn-shanghai',
|
|
168
|
+
accessKeyId: uploadData.AccessKeyId,
|
|
169
|
+
accessKeySecret: uploadData.AccessKeySecret,
|
|
170
|
+
stsToken: uploadData.SecurityToken,
|
|
171
|
+
bucket: uploadData.bucket
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
const file = document.querySelector('#file-input').files[0];
|
|
175
|
+
const result = await client.put(`uploads/${Date.now()}_${file.name}`, file);
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Static Website Hosting
|
|
179
|
+
|
|
180
|
+
### Enable Static Website
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
ossutil website oss://my-bucket --index index.html --error 404.html
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Set Cache-Control
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
ossutil set-meta oss://my-bucket/path -h "Cache-Control:max-age=31536000"
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### CDN Integration
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
# Add CDN domain
|
|
196
|
+
aliyun cdn AddCdnDomain \
|
|
197
|
+
--DomainName example.com \
|
|
198
|
+
--CdnType web \
|
|
199
|
+
--SourceType oss \
|
|
200
|
+
--SourceDomain my-bucket.oss-cn-shanghai.aliyuncs.com
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## Lifecycle Policies
|
|
204
|
+
|
|
205
|
+
### Configure Lifecycle
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
# Delete temp files after 7 days
|
|
209
|
+
ossutil lifecycle --bucket my-bucket --lifecycle-file lifecycle.xml
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### lifecycle.xml Example
|
|
213
|
+
|
|
214
|
+
```xml
|
|
215
|
+
<LifecycleConfiguration>
|
|
216
|
+
<Rule>
|
|
217
|
+
<ID>delete-temp</ID>
|
|
218
|
+
<Prefix>temp/</Prefix>
|
|
219
|
+
<Status>Enabled</Status>
|
|
220
|
+
<Expiration>
|
|
221
|
+
<Days>7</Days>
|
|
222
|
+
</Expiration>
|
|
223
|
+
</Rule>
|
|
224
|
+
<Rule>
|
|
225
|
+
<ID>archive-logs</ID>
|
|
226
|
+
<Prefix>logs/</Prefix>
|
|
227
|
+
<Status>Enabled</Status>
|
|
228
|
+
<Transition>
|
|
229
|
+
<Days>30</Days>
|
|
230
|
+
<StorageClass>Archive</StorageClass>
|
|
231
|
+
</Transition>
|
|
232
|
+
</Rule>
|
|
233
|
+
</LifecycleConfiguration>
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Limits and Quotas
|
|
237
|
+
|
|
238
|
+
| Limit | Value |
|
|
239
|
+
|-------|-------|
|
|
240
|
+
| Max file size | 48.8TB (single object) |
|
|
241
|
+
| Max bucket size | Unlimited |
|
|
242
|
+
| Max buckets per account | 100 |
|
|
243
|
+
| Max objects per bucket | Unlimited |
|
|
244
|
+
| PUT/COPY/POST requests | 5GB max |
|
|
245
|
+
| Multipart upload | 48.8TB max |
|
|
246
|
+
| Upload speed | Limited by function memory |
|
|
247
|
+
|
|
248
|
+
## Best Practices
|
|
249
|
+
|
|
250
|
+
1. **Use meaningful object keys** - `uploads/{userId}/{timestamp}_{filename}`
|
|
251
|
+
2. **Implement cleanup** - Delete old temporary files with lifecycle
|
|
252
|
+
3. **Use content type** - Set correct Content-Type for browser display
|
|
253
|
+
4. **Compress images** - Resize on upload to save storage
|
|
254
|
+
5. **Use CDN** - Enable CDN for frequently accessed files
|
|
255
|
+
6. **Handle duplicates** - Check if file exists before upload
|
|
256
|
+
7. **Secure uploads** - Validate file types, scan for malware
|
|
257
|
+
8. **Use multipart** - For files > 5GB
|
|
258
|
+
|
|
259
|
+
## Troubleshooting
|
|
260
|
+
|
|
261
|
+
| Issue | Cause | Solution |
|
|
262
|
+
|-------|-------|----------|
|
|
263
|
+
| Upload fails | File too large | Use multipart upload |
|
|
264
|
+
| 403 Forbidden | Private bucket | Use signed URL |
|
|
265
|
+
| File not found | Wrong path | Check path is case-sensitive |
|
|
266
|
+
| Slow download | Not cached | Enable CDN caching |
|
|
267
|
+
| Upload timeout | Slow connection | Increase function timeout |
|
|
268
|
+
|
|
269
|
+
For detailed troubleshooting → `../best-practices/troubleshooting.md`
|