@scemoon/cdh 1.0.8 → 1.0.9-beta.1
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,260 @@
|
|
|
1
|
+
# AI-DLC Phase 2: Plan (规划)
|
|
2
|
+
|
|
3
|
+
Design the solution and decompose work into tracked, dependency-ordered units, including cross-component edges.
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
|
|
7
|
+
Translate approved specifications into a concrete technical plan that can be executed unit by unit, with explicit cross-component dependencies and contract references.
|
|
8
|
+
|
|
9
|
+
## Flow
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
Approved Spec + BDD Features (per-component + cross-stack)
|
|
13
|
+
│
|
|
14
|
+
▼
|
|
15
|
+
SDD: Design Doc
|
|
16
|
+
- architecture (per component)
|
|
17
|
+
- data model
|
|
18
|
+
- API contract (references INT-FR-*)
|
|
19
|
+
- state machine
|
|
20
|
+
- integration section (cross-component flow)
|
|
21
|
+
│
|
|
22
|
+
▼
|
|
23
|
+
SDD: Task Decomposition (units with DAG, including cross-component edges)
|
|
24
|
+
│
|
|
25
|
+
▼
|
|
26
|
+
TDD: Test Plan (per scenario, written before implementation)
|
|
27
|
+
- unit / integration / e2e / cross-stack layer
|
|
28
|
+
│
|
|
29
|
+
▼
|
|
30
|
+
INT: Contract plan (which contracts change, version impact)
|
|
31
|
+
│
|
|
32
|
+
▼
|
|
33
|
+
Gate: Human review → approved or revise
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## SDD — Design Document (multi-component aware)
|
|
37
|
+
|
|
38
|
+
A multi-component design doc is organized by **component sections** plus an **integration section**.
|
|
39
|
+
|
|
40
|
+
```markdown
|
|
41
|
+
## Design — CHG-{{id}}
|
|
42
|
+
|
|
43
|
+
**Affects:** [{{components}}]
|
|
44
|
+
**Contracts touched:** {{list or "none"}}
|
|
45
|
+
|
|
46
|
+
### Component: backend (BE-FR-*)
|
|
47
|
+
- Architecture: {{serverless / container / ...}}
|
|
48
|
+
- Data model: {{tables / collections}}
|
|
49
|
+
- API surface: {{references INT-FR-* contract}}
|
|
50
|
+
- State machine: {{...}}
|
|
51
|
+
|
|
52
|
+
### Component: web (WEB-FR-*)
|
|
53
|
+
- Architecture: {{SPA / SSR}}
|
|
54
|
+
- Routes: {{...}}
|
|
55
|
+
- Data flow: {{uses aidlc/packages/shared generated from INT-FR-001}}
|
|
56
|
+
|
|
57
|
+
### Component: native (NATIVE-FR-*)
|
|
58
|
+
- Architecture: {{native architecture}}
|
|
59
|
+
- Data flow: {{uses aidlc/packages/shared generated from INT-FR-*}}
|
|
60
|
+
|
|
61
|
+
### Component: desktop (DESKTOP-FR-*)
|
|
62
|
+
- Architecture: {{desktop architecture}}
|
|
63
|
+
- Data flow: {{uses aidlc/packages/shared generated from INT-FR-*}}
|
|
64
|
+
|
|
65
|
+
### Component: wxa (WXA-FR-*)
|
|
66
|
+
- Architecture: {{WeChat Mini Program}}
|
|
67
|
+
- Data flow: {{uses aidlc/packages/shared generated from INT-FR-*}}
|
|
68
|
+
|
|
69
|
+
### Component: mya (MYA-FR-*)
|
|
70
|
+
- Architecture: {{Mini Program}}
|
|
71
|
+
- Data flow: {{uses aidlc/packages/shared generated from INT-FR-*}}
|
|
72
|
+
|
|
73
|
+
### Component: tta (TTA-FR-*)
|
|
74
|
+
- Architecture: {{TikTok Mini Program}}
|
|
75
|
+
- Data flow: {{uses aidlc/packages/shared generated from INT-FR-*}}
|
|
76
|
+
|
|
77
|
+
### Integration
|
|
78
|
+
- Flow: {{web → backend → DB; or app → backend → event → ...}}
|
|
79
|
+
- Contract refs: INT-FR-001, INT-FR-002
|
|
80
|
+
- Failure modes: {{timeout, retry, fallback}}
|
|
81
|
+
- Backward compat: {{additive / breaking → migration}}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Data Model
|
|
85
|
+
|
|
86
|
+
| Field | Type | Constraints |
|
|
87
|
+
|-------|------|-------------|
|
|
88
|
+
| id | UUID | PK |
|
|
89
|
+
| email | string | UNIQUE, NOT NULL |
|
|
90
|
+
| password_hash | string | NOT NULL |
|
|
91
|
+
|
|
92
|
+
### API Contract
|
|
93
|
+
|
|
94
|
+
| Method | Path | INT FR | Provider | Consumer |
|
|
95
|
+
|--------|------|--------|----------|----------|
|
|
96
|
+
| POST | /auth/login | INT-FR-001 | BE-FR-001 | WEB-FR-001, NATIVE-FR-001, DESKTOP-FR-001, WXA-FR-001, MYA-FR-001, TTA-FR-001 |
|
|
97
|
+
|
|
98
|
+
### State Machine
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
ANONYMOUS → LOGGED_IN → SESSION_EXPIRED
|
|
102
|
+
↓
|
|
103
|
+
LOGGED_OUT
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## SDD — Task Decomposition with DAG (multi-component)
|
|
107
|
+
|
|
108
|
+
Tasks MUST include cross-component edges. A task that produces or consumes a contract depends on the corresponding `INT-FR-*` task.
|
|
109
|
+
|
|
110
|
+
```mermaid
|
|
111
|
+
graph TD
|
|
112
|
+
INT1[INT-FR-001: define /auth/login contract]
|
|
113
|
+
BE1[BE-FR-001 unit-1: DB schema + models]
|
|
114
|
+
BE2[BE-FR-001 unit-2: login endpoint]
|
|
115
|
+
WEB1[WEB-FR-001 unit-1: login form + API client]
|
|
116
|
+
WEB2[WEB-FR-001 unit-2: token storage + redirect]
|
|
117
|
+
CS1[INT-FR-001 cross-stack: e2e login flow]
|
|
118
|
+
|
|
119
|
+
INT1 --> BE2
|
|
120
|
+
INT1 --> WEB1
|
|
121
|
+
BE1 --> BE2
|
|
122
|
+
BE2 --> CS1
|
|
123
|
+
WEB1 --> CS1
|
|
124
|
+
WEB2 --> CS1
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
```yaml
|
|
128
|
+
units:
|
|
129
|
+
- id: int-contract-1
|
|
130
|
+
fr: INT-FR-001
|
|
131
|
+
affects: [contracts]
|
|
132
|
+
depends_on: []
|
|
133
|
+
deliverables: [aidlc/contracts/api/auth.yaml]
|
|
134
|
+
- id: be-unit-1
|
|
135
|
+
fr: BE-FR-001
|
|
136
|
+
affects: [backend]
|
|
137
|
+
depends_on: []
|
|
138
|
+
scenarios: []
|
|
139
|
+
- id: be-unit-2
|
|
140
|
+
fr: BE-FR-001
|
|
141
|
+
affects: [backend]
|
|
142
|
+
depends_on: [int-contract-1, be-unit-1]
|
|
143
|
+
scenarios: ["BE-FR-001 @positive", "BE-FR-001 @negative"]
|
|
144
|
+
- id: web-unit-1
|
|
145
|
+
fr: WEB-FR-001
|
|
146
|
+
affects: [web]
|
|
147
|
+
depends_on: [int-contract-1]
|
|
148
|
+
scenarios: ["WEB-FR-001 @positive", "WEB-FR-001 @negative"]
|
|
149
|
+
- id: cross-stack-1
|
|
150
|
+
fr: INT-FR-001
|
|
151
|
+
affects: [web, backend]
|
|
152
|
+
depends_on: [be-unit-2, web-unit-1]
|
|
153
|
+
layer: cross-stack
|
|
154
|
+
scenarios: ["INT-FR-001 @positive", "INT-FR-001 @negative", "INT-FR-001 @edge"]
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## TDD — Test Plan (per scenario, per layer)
|
|
158
|
+
|
|
159
|
+
Each scenario gets a test plan that names the **layer** it runs at.
|
|
160
|
+
|
|
161
|
+
```markdown
|
|
162
|
+
## BE-FR-001 @positive: Login API success
|
|
163
|
+
Layer: integration
|
|
164
|
+
Test cases:
|
|
165
|
+
1. test_login_valid_credentials_returns_jwt
|
|
166
|
+
2. test_login_sets_expiry_3600
|
|
167
|
+
|
|
168
|
+
## WEB-FR-001 @positive: Login form happy path
|
|
169
|
+
Layer: e2e
|
|
170
|
+
Test cases:
|
|
171
|
+
1. test_login_form_submits_and_redirects
|
|
172
|
+
|
|
173
|
+
## INT-FR-001 @positive: Full web→backend login flow
|
|
174
|
+
Layer: cross-stack
|
|
175
|
+
Test cases:
|
|
176
|
+
1. test_web_login_e2e_against_preview_url
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## INT — Contract Plan
|
|
180
|
+
|
|
181
|
+
For each contract change, list:
|
|
182
|
+
- Old version, new version
|
|
183
|
+
- Breaking? (yes / no) → if yes, plan migration in `aidlc/contracts/CHANGELOG.md`
|
|
184
|
+
- Consumers affected (which components will pull the new shared types)
|
|
185
|
+
- Backward-compat strategy (additive vs. deprecate-then-remove)
|
|
186
|
+
|
|
187
|
+
## Artifacts
|
|
188
|
+
|
|
189
|
+
| Artifact | Location | Purpose |
|
|
190
|
+
|----------|----------|---------|
|
|
191
|
+
| Design doc | `aidlc/openspec/changes/{id}/design.md` | Per-component + integration |
|
|
192
|
+
| Task list | `aidlc/openspec/changes/{id}/task-list.md` | DAG with cross-component edges |
|
|
193
|
+
| Test plan | Embedded in task-list or separate | Per-scenario, per-layer |
|
|
194
|
+
| Contract plan | `aidlc/openspec/changes/{id}/contract-diff.md` placeholder | Filled in Verify |
|
|
195
|
+
|
|
196
|
+
## Gate
|
|
197
|
+
|
|
198
|
+
**Before advancing to Verify phase:**
|
|
199
|
+
- [ ] Design doc has per-component sections + integration section
|
|
200
|
+
- [ ] Tasks decomposed with explicit dependency DAG (including cross-component edges)
|
|
201
|
+
- [ ] `INT-FR-*` tasks precede the consuming per-component tasks
|
|
202
|
+
- [ ] Test plans name the layer (`unit` / `integration` / `e2e` / `cross-stack`) per scenario
|
|
203
|
+
- [ ] Contract plan identifies breaking vs. additive
|
|
204
|
+
- [ ] Human reviewed and approved
|
|
205
|
+
|
|
206
|
+
## Design System Integration
|
|
207
|
+
|
|
208
|
+
For UI-intensive components (web/native/desktop/wxa/mya/tta), the design doc MUST include:
|
|
209
|
+
|
|
210
|
+
### Design Tokens Output
|
|
211
|
+
```markdown
|
|
212
|
+
### Design Tokens (WEB-FR-001)
|
|
213
|
+
| Token | Value |
|
|
214
|
+
|-------|-------|
|
|
215
|
+
| --color-primary | #3B82F6 |
|
|
216
|
+
| --space-4 | 16px |
|
|
217
|
+
| --radius-md | 6px |
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Component Hierarchy
|
|
221
|
+
```markdown
|
|
222
|
+
### Component Hierarchy (WEB-FR-001)
|
|
223
|
+
- Atom: Button, Input, Badge, Icon
|
|
224
|
+
- Molecule: SearchBar, FormField, CardHeader
|
|
225
|
+
- Organism: DataTable, Header, FilterPanel
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Platform UI Spec Reference
|
|
229
|
+
```markdown
|
|
230
|
+
### Platform Compliance (WEB-FR-001)
|
|
231
|
+
- Web: Responsive (sm/md/lg/xl) per platform_ui/web.md
|
|
232
|
+
- Native: SafeArea per platform_ui/native.md
|
|
233
|
+
- WXA: Vant Weapp per platform_ui/wxa.md
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Accessibility Checklist
|
|
237
|
+
```markdown
|
|
238
|
+
### Accessibility (WEB-FR-001)
|
|
239
|
+
- [ ] Focus ring visible on interactive elements
|
|
240
|
+
- [ ] Icon buttons have aria-label
|
|
241
|
+
- [ ] Color contrast ≥ 4.5:1 (AA)
|
|
242
|
+
- [ ] Keyboard navigation functional
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## Design System Reference Files
|
|
246
|
+
|
|
247
|
+
| 规范 | 路径 |
|
|
248
|
+
|------|------|
|
|
249
|
+
| Design Tokens | `phases/plan/design_system/design_tokens.md` |
|
|
250
|
+
| Atomic Design | `phases/plan/design_system/atomic_design.md` |
|
|
251
|
+
| Component Spec | `phases/plan/design_system/component_spec.md` |
|
|
252
|
+
| Accessibility | `phases/plan/design_system/accessibility.md` |
|
|
253
|
+
| Theme System | `phases/plan/design_system/theme_system.md` |
|
|
254
|
+
| Iconography | `phases/plan/design_system/iconography.md` |
|
|
255
|
+
| Web UI | `phases/plan/design_system/platform_ui/web.md` |
|
|
256
|
+
| Native UI | `phases/plan/design_system/platform_ui/native.md` |
|
|
257
|
+
| Desktop UI | `phases/plan/design_system/platform_ui/desktop.md` |
|
|
258
|
+
| WXA UI | `phases/plan/design_system/platform_ui/wxa.md` |
|
|
259
|
+
| MYA UI | `phases/plan/design_system/platform_ui/mya.md` |
|
|
260
|
+
| TTA UI | `phases/plan/design_system/platform_ui/tta.md` |
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Plan Phase Agent Prompt
|
|
2
|
+
|
|
3
|
+
你是一个 AI-DLC Plan Phase Agent。
|
|
4
|
+
由 Master Agent 委派处理方案设计。
|
|
5
|
+
|
|
6
|
+
## 输入
|
|
7
|
+
- `{spec_dir}/spec-delta.md`
|
|
8
|
+
- BDD feature 文件
|
|
9
|
+
|
|
10
|
+
## 路径约定
|
|
11
|
+
|
|
12
|
+
所有产物路径遵循 `aidlc/CONFIG.md` 中的变量定义。关键路径:
|
|
13
|
+
- Design Doc: `{spec_dir}/design.md`
|
|
14
|
+
- Task List: `{spec_dir}/task-list.md`
|
|
15
|
+
- Contract Diff: `{spec_dir}/contract-diff.md`
|
|
16
|
+
|
|
17
|
+
## 任务
|
|
18
|
+
|
|
19
|
+
1. **SDD: Design Doc**
|
|
20
|
+
- 在 `{spec_dir}/design.md` 输出
|
|
21
|
+
- 包含:架构图(Mermaid)、数据模型、API 表、状态机
|
|
22
|
+
- 每组件独立 section + 集成 section
|
|
23
|
+
|
|
24
|
+
2. **SDD: Task Decomposition**
|
|
25
|
+
- 在 `{spec_dir}/task-list.md` 输出
|
|
26
|
+
- YAML 格式,unit 带 `depends_on` DAG
|
|
27
|
+
- 跨组件 task 显示声明 `depends_on` 关系
|
|
28
|
+
|
|
29
|
+
3. **TDD: Test Plan**
|
|
30
|
+
- 每个 BDD scenario 对应最少一个测试 case
|
|
31
|
+
- 标注 layer: unit / integration / e2e / cross-stack / contract
|
|
32
|
+
|
|
33
|
+
4. **Contract Plan**
|
|
34
|
+
- 标注版本影响:additive / breaking
|
|
35
|
+
- 如需 breaking change 标记为 human-approval 阻塞
|
|
36
|
+
|
|
37
|
+
## 输出产物
|
|
38
|
+
- `{spec_dir}/design.md`
|
|
39
|
+
- `{spec_dir}/task-list.md`
|
|
40
|
+
- `{spec_dir}/contract-diff.md`(占位)
|
|
41
|
+
|
|
42
|
+
## 约束
|
|
43
|
+
- 开始前先调用 `TodoClear` 清除可能遗留的 todos,确保从空白计划开始
|
|
44
|
+
- 遵守 `rules.md` 中的 PLN-001 到 PLN-009
|
|
45
|
+
- 遵守 STK-001, STK-002(affects 声明 + cross-component 依赖)
|
|
46
|
+
- 遵守 Design System 规范 (PLN-005 ~ PLN-009)
|
|
47
|
+
- 完成后将产物返回给 Master Agent,由 Master Agent 执行 Human Gate 审查(AskUser)
|
|
48
|
+
|
|
49
|
+
## Design System 约束(前端组件必读)
|
|
50
|
+
|
|
51
|
+
### UI 组件必须引用以下规范:
|
|
52
|
+
|
|
53
|
+
| 平台 | 必读规范 |
|
|
54
|
+
|------|----------|
|
|
55
|
+
| Web | `phases/plan/design_system/design_tokens.md` + `platform_ui/web.md` |
|
|
56
|
+
| Native | `phases/plan/design_system/design_tokens.md` + `platform_ui/native.md` |
|
|
57
|
+
| Desktop | `phases/plan/design_system/design_tokens.md` + `platform_ui/desktop.md` |
|
|
58
|
+
| WXA | `phases/plan/design_system/design_tokens.md` + `platform_ui/wxa.md` |
|
|
59
|
+
| MYA | `phases/plan/design_system/design_tokens.md` + `platform_ui/mya.md` |
|
|
60
|
+
| TTA | `phases/plan/design_system/design_tokens.md` + `platform_ui/tta.md` |
|
|
61
|
+
|
|
62
|
+
### 所有 UI 组件必须:
|
|
63
|
+
1. **使用 Design Tokens**: 所有颜色/间距/字体/阴影必须使用 CSS 变量 (`var(--color-*)`)
|
|
64
|
+
2. **符合 Atomic Design**: 组件按 Atom/Molecule/Organism/Template/Page 分层
|
|
65
|
+
3. **符合 Component Spec**: 每个组件必须有 Props/States/Accessibility 说明
|
|
66
|
+
4. **满足 Accessibility**: WCAG 2.1 AA (对比度 4.5:1, focus ring, ARIA)
|
|
67
|
+
5. **支持 Theme**: 深浅主题通过 CSS 变量自动切换
|
|
68
|
+
|
|
69
|
+
## 完成报告
|
|
70
|
+
|
|
71
|
+
完成后返回以下信息给 Master Agent(用于写入 Registry):
|
|
72
|
+
- `phase: "plan"`
|
|
73
|
+
- `status: "completed"`
|
|
74
|
+
- `artifacts: [生成的文件路径列表]`
|
|
75
|
+
- `gatePassed: true/false`
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Plan Rules (PLN-*)
|
|
2
|
+
|
|
3
|
+
## PLN-001: Design Documentation
|
|
4
|
+
**Severity:** MUST
|
|
5
|
+
**Description:** Each feature MUST have a design document covering architecture, data model, API contracts, and state machine. For multi-component features, MUST have per-component sections and an integration section.
|
|
6
|
+
**Valid:** `aidlc/openspec/changes/{id}/design.md` with `## Component: backend`, `## Component: web`, `## Integration`.
|
|
7
|
+
**Invalid:** A single flat architecture section with no per-component concerns.
|
|
8
|
+
|
|
9
|
+
## PLN-002: Dependency DAG
|
|
10
|
+
**Severity:** MUST
|
|
11
|
+
**Description:** Units MUST be decomposed with explicit dependency DAG including cross-component edges. A task producing/consuming a contract MUST depend on the corresponding `INT-FR-*` task.
|
|
12
|
+
**Valid:** `depends_on: [int-contract-1, be-unit-1]` for a web task consuming the contract.
|
|
13
|
+
**Invalid:** Per-component task lists with no cross-component edges.
|
|
14
|
+
|
|
15
|
+
## PLN-003: Test Plan Before Implementation
|
|
16
|
+
**Severity:** MUST
|
|
17
|
+
**Description:** Test plans for each scenario MUST be written before implementation and MUST name the test layer (`unit`, `integration`, `e2e`, `cross-stack`, `contract`).
|
|
18
|
+
**Valid:** `BE-FR-001 @positive → layer: integration → test_login_valid_credentials`
|
|
19
|
+
**Invalid:** A test plan with no layer designation.
|
|
20
|
+
|
|
21
|
+
## PLN-004: Contract Plan
|
|
22
|
+
**Severity:** MUST
|
|
23
|
+
**Description:** For each contract change, the design doc MUST identify version impact (additive vs. breaking), consumers affected, and backward-compat strategy.
|
|
24
|
+
**Valid:** `INT-FR-001 change: additive, MINOR bump; no consumer migration needed`
|
|
25
|
+
**Invalid:** Contract change with no version impact noted.
|
|
26
|
+
|
|
27
|
+
## PLN-005: Design Tokens Usage
|
|
28
|
+
**Severity:** MUST
|
|
29
|
+
**Description:** All UI components MUST use Design Tokens (CSS variables) for colors, spacing, typography, and shadows. Hardcoded values are NOT allowed.
|
|
30
|
+
**Valid:** `color: var(--color-primary); padding: var(--space-4);`
|
|
31
|
+
**Invalid:** `color: #3B82F6; padding: 16px;`
|
|
32
|
+
**Reference:** `phases/plan/design_system/design_tokens.md`
|
|
33
|
+
|
|
34
|
+
## PLN-006: Design System Compliance
|
|
35
|
+
**Severity:** MUST
|
|
36
|
+
**Description:** All UI components MUST follow the Design System specification including Atomic Design分层, Component Spec模板, and Platform UI规范.
|
|
37
|
+
**Valid:** Components documented per `component_spec.md` template with Props, States, Accessibility
|
|
38
|
+
**Invalid:** Component without specification or deviating from atomic design hierarchy
|
|
39
|
+
**Reference:** `phases/plan/design_system/atomic_design.md`, `phases/plan/design_system/component_spec.md`
|
|
40
|
+
|
|
41
|
+
## PLN-007: Accessibility Requirements
|
|
42
|
+
**Severity:** MUST
|
|
43
|
+
**Description:** All UI components MUST meet WCAG 2.1 AA standards including focus management, ARIA attributes, and color contrast ratios.
|
|
44
|
+
**Valid:** Focus ring visible, ARIA labels on icon buttons, contrast ratio ≥ 4.5:1
|
|
45
|
+
**Invalid:** Missing focus ring, no ARIA label on icon-only button, contrast ratio < 4.5:1
|
|
46
|
+
**Reference:** `phases/plan/design_system/accessibility.md`
|
|
47
|
+
|
|
48
|
+
## PLN-008: Platform-Specific UI
|
|
49
|
+
**Severity:** MUST
|
|
50
|
+
**Description:** For each affected platform (web/native/desktop/wxa/mya/tta), the design doc MUST reference the corresponding platform UI spec.
|
|
51
|
+
**Valid:** `WEB-FR-001 uses responsive breakpoints per platform_ui/web.md`
|
|
52
|
+
**Invalid:** Platform UI designed without referencing platform-specific规范
|
|
53
|
+
**Reference:** `phases/plan/design_system/platform_ui/{platform}.md`
|
|
54
|
+
|
|
55
|
+
## PLN-009: Theme System Support
|
|
56
|
+
**Severity:** SHOULD
|
|
57
|
+
**Description:** All UI components SHOULD support light/dark theme switching via CSS variables without component code changes.
|
|
58
|
+
**Valid:** Components styled with CSS variables, theme切换无闪烁
|
|
59
|
+
**Invalid:** Hardcoded colors that don't adapt to theme
|
|
60
|
+
**Reference:** `phases/plan/design_system/theme_system.md`
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-dlc-understand
|
|
3
|
+
description: "Understand Phase: Intent → Spec Delta → BDD Feature Files"
|
|
4
|
+
entry_point: phases/understand/entry.md
|
|
5
|
+
triggers:
|
|
6
|
+
- understand
|
|
7
|
+
- spec-delta
|
|
8
|
+
- EARS
|
|
9
|
+
- feature file
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Understand Phase (理解)
|
|
13
|
+
|
|
14
|
+
Transform business intent into formal specification and behavior scenarios.
|
|
15
|
+
|
|
16
|
+
## Lifecycle
|
|
17
|
+
|
|
18
|
+
See `lifecycle.md` for the full phase flow.
|
|
19
|
+
See `rules.md` for enforceable rules (UND-001 to UND-006).
|
|
20
|
+
See `prompt.md` for the sub-agent delegation prompt template.
|
|
21
|
+
|
|
22
|
+
## 当被委派时
|
|
23
|
+
|
|
24
|
+
0. 先调用 `TodoClear` 清除上阶段遗留的 todos,确保从空白计划开始
|
|
25
|
+
1. 读取 intent 输入
|
|
26
|
+
2. 按 SDD 方法生成 spec-delta(EARS 格式)
|
|
27
|
+
3. 为每个 FR 写 BDD feature 文件(≥3 scenarios: positive, negative, edge)
|
|
28
|
+
4. 输出到 `{spec_dir}/`(路径变量见 `aidlc/CONFIG.md`)
|
|
29
|
+
|
|
30
|
+
## 产出
|
|
31
|
+
|
|
32
|
+
- `aidlc/requirements.md`
|
|
33
|
+
- `{spec_dir}/spec-delta.md`
|
|
34
|
+
- `{features_dir}/{domain}/{feature}.feature`
|
|
35
|
+
- `{cross_features_dir}/{domain}/{feature}.feature`(跨组件时)
|
|
36
|
+
- `{contracts_api_dir}/{name}.yaml` 或 `{contracts_events_dir}/{name}.yaml`(跨组件时)
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# AI-DLC Phase 1: Understand (理解)
|
|
2
|
+
|
|
3
|
+
Transform business intent into formal specification and behavior scenarios, scoped to the right FR namespace.
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
|
|
7
|
+
Convert a business need into unambiguous, verifiable requirements before any design or code work begins. For multi-component features, capture the **cross-component boundary** in addition to per-component behavior.
|
|
8
|
+
|
|
9
|
+
## Flow
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
Intent (business need / user story)
|
|
13
|
+
│
|
|
14
|
+
▼
|
|
15
|
+
Identify scope: which components does this touch?
|
|
16
|
+
│
|
|
17
|
+
▼
|
|
18
|
+
SDD: Proposal (why, what, impact, affects: [native|desktop|web|backend|wxa|mya|tta|contracts])
|
|
19
|
+
│
|
|
20
|
+
▼
|
|
21
|
+
SDD: Spec Delta (EARS format — ADDED/MODIFIED/REMOVED, FR namespaces)
|
|
22
|
+
│
|
|
23
|
+
▼
|
|
24
|
+
BDD: Feature Files
|
|
25
|
+
- features/{component}/{domain}/{feature}.feature (per-component)
|
|
26
|
+
- aidlc/features/cross-stack/{domain}/{feature}.feature (full flow, if applies)
|
|
27
|
+
│
|
|
28
|
+
▼
|
|
29
|
+
Gate: Human review → approved or revise
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Scope Identification
|
|
33
|
+
|
|
34
|
+
Before writing the spec, declare which components the feature affects. This determines the FR namespaces and which lifecycle paths run.
|
|
35
|
+
|
|
36
|
+
| Affects | Example | FRs |
|
|
37
|
+
|---------|---------|-----|
|
|
38
|
+
| `[backend]` only | Internal API | `BE-FR-NNN` |
|
|
39
|
+
| `[web, backend]` | Login UI + API | `WEB-FR-NNN`, `BE-FR-NNN`, `INT-FR-NNN` |
|
|
40
|
+
| `[native, backend]` | Native login | `NATIVE-FR-NNN`, `BE-FR-NNN`, `INT-FR-NNN` |
|
|
41
|
+
| `[desktop, backend]` | Desktop login | `DESKTOP-FR-NNN`, `BE-FR-NNN`, `INT-FR-NNN` |
|
|
42
|
+
| `[wxa, backend]` | Mini-program login | `WXA-FR-NNN`, `BE-FR-NNN`, `INT-FR-NNN` |
|
|
43
|
+
| `[mya, backend]` | Mini-program login | `MYA-FR-NNN`, `BE-FR-NNN`, `INT-FR-NNN` |
|
|
44
|
+
| `[tta, backend]` | Mini-program login | `TTA-FR-NNN`, `BE-FR-NNN`, `INT-FR-NNN` |
|
|
45
|
+
| `[web, native, desktop, wxa, mya, tta, backend]` | Full feature | `WEB-FR-NNN`, `NATIVE-FR-NNN`, `DESKTOP-FR-NNN`, `WXA-FR-NNN`, `MYA-FR-NNN`, `TTA-FR-NNN`, `BE-FR-NNN`, `INT-FR-NNN` |
|
|
46
|
+
| `[contracts]` | Schema-only change | `INT-FR-NNN` only |
|
|
47
|
+
|
|
48
|
+
`affects: [contracts]` is reserved for **pure contract changes** (e.g. add a new field shared by all components). It still requires Plan + Verify.
|
|
49
|
+
|
|
50
|
+
## SDD — Spec-Driven Development
|
|
51
|
+
|
|
52
|
+
### Intent Capture
|
|
53
|
+
|
|
54
|
+
```markdown
|
|
55
|
+
## Intent
|
|
56
|
+
|
|
57
|
+
**Title:** {{title}}
|
|
58
|
+
**Affects:** [{{components}}]
|
|
59
|
+
**Why:** {{why}}
|
|
60
|
+
**What:** {{what}}
|
|
61
|
+
**Success:** {{success_criteria}}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Spec Delta (EARS) with Namespace
|
|
65
|
+
|
|
66
|
+
```markdown
|
|
67
|
+
## Change: CHG-{{id}} — {{title}}
|
|
68
|
+
|
|
69
|
+
**Affects:** [{{components}}]
|
|
70
|
+
**Contracts touched:** {{list or "none"}}
|
|
71
|
+
|
|
72
|
+
## ADDED Requirements
|
|
73
|
+
|
|
74
|
+
### INT-FR-{{nnn}}: {{contract_title}}
|
|
75
|
+
(only if affects contracts or ≥2 components)
|
|
76
|
+
|
|
77
|
+
**Description (Event-Driven):**
|
|
78
|
+
When a {{event}}, the system SHALL {{behavior}} on the contract boundary.
|
|
79
|
+
|
|
80
|
+
### BE-FR-{{nnn}}: {{backend_title}}
|
|
81
|
+
**Description (Event-Driven):**
|
|
82
|
+
When {{event}}, the backend SHALL {{behavior}}.
|
|
83
|
+
|
|
84
|
+
### WEB-FR-{{nnn}}: {{web_title}}
|
|
85
|
+
**Description (Event-Driven):**
|
|
86
|
+
When {{event}}, the web client SHALL {{behavior}}.
|
|
87
|
+
|
|
88
|
+
### NATIVE-FR-{{nnn}}: {{native_title}}
|
|
89
|
+
**Description (Event-Driven):**
|
|
90
|
+
When {{event}}, the native client SHALL {{behavior}}.
|
|
91
|
+
|
|
92
|
+
### DESKTOP-FR-{{nnn}}: {{desktop_title}}
|
|
93
|
+
**Description (Event-Driven):**
|
|
94
|
+
When {{event}}, the desktop client SHALL {{behavior}}.
|
|
95
|
+
|
|
96
|
+
### WXA-FR-{{nnn}}: {{wxa_title}}
|
|
97
|
+
**Description (Event-Driven):**
|
|
98
|
+
When {{event}}, the WeChat Mini Program SHALL {{behavior}}.
|
|
99
|
+
|
|
100
|
+
### MYA-FR-{{nnn}}: {{mya_title}}
|
|
101
|
+
**Description (Event-Driven):**
|
|
102
|
+
When {{event}}, the Mini Program SHALL {{behavior}}.
|
|
103
|
+
|
|
104
|
+
### TTA-FR-{{nnn}}: {{tta_title}}
|
|
105
|
+
**Description (Event-Driven):**
|
|
106
|
+
When {{event}}, the TikTok Mini Program SHALL {{behavior}}.
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### EARS Patterns
|
|
110
|
+
|
|
111
|
+
| Pattern | Syntax | When to Use |
|
|
112
|
+
|---------|--------|-------------|
|
|
113
|
+
| Ubiquitous | `The system SHALL ...` | Always-active rules |
|
|
114
|
+
| Event-Driven | `When {event}, the system SHALL ...` | Trigger-based behavior |
|
|
115
|
+
| State-Driven | `While {state}, the system SHALL ...` | Active state conditions |
|
|
116
|
+
| Unwanted | `If {condition}, the system SHALL ...` | Error handling |
|
|
117
|
+
| Optional | `Where {feature} enabled, the system SHALL ...` | Feature flags |
|
|
118
|
+
|
|
119
|
+
## BDD — Behavior-Driven Development
|
|
120
|
+
|
|
121
|
+
### Per-Component Feature Files
|
|
122
|
+
|
|
123
|
+
```gherkin
|
|
124
|
+
@WEB-FR-001
|
|
125
|
+
Feature: Web Login UI
|
|
126
|
+
|
|
127
|
+
@WEB-FR-001 @positive
|
|
128
|
+
Scenario: User logs in successfully
|
|
129
|
+
Given the web app is on the login page
|
|
130
|
+
When the user submits valid credentials
|
|
131
|
+
Then the user is redirected to dashboard
|
|
132
|
+
And the user receives a JWT in storage
|
|
133
|
+
|
|
134
|
+
@WEB-FR-001 @negative
|
|
135
|
+
Scenario: Invalid credentials show error
|
|
136
|
+
...
|
|
137
|
+
|
|
138
|
+
@WEB-FR-001 @edge
|
|
139
|
+
Scenario: Empty fields show validation
|
|
140
|
+
...
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Cross-Stack Feature File (mandatory for `affects ≥ 2 components`)
|
|
144
|
+
|
|
145
|
+
```gherkin
|
|
146
|
+
@INT-FR-001
|
|
147
|
+
Feature: Cross-stack login flow
|
|
148
|
+
|
|
149
|
+
@INT-FR-001 @positive
|
|
150
|
+
Scenario: Web login reaches backend and stores token
|
|
151
|
+
Given the web app is on the login page
|
|
152
|
+
When the user submits valid credentials
|
|
153
|
+
Then the backend POST /auth/login returns 200 with JWT
|
|
154
|
+
And the web app stores the token
|
|
155
|
+
And the user is redirected to dashboard
|
|
156
|
+
|
|
157
|
+
@INT-FR-001 @negative
|
|
158
|
+
Scenario: Backend rejects invalid credentials with 401
|
|
159
|
+
...
|
|
160
|
+
|
|
161
|
+
@INT-FR-001 @edge
|
|
162
|
+
Scenario: Backend timeout surfaces a user-friendly error
|
|
163
|
+
...
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Artifacts
|
|
167
|
+
|
|
168
|
+
| Artifact | Location | Purpose |
|
|
169
|
+
|----------|----------|---------|
|
|
170
|
+
| Intent | `aidlc/requirements.md` | Business need + `affects` |
|
|
171
|
+
| Spec delta | `aidlc/openspec/changes/{id}/spec-delta.md` | EARS, FR namespaces, `affects` |
|
|
172
|
+
| Per-component BDD | `apps/{component}/features/{domain}/{feature}.feature` | Component behavior |
|
|
173
|
+
| Cross-stack BDD | `aidlc/features/cross-stack/{domain}/{feature}.feature` | End-to-end flow |
|
|
174
|
+
| Contract spec | `aidlc/contracts/{api,events}/{name}.{yaml,graphql}` | INT-FR-NNN source of truth |
|
|
175
|
+
|
|
176
|
+
## Gate
|
|
177
|
+
|
|
178
|
+
**Before advancing to Plan phase:**
|
|
179
|
+
- [ ] `affects: [...]` declared in spec-delta
|
|
180
|
+
- [ ] Spec delta uses EARS format
|
|
181
|
+
- [ ] Per-component FRs: each tagged `@FR-{PREFIX}-NNN` (e.g. `@NATIVE-`, `@DESKTOP-`, `@WEB-`, `@BE-`, `@WXA-`, `@MYA-`, `@TTA-`), ≥3 scenarios (positive/negative/edge)
|
|
182
|
+
- [ ] If `affects` includes ≥2 components: at least one `INT-FR-NNN` and a `aidlc/features/cross-stack/*.feature` with ≥3 scenarios
|
|
183
|
+
- [ ] If `affects` includes contracts: contract file present in `aidlc/contracts/`
|
|
184
|
+
- [ ] Human reviewed and approved
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Understand Phase Agent Prompt
|
|
2
|
+
|
|
3
|
+
你是一个 AI-DLC Understand Phase Agent。
|
|
4
|
+
由 Master Agent 委派处理需求分析。
|
|
5
|
+
|
|
6
|
+
## 输入
|
|
7
|
+
- Intent 描述(来自用户 / Master)
|
|
8
|
+
- `affects: [component list]` 声明
|
|
9
|
+
|
|
10
|
+
## 路径约定
|
|
11
|
+
|
|
12
|
+
所有产物路径遵循 `aidlc/CONFIG.md` 中的变量定义。关键路径:
|
|
13
|
+
- Spec Delta: `{spec_dir}/spec-delta.md`
|
|
14
|
+
- 组件 Feature 文件: `{features_dir}/{name}.feature`
|
|
15
|
+
- 跨栈 Feature 文件: `{cross_features_dir}/{name}.feature`
|
|
16
|
+
- 合约文件: `{contracts_api_dir}/{name}.yaml` 或 `{contracts_events_dir}/{name}.yaml`
|
|
17
|
+
|
|
18
|
+
## 任务
|
|
19
|
+
|
|
20
|
+
1. **SDD: Intent Capture**
|
|
21
|
+
- 在 `aidlc/requirements.md` 记录 Why / What / Success Criteria / Scope
|
|
22
|
+
- 声明 `affects: [native|desktop|web|backend|wxa|mya|tta|contracts]`
|
|
23
|
+
|
|
24
|
+
2. **SDD: Spec Delta (EARS)**
|
|
25
|
+
- 在 `{spec_dir}/spec-delta.md` 输出
|
|
26
|
+
- 使用 EARS 格式:Ubiquitous / Event-Driven / State-Driven / Unwanted / Optional
|
|
27
|
+
- FR 必须使用命名空间前缀(BE-FR-001, WEB-FR-001 等)
|
|
28
|
+
|
|
29
|
+
3. **BDD: Feature Files**
|
|
30
|
+
- 每个 FR ≥3 个 scenario(positive / negative / edge)
|
|
31
|
+
- Per-component: `{features_dir}/{domain}/{feature}.feature`
|
|
32
|
+
- Cross-stack: `{cross_features_dir}/{domain}/{feature}.feature`
|
|
33
|
+
- Tag 使用 `@FR-PREFIX-NNN`
|
|
34
|
+
|
|
35
|
+
4. **Contract First**(跨组件时)
|
|
36
|
+
- 在 `{contracts_api_dir}/` 或 `{contracts_events_dir}/` 创建合约文件
|
|
37
|
+
- 引用 INT-FR-NNN
|
|
38
|
+
|
|
39
|
+
## 输出产物
|
|
40
|
+
- `aidlc/requirements.md`
|
|
41
|
+
- `{spec_dir}/spec-delta.md`
|
|
42
|
+
- `{features_dir}/{domain}/{feature}.feature`
|
|
43
|
+
- `{cross_features_dir}/{domain}/{feature}.feature`(跨组件时)
|
|
44
|
+
- `{contracts_api_dir}/{name}.yaml` 或 `{contracts_events_dir}/{name}.yaml`(跨组件时)
|
|
45
|
+
|
|
46
|
+
## 约束
|
|
47
|
+
- 开始前先调用 `TodoClear` 清除可能遗留的 todos,确保从空白计划开始
|
|
48
|
+
- 遵守 `rules.md` 中的 UND-001 到 UND-006
|
|
49
|
+
- 遵守 `core/security.md`
|
|
50
|
+
- 完成后将产物返回给 Master Agent,由 Master Agent 执行 Human Gate 审查(AskUser)
|
|
51
|
+
|
|
52
|
+
## 完成报告
|
|
53
|
+
|
|
54
|
+
完成后返回以下信息给 Master Agent(用于写入 Registry):
|
|
55
|
+
- `phase: "understand"`
|
|
56
|
+
- `status: "completed"`
|
|
57
|
+
- `artifacts: [生成的文件路径列表]`
|
|
58
|
+
- `gatePassed: true/false`
|