@scemoon/cdh 1.0.6 → 1.0.7
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/package.json +2 -2
- package/ai-dlc-skill/SKILL.md +0 -77
- package/ai-dlc-skill/agents/deliver-agent.md +0 -24
- package/ai-dlc-skill/agents/master.md +0 -50
- package/ai-dlc-skill/agents/plan-agent.md +0 -23
- package/ai-dlc-skill/agents/understand-agent.md +0 -23
- package/ai-dlc-skill/agents/verify-agent.md +0 -27
- package/ai-dlc-skill/architecture/project-structure.md +0 -78
- package/ai-dlc-skill/brownfield/README.md +0 -30
- package/ai-dlc-skill/brownfield/generate-context.sh +0 -64
- package/ai-dlc-skill/brownfield/scripts/deps.sh +0 -27
- package/ai-dlc-skill/brownfield/scripts/discover.sh +0 -34
- package/ai-dlc-skill/brownfield/scripts/extract-api.sh +0 -45
- package/ai-dlc-skill/components/backend.md +0 -34
- package/ai-dlc-skill/components/desktop.md +0 -30
- package/ai-dlc-skill/components/mya.md +0 -29
- package/ai-dlc-skill/components/native.md +0 -30
- package/ai-dlc-skill/components/tta.md +0 -29
- package/ai-dlc-skill/components/web.md +0 -31
- package/ai-dlc-skill/components/wxa.md +0 -29
- package/ai-dlc-skill/contracts/README.md +0 -25
- package/ai-dlc-skill/core/adaptive-flow.md +0 -36
- package/ai-dlc-skill/core/security.md +0 -29
- package/ai-dlc-skill/cross-tool/cline/export.sh +0 -31
- package/ai-dlc-skill/cross-tool/copilot/export.sh +0 -47
- package/ai-dlc-skill/cross-tool/cursor/export.sh +0 -32
- package/ai-dlc-skill/cross-tool/export.sh +0 -22
- package/ai-dlc-skill/cross-tool/onecode/config.yaml.tpl +0 -17
- package/ai-dlc-skill/cross-tool/onecode/export-skills.sh +0 -35
- package/ai-dlc-skill/cross-tool/onecode/export.sh +0 -54
- package/ai-dlc-skill/phases/deliver/entry.md +0 -26
- package/ai-dlc-skill/phases/deliver/lifecycle.md +0 -185
- package/ai-dlc-skill/phases/deliver/prompt.md +0 -40
- package/ai-dlc-skill/phases/deliver/rules.md +0 -61
- package/ai-dlc-skill/phases/plan/entry.md +0 -25
- package/ai-dlc-skill/phases/plan/lifecycle.md +0 -204
- package/ai-dlc-skill/phases/plan/prompt.md +0 -38
- package/ai-dlc-skill/phases/plan/rules.md +0 -25
- package/ai-dlc-skill/phases/understand/entry.md +0 -26
- package/ai-dlc-skill/phases/understand/lifecycle.md +0 -184
- package/ai-dlc-skill/phases/understand/prompt.md +0 -41
- package/ai-dlc-skill/phases/understand/rules.md +0 -37
- package/ai-dlc-skill/phases/verify/entry.md +0 -26
- package/ai-dlc-skill/phases/verify/lifecycle.md +0 -192
- package/ai-dlc-skill/phases/verify/prompt.md +0 -43
- package/ai-dlc-skill/phases/verify/rules.md +0 -73
- package/ai-dlc-skill/practices/bdd.md +0 -91
- package/ai-dlc-skill/practices/sdd.md +0 -84
- package/ai-dlc-skill/practices/tdd.md +0 -95
- package/ai-dlc-skill/providers/README.md +0 -114
- package/ai-dlc-skill/providers/aliyun/deployment.yaml +0 -66
- package/ai-dlc-skill/providers/aliyun/preview.yaml +0 -84
- package/ai-dlc-skill/providers/aliyun/provider.yaml +0 -160
- package/ai-dlc-skill/providers/tcb/deployment.yaml +0 -69
- package/ai-dlc-skill/providers/tcb/preview.yaml +0 -83
- package/ai-dlc-skill/providers/tcb/provider.yaml +0 -172
- package/ai-dlc-skill/requirements.md +0 -140
- package/ai-dlc-skill/skill.yaml +0 -147
- package/ai-dlc-skill/templates/integration/CHANGELOG.md +0 -41
- package/ai-dlc-skill/templates/integration/asyncapi.yaml +0 -43
- package/ai-dlc-skill/templates/integration/contract-diff.md +0 -63
- package/ai-dlc-skill/templates/integration/contract-spec.md +0 -49
- package/ai-dlc-skill/templates/integration/openapi.yaml +0 -18
- package/ai-dlc-skill/templates/integration/runtime-contract.yaml +0 -36
- package/ai-dlc-skill/templates/plan/design.md +0 -49
- package/ai-dlc-skill/templates/plan/task-list.md +0 -32
- package/ai-dlc-skill/templates/project/README.md +0 -126
- package/ai-dlc-skill/templates/project/template.md +0 -119
- package/ai-dlc-skill/templates/understand/feature.feature +0 -23
- package/ai-dlc-skill/templates/understand/intent.md +0 -29
- package/ai-dlc-skill/templates/understand/spec-delta.md +0 -47
- package/ai-dlc-skill/templates/verify/test-unit.py +0 -27
- package/ai-dlc-skill/walkthrough/collect.sh +0 -50
- package/ai-dlc-skill/walkthrough/template.md +0 -54
- package/ai-dlc-skill/workflows/ai-dlc.yaml +0 -110
- package/ai-dlc-skill/workflows/deployment.yaml +0 -199
- package/cdh/__init__.py +0 -0
- package/cdh/__main__.py +0 -4
- package/cdh/__pycache__/__init__.cpython-314.pyc +0 -0
- package/cdh/__pycache__/cdh_mcp_injector.cpython-314.pyc +0 -0
- package/cdh/__pycache__/cdh_mcp_loader.cpython-314.pyc +0 -0
- package/cdh/__pycache__/cdh_mcp_manager.cpython-314.pyc +0 -0
- package/cdh/__pycache__/cdh_session_aggregator.cpython-314.pyc +0 -0
- package/cdh/__pycache__/cdh_skill_loader.cpython-314.pyc +0 -0
- package/cdh/__pycache__/cdh_skill_manager.cpython-314.pyc +0 -0
- package/cdh/__pycache__/cli.cpython-313.pyc +0 -0
- package/cdh/__pycache__/cli.cpython-314.pyc +0 -0
- package/cdh/__pycache__/scaffold.cpython-314.pyc +0 -0
- package/cdh/cdh_mcp_injector.py +0 -115
- package/cdh/cdh_mcp_loader.py +0 -67
- package/cdh/cdh_mcp_manager.py +0 -73
- package/cdh/cdh_session_aggregator.py +0 -258
- package/cdh/cdh_skill_manager.py +0 -105
- package/cdh/cli.py +0 -807
- package/cdh/scaffold.py +0 -728
- package/onecode/__init__.py +0 -1
- package/onecode/__main__.py +0 -4
- 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__/config_screen.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__/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/agents/__init__.py +0 -29
- 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/types.py +0 -589
- package/onecode/agent/attachments.py +0 -112
- package/onecode/agent/cdh_loader.py +0 -267
- package/onecode/agent/context.py +0 -343
- package/onecode/agent/engine.py +0 -2700
- package/onecode/agent/hooks.py +0 -86
- package/onecode/agent/onecode_agent_acp.py +0 -2743
- package/onecode/agent/onecode_agent_acp.py.bak +0 -2447
- package/onecode/agent/permissions.py +0 -150
- package/onecode/agent/permissions_store.py +0 -62
- package/onecode/agent/project_doc.py +0 -19
- package/onecode/agent/session.py +0 -195
- package/onecode/agent/snapshot.py +0 -144
- package/onecode/agent/tools/__init__.py +0 -17
- 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 +0 -132
- package/onecode/agent/tools/apply_patch_tool.py +0 -138
- package/onecode/agent/tools/bash_tool.py +0 -111
- package/onecode/agent/tools/communication_tools.py +0 -148
- package/onecode/agent/tools/config_tool.py +0 -130
- package/onecode/agent/tools/cron_tools.py +0 -178
- package/onecode/agent/tools/errors.py +0 -17
- package/onecode/agent/tools/file_ops.py +0 -221
- package/onecode/agent/tools/file_tools.py +0 -225
- package/onecode/agent/tools/git_tools.py +0 -88
- package/onecode/agent/tools/lsp_tools.py +0 -404
- package/onecode/agent/tools/mcp_tools.py +0 -127
- package/onecode/agent/tools/permission_handler.py +0 -46
- package/onecode/agent/tools/permissions.py +0 -77
- package/onecode/agent/tools/protocol.py +0 -20
- package/onecode/agent/tools/registry.py +0 -201
- package/onecode/agent/tools/sandbox.py +0 -358
- package/onecode/agent/tools/schema_validation.py +0 -100
- package/onecode/agent/tools/skill_tools.py +0 -52
- package/onecode/agent/tools/todo_tools.py +0 -207
- package/onecode/agent/tools/web_tools.py +0 -169
- package/onecode/builtin_skills/agent-browser/SKILL.md +0 -212
- package/onecode/builtin_skills/agent-browser/skill.yaml +0 -8
- package/onecode/builtin_skills/git/SKILL.md +0 -64
- package/onecode/builtin_skills/git/skill.yaml +0 -7
- package/onecode/builtin_skills/shell/SKILL.md +0 -58
- package/onecode/builtin_skills/shell/skill.yaml +0 -8
- package/onecode/builtin_skills/skill-creator/SKILL.md +0 -106
- package/onecode/builtin_skills/skill-creator/skill.yaml +0 -8
- package/onecode/cli.py +0 -935
- package/onecode/cloud/__init__.py +0 -0
- package/onecode/cloud/base.py +0 -20
- package/onecode/codebase/__init__.py +0 -69
- 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 +0 -125
- package/onecode/codebase/indexer.py +0 -149
- package/onecode/codebase/retriever.py +0 -203
- package/onecode/codebase/storage.py +0 -131
- package/onecode/codebase/tools.py +0 -59
- package/onecode/commands.py +0 -596
- package/onecode/config.py +0 -314
- package/onecode/config_screen.py +0 -600
- package/onecode/cron/__init__.py +0 -3
- package/onecode/lsp/__init__.py +0 -3
- package/onecode/mcp/__init__.py +0 -4
- package/onecode/mcp/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/mcp/__pycache__/client.cpython-314.pyc +0 -0
- package/onecode/mcp/__pycache__/manager.cpython-314.pyc +0 -0
- package/onecode/mcp/client.py +0 -193
- package/onecode/mcp/manager.py +0 -190
- package/onecode/memory/__init__.py +0 -49
- package/onecode/memory/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/memory/__pycache__/backend.cpython-314.pyc +0 -0
- package/onecode/memory/__pycache__/offload.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/__pycache__/symbolic.cpython-314.pyc +0 -0
- package/onecode/memory/backend.py +0 -159
- package/onecode/memory/pyramid.py +0 -133
- package/onecode/memory/recall.py +0 -203
- package/onecode/migrate.py +0 -122
- package/onecode/models/__init__.py +0 -4
- 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__/provider.cpython-314.pyc +0 -0
- package/onecode/models/__pycache__/registry.cpython-314.pyc +0 -0
- package/onecode/models/errors.py +0 -104
- package/onecode/models/messages.py +0 -739
- package/onecode/models/provider.py +0 -699
- package/onecode/models/providers/__init__.py +0 -17
- 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 +0 -273
- package/onecode/models/providers/deepseek_provider.py +0 -212
- package/onecode/models/providers/glm_provider.py +0 -195
- package/onecode/models/providers/minimax_provider.py +0 -158
- package/onecode/models/providers/minimaxi_provider.py +0 -417
- package/onecode/models/providers/ollama_provider.py +0 -100
- package/onecode/models/providers/openai_provider.py +0 -237
- package/onecode/models/registry.py +0 -212
- package/onecode/server/__init__.py +0 -3
- package/onecode/server/app.py +0 -224
- package/onecode/skills/__init__.py +0 -11
- 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__/manager.cpython-314.pyc +0 -0
- package/onecode/skills/__pycache__/model.cpython-314.pyc +0 -0
- package/onecode/skills/argument_substitution.py +0 -38
- package/onecode/skills/bootstrap.py +0 -124
- package/onecode/skills/create.py +0 -56
- package/onecode/skills/frontmatter.py +0 -33
- package/onecode/skills/loader.py +0 -139
- package/onecode/skills/manager.py +0 -75
- package/onecode/skills/model.py +0 -43
- package/onecode/storage/__init__.py +0 -0
- package/onecode/storage/activity.py +0 -63
- package/onecode/storage/project.py +0 -54
- package/onecode/storage/session.py +0 -112
- package/onecode/tasks/__init__.py +0 -26
- package/onecode/tasks/manager.py +0 -232
- package/onecode/tasks/models.py +0 -240
- package/onecode/trace/__init__.py +0 -0
- package/onecode/trace/tracer.py +0 -173
- package/onecode/utils/__init__.py +0 -0
- package/onecode/utils/helpers.py +0 -20
- package/pyproject.toml +0 -74
- package/tui/__init__.py +0 -46
- package/tui/__main__.py +0 -4
- 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__/about.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-313.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__/danger.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_suggester.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 +0 -86
- package/tui/_path_fuzzy_search.py +0 -48
- package/tui/_path_match.py +0 -141
- package/tui/about.py +0 -95
- 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__/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 +0 -1002
- package/tui/acp/api.py +0 -73
- package/tui/acp/encode_tool_call_id.py +0 -12
- package/tui/acp/messages.py +0 -203
- package/tui/acp/prompt.py +0 -53
- package/tui/acp/protocol.py +0 -499
- package/tui/agent.py +0 -70
- package/tui/agent_schema.py +0 -76
- package/tui/agents.py +0 -46
- package/tui/ansi/__init__.py +0 -1
- 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 +0 -1689
- package/tui/ansi/_ansi_colors.py +0 -264
- package/tui/ansi/_control_codes.py +0 -37
- package/tui/ansi/_keys.py +0 -251
- package/tui/ansi/_sgr_styles.py +0 -64
- package/tui/ansi/_stream_parser.py +0 -418
- package/tui/answer.py +0 -12
- package/tui/app.py +0 -1266
- package/tui/atomic.py +0 -37
- package/tui/cli.py +0 -313
- package/tui/code_analyze.py +0 -27
- package/tui/complete.py +0 -38
- package/tui/constants.py +0 -61
- package/tui/conversation_markdown.py +0 -30
- package/tui/danger.py +0 -372
- package/tui/data/agents/ampcode.com.toml +0 -52
- package/tui/data/agents/augmentcode.com.toml +0 -41
- package/tui/data/agents/cdh.cloud-dev-harness.toml +0 -23
- package/tui/data/agents/claude.com.toml +0 -41
- package/tui/data/agents/copilot.github.com.toml +0 -29
- package/tui/data/agents/crowai.dev.toml +0 -36
- package/tui/data/agents/cursor.com.toml +0 -38
- package/tui/data/agents/deepagents.langchain.com +0 -34
- package/tui/data/agents/docker.com.toml +0 -60
- package/tui/data/agents/geminicli.com.toml +0 -28
- package/tui/data/agents/goose.ai.toml +0 -52
- package/tui/data/agents/inference.huggingface.co.toml +0 -41
- package/tui/data/agents/kimi.com.toml +0 -35
- package/tui/data/agents/kiro.dev.toml +0 -43
- package/tui/data/agents/onecode.dev.toml +0 -22
- package/tui/data/agents/openai.com.toml +0 -53
- package/tui/data/agents/openclaw.ai.toml +0 -37
- package/tui/data/agents/opencode.ai.toml +0 -39
- package/tui/data/agents/openhands.dev.toml +0 -46
- package/tui/data/agents/stakpak.dev.toml +0 -62
- package/tui/data/agents/vibe.mistral.ai.toml +0 -31
- package/tui/data/agents/vtcode.dev.toml +0 -63
- 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 +0 -213
- package/tui/dec.py +0 -332
- package/tui/directory.py +0 -234
- package/tui/directory_suggester.py +0 -93
- package/tui/directory_watcher.py +0 -231
- package/tui/format_path.py +0 -25
- package/tui/fuzzy.py +0 -140
- package/tui/fuzzy_index.py +0 -275
- package/tui/gist.py +0 -33
- package/tui/history.py +0 -138
- package/tui/jsonrpc.py +0 -578
- package/tui/menus.py +0 -14
- package/tui/message_log.py +0 -69
- package/tui/messages.py +0 -144
- package/tui/option_content.py +0 -51
- package/tui/os.py +0 -0
- package/tui/path_complete.py +0 -217
- package/tui/path_filter.py +0 -124
- package/tui/paths.py +0 -87
- package/tui/pill.py +0 -23
- package/tui/platform_commands.py +0 -52
- 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 +0 -19
- package/tui/prompt/resource.py +0 -68
- package/tui/protocol.py +0 -28
- package/tui/screens/__init__.py +0 -0
- package/tui/screens/__pycache__/__init__.cpython-314.pyc +0 -0
- package/tui/screens/__pycache__/agent_modal.cpython-314.pyc +0 -0
- package/tui/screens/__pycache__/component_picker.cpython-314.pyc +0 -0
- package/tui/screens/__pycache__/diff_screen.cpython-314.pyc +0 -0
- package/tui/screens/__pycache__/log.cpython-314.pyc +0 -0
- package/tui/screens/__pycache__/main.cpython-313.pyc +0 -0
- package/tui/screens/__pycache__/main.cpython-314.pyc +0 -0
- package/tui/screens/__pycache__/permissions.cpython-314.pyc +0 -0
- package/tui/screens/__pycache__/projects_app.cpython-314.pyc +0 -0
- package/tui/screens/__pycache__/projects_screen.cpython-314.pyc +0 -0
- package/tui/screens/__pycache__/sessions.cpython-314.pyc +0 -0
- package/tui/screens/__pycache__/store.cpython-314.pyc +0 -0
- package/tui/screens/__pycache__/tool_content_screen.cpython-314.pyc +0 -0
- package/tui/screens/action_modal.py +0 -94
- package/tui/screens/agent_modal.py +0 -175
- package/tui/screens/command_edit_modal.py +0 -74
- package/tui/screens/component_picker.py +0 -168
- package/tui/screens/diff_screen.py +0 -84
- package/tui/screens/log.py +0 -553
- package/tui/screens/main.py +0 -385
- package/tui/screens/main.tcss +0 -655
- package/tui/screens/permissions.py +0 -404
- package/tui/screens/permissions.tcss +0 -72
- package/tui/screens/projects.tcss +0 -80
- package/tui/screens/projects_app.py +0 -347
- package/tui/screens/projects_screen.py +0 -284
- package/tui/screens/session_resume_modal.py +0 -172
- package/tui/screens/session_resume_modal.tcss +0 -35
- package/tui/screens/sessions.py +0 -164
- package/tui/screens/sessions.tcss +0 -119
- package/tui/screens/settings.py +0 -254
- package/tui/screens/settings.tcss +0 -101
- package/tui/screens/store.py +0 -500
- package/tui/screens/store.tcss +0 -274
- package/tui/screens/tool_content_screen.py +0 -59
- package/tui/session_tracker.py +0 -123
- package/tui/settings.py +0 -353
- package/tui/settings_schema.py +0 -431
- package/tui/shell.py +0 -304
- package/tui/shell_read.py +0 -42
- package/tui/slash_command.py +0 -34
- package/tui/tui.tcss +0 -246
- package/tui/twitter.py +0 -38
- package/tui/version.py +0 -80
- 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 +0 -272
- package/tui/widgets/__init__.py +0 -0
- package/tui/widgets/__pycache__/__init__.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/acp_content.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__/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__/directory_input.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__/mandelbrot.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/markdown_note.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__/plan.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/project_directory_tree.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/project_grid_select.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/project_summary.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_result.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__/subagent.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/subagent_screen.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 +0 -70
- package/tui/widgets/agent_response.py +0 -76
- package/tui/widgets/agent_thought.py +0 -167
- package/tui/widgets/ask_user.py +0 -264
- package/tui/widgets/command_pane.py +0 -223
- package/tui/widgets/condensed_path.py +0 -115
- package/tui/widgets/context_stats.py +0 -66
- package/tui/widgets/conversation.py +0 -2641
- package/tui/widgets/danger_warning.py +0 -65
- package/tui/widgets/diff_view.py +0 -69
- package/tui/widgets/directory_input.py +0 -8
- package/tui/widgets/flash.py +0 -81
- package/tui/widgets/future_text.py +0 -126
- package/tui/widgets/grid_select.py +0 -234
- package/tui/widgets/highlighted_textarea.py +0 -180
- package/tui/widgets/load_more.py +0 -24
- package/tui/widgets/mandelbrot.py +0 -294
- package/tui/widgets/markdown_note.py +0 -13
- package/tui/widgets/menu.py +0 -147
- package/tui/widgets/modified_files.py +0 -306
- package/tui/widgets/non_selectable_label.py +0 -5
- package/tui/widgets/note.py +0 -18
- package/tui/widgets/path_search.py +0 -492
- package/tui/widgets/plan.py +0 -285
- package/tui/widgets/project_directory_tree.py +0 -102
- package/tui/widgets/project_grid_select.py +0 -64
- package/tui/widgets/project_summary.py +0 -33
- package/tui/widgets/prompt.py +0 -795
- package/tui/widgets/question.py +0 -360
- package/tui/widgets/session_grid_select.py +0 -230
- package/tui/widgets/session_summary.py +0 -115
- package/tui/widgets/session_tabs.py +0 -188
- package/tui/widgets/shell_result.py +0 -35
- package/tui/widgets/shell_terminal.py +0 -40
- package/tui/widgets/side_bar.py +0 -124
- package/tui/widgets/slash_complete.py +0 -235
- package/tui/widgets/strike_text.py +0 -70
- package/tui/widgets/subagent.py +0 -287
- package/tui/widgets/subagent_screen.py +0 -709
- package/tui/widgets/terminal.py +0 -576
- package/tui/widgets/terminal_tool.py +0 -360
- package/tui/widgets/throbber.py +0 -100
- package/tui/widgets/tool_call.py +0 -398
- package/tui/widgets/user_input.py +0 -23
- package/tui/widgets/version.py +0 -5
- package/tui/widgets/welcome.py +0 -31
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# Web 组件开发指南 (WEB-FR-*)
|
|
2
|
-
|
|
3
|
-
## 技术栈
|
|
4
|
-
- 框架: React / Vue / Svelte
|
|
5
|
-
- 语言: TypeScript
|
|
6
|
-
- 构建: Vite / Webpack
|
|
7
|
-
- 测试: Vitest / Jest + Testing Library
|
|
8
|
-
- BDD: Cucumber.js / pytest-bdd
|
|
9
|
-
|
|
10
|
-
## 关键命令
|
|
11
|
-
- 构建: `pnpm --filter web build`
|
|
12
|
-
- 测试全部: `pnpm --filter web test`
|
|
13
|
-
- BDD: `cucumber-js features/`
|
|
14
|
-
- Lint: `pnpm --filter web lint`
|
|
15
|
-
|
|
16
|
-
## 目录约定
|
|
17
|
-
- `src/` → 组件源码
|
|
18
|
-
- `tests/unit/` → 单元测试
|
|
19
|
-
- `tests/integration/` → 集成测试
|
|
20
|
-
- `tests/e2e/` → E2E 测试
|
|
21
|
-
- `features/` → BDD feature 文件
|
|
22
|
-
- `features/steps/` → BDD step definitions
|
|
23
|
-
|
|
24
|
-
## FR 命名空间
|
|
25
|
-
- Prefix: WEB-FR-NNN
|
|
26
|
-
- 范围: 浏览器端行为(SPA / SSR)
|
|
27
|
-
|
|
28
|
-
## 特定约束
|
|
29
|
-
- Web 组件在构建时接收 `BACKEND_URL` 环境变量
|
|
30
|
-
- 使用 `aidlc/packages/shared/` 中的生成类型
|
|
31
|
-
- API 调用走 `aidlc/packages/shared/api/`
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# WXA 组件开发指南 (WXA-FR-*) — 微信小程序
|
|
2
|
-
|
|
3
|
-
## 技术栈
|
|
4
|
-
- 框架: 微信原生小程序 / Taro / uni-app
|
|
5
|
-
- 语言: JavaScript / TypeScript
|
|
6
|
-
- 构建: 微信开发者工具 / Taro CLI
|
|
7
|
-
- 测试: Jest / miniprogram-simtest
|
|
8
|
-
- BDD: 手动 + 自动化(通过 miniprogram-automator)
|
|
9
|
-
|
|
10
|
-
## 关键命令
|
|
11
|
-
- 构建: `pnpm --filter wxa build`
|
|
12
|
-
- 测试: `pnpm --filter wxa test`
|
|
13
|
-
- 预览: 上传到微信小程序预览平台
|
|
14
|
-
- Lint: `pnpm --filter wxa lint`
|
|
15
|
-
|
|
16
|
-
## 目录约定
|
|
17
|
-
- `src/` → 组件源码
|
|
18
|
-
- `tests/unit/` → 单元测试
|
|
19
|
-
- `features/` → BDD feature 文件
|
|
20
|
-
|
|
21
|
-
## FR 命名空间
|
|
22
|
-
- Prefix: WXA-FR-NNN
|
|
23
|
-
- 范围: 微信小程序行为
|
|
24
|
-
|
|
25
|
-
## 特定约束
|
|
26
|
-
- 微信小程序审核流程(每次上架需要审核)
|
|
27
|
-
- 预览通过小程序预览 QR 码访问
|
|
28
|
-
- `BACKEND_URL` 在构建时注入到小程序配置
|
|
29
|
-
- 不支持 npm 包中的所有 API(仅微信 API)
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# Contracts 目录说明
|
|
2
|
-
|
|
3
|
-
## 三层合约体系
|
|
4
|
-
|
|
5
|
-
```
|
|
6
|
-
contracts/
|
|
7
|
-
├── api/ ← OpenAPI 3.1 — HTTP API 合约 (已有)
|
|
8
|
-
├── events/ ← AsyncAPI 3.0 — 事件合约 (已有)
|
|
9
|
-
└── functions/ ← Runtime Contract — Serverless 函数接口 (新增)
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
## aidlc/contracts/api/
|
|
13
|
-
HTTP API 描述,使用 OpenAPI 3.1 格式。
|
|
14
|
-
每个文件对应一个 INT-FR-NNN,描述请求/响应 schema。
|
|
15
|
-
|
|
16
|
-
## aidlc/contracts/events/
|
|
17
|
-
事件驱动合约,使用 AsyncAPI 3.0 + CloudEvents 格式。
|
|
18
|
-
描述事件的生产/消费关系。
|
|
19
|
-
|
|
20
|
-
## aidlc/contracts/functions/
|
|
21
|
-
Serverless 函数接口描述,Provider-agnostic。
|
|
22
|
-
描述函数的触发器、资源需求、环境变量。
|
|
23
|
-
部署时根据选择的 provider + compute_mode 自动映射到具体平台。
|
|
24
|
-
|
|
25
|
-
模板位于 `templates/integration/runtime-contract.yaml`。
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# Adaptive Flow — 自适应流程决策
|
|
2
|
-
|
|
3
|
-
AI-DLC Master Agent 根据需求复杂度自动裁剪执行阶段。
|
|
4
|
-
|
|
5
|
-
## 复杂度分级
|
|
6
|
-
|
|
7
|
-
| 级别 | 触发条件 | 执行阶段 |
|
|
8
|
-
|------|---------|---------|
|
|
9
|
-
| L1 | 单文件 bug fix,不改行为 | Verify (TDD Red→Green→Refactor) |
|
|
10
|
-
| L2 | 单组件新功能,无需 INT 合约 | Understand → Verify |
|
|
11
|
-
| L3 | 多组件功能,需要 INT 合约 | Understand → Plan → Verify |
|
|
12
|
-
| L4 | 全栈新功能 + 部署 | Understand → Plan → Verify → Deliver |
|
|
13
|
-
| L5 | 架构重构/平台迁移 | Plan → Verify |
|
|
14
|
-
|
|
15
|
-
## 决策流程
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
Intent 输入
|
|
19
|
-
│
|
|
20
|
-
├─ 是否单文件/修 bug? → L1
|
|
21
|
-
├─ 是否单组件且不改合约? → L2
|
|
22
|
-
├─ 是否多组件/涉及跨组件边界? → L3
|
|
23
|
-
├─ 是否全栈/需要部署到生产? → L4
|
|
24
|
-
└─ 是否重构/不新增行为/迁移? → L5
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## 复杂度评估 Prompt
|
|
28
|
-
|
|
29
|
-
分析用户输入时,先判断以下维度:
|
|
30
|
-
|
|
31
|
-
1. **范围 (Scope)**:单文件 / 单组件 / 多组件 / 全栈
|
|
32
|
-
2. **类型 (Type)**:修 bug / 新功能 / 重构 / 迁移
|
|
33
|
-
3. **合约 (Contract)**:是否涉及 INT-FR、OpenAPI、AsyncAPI
|
|
34
|
-
4. **部署 (Deploy)**:是否需要上线到 production
|
|
35
|
-
|
|
36
|
-
输出格式:`[Lx] Phase 列表`,如 `[L3] understand → plan → verify`
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Security Rules (SEC-*)
|
|
2
|
-
|
|
3
|
-
## SEC-001: Secrets Management
|
|
4
|
-
**Severity:** MUST
|
|
5
|
-
Secrets MUST be retrieved from secure storage, never hardcoded or logged.
|
|
6
|
-
|
|
7
|
-
## SEC-002: Input Validation
|
|
8
|
-
**Severity:** MUST
|
|
9
|
-
All user input MUST be validated before processing: type, length, format, range.
|
|
10
|
-
|
|
11
|
-
## SEC-003: SQL Injection Prevention
|
|
12
|
-
**Severity:** MUST
|
|
13
|
-
All database queries MUST use parameterized statements.
|
|
14
|
-
|
|
15
|
-
## SEC-004: CORS Configuration
|
|
16
|
-
**Severity:** MUST
|
|
17
|
-
CORS headers MUST be explicitly configured. Wildcard origins prohibited in production.
|
|
18
|
-
|
|
19
|
-
## SEC-005: Rate Limiting
|
|
20
|
-
**Severity:** MUST
|
|
21
|
-
Public endpoints require rate limiting: 100 req/min unauthenticated, 1000 req/min authenticated.
|
|
22
|
-
|
|
23
|
-
## SEC-006: HTTPS Only
|
|
24
|
-
**Severity:** MUST
|
|
25
|
-
All production traffic MUST use HTTPS. HTTP redirects to HTTPS.
|
|
26
|
-
|
|
27
|
-
## SEC-007: Audit Logging
|
|
28
|
-
**Severity:** MUST
|
|
29
|
-
Security events MUST be logged with timestamps and actor identity.
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# cline/export.sh — Export AI-DLC rules to Cline format (.clinerules)
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
|
|
5
|
-
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
6
|
-
SKILL_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
7
|
-
PROJECT_ROOT="$(cd "$SKILL_DIR/.." && pwd)"
|
|
8
|
-
|
|
9
|
-
cat > "$PROJECT_ROOT/.clinerules" << 'EOF'
|
|
10
|
-
# AI-DLC Development Rules (Cline)
|
|
11
|
-
|
|
12
|
-
## Core Methodology
|
|
13
|
-
AI-DLC: Intent → Spec (EARS) → BDD → Design → TDD → Deploy
|
|
14
|
-
|
|
15
|
-
## FR Namespaces
|
|
16
|
-
NATIVE apps/native | DESKTOP apps/desktop | WEB apps/web
|
|
17
|
-
BE apps/backend | WXA apps/wxa | MYA apps/mya | TTA apps/tta
|
|
18
|
-
INT aidlc/contracts/ + aidlc/packages/shared/
|
|
19
|
-
|
|
20
|
-
## Quality Gates
|
|
21
|
-
- Coverage >= 80%
|
|
22
|
-
- BDD scenarios 100% pass
|
|
23
|
-
- 0 vulns, no TODO in src/
|
|
24
|
-
- Contract backward-compat by default
|
|
25
|
-
- Cross-stack e2e mandatory for multi-component changes
|
|
26
|
-
|
|
27
|
-
## Reference
|
|
28
|
-
Full skill: .opencode/skills/ai-dlc-skill/
|
|
29
|
-
EOF
|
|
30
|
-
|
|
31
|
-
echo " ✓ $PROJECT_ROOT/.clinerules"
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# copilot/export.sh — Export AI-DLC rules to GitHub Copilot format (.github/copilot-instructions.md)
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
|
|
5
|
-
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
6
|
-
SKILL_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
7
|
-
PROJECT_ROOT="$(cd "$SKILL_DIR/.." && pwd)"
|
|
8
|
-
|
|
9
|
-
mkdir -p "$PROJECT_ROOT/.github"
|
|
10
|
-
|
|
11
|
-
cat > "$PROJECT_ROOT/.github/copilot-instructions.md" << 'EOF'
|
|
12
|
-
# AI-DLC Copilot Instructions
|
|
13
|
-
|
|
14
|
-
## Development Workflow
|
|
15
|
-
Follow the AI-Driven Development Lifecycle:
|
|
16
|
-
1. Understand (SDD+BDD): Intent → EARS Spec → BDD Features
|
|
17
|
-
2. Plan (SDD+TDD): Design Doc → Task DAG → Test Plan
|
|
18
|
-
3. Verify (BDD+TDD): TDD Red→Green→Refactor per scenario
|
|
19
|
-
4. Deliver (SDD+Cloud): Stack Preview → e2e → Production + BVT
|
|
20
|
-
|
|
21
|
-
## Component FR Mapping
|
|
22
|
-
- NATIVE-FR-* → apps/native/
|
|
23
|
-
- DESKTOP-FR-* → apps/desktop/
|
|
24
|
-
- WEB-FR-* → apps/web/
|
|
25
|
-
- BE-FR-* → apps/backend/
|
|
26
|
-
- WXA-FR-* → apps/wxa/
|
|
27
|
-
- MYA-FR-* → apps/mya/
|
|
28
|
-
- TTA-FR-* → apps/tta/
|
|
29
|
-
- INT-FR-* → aidlc/contracts/ + aidlc/packages/shared/
|
|
30
|
-
|
|
31
|
-
## Quality Gates
|
|
32
|
-
- Coverage ≥80%
|
|
33
|
-
- BDD 100% pass
|
|
34
|
-
- 0 security violations
|
|
35
|
-
- No TODO/FIXME in src/
|
|
36
|
-
- Contract backward-compatible
|
|
37
|
-
- Cross-stack e2e for multi-component changes
|
|
38
|
-
|
|
39
|
-
## Security
|
|
40
|
-
- Secrets: secure storage, no hardcoding
|
|
41
|
-
- Input: validate type/length/format/range
|
|
42
|
-
- SQL: parameterized queries only
|
|
43
|
-
- CORS: explicit origins, no wildcard in prod
|
|
44
|
-
- HTTPS only in production
|
|
45
|
-
EOF
|
|
46
|
-
|
|
47
|
-
echo " ✓ $PROJECT_ROOT/.github/copilot-instructions.md"
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# cursor/export.sh — Export AI-DLC rules to Cursor format (.cursor/rules/*.mdc)
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
|
|
5
|
-
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
6
|
-
SKILL_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
7
|
-
PROJECT_ROOT="$(cd "$SKILL_DIR/.." && pwd)"
|
|
8
|
-
CURSOR_DIR="$PROJECT_ROOT/.cursor/rules"
|
|
9
|
-
|
|
10
|
-
mkdir -p "$CURSOR_DIR"
|
|
11
|
-
|
|
12
|
-
# Core rules
|
|
13
|
-
cat > "$CURSOR_DIR/ai-dlc-core.mdc" << 'EOF'
|
|
14
|
-
---
|
|
15
|
-
description: AI-DLC Core Lifecycle Rules
|
|
16
|
-
globs: ["*"]
|
|
17
|
-
---
|
|
18
|
-
# AI-DLC Core Rules
|
|
19
|
-
|
|
20
|
-
See `.opencode/skills/ai-dlc-skill/SKILL.md` for full methodology.
|
|
21
|
-
|
|
22
|
-
Key rules:
|
|
23
|
-
1. Intent → Spec → BDD → Code pipeline
|
|
24
|
-
2. Contract-first for cross-component changes
|
|
25
|
-
3. 3-phase minimum (L1 bug fix: Verify only; L2 feature: Understand→Verify)
|
|
26
|
-
4. All tests must fail before code (TDD Red phase)
|
|
27
|
-
5. Coverage ≥80%, BDD 100%, 0 vulns, no TODO
|
|
28
|
-
|
|
29
|
-
FR namespaces: NATIVE-*, DESKTOP-*, WEB-*, BE-*, WXA-*, MYA-*, TTA-*, INT-*
|
|
30
|
-
EOF
|
|
31
|
-
|
|
32
|
-
echo " ✓ $CURSOR_DIR/ai-dlc-core.mdc"
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# export.sh — One-click export AI-DLC rules to all supported tool formats
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
|
|
5
|
-
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
6
|
-
|
|
7
|
-
echo "AI-DLC Cross-Tool Export"
|
|
8
|
-
echo "========================"
|
|
9
|
-
echo ""
|
|
10
|
-
|
|
11
|
-
for tool in onecode cursor cline copilot; do
|
|
12
|
-
export_script="$SCRIPT_DIR/$tool/export.sh"
|
|
13
|
-
if [ -f "$export_script" ]; then
|
|
14
|
-
echo "[$tool] Running $export_script..."
|
|
15
|
-
bash "$export_script"
|
|
16
|
-
else
|
|
17
|
-
echo "[$tool] No export script found at $export_script"
|
|
18
|
-
fi
|
|
19
|
-
echo ""
|
|
20
|
-
done
|
|
21
|
-
|
|
22
|
-
echo "Done. All supported tool configs generated."
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# .cdh/config.yaml — AI-DLC 项目配置
|
|
2
|
-
name: {{project_name}}
|
|
3
|
-
platform: {{cloud_provider}} # tcb | aliyun
|
|
4
|
-
phase: {{current_phase}} # understand | plan | verify | deliver
|
|
5
|
-
|
|
6
|
-
# compute_mode: fc | sae | cloudbase-functions | cloudbase-run
|
|
7
|
-
compute_mode: {{compute_mode}}
|
|
8
|
-
|
|
9
|
-
stack:
|
|
10
|
-
components:
|
|
11
|
-
- native
|
|
12
|
-
- desktop
|
|
13
|
-
- web
|
|
14
|
-
- backend
|
|
15
|
-
- wxa
|
|
16
|
-
- mya
|
|
17
|
-
- tta
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# export-skills.sh — Generate per-component .skill/SKILL.md from components/*.md
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
|
|
5
|
-
PROJECT_ROOT="${1:-$PWD}"
|
|
6
|
-
SKILL_DIR="${2:-${AI_DLC_SKILL_DIR:-$HOME/.cdh/skills/ai-dlc-skill}}"
|
|
7
|
-
|
|
8
|
-
if [ ! -d "$SKILL_DIR" ]; then
|
|
9
|
-
echo " ✗ ai-dlc-skill not found at $SKILL_DIR" >&2
|
|
10
|
-
exit 1
|
|
11
|
-
fi
|
|
12
|
-
|
|
13
|
-
echo "Generating component skills in $PROJECT_ROOT/apps/*/.skill/"
|
|
14
|
-
|
|
15
|
-
for component in native desktop web backend wxa mya tta; do
|
|
16
|
-
component_dir="$PROJECT_ROOT/apps/$component"
|
|
17
|
-
skill_dir="$component_dir/.skill"
|
|
18
|
-
src="$SKILL_DIR/components/$component.md"
|
|
19
|
-
|
|
20
|
-
if [ ! -d "$component_dir" ]; then
|
|
21
|
-
echo " ⚠ $component_dir not found, skipping"
|
|
22
|
-
continue
|
|
23
|
-
fi
|
|
24
|
-
|
|
25
|
-
if [ ! -f "$src" ]; then
|
|
26
|
-
echo " ⚠ $src not found, skipping"
|
|
27
|
-
continue
|
|
28
|
-
fi
|
|
29
|
-
|
|
30
|
-
mkdir -p "$skill_dir"
|
|
31
|
-
cp "$src" "$skill_dir/SKILL.md"
|
|
32
|
-
echo " ✓ $component → $skill_dir/SKILL.md"
|
|
33
|
-
done
|
|
34
|
-
|
|
35
|
-
echo "Done."
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# onecode/export.sh — Export AI-DLC rules to onecode format
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
|
|
5
|
-
# Project root: first arg or current working directory
|
|
6
|
-
PROJECT_ROOT="${1:-$PWD}"
|
|
7
|
-
# Skill dir: CDH platform skill pool or AI_DLC_SKILL_DIR env var
|
|
8
|
-
SKILL_DIR="${AI_DLC_SKILL_DIR:-$HOME/.cdh/skills/ai-dlc-skill}"
|
|
9
|
-
|
|
10
|
-
if [ ! -d "$SKILL_DIR" ]; then
|
|
11
|
-
echo " ✗ ai-dlc-skill not found at $SKILL_DIR" >&2
|
|
12
|
-
echo " Run: cdh skill install ai-dlc-skill" >&2
|
|
13
|
-
exit 1
|
|
14
|
-
fi
|
|
15
|
-
|
|
16
|
-
echo " Exporting onecode configs for project: $(basename "$PROJECT_ROOT")"
|
|
17
|
-
|
|
18
|
-
CDH_DIR="$PROJECT_ROOT/.cdh"
|
|
19
|
-
CROSS_TOOL_DIR="$SKILL_DIR/cross-tool/onecode"
|
|
20
|
-
|
|
21
|
-
# 1. Generate .cdh/config.yaml if not exists
|
|
22
|
-
if [ ! -f "$CDH_DIR/config.yaml" ]; then
|
|
23
|
-
mkdir -p "$CDH_DIR"
|
|
24
|
-
sed "s/{{project_name}}/$(basename "$PROJECT_ROOT")/g; s/{{cloud_provider}}/tcb/g; s/{{current_phase}}/understand/g; s/{{compute_mode}}/cloudbase-functions/g" \
|
|
25
|
-
"$CROSS_TOOL_DIR/config.yaml.tpl" > "$CDH_DIR/config.yaml"
|
|
26
|
-
echo " ✓ $CDH_DIR/config.yaml created"
|
|
27
|
-
else
|
|
28
|
-
echo " - $CDH_DIR/config.yaml exists, skipping"
|
|
29
|
-
fi
|
|
30
|
-
|
|
31
|
-
# 2. Generate .cdh/state.json if not exists
|
|
32
|
-
if [ ! -f "$CDH_DIR/state.json" ]; then
|
|
33
|
-
mkdir -p "$CDH_DIR"
|
|
34
|
-
cat > "$CDH_DIR/state.json" <<-EOF
|
|
35
|
-
{
|
|
36
|
-
"current_phase": "understand",
|
|
37
|
-
"completed_phases": [],
|
|
38
|
-
"gate_results": {}
|
|
39
|
-
}
|
|
40
|
-
EOF
|
|
41
|
-
echo " ✓ $CDH_DIR/state.json created"
|
|
42
|
-
else
|
|
43
|
-
echo " - $CDH_DIR/state.json exists, skipping"
|
|
44
|
-
fi
|
|
45
|
-
|
|
46
|
-
# 3. Generate .cdh/SKILL.md from the master skill (always refresh)
|
|
47
|
-
mkdir -p "$CDH_DIR"
|
|
48
|
-
cp "$SKILL_DIR/SKILL.md" "$CDH_DIR/SKILL.md"
|
|
49
|
-
echo " ✓ $CDH_DIR/SKILL.md updated"
|
|
50
|
-
|
|
51
|
-
# 4. Generate component skills into apps/*/.skill/
|
|
52
|
-
bash "$CROSS_TOOL_DIR/export-skills.sh" "$PROJECT_ROOT" "$SKILL_DIR"
|
|
53
|
-
|
|
54
|
-
echo " onecode export complete."
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ai-dlc-deliver
|
|
3
|
-
description: "Deliver Phase: Stack Preview → e2e → Production + BVT"
|
|
4
|
-
triggers:
|
|
5
|
-
- deliver
|
|
6
|
-
- deploy
|
|
7
|
-
- release
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Deliver Phase (交付)
|
|
11
|
-
|
|
12
|
-
Deploy full stack, run cross-stack e2e, human approval, production BVT.
|
|
13
|
-
|
|
14
|
-
## Entry
|
|
15
|
-
|
|
16
|
-
See `lifecycle.md` for the full phase flow.
|
|
17
|
-
See `rules.md` for enforceable rules (DLV-001 to DLV-004 + STK-001 to STK-006).
|
|
18
|
-
See `prompt.md` for the sub-agent delegation prompt template.
|
|
19
|
-
|
|
20
|
-
## 当被委派时
|
|
21
|
-
|
|
22
|
-
1. `deploy_stack --preview` 统一部署
|
|
23
|
-
2. 运行 per-component e2e + cross-stack e2e
|
|
24
|
-
3. Staging 部署 + smoke test
|
|
25
|
-
4. Human approval gate
|
|
26
|
-
5. Production 部署 + BVT + 自动回滚
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
# AI-DLC Phase 4: Deliver (交付)
|
|
2
|
-
|
|
3
|
-
Deploy the **full stack** together, verify per-component and cross-stack e2e against the unified preview, release with stack-level BVT.
|
|
4
|
-
|
|
5
|
-
## Goal
|
|
6
|
-
|
|
7
|
-
Deliver verified code to production as a coherent stack with full confidence — preview environment, per-component e2e, cross-stack e2e, stack-level BVT, and rollback at the stack level.
|
|
8
|
-
|
|
9
|
-
## Flow
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
All Verify gates passed (per-component + contract + cross-stack)
|
|
13
|
-
│
|
|
14
|
-
▼
|
|
15
|
-
Unified Stack Preview Deploy (dynamic URL from cloud provider)
|
|
16
|
-
- backend (functions + DB migrate)
|
|
17
|
-
- web (hosting build with BACKEND_URL)
|
|
18
|
-
- native (build with BACKEND_URL; package + upload)
|
|
19
|
-
- desktop (build with BACKEND_URL; package + upload)
|
|
20
|
-
- wxa / mya / tta (build with BACKEND_URL; upload to mini-program platform)
|
|
21
|
-
│
|
|
22
|
-
▼
|
|
23
|
-
Per-component BDD e2e (against component preview URL or stack URL)
|
|
24
|
-
│
|
|
25
|
-
▼
|
|
26
|
-
Cross-stack e2e (full app ↔ web ↔ backend against unified stack URL)
|
|
27
|
-
│
|
|
28
|
-
▼
|
|
29
|
-
Staging Stack Deploy + Smoke
|
|
30
|
-
│
|
|
31
|
-
▼
|
|
32
|
-
Human Approval Gate
|
|
33
|
-
│
|
|
34
|
-
▼
|
|
35
|
-
Production Stack Deploy (whole stack as one unit)
|
|
36
|
-
│
|
|
37
|
-
▼
|
|
38
|
-
Stack BVT (Build Verification Test) — backend /health, app launch probe, web smoke, DB
|
|
39
|
-
│
|
|
40
|
-
▼
|
|
41
|
-
Archive: contract-diff.md + e2e reports + BVT report
|
|
42
|
-
│
|
|
43
|
-
▼
|
|
44
|
-
Gate: BVT pass → done | BVT fail → stack rollback
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Unified Stack Preview Deploy
|
|
48
|
-
|
|
49
|
-
The whole stack is deployed as one unit. The preview URL is the **backend gateway**; all client components (`web`, `native`, `desktop`, `wxa`, `mya`, `tta`) receive it as a build-time or runtime config.
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
# TCB (default)
|
|
53
|
-
deploy_stack --preview
|
|
54
|
-
# → backend: tcb fn deploy --env preview
|
|
55
|
-
# → backend: tcb db migrate --env preview
|
|
56
|
-
# → web: tcb hosting deploy --env preview --build-env BACKEND_URL=${STACK_URL}
|
|
57
|
-
# → native: build with BACKEND_URL=${STACK_URL}, upload to internal distribution
|
|
58
|
-
# → desktop: build with BACKEND_URL=${STACK_URL}, upload to internal distribution
|
|
59
|
-
# → wxa: build with BACKEND_URL=${STACK_URL}, upload to mini-program platform
|
|
60
|
-
# → mya: build with BACKEND_URL=${STACK_URL}, upload to mini-program platform
|
|
61
|
-
# → tta: build with BACKEND_URL=${STACK_URL}, upload to mini-program platform
|
|
62
|
-
# → STACK_URL = https://{env-id}.tcb-preview.com
|
|
63
|
-
|
|
64
|
-
# Aliyun
|
|
65
|
-
deploy_stack --preview
|
|
66
|
-
# → backend: fun deploy --env preview
|
|
67
|
-
# → web: oss + cdn deploy with build env
|
|
68
|
-
# → native: build with BACKEND_URL, package
|
|
69
|
-
# → desktop: build with BACKEND_URL, package
|
|
70
|
-
# → wxa: build with BACKEND_URL, upload to mini-program platform
|
|
71
|
-
# → mya: build with BACKEND_URL, upload to mini-program platform
|
|
72
|
-
# → tta: build with BACKEND_URL, upload to mini-program platform
|
|
73
|
-
# → STACK_URL = https://{gateway}.{region}.fc.devs.com
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
The `deploy_stack` tool resolves the preview URL dynamically per platform and exports it as `STACK_URL` (or `BACKEND_URL` for components to consume).
|
|
77
|
-
|
|
78
|
-
## Per-Component BDD E2E
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
export STACK_URL=$(deploy_stack --preview --output url)
|
|
82
|
-
export BACKEND_URL=$STACK_URL
|
|
83
|
-
|
|
84
|
-
# Backend
|
|
85
|
-
pytest apps/backend/tests/e2e/ --base-url $BACKEND_URL
|
|
86
|
-
|
|
87
|
-
# Web (against web hosting URL; uses BACKEND_URL as API root)
|
|
88
|
-
export WEB_URL=$(deploy_stack --preview --output web_url)
|
|
89
|
-
pytest apps/web/tests/e2e/ --base-url $WEB_URL --api-url $BACKEND_URL
|
|
90
|
-
|
|
91
|
-
# Native (against installed package or emulator; uses BACKEND_URL)
|
|
92
|
-
pytest apps/native/tests/e2e/ --backend-url $BACKEND_URL
|
|
93
|
-
|
|
94
|
-
# Desktop (against installed package or emulator; uses BACKEND_URL)
|
|
95
|
-
pytest apps/desktop/tests/e2e/ --backend-url $BACKEND_URL
|
|
96
|
-
|
|
97
|
-
# Mini-programs (wxa, mya, tta) (against emulator or device; uses BACKEND_URL)
|
|
98
|
-
pytest apps/wxa/tests/e2e/ --backend-url $BACKEND_URL
|
|
99
|
-
pytest apps/mya/tests/e2e/ --backend-url $BACKEND_URL
|
|
100
|
-
pytest apps/tta/tests/e2e/ --backend-url $BACKEND_URL
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
## Cross-Stack E2E
|
|
104
|
-
|
|
105
|
-
```bash
|
|
106
|
-
pytest aidlc/tests/cross-stack/ --stack-url $STACK_URL --verbose
|
|
107
|
-
# Runs the full multi-client ↔ backend flow defined in aidlc/features/cross-stack/
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
**Rule STK-001:** All `cross-stack` scenarios must pass before staging or production.
|
|
111
|
-
|
|
112
|
-
## Staging
|
|
113
|
-
|
|
114
|
-
```bash
|
|
115
|
-
deploy_stack --env staging
|
|
116
|
-
export STAGING_URL=$(deploy_stack --env staging --output url)
|
|
117
|
-
pytest aidlc/tests/cross-stack/ --stack-url $STAGING_URL
|
|
118
|
-
smoke-test $STAGING_URL
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
## Human Approval
|
|
122
|
-
|
|
123
|
-
Production deployment requires explicit human approval. Approval is a **stack** decision — the reviewer sees the per-component e2e results, the cross-stack e2e results, the staging smoke, and the `contract-diff.md`.
|
|
124
|
-
|
|
125
|
-
## Production Stack Deploy
|
|
126
|
-
|
|
127
|
-
```bash
|
|
128
|
-
deploy_stack --env production
|
|
129
|
-
# → Same as preview/staging but with prod env IDs and production secrets
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
## Stack BVT (Build Verification Test)
|
|
133
|
-
|
|
134
|
-
Automated health and functionality checks against the **production stack**:
|
|
135
|
-
|
|
136
|
-
```bash
|
|
137
|
-
bvt ${PRODUCTION_URL}
|
|
138
|
-
# Checks:
|
|
139
|
-
# 1. backend /health returns 200
|
|
140
|
-
# 2. web home page returns 200 (SSR) or shell loads (SPA)
|
|
141
|
-
# 3. native/desktop/mini-program launch probe (deep link resolves against BACKEND_URL)
|
|
142
|
-
# 4. Core end-to-end flow (login) succeeds
|
|
143
|
-
# 5. Database connectivity (probe query)
|
|
144
|
-
# 6. No error rate spikes (5xx < 0.1%, p99 < 500ms)
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
**Rule DLV-003:** BVT must pass. If BVT fails, automatic **stack** rollback to the previous stable stack version.
|
|
148
|
-
|
|
149
|
-
## Stack Rollback
|
|
150
|
-
|
|
151
|
-
Rollback is at the stack level — all components revert together so the stack stays internally consistent.
|
|
152
|
-
|
|
153
|
-
```bash
|
|
154
|
-
# Automatic on BVT failure
|
|
155
|
-
deploy_stack --rollback ${LAST_STABLE_STACK_VERSION}
|
|
156
|
-
|
|
157
|
-
# Manual on demand
|
|
158
|
-
deploy_stack --rollback --stack-version v1.2.3
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
The previous stable stack version is identified by the `aidlc/contracts/CHANGELOG.md` version at the time of the last green BVT.
|
|
162
|
-
|
|
163
|
-
## Artifacts
|
|
164
|
-
|
|
165
|
-
| Artifact | Purpose |
|
|
166
|
-
|----------|---------|
|
|
167
|
-
| `STACK_URL` / `BACKEND_URL` | Dynamic, per-platform, per-env |
|
|
168
|
-
| Per-component e2e report | Scenario pass/fail per component |
|
|
169
|
-
| Cross-stack e2e report | Full flow pass/fail |
|
|
170
|
-
| `aidlc/openspec/changes/{id}/contract-diff.md` | Final contract change record |
|
|
171
|
-
| BVT report | Stack-level health check results |
|
|
172
|
-
| Deploy log | Stack version, timestamp, component versions |
|
|
173
|
-
|
|
174
|
-
## Gate
|
|
175
|
-
|
|
176
|
-
**Before marking complete:**
|
|
177
|
-
- [ ] Unified stack preview deploy succeeded; `STACK_URL` and `BACKEND_URL` resolved
|
|
178
|
-
- [ ] All per-component BDD e2e tests pass against their preview URLs
|
|
179
|
-
- [ ] All cross-stack e2e tests pass against the unified stack URL
|
|
180
|
-
- [ ] Staging smoke tests pass
|
|
181
|
-
- [ ] Human approval received (covers per-component + cross-stack + staging + contract diff)
|
|
182
|
-
- [ ] Production stack deploy succeeded
|
|
183
|
-
- [ ] Stack BVT passed
|
|
184
|
-
- [ ] (If BVT failed) Stack rollback executed and confirmed
|
|
185
|
-
- [ ] `aidlc/openspec/changes/{id}/contract-diff.md` archived
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# Deliver Phase Agent Prompt
|
|
2
|
-
|
|
3
|
-
你是一个 AI-DLC Deliver Phase Agent。
|
|
4
|
-
由 Master Agent 委派处理部署交付。
|
|
5
|
-
|
|
6
|
-
## 输入
|
|
7
|
-
- `aidlc/openspec/changes/{id}/contract-diff.md`
|
|
8
|
-
- 所有 e2e 测试报告
|
|
9
|
-
|
|
10
|
-
## 任务
|
|
11
|
-
|
|
12
|
-
1. **Unified Stack Preview**
|
|
13
|
-
- `deploy_stack --preview --provider {tcb|aliyun} [--compute-mode {fc|sae}]`
|
|
14
|
-
- 输出 STACK_URL + per-component URLs
|
|
15
|
-
|
|
16
|
-
2. **Per-Component e2e**
|
|
17
|
-
- 对每个 affected component 运行 e2e 测试
|
|
18
|
-
- 使用动态解析的 URL
|
|
19
|
-
|
|
20
|
-
3. **Cross-Stack e2e**
|
|
21
|
-
- `pytest aidlc/tests/cross-stack/ --stack-url ${STACK_URL}`
|
|
22
|
-
|
|
23
|
-
4. **Staging Deploy + Smoke**
|
|
24
|
-
- `deploy_stack --env staging`
|
|
25
|
-
- 运行 smoke-test + health-check
|
|
26
|
-
|
|
27
|
-
5. **Production Gate + Deploy**
|
|
28
|
-
- 等待 Human Approval
|
|
29
|
-
- `deploy_stack --env production`
|
|
30
|
-
- BVT 验证 + 自动回滚
|
|
31
|
-
|
|
32
|
-
## 输出产物
|
|
33
|
-
- 动态 URLs(STACK_URL / BACKEND_URL / WEB_URL)
|
|
34
|
-
- e2e 测试报告(per-component + cross-stack)
|
|
35
|
-
- BVT 报告
|
|
36
|
-
- 部署日志
|
|
37
|
-
|
|
38
|
-
## 约束
|
|
39
|
-
- 遵守 DLV-001 到 DLV-004
|
|
40
|
-
- 遵守 STK-004 到 STK-006(统一部署 + 构建配置注入 + stack 级回滚)
|