@scemoon/cdh 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai-dlc-skill/SKILL.md +75 -0
- package/ai-dlc-skill/agents/deliver-agent.md +24 -0
- package/ai-dlc-skill/agents/master.md +44 -0
- package/ai-dlc-skill/agents/plan-agent.md +23 -0
- package/ai-dlc-skill/agents/understand-agent.md +23 -0
- package/ai-dlc-skill/agents/verify-agent.md +27 -0
- package/ai-dlc-skill/architecture/project-structure.md +78 -0
- package/ai-dlc-skill/brownfield/README.md +30 -0
- package/ai-dlc-skill/brownfield/generate-context.sh +64 -0
- package/ai-dlc-skill/brownfield/scripts/deps.sh +27 -0
- package/ai-dlc-skill/brownfield/scripts/discover.sh +34 -0
- package/ai-dlc-skill/brownfield/scripts/extract-api.sh +45 -0
- package/ai-dlc-skill/components/backend.md +34 -0
- package/ai-dlc-skill/components/desktop.md +30 -0
- package/ai-dlc-skill/components/mya.md +29 -0
- package/ai-dlc-skill/components/native.md +30 -0
- package/ai-dlc-skill/components/tta.md +29 -0
- package/ai-dlc-skill/components/web.md +31 -0
- package/ai-dlc-skill/components/wxa.md +29 -0
- package/ai-dlc-skill/contracts/README.md +25 -0
- package/ai-dlc-skill/core/adaptive-flow.md +36 -0
- package/ai-dlc-skill/core/security.md +29 -0
- package/ai-dlc-skill/cross-tool/cline/export.sh +31 -0
- package/ai-dlc-skill/cross-tool/copilot/export.sh +47 -0
- package/ai-dlc-skill/cross-tool/cursor/export.sh +32 -0
- package/ai-dlc-skill/cross-tool/export.sh +22 -0
- package/ai-dlc-skill/cross-tool/onecode/config.yaml.tpl +17 -0
- package/ai-dlc-skill/cross-tool/onecode/export-skills.sh +31 -0
- package/ai-dlc-skill/cross-tool/onecode/export.sh +48 -0
- package/ai-dlc-skill/phases/deliver/entry.md +26 -0
- package/ai-dlc-skill/phases/deliver/lifecycle.md +185 -0
- package/ai-dlc-skill/phases/deliver/prompt.md +40 -0
- package/ai-dlc-skill/phases/deliver/rules.md +61 -0
- package/ai-dlc-skill/phases/plan/entry.md +25 -0
- package/ai-dlc-skill/phases/plan/lifecycle.md +204 -0
- package/ai-dlc-skill/phases/plan/prompt.md +38 -0
- package/ai-dlc-skill/phases/plan/rules.md +25 -0
- package/ai-dlc-skill/phases/understand/entry.md +26 -0
- package/ai-dlc-skill/phases/understand/lifecycle.md +184 -0
- package/ai-dlc-skill/phases/understand/prompt.md +41 -0
- package/ai-dlc-skill/phases/understand/rules.md +37 -0
- package/ai-dlc-skill/phases/verify/entry.md +26 -0
- package/ai-dlc-skill/phases/verify/lifecycle.md +192 -0
- package/ai-dlc-skill/phases/verify/prompt.md +43 -0
- package/ai-dlc-skill/phases/verify/rules.md +73 -0
- package/ai-dlc-skill/practices/bdd.md +91 -0
- package/ai-dlc-skill/practices/sdd.md +84 -0
- package/ai-dlc-skill/practices/tdd.md +95 -0
- package/ai-dlc-skill/providers/README.md +114 -0
- package/ai-dlc-skill/providers/aliyun/deployment.yaml +66 -0
- package/ai-dlc-skill/providers/aliyun/preview.yaml +84 -0
- package/ai-dlc-skill/providers/aliyun/provider.yaml +160 -0
- package/ai-dlc-skill/providers/tcb/deployment.yaml +69 -0
- package/ai-dlc-skill/providers/tcb/preview.yaml +83 -0
- package/ai-dlc-skill/providers/tcb/provider.yaml +172 -0
- package/ai-dlc-skill/requirements.md +140 -0
- package/ai-dlc-skill/skill.yaml +147 -0
- package/ai-dlc-skill/templates/integration/CHANGELOG.md +41 -0
- package/ai-dlc-skill/templates/integration/asyncapi.yaml +43 -0
- package/ai-dlc-skill/templates/integration/contract-diff.md +63 -0
- package/ai-dlc-skill/templates/integration/contract-spec.md +49 -0
- package/ai-dlc-skill/templates/integration/openapi.yaml +18 -0
- package/ai-dlc-skill/templates/integration/runtime-contract.yaml +36 -0
- package/ai-dlc-skill/templates/plan/design.md +49 -0
- package/ai-dlc-skill/templates/plan/task-list.md +32 -0
- package/ai-dlc-skill/templates/project/README.md +127 -0
- package/ai-dlc-skill/templates/project/template.md +119 -0
- package/ai-dlc-skill/templates/understand/feature.feature +23 -0
- package/ai-dlc-skill/templates/understand/intent.md +29 -0
- package/ai-dlc-skill/templates/understand/spec-delta.md +47 -0
- package/ai-dlc-skill/templates/verify/test-unit.py +27 -0
- package/ai-dlc-skill/walkthrough/collect.sh +50 -0
- package/ai-dlc-skill/walkthrough/template.md +54 -0
- package/ai-dlc-skill/workflows/ai-dlc.yaml +110 -0
- package/ai-dlc-skill/workflows/deployment.yaml +199 -0
- package/cdh/__init__.py +0 -0
- package/cdh/__main__.py +4 -0
- package/cdh/__pycache__/__init__.cpython-313.pyc +0 -0
- package/cdh/__pycache__/__init__.cpython-314.pyc +0 -0
- package/cdh/__pycache__/cli.cpython-314.pyc +0 -0
- package/cdh/__pycache__/scaffold.cpython-313.pyc +0 -0
- package/cdh/__pycache__/scaffold.cpython-314.pyc +0 -0
- package/cdh/cli.py +361 -0
- package/cdh/scaffold.py +312 -0
- package/cli.js +2 -0
- package/onecode/__init__.py +1 -0
- package/onecode/__main__.py +4 -0
- package/onecode/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/__pycache__/cli.cpython-314.pyc +0 -0
- package/onecode/__pycache__/commands.cpython-314.pyc +0 -0
- package/onecode/__pycache__/config.cpython-314.pyc +0 -0
- package/onecode/__pycache__/config_screen.cpython-314.pyc +0 -0
- package/onecode/__pycache__/mock_data.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_agent_acp.cpython-313.pyc +0 -0
- package/onecode/agent/__pycache__/cdh_agent_acp.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__/harness_skill.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__/session.cpython-314.pyc +0 -0
- package/onecode/agent/agents/__init__.py +29 -0
- package/onecode/agent/agents/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/agent/agents/__pycache__/types.cpython-314.pyc +0 -0
- package/onecode/agent/agents/types.py +662 -0
- package/onecode/agent/attachments.py +113 -0
- package/onecode/agent/cdh_loader.py +262 -0
- package/onecode/agent/context.py +338 -0
- package/onecode/agent/engine.py +1894 -0
- package/onecode/agent/hooks.py +86 -0
- package/onecode/agent/onecode_agent_acp.py +2203 -0
- package/onecode/agent/permissions.py +151 -0
- package/onecode/agent/permissions_store.py +62 -0
- package/onecode/agent/session.py +186 -0
- package/onecode/agent/snapshot.py +145 -0
- package/onecode/agent/tools/__init__.py +17 -0
- package/onecode/agent/tools/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/agent_tools.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/apply_patch_tool.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/bash_tool.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/communication_tools.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/config_tool.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/cron_tools.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/errors.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/file_ops.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/file_tools.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/git_tools.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/lsp_tools.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/mcp_tools.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/permission_handler.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/permissions.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/protocol.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/registry.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/sandbox.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/schema_validation.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/skill_tools.cpython-314.pyc +0 -0
- package/onecode/agent/tools/__pycache__/task_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 +134 -0
- package/onecode/agent/tools/apply_patch_tool.py +144 -0
- package/onecode/agent/tools/bash_tool.py +91 -0
- package/onecode/agent/tools/communication_tools.py +149 -0
- package/onecode/agent/tools/config_tool.py +130 -0
- package/onecode/agent/tools/cron_tools.py +179 -0
- package/onecode/agent/tools/errors.py +17 -0
- package/onecode/agent/tools/file_ops.py +187 -0
- package/onecode/agent/tools/file_tools.py +226 -0
- package/onecode/agent/tools/git_tools.py +88 -0
- package/onecode/agent/tools/lsp_tools.py +404 -0
- package/onecode/agent/tools/mcp_tools.py +129 -0
- package/onecode/agent/tools/permission_handler.py +46 -0
- package/onecode/agent/tools/permissions.py +77 -0
- package/onecode/agent/tools/protocol.py +20 -0
- package/onecode/agent/tools/registry.py +134 -0
- package/onecode/agent/tools/sandbox.py +264 -0
- package/onecode/agent/tools/schema_validation.py +100 -0
- package/onecode/agent/tools/skill_tools.py +52 -0
- package/onecode/agent/tools/task_tools.py +249 -0
- package/onecode/agent/tools/web_tools.py +170 -0
- package/onecode/builtin_skills/git/SKILL.md +64 -0
- package/onecode/builtin_skills/git/skill.yaml +7 -0
- package/onecode/builtin_skills/shell/SKILL.md +58 -0
- package/onecode/builtin_skills/shell/skill.yaml +8 -0
- package/onecode/cli.py +755 -0
- package/onecode/cloud/__init__.py +0 -0
- package/onecode/cloud/base.py +20 -0
- package/onecode/codebase/__init__.py +69 -0
- package/onecode/codebase/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/codebase/__pycache__/chunker.cpython-314.pyc +0 -0
- package/onecode/codebase/__pycache__/config.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 +130 -0
- package/onecode/codebase/indexer.py +136 -0
- package/onecode/codebase/retriever.py +192 -0
- package/onecode/codebase/storage.py +130 -0
- package/onecode/codebase/tools.py +59 -0
- package/onecode/commands.py +276 -0
- package/onecode/config.py +285 -0
- package/onecode/config_screen.py +594 -0
- package/onecode/cron/__init__.py +3 -0
- package/onecode/lsp/__init__.py +3 -0
- package/onecode/mcp/__init__.py +4 -0
- package/onecode/mcp/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/mcp/__pycache__/client.cpython-314.pyc +0 -0
- package/onecode/mcp/__pycache__/manager.cpython-314.pyc +0 -0
- package/onecode/mcp/client.py +193 -0
- package/onecode/mcp/manager.py +191 -0
- package/onecode/memory/__init__.py +95 -0
- package/onecode/memory/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/memory/__pycache__/backend.cpython-314.pyc +0 -0
- package/onecode/memory/__pycache__/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 +185 -0
- package/onecode/memory/offload.py +114 -0
- package/onecode/memory/pyramid.py +202 -0
- package/onecode/memory/recall.py +168 -0
- package/onecode/memory/symbolic.py +164 -0
- package/onecode/models/__init__.py +4 -0
- package/onecode/models/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/models/__pycache__/errors.cpython-314.pyc +0 -0
- package/onecode/models/__pycache__/messages.cpython-314.pyc +0 -0
- package/onecode/models/__pycache__/provider.cpython-314.pyc +0 -0
- package/onecode/models/__pycache__/registry.cpython-314.pyc +0 -0
- package/onecode/models/errors.py +94 -0
- package/onecode/models/messages.py +662 -0
- package/onecode/models/provider.py +450 -0
- package/onecode/models/providers/__init__.py +17 -0
- package/onecode/models/providers/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/models/providers/__pycache__/anthropic_provider.cpython-314.pyc +0 -0
- package/onecode/models/providers/__pycache__/deepseek_provider.cpython-314.pyc +0 -0
- package/onecode/models/providers/__pycache__/glm_provider.cpython-314.pyc +0 -0
- package/onecode/models/providers/__pycache__/minimax_provider.cpython-314.pyc +0 -0
- package/onecode/models/providers/__pycache__/minimaxi_provider.cpython-314.pyc +0 -0
- package/onecode/models/providers/__pycache__/mock_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 +224 -0
- package/onecode/models/providers/deepseek_provider.py +210 -0
- package/onecode/models/providers/glm_provider.py +154 -0
- package/onecode/models/providers/minimax_provider.py +154 -0
- package/onecode/models/providers/minimaxi_provider.py +363 -0
- package/onecode/models/providers/ollama_provider.py +96 -0
- package/onecode/models/providers/openai_provider.py +233 -0
- package/onecode/models/registry.py +212 -0
- package/onecode/server/__init__.py +3 -0
- package/onecode/server/app.py +224 -0
- package/onecode/skills/__init__.py +11 -0
- package/onecode/skills/__pycache__/__init__.cpython-314.pyc +0 -0
- package/onecode/skills/__pycache__/argument_substitution.cpython-314.pyc +0 -0
- package/onecode/skills/__pycache__/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 +39 -0
- package/onecode/skills/create.py +56 -0
- package/onecode/skills/frontmatter.py +33 -0
- package/onecode/skills/loader.py +157 -0
- package/onecode/skills/manager.py +75 -0
- package/onecode/skills/model.py +43 -0
- package/onecode/storage/__init__.py +0 -0
- package/onecode/storage/activity.py +64 -0
- package/onecode/storage/project.py +54 -0
- package/onecode/storage/session.py +113 -0
- package/onecode/tasks/__init__.py +26 -0
- package/onecode/tasks/manager.py +219 -0
- package/onecode/tasks/models.py +240 -0
- package/onecode/trace/__init__.py +0 -0
- package/onecode/trace/tracer.py +174 -0
- package/onecode/utils/__init__.py +0 -0
- package/onecode/utils/helpers.py +20 -0
- package/onecode-cli.js +2 -0
- package/package.json +32 -0
- package/pyproject.toml +60 -0
- package/run.js +86 -0
- package/tui/__init__.py +46 -0
- package/tui/__main__.py +4 -0
- package/tui/__pycache__/__init__.cpython-314.pyc +0 -0
- package/tui/__pycache__/_loop.cpython-314.pyc +0 -0
- package/tui/__pycache__/_path_fuzzy_search.cpython-314.pyc +0 -0
- package/tui/__pycache__/_path_match.cpython-314.pyc +0 -0
- package/tui/__pycache__/agent.cpython-314.pyc +0 -0
- package/tui/__pycache__/agent_schema.cpython-314.pyc +0 -0
- package/tui/__pycache__/agents.cpython-314.pyc +0 -0
- package/tui/__pycache__/answer.cpython-314.pyc +0 -0
- package/tui/__pycache__/app.cpython-314.pyc +0 -0
- package/tui/__pycache__/atomic.cpython-314.pyc +0 -0
- package/tui/__pycache__/complete.cpython-314.pyc +0 -0
- package/tui/__pycache__/constants.cpython-314.pyc +0 -0
- package/tui/__pycache__/conversation_markdown.cpython-314.pyc +0 -0
- package/tui/__pycache__/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 +86 -0
- package/tui/_path_fuzzy_search.py +48 -0
- package/tui/_path_match.py +141 -0
- package/tui/about.py +95 -0
- package/tui/acp/__pycache__/agent.cpython-314.pyc +0 -0
- package/tui/acp/__pycache__/api.cpython-314.pyc +0 -0
- package/tui/acp/__pycache__/encode_tool_call_id.cpython-314.pyc +0 -0
- package/tui/acp/__pycache__/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 +886 -0
- package/tui/acp/api.py +55 -0
- package/tui/acp/encode_tool_call_id.py +12 -0
- package/tui/acp/messages.py +190 -0
- package/tui/acp/prompt.py +110 -0
- package/tui/acp/protocol.py +462 -0
- package/tui/agent.py +70 -0
- package/tui/agent_schema.py +76 -0
- package/tui/agents.py +45 -0
- package/tui/ansi/__init__.py +1 -0
- package/tui/ansi/__pycache__/__init__.cpython-314.pyc +0 -0
- package/tui/ansi/__pycache__/_ansi.cpython-314.pyc +0 -0
- package/tui/ansi/__pycache__/_ansi_colors.cpython-314.pyc +0 -0
- package/tui/ansi/__pycache__/_control_codes.cpython-314.pyc +0 -0
- package/tui/ansi/__pycache__/_keys.cpython-314.pyc +0 -0
- package/tui/ansi/__pycache__/_sgr_styles.cpython-314.pyc +0 -0
- package/tui/ansi/__pycache__/_stream_parser.cpython-314.pyc +0 -0
- package/tui/ansi/_ansi.py +1689 -0
- package/tui/ansi/_ansi_colors.py +264 -0
- package/tui/ansi/_control_codes.py +37 -0
- package/tui/ansi/_keys.py +251 -0
- package/tui/ansi/_sgr_styles.py +64 -0
- package/tui/ansi/_stream_parser.py +418 -0
- package/tui/answer.py +12 -0
- package/tui/app.py +1236 -0
- package/tui/atomic.py +37 -0
- package/tui/cli.py +313 -0
- package/tui/code_analyze.py +27 -0
- package/tui/complete.py +38 -0
- package/tui/constants.py +61 -0
- package/tui/conversation_markdown.py +30 -0
- package/tui/danger.py +372 -0
- package/tui/data/agents/ampcode.com.toml +51 -0
- package/tui/data/agents/augmentcode.com.toml +40 -0
- package/tui/data/agents/cdh.cloud-dev-harness.toml +22 -0
- package/tui/data/agents/claude.com.toml +41 -0
- package/tui/data/agents/copilot.github.com.toml +29 -0
- package/tui/data/agents/crowai.dev.toml +35 -0
- package/tui/data/agents/cursor.com.toml +38 -0
- package/tui/data/agents/deepagents.langchain.com +33 -0
- package/tui/data/agents/docker.com.toml +59 -0
- package/tui/data/agents/geminicli.com.toml +28 -0
- package/tui/data/agents/goose.ai.toml +51 -0
- package/tui/data/agents/inference.huggingface.co.toml +41 -0
- package/tui/data/agents/kimi.com.toml +35 -0
- package/tui/data/agents/kiro.dev.toml +42 -0
- package/tui/data/agents/openai.com.toml +53 -0
- package/tui/data/agents/openclaw.ai.toml +37 -0
- package/tui/data/agents/opencode.ai.toml +39 -0
- package/tui/data/agents/openhands.dev.toml +45 -0
- package/tui/data/agents/stakpak.dev.toml +61 -0
- package/tui/data/agents/vibe.mistral.ai.toml +30 -0
- package/tui/data/agents/vtcode.dev.toml +62 -0
- package/tui/data/images/frog.png +0 -0
- package/tui/data/sounds/question.wav +0 -0
- package/tui/data/sounds/turn-over.wav +0 -0
- package/tui/db.py +190 -0
- package/tui/dec.py +332 -0
- package/tui/directory.py +234 -0
- package/tui/directory_suggester.py +93 -0
- package/tui/directory_watcher.py +197 -0
- package/tui/format_path.py +25 -0
- package/tui/fuzzy.py +140 -0
- package/tui/fuzzy_index.py +275 -0
- package/tui/gist.py +33 -0
- package/tui/history.py +138 -0
- package/tui/jsonrpc.py +578 -0
- package/tui/menus.py +14 -0
- package/tui/message_log.py +69 -0
- package/tui/messages.py +139 -0
- package/tui/option_content.py +51 -0
- package/tui/os.py +0 -0
- package/tui/path_complete.py +217 -0
- package/tui/path_filter.py +124 -0
- package/tui/paths.py +71 -0
- package/tui/pill.py +23 -0
- package/tui/platform_commands.py +52 -0
- package/tui/prompt/__pycache__/extract.cpython-314.pyc +0 -0
- package/tui/prompt/__pycache__/resource.cpython-314.pyc +0 -0
- package/tui/prompt/extract.py +19 -0
- package/tui/prompt/resource.py +68 -0
- package/tui/protocol.py +28 -0
- package/tui/screens/__init__.py +0 -0
- package/tui/screens/__pycache__/__init__.cpython-314.pyc +0 -0
- package/tui/screens/__pycache__/log.cpython-314.pyc +0 -0
- package/tui/screens/__pycache__/main.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__/settings.cpython-314.pyc +0 -0
- package/tui/screens/__pycache__/store.cpython-314.pyc +0 -0
- package/tui/screens/action_modal.py +94 -0
- package/tui/screens/agent_modal.py +175 -0
- package/tui/screens/command_edit_modal.py +74 -0
- package/tui/screens/log.py +553 -0
- package/tui/screens/main.py +411 -0
- package/tui/screens/main.tcss +655 -0
- package/tui/screens/permissions.py +404 -0
- package/tui/screens/permissions.tcss +72 -0
- package/tui/screens/projects.tcss +66 -0
- package/tui/screens/projects_app.py +319 -0
- package/tui/screens/projects_screen.py +142 -0
- package/tui/screens/session_resume_modal.py +172 -0
- package/tui/screens/session_resume_modal.tcss +35 -0
- package/tui/screens/sessions.py +166 -0
- package/tui/screens/sessions.tcss +119 -0
- package/tui/screens/settings.py +254 -0
- package/tui/screens/settings.tcss +101 -0
- package/tui/screens/store.py +500 -0
- package/tui/screens/store.tcss +274 -0
- package/tui/screens/tool_content_screen.py +59 -0
- package/tui/session_tracker.py +120 -0
- package/tui/settings.py +353 -0
- package/tui/settings_schema.py +431 -0
- package/tui/shell.py +304 -0
- package/tui/shell_read.py +42 -0
- package/tui/slash_command.py +34 -0
- package/tui/tui.tcss +246 -0
- package/tui/twitter.py +38 -0
- package/tui/version.py +80 -0
- package/tui/visuals/__init__.py +0 -0
- package/tui/visuals/__pycache__/__init__.cpython-314.pyc +0 -0
- package/tui/visuals/__pycache__/columns.cpython-314.pyc +0 -0
- package/tui/visuals/columns.py +273 -0
- 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-313.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__/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__/terminal.cpython-313.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-313.pyc +0 -0
- package/tui/widgets/__pycache__/tool_call.cpython-314.pyc +0 -0
- package/tui/widgets/__pycache__/user_input.cpython-314.pyc +0 -0
- package/tui/widgets/acp_content.py +70 -0
- package/tui/widgets/agent_response.py +77 -0
- package/tui/widgets/agent_thought.py +168 -0
- package/tui/widgets/ask_user.py +264 -0
- package/tui/widgets/command_pane.py +223 -0
- package/tui/widgets/condensed_path.py +115 -0
- package/tui/widgets/context_stats.py +66 -0
- package/tui/widgets/conversation.py +2441 -0
- package/tui/widgets/danger_warning.py +65 -0
- package/tui/widgets/diff_view.py +59 -0
- package/tui/widgets/directory_input.py +8 -0
- package/tui/widgets/flash.py +81 -0
- package/tui/widgets/future_text.py +126 -0
- package/tui/widgets/grid_select.py +234 -0
- package/tui/widgets/highlighted_textarea.py +180 -0
- package/tui/widgets/mandelbrot.py +294 -0
- package/tui/widgets/markdown_note.py +13 -0
- package/tui/widgets/menu.py +147 -0
- package/tui/widgets/modified_files.py +106 -0
- package/tui/widgets/non_selectable_label.py +5 -0
- package/tui/widgets/note.py +18 -0
- package/tui/widgets/path_search.py +492 -0
- package/tui/widgets/plan.py +263 -0
- package/tui/widgets/project_directory_tree.py +90 -0
- package/tui/widgets/project_grid_select.py +35 -0
- package/tui/widgets/project_summary.py +33 -0
- package/tui/widgets/prompt.py +795 -0
- package/tui/widgets/question.py +360 -0
- package/tui/widgets/session_grid_select.py +224 -0
- package/tui/widgets/session_summary.py +115 -0
- package/tui/widgets/session_tabs.py +188 -0
- package/tui/widgets/shell_result.py +35 -0
- package/tui/widgets/shell_terminal.py +40 -0
- package/tui/widgets/side_bar.py +114 -0
- package/tui/widgets/slash_complete.py +235 -0
- package/tui/widgets/strike_text.py +70 -0
- package/tui/widgets/subagent.py +87 -0
- package/tui/widgets/terminal.py +577 -0
- package/tui/widgets/terminal_tool.py +351 -0
- package/tui/widgets/throbber.py +100 -0
- package/tui/widgets/tool_call.py +368 -0
- package/tui/widgets/user_input.py +23 -0
- package/tui/widgets/version.py +5 -0
- package/tui/widgets/welcome.py +31 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Aliyun Stack Deployment
|
|
2
|
+
|
|
3
|
+
Production deployment pipeline for Aliyun. The default is the unified `deploy_stack` orchestrator; per-component deploys are only allowed into isolated dev sandboxes.
|
|
4
|
+
|
|
5
|
+
## Environments
|
|
6
|
+
|
|
7
|
+
| Environment | Purpose | Deploy Trigger | Orchestrator |
|
|
8
|
+
|-------------|---------|----------------|--------------|
|
|
9
|
+
| preview | Per-component + cross-stack e2e | Feature branch | `deploy_stack --preview` |
|
|
10
|
+
| staging | Pre-production stack validation | PR merge to main | `deploy_stack --env staging` |
|
|
11
|
+
| production | Live traffic | Release tag + human approval | `deploy_stack --env production` |
|
|
12
|
+
|
|
13
|
+
## Stack Deploy Steps
|
|
14
|
+
|
|
15
|
+
```yaml
|
|
16
|
+
staging:
|
|
17
|
+
orchestrator: deploy_stack
|
|
18
|
+
steps:
|
|
19
|
+
- fun deploy --env staging # backend
|
|
20
|
+
- rds migrate --env staging # backend (or tablestore)
|
|
21
|
+
- oss sync ./dist oss://bucket-staging/ # web
|
|
22
|
+
- cdn refresh --domain staging.example.com # web
|
|
23
|
+
- native build with BACKEND_URL injected # native
|
|
24
|
+
- desktop build with BACKEND_URL injected # desktop
|
|
25
|
+
- wxa build with BACKEND_URL injected # wxa
|
|
26
|
+
- mya build with BACKEND_URL injected # mya
|
|
27
|
+
- tta build with BACKEND_URL injected # tta
|
|
28
|
+
- smoke-test ${STACK_URL}
|
|
29
|
+
|
|
30
|
+
production:
|
|
31
|
+
orchestrator: deploy_stack
|
|
32
|
+
pre_conditions:
|
|
33
|
+
- human-approval-gate
|
|
34
|
+
steps:
|
|
35
|
+
- fun deploy --env production --publish
|
|
36
|
+
- rds migrate --env production
|
|
37
|
+
- oss sync ./dist oss://bucket-production/
|
|
38
|
+
- cdn refresh --domain example.com
|
|
39
|
+
- native build with BACKEND_URL injected
|
|
40
|
+
- desktop build with BACKEND_URL injected
|
|
41
|
+
- wxa build with BACKEND_URL injected
|
|
42
|
+
- mya build with BACKEND_URL injected
|
|
43
|
+
- tta build with BACKEND_URL injected
|
|
44
|
+
- smoke-test ${PRODUCTION_URL}
|
|
45
|
+
- health-check ${PRODUCTION_URL}/health
|
|
46
|
+
- bvt ${PRODUCTION_URL}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Per-Component Dev Sandbox (allowed)
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Personal dev sandbox — one user, one component
|
|
53
|
+
fun deploy --function hello --env dev-${USER}
|
|
54
|
+
oss cp -r ./dist oss://{dev-bucket}/ --update
|
|
55
|
+
# Per-component deploys to shared envs (preview/staging/production) are forbidden
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Stack Rollback
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Automatic on BVT failure
|
|
62
|
+
deploy_stack --rollback ${LAST_STABLE_STACK_VERSION} --provider aliyun
|
|
63
|
+
|
|
64
|
+
# Manual on demand
|
|
65
|
+
deploy_stack --rollback --stack-version v1.2.3 --provider aliyun
|
|
66
|
+
```
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Aliyun Stack Preview
|
|
2
|
+
|
|
3
|
+
Preview deployment for the unified stack (backend + all clients: web, native, desktop, wxa, mya, tta). URL resolution is dynamic per platform; `BACKEND_URL` is injected into client builds at build time.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`deploy_stack --preview --provider aliyun` deploys the full stack to an isolated preview environment and exports the stack URL. Used for per-component e2e AND cross-stack e2e verification before staging or production.
|
|
8
|
+
|
|
9
|
+
## Preview Flow
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
git push feature branch
|
|
13
|
+
→ deploy_stack --preview --provider aliyun
|
|
14
|
+
→ STACK_URL = BACKEND_URL = https://{gateway}.{region}.fc.devs.com
|
|
15
|
+
→ WEB_URL = https://{bucket}.{region}.oss-website.aliyuncs.com
|
|
16
|
+
→ NATIVE_DIST_URL = internal distribution URL
|
|
17
|
+
→ DESKTOP_DIST_URL = internal distribution URL
|
|
18
|
+
→ WXA_URL / MYA_URL / TTA_URL = mini-program preview QR
|
|
19
|
+
→ Per-component e2e: pytest apps/{comp}/tests/e2e/ --base-url $URL
|
|
20
|
+
→ Cross-stack e2e: pytest tests/cross-stack/ --stack-url $STACK_URL
|
|
21
|
+
→ TTL: 24h → auto cleanup
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Configuration
|
|
25
|
+
|
|
26
|
+
```yaml
|
|
27
|
+
preview:
|
|
28
|
+
orchestrator: deploy_stack
|
|
29
|
+
strategy: unified
|
|
30
|
+
ttl: 24h
|
|
31
|
+
auto_cleanup: true
|
|
32
|
+
db_sandbox: true # isolated DB per preview
|
|
33
|
+
url_pattern_backend: "https://{gateway}.{region}.fc.devs.com"
|
|
34
|
+
url_pattern_web: "https://{bucket}.{region}.oss-website.aliyuncs.com"
|
|
35
|
+
build_env:
|
|
36
|
+
web:
|
|
37
|
+
- BACKEND_URL
|
|
38
|
+
- STACK_URL
|
|
39
|
+
native:
|
|
40
|
+
- BACKEND_URL
|
|
41
|
+
desktop:
|
|
42
|
+
- BACKEND_URL
|
|
43
|
+
wxa:
|
|
44
|
+
- BACKEND_URL
|
|
45
|
+
mya:
|
|
46
|
+
- BACKEND_URL
|
|
47
|
+
tta:
|
|
48
|
+
- BACKEND_URL
|
|
49
|
+
env:
|
|
50
|
+
- STACK_URL # = BACKEND_URL (gateway)
|
|
51
|
+
- BACKEND_URL
|
|
52
|
+
- WEB_URL
|
|
53
|
+
- NATIVE_DIST_URL
|
|
54
|
+
- DESKTOP_DIST_URL
|
|
55
|
+
- WXA_URL
|
|
56
|
+
- MYA_URL
|
|
57
|
+
- TTA_URL
|
|
58
|
+
- DATABASE_URL (sandbox)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## BDD E2E Integration
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Deploy unified stack preview
|
|
65
|
+
export STACK_URL=$(deploy_stack --preview --provider aliyun --output url)
|
|
66
|
+
export BACKEND_URL=$STACK_URL
|
|
67
|
+
export WEB_URL=$(deploy_stack --preview --provider aliyun --output web_url)
|
|
68
|
+
export NATIVE_DIST_URL=$(deploy_stack --preview --provider aliyun --output native_url)
|
|
69
|
+
export DESKTOP_DIST_URL=$(deploy_stack --preview --provider aliyun --output desktop_url)
|
|
70
|
+
|
|
71
|
+
# Per-component e2e
|
|
72
|
+
pytest apps/backend/tests/e2e/ --base-url $BACKEND_URL
|
|
73
|
+
pytest apps/web/tests/e2e/ --base-url $WEB_URL --api-url $BACKEND_URL
|
|
74
|
+
pytest apps/native/tests/e2e/ --backend-url $BACKEND_URL
|
|
75
|
+
pytest apps/desktop/tests/e2e/ --backend-url $BACKEND_URL
|
|
76
|
+
pytest apps/wxa/tests/e2e/ --backend-url $BACKEND_URL
|
|
77
|
+
pytest apps/mya/tests/e2e/ --backend-url $BACKEND_URL
|
|
78
|
+
pytest apps/tta/tests/e2e/ --backend-url $BACKEND_URL
|
|
79
|
+
|
|
80
|
+
# Cross-stack e2e
|
|
81
|
+
pytest tests/cross-stack/ --stack-url $STACK_URL
|
|
82
|
+
|
|
83
|
+
# Cleanup (automatic after TTL)
|
|
84
|
+
```
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# Aliyun Provider (Stack-aware)
|
|
2
|
+
|
|
3
|
+
Aliyun (Alibaba Cloud) provider — secondary platform. Supports the unified stack deploy (backend + all clients: web, native, desktop, wxa, mya, tta) and per-component deploys (for isolated dev sandboxes only).
|
|
4
|
+
|
|
5
|
+
## Metadata
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
provider:
|
|
9
|
+
name: aliyun
|
|
10
|
+
display_name: Alibaba Cloud
|
|
11
|
+
default: false
|
|
12
|
+
version: 3.0.0
|
|
13
|
+
website: https://www.aliyun.com/
|
|
14
|
+
|
|
15
|
+
stack:
|
|
16
|
+
components:
|
|
17
|
+
- id: backend
|
|
18
|
+
deploy_order: 1
|
|
19
|
+
exposes: BACKEND_URL
|
|
20
|
+
- id: web
|
|
21
|
+
deploy_order: 2
|
|
22
|
+
consumes: BACKEND_URL
|
|
23
|
+
- id: native
|
|
24
|
+
deploy_order: 2
|
|
25
|
+
consumes: BACKEND_URL
|
|
26
|
+
- id: desktop
|
|
27
|
+
deploy_order: 2
|
|
28
|
+
consumes: BACKEND_URL
|
|
29
|
+
- id: wxa
|
|
30
|
+
deploy_order: 2
|
|
31
|
+
consumes: BACKEND_URL
|
|
32
|
+
- id: mya
|
|
33
|
+
deploy_order: 2
|
|
34
|
+
consumes: BACKEND_URL
|
|
35
|
+
- id: tta
|
|
36
|
+
deploy_order: 2
|
|
37
|
+
consumes: BACKEND_URL
|
|
38
|
+
|
|
39
|
+
regions:
|
|
40
|
+
- id: cn-shanghai
|
|
41
|
+
name: Shanghai
|
|
42
|
+
- id: cn-beijing
|
|
43
|
+
name: Beijing
|
|
44
|
+
- id: cn-hangzhou
|
|
45
|
+
name: Hangzhou
|
|
46
|
+
- id: ap-southeast-1
|
|
47
|
+
name: Singapore
|
|
48
|
+
|
|
49
|
+
services:
|
|
50
|
+
- functions: function-compute
|
|
51
|
+
- database: rds + tablestore
|
|
52
|
+
- storage: oss
|
|
53
|
+
- hosting: static-website + cdn
|
|
54
|
+
|
|
55
|
+
limits:
|
|
56
|
+
function_timeout: 600s
|
|
57
|
+
function_memory: 3072MB
|
|
58
|
+
|
|
59
|
+
compute_modes:
|
|
60
|
+
- id: fc
|
|
61
|
+
type: faas
|
|
62
|
+
default: true
|
|
63
|
+
description: "Function Compute — event-driven functions"
|
|
64
|
+
limits:
|
|
65
|
+
timeout: 600s
|
|
66
|
+
memory: 3072MB
|
|
67
|
+
- id: sae
|
|
68
|
+
type: caas
|
|
69
|
+
description: "Serverless App Engine 2.0 — container/web app hosting"
|
|
70
|
+
limits:
|
|
71
|
+
timeout: 86400s
|
|
72
|
+
memory: 32768MB
|
|
73
|
+
|
|
74
|
+
capabilities:
|
|
75
|
+
- function_compute
|
|
76
|
+
- serverless_app_engine
|
|
77
|
+
- oss_storage
|
|
78
|
+
- rds_database
|
|
79
|
+
- tablestore
|
|
80
|
+
- static_hosting
|
|
81
|
+
- cdn_acceleration
|
|
82
|
+
- preview_deploy
|
|
83
|
+
- ssl_cert
|
|
84
|
+
- stack_deploy
|
|
85
|
+
- build_env_injection
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Stack Deploy (recommended for shared environments)
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# Unified stack preview
|
|
92
|
+
deploy_stack --preview --provider aliyun
|
|
93
|
+
# → backend: fun deploy --env preview
|
|
94
|
+
# → web: oss + cdn deploy with build env BACKEND_URL=${STACK_URL}
|
|
95
|
+
# → native: build with BACKEND_URL injected; package
|
|
96
|
+
# → desktop: build with BACKEND_URL injected; package
|
|
97
|
+
# → wxa: build with BACKEND_URL injected; upload to mini-program platform
|
|
98
|
+
# → mya: build with BACKEND_URL injected; upload to mini-program platform
|
|
99
|
+
# → tta: build with BACKEND_URL injected; upload to mini-program platform
|
|
100
|
+
# → STACK_URL = https://{gateway}.{region}.fc.devs.com
|
|
101
|
+
|
|
102
|
+
deploy_stack --env staging --provider aliyun
|
|
103
|
+
deploy_stack --env production --provider aliyun
|
|
104
|
+
deploy_stack --rollback ${LAST_STABLE_STACK_VERSION} --provider aliyun
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Per-Component Deploy (dev sandboxes only)
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# Functions
|
|
111
|
+
fun deploy --function hello
|
|
112
|
+
|
|
113
|
+
# Storage (OSS)
|
|
114
|
+
oss cp ./file.txt oss://bucket/path/
|
|
115
|
+
oss ls oss://bucket/
|
|
116
|
+
|
|
117
|
+
# Database (RDS / TableStore)
|
|
118
|
+
# RDS: standard MySQL/PostgreSQL CLI
|
|
119
|
+
# TableStore: ots search
|
|
120
|
+
|
|
121
|
+
# Hosting (web only, dev sandbox)
|
|
122
|
+
oss cp -r ./dist oss://{dev-bucket}/ && cdn refresh
|
|
123
|
+
|
|
124
|
+
# Environment
|
|
125
|
+
fun config --account-id <id>
|
|
126
|
+
fun config --region cn-shanghai
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
> Per-component deploys to shared environments are forbidden (STK-004). Use `deploy_stack`.
|
|
130
|
+
|
|
131
|
+
## URL Resolution
|
|
132
|
+
|
|
133
|
+
| Component | Pattern |
|
|
134
|
+
|-----------|---------|
|
|
135
|
+
| `STACK_URL` / `BACKEND_URL` | `https://{gateway}.{region}.fc.devs.com` |
|
|
136
|
+
| `WEB_URL` | `https://{bucket}.{region}.oss-website.aliyuncs.com` |
|
|
137
|
+
| `NATIVE_DIST_URL` | internal distribution URL |
|
|
138
|
+
| `DESKTOP_DIST_URL` | internal distribution URL |
|
|
139
|
+
| `WXA_URL` | mini-program preview QR |
|
|
140
|
+
| `MYA_URL` | mini-program preview QR |
|
|
141
|
+
| `TTA_URL` | mini-program preview QR |
|
|
142
|
+
|
|
143
|
+
## Build Config Injection
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
BACKEND_URL=$STACK_URL pnpm --filter web build
|
|
147
|
+
oss cp -r ./dist oss://{bucket}/ --update
|
|
148
|
+
cdn refresh
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Environment Variables
|
|
152
|
+
|
|
153
|
+
| Variable | Description |
|
|
154
|
+
|----------|-------------|
|
|
155
|
+
| ALICLOUD_ACCESS_KEY | Aliyun access key ID |
|
|
156
|
+
| ALICLOUD_SECRET_KEY | Aliyun access key secret |
|
|
157
|
+
| ALICLOUD_REGION | Default region |
|
|
158
|
+
| FUNCTION_COMPUTE_SERVICE | FC service name |
|
|
159
|
+
| BACKEND_URL | Stack URL injected at build time |
|
|
160
|
+
| STACK_URL | Alias of BACKEND_URL (gateway) |
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# TCB Stack Deployment
|
|
2
|
+
|
|
3
|
+
Production deployment pipeline for TCB. The default is the unified `deploy_stack` orchestrator; per-component deploys are only allowed into isolated dev sandboxes.
|
|
4
|
+
|
|
5
|
+
## Environments
|
|
6
|
+
|
|
7
|
+
| Environment | Purpose | Deploy Trigger | Orchestrator |
|
|
8
|
+
|-------------|---------|----------------|--------------|
|
|
9
|
+
| preview | Per-component + cross-stack e2e | Feature branch | `deploy_stack --preview` |
|
|
10
|
+
| staging | Pre-production stack validation | PR merge to main | `deploy_stack --env staging` |
|
|
11
|
+
| production | Live traffic | Release tag + human approval | `deploy_stack --env production` |
|
|
12
|
+
|
|
13
|
+
## Stack Deploy Steps
|
|
14
|
+
|
|
15
|
+
```yaml
|
|
16
|
+
staging:
|
|
17
|
+
orchestrator: deploy_stack
|
|
18
|
+
steps:
|
|
19
|
+
- tcb fn deploy --env staging # backend
|
|
20
|
+
- tcb db migrate --env staging # backend
|
|
21
|
+
- tcb hosting deploy --env staging \
|
|
22
|
+
--build-env BACKEND_URL=${STACK_URL} # web
|
|
23
|
+
- native build with BACKEND_URL injected # native
|
|
24
|
+
- desktop build with BACKEND_URL injected # desktop
|
|
25
|
+
- wxa build with BACKEND_URL injected # wxa
|
|
26
|
+
- mya build with BACKEND_URL injected # mya
|
|
27
|
+
- tta build with BACKEND_URL injected # tta
|
|
28
|
+
- smoke-test ${STACK_URL}
|
|
29
|
+
|
|
30
|
+
production:
|
|
31
|
+
orchestrator: deploy_stack
|
|
32
|
+
pre_conditions:
|
|
33
|
+
- human-approval-gate
|
|
34
|
+
steps:
|
|
35
|
+
- tcb fn deploy --env production
|
|
36
|
+
- tcb db migrate --env production
|
|
37
|
+
- tcb hosting deploy --env production \
|
|
38
|
+
--build-env BACKEND_URL=${STACK_URL}
|
|
39
|
+
- native build with BACKEND_URL injected
|
|
40
|
+
- desktop build with BACKEND_URL injected
|
|
41
|
+
- wxa build with BACKEND_URL injected
|
|
42
|
+
- mya build with BACKEND_URL injected
|
|
43
|
+
- tta build with BACKEND_URL injected
|
|
44
|
+
- smoke-test ${PRODUCTION_URL}
|
|
45
|
+
- health-check ${PRODUCTION_URL}/health
|
|
46
|
+
- bvt ${PRODUCTION_URL}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Per-Component Dev Sandbox (allowed)
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Personal dev sandbox — one user, one component
|
|
53
|
+
tcb env create dev-${USER}
|
|
54
|
+
tcb fn deploy --name hello --dir ./functions --env dev-${USER}
|
|
55
|
+
tcb hosting deploy --env dev-${USER}
|
|
56
|
+
# Per-component deploys to shared envs (preview/staging/production) are forbidden
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Stack Rollback
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Automatic on BVT failure
|
|
63
|
+
deploy_stack --rollback ${LAST_STABLE_STACK_VERSION} --provider tcb
|
|
64
|
+
|
|
65
|
+
# Manual on demand
|
|
66
|
+
deploy_stack --rollback --stack-version v1.2.3 --provider tcb
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
The previous stable stack version is identified by the last green BVT.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# TCB Stack Preview
|
|
2
|
+
|
|
3
|
+
Preview deployment for the unified stack (backend + all clients: web, native, desktop, wxa, mya, tta). URL resolution is dynamic per platform; `BACKEND_URL` is injected into client builds at build time.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`deploy_stack --preview --provider tcb` deploys the full stack to an isolated preview environment and exports the stack URL. Used for per-component e2e AND cross-stack e2e verification before staging or production.
|
|
8
|
+
|
|
9
|
+
## Preview Flow
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
git push feature branch
|
|
13
|
+
→ deploy_stack --preview --provider tcb
|
|
14
|
+
→ STACK_URL = BACKEND_URL = https://{env-id}.tcb-preview.com
|
|
15
|
+
→ WEB_URL = https://{env-id}-{project}.tcb-preview.com
|
|
16
|
+
→ NATIVE_DIST_URL = internal distribution URL
|
|
17
|
+
→ DESKTOP_DIST_URL = internal distribution URL
|
|
18
|
+
→ WXA_URL / MYA_URL / TTA_URL = mini-program preview QR
|
|
19
|
+
→ Per-component e2e: pytest apps/{comp}/tests/e2e/ --base-url $URL
|
|
20
|
+
→ Cross-stack e2e: pytest tests/cross-stack/ --stack-url $STACK_URL
|
|
21
|
+
→ TTL: 24h → auto cleanup
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Configuration
|
|
25
|
+
|
|
26
|
+
```yaml
|
|
27
|
+
preview:
|
|
28
|
+
orchestrator: deploy_stack
|
|
29
|
+
strategy: unified
|
|
30
|
+
ttl: 24h
|
|
31
|
+
auto_cleanup: true
|
|
32
|
+
db_sandbox: true # isolated database per preview
|
|
33
|
+
url_pattern: "https://{env-id}.tcb-preview.com"
|
|
34
|
+
build_env:
|
|
35
|
+
web:
|
|
36
|
+
- BACKEND_URL
|
|
37
|
+
- STACK_URL
|
|
38
|
+
native:
|
|
39
|
+
- BACKEND_URL
|
|
40
|
+
desktop:
|
|
41
|
+
- BACKEND_URL
|
|
42
|
+
wxa:
|
|
43
|
+
- BACKEND_URL
|
|
44
|
+
mya:
|
|
45
|
+
- BACKEND_URL
|
|
46
|
+
tta:
|
|
47
|
+
- BACKEND_URL
|
|
48
|
+
env:
|
|
49
|
+
- STACK_URL # = BACKEND_URL (gateway)
|
|
50
|
+
- BACKEND_URL
|
|
51
|
+
- WEB_URL
|
|
52
|
+
- NATIVE_DIST_URL
|
|
53
|
+
- DESKTOP_DIST_URL
|
|
54
|
+
- WXA_URL
|
|
55
|
+
- MYA_URL
|
|
56
|
+
- TTA_URL
|
|
57
|
+
- DATABASE_URL (sandbox)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## BDD E2E Integration
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Deploy unified stack preview
|
|
64
|
+
export STACK_URL=$(deploy_stack --preview --provider tcb --output url)
|
|
65
|
+
export BACKEND_URL=$STACK_URL
|
|
66
|
+
export WEB_URL=$(deploy_stack --preview --provider tcb --output web_url)
|
|
67
|
+
export NATIVE_DIST_URL=$(deploy_stack --preview --provider tcb --output native_url)
|
|
68
|
+
export DESKTOP_DIST_URL=$(deploy_stack --preview --provider tcb --output desktop_url)
|
|
69
|
+
|
|
70
|
+
# Per-component e2e
|
|
71
|
+
pytest apps/backend/tests/e2e/ --base-url $BACKEND_URL
|
|
72
|
+
pytest apps/web/tests/e2e/ --base-url $WEB_URL --api-url $BACKEND_URL
|
|
73
|
+
pytest apps/native/tests/e2e/ --backend-url $BACKEND_URL
|
|
74
|
+
pytest apps/desktop/tests/e2e/ --backend-url $BACKEND_URL
|
|
75
|
+
pytest apps/wxa/tests/e2e/ --backend-url $BACKEND_URL
|
|
76
|
+
pytest apps/mya/tests/e2e/ --backend-url $BACKEND_URL
|
|
77
|
+
pytest apps/tta/tests/e2e/ --backend-url $BACKEND_URL
|
|
78
|
+
|
|
79
|
+
# Cross-stack e2e
|
|
80
|
+
pytest tests/cross-stack/ --stack-url $STACK_URL
|
|
81
|
+
|
|
82
|
+
# Cleanup (automatic after TTL)
|
|
83
|
+
```
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# TCB Provider (Stack-aware)
|
|
2
|
+
|
|
3
|
+
Default cloud development platform. Supports the unified stack deploy (backend + all clients: web, native, desktop, wxa, mya, tta) and per-component deploys (for isolated dev sandboxes only).
|
|
4
|
+
|
|
5
|
+
## Metadata
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
provider:
|
|
9
|
+
name: tcb
|
|
10
|
+
display_name: Tencent CloudBase
|
|
11
|
+
default: true
|
|
12
|
+
version: 3.0.0
|
|
13
|
+
website: https://cloud.tencent.com/product/tcb
|
|
14
|
+
|
|
15
|
+
stack:
|
|
16
|
+
components:
|
|
17
|
+
- id: backend
|
|
18
|
+
deploy_order: 1
|
|
19
|
+
exposes: BACKEND_URL
|
|
20
|
+
- id: web
|
|
21
|
+
deploy_order: 2
|
|
22
|
+
consumes: BACKEND_URL
|
|
23
|
+
- id: native
|
|
24
|
+
deploy_order: 2
|
|
25
|
+
consumes: BACKEND_URL
|
|
26
|
+
- id: desktop
|
|
27
|
+
deploy_order: 2
|
|
28
|
+
consumes: BACKEND_URL
|
|
29
|
+
- id: wxa
|
|
30
|
+
deploy_order: 2
|
|
31
|
+
consumes: BACKEND_URL
|
|
32
|
+
- id: mya
|
|
33
|
+
deploy_order: 2
|
|
34
|
+
consumes: BACKEND_URL
|
|
35
|
+
- id: tta
|
|
36
|
+
deploy_order: 2
|
|
37
|
+
consumes: BACKEND_URL
|
|
38
|
+
|
|
39
|
+
regions:
|
|
40
|
+
- id: ap-shanghai
|
|
41
|
+
name: Shanghai
|
|
42
|
+
- id: ap-beijing
|
|
43
|
+
name: Beijing
|
|
44
|
+
- id: ap-guangzhou
|
|
45
|
+
name: Guangzhou
|
|
46
|
+
- id: ap-singapore
|
|
47
|
+
name: Singapore
|
|
48
|
+
|
|
49
|
+
services:
|
|
50
|
+
- functions: cloudbase
|
|
51
|
+
- database: cloudbase
|
|
52
|
+
- storage: cloudbase
|
|
53
|
+
- hosting: cloudbase
|
|
54
|
+
|
|
55
|
+
limits:
|
|
56
|
+
function_timeout: 60s
|
|
57
|
+
function_memory: 1536MB
|
|
58
|
+
max_instances: 100
|
|
59
|
+
|
|
60
|
+
compute_modes:
|
|
61
|
+
- id: cloudbase-functions
|
|
62
|
+
type: faas
|
|
63
|
+
default: true
|
|
64
|
+
description: "CloudBase Functions (SCF) — event-driven functions"
|
|
65
|
+
limits:
|
|
66
|
+
timeout: 60s
|
|
67
|
+
memory: 1536MB
|
|
68
|
+
max_instances: 100
|
|
69
|
+
- id: cloudbase-run
|
|
70
|
+
type: caas
|
|
71
|
+
description: "CloudBase Run — container hosting"
|
|
72
|
+
limits:
|
|
73
|
+
timeout: 3600s
|
|
74
|
+
memory: 4096MB
|
|
75
|
+
|
|
76
|
+
capabilities:
|
|
77
|
+
- serverless_functions
|
|
78
|
+
- static_hosting
|
|
79
|
+
- serverless_database
|
|
80
|
+
- serverless_storage
|
|
81
|
+
- preview_deploy
|
|
82
|
+
- ssl_cert
|
|
83
|
+
- custom_domain
|
|
84
|
+
- cdn_acceleration
|
|
85
|
+
- stack_deploy
|
|
86
|
+
- build_env_injection
|
|
87
|
+
- container_hosting
|
|
88
|
+
|
|
89
|
+
storage:
|
|
90
|
+
object_storage: cloudbase-storage
|
|
91
|
+
document_db: docdb
|
|
92
|
+
relational_db: mysql
|
|
93
|
+
cdn: tencent-cloud-cdn
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Stack Deploy (recommended for shared environments)
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# Unified stack preview (returns STACK_URL = BACKEND_URL + per-component URLs)
|
|
100
|
+
deploy_stack --preview --provider tcb
|
|
101
|
+
# → backend: tcb fn deploy --env preview
|
|
102
|
+
# → backend: tcb db migrate --env preview
|
|
103
|
+
# → web: tcb hosting deploy --env preview --build-env BACKEND_URL=${STACK_URL}
|
|
104
|
+
# → native: build with BACKEND_URL injected; upload to internal distribution
|
|
105
|
+
# → desktop: build with BACKEND_URL injected; upload to internal distribution
|
|
106
|
+
# → wxa: build with BACKEND_URL injected; upload to mini-program platform
|
|
107
|
+
# → mya: build with BACKEND_URL injected; upload to mini-program platform
|
|
108
|
+
# → tta: build with BACKEND_URL injected; upload to mini-program platform
|
|
109
|
+
# → STACK_URL = https://{env-id}.tcb-preview.com
|
|
110
|
+
|
|
111
|
+
# Stack staging
|
|
112
|
+
deploy_stack --env staging --provider tcb
|
|
113
|
+
|
|
114
|
+
# Stack production (after human approval)
|
|
115
|
+
deploy_stack --env production --provider tcb
|
|
116
|
+
|
|
117
|
+
# Stack rollback
|
|
118
|
+
deploy_stack --rollback ${LAST_STABLE_STACK_VERSION} --provider tcb
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Per-Component Deploy (dev sandboxes only)
|
|
122
|
+
|
|
123
|
+
For isolated dev work on a single component, per-component deploy is allowed into a personal sandbox env.
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# Functions
|
|
127
|
+
tcb fn deploy --name hello --dir ./functions
|
|
128
|
+
tcb fn invoke --name hello --params '{}'
|
|
129
|
+
tcb fn logs --name hello
|
|
130
|
+
|
|
131
|
+
# Database
|
|
132
|
+
tcb db query "SELECT * FROM users"
|
|
133
|
+
tcb db migrate
|
|
134
|
+
|
|
135
|
+
# Hosting (web only)
|
|
136
|
+
tcb hosting deploy --env dev-<user>
|
|
137
|
+
|
|
138
|
+
# Environment
|
|
139
|
+
tcb env list
|
|
140
|
+
tcb env use <env-id>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
> Per-component deploys to shared environments (preview, staging, production) are forbidden (STK-004). Use `deploy_stack`.
|
|
144
|
+
|
|
145
|
+
## URL Resolution
|
|
146
|
+
|
|
147
|
+
| Component | Pattern |
|
|
148
|
+
|-----------|---------|
|
|
149
|
+
| `STACK_URL` / `BACKEND_URL` | `https://{env-id}.tcb-preview.com` |
|
|
150
|
+
| `WEB_URL` | `https://{env-id}-{project}.tcb-preview.com` |
|
|
151
|
+
| `NATIVE_DIST_URL` | internal distribution URL |
|
|
152
|
+
| `DESKTOP_DIST_URL` | internal distribution URL |
|
|
153
|
+
| `WXA_URL` | mini-program preview QR |
|
|
154
|
+
| `MYA_URL` | mini-program preview QR |
|
|
155
|
+
| `TTA_URL` | mini-program preview QR |
|
|
156
|
+
|
|
157
|
+
## Build Config Injection
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
tcb hosting deploy --env preview --build-env BACKEND_URL=$STACK_URL
|
|
161
|
+
# web reads process.env.BACKEND_URL at build time
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Environment Variables
|
|
165
|
+
|
|
166
|
+
| Variable | Description |
|
|
167
|
+
|----------|-------------|
|
|
168
|
+
| TCB_SECRET_ID | Tencent Cloud secret ID |
|
|
169
|
+
| TCB_SECRET_KEY | Tencent Cloud secret key |
|
|
170
|
+
| TCB_ENV_ID | CloudBase environment ID |
|
|
171
|
+
| BACKEND_URL | Stack URL injected at build time |
|
|
172
|
+
| STACK_URL | Alias of BACKEND_URL (gateway) |
|