@codemieai/code 0.0.2 → 0.0.4
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/README.md +357 -719
- package/bin/codemie-claude.js +145 -0
- package/bin/codemie-code.js +128 -15
- package/bin/codemie-codex.js +137 -0
- package/bin/codemie.js +1 -1
- package/dist/agents/adapters/claude-code.d.ts +7 -2
- package/dist/agents/adapters/claude-code.d.ts.map +1 -1
- package/dist/agents/adapters/claude-code.js +94 -58
- package/dist/agents/adapters/claude-code.js.map +1 -1
- package/dist/agents/adapters/codemie-code.d.ts +11 -2
- package/dist/agents/adapters/codemie-code.d.ts.map +1 -1
- package/dist/agents/adapters/codemie-code.js +93 -25
- package/dist/agents/adapters/codemie-code.js.map +1 -1
- package/dist/agents/adapters/codex.d.ts +7 -2
- package/dist/agents/adapters/codex.d.ts.map +1 -1
- package/dist/agents/adapters/codex.js +104 -39
- package/dist/agents/adapters/codex.js.map +1 -1
- package/dist/agents/codemie-code/agent.d.ts +89 -0
- package/dist/agents/codemie-code/agent.d.ts.map +1 -0
- package/dist/agents/codemie-code/agent.js +689 -0
- package/dist/agents/codemie-code/agent.js.map +1 -0
- package/dist/agents/codemie-code/config.d.ts +40 -0
- package/dist/agents/codemie-code/config.d.ts.map +1 -0
- package/dist/agents/codemie-code/config.js +278 -0
- package/dist/agents/codemie-code/config.js.map +1 -0
- package/dist/agents/codemie-code/filters.d.ts +91 -0
- package/dist/agents/codemie-code/filters.d.ts.map +1 -0
- package/dist/agents/codemie-code/filters.js +328 -0
- package/dist/agents/codemie-code/filters.js.map +1 -0
- package/dist/agents/codemie-code/index.d.ts +92 -0
- package/dist/agents/codemie-code/index.d.ts.map +1 -0
- package/dist/agents/codemie-code/index.js +327 -0
- package/dist/agents/codemie-code/index.js.map +1 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts +87 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts.map +1 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.js +957 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.js.map +1 -0
- package/dist/agents/codemie-code/modes/planMode.d.ts +116 -0
- package/dist/agents/codemie-code/modes/planMode.d.ts.map +1 -0
- package/dist/agents/codemie-code/modes/planMode.js +537 -0
- package/dist/agents/codemie-code/modes/planMode.js.map +1 -0
- package/dist/agents/codemie-code/prompts.d.ts +40 -0
- package/dist/agents/codemie-code/prompts.d.ts.map +1 -0
- package/dist/agents/codemie-code/prompts.js +160 -0
- package/dist/agents/codemie-code/prompts.js.map +1 -0
- package/dist/agents/codemie-code/storage/todoStorage.d.ts +78 -0
- package/dist/agents/codemie-code/storage/todoStorage.d.ts.map +1 -0
- package/dist/agents/codemie-code/storage/todoStorage.js +225 -0
- package/dist/agents/codemie-code/storage/todoStorage.js.map +1 -0
- package/dist/agents/codemie-code/tokenUtils.d.ts +108 -0
- package/dist/agents/codemie-code/tokenUtils.d.ts.map +1 -0
- package/dist/agents/codemie-code/tokenUtils.js +220 -0
- package/dist/agents/codemie-code/tokenUtils.js.map +1 -0
- package/dist/agents/codemie-code/toolMetadata.d.ts +15 -0
- package/dist/agents/codemie-code/toolMetadata.d.ts.map +1 -0
- package/dist/agents/codemie-code/toolMetadata.js +315 -0
- package/dist/agents/codemie-code/toolMetadata.js.map +1 -0
- package/dist/agents/codemie-code/tools/index.d.ts +45 -0
- package/dist/agents/codemie-code/tools/index.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/index.js +407 -0
- package/dist/agents/codemie-code/tools/index.js.map +1 -0
- package/dist/agents/codemie-code/tools/planning.d.ts +53 -0
- package/dist/agents/codemie-code/tools/planning.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/planning.js +224 -0
- package/dist/agents/codemie-code/tools/planning.js.map +1 -0
- package/dist/agents/codemie-code/types.d.ts +418 -0
- package/dist/agents/codemie-code/types.d.ts.map +1 -0
- package/dist/agents/codemie-code/types.js +35 -0
- package/dist/agents/codemie-code/types.js.map +1 -0
- package/dist/agents/codemie-code/ui/progressTracker.d.ts +125 -0
- package/dist/agents/codemie-code/ui/progressTracker.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/progressTracker.js +343 -0
- package/dist/agents/codemie-code/ui/progressTracker.js.map +1 -0
- package/dist/agents/codemie-code/ui/todoPanel.d.ts +112 -0
- package/dist/agents/codemie-code/ui/todoPanel.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/todoPanel.js +318 -0
- package/dist/agents/codemie-code/ui/todoPanel.js.map +1 -0
- package/dist/agents/codemie-code/ui.d.ts +179 -0
- package/dist/agents/codemie-code/ui.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui.js +1408 -0
- package/dist/agents/codemie-code/ui.js.map +1 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts +87 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.js +293 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.js.map +1 -0
- package/dist/agents/codemie-code/utils/todoParser.d.ts +41 -0
- package/dist/agents/codemie-code/utils/todoParser.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/todoParser.js +305 -0
- package/dist/agents/codemie-code/utils/todoParser.js.map +1 -0
- package/dist/agents/codemie-code/utils/todoValidator.d.ts +65 -0
- package/dist/agents/codemie-code/utils/todoValidator.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/todoValidator.js +249 -0
- package/dist/agents/codemie-code/utils/todoValidator.js.map +1 -0
- package/dist/agents/codemie-code/validators/planValidator.d.ts +94 -0
- package/dist/agents/codemie-code/validators/planValidator.d.ts.map +1 -0
- package/dist/agents/codemie-code/validators/planValidator.js +281 -0
- package/dist/agents/codemie-code/validators/planValidator.js.map +1 -0
- package/dist/agents/registry.d.ts +1 -1
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +11 -15
- package/dist/agents/registry.js.map +1 -1
- package/dist/cli/commands/auth.d.ts +3 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +170 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +350 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +308 -71
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/env.d.ts +3 -0
- package/dist/cli/commands/env.d.ts.map +1 -0
- package/dist/cli/commands/env.js +19 -0
- package/dist/cli/commands/env.js.map +1 -0
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +28 -33
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/list.js +18 -24
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +297 -31
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/setup.d.ts +3 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +523 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/tools.d.ts +6 -0
- package/dist/cli/commands/tools.d.ts.map +1 -0
- package/dist/cli/commands/tools.js +244 -0
- package/dist/cli/commands/tools.js.map +1 -0
- package/dist/cli/commands/uninstall.js +24 -30
- package/dist/cli/commands/uninstall.js.map +1 -1
- package/dist/cli/commands/version.d.ts.map +1 -1
- package/dist/cli/commands/version.js +11 -16
- package/dist/cli/commands/version.js.map +1 -1
- package/dist/cli/commands/workflow.d.ts +6 -0
- package/dist/cli/commands/workflow.d.ts.map +1 -0
- package/dist/cli/commands/workflow.js +424 -0
- package/dist/cli/commands/workflow.js.map +1 -0
- package/dist/cli/index.js +85 -35
- package/dist/cli/index.js.map +1 -1
- package/dist/clients/adapters/github.d.ts +17 -0
- package/dist/clients/adapters/github.d.ts.map +1 -0
- package/dist/clients/adapters/github.js +150 -0
- package/dist/clients/adapters/github.js.map +1 -0
- package/dist/clients/adapters/gitlab.d.ts +17 -0
- package/dist/clients/adapters/gitlab.d.ts.map +1 -0
- package/dist/clients/adapters/gitlab.js +147 -0
- package/dist/clients/adapters/gitlab.js.map +1 -0
- package/dist/clients/registry.d.ts +20 -0
- package/dist/clients/registry.d.ts.map +1 -0
- package/dist/clients/registry.js +27 -0
- package/dist/clients/registry.js.map +1 -0
- package/dist/env/manager.js +9 -46
- package/dist/env/manager.js.map +1 -1
- package/dist/index.d.ts +6 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -43
- package/dist/index.js.map +1 -1
- package/dist/tools/detector.d.ts +33 -0
- package/dist/tools/detector.d.ts.map +1 -0
- package/dist/tools/detector.js +145 -0
- package/dist/tools/detector.js.map +1 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/manager.d.ts +21 -0
- package/dist/tools/manager.d.ts.map +1 -0
- package/dist/tools/manager.js +104 -0
- package/dist/tools/manager.js.map +1 -0
- package/dist/tools/registry.d.ts +8 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +36 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/types.d.ts +41 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +5 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/types/sso.d.ts +42 -0
- package/dist/types/sso.d.ts.map +1 -0
- package/dist/types/sso.js +2 -0
- package/dist/types/sso.js.map +1 -0
- package/dist/utils/agent-compatibility.d.ts +32 -0
- package/dist/utils/agent-compatibility.d.ts.map +1 -0
- package/dist/utils/agent-compatibility.js +140 -0
- package/dist/utils/agent-compatibility.js.map +1 -0
- package/dist/utils/async-tips.d.ts.map +1 -1
- package/dist/utils/async-tips.js +16 -55
- package/dist/utils/async-tips.js.map +1 -1
- package/dist/utils/clipboard.d.ts +16 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +179 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/codemie-integration-validator.d.ts +17 -0
- package/dist/utils/codemie-integration-validator.d.ts.map +1 -0
- package/dist/utils/codemie-integration-validator.js +105 -0
- package/dist/utils/codemie-integration-validator.js.map +1 -0
- package/dist/utils/codemie-model-fetcher.d.ts +11 -0
- package/dist/utils/codemie-model-fetcher.d.ts.map +1 -0
- package/dist/utils/codemie-model-fetcher.js +242 -0
- package/dist/utils/codemie-model-fetcher.js.map +1 -0
- package/dist/utils/config-loader.d.ts +118 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +397 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/dist/utils/credential-store.d.ts +16 -0
- package/dist/utils/credential-store.d.ts.map +1 -0
- package/dist/utils/credential-store.js +109 -0
- package/dist/utils/credential-store.js.map +1 -0
- package/dist/utils/dirname.d.ts +7 -0
- package/dist/utils/dirname.d.ts.map +1 -0
- package/dist/utils/dirname.js +11 -0
- package/dist/utils/dirname.js.map +1 -0
- package/dist/utils/errors.js +7 -17
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/exec.js +3 -6
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/first-time.d.ts +34 -0
- package/dist/utils/first-time.d.ts.map +1 -0
- package/dist/utils/first-time.js +226 -0
- package/dist/utils/first-time.js.map +1 -0
- package/dist/utils/health-checker.d.ts +20 -0
- package/dist/utils/health-checker.d.ts.map +1 -0
- package/dist/utils/health-checker.js +172 -0
- package/dist/utils/health-checker.js.map +1 -0
- package/dist/utils/logger.js +12 -18
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/model-fetcher.d.ts +21 -0
- package/dist/utils/model-fetcher.d.ts.map +1 -0
- package/dist/utils/model-fetcher.js +150 -0
- package/dist/utils/model-fetcher.js.map +1 -0
- package/dist/utils/sso-auth.d.ts +15 -0
- package/dist/utils/sso-auth.d.ts.map +1 -0
- package/dist/utils/sso-auth.js +207 -0
- package/dist/utils/sso-auth.js.map +1 -0
- package/dist/utils/sso-gateway.d.ts +47 -0
- package/dist/utils/sso-gateway.d.ts.map +1 -0
- package/dist/utils/sso-gateway.js +298 -0
- package/dist/utils/sso-gateway.js.map +1 -0
- package/dist/utils/tips.d.ts.map +1 -1
- package/dist/utils/tips.js +13 -52
- package/dist/utils/tips.js.map +1 -1
- package/dist/workflows/detector.d.ts +37 -0
- package/dist/workflows/detector.d.ts.map +1 -0
- package/dist/workflows/detector.js +160 -0
- package/dist/workflows/detector.js.map +1 -0
- package/dist/workflows/index.d.ts +8 -0
- package/dist/workflows/index.d.ts.map +1 -0
- package/dist/workflows/index.js +8 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/installer.d.ts +24 -0
- package/dist/workflows/installer.d.ts.map +1 -0
- package/dist/workflows/installer.js +105 -0
- package/dist/workflows/installer.js.map +1 -0
- package/dist/workflows/registry.d.ts +29 -0
- package/dist/workflows/registry.d.ts.map +1 -0
- package/dist/workflows/registry.js +54 -0
- package/dist/workflows/registry.js.map +1 -0
- package/dist/workflows/templates/github/metadata.d.ts +6 -0
- package/dist/workflows/templates/github/metadata.d.ts.map +1 -0
- package/dist/workflows/templates/github/metadata.js +111 -0
- package/dist/workflows/templates/github/metadata.js.map +1 -0
- package/dist/workflows/templates/gitlab/metadata.d.ts +6 -0
- package/dist/workflows/templates/gitlab/metadata.d.ts.map +1 -0
- package/dist/workflows/templates/gitlab/metadata.js +14 -0
- package/dist/workflows/templates/gitlab/metadata.js.map +1 -0
- package/dist/workflows/types.d.ts +71 -0
- package/dist/workflows/types.d.ts.map +1 -0
- package/dist/workflows/types.js +5 -0
- package/dist/workflows/types.js.map +1 -0
- package/package.json +32 -25
- package/src/workflows/templates/github/code-ci.yml +529 -0
- package/src/workflows/templates/github/inline-fix.yml +665 -0
- package/src/workflows/templates/github/pr-review.yml +677 -0
- package/.claude/agents/README.md +0 -298
- package/.claude/agents/release-manager.md +0 -857
- package/.codemie/guides/git-workflow.md +0 -493
- package/CLAUDE.md +0 -855
- package/dist/agents/adapters/aider.d.ts +0 -12
- package/dist/agents/adapters/aider.d.ts.map +0 -1
- package/dist/agents/adapters/aider.js +0 -80
- package/dist/agents/adapters/aider.js.map +0 -1
- package/dist/cli/cli.d.ts +0 -4
- package/dist/cli/cli.d.ts.map +0 -1
- package/dist/cli/cli.js +0 -107
- package/dist/cli/cli.js.map +0 -1
- package/dist/cli/commands/mcp.d.ts +0 -3
- package/dist/cli/commands/mcp.d.ts.map +0 -1
- package/dist/cli/commands/mcp.js +0 -459
- package/dist/cli/commands/mcp.js.map +0 -1
- package/dist/code/agent-events.d.ts +0 -39
- package/dist/code/agent-events.d.ts.map +0 -1
- package/dist/code/agent-events.js +0 -4
- package/dist/code/agent-events.js.map +0 -1
- package/dist/code/agent.d.ts +0 -19
- package/dist/code/agent.d.ts.map +0 -1
- package/dist/code/agent.js +0 -144
- package/dist/code/agent.js.map +0 -1
- package/dist/code/config.d.ts +0 -13
- package/dist/code/config.d.ts.map +0 -1
- package/dist/code/config.js +0 -41
- package/dist/code/config.js.map +0 -1
- package/dist/code/index.d.ts +0 -19
- package/dist/code/index.d.ts.map +0 -1
- package/dist/code/index.js +0 -400
- package/dist/code/index.js.map +0 -1
- package/dist/code/prompts.d.ts +0 -2
- package/dist/code/prompts.d.ts.map +0 -1
- package/dist/code/prompts.js +0 -45
- package/dist/code/prompts.js.map +0 -1
- package/dist/code/tools/command.d.ts +0 -8
- package/dist/code/tools/command.d.ts.map +0 -1
- package/dist/code/tools/command.js +0 -83
- package/dist/code/tools/command.js.map +0 -1
- package/dist/code/tools/diff-utils.d.ts +0 -2
- package/dist/code/tools/diff-utils.d.ts.map +0 -1
- package/dist/code/tools/diff-utils.js +0 -45
- package/dist/code/tools/diff-utils.js.map +0 -1
- package/dist/code/tools/filesystem.d.ts +0 -11
- package/dist/code/tools/filesystem.d.ts.map +0 -1
- package/dist/code/tools/filesystem.js +0 -442
- package/dist/code/tools/filesystem.js.map +0 -1
- package/dist/code/tools/git.d.ts +0 -7
- package/dist/code/tools/git.d.ts.map +0 -1
- package/dist/code/tools/git.js +0 -111
- package/dist/code/tools/git.js.map +0 -1
- package/dist/code/tools/mcp.d.ts +0 -13
- package/dist/code/tools/mcp.d.ts.map +0 -1
- package/dist/code/tools/mcp.js +0 -230
- package/dist/code/tools/mcp.js.map +0 -1
- package/dist/data/tips.json +0 -118
- package/dist/ui/terminal-ui.d.ts +0 -73
- package/dist/ui/terminal-ui.d.ts.map +0 -1
- package/dist/ui/terminal-ui.js +0 -900
- package/dist/ui/terminal-ui.js.map +0 -1
- package/dist/utils/env-mapper.d.ts +0 -40
- package/dist/utils/env-mapper.d.ts.map +0 -1
- package/dist/utils/env-mapper.js +0 -122
- package/dist/utils/env-mapper.js.map +0 -1
- package/docs/USER_GUIDE.md +0 -573
- package/eslint.config.mjs +0 -43
- package/tests/agent-direct.test.mjs +0 -45
- package/tests/agent-output.test.mjs +0 -64
- package/tests/codemie-code.test.mjs +0 -42
- package/tests/context7-only.test.mjs +0 -42
- package/tests/conversation-flow.test.mjs +0 -63
- package/tests/interactive-simulation.test.mjs +0 -60
- package/tests/live-output.test.mjs +0 -53
- package/tests/mcp-context7.test.mjs +0 -105
- package/tests/mcp-e2e.test.mjs +0 -109
- package/tests/mcp-time-server.test.mjs +0 -58
- package/tests/streaming.test.mjs +0 -57
- package/tests/test-helpers.mjs +0 -94
- package/tests/text-wrapping.test.mjs +0 -33
- package/tests/tool-count.test.mjs +0 -81
- package/tests/ui-format.test.mjs +0 -39
- package/tests/ui-state.test.mjs +0 -72
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow management CLI commands
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import inquirer from 'inquirer';
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import ora from 'ora';
|
|
8
|
+
import { detectVCSProvider, getTemplatesByProvider, getAllTemplates, getTemplate, installWorkflow, uninstallWorkflow, listInstalledWorkflows, isWorkflowInstalled, validateDependencies, } from '../../workflows/index.js';
|
|
9
|
+
import { isToolInstalled } from '../../tools/index.js';
|
|
10
|
+
export function createWorkflowCommand() {
|
|
11
|
+
const workflow = new Command('workflow')
|
|
12
|
+
.description('Manage CI/CD workflows (GitHub Actions, GitLab CI)')
|
|
13
|
+
.addHelpText('after', `
|
|
14
|
+
|
|
15
|
+
Examples:
|
|
16
|
+
$ codemie workflow list # List all available workflows
|
|
17
|
+
$ codemie workflow list --installed # Show only installed workflows
|
|
18
|
+
|
|
19
|
+
$ codemie workflow install pr-review # Install PR review workflow
|
|
20
|
+
$ codemie workflow install pr-review -i # Install with interactive prompts
|
|
21
|
+
$ codemie workflow install pr-review --timeout 30 --max-turns 100
|
|
22
|
+
|
|
23
|
+
$ codemie workflow uninstall pr-review # Remove installed workflow
|
|
24
|
+
|
|
25
|
+
Available Workflows:
|
|
26
|
+
pr-review - Automated code review on pull requests
|
|
27
|
+
inline-fix - Quick fixes from PR comments mentioning @codemie
|
|
28
|
+
code-ci - Full feature implementation from issues
|
|
29
|
+
|
|
30
|
+
Configuration Options:
|
|
31
|
+
--timeout <minutes> How long the workflow can run (default: 15)
|
|
32
|
+
--max-turns <number> Maximum AI conversation turns (default: 50)
|
|
33
|
+
--environment <env> GitHub environment for protection rules
|
|
34
|
+
--interactive, -i Interactive mode with helpful prompts
|
|
35
|
+
|
|
36
|
+
Note: Workflows require repository secrets to be configured.
|
|
37
|
+
Run 'codemie workflow install <id>' to see required secrets for each workflow.
|
|
38
|
+
`);
|
|
39
|
+
// List command
|
|
40
|
+
workflow
|
|
41
|
+
.command('list')
|
|
42
|
+
.description('List available workflow templates')
|
|
43
|
+
.option('--remote', 'Include remote templates (not yet implemented)')
|
|
44
|
+
.option('--installed', 'Show only installed workflows')
|
|
45
|
+
.option('--github', 'Show only GitHub workflows')
|
|
46
|
+
.option('--gitlab', 'Show only GitLab workflows')
|
|
47
|
+
.addHelpText('after', `
|
|
48
|
+
|
|
49
|
+
Examples:
|
|
50
|
+
$ codemie workflow list # List all workflows
|
|
51
|
+
$ codemie workflow list --installed # Show only what's installed
|
|
52
|
+
$ codemie workflow list --github # GitHub workflows only
|
|
53
|
+
`)
|
|
54
|
+
.action(async (options) => {
|
|
55
|
+
console.log(chalk.bold.cyan('\n╔═══════════════════════════════════════╗'));
|
|
56
|
+
console.log(chalk.bold.cyan('║ Available Workflows ║'));
|
|
57
|
+
console.log(chalk.bold.cyan('╚═══════════════════════════════════════╝\n'));
|
|
58
|
+
// Detect provider or use specified
|
|
59
|
+
let provider;
|
|
60
|
+
if (options.github) {
|
|
61
|
+
provider = 'github';
|
|
62
|
+
}
|
|
63
|
+
else if (options.gitlab) {
|
|
64
|
+
provider = 'gitlab';
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
const detection = detectVCSProvider();
|
|
68
|
+
if (detection.provider) {
|
|
69
|
+
provider = detection.provider;
|
|
70
|
+
console.log(chalk.dim(`Auto-detected: ${provider} repository\n`));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (options.installed) {
|
|
74
|
+
// Show installed workflows
|
|
75
|
+
if (!provider) {
|
|
76
|
+
console.log(chalk.yellow('⚠ Cannot detect provider. Use --github or --gitlab\n'));
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const installed = listInstalledWorkflows(provider);
|
|
80
|
+
if (installed.length === 0) {
|
|
81
|
+
console.log(chalk.dim('No workflows installed\n'));
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
console.log(chalk.bold('Installed Workflows:'));
|
|
85
|
+
installed.forEach(file => {
|
|
86
|
+
console.log(` ${chalk.green('✓')} ${file}`);
|
|
87
|
+
});
|
|
88
|
+
console.log('');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
// Show available templates
|
|
93
|
+
const templates = provider
|
|
94
|
+
? getTemplatesByProvider(provider)
|
|
95
|
+
: getAllTemplates();
|
|
96
|
+
if (templates.length === 0) {
|
|
97
|
+
console.log(chalk.dim('No templates available\n'));
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
// Group by provider
|
|
101
|
+
const grouped = templates.reduce((acc, template) => {
|
|
102
|
+
if (!acc[template.provider]) {
|
|
103
|
+
acc[template.provider] = [];
|
|
104
|
+
}
|
|
105
|
+
acc[template.provider].push(template);
|
|
106
|
+
return acc;
|
|
107
|
+
}, {});
|
|
108
|
+
for (const [prov, temps] of Object.entries(grouped)) {
|
|
109
|
+
console.log(chalk.bold.cyan(`${prov.toUpperCase()} Workflows:`));
|
|
110
|
+
console.log('');
|
|
111
|
+
temps.forEach(template => {
|
|
112
|
+
const installed = isWorkflowInstalled(template.id, template.provider);
|
|
113
|
+
const status = installed ? chalk.green('✓ installed') : chalk.dim('not installed');
|
|
114
|
+
console.log(chalk.bold(` ${template.name}`));
|
|
115
|
+
console.log(chalk.dim(` ${template.description}`));
|
|
116
|
+
console.log(` ${chalk.bold('ID:')} ${chalk.cyan(template.id)} | Category: ${template.category} | Status: ${status}`);
|
|
117
|
+
console.log('');
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
// Show usage hint
|
|
121
|
+
console.log(chalk.dim('To install a workflow:'));
|
|
122
|
+
console.log(chalk.dim(` codemie workflow install ${chalk.cyan('<workflow-id>')}`));
|
|
123
|
+
console.log('');
|
|
124
|
+
console.log(chalk.dim('Example:'));
|
|
125
|
+
console.log(chalk.dim(` codemie workflow install ${chalk.cyan('pr-review')}\n`));
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
// Install command
|
|
129
|
+
workflow
|
|
130
|
+
.command('install <workflow-id>')
|
|
131
|
+
.description('Install a workflow template')
|
|
132
|
+
.option('--github', 'Force GitHub provider')
|
|
133
|
+
.option('--gitlab', 'Force GitLab provider')
|
|
134
|
+
.option('-i, --interactive', 'Interactive configuration with prompts and help text')
|
|
135
|
+
.option('-f, --force', 'Force reinstall if already installed')
|
|
136
|
+
.option('--dry-run', 'Preview installation without writing files')
|
|
137
|
+
.option('--timeout <minutes>', 'Workflow timeout in minutes (default: 15)', parseInt)
|
|
138
|
+
.option('--max-turns <number>', 'Maximum AI conversation turns (default: 50)', parseInt)
|
|
139
|
+
.option('--environment <env>', 'GitHub environment name for protection rules')
|
|
140
|
+
.addHelpText('after', `
|
|
141
|
+
|
|
142
|
+
Examples:
|
|
143
|
+
$ codemie workflow install pr-review # Basic installation
|
|
144
|
+
$ codemie workflow install pr-review -i # Interactive mode (recommended)
|
|
145
|
+
$ codemie workflow install pr-review --force # Reinstall existing workflow
|
|
146
|
+
$ codemie workflow install pr-review --dry-run # Preview without installing
|
|
147
|
+
$ codemie workflow install pr-review --timeout 30 --max-turns 100 --environment prod
|
|
148
|
+
|
|
149
|
+
Interactive Mode (-i):
|
|
150
|
+
Prompts you for each configuration option with helpful explanations.
|
|
151
|
+
Recommended for first-time setup or when you're unsure about values.
|
|
152
|
+
|
|
153
|
+
Configuration Guide:
|
|
154
|
+
--timeout: How long CI can run before timing out (15-60 minutes recommended)
|
|
155
|
+
--max-turns: AI conversation depth (50 = simple tasks, 100+ = complex features)
|
|
156
|
+
--environment: GitHub environment name for secrets and protection rules
|
|
157
|
+
`)
|
|
158
|
+
.action(async (workflowId, options) => {
|
|
159
|
+
console.log(chalk.bold.cyan('\n╔═══════════════════════════════════════╗'));
|
|
160
|
+
console.log(chalk.bold.cyan('║ Install Workflow ║'));
|
|
161
|
+
console.log(chalk.bold.cyan('╚═══════════════════════════════════════╝\n'));
|
|
162
|
+
// Determine provider
|
|
163
|
+
let provider;
|
|
164
|
+
if (options.github) {
|
|
165
|
+
provider = 'github';
|
|
166
|
+
}
|
|
167
|
+
else if (options.gitlab) {
|
|
168
|
+
provider = 'gitlab';
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
const detection = detectVCSProvider();
|
|
172
|
+
if (!detection.provider) {
|
|
173
|
+
console.log(chalk.red('✗ Could not detect VCS provider'));
|
|
174
|
+
console.log(chalk.dim(' Use --github or --gitlab to specify provider\n'));
|
|
175
|
+
console.log(chalk.yellow('Installation cancelled\n'));
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
provider = detection.provider;
|
|
179
|
+
console.log(chalk.dim(`Auto-detected: ${provider} repository\n`));
|
|
180
|
+
}
|
|
181
|
+
// Get template
|
|
182
|
+
const template = getTemplate(workflowId, provider);
|
|
183
|
+
if (!template) {
|
|
184
|
+
console.log(chalk.red(`✗ Workflow template '${workflowId}' not found for ${provider}`));
|
|
185
|
+
console.log(chalk.dim('\n Available workflows:'));
|
|
186
|
+
const templates = getTemplatesByProvider(provider);
|
|
187
|
+
if (templates.length === 0) {
|
|
188
|
+
console.log(chalk.yellow(`\n No ${provider} workflows are currently available.`));
|
|
189
|
+
console.log(chalk.dim(` GitLab workflows are coming soon!`));
|
|
190
|
+
console.log(chalk.dim(` Try using GitHub workflows instead: codemie workflow list --github\n`));
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
templates.forEach(t => {
|
|
194
|
+
console.log(chalk.dim(` - ${t.id}: ${t.name}`));
|
|
195
|
+
});
|
|
196
|
+
console.log('');
|
|
197
|
+
}
|
|
198
|
+
console.log(chalk.yellow('Installation cancelled\n'));
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
console.log(chalk.bold(template.name));
|
|
202
|
+
console.log(chalk.dim(template.description));
|
|
203
|
+
console.log('');
|
|
204
|
+
// Validate dependencies
|
|
205
|
+
const validation = validateDependencies(template);
|
|
206
|
+
if (validation.missing.length > 0) {
|
|
207
|
+
console.log(chalk.yellow('⚠ Missing dependencies:'));
|
|
208
|
+
validation.missing.forEach(dep => {
|
|
209
|
+
console.log(chalk.yellow(` - ${dep}`));
|
|
210
|
+
});
|
|
211
|
+
console.log('');
|
|
212
|
+
const { install } = await inquirer.prompt([
|
|
213
|
+
{
|
|
214
|
+
type: 'confirm',
|
|
215
|
+
name: 'install',
|
|
216
|
+
message: 'Install missing tools?',
|
|
217
|
+
default: true
|
|
218
|
+
}
|
|
219
|
+
]);
|
|
220
|
+
if (install) {
|
|
221
|
+
// Install missing tools
|
|
222
|
+
const { installTool } = await import('../../tools/index.js');
|
|
223
|
+
for (const tool of template.dependencies.tools) {
|
|
224
|
+
if (tool === 'gh' || tool === 'glab') {
|
|
225
|
+
if (!isToolInstalled(tool)) {
|
|
226
|
+
const spinner = ora(`Installing ${tool}...`).start();
|
|
227
|
+
try {
|
|
228
|
+
await installTool(tool);
|
|
229
|
+
spinner.succeed(chalk.green(`${tool} installed`));
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
spinner.fail(chalk.red(`Failed to install ${tool}`));
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
console.log(chalk.yellow('\nInstallation cancelled\n'));
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// Show warnings
|
|
244
|
+
if (validation.warnings.length > 0) {
|
|
245
|
+
console.log(chalk.yellow('⚠ Configuration needed:'));
|
|
246
|
+
validation.warnings.forEach(warning => {
|
|
247
|
+
// Highlight environment variables in the warning text
|
|
248
|
+
const highlightedWarning = warning.replace(/([A-Z_]{3,})/g, chalk.cyan('$1'));
|
|
249
|
+
console.log(' ' + highlightedWarning);
|
|
250
|
+
});
|
|
251
|
+
console.log('');
|
|
252
|
+
}
|
|
253
|
+
// Interactive mode
|
|
254
|
+
let installOptions = {
|
|
255
|
+
force: options.force,
|
|
256
|
+
dryRun: options.dryRun,
|
|
257
|
+
provider,
|
|
258
|
+
};
|
|
259
|
+
if (options.interactive) {
|
|
260
|
+
console.log(chalk.bold('Workflow Configuration'));
|
|
261
|
+
console.log(chalk.dim('Customize the workflow settings below'));
|
|
262
|
+
console.log(chalk.dim('Press Enter to use default values\n'));
|
|
263
|
+
const questions = [
|
|
264
|
+
{
|
|
265
|
+
type: 'input',
|
|
266
|
+
name: 'timeout',
|
|
267
|
+
message: 'Workflow timeout (minutes):',
|
|
268
|
+
default: String(template.config.timeout || 15),
|
|
269
|
+
validate: (value) => {
|
|
270
|
+
if (!value || value.trim() === '')
|
|
271
|
+
return true; // Allow empty to use default
|
|
272
|
+
const num = parseInt(value);
|
|
273
|
+
if (isNaN(num) || num <= 0) {
|
|
274
|
+
return 'Please enter a valid positive number';
|
|
275
|
+
}
|
|
276
|
+
return true;
|
|
277
|
+
}
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
type: 'input',
|
|
281
|
+
name: 'maxTurns',
|
|
282
|
+
message: 'Maximum AI turns:',
|
|
283
|
+
default: String(template.config.maxTurns || 50),
|
|
284
|
+
validate: (value) => {
|
|
285
|
+
if (!value || value.trim() === '')
|
|
286
|
+
return true; // Allow empty to use default
|
|
287
|
+
const num = parseInt(value);
|
|
288
|
+
if (isNaN(num) || num <= 0) {
|
|
289
|
+
return 'Please enter a valid positive number';
|
|
290
|
+
}
|
|
291
|
+
return true;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
];
|
|
295
|
+
if (provider === 'github') {
|
|
296
|
+
questions.push({
|
|
297
|
+
type: 'input',
|
|
298
|
+
name: 'environment',
|
|
299
|
+
message: 'GitHub environment (optional):',
|
|
300
|
+
default: template.config.environment || ''
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
const answers = await inquirer.prompt(questions);
|
|
304
|
+
if (answers.timeout && answers.timeout.trim() !== '') {
|
|
305
|
+
installOptions.timeout = parseInt(answers.timeout);
|
|
306
|
+
}
|
|
307
|
+
if (answers.maxTurns && answers.maxTurns.trim() !== '') {
|
|
308
|
+
installOptions.maxTurns = parseInt(answers.maxTurns);
|
|
309
|
+
}
|
|
310
|
+
if (provider === 'github' && answers.environment && answers.environment.trim() !== '') {
|
|
311
|
+
installOptions.environment = answers.environment;
|
|
312
|
+
}
|
|
313
|
+
console.log('');
|
|
314
|
+
console.log(chalk.dim('Configuration notes:'));
|
|
315
|
+
console.log(chalk.dim(' • Timeout: How long the workflow can run (15-60 minutes recommended)'));
|
|
316
|
+
console.log(chalk.dim(' • Max turns: AI conversation depth (50 = simple, 100+ = complex tasks)'));
|
|
317
|
+
if (provider === 'github') {
|
|
318
|
+
console.log(chalk.dim(' • Environment: GitHub deployment environment for protection rules\n'));
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
console.log('');
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
// Use CLI options
|
|
326
|
+
if (options.timeout)
|
|
327
|
+
installOptions.timeout = options.timeout;
|
|
328
|
+
if (options.maxTurns)
|
|
329
|
+
installOptions.maxTurns = options.maxTurns;
|
|
330
|
+
if (options.environment)
|
|
331
|
+
installOptions.environment = options.environment;
|
|
332
|
+
}
|
|
333
|
+
// Install workflow
|
|
334
|
+
const spinner = ora('Installing workflow...').start();
|
|
335
|
+
try {
|
|
336
|
+
const result = await installWorkflow(workflowId, provider, installOptions);
|
|
337
|
+
if (result.action === 'skipped') {
|
|
338
|
+
spinner.warn(chalk.yellow('Installation skipped'));
|
|
339
|
+
console.log('');
|
|
340
|
+
console.log(chalk.dim('Workflow is already installed at:'), result.path);
|
|
341
|
+
console.log('');
|
|
342
|
+
console.log(chalk.dim('Use --force to reinstall\n'));
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
spinner.succeed(chalk.green('Workflow installed'));
|
|
346
|
+
console.log('');
|
|
347
|
+
console.log(chalk.bold('Installed to:'), result.path);
|
|
348
|
+
console.log('');
|
|
349
|
+
if (!options.dryRun) {
|
|
350
|
+
console.log(chalk.green('✅ Workflow installation complete'));
|
|
351
|
+
console.log('');
|
|
352
|
+
console.log(chalk.bold('Next steps:'));
|
|
353
|
+
console.log(chalk.dim(' 1. Configure required secrets in your repository settings'));
|
|
354
|
+
console.log(chalk.dim(' 2. Commit and push the workflow file'));
|
|
355
|
+
console.log(chalk.dim(' 3. The workflow will run automatically based on configured triggers\n'));
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
catch (error) {
|
|
359
|
+
spinner.fail(chalk.red('Installation failed'));
|
|
360
|
+
console.log(chalk.red(` ${error instanceof Error ? error.message : String(error)}\n`));
|
|
361
|
+
}
|
|
362
|
+
});
|
|
363
|
+
// Uninstall command
|
|
364
|
+
workflow
|
|
365
|
+
.command('uninstall <workflow-id>')
|
|
366
|
+
.description('Uninstall a workflow')
|
|
367
|
+
.option('--github', 'Force GitHub provider')
|
|
368
|
+
.option('--gitlab', 'Force GitLab provider')
|
|
369
|
+
.addHelpText('after', `
|
|
370
|
+
|
|
371
|
+
Examples:
|
|
372
|
+
$ codemie workflow uninstall pr-review # Remove PR review workflow
|
|
373
|
+
$ codemie workflow uninstall pr-review --github
|
|
374
|
+
|
|
375
|
+
Note: This removes the workflow file but doesn't delete workflow runs or history.
|
|
376
|
+
`)
|
|
377
|
+
.action(async (workflowId, options) => {
|
|
378
|
+
console.log(chalk.bold.cyan('\n╔═══════════════════════════════════════╗'));
|
|
379
|
+
console.log(chalk.bold.cyan('║ Uninstall Workflow ║'));
|
|
380
|
+
console.log(chalk.bold.cyan('╚═══════════════════════════════════════╝\n'));
|
|
381
|
+
// Determine provider
|
|
382
|
+
let provider;
|
|
383
|
+
if (options.github) {
|
|
384
|
+
provider = 'github';
|
|
385
|
+
}
|
|
386
|
+
else if (options.gitlab) {
|
|
387
|
+
provider = 'gitlab';
|
|
388
|
+
}
|
|
389
|
+
else {
|
|
390
|
+
const detection = detectVCSProvider();
|
|
391
|
+
if (!detection.provider) {
|
|
392
|
+
console.log(chalk.red('✗ Could not detect VCS provider'));
|
|
393
|
+
console.log(chalk.dim(' Use --github or --gitlab to specify provider\n'));
|
|
394
|
+
console.log(chalk.yellow('Uninstall cancelled\n'));
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
provider = detection.provider;
|
|
398
|
+
}
|
|
399
|
+
const { confirm } = await inquirer.prompt([
|
|
400
|
+
{
|
|
401
|
+
type: 'confirm',
|
|
402
|
+
name: 'confirm',
|
|
403
|
+
message: `Are you sure you want to uninstall ${workflowId}?`,
|
|
404
|
+
default: false
|
|
405
|
+
}
|
|
406
|
+
]);
|
|
407
|
+
if (!confirm) {
|
|
408
|
+
console.log(chalk.yellow('\nUninstall cancelled\n'));
|
|
409
|
+
return;
|
|
410
|
+
}
|
|
411
|
+
const spinner = ora('Uninstalling workflow...').start();
|
|
412
|
+
try {
|
|
413
|
+
await uninstallWorkflow(workflowId, provider);
|
|
414
|
+
spinner.succeed(chalk.green(`Workflow ${workflowId} uninstalled successfully`));
|
|
415
|
+
console.log('');
|
|
416
|
+
}
|
|
417
|
+
catch (error) {
|
|
418
|
+
spinner.fail(chalk.red('Uninstall failed'));
|
|
419
|
+
console.log(chalk.red(` ${error instanceof Error ? error.message : String(error)}\n`));
|
|
420
|
+
}
|
|
421
|
+
});
|
|
422
|
+
return workflow;
|
|
423
|
+
}
|
|
424
|
+
//# sourceMappingURL=workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../src/cli/commands/workflow.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,EACf,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,GAGrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;SACrC,WAAW,CAAC,oDAAoD,CAAC;SACjE,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;CAyBzB,CAAC,CAAC;IAED,eAAe;IACf,QAAQ;SACL,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,UAAU,EAAE,gDAAgD,CAAC;SACpE,MAAM,CAAC,aAAa,EAAE,+BAA+B,CAAC;SACtD,MAAM,CAAC,UAAU,EAAE,4BAA4B,CAAC;SAChD,MAAM,CAAC,UAAU,EAAE,4BAA4B,CAAC;SAChD,WAAW,CAAC,OAAO,EAAE;;;;;;CAMzB,CAAC;SACG,MAAM,CAAC,KAAK,EAAE,OAAsF,EAAE,EAAE;QACvG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;QAE5E,mCAAmC;QACnC,IAAI,QAAiC,CAAC;QACtC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,QAAQ,GAAG,QAAQ,CAAC;QACtB,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1B,QAAQ,GAAG,QAAQ,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;YACtC,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;gBACvB,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,QAAQ,eAAe,CAAC,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,2BAA2B;YAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sDAAsD,CAAC,CAAC,CAAC;gBAClF,OAAO;YACT,CAAC;YAED,MAAM,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBAChD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,MAAM,SAAS,GAAG,QAAQ;gBACxB,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC;gBAClC,CAAC,CAAC,eAAe,EAAE,CAAC;YAEtB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;gBACnD,OAAO;YACT,CAAC;YAED,oBAAoB;YACpB,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;gBACjD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5B,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;gBAC9B,CAAC;gBACD,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtC,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAA2C,CAAC,CAAC;YAEhD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAEhB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBACvB,MAAM,SAAS,GAAG,mBAAmB,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBACtE,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAEnF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;oBACtD,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,gBAAgB,QAAQ,CAAC,QAAQ,cAAc,MAAM,EAAE,CAAC,CAAC;oBACxH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;YACL,CAAC;YAED,kBAAkB;YAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;YACpF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACpF,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,kBAAkB;IAClB,QAAQ;SACL,OAAO,CAAC,uBAAuB,CAAC;SAChC,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,UAAU,EAAE,uBAAuB,CAAC;SAC3C,MAAM,CAAC,UAAU,EAAE,uBAAuB,CAAC;SAC3C,MAAM,CAAC,mBAAmB,EAAE,sDAAsD,CAAC;SACnF,MAAM,CAAC,aAAa,EAAE,sCAAsC,CAAC;SAC7D,MAAM,CAAC,WAAW,EAAE,4CAA4C,CAAC;SACjE,MAAM,CAAC,qBAAqB,EAAE,2CAA2C,EAAE,QAAQ,CAAC;SACpF,MAAM,CAAC,sBAAsB,EAAE,6CAA6C,EAAE,QAAQ,CAAC;SACvF,MAAM,CAAC,qBAAqB,EAAE,8CAA8C,CAAC;SAC7E,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;CAiBzB,CAAC;SACG,MAAM,CAAC,KAAK,EAAE,UAAkB,EAAE,OASlC,EAAE,EAAE;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;QAE5E,qBAAqB;QACrB,IAAI,QAAqB,CAAC;QAC1B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,QAAQ,GAAG,QAAQ,CAAC;QACtB,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1B,QAAQ,GAAG,QAAQ,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;gBAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;gBAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YACD,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,QAAQ,eAAe,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,eAAe;QACf,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,UAAU,mBAAmB,QAAQ,EAAE,CAAC,CAAC,CAAC;YACxF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;YAEnD,MAAM,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,QAAQ,qCAAqC,CAAC,CAAC,CAAC;gBACnF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC,CAAC;YACnG,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACrD,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,wBAAwB;QACxB,MAAM,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAElD,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACrD,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;gBACxC;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,wBAAwB;oBACjC,OAAO,EAAE,IAAI;iBACd;aACF,CAAC,CAAC;YAEH,IAAI,OAAO,EAAE,CAAC;gBACZ,wBAAwB;gBACxB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;gBAC7D,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;oBAC/C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;wBACrC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;4BACrD,IAAI,CAAC;gCACH,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;gCACxB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC;4BACpD,CAAC;4BAAC,MAAM,CAAC;gCACP,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;4BACvD,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC;gBACxD,OAAO;YACT,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACrD,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACpC,sDAAsD;gBACtD,MAAM,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9E,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,kBAAkB,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAED,mBAAmB;QACnB,IAAI,cAAc,GAA2B;YAC3C,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ;SACT,CAAC;QAEF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;YAE9D,MAAM,SAAS,GAAU;gBACvB;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,6BAA6B;oBACtC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;oBAC9C,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;wBAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;4BAAE,OAAO,IAAI,CAAC,CAAC,6BAA6B;wBAC7E,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAC5B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;4BAC3B,OAAO,sCAAsC,CAAC;wBAChD,CAAC;wBACD,OAAO,IAAI,CAAC;oBACd,CAAC;iBACF;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,mBAAmB;oBAC5B,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;oBAC/C,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;wBAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;4BAAE,OAAO,IAAI,CAAC,CAAC,6BAA6B;wBAC7E,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAC5B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;4BAC3B,OAAO,sCAAsC,CAAC;wBAChD,CAAC;wBACD,OAAO,IAAI,CAAC;oBACd,CAAC;iBACF;aACF,CAAC;YAEF,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC1B,SAAS,CAAC,IAAI,CAAC;oBACb,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE,gCAAgC;oBACzC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE;iBAC3C,CAAC,CAAC;YACL,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAEjD,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACrD,cAAc,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrD,CAAC;YAED,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACvD,cAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACtF,cAAc,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YACnD,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC,CAAC;YACjG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC,CAAC;YACnG,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC,CAAC;YAClG,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,IAAI,OAAO,CAAC,OAAO;gBAAE,cAAc,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAC9D,IAAI,OAAO,CAAC,QAAQ;gBAAE,cAAc,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YACjE,IAAI,OAAO,CAAC,WAAW;gBAAE,cAAc,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAC5E,CAAC;QAED,mBAAmB;QACnB,MAAM,OAAO,GAAG,GAAG,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;YAE3E,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBACzE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;gBACrD,OAAO;YACT,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAEnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;gBAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC,CAAC;gBACtF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC,CAAC;YACpG,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,oBAAoB;IACpB,QAAQ;SACL,OAAO,CAAC,yBAAyB,CAAC;SAClC,WAAW,CAAC,sBAAsB,CAAC;SACnC,MAAM,CAAC,UAAU,EAAE,uBAAuB,CAAC;SAC3C,MAAM,CAAC,UAAU,EAAE,uBAAuB,CAAC;SAC3C,WAAW,CAAC,OAAO,EAAE;;;;;;;CAOzB,CAAC;SACG,MAAM,CAAC,KAAK,EAAE,UAAkB,EAAE,OAA+C,EAAE,EAAE;QACpF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;QAE5E,qBAAqB;QACrB,IAAI,QAAqB,CAAC;QAC1B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,QAAQ,GAAG,QAAQ,CAAC;QACtB,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1B,QAAQ,GAAG,QAAQ,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;gBAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;gBAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBACnD,OAAO;YACT,CAAC;YACD,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QAChC,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACxC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,sCAAsC,UAAU,GAAG;gBAC5D,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,MAAM,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC9C,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,UAAU,2BAA2B,CAAC,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -1,26 +1,28 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { createListCommand } from './commands/list.js';
|
|
4
|
+
import { createInstallCommand } from './commands/install.js';
|
|
5
|
+
import { createUninstallCommand } from './commands/uninstall.js';
|
|
6
|
+
import { createRunCommand } from './commands/run.js';
|
|
7
|
+
import { createDoctorCommand } from './commands/doctor.js';
|
|
8
|
+
import { createVersionCommand } from './commands/version.js';
|
|
9
|
+
import { createSetupCommand } from './commands/setup.js';
|
|
10
|
+
import { createConfigCommand } from './commands/config.js';
|
|
11
|
+
import { createEnvCommand } from './commands/env.js';
|
|
12
|
+
import { createAuthCommand } from './commands/auth.js';
|
|
13
|
+
import { createToolsCommand } from './commands/tools.js';
|
|
14
|
+
import { createWorkflowCommand } from './commands/workflow.js';
|
|
15
|
+
import { FirstTimeExperience } from '../utils/first-time.js';
|
|
16
|
+
import chalk from 'chalk';
|
|
17
|
+
import { readFileSync } from 'fs';
|
|
18
|
+
import { join } from 'path';
|
|
19
|
+
import { getDirname } from '../utils/dirname.js';
|
|
20
|
+
const program = new Command();
|
|
19
21
|
// Read version from package.json
|
|
20
22
|
let version = '1.0.0';
|
|
21
23
|
try {
|
|
22
|
-
const packageJsonPath = (
|
|
23
|
-
const packageJsonContent =
|
|
24
|
+
const packageJsonPath = join(getDirname(import.meta.url), '../../package.json');
|
|
25
|
+
const packageJsonContent = readFileSync(packageJsonPath, 'utf-8');
|
|
24
26
|
const packageJson = JSON.parse(packageJsonContent);
|
|
25
27
|
version = packageJson.version;
|
|
26
28
|
}
|
|
@@ -29,22 +31,70 @@ catch {
|
|
|
29
31
|
}
|
|
30
32
|
program
|
|
31
33
|
.name('codemie')
|
|
32
|
-
.description('CLI wrapper for managing multiple AI coding agents')
|
|
33
|
-
.version(version)
|
|
34
|
+
.description('AI/Run CodeMie CLI - Professional CLI wrapper for managing multiple AI coding agents')
|
|
35
|
+
.version(version)
|
|
36
|
+
.option('--task <task>', 'Execute a single task using the built-in agent and exit');
|
|
34
37
|
// Add commands
|
|
35
|
-
program.addCommand((
|
|
36
|
-
program.addCommand((
|
|
37
|
-
program.addCommand((
|
|
38
|
-
program.addCommand((
|
|
39
|
-
program.addCommand((
|
|
40
|
-
program.addCommand((
|
|
41
|
-
program.addCommand((
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
38
|
+
program.addCommand(createSetupCommand());
|
|
39
|
+
program.addCommand(createAuthCommand());
|
|
40
|
+
program.addCommand(createEnvCommand());
|
|
41
|
+
program.addCommand(createConfigCommand());
|
|
42
|
+
program.addCommand(createListCommand());
|
|
43
|
+
program.addCommand(createInstallCommand());
|
|
44
|
+
program.addCommand(createUninstallCommand());
|
|
45
|
+
program.addCommand(createRunCommand());
|
|
46
|
+
program.addCommand(createDoctorCommand());
|
|
47
|
+
program.addCommand(createVersionCommand());
|
|
48
|
+
program.addCommand(createToolsCommand());
|
|
49
|
+
program.addCommand(createWorkflowCommand());
|
|
50
|
+
// Check for --task option before parsing commands
|
|
51
|
+
const taskIndex = process.argv.indexOf('--task');
|
|
52
|
+
if (taskIndex !== -1 && taskIndex < process.argv.length - 1) {
|
|
53
|
+
// Extract task and run the built-in agent
|
|
54
|
+
const task = process.argv[taskIndex + 1];
|
|
55
|
+
(async () => {
|
|
56
|
+
try {
|
|
57
|
+
const { CodeMieCode } = await import('../agents/codemie-code/index.js');
|
|
58
|
+
const { logger } = await import('../utils/logger.js');
|
|
59
|
+
const workingDir = process.cwd();
|
|
60
|
+
const codeMie = new CodeMieCode(workingDir);
|
|
61
|
+
try {
|
|
62
|
+
await codeMie.initialize();
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
logger.error('CodeMie configuration required. Please run: codemie setup');
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
// Execute task with UI
|
|
69
|
+
await codeMie.executeTaskWithUI(task);
|
|
70
|
+
process.exit(0);
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
console.error('Failed to run task:', error);
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
})();
|
|
77
|
+
}
|
|
78
|
+
else if (process.argv.length === 2) {
|
|
79
|
+
// Show help if no command provided
|
|
80
|
+
FirstTimeExperience.isFirstTime().then(isFirstTime => {
|
|
81
|
+
if (isFirstTime) {
|
|
82
|
+
// Show welcome message and recommendations for first-time users
|
|
83
|
+
FirstTimeExperience.showWelcomeMessage();
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// Show quick start guide for returning users
|
|
87
|
+
FirstTimeExperience.showQuickStart();
|
|
88
|
+
}
|
|
89
|
+
}).catch(() => {
|
|
90
|
+
// Fallback to default help if detection fails
|
|
91
|
+
console.log(chalk.bold.cyan('\n╔═══════════════════════════════════════╗'));
|
|
92
|
+
console.log(chalk.bold.cyan('║ CodeMie CLI Wrapper ║'));
|
|
93
|
+
console.log(chalk.bold.cyan('╚═══════════════════════════════════════╝\n'));
|
|
94
|
+
program.help();
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
program.parse(process.argv);
|
|
48
99
|
}
|
|
49
|
-
program.parse(process.argv);
|
|
50
100
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ClientAdapter } from '../registry.js';
|
|
2
|
+
export declare class GitHubClientAdapter implements ClientAdapter {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
description: string;
|
|
6
|
+
cliCommand: string;
|
|
7
|
+
isInstalled(): Promise<boolean>;
|
|
8
|
+
getVersion(): Promise<string | null>;
|
|
9
|
+
install(): Promise<void>;
|
|
10
|
+
private installOnMac;
|
|
11
|
+
private installOnLinux;
|
|
12
|
+
private installOnWindows;
|
|
13
|
+
uninstall(): Promise<void>;
|
|
14
|
+
isAuthenticated(): Promise<boolean>;
|
|
15
|
+
authenticate(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=github.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/clients/adapters/github.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAI/C,qBAAa,mBAAoB,YAAW,aAAa;IACvD,IAAI,SAAY;IAChB,WAAW,SAAgB;IAC3B,WAAW,SAA4C;IACvD,UAAU,SAAQ;IAEZ,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/B,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWpC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YA2BhB,YAAY;YAUZ,cAAc;YA2Bd,gBAAgB;IAIxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B1B,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IASnC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAuBpC"}
|