@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,84 @@
|
|
|
1
|
+
# Aliyun Stack Preview
|
|
2
|
+
|
|
3
|
+
Preview deployment for the unified stack (backend + all clients: web, native, desktop, wxa, mya, tta). URL resolution is dynamic per platform; `BACKEND_URL` is injected into client builds at build time.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`deploy_stack --preview --provider aliyun` deploys the full stack to an isolated preview environment and exports the stack URL. Used for per-component e2e AND cross-stack e2e verification before staging or production.
|
|
8
|
+
|
|
9
|
+
## Preview Flow
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
git push feature branch
|
|
13
|
+
→ deploy_stack --preview --provider aliyun
|
|
14
|
+
→ STACK_URL = BACKEND_URL = https://{gateway}.{region}.fc.devs.com
|
|
15
|
+
→ WEB_URL = https://{bucket}.{region}.oss-website.aliyuncs.com
|
|
16
|
+
→ NATIVE_DIST_URL = internal distribution URL
|
|
17
|
+
→ DESKTOP_DIST_URL = internal distribution URL
|
|
18
|
+
→ WXA_URL / MYA_URL / TTA_URL = mini-program preview QR
|
|
19
|
+
→ Per-component e2e: pytest apps/{comp}/tests/e2e/ --base-url $URL
|
|
20
|
+
→ Cross-stack e2e: pytest aidlc/tests/cross-stack/ --stack-url $STACK_URL
|
|
21
|
+
→ TTL: 24h → auto cleanup
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Configuration
|
|
25
|
+
|
|
26
|
+
```yaml
|
|
27
|
+
preview:
|
|
28
|
+
orchestrator: deploy_stack
|
|
29
|
+
strategy: unified
|
|
30
|
+
ttl: 24h
|
|
31
|
+
auto_cleanup: true
|
|
32
|
+
db_sandbox: true # isolated DB per preview
|
|
33
|
+
url_pattern_backend: "https://{gateway}.{region}.fc.devs.com"
|
|
34
|
+
url_pattern_web: "https://{bucket}.{region}.oss-website.aliyuncs.com"
|
|
35
|
+
build_env:
|
|
36
|
+
web:
|
|
37
|
+
- BACKEND_URL
|
|
38
|
+
- STACK_URL
|
|
39
|
+
native:
|
|
40
|
+
- BACKEND_URL
|
|
41
|
+
desktop:
|
|
42
|
+
- BACKEND_URL
|
|
43
|
+
wxa:
|
|
44
|
+
- BACKEND_URL
|
|
45
|
+
mya:
|
|
46
|
+
- BACKEND_URL
|
|
47
|
+
tta:
|
|
48
|
+
- BACKEND_URL
|
|
49
|
+
env:
|
|
50
|
+
- STACK_URL # = BACKEND_URL (gateway)
|
|
51
|
+
- BACKEND_URL
|
|
52
|
+
- WEB_URL
|
|
53
|
+
- NATIVE_DIST_URL
|
|
54
|
+
- DESKTOP_DIST_URL
|
|
55
|
+
- WXA_URL
|
|
56
|
+
- MYA_URL
|
|
57
|
+
- TTA_URL
|
|
58
|
+
- DATABASE_URL (sandbox)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## BDD E2E Integration
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Deploy unified stack preview
|
|
65
|
+
export STACK_URL=$(deploy_stack --preview --provider aliyun --output url)
|
|
66
|
+
export BACKEND_URL=$STACK_URL
|
|
67
|
+
export WEB_URL=$(deploy_stack --preview --provider aliyun --output web_url)
|
|
68
|
+
export NATIVE_DIST_URL=$(deploy_stack --preview --provider aliyun --output native_url)
|
|
69
|
+
export DESKTOP_DIST_URL=$(deploy_stack --preview --provider aliyun --output desktop_url)
|
|
70
|
+
|
|
71
|
+
# Per-component e2e
|
|
72
|
+
pytest apps/backend/tests/e2e/ --base-url $BACKEND_URL
|
|
73
|
+
pytest apps/web/tests/e2e/ --base-url $WEB_URL --api-url $BACKEND_URL
|
|
74
|
+
pytest apps/native/tests/e2e/ --backend-url $BACKEND_URL
|
|
75
|
+
pytest apps/desktop/tests/e2e/ --backend-url $BACKEND_URL
|
|
76
|
+
pytest apps/wxa/tests/e2e/ --backend-url $BACKEND_URL
|
|
77
|
+
pytest apps/mya/tests/e2e/ --backend-url $BACKEND_URL
|
|
78
|
+
pytest apps/tta/tests/e2e/ --backend-url $BACKEND_URL
|
|
79
|
+
|
|
80
|
+
# Cross-stack e2e
|
|
81
|
+
pytest aidlc/tests/cross-stack/ --stack-url $STACK_URL
|
|
82
|
+
|
|
83
|
+
# Cleanup (automatic after TTL)
|
|
84
|
+
```
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# Aliyun Provider (Stack-aware)
|
|
2
|
+
|
|
3
|
+
Aliyun (Alibaba Cloud) provider — secondary platform. Supports the unified stack deploy (backend + all clients: web, native, desktop, wxa, mya, tta) and per-component deploys (for isolated dev sandboxes only).
|
|
4
|
+
|
|
5
|
+
## Metadata
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
provider:
|
|
9
|
+
name: aliyun
|
|
10
|
+
display_name: Alibaba Cloud
|
|
11
|
+
default: false
|
|
12
|
+
version: 3.0.0
|
|
13
|
+
website: https://www.aliyun.com/
|
|
14
|
+
|
|
15
|
+
stack:
|
|
16
|
+
components:
|
|
17
|
+
- id: backend
|
|
18
|
+
deploy_order: 1
|
|
19
|
+
exposes: BACKEND_URL
|
|
20
|
+
- id: web
|
|
21
|
+
deploy_order: 2
|
|
22
|
+
consumes: BACKEND_URL
|
|
23
|
+
- id: native
|
|
24
|
+
deploy_order: 2
|
|
25
|
+
consumes: BACKEND_URL
|
|
26
|
+
- id: desktop
|
|
27
|
+
deploy_order: 2
|
|
28
|
+
consumes: BACKEND_URL
|
|
29
|
+
- id: wxa
|
|
30
|
+
deploy_order: 2
|
|
31
|
+
consumes: BACKEND_URL
|
|
32
|
+
- id: mya
|
|
33
|
+
deploy_order: 2
|
|
34
|
+
consumes: BACKEND_URL
|
|
35
|
+
- id: tta
|
|
36
|
+
deploy_order: 2
|
|
37
|
+
consumes: BACKEND_URL
|
|
38
|
+
|
|
39
|
+
regions:
|
|
40
|
+
- id: cn-shanghai
|
|
41
|
+
name: Shanghai
|
|
42
|
+
- id: cn-beijing
|
|
43
|
+
name: Beijing
|
|
44
|
+
- id: cn-hangzhou
|
|
45
|
+
name: Hangzhou
|
|
46
|
+
- id: ap-southeast-1
|
|
47
|
+
name: Singapore
|
|
48
|
+
|
|
49
|
+
services:
|
|
50
|
+
- functions: function-compute
|
|
51
|
+
- database: rds + tablestore
|
|
52
|
+
- storage: oss
|
|
53
|
+
- hosting: static-website + cdn
|
|
54
|
+
|
|
55
|
+
limits:
|
|
56
|
+
function_timeout: 600s
|
|
57
|
+
function_memory: 3072MB
|
|
58
|
+
|
|
59
|
+
compute_modes:
|
|
60
|
+
- id: fc
|
|
61
|
+
type: faas
|
|
62
|
+
default: true
|
|
63
|
+
description: "Function Compute — event-driven functions"
|
|
64
|
+
limits:
|
|
65
|
+
timeout: 600s
|
|
66
|
+
memory: 3072MB
|
|
67
|
+
- id: sae
|
|
68
|
+
type: caas
|
|
69
|
+
description: "Serverless App Engine 2.0 — container/web app hosting"
|
|
70
|
+
limits:
|
|
71
|
+
timeout: 86400s
|
|
72
|
+
memory: 32768MB
|
|
73
|
+
|
|
74
|
+
capabilities:
|
|
75
|
+
- function_compute
|
|
76
|
+
- serverless_app_engine
|
|
77
|
+
- oss_storage
|
|
78
|
+
- rds_database
|
|
79
|
+
- tablestore
|
|
80
|
+
- static_hosting
|
|
81
|
+
- cdn_acceleration
|
|
82
|
+
- preview_deploy
|
|
83
|
+
- ssl_cert
|
|
84
|
+
- stack_deploy
|
|
85
|
+
- build_env_injection
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Stack Deploy (recommended for shared environments)
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# Unified stack preview
|
|
92
|
+
deploy_stack --preview --provider aliyun
|
|
93
|
+
# → backend: fun deploy --env preview
|
|
94
|
+
# → web: oss + cdn deploy with build env BACKEND_URL=${STACK_URL}
|
|
95
|
+
# → native: build with BACKEND_URL injected; package
|
|
96
|
+
# → desktop: build with BACKEND_URL injected; package
|
|
97
|
+
# → wxa: build with BACKEND_URL injected; upload to mini-program platform
|
|
98
|
+
# → mya: build with BACKEND_URL injected; upload to mini-program platform
|
|
99
|
+
# → tta: build with BACKEND_URL injected; upload to mini-program platform
|
|
100
|
+
# → STACK_URL = https://{gateway}.{region}.fc.devs.com
|
|
101
|
+
|
|
102
|
+
deploy_stack --env staging --provider aliyun
|
|
103
|
+
deploy_stack --env production --provider aliyun
|
|
104
|
+
deploy_stack --rollback ${LAST_STABLE_STACK_VERSION} --provider aliyun
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Per-Component Deploy (dev sandboxes only)
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# Functions
|
|
111
|
+
fun deploy --function hello
|
|
112
|
+
|
|
113
|
+
# Storage (OSS)
|
|
114
|
+
oss cp ./file.txt oss://bucket/path/
|
|
115
|
+
oss ls oss://bucket/
|
|
116
|
+
|
|
117
|
+
# Database (RDS / TableStore)
|
|
118
|
+
# RDS: standard MySQL/PostgreSQL CLI
|
|
119
|
+
# TableStore: ots search
|
|
120
|
+
|
|
121
|
+
# Hosting (web only, dev sandbox)
|
|
122
|
+
oss cp -r ./dist oss://{dev-bucket}/ && cdn refresh
|
|
123
|
+
|
|
124
|
+
# Environment
|
|
125
|
+
fun config --account-id <id>
|
|
126
|
+
fun config --region cn-shanghai
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
> Per-component deploys to shared environments are forbidden (STK-004). Use `deploy_stack`.
|
|
130
|
+
|
|
131
|
+
## URL Resolution
|
|
132
|
+
|
|
133
|
+
| Component | Pattern |
|
|
134
|
+
|-----------|---------|
|
|
135
|
+
| `STACK_URL` / `BACKEND_URL` | `https://{gateway}.{region}.fc.devs.com` |
|
|
136
|
+
| `WEB_URL` | `https://{bucket}.{region}.oss-website.aliyuncs.com` |
|
|
137
|
+
| `NATIVE_DIST_URL` | internal distribution URL |
|
|
138
|
+
| `DESKTOP_DIST_URL` | internal distribution URL |
|
|
139
|
+
| `WXA_URL` | mini-program preview QR |
|
|
140
|
+
| `MYA_URL` | mini-program preview QR |
|
|
141
|
+
| `TTA_URL` | mini-program preview QR |
|
|
142
|
+
|
|
143
|
+
## Build Config Injection
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
BACKEND_URL=$STACK_URL pnpm --filter web build
|
|
147
|
+
oss cp -r ./dist oss://{bucket}/ --update
|
|
148
|
+
cdn refresh
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Environment Variables
|
|
152
|
+
|
|
153
|
+
| Variable | Description |
|
|
154
|
+
|----------|-------------|
|
|
155
|
+
| ALICLOUD_ACCESS_KEY | Aliyun access key ID |
|
|
156
|
+
| ALICLOUD_SECRET_KEY | Aliyun access key secret |
|
|
157
|
+
| ALICLOUD_REGION | Default region |
|
|
158
|
+
| FUNCTION_COMPUTE_SERVICE | FC service name |
|
|
159
|
+
| BACKEND_URL | Stack URL injected at build time |
|
|
160
|
+
| STACK_URL | Alias of BACKEND_URL (gateway) |
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
# Aliyun Authentication & Credentials
|
|
2
|
+
|
|
3
|
+
## Credential Types
|
|
4
|
+
|
|
5
|
+
| Type | Security | Use Case |
|
|
6
|
+
|------|----------|----------|
|
|
7
|
+
| Access Key (AK/SK) | ⚠️ Medium | CLI, SDK, CI/CD |
|
|
8
|
+
| RAM Role (STS) | ✅ Recommended | Temporary access, functions |
|
|
9
|
+
| Assume Role | ✅✅ Best | CI/CD with least privilege |
|
|
10
|
+
|
|
11
|
+
## Agent Decision Guide
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
Need to authenticate with Aliyun?
|
|
15
|
+
├── From CI/CD pipeline → Environment variables (ALICLOUD_ACCESS_KEY/KEY)
|
|
16
|
+
├── From local CLI → aliyun configure (interactive)
|
|
17
|
+
├── From function code → Service credentials (automatic injection)
|
|
18
|
+
├── From browser/client → STS token (temporary)
|
|
19
|
+
└── Never commit credentials to git
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Environment Variables
|
|
23
|
+
|
|
24
|
+
### For CLI and Server-Side
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Access Key
|
|
28
|
+
export ALICLOUD_ACCESS_KEY=your-access-key-id
|
|
29
|
+
export ALICLOUD_SECRET_KEY=your-access-key-secret
|
|
30
|
+
|
|
31
|
+
# Region
|
|
32
|
+
export ALICLOUD_REGION=cn-shanghai
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### For Function Compute
|
|
36
|
+
|
|
37
|
+
Functions automatically receive credentials via:
|
|
38
|
+
- `ALIBABA_CLOUD_ACCESS_KEY_ID` (injected)
|
|
39
|
+
- `ALIBABA_CLOUD_ACCESS_KEY_SECRET` (injected)
|
|
40
|
+
- `ALIBABA_CLOUD_SECURITY_TOKEN` (for STS)
|
|
41
|
+
|
|
42
|
+
## Creating Access Keys
|
|
43
|
+
|
|
44
|
+
### 1. Create via RAM Console
|
|
45
|
+
|
|
46
|
+
1. Go to [RAM Console](https://ram.console.aliyun.com/)
|
|
47
|
+
2. Navigate to: Users → Create User
|
|
48
|
+
3. Create AccessKey (or enable console password)
|
|
49
|
+
4. Download CSV with AK/SK
|
|
50
|
+
|
|
51
|
+
### 2. Create RAM Policy
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"Version": "1",
|
|
56
|
+
"Statement": [
|
|
57
|
+
{
|
|
58
|
+
"Effect": "Allow",
|
|
59
|
+
"Action": [
|
|
60
|
+
"fc:InvokeFunction",
|
|
61
|
+
"fc:CreateFunction",
|
|
62
|
+
"oss:GetObject",
|
|
63
|
+
"oss:PutObject"
|
|
64
|
+
],
|
|
65
|
+
"Resource": "*"
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Temporary Credentials (STS)
|
|
72
|
+
|
|
73
|
+
For short-lived access, use STS tokens:
|
|
74
|
+
|
|
75
|
+
### Get STS Token
|
|
76
|
+
|
|
77
|
+
```javascript
|
|
78
|
+
const OSS = require('ali-oss');
|
|
79
|
+
const STS = require('aliyun-sdk').STS;
|
|
80
|
+
|
|
81
|
+
const sts = new STS({
|
|
82
|
+
accessKeyId: process.env.ALICLOUD_ACCESS_KEY,
|
|
83
|
+
accessKeySecret: process.env.ALICLOUD_SECRET_KEY
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
const result = await sts.assumeRole({
|
|
87
|
+
RoleArn: 'acs:ram::123456789:role/DeveloperRole',
|
|
88
|
+
RoleSessionName: 'dev-session'
|
|
89
|
+
});
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### STS Token Response
|
|
93
|
+
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"Credentials": {
|
|
97
|
+
"AccessKeyId": "STS.xxx",
|
|
98
|
+
"AccessKeySecret": "xxx",
|
|
99
|
+
"SecurityToken": "xxx",
|
|
100
|
+
"Expiration": "2024-01-01T12:00:00Z"
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Use STS Token
|
|
106
|
+
|
|
107
|
+
```javascript
|
|
108
|
+
const client = new OSS({
|
|
109
|
+
region: process.env.ALICLOUD_REGION,
|
|
110
|
+
accessKeyId: credentials.AccessKeyId,
|
|
111
|
+
accessKeySecret: credentials.AccessKeySecret,
|
|
112
|
+
stsToken: credentials.SecurityToken,
|
|
113
|
+
bucket: 'my-bucket'
|
|
114
|
+
});
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## RAM Role for Functions
|
|
118
|
+
|
|
119
|
+
### Create RAM Role
|
|
120
|
+
|
|
121
|
+
1. Go to RAM Console → Roles → Create Role
|
|
122
|
+
2. Select "Aliyun Service" trusted entity
|
|
123
|
+
3. Attach policies (e.g., AliyunOSSFullAccess)
|
|
124
|
+
|
|
125
|
+
### Function Use Role
|
|
126
|
+
|
|
127
|
+
```yaml
|
|
128
|
+
service:
|
|
129
|
+
name: my-service
|
|
130
|
+
role: acs:ram::123456789:role/FCServiceRole
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Function will automatically receive temporary credentials.
|
|
134
|
+
|
|
135
|
+
## Credential Security Best Practices
|
|
136
|
+
|
|
137
|
+
### Do's ✅
|
|
138
|
+
|
|
139
|
+
1. **Use environment variables** - Don't hardcode credentials
|
|
140
|
+
2. **Use RAM roles** - Over direct AccessKeys
|
|
141
|
+
3. **Use STS for temporary access** - Credentials expire
|
|
142
|
+
4. **Rotate regularly** - Change AccessKeys periodically
|
|
143
|
+
5. **Use least privilege** - Grant minimum required permissions
|
|
144
|
+
6. **Store in secrets manager** - GitHub Secrets, KMS, etc.
|
|
145
|
+
|
|
146
|
+
### Don'ts ❌
|
|
147
|
+
|
|
148
|
+
1. **Commit credentials** - Never commit to git
|
|
149
|
+
2. **Use root account** - Create dedicated RAM users
|
|
150
|
+
3. **Share credentials** - Each user/service should have own key
|
|
151
|
+
4. **Use same credentials everywhere** - Separate per environment
|
|
152
|
+
|
|
153
|
+
## .gitignore for Credentials
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
# Aliyun credentials
|
|
157
|
+
.env
|
|
158
|
+
.env.*
|
|
159
|
+
aliyun-cli-config.json
|
|
160
|
+
ossutil-config.ini
|
|
161
|
+
|
|
162
|
+
# Function compute
|
|
163
|
+
.template.yml.bak
|
|
164
|
+
|
|
165
|
+
# Build outputs
|
|
166
|
+
dist/
|
|
167
|
+
build/
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Function Authentication
|
|
171
|
+
|
|
172
|
+
### How Functions Receive Credentials
|
|
173
|
+
|
|
174
|
+
FC functions automatically have credentials injected:
|
|
175
|
+
|
|
176
|
+
```javascript
|
|
177
|
+
module.exports.handler = async (event, context) => {
|
|
178
|
+
// Available automatically in FC functions
|
|
179
|
+
const accessKeyId = process.env.ALIBABA_CLOUD_ACCESS_KEY_ID;
|
|
180
|
+
const accessKeySecret = process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET;
|
|
181
|
+
const securityToken = process.env.ALIBABA_CLOUD_SECURITY_TOKEN;
|
|
182
|
+
|
|
183
|
+
console.log(`Running with credentials for account`);
|
|
184
|
+
};
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Calling Aliyun Services from Functions
|
|
188
|
+
|
|
189
|
+
```javascript
|
|
190
|
+
const OSS = require('ali-oss');
|
|
191
|
+
|
|
192
|
+
module.exports.handler = async (event, context) => {
|
|
193
|
+
// Use injected credentials
|
|
194
|
+
const client = new OSS({
|
|
195
|
+
region: process.env.ALICLOUD_REGION,
|
|
196
|
+
accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
|
|
197
|
+
accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
|
|
198
|
+
stsToken: process.env.ALIBABA_CLOUD_SECURITY_TOKEN,
|
|
199
|
+
bucket: 'my-bucket'
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
const result = await client.list();
|
|
203
|
+
return { buckets: result.buckets };
|
|
204
|
+
};
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Permission Model (RAM)
|
|
208
|
+
|
|
209
|
+
### Common Policies
|
|
210
|
+
|
|
211
|
+
| Policy | Description |
|
|
212
|
+
|--------|-------------|
|
|
213
|
+
| `AliyunFCFullAccess` | Full Function Compute access |
|
|
214
|
+
| `AliyunOSSFullAccess` | Full OSS access |
|
|
215
|
+
| `AliyunRDSFullAccess` | Full RDS access |
|
|
216
|
+
| `AliyunOTSFullAccess` | Full TableStore access |
|
|
217
|
+
| `AliyunCDNFullAccess` | Full CDN access |
|
|
218
|
+
|
|
219
|
+
### Custom Policy Example
|
|
220
|
+
|
|
221
|
+
```json
|
|
222
|
+
{
|
|
223
|
+
"Version": "1",
|
|
224
|
+
"Statement": [
|
|
225
|
+
{
|
|
226
|
+
"Effect": "Allow",
|
|
227
|
+
"Action": [
|
|
228
|
+
"oss:GetObject",
|
|
229
|
+
"oss:PutObject",
|
|
230
|
+
"oss:DeleteObject"
|
|
231
|
+
],
|
|
232
|
+
"Resource": "acs:oss:*:*:my-bucket/*"
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"Effect": "Allow",
|
|
236
|
+
"Action": [
|
|
237
|
+
"fc:InvokeFunction"
|
|
238
|
+
],
|
|
239
|
+
"Resource": "acs:fc:*:*:services/my-service/functions/*"
|
|
240
|
+
}
|
|
241
|
+
]
|
|
242
|
+
}
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## Troubleshooting
|
|
246
|
+
|
|
247
|
+
| Issue | Cause | Solution |
|
|
248
|
+
|-------|-------|----------|
|
|
249
|
+
| `InvalidAccessKeyId` | Wrong or expired key | Verify AccessKey in RAM console |
|
|
250
|
+
| `SignatureDoesNotMatch` | Key mismatch | Check AccessKey Secret |
|
|
251
|
+
| `Permission denied` | Insufficient permissions | Attach more RAM policies |
|
|
252
|
+
| `Token expired` | STS token too old | Refresh temporary credentials |
|
|
253
|
+
|
|
254
|
+
For general troubleshooting → `../best-practices/troubleshooting.md`
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
# CDN + Static Website Hosting
|
|
2
|
+
|
|
3
|
+
## When to Use CDN Hosting
|
|
4
|
+
|
|
5
|
+
**Use CDN + OSS when:**
|
|
6
|
+
- Deploy static websites (SPA, static sites)
|
|
7
|
+
- Host web assets with global acceleration
|
|
8
|
+
- Serve content with low latency worldwide
|
|
9
|
+
- Need automatic HTTPS and custom domains
|
|
10
|
+
|
|
11
|
+
**Do NOT use CDN+OSS when:**
|
|
12
|
+
- Need server-side business logic → Use Function Compute
|
|
13
|
+
- Need real-time features → Use Function Compute + WebSocket
|
|
14
|
+
- Complex dynamic content → Use SAE or ECS
|
|
15
|
+
|
|
16
|
+
## Agent Decision Guide
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
Need to serve web content?
|
|
20
|
+
├── Static site (HTML/CSS/JS) → OSS + CDN
|
|
21
|
+
├── SPA with API backend → OSS + CDN + Function Compute
|
|
22
|
+
└── Full web app with SSR → SAE
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Hosting Features
|
|
26
|
+
|
|
27
|
+
| Feature | Description |
|
|
28
|
+
|---------|-------------|
|
|
29
|
+
| Global CDN | 200+ edge nodes worldwide |
|
|
30
|
+
| Automatic HTTPS | Free SSL certificates via Alibaba Cloud CDN |
|
|
31
|
+
| Custom Domain | Bring your own domain |
|
|
32
|
+
| SPA Routing | Rewrites all 404s to index.html |
|
|
33
|
+
| Cache Control | Per-file cache headers |
|
|
34
|
+
| CI/CD Integration | Auto-deploy on git push |
|
|
35
|
+
|
|
36
|
+
## Deployment
|
|
37
|
+
|
|
38
|
+
### Basic Deployment
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Upload to OSS
|
|
42
|
+
ossutil cp -r ./dist oss://my-bucket/ --update
|
|
43
|
+
|
|
44
|
+
# Refresh CDN
|
|
45
|
+
aliyun cdn RefreshObjectCaches --ObjectType File \
|
|
46
|
+
--ObjectPath http://my-bucket.oss-cn-shanghai.aliyuncs.com/
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Using serverless devs
|
|
50
|
+
|
|
51
|
+
```yaml
|
|
52
|
+
edition: 1.0.0
|
|
53
|
+
services:
|
|
54
|
+
web:
|
|
55
|
+
component: website
|
|
56
|
+
props:
|
|
57
|
+
bucket: my-bucket
|
|
58
|
+
region: cn-shanghai
|
|
59
|
+
dist: ./dist
|
|
60
|
+
cacheControl: 31536000
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
s deploy
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## URL Structure
|
|
68
|
+
|
|
69
|
+
| Environment | URL Pattern |
|
|
70
|
+
|-------------|-------------|
|
|
71
|
+
| OSS Origin | `https://{bucket}.{region}.aliyuncs.com` |
|
|
72
|
+
| CDN Domain | `https://{cdn-domain}` |
|
|
73
|
+
| Custom Domain | `https://{custom-domain}` |
|
|
74
|
+
|
|
75
|
+
## SPA Configuration
|
|
76
|
+
|
|
77
|
+
### How SPA Routing Works
|
|
78
|
+
|
|
79
|
+
For Single Page Applications (Vue, React, Angular):
|
|
80
|
+
|
|
81
|
+
1. All requests to non-file paths are rewritten to `index.html`
|
|
82
|
+
2. Client-side router handles path rendering
|
|
83
|
+
3. Direct links and refresh work correctly
|
|
84
|
+
|
|
85
|
+
### CDN Cache Configuration
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# Set cache rules
|
|
89
|
+
aliyun cdn SetFileCacheConfig --CacheType 30 \
|
|
90
|
+
--CacheUrlPropertyList "*.js,*.css,*.png"
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Default Cache Behavior
|
|
94
|
+
|
|
95
|
+
| File Type | Cache Duration |
|
|
96
|
+
|-----------|----------------|
|
|
97
|
+
| HTML | No cache (or short) |
|
|
98
|
+
| JS/CSS | 1 year (immutable with hash) |
|
|
99
|
+
| Images | 1 week |
|
|
100
|
+
| Other | 1 day |
|
|
101
|
+
|
|
102
|
+
## Custom Domain
|
|
103
|
+
|
|
104
|
+
### Add CDN Domain
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
aliyun cdn AddCdnDomain \
|
|
108
|
+
--DomainName example.com \
|
|
109
|
+
--CdnType web \
|
|
110
|
+
--SourceType oss \
|
|
111
|
+
--SourceDomain my-bucket.oss-cn-shanghai.aliyuncs.com
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Configure DNS
|
|
115
|
+
|
|
116
|
+
Add CNAME record:
|
|
117
|
+
```
|
|
118
|
+
Type: CNAME
|
|
119
|
+
Host: example.com
|
|
120
|
+
Value: example.com.w.kunlungr.com
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### SSL Certificate
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# Add SSL certificate
|
|
127
|
+
aliyun cdn SetCdnDomainSSLCertificate \
|
|
128
|
+
--DomainName example.com \
|
|
129
|
+
--CertType upload \
|
|
130
|
+
--SSLProtocol true \
|
|
131
|
+
--CertFile /path/to/cert.pem \
|
|
132
|
+
--KeyFile /path/to/key.pem
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Build Environment Injection
|
|
136
|
+
|
|
137
|
+
Inject environment-specific values at build time:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# Set environment variable during build
|
|
141
|
+
BACKEND_URL=https://api.example.com pnpm --filter web build
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
This makes variables available during the build process (Vite, Webpack, etc.).
|
|
145
|
+
|
|
146
|
+
## Integration with Backend
|
|
147
|
+
|
|
148
|
+
### Pattern: Frontend + Function Compute API
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
152
|
+
│ Browser │
|
|
153
|
+
│ ┌──────────────────────────────────────────────────────┐ │
|
|
154
|
+
│ │ Frontend App (OSS + CDN) │ │
|
|
155
|
+
│ │ - Loads config from window.__ENV__ │ │
|
|
156
|
+
│ │ - Calls API via BACKEND_URL │ │
|
|
157
|
+
│ └──────────────────────────────────────────────────────┘ │
|
|
158
|
+
└─────────────────────────────────────────────────────────────┘
|
|
159
|
+
│
|
|
160
|
+
▼
|
|
161
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
162
|
+
│ Function Compute (API Gateway) │
|
|
163
|
+
│ - /api/users → getUsers() │
|
|
164
|
+
│ - /api/orders → createOrder() │
|
|
165
|
+
└─────────────────────────────────────────────────────────────┘
|
|
166
|
+
│
|
|
167
|
+
▼
|
|
168
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
169
|
+
│ RDS + TableStore │
|
|
170
|
+
└─────────────────────────────────────────────────────────────┘
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Build with Backend URL
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
# Deploy web with BACKEND_URL injected
|
|
177
|
+
cd apps/web && BACKEND_URL=$STACK_URL pnpm build
|
|
178
|
+
|
|
179
|
+
# Upload to OSS
|
|
180
|
+
ossutil cp -r ./dist oss://my-bucket/ --update
|
|
181
|
+
|
|
182
|
+
# Refresh CDN cache
|
|
183
|
+
aliyun cdn RefreshObjectCaches --ObjectType directory \
|
|
184
|
+
--ObjectPath http://my-bucket.oss-cn-shanghai.aliyuncs.com/
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## CLI Reference
|
|
188
|
+
|
|
189
|
+
| Command | Description |
|
|
190
|
+
|---------|-------------|
|
|
191
|
+
| `ossutil cp -r ./dist oss://bucket/` | Upload static files |
|
|
192
|
+
| `ossutil website oss://bucket --index index.html` | Set index page |
|
|
193
|
+
| `aliyun cdn RefreshObjectCaches` | Refresh CDN cache |
|
|
194
|
+
| `aliyun cdn DescribeCdnDomainDetail` | Get domain info |
|
|
195
|
+
| `aliyun cdn AddCdnDomain` | Add CDN domain |
|
|
196
|
+
| `aliyun cdn SetCdnDomainSSLCertificate` | Set SSL certificate |
|
|
197
|
+
|
|
198
|
+
## Best Practices
|
|
199
|
+
|
|
200
|
+
1. **Use build tools** - Don't deploy raw HTML, use Vite/Webpack
|
|
201
|
+
2. **Enable gzip/brotli** - Configure in build tool for smaller assets
|
|
202
|
+
3. **Use immutable hashes** - Filename hashes for cache busting
|
|
203
|
+
4. **Optimize images** - Compress images, use WebP format
|
|
204
|
+
5. **Set long cache for assets** - JS/CSS with content hash
|
|
205
|
+
6. **SPA routing** - Ensure all routes serve index.html
|
|
206
|
+
7. **CDN cache** - Use cache invalidation on deploy
|
|
207
|
+
8. **Separate buckets** - Dev/staging/prod different buckets
|
|
208
|
+
|
|
209
|
+
## Troubleshooting
|
|
210
|
+
|
|
211
|
+
| Issue | Cause | Solution |
|
|
212
|
+
|-------|-------|----------|
|
|
213
|
+
| 404 on refresh (SPA) | CDN caching old routing | Refresh CDN after deploy |
|
|
214
|
+
| Stale content | Cache not cleared | Refresh CDN or use versioned paths |
|
|
215
|
+
| Slow first load | Large bundle | Code split, lazy load routes |
|
|
216
|
+
| CORS errors | API not allowing origin | Configure CORS in Function Compute |
|
|
217
|
+
| CDN not working | DNS not propagated | Wait for CNAME to propagate |
|
|
218
|
+
| SSL not ready | Certificate provisioning | Wait 1-10 minutes |
|
|
219
|
+
|
|
220
|
+
For detailed troubleshooting → `../best-practices/troubleshooting.md`
|