agent-pipeline 0.1.0 → 0.1.2
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 +4 -3
- package/{license → LICENSE} +1 -1
- package/README.md +120 -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 +169 -88
- 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 +39 -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 +302 -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 +64 -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/agent-runtimes/codex-headless-runtime.d.ts +27 -0
- package/dist/core/agent-runtimes/codex-headless-runtime.d.ts.map +1 -0
- package/dist/core/agent-runtimes/codex-headless-runtime.js +623 -0
- package/dist/core/agent-runtimes/codex-headless-runtime.js.map +1 -0
- package/dist/core/agent-runtimes/openai-compatible-runtime.d.ts +17 -0
- package/dist/core/agent-runtimes/openai-compatible-runtime.d.ts.map +1 -0
- package/dist/core/agent-runtimes/openai-compatible-runtime.js +231 -0
- package/dist/core/agent-runtimes/openai-compatible-runtime.js.map +1 -0
- 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 +4 -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 +123 -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 +8 -3
- package/dist/core/parallel-executor.d.ts.map +1 -1
- package/dist/core/parallel-executor.js +90 -16
- 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 +15 -1
- package/dist/core/pipeline-runner.d.ts.map +1 -1
- package/dist/core/pipeline-runner.js +434 -64
- 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 +19 -11
- package/dist/core/stage-executor.d.ts.map +1 -1
- package/dist/core/stage-executor.js +151 -178
- 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 +147 -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 +18 -12
- 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
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text, Newline } from 'ink';
|
|
3
|
+
import { SummaryLine } from './summary-line.js';
|
|
4
|
+
export const LoopSessionSummary = ({ iterations, terminationReason }) => {
|
|
5
|
+
if (iterations.length === 0) {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
const successCount = iterations.filter(i => i.status === 'completed').length;
|
|
9
|
+
const failCount = iterations.filter(i => i.status === 'failed').length;
|
|
10
|
+
const abortCount = iterations.filter(i => i.status === 'aborted').length;
|
|
11
|
+
const totalDuration = iterations.reduce((sum, i) => sum + i.duration, 0);
|
|
12
|
+
const totalCommits = iterations.reduce((sum, i) => sum + i.commitCount, 0);
|
|
13
|
+
const successRate = iterations.length > 0
|
|
14
|
+
? ((successCount / iterations.length) * 100).toFixed(0)
|
|
15
|
+
: '0';
|
|
16
|
+
const isSuccess = terminationReason === 'natural' || !terminationReason;
|
|
17
|
+
const resultLabel = isSuccess
|
|
18
|
+
? 'Completed'
|
|
19
|
+
: terminationReason === 'limit-reached'
|
|
20
|
+
? 'Failed (limit reached)'
|
|
21
|
+
: 'Failed';
|
|
22
|
+
return (React.createElement(Box, { flexDirection: "column", marginBottom: 1, borderStyle: "round", borderColor: isSuccess ? 'magenta' : 'red', paddingX: 1 },
|
|
23
|
+
React.createElement(Text, { bold: true, color: isSuccess ? 'magenta' : 'red' }, isSuccess ? 'Loop Session Complete' : 'Loop Session Failed'),
|
|
24
|
+
React.createElement(Newline, null),
|
|
25
|
+
React.createElement(SummaryLine, { label: "Result", value: resultLabel, color: isSuccess ? 'green' : 'red' }),
|
|
26
|
+
React.createElement(SummaryLine, { label: "Total Iterations", value: `${iterations.length}` }),
|
|
27
|
+
React.createElement(SummaryLine, { label: "Success Rate", value: `${successRate}% (${successCount}/${iterations.length})`, color: successCount === iterations.length ? 'green' : 'yellow' }),
|
|
28
|
+
React.createElement(SummaryLine, { label: "Total Duration", value: `${totalDuration.toFixed(1)}s` }),
|
|
29
|
+
React.createElement(SummaryLine, { label: "Total Commits", value: `${totalCommits}` }),
|
|
30
|
+
failCount > 0 && (React.createElement(Box, { marginTop: 1 },
|
|
31
|
+
React.createElement(Text, { color: "red" },
|
|
32
|
+
"Failed iterations: ",
|
|
33
|
+
failCount))),
|
|
34
|
+
abortCount > 0 && (React.createElement(Box, null,
|
|
35
|
+
React.createElement(Text, { color: "magenta" },
|
|
36
|
+
"Aborted iterations: ",
|
|
37
|
+
abortCount)))));
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=loop-session-summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop-session-summary.js","sourceRoot":"","sources":["../../../src/ui/components/loop-session-summary.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage-row.d.ts","sourceRoot":"","sources":["../../../src/ui/components/stage-row.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,UAAU,aAAa;IACrB,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"stage-row.d.ts","sourceRoot":"","sources":["../../../src/ui/components/stage-row.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,UAAU,aAAa;IACrB,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAqF5C,CAAC"}
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { Box, Text } from 'ink';
|
|
3
3
|
import Spinner from 'ink-spinner';
|
|
4
4
|
import { PipelineFormatter } from '../../utils/pipeline-formatter.js';
|
|
5
|
-
export const StageRow = ({ stage, isLast,
|
|
5
|
+
export const StageRow = ({ stage, isLast, }) => {
|
|
6
6
|
const getIcon = () => {
|
|
7
7
|
switch (stage.status) {
|
|
8
8
|
case 'running':
|
|
@@ -18,7 +18,6 @@ export const StageRow = ({ stage, isLast, condition, }) => {
|
|
|
18
18
|
return React.createElement(Text, null, "\u23F8\uFE0F");
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
|
-
const hasExtractedData = stage.extractedData && Object.keys(stage.extractedData).length > 0;
|
|
22
21
|
return (React.createElement(Box, { flexDirection: "column", marginLeft: 2, marginBottom: isLast ? 0 : 1 },
|
|
23
22
|
React.createElement(Box, null,
|
|
24
23
|
getIcon(),
|
|
@@ -36,25 +35,16 @@ export const StageRow = ({ stage, isLast, condition, }) => {
|
|
|
36
35
|
"/",
|
|
37
36
|
stage.maxRetries,
|
|
38
37
|
"]"))),
|
|
39
|
-
stage.conditionEvaluated && !stage.conditionResult && condition && (React.createElement(Box, { marginLeft: 3 },
|
|
40
|
-
React.createElement(Text, { dimColor: true }, "\u2514\u2500 Condition not met: "),
|
|
41
|
-
React.createElement(Text, { color: "gray" }, condition))),
|
|
42
38
|
stage.commitSha && (React.createElement(Box, { marginLeft: 3 },
|
|
43
39
|
React.createElement(Text, { dimColor: true }, "\u2514\u2500 Commit: "),
|
|
44
40
|
React.createElement(Text, { color: "cyan" }, stage.commitSha.substring(0, 7)))),
|
|
45
41
|
stage.tokenUsage && stage.status === 'success' && (React.createElement(Box, { marginLeft: 3 },
|
|
46
42
|
React.createElement(Text, { dimColor: true }, "\u2514\u2500 Tokens: "),
|
|
47
43
|
React.createElement(Text, { color: "magenta" }, PipelineFormatter.formatTokenUsage(stage.tokenUsage)))),
|
|
48
|
-
stage.status === '
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
"- ",
|
|
53
|
-
key,
|
|
54
|
-
": ",
|
|
55
|
-
JSON.stringify(value))))))),
|
|
56
|
-
(stage.status === 'running' || stage.status === 'failed') &&
|
|
57
|
-
stage.agentOutput && (React.createElement(Box, { marginLeft: 3, flexDirection: "column" },
|
|
44
|
+
stage.status === 'running' && stage.toolActivity && stage.toolActivity.length > 0 && (React.createElement(Box, { marginLeft: 3, flexDirection: "column" }, stage.toolActivity.map((activity, idx) => (React.createElement(Text, { key: idx, dimColor: true },
|
|
45
|
+
idx === stage.toolActivity.length - 1 ? '└─ ' : '├─ ',
|
|
46
|
+
activity))))),
|
|
47
|
+
stage.status === 'failed' && stage.agentOutput && (React.createElement(Box, { marginLeft: 3, flexDirection: "column" },
|
|
58
48
|
React.createElement(Text, { dimColor: true }, "\u2514\u2500 Output:"),
|
|
59
49
|
React.createElement(Box, { marginLeft: 3, flexDirection: "column" },
|
|
60
50
|
React.createElement(Text, null, stage.agentOutput.split('\n').slice(-3).join('\n'))))),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage-row.js","sourceRoot":"","sources":["../../../src/ui/components/stage-row.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,OAAO,MAAM,aAAa,CAAC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"stage-row.js","sourceRoot":"","sources":["../../../src/ui/components/stage-row.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-badge.d.ts","sourceRoot":"","sources":["../../../src/ui/components/status-badge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"status-badge.d.ts","sourceRoot":"","sources":["../../../src/ui/components/status-badge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAqBlD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-badge.js","sourceRoot":"","sources":["../../../src/ui/components/status-badge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAM3B,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IACpE,MAAM,MAAM,GAA2B;QACrC,OAAO,EAAE,QAAQ;QACjB,SAAS,EAAE,OAAO;QAClB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,QAAQ;QACjB,OAAO,EAAE,MAAM;QACf,OAAO,EAAE,MAAM;KAChB,CAAC;IAEF,MAAM,QAAQ,GAA4B;QACxC,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;KACd,CAAC;IAEF,OAAO,CACL,oBAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,IACpE,MAAM,CAAC,WAAW,EAAE,CAChB,CACR,CAAC;AACJ,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"status-badge.js","sourceRoot":"","sources":["../../../src/ui/components/status-badge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAM3B,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IACpE,MAAM,MAAM,GAA2B;QACrC,OAAO,EAAE,QAAQ;QACjB,SAAS,EAAE,OAAO;QAClB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,QAAQ;QACjB,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,MAAM;QACf,OAAO,EAAE,MAAM;KAChB,CAAC;IAEF,MAAM,QAAQ,GAA4B;QACxC,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;KACd,CAAC;IAEF,OAAO,CACL,oBAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,IACpE,MAAM,CAAC,WAAW,EAAE,CAChB,CACR,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/ui/pipeline-ui.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { PipelineState } from '../config/schema.js';
|
|
3
3
|
interface PipelineUIProps {
|
|
4
4
|
onStateChange: (callback: (state: PipelineState) => void) => void;
|
|
5
|
+
onOpenLogs?: (logPath: string) => void;
|
|
5
6
|
}
|
|
6
7
|
export declare const PipelineUI: React.FC<PipelineUIProps>;
|
|
7
8
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-ui.d.ts","sourceRoot":"","sources":["../../src/ui/pipeline-ui.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,EAGL,aAAa,
|
|
1
|
+
{"version":3,"file":"pipeline-ui.d.ts","sourceRoot":"","sources":["../../src/ui/pipeline-ui.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,EAGL,aAAa,EAEd,MAAM,qBAAqB,CAAC;AAQ7B,UAAU,eAAe;IACvB,aAAa,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,KAAK,IAAI,CAAC;IAClE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAsCD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAoFhD,CAAC"}
|
package/dist/ui/pipeline-ui.js
CHANGED
|
@@ -3,6 +3,9 @@ import { Box, Text, Newline } from 'ink';
|
|
|
3
3
|
import { ExecutionGroup } from './components/execution-group.js';
|
|
4
4
|
import { StatusBadge } from './components/status-badge.js';
|
|
5
5
|
import { SummaryLine } from './components/summary-line.js';
|
|
6
|
+
import { LiveTimer } from './components/live-timer.js';
|
|
7
|
+
import { InteractiveSummary } from './components/interactive-summary.js';
|
|
8
|
+
import { LoopIterationHistory } from './components/loop-iteration-history.js';
|
|
6
9
|
const getExecutionGroups = (pipelineConfig) => {
|
|
7
10
|
const groups = [];
|
|
8
11
|
const stages = [...pipelineConfig.agents];
|
|
@@ -32,41 +35,40 @@ const getExecutionGroups = (pipelineConfig) => {
|
|
|
32
35
|
}
|
|
33
36
|
return groups;
|
|
34
37
|
};
|
|
35
|
-
const
|
|
36
|
-
React.createElement(Text, { bold: true },
|
|
37
|
-
"Pipeline ",
|
|
38
|
-
state.status),
|
|
39
|
-
React.createElement(Newline, null),
|
|
40
|
-
React.createElement(SummaryLine, { label: "Total Duration", value: `${state.artifacts.totalDuration.toFixed(1)}s` }),
|
|
41
|
-
React.createElement(SummaryLine, { label: "Total Commits", value: `${state.stages.filter(s => s.commitSha).length}` }),
|
|
42
|
-
React.createElement(SummaryLine, { label: "PR", value: state.artifacts.pullRequest?.url, color: "cyan" })));
|
|
43
|
-
export const PipelineUI = ({ onStateChange }) => {
|
|
38
|
+
export const PipelineUI = ({ onStateChange, onOpenLogs }) => {
|
|
44
39
|
const [state, setState] = useState(null);
|
|
40
|
+
const [iterationHistory, setIterationHistory] = useState([]);
|
|
45
41
|
useEffect(() => {
|
|
46
|
-
onStateChange(
|
|
42
|
+
onStateChange((newState) => {
|
|
43
|
+
if (newState.loopIterationHistory && newState.loopIterationHistory.length > 0) {
|
|
44
|
+
setIterationHistory(newState.loopIterationHistory);
|
|
45
|
+
}
|
|
46
|
+
setState(newState);
|
|
47
|
+
});
|
|
47
48
|
}, [onStateChange]);
|
|
48
49
|
if (!state) {
|
|
49
50
|
return React.createElement(Text, null, "Initializing pipeline...");
|
|
50
51
|
}
|
|
51
52
|
const executionGroups = getExecutionGroups(state.pipelineConfig);
|
|
52
|
-
const isFinished = state.status === 'completed' || state.status === 'failed' || state.status === 'partial';
|
|
53
|
+
const isFinished = state.status === 'completed' || state.status === 'failed' || state.status === 'partial' || state.status === 'aborted';
|
|
53
54
|
return (React.createElement(Box, { flexDirection: "column", padding: 1 },
|
|
54
55
|
React.createElement(Box, { borderStyle: "round", borderColor: "cyan", paddingX: 1, paddingY: 0 },
|
|
55
56
|
React.createElement(Box, { flexDirection: "column" },
|
|
56
57
|
React.createElement(Text, { bold: true, color: "cyan" },
|
|
57
58
|
"\uD83E\uDD16 Agent Pipeline: ",
|
|
58
59
|
state.pipelineConfig.name),
|
|
59
|
-
state.loopContext && (React.createElement(SummaryLine, { label: "Loop", value: state.loopContext.maxIterations
|
|
60
|
+
state.loopContext?.enabled && (React.createElement(SummaryLine, { label: "Loop", value: state.loopContext.maxIterations
|
|
60
61
|
? `${state.loopContext.currentIteration}/${state.loopContext.maxIterations}`
|
|
61
62
|
: `${state.loopContext.currentIteration}`, color: "magenta" })),
|
|
62
63
|
React.createElement(SummaryLine, { label: "Run ID", value: state.runId.substring(0, 8) }),
|
|
63
64
|
React.createElement(SummaryLine, { label: "Branch", value: state.artifacts.pullRequest?.branch }))),
|
|
64
65
|
React.createElement(Newline, null),
|
|
66
|
+
state.loopContext?.enabled && iterationHistory.length > 0 && (React.createElement(LoopIterationHistory, { iterations: iterationHistory })),
|
|
65
67
|
executionGroups.map((group, index) => (React.createElement(ExecutionGroup, { key: index, title: `Group ${index + 1}`, group: group, executedStages: state.stages }))),
|
|
66
|
-
isFinished && React.createElement(
|
|
67
|
-
!isFinished && (React.createElement(Box, { borderStyle: "single", borderColor: "gray", paddingX: 1, marginTop: 1 },
|
|
68
|
+
isFinished && React.createElement(InteractiveSummary, { state: state, onOpenLogs: onOpenLogs }),
|
|
69
|
+
!isFinished && (React.createElement(Box, { borderStyle: "single", borderColor: "gray", paddingX: 1, marginTop: 1, flexDirection: "column" },
|
|
68
70
|
React.createElement(Text, null,
|
|
69
|
-
state.loopContext && React.createElement(Text, { color: "magenta" },
|
|
71
|
+
state.loopContext?.enabled && React.createElement(Text, { color: "magenta" },
|
|
70
72
|
"\uD83D\uDD01 Loop ",
|
|
71
73
|
state.loopContext.currentIteration,
|
|
72
74
|
" | "),
|
|
@@ -74,9 +76,11 @@ export const PipelineUI = ({ onStateChange }) => {
|
|
|
74
76
|
React.createElement(StatusBadge, { status: state.status }),
|
|
75
77
|
" | Duration:",
|
|
76
78
|
' ',
|
|
77
|
-
state.artifacts.totalDuration
|
|
78
|
-
|
|
79
|
+
React.createElement(LiveTimer, { startTime: state.trigger.timestamp, isRunning: !isFinished, finalDuration: state.artifacts.totalDuration }),
|
|
80
|
+
' ',
|
|
81
|
+
"| Commits:",
|
|
79
82
|
' ',
|
|
80
|
-
state.stages.filter((s) => s.commitSha).length)
|
|
83
|
+
state.stages.filter((s) => s.commitSha).length),
|
|
84
|
+
React.createElement(Text, { dimColor: true }, "Press Ctrl+C to abort")))));
|
|
81
85
|
};
|
|
82
86
|
//# sourceMappingURL=pipeline-ui.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-ui.js","sourceRoot":"","sources":["../../src/ui/pipeline-ui.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"pipeline-ui.js","sourceRoot":"","sources":["../../src/ui/pipeline-ui.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-factory.d.ts","sourceRoot":"","sources":["../../src/utils/error-factory.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,YAAY;IACvB,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,iBAAiB;IAgB9E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe;IAgB1E,OAAO,CAAC,MAAM,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"error-factory.d.ts","sourceRoot":"","sources":["../../src/utils/error-factory.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,YAAY;IACvB,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,iBAAiB;IAgB9E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe;IAgB1E,OAAO,CAAC,MAAM,CAAC,aAAa;IAqC5B,OAAO,CAAC,MAAM,CAAC,gBAAgB;CAmChC"}
|
|
@@ -29,8 +29,16 @@ export class ErrorFactory {
|
|
|
29
29
|
if (message.includes('ENOENT')) {
|
|
30
30
|
return `Agent file not found. Check path: ${agentPath}`;
|
|
31
31
|
}
|
|
32
|
-
if (message.includes('
|
|
33
|
-
|
|
32
|
+
if (message.includes('Agent timeout')) {
|
|
33
|
+
const match = message.match(/after (\d+) minutes/);
|
|
34
|
+
const timeoutStr = match ? match[1] : '15';
|
|
35
|
+
return `Agent exceeded ${timeoutStr}-minute timeout. Consider increasing timeout in pipeline config or optimizing agent complexity.`;
|
|
36
|
+
}
|
|
37
|
+
if (message.includes('Invalid API key') || message.includes('Please run /login')) {
|
|
38
|
+
return ('Claude CLI authentication failed. This commonly occurs when pipelines are triggered from GUI git clients ' +
|
|
39
|
+
'(Xcode, VS Code, etc.) which cannot access macOS Keychain credentials. ' +
|
|
40
|
+
'Workarounds: (1) Set ANTHROPIC_API_KEY in ~/.zshenv or .agent-pipeline/env, or ' +
|
|
41
|
+
'(2) Use claude-sdk runtime instead. See docs/configuration.md "GUI Git Clients" section.');
|
|
34
42
|
}
|
|
35
43
|
if (message.includes('API') || message.includes('401') || message.includes('403')) {
|
|
36
44
|
return 'Check ANTHROPIC_API_KEY environment variable is set correctly.';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-factory.js","sourceRoot":"","sources":["../../src/utils/error-factory.ts"],"names":[],"mappings":"AAkBA,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,gBAAgB,CAAC,KAAc,EAAE,SAAkB;QACxD,MAAM,SAAS,GAAsB;YACnC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC/D,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACvD,SAAS;YACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACpE,IAAI,UAAU,EAAE,CAAC;YACf,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC;QACpC,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,KAAc,EAAE,SAAkB;QACtD,MAAM,SAAS,GAAoB;YACjC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC/D,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACvD,SAAS;YACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACvE,IAAI,UAAU,EAAE,CAAC;YACf,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC;QACpC,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,OAAe,EAAE,SAAkB;QAC9D,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,OAAO,qCAAqC,SAAS,EAAE,CAAC;QAC1D,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"error-factory.js","sourceRoot":"","sources":["../../src/utils/error-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import { PipelineState, StageExecution } from '../config/schema.js';
|
|
2
2
|
export declare class PipelineFormatter {
|
|
3
3
|
static getStatusEmoji(status: string): string;
|
|
4
|
-
static formatSummary(state: PipelineState
|
|
5
|
-
|
|
4
|
+
static formatSummary(state: PipelineState, verbose?: boolean, totals?: {
|
|
5
|
+
totalProcessed: number;
|
|
6
|
+
totalOutput: number;
|
|
7
|
+
totalTurns: number;
|
|
8
|
+
totalCacheRead: number;
|
|
9
|
+
}): string;
|
|
10
|
+
static formatStageInfo(stage: StageExecution, verbose?: boolean): string;
|
|
6
11
|
static formatRetryInfo(retryAttempt: number | undefined, maxRetries: number | undefined): string;
|
|
7
12
|
static formatTokenCount(tokens: number): string;
|
|
8
13
|
static formatTokenUsage(tokenUsage: StageExecution['tokenUsage']): string;
|
|
14
|
+
static formatTokenLine(processed: number, output: number, turns?: number, cacheRead?: number, totalForCacheRatio?: number): string;
|
|
9
15
|
}
|
|
10
16
|
//# sourceMappingURL=pipeline-formatter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-formatter.d.ts","sourceRoot":"","sources":["../../src/utils/pipeline-formatter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEpE,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAa7C,MAAM,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"pipeline-formatter.d.ts","sourceRoot":"","sources":["../../src/utils/pipeline-formatter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEpE,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAa7C,MAAM,CAAC,aAAa,CAClB,KAAK,EAAE,aAAa,EACpB,OAAO,GAAE,OAAc,EACvB,MAAM,CAAC,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,GACnG,MAAM;IA8CT,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,GAAE,OAAc,GAAG,MAAM;IAuB9E,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM;IAUhG,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAkB/C,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,cAAc,CAAC,YAAY,CAAC,GAAG,MAAM;IAwBzE,MAAM,CAAC,eAAe,CACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,MAAM;CAoBV"}
|
|
@@ -11,7 +11,7 @@ export class PipelineFormatter {
|
|
|
11
11
|
};
|
|
12
12
|
return emojiMap[status] || '❓';
|
|
13
13
|
}
|
|
14
|
-
static formatSummary(state) {
|
|
14
|
+
static formatSummary(state, verbose = true, totals) {
|
|
15
15
|
const lines = [];
|
|
16
16
|
const separator = '='.repeat(60);
|
|
17
17
|
lines.push('');
|
|
@@ -21,29 +21,36 @@ export class PipelineFormatter {
|
|
|
21
21
|
lines.push('');
|
|
22
22
|
lines.push(`Status: ${this.getStatusEmoji(state.status)} ${state.status.toUpperCase()}`);
|
|
23
23
|
lines.push(`Duration: ${state.artifacts.totalDuration.toFixed(2)}s`);
|
|
24
|
-
|
|
24
|
+
if (totals && (totals.totalProcessed > 0 || totals.totalOutput > 0)) {
|
|
25
|
+
lines.push(`Total Tokens: ${this.formatTokenLine(totals.totalProcessed, totals.totalOutput, totals.totalTurns, totals.totalCacheRead, totals.totalProcessed)}`);
|
|
26
|
+
}
|
|
27
|
+
if (verbose) {
|
|
28
|
+
lines.push(`Commits: ${state.trigger.commitSha.substring(0, 7)} → ${state.artifacts.finalCommit?.substring(0, 7)}`);
|
|
29
|
+
}
|
|
25
30
|
if (state.artifacts.pullRequest) {
|
|
26
31
|
lines.push(`Pull Request: ${state.artifacts.pullRequest.url}`);
|
|
27
32
|
}
|
|
28
33
|
lines.push('');
|
|
29
34
|
lines.push('Stages:');
|
|
30
35
|
for (const stage of state.stages) {
|
|
31
|
-
lines.push(this.formatStageInfo(stage));
|
|
36
|
+
lines.push(this.formatStageInfo(stage, verbose));
|
|
32
37
|
}
|
|
33
38
|
lines.push('');
|
|
34
39
|
lines.push(separator);
|
|
35
40
|
lines.push('');
|
|
36
41
|
return lines.join('\n');
|
|
37
42
|
}
|
|
38
|
-
static formatStageInfo(stage) {
|
|
43
|
+
static formatStageInfo(stage, verbose = true) {
|
|
39
44
|
const emoji = this.getStatusEmoji(stage.status);
|
|
40
45
|
const duration = stage.duration ? `(${stage.duration.toFixed(1)}s)` : '';
|
|
41
46
|
const lines = [` ${emoji} ${stage.stageName} ${duration}`];
|
|
42
|
-
if (
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
if (verbose) {
|
|
48
|
+
if (stage.commitSha) {
|
|
49
|
+
lines.push(` └─ Commit: ${stage.commitSha.substring(0, 7)}`);
|
|
50
|
+
}
|
|
51
|
+
if (stage.tokenUsage) {
|
|
52
|
+
lines.push(` └─ Tokens: ${this.formatTokenUsage(stage.tokenUsage)}`);
|
|
53
|
+
}
|
|
47
54
|
}
|
|
48
55
|
if (stage.error) {
|
|
49
56
|
lines.push(` └─ Error: ${stage.error.message}`);
|
|
@@ -66,25 +73,22 @@ export class PipelineFormatter {
|
|
|
66
73
|
static formatTokenUsage(tokenUsage) {
|
|
67
74
|
if (!tokenUsage)
|
|
68
75
|
return '';
|
|
76
|
+
const cacheRead = tokenUsage.cache_read || 0;
|
|
77
|
+
const cacheCreation = tokenUsage.cache_creation || 0;
|
|
78
|
+
const cacheCreationIncluded = cacheCreation > 0 && tokenUsage.actual_input >= cacheCreation;
|
|
79
|
+
const totalInput = tokenUsage.actual_input + cacheRead + (cacheCreationIncluded ? 0 : cacheCreation);
|
|
80
|
+
return this.formatTokenLine(totalInput, tokenUsage.output, tokenUsage.num_turns, cacheRead, totalInput);
|
|
81
|
+
}
|
|
82
|
+
static formatTokenLine(processed, output, turns, cacheRead, totalForCacheRatio) {
|
|
69
83
|
const parts = [];
|
|
70
|
-
parts.push(
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
parts.push(`(est. ${this.formatTokenCount(tokenUsage.estimated_input)})`);
|
|
75
|
-
}
|
|
76
|
-
parts.push(`Output: ${this.formatTokenCount(tokenUsage.output)}`);
|
|
77
|
-
if (tokenUsage.thinking_tokens && tokenUsage.thinking_tokens > 0) {
|
|
78
|
-
parts.push(`Thinking: ${this.formatTokenCount(tokenUsage.thinking_tokens)}`);
|
|
79
|
-
}
|
|
80
|
-
if (tokenUsage.num_turns !== undefined) {
|
|
81
|
-
parts.push(`Turns: ${tokenUsage.num_turns}`);
|
|
82
|
-
}
|
|
83
|
-
if (tokenUsage.cache_creation) {
|
|
84
|
-
parts.push(`Cache created: ${this.formatTokenCount(tokenUsage.cache_creation)}`);
|
|
84
|
+
parts.push(`~${this.formatTokenCount(processed)} processed`);
|
|
85
|
+
parts.push(`~${this.formatTokenCount(output)} output`);
|
|
86
|
+
if (turns !== undefined && turns > 0) {
|
|
87
|
+
parts.push(`Turns: ${turns}`);
|
|
85
88
|
}
|
|
86
|
-
if (
|
|
87
|
-
|
|
89
|
+
if (cacheRead && cacheRead > 0 && totalForCacheRatio && totalForCacheRatio > 0) {
|
|
90
|
+
const cacheHitRatio = Math.round((cacheRead / totalForCacheRatio) * 100);
|
|
91
|
+
parts.push(`Cache: ${cacheHitRatio}% hit`);
|
|
88
92
|
}
|
|
89
93
|
return parts.join(' | ');
|
|
90
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-formatter.js","sourceRoot":"","sources":["../../src/utils/pipeline-formatter.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,iBAAiB;IAC5B,MAAM,CAAC,cAAc,CAAC,MAAc;QAClC,MAAM,QAAQ,GAA2B;YACvC,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,WAAW,EAAE,GAAG;YAChB,QAAQ,EAAE,GAAG;YACb,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;SAChB,CAAC;QACF,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"pipeline-formatter.js","sourceRoot":"","sources":["../../src/utils/pipeline-formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare class PipelineLogger {
|
|
2
|
+
private logStream;
|
|
3
|
+
private logPath;
|
|
4
|
+
private interactive;
|
|
5
|
+
constructor(repoPath: string, pipelineName: string, interactive?: boolean);
|
|
6
|
+
getLogPath(): string;
|
|
7
|
+
log(message: string): void;
|
|
8
|
+
logRaw(message: string): void;
|
|
9
|
+
error(message: string): void;
|
|
10
|
+
section(title: string): void;
|
|
11
|
+
stageStart(stageName: string, attempt?: number): void;
|
|
12
|
+
stageComplete(stageName: string, duration: number, commitSha?: string): void;
|
|
13
|
+
stageFailed(stageName: string, error: string): void;
|
|
14
|
+
stageSkipped(stageName: string, reason: string): void;
|
|
15
|
+
pipelineStart(pipelineName: string, runId: string, triggerCommit: string): void;
|
|
16
|
+
pipelineComplete(status: string, totalDuration: number, stageCount: number): void;
|
|
17
|
+
close(): void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=pipeline-logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-logger.d.ts","sourceRoot":"","sources":["../../src/utils/pipeline-logger.ts"],"names":[],"mappings":"AASA,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAU;gBAEjB,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,GAAE,OAAe;IAchF,UAAU,IAAI,MAAM;IAOpB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAgB1B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAW7B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAc5B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAU5B,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAQrD,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ5E,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAOnD,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAOrD,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IAW/E,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAWjF,KAAK,IAAI,IAAI;CAMd"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
export class PipelineLogger {
|
|
4
|
+
logStream = null;
|
|
5
|
+
logPath;
|
|
6
|
+
interactive;
|
|
7
|
+
constructor(repoPath, pipelineName, interactive = false) {
|
|
8
|
+
this.interactive = interactive;
|
|
9
|
+
const logDir = path.join(repoPath, '.agent-pipeline', 'logs');
|
|
10
|
+
fs.mkdirSync(logDir, { recursive: true });
|
|
11
|
+
this.logPath = path.join(logDir, `${pipelineName}.log`);
|
|
12
|
+
this.logStream = fs.createWriteStream(this.logPath, { flags: 'a' });
|
|
13
|
+
}
|
|
14
|
+
getLogPath() {
|
|
15
|
+
return this.logPath;
|
|
16
|
+
}
|
|
17
|
+
log(message) {
|
|
18
|
+
const timestamp = new Date().toISOString();
|
|
19
|
+
const entry = `[${timestamp}] ${message}`;
|
|
20
|
+
this.logStream?.write(entry + '\n');
|
|
21
|
+
if (!this.interactive) {
|
|
22
|
+
console.log(message);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
logRaw(message) {
|
|
26
|
+
this.logStream?.write(message + '\n');
|
|
27
|
+
if (!this.interactive) {
|
|
28
|
+
console.log(message);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
error(message) {
|
|
32
|
+
const timestamp = new Date().toISOString();
|
|
33
|
+
const entry = `[${timestamp}] ERROR: ${message}`;
|
|
34
|
+
this.logStream?.write(entry + '\n');
|
|
35
|
+
if (!this.interactive) {
|
|
36
|
+
console.error(message);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
section(title) {
|
|
40
|
+
const separator = '─'.repeat(50);
|
|
41
|
+
this.logRaw(`\n${separator}`);
|
|
42
|
+
this.log(title);
|
|
43
|
+
this.logRaw(separator);
|
|
44
|
+
}
|
|
45
|
+
stageStart(stageName, attempt) {
|
|
46
|
+
const attemptInfo = attempt && attempt > 0 ? ` (attempt ${attempt + 1})` : '';
|
|
47
|
+
this.log(`Stage: ${stageName}${attemptInfo} - STARTED`);
|
|
48
|
+
}
|
|
49
|
+
stageComplete(stageName, duration, commitSha) {
|
|
50
|
+
const commitInfo = commitSha ? ` [${commitSha.substring(0, 7)}]` : '';
|
|
51
|
+
this.log(`Stage: ${stageName} - COMPLETED (${duration.toFixed(1)}s)${commitInfo}`);
|
|
52
|
+
}
|
|
53
|
+
stageFailed(stageName, error) {
|
|
54
|
+
this.log(`Stage: ${stageName} - FAILED: ${error}`);
|
|
55
|
+
}
|
|
56
|
+
stageSkipped(stageName, reason) {
|
|
57
|
+
this.log(`Stage: ${stageName} - SKIPPED: ${reason}`);
|
|
58
|
+
}
|
|
59
|
+
pipelineStart(pipelineName, runId, triggerCommit) {
|
|
60
|
+
this.logRaw(`\n${'═'.repeat(60)}`);
|
|
61
|
+
this.log(`Pipeline: ${pipelineName}`);
|
|
62
|
+
this.log(`Run ID: ${runId.substring(0, 8)}`);
|
|
63
|
+
this.log(`Trigger commit: ${triggerCommit.substring(0, 7)}`);
|
|
64
|
+
this.logRaw('═'.repeat(60));
|
|
65
|
+
}
|
|
66
|
+
pipelineComplete(status, totalDuration, stageCount) {
|
|
67
|
+
this.logRaw(`\n${'═'.repeat(60)}`);
|
|
68
|
+
this.log(`Pipeline ${status.toUpperCase()}`);
|
|
69
|
+
this.log(`Total duration: ${totalDuration.toFixed(1)}s`);
|
|
70
|
+
this.log(`Stages executed: ${stageCount}`);
|
|
71
|
+
this.logRaw('═'.repeat(60) + '\n');
|
|
72
|
+
}
|
|
73
|
+
close() {
|
|
74
|
+
if (this.logStream) {
|
|
75
|
+
this.logStream.end();
|
|
76
|
+
this.logStream = null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=pipeline-logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-logger.js","sourceRoot":"","sources":["../../src/utils/pipeline-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-opener.d.ts","sourceRoot":"","sources":["../../src/utils/platform-opener.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,WAAW,CAAC;AAoBtD,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,UAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB9F;AAMD,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUjE"}
|