agent-pipeline 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +2 -3
- package/README.md +110 -55
- package/dist/cli/commands/agent/info.js +1 -1
- package/dist/cli/commands/agent/info.js.map +1 -1
- package/dist/cli/commands/agent/list.js +1 -1
- package/dist/cli/commands/agent/list.js.map +1 -1
- package/dist/cli/commands/agent/pull.d.ts +1 -0
- package/dist/cli/commands/agent/pull.d.ts.map +1 -1
- package/dist/cli/commands/agent/pull.js +67 -44
- package/dist/cli/commands/agent/pull.js.map +1 -1
- package/dist/cli/commands/cleanup.d.ts +4 -0
- package/dist/cli/commands/cleanup.d.ts.map +1 -1
- package/dist/cli/commands/cleanup.js +197 -37
- package/dist/cli/commands/cleanup.js.map +1 -1
- package/dist/cli/commands/history.d.ts.map +1 -1
- package/dist/cli/commands/history.js +3 -22
- package/dist/cli/commands/history.js.map +1 -1
- package/dist/cli/commands/hooks.d.ts +10 -0
- package/dist/cli/commands/hooks.d.ts.map +1 -0
- package/dist/cli/commands/hooks.js +88 -0
- package/dist/cli/commands/hooks.js.map +1 -0
- package/dist/cli/commands/init.d.ts +1 -6
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +173 -58
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/loop-context.d.ts +2 -0
- package/dist/cli/commands/loop-context.d.ts.map +1 -0
- package/dist/cli/commands/loop-context.js +88 -0
- package/dist/cli/commands/loop-context.js.map +1 -0
- package/dist/cli/commands/pipeline/create.d.ts.map +1 -1
- package/dist/cli/commands/pipeline/create.js +156 -68
- package/dist/cli/commands/pipeline/create.js.map +1 -1
- package/dist/cli/commands/run.d.ts +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +29 -5
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/schema.d.ts +9 -0
- package/dist/cli/commands/schema.d.ts.map +1 -0
- package/dist/cli/commands/schema.js +541 -0
- package/dist/cli/commands/schema.js.map +1 -0
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +0 -6
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/help/index.d.ts +6 -0
- package/dist/cli/help/index.d.ts.map +1 -0
- package/dist/cli/help/index.js +538 -0
- package/dist/cli/help/index.js.map +1 -0
- package/dist/cli/help/types.d.ts +22 -0
- package/dist/cli/help/types.d.ts.map +1 -0
- package/dist/cli/help/types.js +2 -0
- package/dist/cli/help/types.js.map +1 -0
- package/dist/cli/hooks.d.ts +5 -1
- package/dist/cli/hooks.d.ts.map +1 -1
- package/dist/cli/hooks.js +106 -12
- package/dist/cli/hooks.js.map +1 -1
- package/dist/cli/templates/agents/code-review-agents/code-reviewer.md +46 -0
- package/dist/cli/templates/agents/code-review-agents/memory-doc-updater.md +189 -0
- package/dist/cli/templates/agents/code-review-agents/quality-checker.md +52 -0
- package/dist/cli/templates/agents/frontend-agents/brutalist_purist.md +563 -0
- package/dist/cli/templates/agents/frontend-agents/cyberpunk_hacker.md +824 -0
- package/dist/cli/templates/agents/frontend-agents/frontend-pipeline-ref.md +32 -0
- package/dist/cli/templates/agents/frontend-agents/indie_game_dev.md +715 -0
- package/dist/cli/templates/agents/frontend-agents/luxury_editorial.md +628 -0
- package/dist/cli/templates/agents/frontend-agents/product_owner.md +159 -0
- package/dist/cli/templates/agents/frontend-agents/retro_90s_webmaster.md +385 -0
- package/dist/cli/templates/agents/frontend-agents/showcase.md +362 -0
- package/dist/cli/templates/agents/frontend-agents/swiss_modernist.md +716 -0
- package/dist/cli/templates/agents/loop-agents/socratic-explorer.md +91 -0
- package/dist/cli/templates/instructions/handover.md +40 -0
- package/dist/cli/templates/instructions/loop.md +35 -0
- package/dist/cli/templates/pipelines/front-end-parallel-example.yml +81 -0
- package/dist/cli/templates/pipelines/loop-example.yml +25 -0
- package/dist/cli/templates/pipelines/post-commit-example.yml +49 -58
- package/dist/cli/templates/schema/pipeline-config.schema.json +400 -0
- package/dist/cli/templates/schema/pipeline-config.schema.yaml +301 -0
- package/dist/cli/utils/agent-importer.d.ts +1 -0
- package/dist/cli/utils/agent-importer.d.ts.map +1 -1
- package/dist/cli/utils/agent-importer.js +67 -0
- package/dist/cli/utils/agent-importer.js.map +1 -1
- package/dist/cli/utils/interactive-prompts.d.ts +4 -0
- package/dist/cli/utils/interactive-prompts.d.ts.map +1 -1
- package/dist/cli/utils/interactive-prompts.js +59 -13
- package/dist/cli/utils/interactive-prompts.js.map +1 -1
- package/dist/config/pipeline-loader.d.ts +4 -1
- package/dist/config/pipeline-loader.d.ts.map +1 -1
- package/dist/config/pipeline-loader.js +58 -0
- package/dist/config/pipeline-loader.js.map +1 -1
- package/dist/config/schema.d.ts +65 -35
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/core/abort-controller.d.ts +16 -0
- package/dist/core/abort-controller.d.ts.map +1 -0
- package/dist/core/abort-controller.js +52 -0
- package/dist/core/abort-controller.js.map +1 -0
- package/dist/core/agent-query-runner.d.ts +0 -1
- package/dist/core/agent-query-runner.d.ts.map +1 -1
- package/dist/core/agent-query-runner.js +0 -22
- package/dist/core/agent-query-runner.js.map +1 -1
- package/dist/core/agent-runtimes/claude-code-headless-runtime.d.ts +5 -1
- package/dist/core/agent-runtimes/claude-code-headless-runtime.d.ts.map +1 -1
- package/dist/core/agent-runtimes/claude-code-headless-runtime.js +127 -12
- package/dist/core/agent-runtimes/claude-code-headless-runtime.js.map +1 -1
- package/dist/core/agent-runtimes/claude-sdk-runtime.d.ts +0 -2
- package/dist/core/agent-runtimes/claude-sdk-runtime.d.ts.map +1 -1
- package/dist/core/agent-runtimes/claude-sdk-runtime.js +1 -22
- package/dist/core/agent-runtimes/claude-sdk-runtime.js.map +1 -1
- package/dist/core/branch-manager.d.ts +3 -1
- package/dist/core/branch-manager.d.ts.map +1 -1
- package/dist/core/branch-manager.js +11 -1
- package/dist/core/branch-manager.js.map +1 -1
- package/dist/core/git-manager.d.ts +17 -1
- package/dist/core/git-manager.d.ts.map +1 -1
- package/dist/core/git-manager.js +147 -3
- package/dist/core/git-manager.js.map +1 -1
- package/dist/core/group-execution-orchestrator.d.ts +7 -13
- package/dist/core/group-execution-orchestrator.d.ts.map +1 -1
- package/dist/core/group-execution-orchestrator.js +53 -142
- package/dist/core/group-execution-orchestrator.js.map +1 -1
- package/dist/core/handover-manager.d.ts +24 -0
- package/dist/core/handover-manager.d.ts.map +1 -0
- package/dist/core/handover-manager.js +214 -0
- package/dist/core/handover-manager.js.map +1 -0
- package/dist/core/instruction-loader.d.ts +23 -0
- package/dist/core/instruction-loader.d.ts.map +1 -0
- package/dist/core/instruction-loader.js +112 -0
- package/dist/core/instruction-loader.js.map +1 -0
- package/dist/core/loop-state-manager.d.ts +12 -7
- package/dist/core/loop-state-manager.d.ts.map +1 -1
- package/dist/core/loop-state-manager.js +49 -3
- package/dist/core/loop-state-manager.js.map +1 -1
- package/dist/core/parallel-executor.d.ts +12 -3
- package/dist/core/parallel-executor.d.ts.map +1 -1
- package/dist/core/parallel-executor.js +92 -14
- package/dist/core/parallel-executor.js.map +1 -1
- package/dist/core/pipeline-finalizer.d.ts +12 -4
- package/dist/core/pipeline-finalizer.d.ts.map +1 -1
- package/dist/core/pipeline-finalizer.js +244 -33
- package/dist/core/pipeline-finalizer.js.map +1 -1
- package/dist/core/pipeline-initializer.d.ts +13 -5
- package/dist/core/pipeline-initializer.d.ts.map +1 -1
- package/dist/core/pipeline-initializer.js +53 -25
- package/dist/core/pipeline-initializer.js.map +1 -1
- package/dist/core/pipeline-runner.d.ts +13 -1
- package/dist/core/pipeline-runner.d.ts.map +1 -1
- package/dist/core/pipeline-runner.js +352 -60
- package/dist/core/pipeline-runner.js.map +1 -1
- package/dist/core/pr-creator.d.ts +0 -1
- package/dist/core/pr-creator.d.ts.map +1 -1
- package/dist/core/pr-creator.js +12 -4
- package/dist/core/pr-creator.js.map +1 -1
- package/dist/core/stage-executor.d.ts +17 -9
- package/dist/core/stage-executor.d.ts.map +1 -1
- package/dist/core/stage-executor.js +152 -166
- package/dist/core/stage-executor.js.map +1 -1
- package/dist/core/types/agent-runtime.d.ts +3 -2
- package/dist/core/types/agent-runtime.d.ts.map +1 -1
- package/dist/core/worktree-manager.d.ts +21 -0
- package/dist/core/worktree-manager.d.ts.map +1 -0
- package/dist/core/worktree-manager.js +133 -0
- package/dist/core/worktree-manager.js.map +1 -0
- package/dist/index.js +118 -112
- package/dist/index.js.map +1 -1
- package/dist/notifications/notification-manager.d.ts +1 -0
- package/dist/notifications/notification-manager.d.ts.map +1 -1
- package/dist/notifications/notification-manager.js +17 -3
- package/dist/notifications/notification-manager.js.map +1 -1
- package/dist/notifications/notifiers/local-notifier.d.ts.map +1 -1
- package/dist/notifications/notifiers/local-notifier.js +5 -2
- package/dist/notifications/notifiers/local-notifier.js.map +1 -1
- package/dist/notifications/notifiers/slack-notifier.d.ts.map +1 -1
- package/dist/notifications/notifiers/slack-notifier.js +39 -8
- package/dist/notifications/notifiers/slack-notifier.js.map +1 -1
- package/dist/notifications/types.d.ts +1 -1
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/ui/components/execution-group.d.ts.map +1 -1
- package/dist/ui/components/execution-group.js +1 -1
- package/dist/ui/components/execution-group.js.map +1 -1
- package/dist/ui/components/interactive-summary.d.ts +9 -0
- package/dist/ui/components/interactive-summary.d.ts.map +1 -0
- package/dist/ui/components/interactive-summary.js +166 -0
- package/dist/ui/components/interactive-summary.js.map +1 -0
- package/dist/ui/components/keyboard-hints.d.ts +12 -0
- package/dist/ui/components/keyboard-hints.d.ts.map +1 -0
- package/dist/ui/components/keyboard-hints.js +13 -0
- package/dist/ui/components/keyboard-hints.js.map +1 -0
- package/dist/ui/components/live-timer.d.ts +9 -0
- package/dist/ui/components/live-timer.d.ts.map +1 -0
- package/dist/ui/components/live-timer.js +25 -0
- package/dist/ui/components/live-timer.js.map +1 -0
- package/dist/ui/components/loop-iteration-history.d.ts +8 -0
- package/dist/ui/components/loop-iteration-history.d.ts.map +1 -0
- package/dist/ui/components/loop-iteration-history.js +106 -0
- package/dist/ui/components/loop-iteration-history.js.map +1 -0
- package/dist/ui/components/loop-session-summary.d.ts +9 -0
- package/dist/ui/components/loop-session-summary.d.ts.map +1 -0
- package/dist/ui/components/loop-session-summary.js +39 -0
- package/dist/ui/components/loop-session-summary.js.map +1 -0
- package/dist/ui/components/stage-row.d.ts +0 -1
- package/dist/ui/components/stage-row.d.ts.map +1 -1
- package/dist/ui/components/stage-row.js +5 -15
- package/dist/ui/components/stage-row.js.map +1 -1
- package/dist/ui/components/status-badge.d.ts.map +1 -1
- package/dist/ui/components/status-badge.js +1 -0
- package/dist/ui/components/status-badge.js.map +1 -1
- package/dist/ui/pipeline-ui.d.ts +1 -0
- package/dist/ui/pipeline-ui.d.ts.map +1 -1
- package/dist/ui/pipeline-ui.js +22 -18
- package/dist/ui/pipeline-ui.js.map +1 -1
- package/dist/utils/error-factory.d.ts.map +1 -1
- package/dist/utils/error-factory.js +10 -2
- package/dist/utils/error-factory.js.map +1 -1
- package/dist/utils/pipeline-formatter.d.ts +8 -2
- package/dist/utils/pipeline-formatter.d.ts.map +1 -1
- package/dist/utils/pipeline-formatter.js +30 -26
- package/dist/utils/pipeline-formatter.js.map +1 -1
- package/dist/utils/pipeline-logger.d.ts +19 -0
- package/dist/utils/pipeline-logger.d.ts.map +1 -0
- package/dist/utils/pipeline-logger.js +80 -0
- package/dist/utils/pipeline-logger.js.map +1 -0
- package/dist/utils/platform-opener.d.ts +4 -0
- package/dist/utils/platform-opener.d.ts.map +1 -0
- package/dist/utils/platform-opener.js +52 -0
- package/dist/utils/platform-opener.js.map +1 -0
- package/dist/validators/agent-validator.d.ts +10 -0
- package/dist/validators/agent-validator.d.ts.map +1 -0
- package/dist/validators/agent-validator.js +87 -0
- package/dist/validators/agent-validator.js.map +1 -0
- package/dist/validators/dag-validator.d.ts +9 -0
- package/dist/validators/dag-validator.d.ts.map +1 -0
- package/dist/validators/dag-validator.js +51 -0
- package/dist/validators/dag-validator.js.map +1 -0
- package/dist/validators/environment-validator.d.ts +9 -0
- package/dist/validators/environment-validator.d.ts.map +1 -0
- package/dist/validators/environment-validator.js +35 -0
- package/dist/validators/environment-validator.js.map +1 -0
- package/dist/validators/execution-validator.d.ts +8 -0
- package/dist/validators/execution-validator.d.ts.map +1 -0
- package/dist/validators/execution-validator.js +51 -0
- package/dist/validators/execution-validator.js.map +1 -0
- package/dist/validators/git-validator.d.ts +13 -0
- package/dist/validators/git-validator.d.ts.map +1 -0
- package/dist/validators/git-validator.js +135 -0
- package/dist/validators/git-validator.js.map +1 -0
- package/dist/validators/notification-validator.d.ts +8 -0
- package/dist/validators/notification-validator.d.ts.map +1 -0
- package/dist/validators/notification-validator.js +27 -0
- package/dist/validators/notification-validator.js.map +1 -0
- package/dist/validators/pipeline-validator.d.ts +3 -26
- package/dist/validators/pipeline-validator.d.ts.map +1 -1
- package/dist/validators/pipeline-validator.js +5 -515
- package/dist/validators/pipeline-validator.js.map +1 -1
- package/dist/validators/retry-validator.d.ts +9 -0
- package/dist/validators/retry-validator.d.ts.map +1 -0
- package/dist/validators/retry-validator.js +34 -0
- package/dist/validators/retry-validator.js.map +1 -0
- package/dist/validators/runtime-validator.d.ts +9 -0
- package/dist/validators/runtime-validator.d.ts.map +1 -0
- package/dist/validators/runtime-validator.js +82 -0
- package/dist/validators/runtime-validator.js.map +1 -0
- package/dist/validators/structure-validator.d.ts +8 -0
- package/dist/validators/structure-validator.d.ts.map +1 -0
- package/dist/validators/structure-validator.js +39 -0
- package/dist/validators/structure-validator.js.map +1 -0
- package/dist/validators/types.d.ts +19 -0
- package/dist/validators/types.d.ts.map +1 -0
- package/dist/validators/types.js +2 -0
- package/dist/validators/types.js.map +1 -0
- package/dist/validators/validation-orchestrator.d.ts +9 -0
- package/dist/validators/validation-orchestrator.d.ts.map +1 -0
- package/dist/validators/validation-orchestrator.js +43 -0
- package/dist/validators/validation-orchestrator.js.map +1 -0
- package/package.json +17 -11
- package/dist/cli/commands/install.d.ts +0 -2
- package/dist/cli/commands/install.d.ts.map +0 -1
- package/dist/cli/commands/install.js +0 -15
- package/dist/cli/commands/install.js.map +0 -1
- package/dist/cli/commands/uninstall.d.ts +0 -2
- package/dist/cli/commands/uninstall.d.ts.map +0 -1
- package/dist/cli/commands/uninstall.js +0 -6
- package/dist/cli/commands/uninstall.js.map +0 -1
- package/dist/cli/templates/agents/cleanup-reporter.md +0 -107
- package/dist/cli/templates/agents/code-reducer.md +0 -51
- package/dist/cli/templates/agents/code-reviewer.md +0 -34
- package/dist/cli/templates/agents/context-reducer.md +0 -94
- package/dist/cli/templates/agents/dependency-auditor.md +0 -127
- package/dist/cli/templates/agents/detective-empath.md +0 -26
- package/dist/cli/templates/agents/detective-linguist.md +0 -26
- package/dist/cli/templates/agents/detective-logician.md +0 -26
- package/dist/cli/templates/agents/detective-skeptic.md +0 -26
- package/dist/cli/templates/agents/detective-statistician.md +0 -26
- package/dist/cli/templates/agents/doc-updater.md +0 -30
- package/dist/cli/templates/agents/judge.md +0 -27
- package/dist/cli/templates/agents/memory-updater.md +0 -72
- package/dist/cli/templates/agents/quality-checker.md +0 -32
- package/dist/cli/templates/agents/security-auditor.md +0 -32
- package/dist/cli/templates/agents/storyteller.md +0 -26
- package/dist/cli/templates/agents/summary.md +0 -32
- package/dist/cli/templates/agents/synthesizer.md +0 -26
- package/dist/cli/templates/pipelines/large-pipeline-example.yml +0 -178
- package/dist/cli/templates/pipelines/post-merge-example.yml +0 -78
- package/dist/cli/templates/pipelines/pre-commit-example.yml +0 -41
- package/dist/cli/templates/pipelines/pre-push-example.yml +0 -51
- package/dist/cli/templates/pipelines/test-pipeline.yml +0 -90
- package/dist/config/project-config-loader.d.ts +0 -11
- package/dist/config/project-config-loader.d.ts.map +0 -1
- package/dist/config/project-config-loader.js +0 -100
- package/dist/config/project-config-loader.js.map +0 -1
- package/dist/core/condition-evaluator.d.ts +0 -16
- package/dist/core/condition-evaluator.d.ts.map +0 -1
- package/dist/core/condition-evaluator.js +0 -121
- package/dist/core/condition-evaluator.js.map +0 -1
- package/dist/core/context-reducer.d.ts +0 -15
- package/dist/core/context-reducer.d.ts.map +0 -1
- package/dist/core/context-reducer.js +0 -224
- package/dist/core/context-reducer.js.map +0 -1
- package/dist/core/output-storage-manager.d.ts +0 -14
- package/dist/core/output-storage-manager.d.ts.map +0 -1
- package/dist/core/output-storage-manager.js +0 -68
- package/dist/core/output-storage-manager.js.map +0 -1
- package/dist/core/output-tool-builder.d.ts +0 -6
- package/dist/core/output-tool-builder.d.ts.map +0 -1
- package/dist/core/output-tool-builder.js +0 -50
- package/dist/core/output-tool-builder.js.map +0 -1
- /package/{license → LICENSE} +0 -0
|
@@ -1,65 +1,225 @@
|
|
|
1
1
|
import * as fs from 'fs/promises';
|
|
2
|
+
import * as fsSync from 'fs';
|
|
2
3
|
import * as path from 'path';
|
|
3
4
|
import { BranchManager } from '../../core/branch-manager.js';
|
|
5
|
+
import { WorktreeManager } from '../../core/worktree-manager.js';
|
|
4
6
|
import { InteractivePrompts } from '../utils/interactive-prompts.js';
|
|
7
|
+
import * as YAML from 'yaml';
|
|
5
8
|
export async function cleanupCommand(repoPath, options = {}) {
|
|
6
9
|
const branchManager = new BranchManager(repoPath);
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
if (branchesToDelete.length === 0) {
|
|
12
|
-
console.log('No pipeline branches found to clean up');
|
|
13
|
-
return;
|
|
10
|
+
const branchPrefixes = new Set();
|
|
11
|
+
let worktreeBaseDir;
|
|
12
|
+
if (options.prefix) {
|
|
13
|
+
branchPrefixes.add(options.prefix);
|
|
14
14
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
else if (options.pipeline) {
|
|
16
|
+
try {
|
|
17
|
+
const pipelinePath = path.join(repoPath, '.agent-pipeline', 'pipelines', `${options.pipeline}.yml`);
|
|
18
|
+
const content = fsSync.readFileSync(pipelinePath, 'utf-8');
|
|
19
|
+
const config = YAML.parse(content);
|
|
20
|
+
branchPrefixes.add(config?.git?.branchPrefix || 'pipeline');
|
|
21
|
+
worktreeBaseDir = config?.git?.worktree?.directory;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
branchPrefixes.add('pipeline');
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
branchPrefixes.add('pipeline');
|
|
29
|
+
try {
|
|
30
|
+
const pipelinesDir = path.join(repoPath, '.agent-pipeline', 'pipelines');
|
|
31
|
+
const files = fsSync.readdirSync(pipelinesDir);
|
|
32
|
+
for (const file of files) {
|
|
33
|
+
if (!file.endsWith('.yml') && !file.endsWith('.yaml'))
|
|
34
|
+
continue;
|
|
35
|
+
try {
|
|
36
|
+
const content = fsSync.readFileSync(path.join(pipelinesDir, file), 'utf-8');
|
|
37
|
+
const config = YAML.parse(content);
|
|
38
|
+
if (config?.git?.branchPrefix) {
|
|
39
|
+
branchPrefixes.add(config.git.branchPrefix);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const worktreeManager = worktreeBaseDir
|
|
50
|
+
? new WorktreeManager(repoPath, worktreeBaseDir)
|
|
51
|
+
: new WorktreeManager(repoPath);
|
|
52
|
+
const cleanWorktrees = options.worktrees || options.all;
|
|
53
|
+
const cleanBranches = !options.worktrees || options.all;
|
|
54
|
+
let hasItems = false;
|
|
55
|
+
if (cleanWorktrees) {
|
|
56
|
+
const allWorktrees = [];
|
|
57
|
+
for (const prefix of branchPrefixes) {
|
|
58
|
+
const worktrees = await worktreeManager.listPipelineWorktrees(prefix);
|
|
59
|
+
allWorktrees.push(...worktrees);
|
|
60
|
+
}
|
|
61
|
+
const seenPaths = new Set();
|
|
62
|
+
const worktrees = allWorktrees.filter(wt => {
|
|
63
|
+
if (seenPaths.has(wt.path))
|
|
64
|
+
return false;
|
|
65
|
+
seenPaths.add(wt.path);
|
|
66
|
+
return true;
|
|
67
|
+
});
|
|
68
|
+
const worktreesToDelete = options.pipeline
|
|
69
|
+
? worktrees.filter(wt => {
|
|
70
|
+
const matchesPipeline = wt.path.includes(options.pipeline) || wt.branch.includes(options.pipeline);
|
|
71
|
+
if (!matchesPipeline)
|
|
72
|
+
return false;
|
|
73
|
+
if (!worktreeBaseDir)
|
|
74
|
+
return true;
|
|
75
|
+
return wt.path.startsWith(worktreeManager.getWorktreeBaseDir());
|
|
76
|
+
})
|
|
77
|
+
: worktrees;
|
|
78
|
+
if (worktreesToDelete.length > 0) {
|
|
79
|
+
hasItems = true;
|
|
80
|
+
console.log('Pipeline worktrees to delete:');
|
|
81
|
+
worktreesToDelete.forEach(wt => console.log(` - ${wt.path} (branch: ${wt.branch})`));
|
|
82
|
+
if (options.force) {
|
|
83
|
+
console.log('\n🧹 Cleaning up worktrees...\n');
|
|
84
|
+
for (const wt of worktreesToDelete) {
|
|
85
|
+
try {
|
|
86
|
+
await worktreeManager.cleanupWorktree(wt.path, cleanBranches, true);
|
|
87
|
+
console.log(`✅ Removed worktree: ${wt.path}`);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
console.error(`❌ Failed to remove ${wt.path}: ${error instanceof Error ? error.message : String(error)}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
console.log('No pipeline worktrees found to clean up');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (cleanBranches) {
|
|
100
|
+
const allBranches = [];
|
|
101
|
+
for (const prefix of branchPrefixes) {
|
|
102
|
+
const branches = await branchManager.listPipelineBranches(prefix);
|
|
103
|
+
allBranches.push(...branches);
|
|
104
|
+
}
|
|
105
|
+
const pipelineBranches = [...new Set(allBranches)];
|
|
106
|
+
const branchesToDelete = options.pipeline
|
|
107
|
+
? pipelineBranches.filter(b => b.includes(options.pipeline))
|
|
108
|
+
: pipelineBranches;
|
|
109
|
+
if (branchesToDelete.length > 0) {
|
|
110
|
+
hasItems = true;
|
|
111
|
+
if (cleanWorktrees)
|
|
112
|
+
console.log('');
|
|
113
|
+
console.log('Pipeline branches to delete:');
|
|
114
|
+
branchesToDelete.forEach(b => console.log(` - ${b}`));
|
|
115
|
+
if (options.force) {
|
|
116
|
+
console.log('\n🧹 Cleaning up branches...\n');
|
|
117
|
+
for (const branch of branchesToDelete) {
|
|
118
|
+
try {
|
|
119
|
+
await branchManager.deleteLocalBranch(branch, true);
|
|
120
|
+
console.log(`✅ Deleted branch: ${branch}`);
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
console.error(`❌ Failed to delete ${branch}: ${error instanceof Error ? error.message : String(error)}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
else if (!cleanWorktrees) {
|
|
129
|
+
console.log('No pipeline branches found to clean up');
|
|
130
|
+
}
|
|
22
131
|
}
|
|
23
|
-
|
|
24
|
-
for (const
|
|
132
|
+
const allRemoteBranches = [];
|
|
133
|
+
for (const prefix of branchPrefixes) {
|
|
25
134
|
try {
|
|
26
|
-
await branchManager.
|
|
27
|
-
|
|
135
|
+
const remoteBranches = await branchManager.listRemotePipelineBranches(prefix);
|
|
136
|
+
allRemoteBranches.push(...remoteBranches);
|
|
28
137
|
}
|
|
29
|
-
catch
|
|
30
|
-
console.error(`❌ Failed to delete ${branch}: ${error instanceof Error ? error.message : String(error)}`);
|
|
138
|
+
catch {
|
|
31
139
|
}
|
|
32
140
|
}
|
|
33
|
-
|
|
34
|
-
|
|
141
|
+
const remotePipelineBranches = [...new Set(allRemoteBranches)];
|
|
142
|
+
const remoteBranchesToDelete = options.pipeline
|
|
143
|
+
? remotePipelineBranches.filter(b => b.includes(options.pipeline))
|
|
144
|
+
: remotePipelineBranches;
|
|
145
|
+
if (!options.force && hasItems) {
|
|
146
|
+
console.log('\nRun with --force to delete these items');
|
|
147
|
+
console.log('Examples:');
|
|
148
|
+
console.log(' agent-pipeline cleanup --worktrees --force # Remove worktrees only');
|
|
149
|
+
console.log(' agent-pipeline cleanup --force # Remove branches only');
|
|
150
|
+
console.log(' agent-pipeline cleanup --all --force # Remove both');
|
|
151
|
+
console.log(' agent-pipeline cleanup --all --force --delete-logs');
|
|
152
|
+
if (remoteBranchesToDelete.length > 0) {
|
|
153
|
+
console.log(`\n⚠️ ${remoteBranchesToDelete.length} remote pipeline branch(es) found. Add --delete-remote to delete them.`);
|
|
154
|
+
}
|
|
155
|
+
return;
|
|
35
156
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (shouldDeleteLogs) {
|
|
157
|
+
if (options.force && hasItems) {
|
|
158
|
+
if (options.deleteLogs === true) {
|
|
39
159
|
await deleteAssociatedLogs(repoPath, options.pipeline);
|
|
40
160
|
}
|
|
161
|
+
else if (options.deleteLogs === undefined) {
|
|
162
|
+
const shouldDeleteLogs = await InteractivePrompts.confirm('\nDelete associated history files?', false);
|
|
163
|
+
if (shouldDeleteLogs) {
|
|
164
|
+
await deleteAssociatedLogs(repoPath, options.pipeline);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
if (options.force && remoteBranchesToDelete.length > 0) {
|
|
169
|
+
if (options.deleteRemote) {
|
|
170
|
+
console.log('\n🌐 Cleaning up remote branches...\n');
|
|
171
|
+
for (const branch of remoteBranchesToDelete) {
|
|
172
|
+
try {
|
|
173
|
+
await branchManager.deleteRemoteBranch(branch);
|
|
174
|
+
console.log(`✅ Deleted remote branch: ${branch}`);
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
console.error(`❌ Failed to delete remote ${branch}: ${error instanceof Error ? error.message : String(error)}`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
console.log(`\n⚠️ ${remoteBranchesToDelete.length} remote pipeline branch(es) found. Use --delete-remote to delete them.`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (options.force && (hasItems || (options.deleteRemote && remoteBranchesToDelete.length > 0))) {
|
|
186
|
+
console.log('\n✨ Cleanup complete!');
|
|
41
187
|
}
|
|
42
|
-
console.log('\n✨ Cleanup complete!');
|
|
43
188
|
}
|
|
44
189
|
async function deleteAssociatedLogs(repoPath, pipelineName) {
|
|
45
190
|
const stateDir = path.join(repoPath, '.agent-pipeline', 'state', 'runs');
|
|
46
191
|
try {
|
|
47
192
|
console.log('\n🗑️ Deleting history files...\n');
|
|
48
|
-
|
|
193
|
+
let stateFiles = [];
|
|
194
|
+
try {
|
|
195
|
+
stateFiles = await fs.readdir(stateDir);
|
|
196
|
+
}
|
|
197
|
+
catch (err) {
|
|
198
|
+
if (err.code === 'ENOENT') {
|
|
199
|
+
console.log(' No history files found to delete');
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
throw err;
|
|
203
|
+
}
|
|
49
204
|
let deletedCount = 0;
|
|
50
205
|
for (const file of stateFiles) {
|
|
51
206
|
if (!file.endsWith('.json'))
|
|
52
207
|
continue;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
208
|
+
try {
|
|
209
|
+
const statePath = path.join(stateDir, file);
|
|
210
|
+
const content = await fs.readFile(statePath, 'utf-8');
|
|
211
|
+
const state = JSON.parse(content);
|
|
212
|
+
const shouldDelete = pipelineName
|
|
213
|
+
? state.pipelineConfig?.name?.includes(pipelineName) || state.pipelineConfig?.name === pipelineName
|
|
214
|
+
: true;
|
|
215
|
+
if (shouldDelete) {
|
|
216
|
+
await fs.unlink(statePath);
|
|
217
|
+
console.log(` ✅ Deleted ${file}`);
|
|
218
|
+
deletedCount++;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
catch (fileError) {
|
|
222
|
+
console.warn(` ⚠️ Could not process ${file}: ${fileError.message}`);
|
|
63
223
|
}
|
|
64
224
|
}
|
|
65
225
|
if (deletedCount > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/cli/commands/cleanup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/cli/commands/cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/history.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAOnD,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/history.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAOnD,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAqFxD,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React, { useState, useEffect } from 'react';
|
|
2
2
|
import { Box, Text, useInput, useApp } from 'ink';
|
|
3
|
-
import { spawn } from 'child_process';
|
|
4
3
|
import * as path from 'path';
|
|
5
4
|
import { StateManager } from '../../core/state-manager.js';
|
|
5
|
+
import { openInPager } from '../../utils/platform-opener.js';
|
|
6
6
|
export const HistoryBrowser = ({ repoPath }) => {
|
|
7
7
|
const [runs, setRuns] = useState([]);
|
|
8
8
|
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
@@ -21,20 +21,9 @@ export const HistoryBrowser = ({ repoPath }) => {
|
|
|
21
21
|
return;
|
|
22
22
|
const selectedRun = runs[selectedIndex];
|
|
23
23
|
const logPath = path.join(repoPath, '.agent-pipeline', 'state', 'runs', `${selectedRun.runId}.json`);
|
|
24
|
-
const pager = process.env.PAGER || 'less';
|
|
25
24
|
exit();
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
shell: true
|
|
29
|
-
});
|
|
30
|
-
await new Promise((resolve) => {
|
|
31
|
-
child.on('exit', () => {
|
|
32
|
-
resolve();
|
|
33
|
-
});
|
|
34
|
-
child.on('error', () => {
|
|
35
|
-
resolve();
|
|
36
|
-
});
|
|
37
|
-
});
|
|
25
|
+
await new Promise(resolve => setImmediate(resolve));
|
|
26
|
+
await openInPager(logPath);
|
|
38
27
|
};
|
|
39
28
|
useInput((input, key) => {
|
|
40
29
|
if (detailView) {
|
|
@@ -154,14 +143,6 @@ const PipelineDetailView = ({ state }) => {
|
|
|
154
143
|
stage.commitSha && (React.createElement(Box, { marginLeft: 3 },
|
|
155
144
|
React.createElement(Text, { dimColor: true }, "\u2514\u2500 Commit: "),
|
|
156
145
|
React.createElement(Text, { color: "cyan" }, stage.commitSha.substring(0, 7)))),
|
|
157
|
-
stage.extractedData && Object.keys(stage.extractedData).length > 0 && (React.createElement(Box, { marginLeft: 3, flexDirection: "column" },
|
|
158
|
-
React.createElement(Text, { dimColor: true }, "\u2514\u2500 Extracted Data:"),
|
|
159
|
-
Object.entries(stage.extractedData).map(([key, value]) => (React.createElement(Text, { key: key, dimColor: true },
|
|
160
|
-
' ',
|
|
161
|
-
"- ",
|
|
162
|
-
key,
|
|
163
|
-
": ",
|
|
164
|
-
String(value)))))),
|
|
165
146
|
stage.error && (React.createElement(Box, { marginLeft: 3, flexDirection: "column" },
|
|
166
147
|
React.createElement(Text, { color: "red" },
|
|
167
148
|
"\u2514\u2500 Error: ",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/cli/commands/history.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAClD,OAAO,
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/cli/commands/history.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function hooksListCommand(repoPath: string, options?: {
|
|
2
|
+
pipeline?: string;
|
|
3
|
+
}): Promise<void>;
|
|
4
|
+
export declare function hooksInstallCommand(repoPath: string, pipelineName: string): Promise<void>;
|
|
5
|
+
export declare function hooksUninstallCommand(repoPath: string, options?: {
|
|
6
|
+
pipelineName?: string;
|
|
7
|
+
removeAll?: boolean;
|
|
8
|
+
}): Promise<void>;
|
|
9
|
+
export declare const hooksCommand: typeof hooksListCommand;
|
|
10
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/hooks.ts"],"names":[],"mappings":"AAeA,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9B,OAAO,CAAC,IAAI,CAAC,CA0Df;AAKD,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAkCf;AAKD,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GACvD,OAAO,CAAC,IAAI,CAAC,CAMf;AAGD,eAAO,MAAM,YAAY,yBAAmB,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import * as fs from 'fs/promises';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { PipelineLoader } from '../../config/pipeline-loader.js';
|
|
4
|
+
import { HookInstaller } from '../hooks.js';
|
|
5
|
+
export async function hooksListCommand(repoPath, options) {
|
|
6
|
+
const hookTypes = ['pre-commit', 'post-commit', 'pre-push', 'post-merge'];
|
|
7
|
+
const hooksDir = path.join(repoPath, '.git', 'hooks');
|
|
8
|
+
const installedHooks = [];
|
|
9
|
+
const markerPattern = /^# Agent Pipeline \([^)]+\): (.+)$/;
|
|
10
|
+
for (const hookType of hookTypes) {
|
|
11
|
+
const hookPath = path.join(hooksDir, hookType);
|
|
12
|
+
try {
|
|
13
|
+
const content = await fs.readFile(hookPath, 'utf-8');
|
|
14
|
+
const lines = content.split('\n');
|
|
15
|
+
for (const line of lines) {
|
|
16
|
+
const match = line.match(markerPattern);
|
|
17
|
+
if (match) {
|
|
18
|
+
installedHooks.push({
|
|
19
|
+
hookType,
|
|
20
|
+
pipelineName: match[1]
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const filtered = options?.pipeline
|
|
30
|
+
? installedHooks.filter(h => h.pipelineName === options.pipeline)
|
|
31
|
+
: installedHooks;
|
|
32
|
+
if (filtered.length === 0) {
|
|
33
|
+
if (options?.pipeline) {
|
|
34
|
+
console.log(`No hooks installed for pipeline: ${options.pipeline}`);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
console.log('No Agent Pipeline hooks installed');
|
|
38
|
+
}
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
console.log(`\nInstalled Git Hooks`);
|
|
42
|
+
console.log('='.repeat(55));
|
|
43
|
+
console.log('');
|
|
44
|
+
console.log(`${'Hook Type'.padEnd(16)}Pipeline`);
|
|
45
|
+
console.log('-'.repeat(55));
|
|
46
|
+
for (const hook of filtered) {
|
|
47
|
+
console.log(`${hook.hookType.padEnd(16)}${hook.pipelineName}`);
|
|
48
|
+
}
|
|
49
|
+
console.log('');
|
|
50
|
+
console.log(`Total: ${filtered.length} hook(s) installed`);
|
|
51
|
+
console.log('');
|
|
52
|
+
}
|
|
53
|
+
export async function hooksInstallCommand(repoPath, pipelineName) {
|
|
54
|
+
const loader = new PipelineLoader(repoPath);
|
|
55
|
+
const { config } = await loader.loadPipeline(pipelineName);
|
|
56
|
+
if (config.trigger === 'manual') {
|
|
57
|
+
console.error('❌ Cannot install git hook for manual pipelines.');
|
|
58
|
+
console.error(` Pipeline "${pipelineName}" has trigger: manual`);
|
|
59
|
+
console.error(` Use 'agent-pipeline run ${pipelineName}' instead.`);
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
if (!config.git?.branchStrategy) {
|
|
63
|
+
console.error('❌ Cannot install git hook without git.branchStrategy configured.');
|
|
64
|
+
console.error(` Pipeline "${pipelineName}" is missing git.branchStrategy`);
|
|
65
|
+
console.error(` Add git.branchStrategy (reusable, unique-per-run, or unique-and-delete), then re-run install.`);
|
|
66
|
+
console.error(` Use 'agent-pipeline run ${pipelineName}' to run on the current branch.`);
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
if (config.git.branchStrategy === 'reusable') {
|
|
70
|
+
console.warn('⚠️ git.branchStrategy is set to reusable.');
|
|
71
|
+
console.warn(' For hook-triggered pipelines, unique-per-run or unique-and-delete is safer to avoid branch contention.');
|
|
72
|
+
}
|
|
73
|
+
if (config.git?.autoCommit) {
|
|
74
|
+
console.warn('⚠️ git.autoCommit is enabled for this hook-triggered pipeline.');
|
|
75
|
+
console.warn(' This will create commits on the pipeline branch; set git.autoCommit: false for read-only hooks.');
|
|
76
|
+
}
|
|
77
|
+
const installer = new HookInstaller(repoPath);
|
|
78
|
+
await installer.install(pipelineName, config.trigger);
|
|
79
|
+
}
|
|
80
|
+
export async function hooksUninstallCommand(repoPath, options) {
|
|
81
|
+
const installer = new HookInstaller(repoPath);
|
|
82
|
+
await installer.uninstall({
|
|
83
|
+
pipelineName: options?.pipelineName,
|
|
84
|
+
removeAll: options?.removeAll ?? !options?.pipelineName
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
export const hooksCommand = hooksListCommand;
|
|
88
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/cli/commands/hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
export declare function initCommand(repoPath: string
|
|
2
|
-
exampleName?: string;
|
|
3
|
-
all?: boolean;
|
|
4
|
-
importPluginAgents?: boolean;
|
|
5
|
-
interactive?: boolean;
|
|
6
|
-
}): Promise<void>;
|
|
1
|
+
export declare function initCommand(repoPath: string): Promise<void>;
|
|
7
2
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AA2BA,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyHjE"}
|