tachibot-mcp 2.0.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/.env.example +260 -0
- package/CHANGELOG.md +54 -0
- package/CODE_OF_CONDUCT.md +56 -0
- package/CONTRIBUTING.md +54 -0
- package/Dockerfile +36 -0
- package/LICENSE +644 -0
- package/README.md +201 -0
- package/SECURITY.md +95 -0
- package/dist/personality/komaai-expressions.js +12 -0
- package/dist/profiles/balanced.json +33 -0
- package/dist/profiles/code_focus.json +33 -0
- package/dist/profiles/full.json +33 -0
- package/dist/profiles/minimal.json +33 -0
- package/dist/profiles/research_power.json +33 -0
- package/dist/scripts/build-profiles.js +46 -0
- package/dist/src/application/services/focus/FocusModeRegistry.js +46 -0
- package/dist/src/application/services/focus/FocusTool.service.js +109 -0
- package/dist/src/application/services/focus/ModeRegistry.js +46 -0
- package/dist/src/application/services/focus/modes/focus-deep.mode.js +27 -0
- package/dist/src/application/services/focus/modes/status.mode.js +50 -0
- package/dist/src/application/services/focus/modes/tachibot-status.mode.js +50 -0
- package/dist/src/collaborative-orchestrator.js +391 -0
- package/dist/src/config/model-constants.js +188 -0
- package/dist/src/config/model-defaults.js +57 -0
- package/dist/src/config/model-preferences.js +382 -0
- package/dist/src/config/timeout-config.js +130 -0
- package/dist/src/config.js +173 -0
- package/dist/src/domain/interfaces/IFocusMode.js +5 -0
- package/dist/src/domain/interfaces/IProvider.js +6 -0
- package/dist/src/domain/interfaces/ITool.js +5 -0
- package/dist/src/focus-deep.js +245 -0
- package/dist/src/infrastructure/ascii/art/robots.ascii.js +16 -0
- package/dist/src/mcp-client.js +90 -0
- package/dist/src/memory/index.js +17 -0
- package/dist/src/memory/memory-config.js +135 -0
- package/dist/src/memory/memory-interface.js +174 -0
- package/dist/src/memory/memory-manager.js +383 -0
- package/dist/src/memory/providers/devlog-provider.js +385 -0
- package/dist/src/memory/providers/hybrid-provider.js +399 -0
- package/dist/src/memory/providers/local-provider.js +388 -0
- package/dist/src/memory/providers/mem0-provider.js +337 -0
- package/dist/src/modes/architect.js +477 -0
- package/dist/src/modes/auditor.js +362 -0
- package/dist/src/modes/challenger.js +841 -0
- package/dist/src/modes/code-reviewer.js +382 -0
- package/dist/src/modes/commit-guardian.js +424 -0
- package/dist/src/modes/documentation-writer.js +572 -0
- package/dist/src/modes/scout.js +587 -0
- package/dist/src/modes/shared/helpers/challenger-helpers.js +454 -0
- package/dist/src/modes/shared/helpers/index.js +17 -0
- package/dist/src/modes/shared/helpers/scout-helpers.js +270 -0
- package/dist/src/modes/shared/helpers/verifier-helpers.js +332 -0
- package/dist/src/modes/test-architect.js +767 -0
- package/dist/src/modes/verifier.js +378 -0
- package/dist/src/monitoring/performance-monitor.js +435 -0
- package/dist/src/optimization/batch-executor.js +121 -0
- package/dist/src/optimization/context-pruner.js +196 -0
- package/dist/src/optimization/cost-monitor.js +338 -0
- package/dist/src/optimization/index.js +65 -0
- package/dist/src/optimization/model-router.js +264 -0
- package/dist/src/optimization/result-cache.js +114 -0
- package/dist/src/optimization/token-optimizer.js +257 -0
- package/dist/src/optimization/token-tracker.js +118 -0
- package/dist/src/orchestrator-instructions.js +128 -0
- package/dist/src/orchestrator-lite.js +139 -0
- package/dist/src/orchestrator.js +191 -0
- package/dist/src/orchestrators/collaborative/interfaces/IToolExecutionEngine.js +1 -0
- package/dist/src/orchestrators/collaborative/interfaces/IToolExecutionStrategy.js +5 -0
- package/dist/src/orchestrators/collaborative/interfaces/IVisualizationRenderer.js +1 -0
- package/dist/src/orchestrators/collaborative/registries/ModelProviderRegistry.js +95 -0
- package/dist/src/orchestrators/collaborative/registries/ToolAdapterRegistry.js +64 -0
- package/dist/src/orchestrators/collaborative/services/tool-execution/ToolExecutionService.js +502 -0
- package/dist/src/orchestrators/collaborative/services/visualization/VisualizationService.js +206 -0
- package/dist/src/orchestrators/collaborative/types/session-types.js +5 -0
- package/dist/src/profiles/balanced.js +37 -0
- package/dist/src/profiles/code_focus.js +37 -0
- package/dist/src/profiles/debug_intensive.js +59 -0
- package/dist/src/profiles/full.js +37 -0
- package/dist/src/profiles/minimal.js +37 -0
- package/dist/src/profiles/research_code.js +59 -0
- package/dist/src/profiles/research_power.js +37 -0
- package/dist/src/profiles/types.js +5 -0
- package/dist/src/profiles/workflow_builder.js +53 -0
- package/dist/src/prompt-engineer-lite.js +78 -0
- package/dist/src/prompt-engineer.js +399 -0
- package/dist/src/reasoning-chain.js +508 -0
- package/dist/src/sequential-thinking.js +291 -0
- package/dist/src/server-diagnostic.js +74 -0
- package/dist/src/server-raw.js +158 -0
- package/dist/src/server-simple.js +58 -0
- package/dist/src/server.js +514 -0
- package/dist/src/session/session-logger.js +617 -0
- package/dist/src/session/session-manager.js +571 -0
- package/dist/src/session/session-tools.js +400 -0
- package/dist/src/tools/advanced-modes.js +200 -0
- package/dist/src/tools/claude-integration.js +356 -0
- package/dist/src/tools/consolidated/ai-router.js +174 -0
- package/dist/src/tools/consolidated/ai-tool.js +48 -0
- package/dist/src/tools/consolidated/brainstorm-tool.js +87 -0
- package/dist/src/tools/consolidated/environment-detector.js +80 -0
- package/dist/src/tools/consolidated/index.js +50 -0
- package/dist/src/tools/consolidated/search-tool.js +110 -0
- package/dist/src/tools/consolidated/workflow-tool.js +238 -0
- package/dist/src/tools/gemini-tools.js +329 -0
- package/dist/src/tools/grok-enhanced.js +376 -0
- package/dist/src/tools/grok-tools.js +299 -0
- package/dist/src/tools/lmstudio-tools.js +223 -0
- package/dist/src/tools/openai-tools.js +498 -0
- package/dist/src/tools/openrouter-tools.js +317 -0
- package/dist/src/tools/optimized-wrapper.js +204 -0
- package/dist/src/tools/perplexity-tools.js +294 -0
- package/dist/src/tools/pingpong-tool.js +343 -0
- package/dist/src/tools/qwen-wrapper.js +74 -0
- package/dist/src/tools/tool-router.js +444 -0
- package/dist/src/tools/unified-ai-provider.js +260 -0
- package/dist/src/tools/workflow-runner.js +425 -0
- package/dist/src/tools/workflow-validator-tool.js +107 -0
- package/dist/src/types.js +23 -0
- package/dist/src/utils/input-validator.js +130 -0
- package/dist/src/utils/model-router.js +91 -0
- package/dist/src/utils/progress-stream.js +255 -0
- package/dist/src/utils/provider-router.js +88 -0
- package/dist/src/utils/smart-api-client.js +146 -0
- package/dist/src/utils/table-builder.js +218 -0
- package/dist/src/utils/timestamp-formatter.js +134 -0
- package/dist/src/utils/tool-compressor.js +257 -0
- package/dist/src/utils/tool-config.js +201 -0
- package/dist/src/validators/dependency-graph-validator.js +147 -0
- package/dist/src/validators/interpolation-validator.js +222 -0
- package/dist/src/validators/output-usage-validator.js +151 -0
- package/dist/src/validators/syntax-validator.js +102 -0
- package/dist/src/validators/tool-registry-validator.js +123 -0
- package/dist/src/validators/tool-types.js +97 -0
- package/dist/src/validators/types.js +8 -0
- package/dist/src/validators/workflow-validator.js +134 -0
- package/dist/src/visualizer-lite.js +42 -0
- package/dist/src/visualizer.js +179 -0
- package/dist/src/workflows/circuit-breaker.js +199 -0
- package/dist/src/workflows/custom-workflows.js +451 -0
- package/dist/src/workflows/engine/AutoSynthesizer.js +97 -0
- package/dist/src/workflows/engine/StepParameterResolver.js +74 -0
- package/dist/src/workflows/engine/VariableInterpolator.js +123 -0
- package/dist/src/workflows/engine/WorkflowDiscovery.js +125 -0
- package/dist/src/workflows/engine/WorkflowExecutionEngine.js +485 -0
- package/dist/src/workflows/engine/WorkflowExecutor.js +113 -0
- package/dist/src/workflows/engine/WorkflowFileManager.js +244 -0
- package/dist/src/workflows/engine/WorkflowHelpers.js +114 -0
- package/dist/src/workflows/engine/WorkflowOutputFormatter.js +83 -0
- package/dist/src/workflows/engine/events/WorkflowEventBus.js +132 -0
- package/dist/src/workflows/engine/events/interfaces/IEventBus.js +5 -0
- package/dist/src/workflows/engine/handlers/ErrorRecoveryHandler.js +162 -0
- package/dist/src/workflows/engine/handlers/PromptEnhancementHandler.js +115 -0
- package/dist/src/workflows/engine/handlers/SessionPersistenceHandler.js +167 -0
- package/dist/src/workflows/engine/handlers/StepExecutionHandler.js +231 -0
- package/dist/src/workflows/engine/handlers/ToolInvocationHandler.js +46 -0
- package/dist/src/workflows/engine/interfaces/IAutoSynthesizer.js +5 -0
- package/dist/src/workflows/engine/interfaces/IStepParameterResolver.js +5 -0
- package/dist/src/workflows/engine/interfaces/IVariableInterpolator.js +5 -0
- package/dist/src/workflows/engine/interfaces/IWorkflowDiscovery.js +4 -0
- package/dist/src/workflows/engine/interfaces/IWorkflowFileManager.js +5 -0
- package/dist/src/workflows/engine/interfaces/IWorkflowOutputFormatter.js +5 -0
- package/dist/src/workflows/engine/state/WorkflowStateMachine.js +194 -0
- package/dist/src/workflows/engine/state/interfaces/IStateMachine.js +17 -0
- package/dist/src/workflows/fallback-strategies.js +373 -0
- package/dist/src/workflows/message-queue.js +455 -0
- package/dist/src/workflows/model-router.js +189 -0
- package/dist/src/workflows/orchestrator-examples.js +174 -0
- package/dist/src/workflows/orchestrator-integration.js +200 -0
- package/dist/src/workflows/self-healing.js +524 -0
- package/dist/src/workflows/tool-mapper.js +407 -0
- package/dist/src/workflows/tool-orchestrator.js +796 -0
- package/dist/src/workflows/workflow-engine.js +573 -0
- package/dist/src/workflows/workflow-parser.js +283 -0
- package/dist/src/workflows/workflow-types.js +95 -0
- package/dist/src/workflows.js +568 -0
- package/dist/test-workflow-file-output.js +93 -0
- package/docs/API_KEYS.md +570 -0
- package/docs/CLAUDE_CODE_SETUP.md +181 -0
- package/docs/CLAUDE_DESKTOP_MANUAL.md +127 -0
- package/docs/CONFIGURATION.md +745 -0
- package/docs/FOCUS_MODES.md +240 -0
- package/docs/INSTALLATION_BOTH.md +145 -0
- package/docs/TERMS.md +352 -0
- package/docs/TOOLS_REFERENCE.md +1622 -0
- package/docs/TOOL_PARAMETERS.md +496 -0
- package/docs/TOOL_PROFILES.md +236 -0
- package/docs/WORKFLOWS.md +987 -0
- package/docs/WORKFLOW_OUTPUT.md +198 -0
- package/docs/WORKFLOW_PROGRESS_TRACKING.md +305 -0
- package/docs/workflows/design-brainstorm.md +335 -0
- package/package.json +97 -0
- package/profiles/balanced.json +37 -0
- package/profiles/code_focus.json +37 -0
- package/profiles/debug_intensive.json +34 -0
- package/profiles/full.json +37 -0
- package/profiles/minimal.json +37 -0
- package/profiles/research_power.json +37 -0
- package/profiles/workflow_builder.json +37 -0
- package/smithery.yaml +66 -0
- package/start.sh +8 -0
- package/tools.config.json +81 -0
- package/tsconfig.json +18 -0
- package/workflows/accessibility-code-audit.yaml +92 -0
- package/workflows/code-architecture-review.yaml +202 -0
- package/workflows/code-review.yaml +142 -0
- package/workflows/core/iterative-problem-solver.yaml +283 -0
- package/workflows/creative-brainstorm-yaml.yaml +215 -0
- package/workflows/pingpong.yaml +141 -0
- package/workflows/system/README.md +412 -0
- package/workflows/system/challenger.yaml +175 -0
- package/workflows/system/scout.yaml +164 -0
- package/workflows/system/verifier.yaml +133 -0
- package/workflows/ultra-creative-brainstorm.yaml +318 -0
- package/workflows/ux-research-flow.yaml +92 -0
|
@@ -0,0 +1,568 @@
|
|
|
1
|
+
import { WorkflowType } from './types.js';
|
|
2
|
+
export const workflows = {
|
|
3
|
+
[WorkflowType.CREATIVE_DISCOVERY]: {
|
|
4
|
+
name: '๐จ Creative Discovery',
|
|
5
|
+
type: WorkflowType.CREATIVE_DISCOVERY,
|
|
6
|
+
description: 'Generate innovative ideas and explore possibilities',
|
|
7
|
+
steps: [
|
|
8
|
+
{
|
|
9
|
+
tool: 'gemini_brainstorm',
|
|
10
|
+
promptTechnique: 'what_if_speculation',
|
|
11
|
+
adaptationCheck: true
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
tool: 'openai_brainstorm',
|
|
15
|
+
promptTechnique: 'alternative_perspectives',
|
|
16
|
+
optional: false
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
tool: 'perplexity_research',
|
|
20
|
+
promptTechnique: 'evidence_gathering',
|
|
21
|
+
optional: true,
|
|
22
|
+
adaptationCheck: true,
|
|
23
|
+
adaptationThreshold: 300
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
tool: 'think',
|
|
27
|
+
promptTechnique: 'quick_reflection',
|
|
28
|
+
optional: false
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
tool: 'openai_reason',
|
|
32
|
+
promptTechnique: 'feasibility_analysis',
|
|
33
|
+
optional: false
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
visualTemplate: `
|
|
37
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
38
|
+
@ โ
โ
@ @ โ โ @ @ โ โ @ @ โ โ @ @ โ โ @
|
|
39
|
+
@ \\___// @ @ ~ @ @ \\_/ @ @ โก @ @ - @
|
|
40
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
41
|
+
gemini[{g}] โ openai[{o}] โ perplexity[{p}]? โ think[{t}] โ reason[{r}]
|
|
42
|
+
|
|
43
|
+
๐ง Technique: {technique}
|
|
44
|
+
๐ Progress: {progress}
|
|
45
|
+
๐ญ Current: {current}`
|
|
46
|
+
},
|
|
47
|
+
[WorkflowType.DEEP_RESEARCH]: {
|
|
48
|
+
name: '๐ฌ Deep Research',
|
|
49
|
+
type: WorkflowType.DEEP_RESEARCH,
|
|
50
|
+
description: 'Comprehensive investigation with evidence gathering',
|
|
51
|
+
steps: [
|
|
52
|
+
{
|
|
53
|
+
tool: 'perplexity_research',
|
|
54
|
+
promptTechnique: 'comprehensive_investigation',
|
|
55
|
+
adaptationCheck: true,
|
|
56
|
+
adaptationThreshold: 500
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
tool: 'think',
|
|
60
|
+
promptTechnique: 'pattern_recognition',
|
|
61
|
+
optional: false
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
tool: 'openai_reason',
|
|
65
|
+
promptTechnique: 'systematic_analysis',
|
|
66
|
+
optional: false
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
tool: 'gemini_brainstorm',
|
|
70
|
+
promptTechnique: 'creative_applications',
|
|
71
|
+
optional: true
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
visualTemplate: `
|
|
75
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
76
|
+
@ โ โ @ @ โ โ @ @ โ โ @ @ โ
โ
@
|
|
77
|
+
@ \\_/ @ @ โก @ @ ~ @ @ \\o// @
|
|
78
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
79
|
+
perplex[{p}] โ think[{t}] โ reason[{r}] โ gemini[{g}]
|
|
80
|
+
|
|
81
|
+
๐ Technique: {technique}
|
|
82
|
+
๐ Progress: {progress}
|
|
83
|
+
๐ Current: {current}`
|
|
84
|
+
},
|
|
85
|
+
[WorkflowType.PROBLEM_SOLVING]: {
|
|
86
|
+
name: '๐งฉ Problem Solving',
|
|
87
|
+
type: WorkflowType.PROBLEM_SOLVING,
|
|
88
|
+
description: 'Break down and solve complex problems systematically',
|
|
89
|
+
steps: [
|
|
90
|
+
{
|
|
91
|
+
tool: 'think',
|
|
92
|
+
promptTechnique: 'problem_decomposition',
|
|
93
|
+
optional: false
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
tool: 'openai_reason',
|
|
97
|
+
promptTechnique: 'first_principles',
|
|
98
|
+
optional: false
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
tool: 'perplexity_research',
|
|
102
|
+
promptTechnique: 'evidence_gathering',
|
|
103
|
+
optional: false,
|
|
104
|
+
adaptationCheck: true
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
tool: 'gemini_brainstorm',
|
|
108
|
+
promptTechnique: 'innovative_solutions',
|
|
109
|
+
optional: false
|
|
110
|
+
}
|
|
111
|
+
],
|
|
112
|
+
visualTemplate: `
|
|
113
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
114
|
+
@ โ โ @ @ โ โ @ @ โ โ @ @ โ
โ
@
|
|
115
|
+
@ โก @ @ โก @ @ \\_/ @ @ ! @
|
|
116
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
117
|
+
think[{t}] โ reason[{r}] โ perplex[{p}] โ gemini[{g}]
|
|
118
|
+
|
|
119
|
+
๐ง Technique: {technique}
|
|
120
|
+
๐ Progress: {progress}
|
|
121
|
+
๐ก Current: {current}`
|
|
122
|
+
},
|
|
123
|
+
[WorkflowType.SYNTHESIS]: {
|
|
124
|
+
name: '๐ฏ Synthesis',
|
|
125
|
+
type: WorkflowType.SYNTHESIS,
|
|
126
|
+
description: 'Combine multiple perspectives into coherent insights',
|
|
127
|
+
steps: [
|
|
128
|
+
{
|
|
129
|
+
tool: 'gemini_brainstorm',
|
|
130
|
+
promptTechnique: 'exploratory_angles',
|
|
131
|
+
optional: false
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
tool: 'perplexity_research',
|
|
135
|
+
promptTechnique: 'comprehensive_data',
|
|
136
|
+
optional: false
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
tool: 'openai_reason',
|
|
140
|
+
promptTechnique: 'analytical_framework',
|
|
141
|
+
optional: false
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
tool: 'think',
|
|
145
|
+
promptTechnique: 'integration_reflection',
|
|
146
|
+
optional: false
|
|
147
|
+
}
|
|
148
|
+
],
|
|
149
|
+
visualTemplate: `
|
|
150
|
+
gemini[{g}] โ
|
|
151
|
+
โ
|
|
152
|
+
perplex[{p}] โ think[{t}] โ SYNTHESIS
|
|
153
|
+
โ
|
|
154
|
+
openai[{o}] โ
|
|
155
|
+
|
|
156
|
+
๐ Technique: {technique}
|
|
157
|
+
๐ Progress: {progress}
|
|
158
|
+
๐ฏ Current: {current}`
|
|
159
|
+
},
|
|
160
|
+
[WorkflowType.FACT_CHECK]: {
|
|
161
|
+
name: 'โ
Fact Check',
|
|
162
|
+
type: WorkflowType.FACT_CHECK,
|
|
163
|
+
description: 'Validate claims and ideas with evidence-based analysis',
|
|
164
|
+
steps: [
|
|
165
|
+
{
|
|
166
|
+
tool: 'think',
|
|
167
|
+
promptTechnique: 'problem_decomposition',
|
|
168
|
+
optional: false
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
tool: 'perplexity_research',
|
|
172
|
+
promptTechnique: 'comprehensive_investigation',
|
|
173
|
+
adaptationCheck: true,
|
|
174
|
+
adaptationThreshold: 500
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
tool: 'openai_reason',
|
|
178
|
+
promptTechnique: 'systematic_analysis',
|
|
179
|
+
optional: false
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
tool: 'gemini_brainstorm',
|
|
183
|
+
promptTechnique: 'alternative_perspectives',
|
|
184
|
+
optional: false
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
tool: 'think',
|
|
188
|
+
promptTechnique: 'integration_reflection',
|
|
189
|
+
optional: false
|
|
190
|
+
}
|
|
191
|
+
],
|
|
192
|
+
visualTemplate: `
|
|
193
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
194
|
+
@ โ โ @ @ โ โ @ @ โ โ @ @ โ
โ
@ @ โ โ @
|
|
195
|
+
@ ? @ @ \\_/ @ @ โก @ @ ~ @ @ ! @
|
|
196
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
197
|
+
think[{t}] โ perplex[{p}] โ reason[{r}] โ gemini[{g}] โ think[{t2}]
|
|
198
|
+
|
|
199
|
+
โ
Technique: {technique}
|
|
200
|
+
๐ Progress: {progress}
|
|
201
|
+
๐ Current: {current}`
|
|
202
|
+
},
|
|
203
|
+
// Developer-Focused Workflows
|
|
204
|
+
[WorkflowType.RAPID_PROTOTYPE]: {
|
|
205
|
+
name: '๐ Rapid Prototype',
|
|
206
|
+
type: WorkflowType.RAPID_PROTOTYPE,
|
|
207
|
+
description: 'From idea to working demo in minutes',
|
|
208
|
+
steps: [
|
|
209
|
+
{
|
|
210
|
+
tool: 'scout',
|
|
211
|
+
promptTechnique: 'requirement_gathering',
|
|
212
|
+
optional: false
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
tool: 'architect',
|
|
216
|
+
promptTechnique: 'system_design',
|
|
217
|
+
optional: false
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
tool: 'code_reviewer',
|
|
221
|
+
promptTechnique: 'design_validation',
|
|
222
|
+
optional: true
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
tool: 'documentation_writer',
|
|
226
|
+
promptTechnique: 'quick_documentation',
|
|
227
|
+
optional: true
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
tool: 'think',
|
|
231
|
+
promptTechnique: 'prototype_synthesis',
|
|
232
|
+
optional: false
|
|
233
|
+
}
|
|
234
|
+
],
|
|
235
|
+
visualTemplate: `
|
|
236
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
237
|
+
@ ๐ @ @ ๐๏ธ @ @ โ
@ @ ๐ @ @ ๐ฏ @
|
|
238
|
+
@scout @ @archi @ @review@ @ docs @ @synth@
|
|
239
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
240
|
+
scout[{s}] โ arch[{a}] โ review[{r}] โ docs[{d}] โ think[{t}]
|
|
241
|
+
|
|
242
|
+
๐ Technique: {technique}
|
|
243
|
+
๐ Progress: {progress}
|
|
244
|
+
โก Current: {current}`
|
|
245
|
+
},
|
|
246
|
+
[WorkflowType.CODE_QUALITY]: {
|
|
247
|
+
name: '๐ง Code Quality',
|
|
248
|
+
type: WorkflowType.CODE_QUALITY,
|
|
249
|
+
description: 'Comprehensive code improvement pipeline',
|
|
250
|
+
steps: [
|
|
251
|
+
{
|
|
252
|
+
tool: 'code_reviewer',
|
|
253
|
+
promptTechnique: 'comprehensive_review',
|
|
254
|
+
optional: false
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
tool: 'test_architect',
|
|
258
|
+
promptTechnique: 'test_generation',
|
|
259
|
+
optional: false
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
tool: 'challenger',
|
|
263
|
+
promptTechnique: 'code_questioning',
|
|
264
|
+
optional: false
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
tool: 'auditor',
|
|
268
|
+
promptTechnique: 'quality_audit',
|
|
269
|
+
optional: false
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
tool: 'think',
|
|
273
|
+
promptTechnique: 'quality_synthesis',
|
|
274
|
+
optional: false
|
|
275
|
+
}
|
|
276
|
+
],
|
|
277
|
+
visualTemplate: `
|
|
278
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
279
|
+
@ ๐ @ @ ๐งช @ @ โ๏ธ @ @ ๐ @ @ ๐ @
|
|
280
|
+
@review@ @ test @ @chall @ @audit @ @synth@
|
|
281
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
282
|
+
review[{r}] โ test[{t}] โ chall[{c}] โ audit[{a}] โ think[{s}]
|
|
283
|
+
|
|
284
|
+
๐ง Technique: {technique}
|
|
285
|
+
๐ Progress: {progress}
|
|
286
|
+
๐ Current: {current}`
|
|
287
|
+
},
|
|
288
|
+
[WorkflowType.SECURE_DEPLOYMENT]: {
|
|
289
|
+
name: '๐ก๏ธ Secure Deployment',
|
|
290
|
+
type: WorkflowType.SECURE_DEPLOYMENT,
|
|
291
|
+
description: 'Security-first deployment pipeline',
|
|
292
|
+
steps: [
|
|
293
|
+
{
|
|
294
|
+
tool: 'auditor',
|
|
295
|
+
promptTechnique: 'security_audit',
|
|
296
|
+
optional: false
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
tool: 'commit_guardian',
|
|
300
|
+
promptTechnique: 'pre_deploy_validation',
|
|
301
|
+
optional: false
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
tool: 'verifier',
|
|
305
|
+
promptTechnique: 'deployment_verification',
|
|
306
|
+
optional: false
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
tool: 'challenger',
|
|
310
|
+
promptTechnique: 'security_questioning',
|
|
311
|
+
optional: true
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
tool: 'think',
|
|
315
|
+
promptTechnique: 'deployment_synthesis',
|
|
316
|
+
optional: false
|
|
317
|
+
}
|
|
318
|
+
],
|
|
319
|
+
visualTemplate: `
|
|
320
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
321
|
+
@ ๐ @ @ ๐ก๏ธ @ @ โ
@ @ โ๏ธ @ @ ๐ @
|
|
322
|
+
@audit @ @guard @ @verify@ @chall @ @deploy@
|
|
323
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
324
|
+
audit[{a}] โ guard[{g}] โ verify[{v}] โ chall[{c}] โ think[{d}]
|
|
325
|
+
|
|
326
|
+
๐ก๏ธ Technique: {technique}
|
|
327
|
+
๐ Progress: {progress}
|
|
328
|
+
๐ Current: {current}`
|
|
329
|
+
},
|
|
330
|
+
[WorkflowType.FULL_STACK_DEVELOPMENT]: {
|
|
331
|
+
name: '๐๏ธ Full-Stack Dev',
|
|
332
|
+
type: WorkflowType.FULL_STACK_DEVELOPMENT,
|
|
333
|
+
description: 'End-to-end feature development',
|
|
334
|
+
steps: [
|
|
335
|
+
{
|
|
336
|
+
tool: 'architect',
|
|
337
|
+
promptTechnique: 'system_architecture',
|
|
338
|
+
optional: false
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
tool: 'code_reviewer',
|
|
342
|
+
promptTechnique: 'implementation_review',
|
|
343
|
+
optional: false
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
tool: 'test_architect',
|
|
347
|
+
promptTechnique: 'full_stack_testing',
|
|
348
|
+
optional: false
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
tool: 'documentation_writer',
|
|
352
|
+
promptTechnique: 'comprehensive_docs',
|
|
353
|
+
optional: false
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
tool: 'commit_guardian',
|
|
357
|
+
promptTechnique: 'final_validation',
|
|
358
|
+
optional: true
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
tool: 'think',
|
|
362
|
+
promptTechnique: 'feature_synthesis',
|
|
363
|
+
optional: false
|
|
364
|
+
}
|
|
365
|
+
],
|
|
366
|
+
visualTemplate: `
|
|
367
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
368
|
+
@ ๐๏ธ @ @ ๐ @ @ ๐งช @ @ ๐ @ @ ๐ก๏ธ @ @ โจ @
|
|
369
|
+
@archi @ @review@ @ test @ @ docs @ @guard @ @synth@
|
|
370
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
371
|
+
arch[{a}] โ review[{r}] โ test[{t}] โ docs[{d}] โ guard[{g}] โ think[{s}]
|
|
372
|
+
|
|
373
|
+
๐๏ธ Technique: {technique}
|
|
374
|
+
๐ Progress: {progress}
|
|
375
|
+
๐ฏ Current: {current}`
|
|
376
|
+
},
|
|
377
|
+
[WorkflowType.TEST_DRIVEN_DEVELOPMENT]: {
|
|
378
|
+
name: '๐งช Test-Driven Dev',
|
|
379
|
+
type: WorkflowType.TEST_DRIVEN_DEVELOPMENT,
|
|
380
|
+
description: 'TDD workflow with comprehensive testing',
|
|
381
|
+
steps: [
|
|
382
|
+
{
|
|
383
|
+
tool: 'test_architect',
|
|
384
|
+
promptTechnique: 'test_first_design',
|
|
385
|
+
optional: false
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
tool: 'code_reviewer',
|
|
389
|
+
promptTechnique: 'tdd_validation',
|
|
390
|
+
optional: false
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
tool: 'challenger',
|
|
394
|
+
promptTechnique: 'test_questioning',
|
|
395
|
+
optional: false
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
tool: 'verifier',
|
|
399
|
+
promptTechnique: 'test_verification',
|
|
400
|
+
optional: false
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
tool: 'think',
|
|
404
|
+
promptTechnique: 'tdd_synthesis',
|
|
405
|
+
optional: false
|
|
406
|
+
}
|
|
407
|
+
],
|
|
408
|
+
visualTemplate: `
|
|
409
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
410
|
+
@ ๐งช @ @ ๐ @ @ โ๏ธ @ @ โ
@ @ ๐ฏ @
|
|
411
|
+
@ test @ @review@ @chall @ @verify@ @synth@
|
|
412
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
413
|
+
test[{t}] โ review[{r}] โ chall[{c}] โ verify[{v}] โ think[{s}]
|
|
414
|
+
|
|
415
|
+
๐งช Technique: {technique}
|
|
416
|
+
๐ Progress: {progress}
|
|
417
|
+
๐ฌ Current: {current}`
|
|
418
|
+
},
|
|
419
|
+
[WorkflowType.CODE_REVIEW_WORKFLOW]: {
|
|
420
|
+
name: '๐๏ธ Code Review',
|
|
421
|
+
type: WorkflowType.CODE_REVIEW_WORKFLOW,
|
|
422
|
+
description: 'Thorough code review with learning',
|
|
423
|
+
steps: [
|
|
424
|
+
{
|
|
425
|
+
tool: 'code_reviewer',
|
|
426
|
+
promptTechnique: 'socratic_review',
|
|
427
|
+
optional: false
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
tool: 'challenger',
|
|
431
|
+
promptTechnique: 'assumption_challenging',
|
|
432
|
+
optional: false
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
tool: 'auditor',
|
|
436
|
+
promptTechnique: 'evidence_audit',
|
|
437
|
+
optional: true
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
tool: 'think',
|
|
441
|
+
promptTechnique: 'review_synthesis',
|
|
442
|
+
optional: false
|
|
443
|
+
}
|
|
444
|
+
],
|
|
445
|
+
visualTemplate: `
|
|
446
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
447
|
+
@ ๐๏ธ @ @ โ๏ธ @ @ ๐ @ @ ๐ต๏ธ @ @ ๐ @
|
|
448
|
+
@review@ @chall @ @audit @ @hunt @ @synth@
|
|
449
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
450
|
+
review[{r}] โ chall[{c}] โ audit[{a}] โ hunt[{h}] โ think[{s}]
|
|
451
|
+
|
|
452
|
+
๐๏ธ Technique: {technique}
|
|
453
|
+
๐ Progress: {progress}
|
|
454
|
+
๐ Current: {current}`
|
|
455
|
+
},
|
|
456
|
+
[WorkflowType.DOCUMENTATION_GENERATION]: {
|
|
457
|
+
name: '๐ Doc Generation',
|
|
458
|
+
type: WorkflowType.DOCUMENTATION_GENERATION,
|
|
459
|
+
description: 'Comprehensive documentation creation',
|
|
460
|
+
steps: [
|
|
461
|
+
{
|
|
462
|
+
tool: 'scout',
|
|
463
|
+
promptTechnique: 'code_exploration',
|
|
464
|
+
optional: false
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
tool: 'documentation_writer',
|
|
468
|
+
promptTechnique: 'narrative_docs',
|
|
469
|
+
optional: false
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
tool: 'code_reviewer',
|
|
473
|
+
promptTechnique: 'documentation_review',
|
|
474
|
+
optional: true
|
|
475
|
+
},
|
|
476
|
+
{
|
|
477
|
+
tool: 'challenger',
|
|
478
|
+
promptTechnique: 'doc_questioning',
|
|
479
|
+
optional: true
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
tool: 'think',
|
|
483
|
+
promptTechnique: 'documentation_synthesis',
|
|
484
|
+
optional: false
|
|
485
|
+
}
|
|
486
|
+
],
|
|
487
|
+
visualTemplate: `
|
|
488
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
489
|
+
@ ๐ @ @ ๐ @ @ ๐ @ @ โ @ @ ๐ @
|
|
490
|
+
@scout @ @ docs @ @review@ @chall @ @synth@
|
|
491
|
+
@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@
|
|
492
|
+
scout[{s}] โ docs[{d}] โ review[{r}] โ chall[{c}] โ think[{t}]
|
|
493
|
+
|
|
494
|
+
๐ Technique: {technique}
|
|
495
|
+
๐ Progress: {progress}
|
|
496
|
+
โ๏ธ Current: {current}`
|
|
497
|
+
}
|
|
498
|
+
};
|
|
499
|
+
// Prompt technique descriptions for user visibility
|
|
500
|
+
export const promptTechniques = {
|
|
501
|
+
// Creative techniques
|
|
502
|
+
what_if_speculation: 'Exploring possibilities with "What if..." questions',
|
|
503
|
+
alternative_perspectives: 'Viewing from different angles and domains',
|
|
504
|
+
creative_applications: 'Finding innovative uses and connections',
|
|
505
|
+
innovative_solutions: 'Generating novel approaches to problems',
|
|
506
|
+
exploratory_angles: 'Discovering unexpected dimensions',
|
|
507
|
+
// Research techniques
|
|
508
|
+
comprehensive_investigation: 'Systematic data gathering with 5W1H framework',
|
|
509
|
+
evidence_gathering: 'Finding supporting and contradicting evidence',
|
|
510
|
+
comprehensive_data: 'Collecting data from multiple sources',
|
|
511
|
+
// Analytical techniques
|
|
512
|
+
systematic_analysis: 'Step-by-step logical examination',
|
|
513
|
+
first_principles: 'Breaking down to fundamental truths',
|
|
514
|
+
feasibility_analysis: 'Evaluating practical implementation',
|
|
515
|
+
analytical_framework: 'Structured analytical approach',
|
|
516
|
+
// Reflective techniques
|
|
517
|
+
quick_reflection: 'Brief pattern recognition and insight capture',
|
|
518
|
+
pattern_recognition: 'Identifying recurring themes and connections',
|
|
519
|
+
problem_decomposition: 'Breaking complex problems into components',
|
|
520
|
+
integration_reflection: 'Synthesizing insights from multiple sources',
|
|
521
|
+
// Developer-focused techniques
|
|
522
|
+
requirement_gathering: 'Extracting and clarifying project requirements',
|
|
523
|
+
system_design: 'Creating architectural blueprints and system design',
|
|
524
|
+
design_validation: 'Reviewing and validating design decisions',
|
|
525
|
+
quick_documentation: 'Rapid documentation generation for prototypes',
|
|
526
|
+
prototype_synthesis: 'Combining prototype elements into coherent design',
|
|
527
|
+
comprehensive_review: 'Thorough code analysis with multiple perspectives',
|
|
528
|
+
test_generation: 'Creating comprehensive test suites and edge cases',
|
|
529
|
+
code_questioning: 'Challenging code assumptions and design choices',
|
|
530
|
+
quality_audit: 'Systematic quality assessment and improvement suggestions',
|
|
531
|
+
quality_synthesis: 'Integrating quality insights into actionable recommendations',
|
|
532
|
+
security_audit: 'Deep security vulnerability analysis',
|
|
533
|
+
pre_deploy_validation: 'Pre-deployment checks and validations',
|
|
534
|
+
deployment_verification: 'Verifying deployment readiness and safety',
|
|
535
|
+
security_questioning: 'Challenging security assumptions and practices',
|
|
536
|
+
deployment_synthesis: 'Synthesizing deployment insights and recommendations',
|
|
537
|
+
system_architecture: 'End-to-end system architecture design',
|
|
538
|
+
implementation_review: 'Reviewing implementation against requirements',
|
|
539
|
+
full_stack_testing: 'Comprehensive testing across all system layers',
|
|
540
|
+
comprehensive_docs: 'Creating complete documentation suite',
|
|
541
|
+
final_validation: 'Final checks before feature completion',
|
|
542
|
+
feature_synthesis: 'Integrating all feature development insights',
|
|
543
|
+
test_first_design: 'Designing tests before implementation (TDD)',
|
|
544
|
+
tdd_validation: 'Validating TDD practices and test quality',
|
|
545
|
+
test_questioning: 'Challenging test coverage and effectiveness',
|
|
546
|
+
test_verification: 'Verifying test completeness and quality',
|
|
547
|
+
tdd_synthesis: 'Synthesizing TDD insights and recommendations',
|
|
548
|
+
socratic_review: 'Educational code review with guiding questions',
|
|
549
|
+
assumption_challenging: 'Challenging code and design assumptions',
|
|
550
|
+
evidence_audit: 'Requiring evidence for all claims and decisions',
|
|
551
|
+
dependency_tracing: 'Tracing code dependencies and relationships',
|
|
552
|
+
review_synthesis: 'Synthesizing review insights and learning points',
|
|
553
|
+
code_exploration: 'Exploring codebase structure and patterns',
|
|
554
|
+
narrative_docs: 'Creating engaging, story-driven documentation',
|
|
555
|
+
documentation_review: 'Reviewing documentation for clarity and completeness',
|
|
556
|
+
doc_questioning: 'Challenging documentation assumptions and gaps',
|
|
557
|
+
documentation_synthesis: 'Synthesizing documentation insights and improvements'
|
|
558
|
+
};
|
|
559
|
+
// Helper function to get visual status indicator
|
|
560
|
+
export function getStatusIndicator(status) {
|
|
561
|
+
const indicators = {
|
|
562
|
+
idle: ' ',
|
|
563
|
+
processing: '..',
|
|
564
|
+
complete: 'โ',
|
|
565
|
+
error: '!!'
|
|
566
|
+
};
|
|
567
|
+
return indicators[status] || ' ';
|
|
568
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test script for workflow file output feature
|
|
3
|
+
*
|
|
4
|
+
* This tests the new saveToFile and loadFiles functionality in WorkflowEngine
|
|
5
|
+
*/
|
|
6
|
+
import { WorkflowEngine } from './src/workflows/workflow-engine.js';
|
|
7
|
+
import * as fs from 'fs/promises';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
async function testWorkflowFileOutput() {
|
|
10
|
+
console.log('๐งช Testing Workflow File Output Feature\n');
|
|
11
|
+
const engine = new WorkflowEngine();
|
|
12
|
+
// Test workflow with saveToFile and loadFiles
|
|
13
|
+
const testWorkflow = {
|
|
14
|
+
name: 'test-file-output',
|
|
15
|
+
description: 'Test file-based output and loading',
|
|
16
|
+
steps: [
|
|
17
|
+
{
|
|
18
|
+
id: 'step1',
|
|
19
|
+
mode: 'scout',
|
|
20
|
+
variant: 'research_scout',
|
|
21
|
+
maxTokens: 1000,
|
|
22
|
+
saveToFile: true
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
id: 'step2',
|
|
26
|
+
mode: 'scout',
|
|
27
|
+
variant: 'research_scout',
|
|
28
|
+
parallel: true,
|
|
29
|
+
maxTokens: 1000,
|
|
30
|
+
saveToFile: true
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: 'step3',
|
|
34
|
+
mode: 'synthesis',
|
|
35
|
+
maxTokens: 1000,
|
|
36
|
+
loadFiles: ['step1', 'step2'],
|
|
37
|
+
dependsOn: ['step1', 'step2']
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
};
|
|
41
|
+
const query = 'Test query for file output feature';
|
|
42
|
+
try {
|
|
43
|
+
console.log('๐ Executing workflow...');
|
|
44
|
+
const result = await engine.executeWorkflow(testWorkflow, query);
|
|
45
|
+
console.log('\nโ
Workflow execution completed!');
|
|
46
|
+
console.log('\n๐ Results:');
|
|
47
|
+
console.log(JSON.stringify(result, null, 2));
|
|
48
|
+
// Verify output directory was created
|
|
49
|
+
if (result.outputDirectory) {
|
|
50
|
+
console.log(`\n๐ Output directory: ${result.outputDirectory}`);
|
|
51
|
+
// Check if manifest exists
|
|
52
|
+
const manifestPath = path.join(result.outputDirectory, 'manifest.json');
|
|
53
|
+
try {
|
|
54
|
+
const manifest = await fs.readFile(manifestPath, 'utf-8');
|
|
55
|
+
console.log('\n๐ Manifest:');
|
|
56
|
+
console.log(JSON.parse(manifest));
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.error('โ Failed to read manifest:', error);
|
|
60
|
+
}
|
|
61
|
+
// Check if step files exist
|
|
62
|
+
for (const stepId of ['step1', 'step2']) {
|
|
63
|
+
const stepFile = path.join(result.outputDirectory, `${stepId}.md`);
|
|
64
|
+
try {
|
|
65
|
+
const content = await fs.readFile(stepFile, 'utf-8');
|
|
66
|
+
console.log(`\n๐ ${stepId}.md exists (${content.length} characters)`);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
console.error(`โ Failed to read ${stepId}.md:`, error);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
console.log('โ ๏ธ No output directory in result');
|
|
75
|
+
}
|
|
76
|
+
console.log('\nโจ Test completed successfully!');
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
console.error('\nโ Test failed:', error);
|
|
81
|
+
throw error;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Run the test
|
|
85
|
+
testWorkflowFileOutput()
|
|
86
|
+
.then(() => {
|
|
87
|
+
console.log('\n๐ All tests passed!');
|
|
88
|
+
process.exit(0);
|
|
89
|
+
})
|
|
90
|
+
.catch((error) => {
|
|
91
|
+
console.error('\n๐ฅ Test failed with error:', error);
|
|
92
|
+
process.exit(1);
|
|
93
|
+
});
|