@scemoon/cdh 1.0.5 → 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/run.js +68 -14
- 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 -758
- 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,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 级回滚)
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
# Deliver Rules (DLV-*) + Stack Rules (STK-*)
|
|
2
|
-
|
|
3
|
-
## DLV-001: Unified Stack Preview Before Production
|
|
4
|
-
**Severity:** MUST
|
|
5
|
-
**Description:** Every release MUST deploy as unified stack preview with per-component e2e + cross-stack e2e passing before production.
|
|
6
|
-
**Valid:** `deploy_stack --preview` → `pytest aidlc/tests/cross-stack/ --stack-url $STACK_URL`.
|
|
7
|
-
**Invalid:** Deploying only one component to preview.
|
|
8
|
-
|
|
9
|
-
## DLV-002: Production Approval Gate
|
|
10
|
-
**Severity:** MUST
|
|
11
|
-
**Description:** Production deployment requires explicit human approval reviewing per-component e2e, cross-stack e2e, staging smoke, and contract-diff.md.
|
|
12
|
-
**Valid:** Human reviews all reports and explicitly approves.
|
|
13
|
-
**Invalid:** Automated production deployment triggered solely by test pass.
|
|
14
|
-
|
|
15
|
-
## DLV-003: Stack BVT Validation
|
|
16
|
-
**Severity:** MUST
|
|
17
|
-
**Description:** After production deploy, BVT MUST run against the stack. Failure triggers automatic stack rollback.
|
|
18
|
-
**Valid:** `bvt ${PRODUCTION_URL}` → fail → `deploy_stack --rollback`.
|
|
19
|
-
**Invalid:** BVT skip or success with errors.
|
|
20
|
-
|
|
21
|
-
## DLV-004: Per-Component Preview URL Isolation
|
|
22
|
-
**Severity:** MUST
|
|
23
|
-
**Description:** e2e tests run against dynamic preview URLs, never hardcoded production URLs.
|
|
24
|
-
**Valid:** `pytest apps/web/tests/e2e/ --preview-url $WEB_URL`.
|
|
25
|
-
**Invalid:** Hardcoded `https://prod.example.com` in tests.
|
|
26
|
-
|
|
27
|
-
## STK-001: Component Scope Declaration
|
|
28
|
-
**Severity:** MUST
|
|
29
|
-
**Description:** Every spec delta, design doc, task list MUST declare `affects:`.
|
|
30
|
-
**Valid:** `affects: [web, backend, contracts]`.
|
|
31
|
-
**Invalid:** Missing `affects` declaration.
|
|
32
|
-
|
|
33
|
-
## STK-002: Cross-Component Tasks Have Edges
|
|
34
|
-
**Severity:** MUST
|
|
35
|
-
**Description:** Tasks consuming a contract MUST have explicit `depends_on` edge to producing task.
|
|
36
|
-
**Valid:** `depends_on: [int-contract-auth-login, be-login-endpoint]`.
|
|
37
|
-
**Invalid:** Implicit dependency with no DAG edge.
|
|
38
|
-
|
|
39
|
-
## STK-003: Cross-Stack E2E Mandatory for ≥2 Components
|
|
40
|
-
**Severity:** MUST
|
|
41
|
-
**Description:** Changes affecting ≥2 components MUST have cross-stack e2e testing real flow between components.
|
|
42
|
-
**Valid:** Real web client against real backend preview.
|
|
43
|
-
**Invalid:** Cross-stack test that mocks the other component.
|
|
44
|
-
|
|
45
|
-
## STK-004: Unified Stack Deploy
|
|
46
|
-
**Severity:** MUST
|
|
47
|
-
**Description:** Shared environments MUST use `deploy_stack` orchestrator, not per-component ad-hoc deploys.
|
|
48
|
-
**Valid:** `deploy_stack --preview` deploys all components.
|
|
49
|
-
**Invalid:** Ad-hoc per-component deploy to shared preview.
|
|
50
|
-
|
|
51
|
-
## STK-005: Cross-Component Build Config Injection
|
|
52
|
-
**Severity:** MUST
|
|
53
|
-
**Description:** All client builds receive `BACKEND_URL` as build-time env var, never hardcoded.
|
|
54
|
-
**Valid:** `pnpm --filter web build --env BACKEND_URL=$BACKEND_URL`.
|
|
55
|
-
**Invalid:** Hardcoded URLs in `.env.production`.
|
|
56
|
-
|
|
57
|
-
## STK-006: Stack-Level Rollback
|
|
58
|
-
**Severity:** MUST
|
|
59
|
-
**Description:** Rollback is stack operation. Entire previous stable version reverts together.
|
|
60
|
-
**Valid:** `deploy_stack --rollback v1.2.3` reverts all components.
|
|
61
|
-
**Invalid:** Rolling back only backend while leaving clients on new version.
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ai-dlc-plan
|
|
3
|
-
description: "Plan Phase: Design Doc → Task DAG → Test Plan"
|
|
4
|
-
triggers:
|
|
5
|
-
- plan
|
|
6
|
-
- design
|
|
7
|
-
- task-list
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Plan Phase (规划)
|
|
11
|
-
|
|
12
|
-
Convert approved spec into technical design and task decomposition.
|
|
13
|
-
|
|
14
|
-
## Entry
|
|
15
|
-
|
|
16
|
-
See `lifecycle.md` for the full phase flow.
|
|
17
|
-
See `rules.md` for enforceable rules (PLN-001 to PLN-004).
|
|
18
|
-
See `prompt.md` for the sub-agent delegation prompt template.
|
|
19
|
-
|
|
20
|
-
## 当被委派时
|
|
21
|
-
|
|
22
|
-
1. 读取 spec-delta 和 feature 文件
|
|
23
|
-
2. 生成设计文档(per-component + integration)
|
|
24
|
-
3. 分解为带 DAG 依赖的任务单元
|
|
25
|
-
4. 编写测试计划(每层)
|
|
@@ -1,204 +0,0 @@
|
|
|
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
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# Plan Phase Agent Prompt
|
|
2
|
-
|
|
3
|
-
你是一个 AI-DLC Plan Phase Agent。
|
|
4
|
-
由 Master Agent 委派处理方案设计。
|
|
5
|
-
|
|
6
|
-
## 输入
|
|
7
|
-
- `aidlc/openspec/changes/{id}/spec-delta.md`
|
|
8
|
-
- BDD feature 文件
|
|
9
|
-
|
|
10
|
-
## 任务
|
|
11
|
-
|
|
12
|
-
1. **SDD: Design Doc**
|
|
13
|
-
- 在 `aidlc/openspec/changes/{id}/design.md` 输出
|
|
14
|
-
- 包含:架构图(Mermaid)、数据模型、API 表、状态机
|
|
15
|
-
- 每组件独立 section + 集成 section
|
|
16
|
-
|
|
17
|
-
2. **SDD: Task Decomposition**
|
|
18
|
-
- 在 `aidlc/openspec/changes/{id}/task-list.md` 输出
|
|
19
|
-
- YAML 格式,unit 带 `depends_on` DAG
|
|
20
|
-
- 跨组件 task 显示声明 `depends_on` 关系
|
|
21
|
-
|
|
22
|
-
3. **TDD: Test Plan**
|
|
23
|
-
- 每个 BDD scenario 对应最少一个测试 case
|
|
24
|
-
- 标注 layer: unit / integration / e2e / cross-stack / contract
|
|
25
|
-
|
|
26
|
-
4. **Contract Plan**
|
|
27
|
-
- 标注版本影响:additive / breaking
|
|
28
|
-
- 如需 breaking change 标记为 human-approval 阻塞
|
|
29
|
-
|
|
30
|
-
## 输出产物
|
|
31
|
-
- `aidlc/openspec/changes/{id}/design.md`
|
|
32
|
-
- `aidlc/openspec/changes/{id}/task-list.md`
|
|
33
|
-
- `aidlc/openspec/changes/{id}/contract-diff.md`(占位)
|
|
34
|
-
|
|
35
|
-
## 约束
|
|
36
|
-
- 遵守 `rules.md` 中的 PLN-001 到 PLN-004
|
|
37
|
-
- 遵守 STK-001, STK-002(affects 声明 + cross-component 依赖)
|
|
38
|
-
- 完成前必须通过 Human Gate 审查
|
|
@@ -1,25 +0,0 @@
|
|
|
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.
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ai-dlc-understand
|
|
3
|
-
description: "Understand Phase: Intent → Spec Delta → BDD Feature Files"
|
|
4
|
-
triggers:
|
|
5
|
-
- understand
|
|
6
|
-
- spec-delta
|
|
7
|
-
- EARS
|
|
8
|
-
- feature file
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Understand Phase (理解)
|
|
12
|
-
|
|
13
|
-
Transform business intent into formal specification and behavior scenarios.
|
|
14
|
-
|
|
15
|
-
## Entry
|
|
16
|
-
|
|
17
|
-
See `lifecycle.md` for the full phase flow.
|
|
18
|
-
See `rules.md` for enforceable rules (UND-001 to UND-006).
|
|
19
|
-
See `prompt.md` for the sub-agent delegation prompt template.
|
|
20
|
-
|
|
21
|
-
## 当被委派时
|
|
22
|
-
|
|
23
|
-
1. 读取 intent 输入
|
|
24
|
-
2. 按 SDD 方法生成 spec-delta(EARS 格式)
|
|
25
|
-
3. 为每个 FR 写 BDD feature 文件(≥3 scenarios: positive, negative, edge)
|
|
26
|
-
4. 输出到 `aidlc/openspec/changes/{id}/`
|