wogiflow 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.workflow/agents/reviewer.md +81 -0
- package/.workflow/agents/security.md +94 -0
- package/.workflow/agents/story-writer.md +58 -0
- package/.workflow/bridges/base-bridge.js +395 -0
- package/.workflow/bridges/claude-bridge.js +434 -0
- package/.workflow/bridges/index.js +130 -0
- package/.workflow/lib/assumption-detector.js +481 -0
- package/.workflow/lib/config-substitution.js +371 -0
- package/.workflow/lib/failure-categories.js +478 -0
- package/.workflow/state/app-map.md.template +15 -0
- package/.workflow/state/architecture.md.template +24 -0
- package/.workflow/state/component-index.json.template +5 -0
- package/.workflow/state/decisions.md.template +15 -0
- package/.workflow/state/feedback-patterns.md.template +9 -0
- package/.workflow/state/knowledge-sync.json.template +6 -0
- package/.workflow/state/progress.md.template +14 -0
- package/.workflow/state/ready.json.template +7 -0
- package/.workflow/state/request-log.md.template +14 -0
- package/.workflow/state/session-state.json.template +11 -0
- package/.workflow/state/stack.md.template +33 -0
- package/.workflow/state/testing.md.template +36 -0
- package/.workflow/templates/claude-md.hbs +257 -0
- package/.workflow/templates/correction-report.md +67 -0
- package/.workflow/templates/gemini-md.hbs +52 -0
- package/README.md +1802 -0
- package/bin/flow +205 -0
- package/lib/index.js +33 -0
- package/lib/installer.js +467 -0
- package/lib/release-channel.js +269 -0
- package/lib/skill-registry.js +526 -0
- package/lib/upgrader.js +401 -0
- package/lib/utils.js +305 -0
- package/package.json +64 -0
- package/scripts/flow +985 -0
- package/scripts/flow-adaptive-learning.js +1259 -0
- package/scripts/flow-aggregate.js +488 -0
- package/scripts/flow-archive +133 -0
- package/scripts/flow-auto-context.js +1015 -0
- package/scripts/flow-auto-learn.js +615 -0
- package/scripts/flow-bridge.js +223 -0
- package/scripts/flow-browser-suggest.js +316 -0
- package/scripts/flow-bug.js +247 -0
- package/scripts/flow-cascade.js +711 -0
- package/scripts/flow-changelog +85 -0
- package/scripts/flow-checkpoint.js +483 -0
- package/scripts/flow-cli.js +403 -0
- package/scripts/flow-code-intelligence.js +760 -0
- package/scripts/flow-complexity.js +502 -0
- package/scripts/flow-config-set.js +152 -0
- package/scripts/flow-constants.js +157 -0
- package/scripts/flow-context +152 -0
- package/scripts/flow-context-init.js +482 -0
- package/scripts/flow-context-monitor.js +384 -0
- package/scripts/flow-context-scoring.js +886 -0
- package/scripts/flow-correct.js +458 -0
- package/scripts/flow-damage-control.js +985 -0
- package/scripts/flow-deps +101 -0
- package/scripts/flow-diff.js +700 -0
- package/scripts/flow-done +151 -0
- package/scripts/flow-done.js +489 -0
- package/scripts/flow-durable-session.js +1541 -0
- package/scripts/flow-entropy-monitor.js +345 -0
- package/scripts/flow-export-profile +349 -0
- package/scripts/flow-export-scanner.js +1046 -0
- package/scripts/flow-figma-confirm.js +400 -0
- package/scripts/flow-figma-extract.js +496 -0
- package/scripts/flow-figma-generate.js +683 -0
- package/scripts/flow-figma-index.js +909 -0
- package/scripts/flow-figma-match.js +617 -0
- package/scripts/flow-figma-mcp-server.js +518 -0
- package/scripts/flow-figma-pipeline.js +414 -0
- package/scripts/flow-file-ops.js +301 -0
- package/scripts/flow-gate-confidence.js +825 -0
- package/scripts/flow-guided-edit.js +659 -0
- package/scripts/flow-health +185 -0
- package/scripts/flow-health.js +413 -0
- package/scripts/flow-hooks.js +556 -0
- package/scripts/flow-http-client.js +249 -0
- package/scripts/flow-hybrid-detect.js +167 -0
- package/scripts/flow-hybrid-interactive.js +591 -0
- package/scripts/flow-hybrid-test.js +152 -0
- package/scripts/flow-import-profile +439 -0
- package/scripts/flow-init +253 -0
- package/scripts/flow-instruction-richness.js +827 -0
- package/scripts/flow-jira-integration.js +579 -0
- package/scripts/flow-knowledge-router.js +522 -0
- package/scripts/flow-knowledge-sync.js +589 -0
- package/scripts/flow-linear-integration.js +631 -0
- package/scripts/flow-links.js +774 -0
- package/scripts/flow-log-manager.js +559 -0
- package/scripts/flow-loop-enforcer.js +1246 -0
- package/scripts/flow-loop-retry-learning.js +630 -0
- package/scripts/flow-lsp.js +923 -0
- package/scripts/flow-map-index +348 -0
- package/scripts/flow-map-sync +201 -0
- package/scripts/flow-memory-blocks.js +668 -0
- package/scripts/flow-memory-compactor.js +350 -0
- package/scripts/flow-memory-db.js +1110 -0
- package/scripts/flow-memory-sync.js +484 -0
- package/scripts/flow-metrics.js +353 -0
- package/scripts/flow-migrate-ids.js +370 -0
- package/scripts/flow-model-adapter.js +802 -0
- package/scripts/flow-model-router.js +884 -0
- package/scripts/flow-models.js +1231 -0
- package/scripts/flow-morning.js +517 -0
- package/scripts/flow-multi-approach.js +660 -0
- package/scripts/flow-new-feature +86 -0
- package/scripts/flow-onboard +1042 -0
- package/scripts/flow-orchestrate-llm.js +459 -0
- package/scripts/flow-orchestrate.js +3592 -0
- package/scripts/flow-output.js +123 -0
- package/scripts/flow-parallel-detector.js +399 -0
- package/scripts/flow-parallel-dispatch.js +987 -0
- package/scripts/flow-parallel.js +428 -0
- package/scripts/flow-pattern-enforcer.js +600 -0
- package/scripts/flow-prd-manager.js +282 -0
- package/scripts/flow-progress.js +323 -0
- package/scripts/flow-project-analyzer.js +975 -0
- package/scripts/flow-prompt-composer.js +487 -0
- package/scripts/flow-providers.js +1381 -0
- package/scripts/flow-queue.js +308 -0
- package/scripts/flow-ready +82 -0
- package/scripts/flow-ready.js +189 -0
- package/scripts/flow-regression.js +396 -0
- package/scripts/flow-response-parser.js +450 -0
- package/scripts/flow-resume.js +284 -0
- package/scripts/flow-rules-sync.js +439 -0
- package/scripts/flow-run-trace.js +718 -0
- package/scripts/flow-safety.js +587 -0
- package/scripts/flow-search +104 -0
- package/scripts/flow-security.js +481 -0
- package/scripts/flow-session-end +106 -0
- package/scripts/flow-session-end.js +437 -0
- package/scripts/flow-session-state.js +671 -0
- package/scripts/flow-setup-hooks +216 -0
- package/scripts/flow-setup-hooks.js +377 -0
- package/scripts/flow-skill-create.js +329 -0
- package/scripts/flow-skill-creator.js +572 -0
- package/scripts/flow-skill-generator.js +1046 -0
- package/scripts/flow-skill-learn.js +880 -0
- package/scripts/flow-skill-matcher.js +578 -0
- package/scripts/flow-spec-generator.js +820 -0
- package/scripts/flow-stack-wizard.js +895 -0
- package/scripts/flow-standup +162 -0
- package/scripts/flow-start +74 -0
- package/scripts/flow-start.js +235 -0
- package/scripts/flow-status +110 -0
- package/scripts/flow-status.js +301 -0
- package/scripts/flow-step-browser.js +83 -0
- package/scripts/flow-step-changelog.js +217 -0
- package/scripts/flow-step-comments.js +306 -0
- package/scripts/flow-step-complexity.js +234 -0
- package/scripts/flow-step-coverage.js +218 -0
- package/scripts/flow-step-knowledge.js +193 -0
- package/scripts/flow-step-pr-tests.js +364 -0
- package/scripts/flow-step-regression.js +89 -0
- package/scripts/flow-step-review.js +516 -0
- package/scripts/flow-step-security.js +162 -0
- package/scripts/flow-step-silent-failures.js +290 -0
- package/scripts/flow-step-simplifier.js +346 -0
- package/scripts/flow-story +105 -0
- package/scripts/flow-story.js +500 -0
- package/scripts/flow-suspend.js +252 -0
- package/scripts/flow-sync-daemon.js +654 -0
- package/scripts/flow-task-analyzer.js +606 -0
- package/scripts/flow-team-dashboard.js +748 -0
- package/scripts/flow-team-sync.js +752 -0
- package/scripts/flow-team.js +977 -0
- package/scripts/flow-tech-options.js +528 -0
- package/scripts/flow-templates.js +812 -0
- package/scripts/flow-tiered-learning.js +728 -0
- package/scripts/flow-trace +204 -0
- package/scripts/flow-transcript-chunking.js +1106 -0
- package/scripts/flow-transcript-digest.js +7918 -0
- package/scripts/flow-transcript-language.js +465 -0
- package/scripts/flow-transcript-parsing.js +1085 -0
- package/scripts/flow-transcript-stories.js +2194 -0
- package/scripts/flow-update-map +224 -0
- package/scripts/flow-utils.js +2242 -0
- package/scripts/flow-verification.js +644 -0
- package/scripts/flow-verify.js +1177 -0
- package/scripts/flow-voice-input.js +638 -0
- package/scripts/flow-watch +168 -0
- package/scripts/flow-workflow-steps.js +521 -0
- package/scripts/flow-workflow.js +1029 -0
- package/scripts/flow-worktree.js +489 -0
- package/scripts/hooks/adapters/base-adapter.js +102 -0
- package/scripts/hooks/adapters/claude-code.js +359 -0
- package/scripts/hooks/adapters/index.js +79 -0
- package/scripts/hooks/core/component-check.js +341 -0
- package/scripts/hooks/core/index.js +35 -0
- package/scripts/hooks/core/loop-check.js +241 -0
- package/scripts/hooks/core/session-context.js +294 -0
- package/scripts/hooks/core/task-gate.js +177 -0
- package/scripts/hooks/core/validation.js +230 -0
- package/scripts/hooks/entry/claude-code/post-tool-use.js +65 -0
- package/scripts/hooks/entry/claude-code/pre-tool-use.js +89 -0
- package/scripts/hooks/entry/claude-code/session-end.js +87 -0
- package/scripts/hooks/entry/claude-code/session-start.js +46 -0
- package/scripts/hooks/entry/claude-code/stop.js +43 -0
- package/scripts/postinstall.js +139 -0
- package/templates/browser-test-flow.json +56 -0
- package/templates/bug-report.md +43 -0
- package/templates/component-detail.md +42 -0
- package/templates/component.stories.tsx +49 -0
- package/templates/context/constraints.md +83 -0
- package/templates/context/conventions.md +177 -0
- package/templates/context/stack.md +60 -0
- package/templates/correction-report.md +90 -0
- package/templates/feature-proposal.md +35 -0
- package/templates/hybrid/_base.md +254 -0
- package/templates/hybrid/_patterns.md +45 -0
- package/templates/hybrid/create-component.md +127 -0
- package/templates/hybrid/create-file.md +56 -0
- package/templates/hybrid/create-hook.md +145 -0
- package/templates/hybrid/create-service.md +70 -0
- package/templates/hybrid/fix-bug.md +33 -0
- package/templates/hybrid/modify-file.md +55 -0
- package/templates/story.md +68 -0
- package/templates/task.json +56 -0
- package/templates/trace.md +69 -0
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Wogi Flow - Create Bug Report
|
|
5
|
+
*
|
|
6
|
+
* Creates a bug report with hash-based ID and discovered-from tracking.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* node scripts/flow-bug.js "<title>" [--from wf-XXXXXXXX] [--priority P0-P4] [--json]
|
|
10
|
+
*
|
|
11
|
+
* Options:
|
|
12
|
+
* --from Task ID that discovered this bug (auto-detected if omitted)
|
|
13
|
+
* --priority Priority level P0-P4 (default: P1 if discovered during task, else P2)
|
|
14
|
+
* --severity Severity: critical, high, medium, low (default: medium)
|
|
15
|
+
* --json Output JSON instead of human-readable
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
const fs = require('fs');
|
|
19
|
+
const path = require('path');
|
|
20
|
+
const {
|
|
21
|
+
PATHS,
|
|
22
|
+
fileExists,
|
|
23
|
+
dirExists,
|
|
24
|
+
writeFile,
|
|
25
|
+
generateTaskId,
|
|
26
|
+
parseFlags,
|
|
27
|
+
outputJson,
|
|
28
|
+
getConfig,
|
|
29
|
+
getConfigValue,
|
|
30
|
+
color,
|
|
31
|
+
success,
|
|
32
|
+
warn,
|
|
33
|
+
info,
|
|
34
|
+
error
|
|
35
|
+
} = require('./flow-utils');
|
|
36
|
+
|
|
37
|
+
// Try to load session state for auto-detecting current task
|
|
38
|
+
let loadSessionState;
|
|
39
|
+
try {
|
|
40
|
+
const sessionModule = require('./flow-session-state');
|
|
41
|
+
loadSessionState = sessionModule.loadSessionState;
|
|
42
|
+
} catch (importError) {
|
|
43
|
+
// Log in debug mode - don't silently hide potential syntax errors
|
|
44
|
+
if (process.env.DEBUG) {
|
|
45
|
+
console.warn(`[DEBUG] Could not load flow-session-state: ${importError.message}`);
|
|
46
|
+
}
|
|
47
|
+
loadSessionState = () => ({});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Get current task from session state (for auto-populating discovered-from)
|
|
52
|
+
*/
|
|
53
|
+
function getCurrentTask() {
|
|
54
|
+
try {
|
|
55
|
+
const sessionState = loadSessionState();
|
|
56
|
+
return sessionState.currentTask || null;
|
|
57
|
+
} catch {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Create bug report content
|
|
64
|
+
*/
|
|
65
|
+
function createBugContent(bug) {
|
|
66
|
+
const {
|
|
67
|
+
id,
|
|
68
|
+
title,
|
|
69
|
+
severity,
|
|
70
|
+
priority,
|
|
71
|
+
discoveredFrom,
|
|
72
|
+
discoveredDuring,
|
|
73
|
+
createdAt
|
|
74
|
+
} = bug;
|
|
75
|
+
|
|
76
|
+
const date = createdAt.split('T')[0];
|
|
77
|
+
const discoveredSection = discoveredFrom
|
|
78
|
+
? `**Discovered From**: ${discoveredFrom}\n**Discovered During**: ${discoveredDuring}\n`
|
|
79
|
+
: '';
|
|
80
|
+
|
|
81
|
+
return `# ${id}: ${title}
|
|
82
|
+
|
|
83
|
+
**Created**: ${date}
|
|
84
|
+
**Status**: Open
|
|
85
|
+
**Severity**: ${severity.charAt(0).toUpperCase() + severity.slice(1)}
|
|
86
|
+
**Priority**: ${priority}
|
|
87
|
+
**Tags**: #bug
|
|
88
|
+
${discoveredSection}
|
|
89
|
+
## Description
|
|
90
|
+
[Clear description of the bug]
|
|
91
|
+
|
|
92
|
+
## Steps to Reproduce
|
|
93
|
+
1. [Step 1]
|
|
94
|
+
2. [Step 2]
|
|
95
|
+
3. [Step 3]
|
|
96
|
+
|
|
97
|
+
## Expected Behavior
|
|
98
|
+
[What should happen]
|
|
99
|
+
|
|
100
|
+
## Actual Behavior
|
|
101
|
+
[What actually happens]
|
|
102
|
+
|
|
103
|
+
## Environment
|
|
104
|
+
- Browser:
|
|
105
|
+
- OS:
|
|
106
|
+
- Version:
|
|
107
|
+
|
|
108
|
+
## Screenshots
|
|
109
|
+
[If applicable]
|
|
110
|
+
|
|
111
|
+
## Possible Fix
|
|
112
|
+
[If you have ideas about what's causing it or how to fix]
|
|
113
|
+
|
|
114
|
+
## Related
|
|
115
|
+
- [Related request-log entries]
|
|
116
|
+
- [Related components from app-map]
|
|
117
|
+
${discoveredFrom ? `- Discovered while working on: ${discoveredFrom}` : ''}
|
|
118
|
+
|
|
119
|
+
## Resolution
|
|
120
|
+
[Fill in when fixed]
|
|
121
|
+
- Fixed in: [commit/PR]
|
|
122
|
+
- Root cause: [explanation]
|
|
123
|
+
`;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Main function
|
|
128
|
+
*/
|
|
129
|
+
function main() {
|
|
130
|
+
const { flags, positional } = parseFlags(process.argv.slice(2));
|
|
131
|
+
|
|
132
|
+
// Handle help
|
|
133
|
+
if (flags.help) {
|
|
134
|
+
console.log(`
|
|
135
|
+
Usage: flow bug "<title>" [options]
|
|
136
|
+
|
|
137
|
+
Create a bug report with automatic tracking.
|
|
138
|
+
|
|
139
|
+
Options:
|
|
140
|
+
--from <id> Task ID that discovered this bug
|
|
141
|
+
--priority <P> Priority P0-P4 (default: P1 if during task, else P2)
|
|
142
|
+
--severity <s> Severity: critical, high, medium, low (default: medium)
|
|
143
|
+
--json Output JSON
|
|
144
|
+
|
|
145
|
+
Examples:
|
|
146
|
+
flow bug "Login button not responding"
|
|
147
|
+
flow bug "Null pointer in Profile API" --from wf-a1b2c3d4 --priority P0
|
|
148
|
+
flow bug "Fix auth header" --severity critical
|
|
149
|
+
`);
|
|
150
|
+
process.exit(0);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Validate title
|
|
154
|
+
const title = positional[0];
|
|
155
|
+
if (!title) {
|
|
156
|
+
error('Title is required');
|
|
157
|
+
console.log('Usage: flow bug "<title>" [--from <task-id>] [--priority P0-P4]');
|
|
158
|
+
process.exit(1);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Ensure bugs directory exists
|
|
162
|
+
if (!dirExists(PATHS.bugs)) {
|
|
163
|
+
fs.mkdirSync(PATHS.bugs, { recursive: true });
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Get current task for auto-detection
|
|
167
|
+
const currentTask = getCurrentTask();
|
|
168
|
+
|
|
169
|
+
// Determine discovered-from (explicit flag or auto-detect)
|
|
170
|
+
const discoveredFrom = flags.from || (currentTask ? currentTask.id : null);
|
|
171
|
+
const discoveredDuring = currentTask ? 'implementation' : null;
|
|
172
|
+
|
|
173
|
+
// Determine priority
|
|
174
|
+
const config = getConfig();
|
|
175
|
+
const defaultPriority = getConfigValue('priorities.defaultPriority', 'P2');
|
|
176
|
+
|
|
177
|
+
let priority = flags.priority;
|
|
178
|
+
if (!priority) {
|
|
179
|
+
// Bugs discovered during task work get higher priority
|
|
180
|
+
priority = discoveredFrom ? 'P1' : defaultPriority;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// Validate priority format
|
|
184
|
+
if (!/^P[0-4]$/.test(priority)) {
|
|
185
|
+
warn(`Invalid priority "${priority}", using ${defaultPriority}`);
|
|
186
|
+
priority = defaultPriority;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Determine severity
|
|
190
|
+
const validSeverities = ['critical', 'high', 'medium', 'low'];
|
|
191
|
+
let severity = (flags.severity || 'medium').toLowerCase();
|
|
192
|
+
if (!validSeverities.includes(severity)) {
|
|
193
|
+
warn(`Invalid severity "${severity}", using medium`);
|
|
194
|
+
severity = 'medium';
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// Generate bug ID
|
|
198
|
+
const id = generateTaskId(title);
|
|
199
|
+
const createdAt = new Date().toISOString();
|
|
200
|
+
|
|
201
|
+
// Create bug object
|
|
202
|
+
const bug = {
|
|
203
|
+
id,
|
|
204
|
+
title,
|
|
205
|
+
severity,
|
|
206
|
+
priority,
|
|
207
|
+
discoveredFrom,
|
|
208
|
+
discoveredDuring,
|
|
209
|
+
status: 'Open',
|
|
210
|
+
createdAt
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
// Write bug file
|
|
214
|
+
const bugPath = path.join(PATHS.bugs, `${id}.md`);
|
|
215
|
+
const content = createBugContent(bug);
|
|
216
|
+
writeFile(bugPath, content);
|
|
217
|
+
|
|
218
|
+
// Output result
|
|
219
|
+
if (flags.json) {
|
|
220
|
+
outputJson({
|
|
221
|
+
success: true,
|
|
222
|
+
bug,
|
|
223
|
+
file: bugPath
|
|
224
|
+
});
|
|
225
|
+
} else {
|
|
226
|
+
console.log('');
|
|
227
|
+
success(`Created: ${id}`);
|
|
228
|
+
console.log(` ${color('cyan', bugPath)}`);
|
|
229
|
+
console.log('');
|
|
230
|
+
console.log(`Title: ${title}`);
|
|
231
|
+
console.log(`Priority: ${priority} | Severity: ${severity}`);
|
|
232
|
+
|
|
233
|
+
if (discoveredFrom) {
|
|
234
|
+
console.log(`Discovered from: ${color('yellow', discoveredFrom)}`);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
console.log('');
|
|
238
|
+
info('Edit the file to add description, steps to reproduce, etc.');
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// Run only when executed directly
|
|
243
|
+
if (require.main === module) {
|
|
244
|
+
main();
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
module.exports = { main, createBugContent, getCurrentTask };
|