@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,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: playwright-local-runner
|
|
3
|
+
description: Playwright local execution runner for Web E2E tests
|
|
4
|
+
triggers:
|
|
5
|
+
- playwright run
|
|
6
|
+
- run e2e
|
|
7
|
+
- execute playwright
|
|
8
|
+
- playwright test
|
|
9
|
+
allowed_tools:
|
|
10
|
+
- Bash
|
|
11
|
+
- Read
|
|
12
|
+
phases:
|
|
13
|
+
- verify
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Playwright Local Runner
|
|
17
|
+
|
|
18
|
+
## Prerequisites
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Install dependencies (usually done during scaffold)
|
|
22
|
+
cd apps/web
|
|
23
|
+
pnpm install
|
|
24
|
+
|
|
25
|
+
# Install browsers (one-time setup)
|
|
26
|
+
pnpm exec playwright install chromium
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Execution Command
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Standard execution
|
|
33
|
+
cd apps/web
|
|
34
|
+
npx playwright test --project=chromium
|
|
35
|
+
|
|
36
|
+
# With JSON report (for parsing)
|
|
37
|
+
npx playwright test --project=chromium --reporter=json
|
|
38
|
+
|
|
39
|
+
# Specify test file
|
|
40
|
+
npx playwright test apps/web/tests/e2e/login.spec.ts
|
|
41
|
+
|
|
42
|
+
# Headless mode (default)
|
|
43
|
+
npx playwright test --project=chromium
|
|
44
|
+
|
|
45
|
+
# UI mode (for debugging)
|
|
46
|
+
npx playwright test --project=chromium --ui
|
|
47
|
+
|
|
48
|
+
# With custom base URL
|
|
49
|
+
BASE_URL=http://localhost:3000 npx playwright test --project=chromium
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Report Location
|
|
53
|
+
|
|
54
|
+
| Type | Location |
|
|
55
|
+
|------|----------|
|
|
56
|
+
| HTML Report | `apps/web/playwright-report/` |
|
|
57
|
+
| JSON Report | stdout (with `--reporter=json`) |
|
|
58
|
+
| Trace | `apps/web/test-results/` |
|
|
59
|
+
|
|
60
|
+
## Environment Variables
|
|
61
|
+
|
|
62
|
+
| Variable | Default | Description |
|
|
63
|
+
|----------|---------|-------------|
|
|
64
|
+
| `BASE_URL` | `http://localhost:8080` | Override default base URL |
|
|
65
|
+
| `PLAYWRIGHT_BROWSERS_PATH` | `~/.cache/ms-playwright` | Browser installation path |
|
|
66
|
+
|
|
67
|
+
## Exit Codes
|
|
68
|
+
|
|
69
|
+
| Code | Meaning |
|
|
70
|
+
|------|---------|
|
|
71
|
+
| 0 | All tests passed |
|
|
72
|
+
| 1 | Some tests failed |
|
|
73
|
+
| 2 | Test was interrupted |
|
|
74
|
+
| 3 | Configuration error |
|
|
75
|
+
|
|
76
|
+
## Common Issues
|
|
77
|
+
|
|
78
|
+
| Issue | Solution |
|
|
79
|
+
|-------|----------|
|
|
80
|
+
| `Playwright not installed` | Run `pnpm exec playwright install chromium` |
|
|
81
|
+
| `Browser already in use` | Kill existing browser processes |
|
|
82
|
+
| `Connection refused` | Ensure target app is running on specified port |
|
|
83
|
+
| `Timeout` | Increase timeout in `playwright.config.ts` |
|
|
84
|
+
|
|
85
|
+
## Example Output
|
|
86
|
+
|
|
87
|
+
```json
|
|
88
|
+
{
|
|
89
|
+
"config": {
|
|
90
|
+
"reporters": ["json"]
|
|
91
|
+
},
|
|
92
|
+
"result": {
|
|
93
|
+
"status": "passed",
|
|
94
|
+
"stats": {
|
|
95
|
+
"tests": 5,
|
|
96
|
+
"passed": 5,
|
|
97
|
+
"failed": 0,
|
|
98
|
+
"skipped": 0,
|
|
99
|
+
"duration": 12345
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Behavior-Driven Development (BDD)
|
|
2
|
+
|
|
3
|
+
BDD is the behavior specification and verification methodology used in Understand and Verify phases.
|
|
4
|
+
|
|
5
|
+
## Role in AI-DLC
|
|
6
|
+
|
|
7
|
+
| Phase | BDD Usage |
|
|
8
|
+
|-------|-----------|
|
|
9
|
+
| Understand | Feature files with Given/When/Then scenarios |
|
|
10
|
+
| Verify | pytest-bdd scenario verification against implementation |
|
|
11
|
+
| Deliver | BDD e2e tests against preview URL |
|
|
12
|
+
|
|
13
|
+
## Gherkin Syntax
|
|
14
|
+
|
|
15
|
+
| Keyword | Purpose |
|
|
16
|
+
|---------|---------|
|
|
17
|
+
| `Feature` | High-level feature description |
|
|
18
|
+
| `Scenario` | Single behavior example |
|
|
19
|
+
| `Given` | Precondition / starting state |
|
|
20
|
+
| `When` | Action performed |
|
|
21
|
+
| `Then` | Expected outcome |
|
|
22
|
+
| `And` / `But` | Additional clause |
|
|
23
|
+
| `Background` | Steps before every scenario |
|
|
24
|
+
| `Scenario Outline` | Template with Examples table |
|
|
25
|
+
| `@tag` | Metadata (FR ID, type) |
|
|
26
|
+
|
|
27
|
+
## Scenario Coverage Rules
|
|
28
|
+
|
|
29
|
+
Each FR must have at least 4 scenarios:
|
|
30
|
+
|
|
31
|
+
| Type | Coverage Dimension | Purpose | Example Tag |
|
|
32
|
+
|------|-------------------|---------|-------------|
|
|
33
|
+
| Positive | 处理逻辑 | Happy path, should work | `@FR-001 @positive` |
|
|
34
|
+
| Negative | 异常处理 | Error handling, should fail | `@FR-001 @negative` |
|
|
35
|
+
| Edge case | 边界情况 | Boundary conditions | `@FR-001 @edge` |
|
|
36
|
+
| Logic | 逻辑一致性 | Idempotency, state consistency | `@FR-001 @logic` |
|
|
37
|
+
|
|
38
|
+
### @logic 场景说明
|
|
39
|
+
|
|
40
|
+
`@logic` 场景验证操作的逻辑一致性和理性:
|
|
41
|
+
|
|
42
|
+
- **幂等性**: 重复执行结果一致
|
|
43
|
+
- **状态一致性**: 操作后状态转换正确
|
|
44
|
+
- **因果合理性**: 操作结果与原因合理对应
|
|
45
|
+
- **数据完整性**: 操作不破坏数据完整性
|
|
46
|
+
|
|
47
|
+
## Example
|
|
48
|
+
|
|
49
|
+
```gherkin
|
|
50
|
+
@FR-001
|
|
51
|
+
Feature: User Login
|
|
52
|
+
|
|
53
|
+
@FR-001 @positive
|
|
54
|
+
Scenario: Successful login
|
|
55
|
+
Given the user is on the login page
|
|
56
|
+
When the user submits email "user@test.com" and password "correct123"
|
|
57
|
+
Then the user receives a JWT token
|
|
58
|
+
And the user is redirected to dashboard
|
|
59
|
+
|
|
60
|
+
@FR-001 @negative
|
|
61
|
+
Scenario: Login with wrong password
|
|
62
|
+
Given the user is on the login page
|
|
63
|
+
When the user submits email "user@test.com" and password "wrong"
|
|
64
|
+
Then the user sees error "Invalid credentials"
|
|
65
|
+
|
|
66
|
+
@FR-001 @edge
|
|
67
|
+
Scenario: Login with empty fields
|
|
68
|
+
Given the user is on the login page
|
|
69
|
+
When the user submits email "" and password ""
|
|
70
|
+
Then the user sees error "Email and password are required"
|
|
71
|
+
|
|
72
|
+
@FR-001 @logic
|
|
73
|
+
Scenario: Login is idempotent
|
|
74
|
+
Given the user has valid credentials
|
|
75
|
+
When the user submits the same credentials 3 times
|
|
76
|
+
Then each login returns the same JWT token
|
|
77
|
+
And no duplicate sessions are created
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## pytest-bdd Integration
|
|
81
|
+
|
|
82
|
+
```python
|
|
83
|
+
# aidlc/features/steps/test_login_steps.py
|
|
84
|
+
from pytest_bdd import scenarios, given, when, then, parsers
|
|
85
|
+
|
|
86
|
+
scenarios("../cross-stack/auth/login.feature")
|
|
87
|
+
|
|
88
|
+
@given("the user is on the login page")
|
|
89
|
+
def login_page():
|
|
90
|
+
return LoginPage()
|
|
91
|
+
|
|
92
|
+
@when(parsers.parse("the user submits email {email} and password {password}"))
|
|
93
|
+
def submit(email, password):
|
|
94
|
+
...
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Verification
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# Run all BDD scenarios
|
|
101
|
+
pytest aidlc/features/ --verbose
|
|
102
|
+
|
|
103
|
+
# Run scenarios for a specific FR
|
|
104
|
+
pytest aidlc/features/ -k "FR-001"
|
|
105
|
+
|
|
106
|
+
# Generate step definitions
|
|
107
|
+
pytest-bdd generate aidlc/features/cross-stack/auth/login.feature
|
|
108
|
+
|
|
109
|
+
# BDD scenario coverage
|
|
110
|
+
pytest aidlc/features/ --cov --cov-fail-under=80
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Feature File Locations
|
|
114
|
+
|
|
115
|
+
| Type | Location |
|
|
116
|
+
|------|----------|
|
|
117
|
+
| Cross-stack contracts | `aidlc/features/cross-stack/` |
|
|
118
|
+
| Web component | `apps/web/features/` |
|
|
119
|
+
| Backend component | `apps/backend/features/` |
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Spec-Driven Development (SDD)
|
|
2
|
+
|
|
3
|
+
SDD is the specification methodology used in Understand and Plan phases.
|
|
4
|
+
|
|
5
|
+
## Role in AI-DLC
|
|
6
|
+
|
|
7
|
+
| Phase | SDD Usage |
|
|
8
|
+
|-------|-----------|
|
|
9
|
+
| Understand | Intent capture, spec delta with EARS |
|
|
10
|
+
| Plan | Design doc, task decomposition with DAG |
|
|
11
|
+
| Deliver | Artifact archiving |
|
|
12
|
+
|
|
13
|
+
## Core Artifacts
|
|
14
|
+
|
|
15
|
+
### Proposal (Why/What/Impact)
|
|
16
|
+
|
|
17
|
+
```markdown
|
|
18
|
+
## Change: CHG-001 — User Authentication
|
|
19
|
+
|
|
20
|
+
**Why:** Users need to securely access their accounts
|
|
21
|
+
**What:** Email + password login with JWT session
|
|
22
|
+
**Impact:** New auth module, changes to user model
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Spec Delta (EARS)
|
|
26
|
+
|
|
27
|
+
```markdown
|
|
28
|
+
## ADDED Requirements
|
|
29
|
+
|
|
30
|
+
### FR-001: User Authentication
|
|
31
|
+
|
|
32
|
+
**Priority:** P0
|
|
33
|
+
|
|
34
|
+
**Description (Event-Driven):**
|
|
35
|
+
When a user submits valid credentials, the system SHALL authenticate and return a JWT token.
|
|
36
|
+
|
|
37
|
+
**Acceptance Criteria:**
|
|
38
|
+
- AC1: Valid credentials return JWT with 1-hour expiry
|
|
39
|
+
- AC2: Invalid credentials return 401
|
|
40
|
+
- AC3: Empty fields return validation error
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Design Doc
|
|
44
|
+
|
|
45
|
+
```markdown
|
|
46
|
+
## Data Model: User
|
|
47
|
+
|
|
48
|
+
| Field | Type | Constraints |
|
|
49
|
+
|-------|------|-------------|
|
|
50
|
+
| id | UUID | PK |
|
|
51
|
+
| email | string | UNIQUE, NOT NULL |
|
|
52
|
+
|
|
53
|
+
## API: POST /auth/login
|
|
54
|
+
|
|
55
|
+
Request: `{email, password}` Response: `{token, expires_in}`
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Task List with DAG
|
|
59
|
+
|
|
60
|
+
```yaml
|
|
61
|
+
units:
|
|
62
|
+
- id: unit-1
|
|
63
|
+
name: Database schema
|
|
64
|
+
depends_on: []
|
|
65
|
+
- id: unit-2
|
|
66
|
+
name: Login endpoint
|
|
67
|
+
depends_on: [unit-1]
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## EARS Patterns
|
|
71
|
+
|
|
72
|
+
| Pattern | Syntax | Example |
|
|
73
|
+
|---------|--------|---------|
|
|
74
|
+
| Ubiquitous | `The system SHALL ...` | Always-hash passwords with bcrypt |
|
|
75
|
+
| Event-Driven | `When {event}, SHALL ...` | When user logs in, create session |
|
|
76
|
+
| State-Driven | `While {state}, SHALL ...` | While session active, auto-refresh |
|
|
77
|
+
| Unwanted | `If {condition}, SHALL ...` | If DB fails, return 503 |
|
|
78
|
+
| Optional | `Where {feature}, SHALL ...` | Where SSO enabled, skip password |
|
|
79
|
+
|
|
80
|
+
## Tools
|
|
81
|
+
|
|
82
|
+
- Spec format: Markdown with EARS
|
|
83
|
+
- Design: Markdown + Mermaid diagrams
|
|
84
|
+
- Tasks: YAML with DAG structure
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Test-Driven Development (TDD)
|
|
2
|
+
|
|
3
|
+
TDD is the implementation methodology used in the Verify phase.
|
|
4
|
+
|
|
5
|
+
## Role in AI-DLC
|
|
6
|
+
|
|
7
|
+
| Phase | TDD Usage |
|
|
8
|
+
|-------|-----------|
|
|
9
|
+
| Plan | Test plan written per scenario |
|
|
10
|
+
| Verify | Red → Green → Refactor per BDD scenario |
|
|
11
|
+
|
|
12
|
+
## Core Cycle
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
For each BDD scenario:
|
|
16
|
+
┌──────────────────┐
|
|
17
|
+
│ 1. RED │ Write pytest test → confirm FAILURE
|
|
18
|
+
│ 2. GREEN │ Write minimum implementation → confirm PASS
|
|
19
|
+
│ 3. REFACTOR │ Clean up → all tests still PASS
|
|
20
|
+
└──────────────────┘
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## RED Phase
|
|
24
|
+
|
|
25
|
+
Write a test that asserts the expected behavior. It must fail on first run.
|
|
26
|
+
|
|
27
|
+
```python
|
|
28
|
+
# tests/unit/test_auth.py
|
|
29
|
+
def test_login_valid_credentials():
|
|
30
|
+
result = authenticate("user@test.com", "correct123")
|
|
31
|
+
assert result.token is not None
|
|
32
|
+
assert result.expires_in == 3600
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
pytest tests/unit/test_auth.py -v
|
|
37
|
+
# FAILED — authenticate not defined ✓ (RED confirmed)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Rules:**
|
|
41
|
+
- Test written before implementation code
|
|
42
|
+
- Test must fail (confirms the assertion is valid)
|
|
43
|
+
- Test covers only this scenario's behavior
|
|
44
|
+
|
|
45
|
+
## GREEN Phase
|
|
46
|
+
|
|
47
|
+
Write the minimum code to make the test pass.
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
# src/auth/login.py
|
|
51
|
+
def authenticate(email, password):
|
|
52
|
+
if email == "user@test.com" and password == "correct123":
|
|
53
|
+
return AuthResult(token="jwt_placeholder", expires_in=3600)
|
|
54
|
+
raise AuthError("Invalid credentials")
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
pytest tests/unit/test_auth.py -v
|
|
59
|
+
# PASSED ✓ (GREEN)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Rules:**
|
|
63
|
+
- Minimum code to pass — no extras
|
|
64
|
+
- No premature optimization
|
|
65
|
+
- No new dependencies unless required
|
|
66
|
+
|
|
67
|
+
## REFACTOR Phase
|
|
68
|
+
|
|
69
|
+
Improve code quality without changing behavior.
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
pytest --cov --cov-fail-under=80
|
|
73
|
+
# All tests passed, coverage ≥80% ✓ (REFACTOR)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Rules:**
|
|
77
|
+
- Keep all tests green
|
|
78
|
+
- No behavior changes
|
|
79
|
+
- Repeat for next scenario
|
|
80
|
+
|
|
81
|
+
## Naming Convention
|
|
82
|
+
|
|
83
|
+
| Artifact | Location | Example |
|
|
84
|
+
|----------|----------|---------|
|
|
85
|
+
| Tests | `tests/unit/test_{feature}.py` | `tests/unit/test_auth.py` |
|
|
86
|
+
| Step defs | `aidlc/features/steps/test_{feature}_steps.py` | `aidlc/features/steps/test_login_steps.py` |
|
|
87
|
+
| Source | `src/{module}/{feature}.py` | `src/auth/login.py` |
|
|
88
|
+
|
|
89
|
+
## Quality Gates
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
pytest --cov --cov-fail-under=80
|
|
93
|
+
pytest aidlc/features/ --verbose
|
|
94
|
+
bandit -r src/ -q
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Test Categories
|
|
98
|
+
|
|
99
|
+
Each BDD scenario type maps to a test category:
|
|
100
|
+
|
|
101
|
+
| BDD Tag | Test Category | Focus |
|
|
102
|
+
|---------|---------------|-------|
|
|
103
|
+
| `@positive` | 处理逻辑 | Normal flow, happy path |
|
|
104
|
+
| `@negative` | 异常处理 | Error handling, invalid inputs |
|
|
105
|
+
| `@edge` | 边界情况 | Boundary values, empty/null |
|
|
106
|
+
| `@logic` | 逻辑一致性 | Idempotency, state consistency |
|
|
107
|
+
|
|
108
|
+
### @logic Test Examples
|
|
109
|
+
|
|
110
|
+
```python
|
|
111
|
+
def test_login_is_idempotent():
|
|
112
|
+
"""Repeated login returns same token."""
|
|
113
|
+
result1 = authenticate("user@test.com", "correct123")
|
|
114
|
+
result2 = authenticate("user@test.com", "correct123")
|
|
115
|
+
assert result1.token == result2.token
|
|
116
|
+
|
|
117
|
+
def test_no_duplicate_sessions():
|
|
118
|
+
"""Multiple logins don't create multiple sessions."""
|
|
119
|
+
authenticate("user@test.com", "correct123")
|
|
120
|
+
authenticate("user@test.com", "correct123")
|
|
121
|
+
assert session_count() == 1
|
|
122
|
+
|
|
123
|
+
def test_state_consistency():
|
|
124
|
+
"""Operation preserves data integrity."""
|
|
125
|
+
initial = db.count()
|
|
126
|
+
process()
|
|
127
|
+
assert db.count() == initial
|
|
128
|
+
```
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Cloud Providers
|
|
2
|
+
|
|
3
|
+
## Default: TCB (Tencent CloudBase)
|
|
4
|
+
|
|
5
|
+
TCB is the default cloud development platform. Aliyun is also supported.
|
|
6
|
+
|
|
7
|
+
The provider layer supports a **monorepo multi-component stack** (native + desktop + web + backend + wxa + mya + tta). Use the `deploy_stack` orchestrator instead of per-component CLI commands for shared environments.
|
|
8
|
+
|
|
9
|
+
## Provider Comparison
|
|
10
|
+
|
|
11
|
+
| Capability | TCB | Aliyun |
|
|
12
|
+
|-----------|-----|--------|
|
|
13
|
+
| **Functions** | CloudBase Functions | Function Compute (FC) |
|
|
14
|
+
| **Database** | DocDB + MySQL | TableStore + RDS |
|
|
15
|
+
| **Storage** | COS (Cloud Object Storage) | OSS (Object Storage Service) |
|
|
16
|
+
| **Hosting** | CloudBase Hosting + Preview | Static Website + CDN |
|
|
17
|
+
| **Stack preview URL** | `https://{env-id}.tcb-preview.com` (gateway) | `https://{gateway}.{region}.fc.devs.com` |
|
|
18
|
+
| **Default** | Yes | No |
|
|
19
|
+
|
|
20
|
+
## Stack Deploy
|
|
21
|
+
|
|
22
|
+
`deploy_stack` is the unified orchestrator. It deploys `backend` first, captures `BACKEND_URL`, then deploys all client components with `BACKEND_URL` injected. The output is `STACK_URL` (= `BACKEND_URL`) plus per-component URLs.
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
deploy_stack --preview --provider tcb
|
|
26
|
+
# → STACK_URL=https://{env-id}.tcb-preview.com
|
|
27
|
+
# → WEB_URL=https://{env-id}-{project}.tcb-preview.com
|
|
28
|
+
# → NATIVE_DIST_URL=internal distribution URL
|
|
29
|
+
# → DESKTOP_DIST_URL=internal distribution URL
|
|
30
|
+
# → WXA_URL/MYA_URL/TTA_URL=mini-program preview QR
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
deploy_stack --preview --provider aliyun
|
|
35
|
+
# → STACK_URL=https://{gateway}.{region}.fc.devs.com
|
|
36
|
+
# → WEB_URL=https://{bucket}.{region}.oss-website.aliyuncs.com
|
|
37
|
+
# → NATIVE_DIST_URL=internal distribution URL
|
|
38
|
+
# → DESKTOP_DIST_URL=internal distribution URL
|
|
39
|
+
# → WXA_URL/MYA_URL/TTA_URL=mini-program preview QR
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Build Config Injection
|
|
43
|
+
|
|
44
|
+
All client builds receive `BACKEND_URL` at build time. The orchestrator passes it; components must not hardcode URLs.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# web
|
|
48
|
+
pnpm --filter web build --env BACKEND_URL=$BACKEND_URL
|
|
49
|
+
|
|
50
|
+
# native
|
|
51
|
+
cd apps/native && BACKEND_URL=$BACKEND_URL pnpm build
|
|
52
|
+
|
|
53
|
+
# desktop
|
|
54
|
+
cd apps/desktop && BACKEND_URL=$BACKEND_URL pnpm build
|
|
55
|
+
|
|
56
|
+
# mini-programs (wxa, mya, tta)
|
|
57
|
+
cd apps/wxa && BACKEND_URL=$BACKEND_URL pnpm build
|
|
58
|
+
cd apps/mya && BACKEND_URL=$BACKEND_URL pnpm build
|
|
59
|
+
cd apps/tta && BACKEND_URL=$BACKEND_URL pnpm build
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Component URL Resolution
|
|
63
|
+
|
|
64
|
+
| Component | TCB | Aliyun |
|
|
65
|
+
|-----------|-----|--------|
|
|
66
|
+
| `backend` (gateway) | `https://{env-id}.tcb-preview.com` | `https://{gateway}.{region}.fc.devs.com` |
|
|
67
|
+
| `web` (hosting) | `https://{env-id}-{project}.tcb-preview.com` | `https://{bucket}.{region}.oss-website.aliyuncs.com` |
|
|
68
|
+
| `native` (distribution) | internal distribution URL | internal distribution URL |
|
|
69
|
+
| `desktop` (distribution) | internal distribution URL | internal distribution URL |
|
|
70
|
+
| `wxa` (mini-program) | mini-program preview QR | mini-program preview QR |
|
|
71
|
+
| `mya` (mini-program) | mini-program preview QR | mini-program preview QR |
|
|
72
|
+
| `tta` (mini-program) | mini-program preview QR | mini-program preview QR |
|
|
73
|
+
|
|
74
|
+
## BDD E2E Targets
|
|
75
|
+
|
|
76
|
+
| Test | Target |
|
|
77
|
+
|------|--------|
|
|
78
|
+
| `apps/backend/tests/e2e/` | `BACKEND_URL` |
|
|
79
|
+
| `apps/web/tests/e2e/` | `WEB_URL` + `BACKEND_URL` (as API root) |
|
|
80
|
+
| `apps/native/tests/e2e/` | `BACKEND_URL` (built into app) |
|
|
81
|
+
| `apps/desktop/tests/e2e/` | `BACKEND_URL` (built into app) |
|
|
82
|
+
| `apps/wxa/tests/e2e/` | `BACKEND_URL` (built into app) |
|
|
83
|
+
| `apps/mya/tests/e2e/` | `BACKEND_URL` (built into app) |
|
|
84
|
+
| `apps/tta/tests/e2e/` | `BACKEND_URL` (built into app) |
|
|
85
|
+
| `aidlc/tests/cross-stack/` | `STACK_URL` (full flow) |
|
|
86
|
+
|
|
87
|
+
## Dynamic Preview URL
|
|
88
|
+
|
|
89
|
+
Preview URLs are resolved at deploy time based on the active provider:
|
|
90
|
+
|
|
91
|
+
- **TCB:** `deploy_stack --preview --provider tcb` → `STACK_URL=https://{env-id}.tcb-preview.com`
|
|
92
|
+
- **Aliyun:** `deploy_stack --preview --provider aliyun` → `STACK_URL=https://{gateway}.{region}.fc.devs.com`
|
|
93
|
+
|
|
94
|
+
Set as `STACK_URL` / `BACKEND_URL` / `WEB_URL` / per-component URLs as environment variables for BDD e2e tests:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
export STACK_URL=$(deploy_stack --preview --output url)
|
|
98
|
+
export BACKEND_URL=$STACK_URL
|
|
99
|
+
export WEB_URL=$(deploy_stack --preview --output web_url)
|
|
100
|
+
export NATIVE_URL=$(deploy_stack --preview --output native_url)
|
|
101
|
+
export DESKTOP_URL=$(deploy_stack --preview --output desktop_url)
|
|
102
|
+
pytest apps/web/tests/e2e/ --base-url $WEB_URL --api-url $BACKEND_URL
|
|
103
|
+
pytest apps/native/tests/e2e/ --backend-url $BACKEND_URL
|
|
104
|
+
pytest apps/desktop/tests/e2e/ --backend-url $BACKEND_URL
|
|
105
|
+
pytest aidlc/tests/cross-stack/ --stack-url $STACK_URL
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Stack Rollback
|
|
109
|
+
|
|
110
|
+
Rollback is at the **stack** level: backend and all client components revert together to the last stable stack version.
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
deploy_stack --rollback ${LAST_STABLE_STACK_VERSION} --provider tcb
|
|
114
|
+
```
|