@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,315 @@
|
|
|
1
|
+
# Aliyun CLI: Storage (ossutil)
|
|
2
|
+
|
|
3
|
+
## When to Use Storage Commands
|
|
4
|
+
|
|
5
|
+
| Goal | Command | Notes |
|
|
6
|
+
|------|---------|-------|
|
|
7
|
+
| Upload file | `ossutil cp` | Main upload command |
|
|
8
|
+
| Download file | `ossutil cp` | Bidirectional |
|
|
9
|
+
| List files | `ossutil ls` | Path is case-sensitive |
|
|
10
|
+
| Delete file | `ossutil rm` | Permanent deletion |
|
|
11
|
+
| Get metadata | `ossutil stat` | Object info |
|
|
12
|
+
| Generate signed URL | `ossutil sign` | For private buckets |
|
|
13
|
+
| Sync directories | `ossutil sync` | Mirror directories |
|
|
14
|
+
|
|
15
|
+
## Decision Tree for Storage Operations
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
Need to work with OSS?
|
|
19
|
+
├── Upload user content → ossutil cp
|
|
20
|
+
├── Download backup/file → ossutil cp
|
|
21
|
+
├── List directory → ossutil ls
|
|
22
|
+
├── Delete old files → ossutil rm
|
|
23
|
+
├── Get public URL → ossutil stat
|
|
24
|
+
├── Large file upload → ossutil cp (multipart)
|
|
25
|
+
└── Sync between buckets → ossutil sync
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Configure ossutil
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
ossutil config
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Enter when prompted:
|
|
35
|
+
- AccessKey ID
|
|
36
|
+
- AccessKey Secret
|
|
37
|
+
- Default region (cn-shanghai or other)
|
|
38
|
+
- Output format (json or text)
|
|
39
|
+
|
|
40
|
+
Or use environment variables:
|
|
41
|
+
```bash
|
|
42
|
+
export ALICLOUD_ACCESS_KEY=your-key
|
|
43
|
+
export ALICLOUD_SECRET_KEY=your-secret
|
|
44
|
+
export ALICLOUD_REGION=cn-shanghai
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## List Files
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
ossutil ls oss://my-bucket/
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Output:
|
|
54
|
+
```
|
|
55
|
+
LastModifiedTime Size(B) ObjectPath
|
|
56
|
+
2024-01-15 10:30:00 +0800 125000 oss://my-bucket/avatar.jpg
|
|
57
|
+
2024-01-14 15:22:00 +0800 2400000 oss://my-bucket/doc.pdf
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### List with Pattern
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# List all jpg files
|
|
64
|
+
ossutil ls oss://my-bucket/ --pattern "*.jpg"
|
|
65
|
+
|
|
66
|
+
# List files in specific prefix
|
|
67
|
+
ossutil ls oss://my-bucket/uploads/
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### List with Pagination
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
ossutil ls oss://my-bucket/ --max-size 100 --marker <next-marker>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Upload File
|
|
77
|
+
|
|
78
|
+
### Basic Upload
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
ossutil cp ./avatar.jpg oss://my-bucket/avatars/avatar.jpg
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Upload with Content-Type
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
ossutil cp ./document.pdf oss://my-bucket/docs/report.pdf \
|
|
88
|
+
--content-type application/pdf
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Upload Directory
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
ossutil cp -r ./dist oss://my-bucket/ --update
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Upload Options
|
|
98
|
+
|
|
99
|
+
| Option | Description |
|
|
100
|
+
|--------|-------------|
|
|
101
|
+
| `--update` | Skip if source is older |
|
|
102
|
+
| `--force` | Overwrite without prompt |
|
|
103
|
+
| `--quiet` | Suppress output |
|
|
104
|
+
| `--parallel <num>` | Parallel upload threads |
|
|
105
|
+
| `--part-size <size>` | Multipart size |
|
|
106
|
+
| `--checkpoint-dir <dir>` | Checkpoint file for resume |
|
|
107
|
+
|
|
108
|
+
### Multipart Upload (Large Files)
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
ossutil cp ./large-file.zip oss://my-bucket/backups/large-file.zip \
|
|
112
|
+
--part-size 104857600 # 100MB parts
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Download File
|
|
116
|
+
|
|
117
|
+
### Basic Download
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
ossutil cp oss://my-bucket/avatars/avatar.jpg ./download.jpg
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Download with Progress
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
ossutil cp oss://my-bucket/backups/archive.zip ./archive.zip \
|
|
127
|
+
--checkpoint-dir ./checkpoint/
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Delete File
|
|
131
|
+
|
|
132
|
+
### Delete Single File
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
ossutil rm oss://my-bucket/old-file.jpg
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Delete with Confirmation
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
ossutil rm oss://my-bucket/temp/ -r
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Delete by Pattern
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
# Delete all .log files
|
|
148
|
+
ossutil rm oss://my-bucket/logs/ --pattern "*.log"
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Delete Empty Bucket
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
ossutil rm oss://my-bucket/ -a
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Get File URL
|
|
158
|
+
|
|
159
|
+
### Get Object URL
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
ossutil stat oss://my-bucket/avatars/avatar.jpg
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Output:
|
|
166
|
+
```
|
|
167
|
+
Bucket: my-bucket
|
|
168
|
+
Object: /avatars/avatar.jpg
|
|
169
|
+
URL: https://my-bucket.oss-cn-shanghai.aliyuncs.com/avatars/avatar.jpg
|
|
170
|
+
Size: 125000
|
|
171
|
+
LastModified: 2024-01-15 10:30:00
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Generate Signed URL
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
ossutil sign oss://my-bucket/private.pdf --timeout 3600
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Returns URL with signature valid for 1 hour.
|
|
181
|
+
|
|
182
|
+
## Sync Directories
|
|
183
|
+
|
|
184
|
+
### Sync Local to OSS
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
ossutil sync ./dist oss://my-bucket/ --update
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Sync OSS to OSS
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
ossutil sync oss://bucket1/ oss://bucket2/ --update
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Sync with Delete
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
# Delete files in target not in source
|
|
200
|
+
ossutil sync ./dist oss://my-bucket/ --delete
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## Set Object Metadata
|
|
204
|
+
|
|
205
|
+
### Set Cache-Control
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
ossutil set-meta oss://my-bucket/ \
|
|
209
|
+
-h "Cache-Control:max-age=31536000" \
|
|
210
|
+
--object "*.js,*.css"
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Set Content-Type
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
ossutil set-meta oss://my-bucket/images/ \
|
|
217
|
+
-h "Content-Type:image/webp" \
|
|
218
|
+
--object "*.jpg"
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
## Create Bucket
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
ossutil mb oss://new-bucket/
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### With Storage Class
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
# Create Infrequent Access bucket
|
|
231
|
+
ossutil mb oss://archive-bucket/ --storage-class IA
|
|
232
|
+
|
|
233
|
+
# Create Archive bucket
|
|
234
|
+
ossutil mb oss://cold-bucket/ --storage-class Archive
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## Bucket Policy
|
|
238
|
+
|
|
239
|
+
### Set Bucket ACL
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
ossutil set-acl oss://my-bucket/ private
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
| ACL | Access |
|
|
246
|
+
|-----|--------|
|
|
247
|
+
| `private` | Owner only |
|
|
248
|
+
| `public-read` | Anyone read |
|
|
249
|
+
| `public-read-write` | Anyone read/write |
|
|
250
|
+
| `default` | Inherit from bucket |
|
|
251
|
+
|
|
252
|
+
## Agent Workflows
|
|
253
|
+
|
|
254
|
+
### Workflow: Upload User Avatar
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
# 1. Upload file
|
|
258
|
+
ossutil cp ./temp_avatar.jpg \
|
|
259
|
+
oss://my-bucket/avatars/${userId}/avatar.jpg
|
|
260
|
+
|
|
261
|
+
# 2. Get public URL
|
|
262
|
+
ossutil stat oss://my-bucket/avatars/${userId}/avatar.jpg
|
|
263
|
+
|
|
264
|
+
# 3. Return URL to frontend
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### Workflow: Backup Database
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
# 1. Export database (pseudo-code)
|
|
271
|
+
mysqldump -h ${RDS_HOST} -u ${RDS_USER} -p > backup.sql
|
|
272
|
+
|
|
273
|
+
# 2. Compress
|
|
274
|
+
gzip backup.sql
|
|
275
|
+
|
|
276
|
+
# 3. Upload to OSS
|
|
277
|
+
ossutil cp ./backup.sql.gz \
|
|
278
|
+
oss://my-bucket/backups/db_$(date +%Y%m%d).sql.gz
|
|
279
|
+
|
|
280
|
+
# 4. Cleanup local file
|
|
281
|
+
rm backup.sql.gz
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Workflow: Static Site Deployment
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
# 1. Upload all files
|
|
288
|
+
ossutil cp -r ./dist oss://my-bucket/ --force
|
|
289
|
+
|
|
290
|
+
# 2. Set proper cache headers
|
|
291
|
+
ossutil set-meta oss://my-bucket/ \
|
|
292
|
+
-h "Cache-Control:max-age=31536000" \
|
|
293
|
+
--object "*.js,*.css,*.png"
|
|
294
|
+
|
|
295
|
+
# 3. Set short cache for HTML
|
|
296
|
+
ossutil set-meta oss://my-bucket/ \
|
|
297
|
+
-h "Cache-Control:no-cache" \
|
|
298
|
+
--object "*.html"
|
|
299
|
+
|
|
300
|
+
# 4. Refresh CDN
|
|
301
|
+
aliyun cdn RefreshObjectCaches --ObjectType directory \
|
|
302
|
+
--ObjectPath http://my-bucket.oss-cn-shanghai.aliyuncs.com/
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
## Troubleshooting
|
|
306
|
+
|
|
307
|
+
| Issue | Cause | Solution |
|
|
308
|
+
|-------|-------|----------|
|
|
309
|
+
| `The bucket you access does not exist` | Wrong bucket name | Check bucket name |
|
|
310
|
+
| `The specified object does not exist` | Wrong object path | Check path case-sensitive |
|
|
311
|
+
| `Permission denied` | No write access | Check RAM policy |
|
|
312
|
+
| `Invalid argument` | Path format wrong | Use `oss://bucket/path` format |
|
|
313
|
+
| `Multipart upload failed` | Network issue | Use `--checkpoint-dir` for resume |
|
|
314
|
+
|
|
315
|
+
For detailed troubleshooting → `../best-practices/troubleshooting.md`
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Aliyun Stack Deployment
|
|
2
|
+
|
|
3
|
+
Production deployment pipeline for Aliyun. The default is the unified `deploy_stack` orchestrator; per-component deploys are only allowed into isolated dev sandboxes.
|
|
4
|
+
|
|
5
|
+
## Environments
|
|
6
|
+
|
|
7
|
+
| Environment | Purpose | Deploy Trigger | Orchestrator |
|
|
8
|
+
|-------------|---------|----------------|--------------|
|
|
9
|
+
| preview | Per-component + cross-stack e2e | Feature branch | `deploy_stack --preview` |
|
|
10
|
+
| staging | Pre-production stack validation | PR merge to main | `deploy_stack --env staging` |
|
|
11
|
+
| production | Live traffic | Release tag + human approval | `deploy_stack --env production` |
|
|
12
|
+
|
|
13
|
+
## Stack Deploy Steps
|
|
14
|
+
|
|
15
|
+
```yaml
|
|
16
|
+
staging:
|
|
17
|
+
orchestrator: deploy_stack
|
|
18
|
+
steps:
|
|
19
|
+
- fun deploy --env staging # backend
|
|
20
|
+
- rds migrate --env staging # backend (or tablestore)
|
|
21
|
+
- oss sync ./dist oss://bucket-staging/ # web
|
|
22
|
+
- cdn refresh --domain staging.example.com # web
|
|
23
|
+
- native build with BACKEND_URL injected # native
|
|
24
|
+
- desktop build with BACKEND_URL injected # desktop
|
|
25
|
+
- wxa build with BACKEND_URL injected # wxa
|
|
26
|
+
- mya build with BACKEND_URL injected # mya
|
|
27
|
+
- tta build with BACKEND_URL injected # tta
|
|
28
|
+
- smoke-test ${STACK_URL}
|
|
29
|
+
|
|
30
|
+
production:
|
|
31
|
+
orchestrator: deploy_stack
|
|
32
|
+
pre_conditions:
|
|
33
|
+
- human-approval-gate
|
|
34
|
+
steps:
|
|
35
|
+
- fun deploy --env production --publish
|
|
36
|
+
- rds migrate --env production
|
|
37
|
+
- oss sync ./dist oss://bucket-production/
|
|
38
|
+
- cdn refresh --domain example.com
|
|
39
|
+
- native build with BACKEND_URL injected
|
|
40
|
+
- desktop build with BACKEND_URL injected
|
|
41
|
+
- wxa build with BACKEND_URL injected
|
|
42
|
+
- mya build with BACKEND_URL injected
|
|
43
|
+
- tta build with BACKEND_URL injected
|
|
44
|
+
- smoke-test ${PRODUCTION_URL}
|
|
45
|
+
- health-check ${PRODUCTION_URL}/health
|
|
46
|
+
- bvt ${PRODUCTION_URL}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Per-Component Dev Sandbox (allowed)
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Personal dev sandbox — one user, one component
|
|
53
|
+
fun deploy --function hello --env dev-${USER}
|
|
54
|
+
oss cp -r ./dist oss://{dev-bucket}/ --update
|
|
55
|
+
# Per-component deploys to shared envs (preview/staging/production) are forbidden
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Stack Rollback
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Automatic on BVT failure
|
|
62
|
+
deploy_stack --rollback ${LAST_STABLE_STACK_VERSION} --provider aliyun
|
|
63
|
+
|
|
64
|
+
# Manual on demand
|
|
65
|
+
deploy_stack --rollback --stack-version v1.2.3 --provider aliyun
|
|
66
|
+
```
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
# Aliyun CI/CD Integration
|
|
2
|
+
|
|
3
|
+
## When to Use CI/CD vs Manual Deploy
|
|
4
|
+
|
|
5
|
+
| Scenario | Approach |
|
|
6
|
+
|----------|----------|
|
|
7
|
+
| Production deployment | CI/CD (automated, audited) |
|
|
8
|
+
| Preview on PR | CI/CD (automatic) |
|
|
9
|
+
| Development iteration | CLI (manual) |
|
|
10
|
+
| Personal sandbox | CLI (manual) |
|
|
11
|
+
|
|
12
|
+
## CI/CD Decision Tree
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
Need to automate deployment?
|
|
16
|
+
├── Deploy to preview on PR → GitHub Actions (auto)
|
|
17
|
+
├── Deploy to staging on merge → GitHub Actions (on merge)
|
|
18
|
+
├── Deploy to production on tag → GitHub Actions (on tag + approval)
|
|
19
|
+
└── Development iteration → CLI (manual)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## GitHub Actions Example
|
|
23
|
+
|
|
24
|
+
### Preview Deployment (on PR)
|
|
25
|
+
|
|
26
|
+
```yaml
|
|
27
|
+
# .github/workflows/preview.yml
|
|
28
|
+
name: Preview Deployment
|
|
29
|
+
|
|
30
|
+
on:
|
|
31
|
+
pull_request:
|
|
32
|
+
branches: [main]
|
|
33
|
+
|
|
34
|
+
jobs:
|
|
35
|
+
preview:
|
|
36
|
+
runs-on: ubuntu-latest
|
|
37
|
+
steps:
|
|
38
|
+
- uses: actions/checkout@v4
|
|
39
|
+
|
|
40
|
+
- name: Setup Node.js
|
|
41
|
+
uses: actions/setup-node@v4
|
|
42
|
+
with:
|
|
43
|
+
node-version: '18'
|
|
44
|
+
|
|
45
|
+
- name: Install dependencies
|
|
46
|
+
run: npm ci
|
|
47
|
+
|
|
48
|
+
- name: Setup Aliyun CLI
|
|
49
|
+
run: |
|
|
50
|
+
npm install -g @alicloud/fun
|
|
51
|
+
npm install -g @serverless-devs/s
|
|
52
|
+
|
|
53
|
+
- name: Configure credentials
|
|
54
|
+
run: |
|
|
55
|
+
fun config --access-key-id ${{ secrets.ALICLOUD_ACCESS_KEY }}
|
|
56
|
+
fun config --access-key-secret ${{ secrets.ALICLOUD_SECRET_KEY }}
|
|
57
|
+
fun config --region cn-shanghai
|
|
58
|
+
|
|
59
|
+
- name: Deploy Stack
|
|
60
|
+
run: deploy_stack --preview --provider aliyun
|
|
61
|
+
env:
|
|
62
|
+
ALICLOUD_ACCESS_KEY: ${{ secrets.ALICLOUD_ACCESS_KEY }}
|
|
63
|
+
ALICLOUD_SECRET_KEY: ${{ secrets.ALICLOUD_SECRET_KEY }}
|
|
64
|
+
|
|
65
|
+
- name: Run E2E Tests
|
|
66
|
+
run: |
|
|
67
|
+
export STACK_URL=$(deploy_stack --preview --provider aliyun --output url)
|
|
68
|
+
pytest apps/web/tests/e2e/ --base-url $STACK_URL --api-url $STACK_URL
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Staging Deployment (on merge to main)
|
|
72
|
+
|
|
73
|
+
```yaml
|
|
74
|
+
# .github/workflows/staging.yml
|
|
75
|
+
name: Staging Deployment
|
|
76
|
+
|
|
77
|
+
on:
|
|
78
|
+
push:
|
|
79
|
+
branches: [main]
|
|
80
|
+
|
|
81
|
+
jobs:
|
|
82
|
+
deploy-staging:
|
|
83
|
+
runs-on: ubuntu-latest
|
|
84
|
+
steps:
|
|
85
|
+
- uses: actions/checkout@v4
|
|
86
|
+
|
|
87
|
+
- name: Setup Node.js
|
|
88
|
+
uses: actions/setup-node@v4
|
|
89
|
+
with:
|
|
90
|
+
node-version: '18'
|
|
91
|
+
|
|
92
|
+
- name: Install dependencies
|
|
93
|
+
run: npm ci
|
|
94
|
+
|
|
95
|
+
- name: Install tools
|
|
96
|
+
run: |
|
|
97
|
+
pip install fun
|
|
98
|
+
pip install ossutil
|
|
99
|
+
|
|
100
|
+
- name: Deploy to Staging
|
|
101
|
+
run: deploy_stack --env staging --provider aliyun
|
|
102
|
+
env:
|
|
103
|
+
ALICLOUD_ACCESS_KEY: ${{ secrets.ALICLOUD_ACCESS_KEY }}
|
|
104
|
+
ALICLOUD_SECRET_KEY: ${{ secrets.ALICLOUD_SECRET_KEY }}
|
|
105
|
+
ALICLOUD_REGION: cn-shanghai
|
|
106
|
+
|
|
107
|
+
- name: Run Staging E2E
|
|
108
|
+
run: |
|
|
109
|
+
export STACK_URL=$(deploy_stack --env staging --output url)
|
|
110
|
+
pytest aidlc/tests/cross-stack/ --stack-url $STACK_URL
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Production Deployment (on release tag)
|
|
114
|
+
|
|
115
|
+
```yaml
|
|
116
|
+
# .github/workflows/production.yml
|
|
117
|
+
name: Production Deployment
|
|
118
|
+
|
|
119
|
+
on:
|
|
120
|
+
release:
|
|
121
|
+
types: [published]
|
|
122
|
+
|
|
123
|
+
jobs:
|
|
124
|
+
deploy-production:
|
|
125
|
+
runs-on: ubuntu-latest
|
|
126
|
+
environment: production
|
|
127
|
+
steps:
|
|
128
|
+
- uses: actions/checkout@v4
|
|
129
|
+
|
|
130
|
+
- name: Setup Node.js
|
|
131
|
+
uses: actions/setup-node@v4
|
|
132
|
+
with:
|
|
133
|
+
node-version: '18'
|
|
134
|
+
|
|
135
|
+
- name: Install dependencies
|
|
136
|
+
run: npm ci
|
|
137
|
+
|
|
138
|
+
- name: Deploy to Production
|
|
139
|
+
run: deploy_stack --env production --provider aliyun
|
|
140
|
+
env:
|
|
141
|
+
ALICLOUD_ACCESS_KEY: ${{ secrets.ALICLOUD_ACCESS_KEY }}
|
|
142
|
+
ALICLOUD_SECRET_KEY: ${{ secrets.ALICLOUD_SECRET_KEY }}
|
|
143
|
+
ALICLOUD_REGION: cn-shanghai
|
|
144
|
+
|
|
145
|
+
- name: Run BVT
|
|
146
|
+
run: |
|
|
147
|
+
export PRODUCTION_URL=$(deploy_stack --env production --output url)
|
|
148
|
+
pytest aidlc/tests/bvt/ --stack-url $PRODUCTION_URL
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Secrets Configuration
|
|
152
|
+
|
|
153
|
+
In GitHub repository Settings → Secrets:
|
|
154
|
+
|
|
155
|
+
| Secret | Description |
|
|
156
|
+
|--------|-------------|
|
|
157
|
+
| `ALICLOUD_ACCESS_KEY` | Aliyun AccessKey ID |
|
|
158
|
+
| `ALICLOUD_SECRET_KEY` | Aliyun AccessKey Secret |
|
|
159
|
+
| `ALICLOUD_REGION` | Default region |
|
|
160
|
+
| `OSS_BUCKET` | OSS bucket name |
|
|
161
|
+
| `FC_SERVICE` | Function Compute service name |
|
|
162
|
+
|
|
163
|
+
## Database Migration in CI/CD
|
|
164
|
+
|
|
165
|
+
### Migration Workflow
|
|
166
|
+
|
|
167
|
+
```yaml
|
|
168
|
+
- name: Run RDS Migration
|
|
169
|
+
run: |
|
|
170
|
+
mysql -h ${{ secrets.RDS_HOST }} \
|
|
171
|
+
-P ${{ secrets.RDS_PORT }} \
|
|
172
|
+
-u ${{ secrets.RDS_USER }} \
|
|
173
|
+
-p'${{ secrets.RDS_PASSWORD }}' \
|
|
174
|
+
${{ secrets.RDS_DATABASE }} < migrations/001.sql
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Migration File Structure
|
|
178
|
+
|
|
179
|
+
```
|
|
180
|
+
migrations/
|
|
181
|
+
├── 001_create_users.sql
|
|
182
|
+
├── 002_add_indexes.sql
|
|
183
|
+
└── 003_create_orders.sql
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## Rollback Strategy
|
|
187
|
+
|
|
188
|
+
### Automatic Rollback on Failure
|
|
189
|
+
|
|
190
|
+
```yaml
|
|
191
|
+
- name: Deploy Stack
|
|
192
|
+
id: deploy
|
|
193
|
+
run: |
|
|
194
|
+
if ! deploy_stack --env production --provider aliyun; then
|
|
195
|
+
echo "Deployment failed, rolling back..."
|
|
196
|
+
deploy_stack --rollback ${{ env.LAST_STABLE_VERSION }} --provider aliyun
|
|
197
|
+
exit 1
|
|
198
|
+
fi
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Manual Rollback
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
# List recent versions
|
|
205
|
+
fun list functions --service my-service
|
|
206
|
+
|
|
207
|
+
# Rollback specific function
|
|
208
|
+
fun deploy --function hello --service my-service --code-url s3://backup/hello-v1.zip
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
## Build Environment Injection
|
|
212
|
+
|
|
213
|
+
### Inject Backend URL during Build
|
|
214
|
+
|
|
215
|
+
```yaml
|
|
216
|
+
- name: Build Web App
|
|
217
|
+
run: |
|
|
218
|
+
cd apps/web
|
|
219
|
+
BACKEND_URL=${{ env.STACK_URL }} npm run build
|
|
220
|
+
env:
|
|
221
|
+
BACKEND_URL: ${{ env.STACK_URL }}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## Cache Strategy
|
|
225
|
+
|
|
226
|
+
### Cache Node Modules
|
|
227
|
+
|
|
228
|
+
```yaml
|
|
229
|
+
- name: Cache node_modules
|
|
230
|
+
uses: actions/cache@v4
|
|
231
|
+
with:
|
|
232
|
+
path: node_modules
|
|
233
|
+
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Cache Build Artifacts
|
|
237
|
+
|
|
238
|
+
```yaml
|
|
239
|
+
- name: Cache dist
|
|
240
|
+
uses: actions/cache@v4
|
|
241
|
+
with:
|
|
242
|
+
path: |
|
|
243
|
+
apps/web/dist
|
|
244
|
+
apps/backend/functions
|
|
245
|
+
key: ${{ runner.os }}-build-${{ github.sha }}
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## Using serverless devs (s.yaml)
|
|
249
|
+
|
|
250
|
+
```yaml
|
|
251
|
+
edition: 1.0.0
|
|
252
|
+
services:
|
|
253
|
+
my-app:
|
|
254
|
+
component: fc
|
|
255
|
+
props:
|
|
256
|
+
region: ${{ ALICLOUD_REGION }}
|
|
257
|
+
access: default
|
|
258
|
+
service:
|
|
259
|
+
name: ${{ FC_SERVICE }}
|
|
260
|
+
function:
|
|
261
|
+
name: hello
|
|
262
|
+
runtime: nodejs16
|
|
263
|
+
handler: index.handler
|
|
264
|
+
hooks:
|
|
265
|
+
post-deploy:
|
|
266
|
+
- run: ossutil cp -r ./dist oss://${{ OSS_BUCKET }}/ --force
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
## Best Practices
|
|
270
|
+
|
|
271
|
+
1. **Separate environments** - preview, staging, production
|
|
272
|
+
2. **Use secrets** - Never hardcode credentials
|
|
273
|
+
3. **Idempotent deploys** - Can be run multiple times safely
|
|
274
|
+
4. **Atomic deployments** - All or nothing
|
|
275
|
+
5. **Rollback plan** - Always have a way to revert
|
|
276
|
+
6. **Test after deploy** - Run smoke tests or BVT
|
|
277
|
+
7. **Notify on failure** - Slack/email on deployment failure
|
|
278
|
+
|
|
279
|
+
## Troubleshooting
|
|
280
|
+
|
|
281
|
+
| Issue | Cause | Solution |
|
|
282
|
+
|-------|-------|----------|
|
|
283
|
+
| `InvalidAccessKeyId` | Secrets not set | Add Aliyun secrets to GitHub |
|
|
284
|
+
| `Deploy timeout` | Build takes too long | Optimize build, increase timeout |
|
|
285
|
+
| `E2E tests fail` | Deployment issue | Check function logs |
|
|
286
|
+
| `RDS connection fails` | Network/VPC issue | Check RDS endpoint and security group |
|
|
287
|
+
|
|
288
|
+
For general troubleshooting → `../best-practices/troubleshooting.md`
|