@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,41 @@
|
|
|
1
|
+
# pytest-bdd Configuration
|
|
2
|
+
|
|
3
|
+
pytest-bdd 配置和示例。
|
|
4
|
+
|
|
5
|
+
## 目录结构
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
pybdd/
|
|
9
|
+
├── pytest.ini # pytest 配置
|
|
10
|
+
├── conftest.py # fixtures
|
|
11
|
+
├── steps/ # step definitions
|
|
12
|
+
│ ├── .gitkeep
|
|
13
|
+
│ └── test_example_steps.py
|
|
14
|
+
└── example/ # 示例 feature
|
|
15
|
+
└── auth/
|
|
16
|
+
└── login.feature
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## 使用方法
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# 运行所有 BDD 场景
|
|
23
|
+
pytest pybdd/ --verbose
|
|
24
|
+
|
|
25
|
+
# 运行特定 FR
|
|
26
|
+
pytest pybdd/ -k "FR-001"
|
|
27
|
+
|
|
28
|
+
# 生成 step definitions
|
|
29
|
+
pytest-bdd generate pybdd/example/auth/login.feature
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 场景标签
|
|
33
|
+
|
|
34
|
+
每个 FR 需包含 4 类场景:
|
|
35
|
+
|
|
36
|
+
| 标签 | 含义 |
|
|
37
|
+
|------|------|
|
|
38
|
+
| `@positive` | 处理逻辑 |
|
|
39
|
+
| `@negative` | 异常处理 |
|
|
40
|
+
| `@edge` | 边界情况 |
|
|
41
|
+
| `@logic` | 逻辑一致性 |
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"""pytest-bdd configuration for ai-dlc."""
|
|
2
|
+
import pytest
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def pytest_bdd_get_features_paths():
|
|
7
|
+
"""Return all paths containing BDD feature files."""
|
|
8
|
+
return [
|
|
9
|
+
Path("pybdd"),
|
|
10
|
+
Path("aidlc"),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@pytest.fixture
|
|
15
|
+
def pybdd_root():
|
|
16
|
+
"""Return the root directory for BDD features."""
|
|
17
|
+
return Path(__file__).parent.parent
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
@INT-FR-001
|
|
2
|
+
Feature: User Authentication
|
|
3
|
+
|
|
4
|
+
Cross-stack authentication feature covering positive, negative, edge cases, and logic consistency.
|
|
5
|
+
|
|
6
|
+
@INT-FR-001 @positive
|
|
7
|
+
Scenario: Successful login with valid credentials
|
|
8
|
+
Given the user is on the login page
|
|
9
|
+
And the user has valid credentials
|
|
10
|
+
When the user submits email "user@test.com" and password "correct123"
|
|
11
|
+
Then the user receives a JWT token
|
|
12
|
+
And the user is redirected to dashboard
|
|
13
|
+
|
|
14
|
+
@INT-FR-001 @negative
|
|
15
|
+
Scenario: Login fails with wrong password
|
|
16
|
+
Given the user is on the login page
|
|
17
|
+
And the user has invalid credentials
|
|
18
|
+
When the user submits email "user@test.com" and password "wrong"
|
|
19
|
+
Then the user sees error "Invalid credentials"
|
|
20
|
+
|
|
21
|
+
@INT-FR-001 @edge
|
|
22
|
+
Scenario: Login fails with empty fields
|
|
23
|
+
Given the user is on the login page
|
|
24
|
+
When the user submits email "" and password ""
|
|
25
|
+
Then the user sees error "Email and password are required"
|
|
26
|
+
|
|
27
|
+
@INT-FR-001 @logic
|
|
28
|
+
Scenario: Login is idempotent
|
|
29
|
+
Given the user has valid credentials
|
|
30
|
+
When the user submits the same credentials 3 times
|
|
31
|
+
Then each login returns the same JWT token
|
|
32
|
+
And no duplicate sessions are created
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Step definitions for pytest-bdd
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"""Example step definitions for login feature."""
|
|
2
|
+
from pytest_bdd import scenarios, given, when, then, parsers
|
|
3
|
+
|
|
4
|
+
scenarios("../example/auth/login.feature")
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@given("the user is on the login page")
|
|
8
|
+
def login_page():
|
|
9
|
+
return {"url": "/login", "email_field": "", "password_field": ""}
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@given("the user has valid credentials")
|
|
13
|
+
def valid_credentials():
|
|
14
|
+
return {"email": "user@test.com", "password": "correct123"}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@given("the user has invalid credentials")
|
|
18
|
+
def invalid_credentials():
|
|
19
|
+
return {"email": "user@test.com", "password": "wrong"}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@when(parsers.parse('the user submits email "{email}" and password "{password}"'))
|
|
23
|
+
def submit_login(email: str, password: str):
|
|
24
|
+
if email and password:
|
|
25
|
+
return {"success": True, "token": "jwt_abc123", "redirect": "/dashboard"}
|
|
26
|
+
return {"success": False, "error": "Email and password are required"}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@when("the user submits the same credentials 3 times")
|
|
30
|
+
def submit_repeated_login():
|
|
31
|
+
return [
|
|
32
|
+
{"success": True, "token": "jwt_abc123", "redirect": "/dashboard"},
|
|
33
|
+
{"success": True, "token": "jwt_abc123", "redirect": "/dashboard"},
|
|
34
|
+
{"success": True, "token": "jwt_abc123", "redirect": "/dashboard"},
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@then("the user receives a JWT token")
|
|
39
|
+
def receive_token(result):
|
|
40
|
+
assert result.get("success") is True
|
|
41
|
+
assert "token" in result
|
|
42
|
+
assert result["token"].startswith("jwt_")
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@then("the user is redirected to dashboard")
|
|
46
|
+
def redirect_dashboard(result):
|
|
47
|
+
assert result.get("redirect") == "/dashboard"
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
@then("the user sees error {error}")
|
|
51
|
+
def see_error(result, error):
|
|
52
|
+
assert result.get("success") is False
|
|
53
|
+
assert result.get("error") == error
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
@then("each login returns the same JWT token")
|
|
57
|
+
def same_token(results):
|
|
58
|
+
tokens = [r["token"] for r in results]
|
|
59
|
+
assert len(set(tokens)) == 1, "Tokens should be identical for idempotent login"
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
@then("no duplicate sessions are created")
|
|
63
|
+
def no_duplicate_sessions():
|
|
64
|
+
session_count = 1
|
|
65
|
+
assert session_count == 1, "No duplicate sessions should be created"
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# AI-DLC Skill — Requirements
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This skill implements the AI-Driven Development Lifecycle for **monorepo multi-component stacks** (native + desktop + web + backend + wxa + mya + tta) with four core phases — Understand (SDD+BDD), Plan (SDD+TDD), Verify (BDD+TDD), Deliver (SDD+Cloud) — plus a first-class **Integration** discipline that governs cross-component contracts (API, events, shared types).
|
|
6
|
+
|
|
7
|
+
## Topology
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
┌──────────────────── Monorepo Root ─────────────────────┐
|
|
11
|
+
│ │
|
|
12
|
+
│ apps/native apps/desktop apps/web apps/backend │
|
|
13
|
+
│ (NATIVE-FR-) (DESKTOP-FR-) (WEB-FR-) (BE-FR-) │
|
|
14
|
+
│ apps/wxa apps/mya apps/tta │
|
|
15
|
+
│ (WXA-FR-) (MYA-FR-) (TTA-FR-) │
|
|
16
|
+
│ │ │ │ │
|
|
17
|
+
│ └──────┬───────┴─────┬─────┘ │
|
|
18
|
+
│ │ │ │
|
|
19
|
+
│ aidlc/contracts/ aidlc/packages/shared/ │
|
|
20
|
+
│ (INT-FR-*) (generated types) │
|
|
21
|
+
│ │
|
|
22
|
+
│ aidlc/features/ tests/ aidlc/openspec/ aidlc/providers/ │
|
|
23
|
+
└────────────────────────────────────────────────────────┘
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
FR namespaces:
|
|
27
|
+
|
|
28
|
+
| Prefix | Owner | Scope |
|
|
29
|
+
|--------|-------|-------|
|
|
30
|
+
| `NATIVE-*` | `apps/native` | Native mobile behavior |
|
|
31
|
+
| `DESKTOP-*` | `apps/desktop` | Desktop client behavior |
|
|
32
|
+
| `WEB-*` | `apps/web` | Browser frontend behavior |
|
|
33
|
+
| `BE-*` | `apps/backend` | Server/service behavior |
|
|
34
|
+
| `WXA-*` | `apps/wxa` | WeChat Mini Program behavior |
|
|
35
|
+
| `MYA-*` | `apps/mya` | Mini Program (e.g. Alipay) behavior |
|
|
36
|
+
| `TTA-*` | `apps/tta` | TikTok Mini Program behavior |
|
|
37
|
+
| `INT-*` | `aidlc/contracts/`, `aidlc/packages/shared/` | Cross-component contract & integration |
|
|
38
|
+
|
|
39
|
+
## Functional Requirements
|
|
40
|
+
|
|
41
|
+
### FR-001: Understand Phase
|
|
42
|
+
|
|
43
|
+
**Priority:** P0
|
|
44
|
+
|
|
45
|
+
**When** a developer starts a new feature (single-component or cross-cutting),
|
|
46
|
+
**the system SHALL** capture intent, produce an OpenSpec spec delta in EARS format, and write BDD feature files with Given/When/Then scenarios.
|
|
47
|
+
|
|
48
|
+
**Acceptance Criteria:**
|
|
49
|
+
- Intent documented before implementation
|
|
50
|
+
- Spec delta uses EARS (Ubiquitous/Event-Driven/State-Driven/Unwanted/Optional)
|
|
51
|
+
- Each FR tagged with `@FR-{PREFIX}-NNN` in `.feature` files
|
|
52
|
+
- Cross-component features use `INT-*` FRs in addition to per-component FRs
|
|
53
|
+
- Minimum 3 scenarios per FR: positive, negative, edge
|
|
54
|
+
- Scenarios reviewed and approved by human
|
|
55
|
+
|
|
56
|
+
### FR-002: Plan Phase
|
|
57
|
+
|
|
58
|
+
**Priority:** P0
|
|
59
|
+
|
|
60
|
+
**When** spec and feature files are approved,
|
|
61
|
+
**the system SHALL** produce a technical design, decompose work into units with dependency DAG, and write test plans.
|
|
62
|
+
|
|
63
|
+
**Acceptance Criteria:**
|
|
64
|
+
- Design doc includes architecture, data model, API contract, state machine
|
|
65
|
+
- Tasks have explicit dependencies (DAG), per-component and cross-component
|
|
66
|
+
- Cross-component tasks reference the relevant `INT-*` contract FR
|
|
67
|
+
- Test plan written per scenario before implementation
|
|
68
|
+
|
|
69
|
+
### FR-003: Verify Phase
|
|
70
|
+
|
|
71
|
+
**Priority:** P0
|
|
72
|
+
|
|
73
|
+
**When** design and tasks are approved,
|
|
74
|
+
**the system SHALL** execute TDD red-green-refactor per BDD scenario and verify all scenarios pass.
|
|
75
|
+
|
|
76
|
+
**Acceptance Criteria:**
|
|
77
|
+
- Tests written before implementation (Red)
|
|
78
|
+
- Tests fail initially (confirming assertion works)
|
|
79
|
+
- Minimum implementation written to pass (Green)
|
|
80
|
+
- Implementation refactored, all tests still pass
|
|
81
|
+
- All BDD scenarios pass via pytest-bdd (or equivalent per component)
|
|
82
|
+
- Quality gates enforced: coverage ≥80%, scenarios ≥90%, 0 vulns, no TODO
|
|
83
|
+
- Per-component unit, integration, and e2e layers are all green
|
|
84
|
+
- Cross-stack e2e scenarios pass against the unified preview URL
|
|
85
|
+
|
|
86
|
+
### FR-004: Deliver Phase
|
|
87
|
+
|
|
88
|
+
**Priority:** P1
|
|
89
|
+
|
|
90
|
+
**When** all scenarios pass quality gates,
|
|
91
|
+
**the system SHALL** deploy the full stack to preview, run cross-stack BDD e2e tests, and after human approval deploy to production with BVT verification.
|
|
92
|
+
|
|
93
|
+
**Acceptance Criteria:**
|
|
94
|
+
- Unified preview URL dynamically resolved per platform (TCB/Aliyun)
|
|
95
|
+
- BDD e2e tests run against preview URL for the component they target
|
|
96
|
+
- Cross-stack e2e tests run against the unified preview URL
|
|
97
|
+
- Production deploy requires human approval
|
|
98
|
+
- BVT (Build Verification Test) passes after production deploy
|
|
99
|
+
- Failed BVT triggers rollback
|
|
100
|
+
|
|
101
|
+
### FR-005: Cross-Component Contract Discipline
|
|
102
|
+
|
|
103
|
+
**Priority:** P0
|
|
104
|
+
|
|
105
|
+
**When** a feature spans more than one component (e.g. `WEB-*` + `BE-*`, or `NATIVE-*` + `BE-*`),
|
|
106
|
+
**the system SHALL** define and verify the contract between components before integration.
|
|
107
|
+
|
|
108
|
+
**Acceptance Criteria:**
|
|
109
|
+
- All public APIs and async events are described in `aidlc/contracts/` (OpenAPI/AsyncAPI) and tagged with `INT-FR-NNN`
|
|
110
|
+
- Contract changes require a contract-diff review (backward-compat by default)
|
|
111
|
+
- Shared types are generated from contracts, not hand-written, in `aidlc/packages/shared/`
|
|
112
|
+
- Contract tests run on every PR that touches `aidlc/contracts/` or any consumer
|
|
113
|
+
- A breaking contract change requires a major version bump and human approval
|
|
114
|
+
|
|
115
|
+
### FR-006: Monorepo Stack Awareness
|
|
116
|
+
|
|
117
|
+
**Priority:** P0
|
|
118
|
+
|
|
119
|
+
**When** the AI agent operates in a monorepo with multiple components,
|
|
120
|
+
**the system SHALL** be aware of which component(s) the current work affects and apply the right scope, tests, and deploy steps.
|
|
121
|
+
|
|
122
|
+
**Acceptance Criteria:**
|
|
123
|
+
- Spec delta, design doc, and task list each declare an `affects: [native, desktop, web, backend, wxa, mya, tta, contracts]` field
|
|
124
|
+
- Test plan enumerates the layers it covers: `unit`, `integration`, `e2e`, `cross-stack`
|
|
125
|
+
- Only the affected components are deployed in the unified preview (others reused or stubbed)
|
|
126
|
+
- BVT and rollback operate on the whole stack, not a single component
|
|
127
|
+
|
|
128
|
+
## Cross-Cutting Rules (summary)
|
|
129
|
+
|
|
130
|
+
See `rules/` for full definitions.
|
|
131
|
+
|
|
132
|
+
| Prefix | File | Phase | Scope |
|
|
133
|
+
|--------|------|-------|-------|
|
|
134
|
+
| UND | `rules/understand.md` | Understand | Single + multi-component |
|
|
135
|
+
| PLN | `rules/plan.md` | Plan | Single + multi-component |
|
|
136
|
+
| VRF | `rules/verify.md` | Verify | Single + multi-component |
|
|
137
|
+
| DLV | `rules/deliver.md` | Deliver | Stack deploy + rollback |
|
|
138
|
+
| INT | `rules/integration.md` | All phases | Cross-component contracts |
|
|
139
|
+
| STK | `rules/stack.md` | All phases | Monorepo / multi-component |
|
|
140
|
+
| SEC | `rules/security.md` | All phases | Security baseline |
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
categories:
|
|
2
|
+
- ai-dlc
|
|
3
|
+
- development
|
|
4
|
+
- sdd
|
|
5
|
+
- bdd
|
|
6
|
+
- tdd
|
|
7
|
+
- specification
|
|
8
|
+
- cloud
|
|
9
|
+
- monorepo
|
|
10
|
+
- integration
|
|
11
|
+
description: >-
|
|
12
|
+
AI-Driven Development Lifecycle for monorepo multi-component stacks
|
|
13
|
+
(native + desktop + web + backend + wxa + mya + tta). Adaptive orchestration:
|
|
14
|
+
Master Agent evaluates complexity, delegates sub-tasks via CDHA Task tool.
|
|
15
|
+
Core phases: Understand (SDD+BDD) → Plan (SDD+TDD) → Verify (BDD+TDD) →
|
|
16
|
+
Deliver (SDD+Cloud), with cross-stack Integration rules governing
|
|
17
|
+
component boundaries. FR namespaces: NATIVE-*, DESKTOP-*, WEB-*, BE-*,
|
|
18
|
+
WXA-*, MYA-*, TTA-*, INT-*. Default cloud platform: TCB. Also supports Aliyun.
|
|
19
|
+
enabled: true
|
|
20
|
+
entry: SKILL.md
|
|
21
|
+
name: ai-dlc-skill
|
|
22
|
+
version: 4.0.0
|
|
23
|
+
|
|
24
|
+
stack:
|
|
25
|
+
topology: monorepo
|
|
26
|
+
components:
|
|
27
|
+
- id: native
|
|
28
|
+
kind: mobile
|
|
29
|
+
tech: react-native | flutter
|
|
30
|
+
default_language: dart
|
|
31
|
+
default_ui_framework: flutter-sdk
|
|
32
|
+
owns: apps/native
|
|
33
|
+
fr_prefix: NATIVE
|
|
34
|
+
- id: desktop
|
|
35
|
+
kind: desktop
|
|
36
|
+
tech: electron | tauri
|
|
37
|
+
default_language: typescript
|
|
38
|
+
default_ui_framework: electron-react
|
|
39
|
+
owns: apps/desktop
|
|
40
|
+
fr_prefix: DESKTOP
|
|
41
|
+
- id: web
|
|
42
|
+
kind: frontend
|
|
43
|
+
tech: react | vue | svelte
|
|
44
|
+
default_language: typescript
|
|
45
|
+
default_ui_framework: nextjs
|
|
46
|
+
owns: apps/web
|
|
47
|
+
fr_prefix: WEB
|
|
48
|
+
- id: backend
|
|
49
|
+
kind: service
|
|
50
|
+
tech: python | node | go | cloud-function
|
|
51
|
+
compute_modes:
|
|
52
|
+
- cloudbase-functions (FaaS, default)
|
|
53
|
+
- cloudbase-run (CaaS)
|
|
54
|
+
- server (traditional)
|
|
55
|
+
owns: apps/backend
|
|
56
|
+
fr_prefix: BE
|
|
57
|
+
- id: wxa
|
|
58
|
+
kind: mini-program
|
|
59
|
+
tech: miniprogram
|
|
60
|
+
default_language: javascript
|
|
61
|
+
default_ui_framework: vant-weapp
|
|
62
|
+
owns: apps/wxa
|
|
63
|
+
fr_prefix: WXA
|
|
64
|
+
- id: mya
|
|
65
|
+
kind: mini-program
|
|
66
|
+
tech: miniprogram
|
|
67
|
+
default_language: javascript
|
|
68
|
+
default_ui_framework: ant-design-mini
|
|
69
|
+
owns: apps/mya
|
|
70
|
+
fr_prefix: MYA
|
|
71
|
+
- id: tta
|
|
72
|
+
kind: mini-program
|
|
73
|
+
tech: miniprogram
|
|
74
|
+
default_language: typescript
|
|
75
|
+
owns: apps/tta
|
|
76
|
+
fr_prefix: TTA
|
|
77
|
+
cross_cutting:
|
|
78
|
+
fr_prefix: INT
|
|
79
|
+
owns:
|
|
80
|
+
- aidlc/contracts/
|
|
81
|
+
- aidlc/packages/shared/
|
|
82
|
+
e2e_layers:
|
|
83
|
+
- unit
|
|
84
|
+
- integration
|
|
85
|
+
- e2e
|
|
86
|
+
- cross-stack
|
|
87
|
+
storage:
|
|
88
|
+
default_provider: tcb
|
|
89
|
+
providers:
|
|
90
|
+
tcb:
|
|
91
|
+
object_storage: cloudbase-storage
|
|
92
|
+
document_db: docdb
|
|
93
|
+
relational_db: mysql
|
|
94
|
+
cdn: tencent-cloud-cdn
|
|
95
|
+
aliyun:
|
|
96
|
+
object_storage: oss
|
|
97
|
+
document_db: mongodb
|
|
98
|
+
relational_db: rds-mysql
|
|
99
|
+
cdn: aliyun-cdn
|
|
100
|
+
|
|
101
|
+
integration:
|
|
102
|
+
contract_first: true
|
|
103
|
+
contract_format: openapi-3.1
|
|
104
|
+
backward_compat: required
|
|
105
|
+
breaking_change_gate: human-approval
|
|
106
|
+
shared_types:
|
|
107
|
+
generator: openapi-typescript | openapi-python
|
|
108
|
+
output: aidlc/packages/shared/
|
|
109
|
+
publish: workspace-package
|
|
110
|
+
event_contract:
|
|
111
|
+
format: asyncapi | cloudevent
|
|
112
|
+
registry: aidlc/contracts/events/
|
|
113
|
+
version_strategy: semver-major-for-breaking
|
|
114
|
+
|
|
115
|
+
deploy:
|
|
116
|
+
preview:
|
|
117
|
+
strategy: unified
|
|
118
|
+
description: >-
|
|
119
|
+
Single stack preview deploys all components together.
|
|
120
|
+
PREVIEW_URL is the backend gateway; web, native, desktop,
|
|
121
|
+
and mini-programs receive it as a build-time/runtime config.
|
|
122
|
+
ttl: 24h
|
|
123
|
+
bdd_target: cross-stack
|
|
124
|
+
environments:
|
|
125
|
+
- preview
|
|
126
|
+
- staging
|
|
127
|
+
- production
|
|
128
|
+
|
|
129
|
+
quality_gates:
|
|
130
|
+
coverage_min: 80
|
|
131
|
+
bdd_pass_rate: 100
|
|
132
|
+
contract_diff: required
|
|
133
|
+
no_todo: true
|
|
134
|
+
no_secrets_in_diff: true
|
|
135
|
+
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# {{project_name}} — AI-DLC Context
|
|
2
|
+
|
|
3
|
+
> Auto-generated by `brownfield/generate-context.sh`
|
|
4
|
+
> Generated at: {{timestamp}}
|
|
5
|
+
|
|
6
|
+
## Project Overview
|
|
7
|
+
|
|
8
|
+
**Project**: {{project_name}}
|
|
9
|
+
**Type**: {{project_type}} (monorepo multi-component)
|
|
10
|
+
**Technology Stack**: {{tech_stack}}
|
|
11
|
+
|
|
12
|
+
## Components
|
|
13
|
+
|
|
14
|
+
| Component | Directory | Tech | FR Prefix |
|
|
15
|
+
|-----------|-----------|------|-----------|
|
|
16
|
+
{{#components}}
|
|
17
|
+
| {{name}} | {{directory}} | {{tech}} | {{fr_prefix}} |
|
|
18
|
+
{{/components}}
|
|
19
|
+
|
|
20
|
+
## Discovered APIs
|
|
21
|
+
|
|
22
|
+
### Backend Endpoints
|
|
23
|
+
|
|
24
|
+
| Method | Path | Description | FR Namespace |
|
|
25
|
+
|--------|------|-------------|--------------|
|
|
26
|
+
{{#apis}}
|
|
27
|
+
| {{method}} | `{{path}}` | {{description}} | {{fr_namespace}} |
|
|
28
|
+
{{/apis}}
|
|
29
|
+
|
|
30
|
+
### Events
|
|
31
|
+
|
|
32
|
+
| Event | Schema | Description | FR Namespace |
|
|
33
|
+
|-------|--------|-------------|--------------|
|
|
34
|
+
{{#events}}
|
|
35
|
+
| `{{name}}` | `{{schema}}` | {{description}} | {{fr_namespace}} |
|
|
36
|
+
{{/events}}
|
|
37
|
+
|
|
38
|
+
## Cross-Component Dependencies
|
|
39
|
+
|
|
40
|
+
```mermaid
|
|
41
|
+
graph TD
|
|
42
|
+
{{#dependencies}}
|
|
43
|
+
{{from}}[{{from_component}}] --> {{to}}[{{to_component}}]
|
|
44
|
+
{{/dependencies}}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Architecture Summary
|
|
48
|
+
|
|
49
|
+
{{architecture_summary}}
|
|
50
|
+
|
|
51
|
+
## Existing BDD Features
|
|
52
|
+
|
|
53
|
+
| Feature | Path | Scenarios |
|
|
54
|
+
|---------|------|-----------|
|
|
55
|
+
{{#features}}
|
|
56
|
+
| {{name}} | `{{path}}` | {{scenario_count}} |
|
|
57
|
+
{{/features}}
|
|
58
|
+
|
|
59
|
+
## Quality Gates Status
|
|
60
|
+
|
|
61
|
+
| Gate | Status | Notes |
|
|
62
|
+
|------|--------|-------|
|
|
63
|
+
| Coverage ≥80% | {{coverage_status}} | {{coverage_note}} |
|
|
64
|
+
| BDD 100% | {{bdd_status}} | {{bdd_note}} |
|
|
65
|
+
| Contract compat | {{contract_status}} | {{contract_note}} |
|
|
66
|
+
| No secrets | {{secrets_status}} | {{secrets_note}} |
|
|
67
|
+
|
|
68
|
+
## Integration Contracts
|
|
69
|
+
|
|
70
|
+
| Contract | Type | Location | Version |
|
|
71
|
+
|----------|------|----------|---------|
|
|
72
|
+
{{#contracts}}
|
|
73
|
+
| {{name}} | {{type}} | `{{location}}` | {{version}} |
|
|
74
|
+
{{/contracts}}
|
|
75
|
+
|
|
76
|
+
## Recommendations for AI-DLC
|
|
77
|
+
|
|
78
|
+
{{recommendations}}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Contracts Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to any contract in `aidlc/contracts/` are recorded here. Format follows
|
|
4
|
+
[Keep a Changelog](https://keepachangelog.com/) and the project uses [SemVer](https://semver.org/).
|
|
5
|
+
|
|
6
|
+
> **Breaking change rule (INT-002):** any MAJOR bump requires human approval and a
|
|
7
|
+
> Migration section. `aidlc/tools/contract_diff.py` flags breaking changes automatically.
|
|
8
|
+
|
|
9
|
+
## [Unreleased]
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- _None yet_
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
- _None yet_
|
|
16
|
+
|
|
17
|
+
### Removed
|
|
18
|
+
- _None yet_
|
|
19
|
+
|
|
20
|
+
### Migration
|
|
21
|
+
- _None yet_
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## {{version}} — {{date}} — {{change_id}}
|
|
26
|
+
|
|
27
|
+
**FRs:** {{list_of_frs}}
|
|
28
|
+
**Affects:** {{components}}
|
|
29
|
+
|
|
30
|
+
### Added
|
|
31
|
+
- {{new_endpoint_or_field}}
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
- {{additive_change}}
|
|
35
|
+
|
|
36
|
+
### Removed
|
|
37
|
+
- {{breaking_removal}}
|
|
38
|
+
|
|
39
|
+
### Migration
|
|
40
|
+
1. {{step_1}}
|
|
41
|
+
2. {{step_2}}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
asyncapi: 3.0.0
|
|
2
|
+
info:
|
|
3
|
+
title: {{title}}
|
|
4
|
+
version: {{version}}
|
|
5
|
+
description: |
|
|
6
|
+
Async contract for INT-FR-{{int_fr_id}}.
|
|
7
|
+
Producer: {{producer}}
|
|
8
|
+
Consumers: {{consumers}}
|
|
9
|
+
x-change-id: {{change_id}}
|
|
10
|
+
x-fr: INT-FR-{{int_fr_id}}
|
|
11
|
+
|
|
12
|
+
channels:
|
|
13
|
+
{{channel_name}}:
|
|
14
|
+
address: {{channel_address}}
|
|
15
|
+
messages:
|
|
16
|
+
{{message_name}}:
|
|
17
|
+
$ref: '#/components/messages/{{MessageName}}'
|
|
18
|
+
|
|
19
|
+
operations:
|
|
20
|
+
{{operation_name}}:
|
|
21
|
+
action: {{send | receive}}
|
|
22
|
+
channel:
|
|
23
|
+
$ref: '#/channels/{{channel_name}}'
|
|
24
|
+
|
|
25
|
+
components:
|
|
26
|
+
messages:
|
|
27
|
+
{{MessageName}}:
|
|
28
|
+
name: {{message_name}}
|
|
29
|
+
title: {{message_title}}
|
|
30
|
+
contentType: application/cloudevents+json
|
|
31
|
+
payload:
|
|
32
|
+
$ref: '#/components/schemas/{{PayloadName}}'
|
|
33
|
+
schemas:
|
|
34
|
+
{{PayloadName}}:
|
|
35
|
+
type: object
|
|
36
|
+
required: [id, type, time, data]
|
|
37
|
+
properties:
|
|
38
|
+
id: { type: string, format: uuid }
|
|
39
|
+
type: { type: string }
|
|
40
|
+
source: { type: string }
|
|
41
|
+
time: { type: string, format: date-time }
|
|
42
|
+
specversion: { type: string, enum: ["1.0"] }
|
|
43
|
+
data: { type: object }
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Contract Diff — {{change_id}}
|
|
2
|
+
|
|
3
|
+
> Auto-generated by `aidlc/tools/contract_diff.py`. Reviewed during Verify and Deliver.
|
|
4
|
+
|
|
5
|
+
## Summary
|
|
6
|
+
|
|
7
|
+
| Field | Value |
|
|
8
|
+
|-------|-------|
|
|
9
|
+
| Change ID | `{{change_id}}` |
|
|
10
|
+
| Base version | `{{base_version}}` |
|
|
11
|
+
| Head version | `{{head_version}}` |
|
|
12
|
+
| Breaking? | {{yes / no}} |
|
|
13
|
+
| Approval required | {{yes / no}} |
|
|
14
|
+
|
|
15
|
+
## Files Changed
|
|
16
|
+
|
|
17
|
+
| File | Old Version | New Version | Breaking |
|
|
18
|
+
|------|-------------|-------------|----------|
|
|
19
|
+
| `{{path}}` | `{{old}}` | `{{new}}` | {{y / n}} |
|
|
20
|
+
|
|
21
|
+
## OpenAPI Diff
|
|
22
|
+
|
|
23
|
+
```diff
|
|
24
|
+
--- a/aidlc/contracts/api/{{file}}.yaml
|
|
25
|
+
+++ b/aidlc/contracts/api/{{file}}.yaml
|
|
26
|
+
@@
|
|
27
|
+
- removed: {{field}}
|
|
28
|
+
+ added: {{field}}
|
|
29
|
+
~ changed: {{field}} ({{old_type}} → {{new_type}})
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## AsyncAPI Diff
|
|
33
|
+
|
|
34
|
+
```diff
|
|
35
|
+
--- a/aidlc/contracts/events/{{file}}.yaml
|
|
36
|
+
+++ b/aidlc/contracts/events/{{file}}.yaml
|
|
37
|
+
@@
|
|
38
|
+
- channel removed: {{name}}
|
|
39
|
+
+ channel added: {{name}}
|
|
40
|
+
~ payload field: {{field}}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Breaking Change Detail
|
|
44
|
+
|
|
45
|
+
> _Filled automatically. Each breaking change must link to a migration note in `aidlc/contracts/CHANGELOG.md`._
|
|
46
|
+
|
|
47
|
+
- {{breaking_change_1}}
|
|
48
|
+
- Migration: {{link}}
|
|
49
|
+
|
|
50
|
+
## Compat Check Result
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
$ aidlc/tools/contract_diff.py --base {{base}} --head {{head}}
|
|
54
|
+
RESULT: {{COMPATIBLE | BREAKING}}
|
|
55
|
+
EXIT: {{0 | 1}}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Sign-off
|
|
59
|
+
|
|
60
|
+
- [ ] Contracts owner reviewed
|
|
61
|
+
- [ ] Provider team reviewed
|
|
62
|
+
- [ ] Consumer teams reviewed
|
|
63
|
+
- [ ] (If breaking) Human approval received
|