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.
Files changed (221) hide show
  1. package/.workflow/agents/reviewer.md +81 -0
  2. package/.workflow/agents/security.md +94 -0
  3. package/.workflow/agents/story-writer.md +58 -0
  4. package/.workflow/bridges/base-bridge.js +395 -0
  5. package/.workflow/bridges/claude-bridge.js +434 -0
  6. package/.workflow/bridges/index.js +130 -0
  7. package/.workflow/lib/assumption-detector.js +481 -0
  8. package/.workflow/lib/config-substitution.js +371 -0
  9. package/.workflow/lib/failure-categories.js +478 -0
  10. package/.workflow/state/app-map.md.template +15 -0
  11. package/.workflow/state/architecture.md.template +24 -0
  12. package/.workflow/state/component-index.json.template +5 -0
  13. package/.workflow/state/decisions.md.template +15 -0
  14. package/.workflow/state/feedback-patterns.md.template +9 -0
  15. package/.workflow/state/knowledge-sync.json.template +6 -0
  16. package/.workflow/state/progress.md.template +14 -0
  17. package/.workflow/state/ready.json.template +7 -0
  18. package/.workflow/state/request-log.md.template +14 -0
  19. package/.workflow/state/session-state.json.template +11 -0
  20. package/.workflow/state/stack.md.template +33 -0
  21. package/.workflow/state/testing.md.template +36 -0
  22. package/.workflow/templates/claude-md.hbs +257 -0
  23. package/.workflow/templates/correction-report.md +67 -0
  24. package/.workflow/templates/gemini-md.hbs +52 -0
  25. package/README.md +1802 -0
  26. package/bin/flow +205 -0
  27. package/lib/index.js +33 -0
  28. package/lib/installer.js +467 -0
  29. package/lib/release-channel.js +269 -0
  30. package/lib/skill-registry.js +526 -0
  31. package/lib/upgrader.js +401 -0
  32. package/lib/utils.js +305 -0
  33. package/package.json +64 -0
  34. package/scripts/flow +985 -0
  35. package/scripts/flow-adaptive-learning.js +1259 -0
  36. package/scripts/flow-aggregate.js +488 -0
  37. package/scripts/flow-archive +133 -0
  38. package/scripts/flow-auto-context.js +1015 -0
  39. package/scripts/flow-auto-learn.js +615 -0
  40. package/scripts/flow-bridge.js +223 -0
  41. package/scripts/flow-browser-suggest.js +316 -0
  42. package/scripts/flow-bug.js +247 -0
  43. package/scripts/flow-cascade.js +711 -0
  44. package/scripts/flow-changelog +85 -0
  45. package/scripts/flow-checkpoint.js +483 -0
  46. package/scripts/flow-cli.js +403 -0
  47. package/scripts/flow-code-intelligence.js +760 -0
  48. package/scripts/flow-complexity.js +502 -0
  49. package/scripts/flow-config-set.js +152 -0
  50. package/scripts/flow-constants.js +157 -0
  51. package/scripts/flow-context +152 -0
  52. package/scripts/flow-context-init.js +482 -0
  53. package/scripts/flow-context-monitor.js +384 -0
  54. package/scripts/flow-context-scoring.js +886 -0
  55. package/scripts/flow-correct.js +458 -0
  56. package/scripts/flow-damage-control.js +985 -0
  57. package/scripts/flow-deps +101 -0
  58. package/scripts/flow-diff.js +700 -0
  59. package/scripts/flow-done +151 -0
  60. package/scripts/flow-done.js +489 -0
  61. package/scripts/flow-durable-session.js +1541 -0
  62. package/scripts/flow-entropy-monitor.js +345 -0
  63. package/scripts/flow-export-profile +349 -0
  64. package/scripts/flow-export-scanner.js +1046 -0
  65. package/scripts/flow-figma-confirm.js +400 -0
  66. package/scripts/flow-figma-extract.js +496 -0
  67. package/scripts/flow-figma-generate.js +683 -0
  68. package/scripts/flow-figma-index.js +909 -0
  69. package/scripts/flow-figma-match.js +617 -0
  70. package/scripts/flow-figma-mcp-server.js +518 -0
  71. package/scripts/flow-figma-pipeline.js +414 -0
  72. package/scripts/flow-file-ops.js +301 -0
  73. package/scripts/flow-gate-confidence.js +825 -0
  74. package/scripts/flow-guided-edit.js +659 -0
  75. package/scripts/flow-health +185 -0
  76. package/scripts/flow-health.js +413 -0
  77. package/scripts/flow-hooks.js +556 -0
  78. package/scripts/flow-http-client.js +249 -0
  79. package/scripts/flow-hybrid-detect.js +167 -0
  80. package/scripts/flow-hybrid-interactive.js +591 -0
  81. package/scripts/flow-hybrid-test.js +152 -0
  82. package/scripts/flow-import-profile +439 -0
  83. package/scripts/flow-init +253 -0
  84. package/scripts/flow-instruction-richness.js +827 -0
  85. package/scripts/flow-jira-integration.js +579 -0
  86. package/scripts/flow-knowledge-router.js +522 -0
  87. package/scripts/flow-knowledge-sync.js +589 -0
  88. package/scripts/flow-linear-integration.js +631 -0
  89. package/scripts/flow-links.js +774 -0
  90. package/scripts/flow-log-manager.js +559 -0
  91. package/scripts/flow-loop-enforcer.js +1246 -0
  92. package/scripts/flow-loop-retry-learning.js +630 -0
  93. package/scripts/flow-lsp.js +923 -0
  94. package/scripts/flow-map-index +348 -0
  95. package/scripts/flow-map-sync +201 -0
  96. package/scripts/flow-memory-blocks.js +668 -0
  97. package/scripts/flow-memory-compactor.js +350 -0
  98. package/scripts/flow-memory-db.js +1110 -0
  99. package/scripts/flow-memory-sync.js +484 -0
  100. package/scripts/flow-metrics.js +353 -0
  101. package/scripts/flow-migrate-ids.js +370 -0
  102. package/scripts/flow-model-adapter.js +802 -0
  103. package/scripts/flow-model-router.js +884 -0
  104. package/scripts/flow-models.js +1231 -0
  105. package/scripts/flow-morning.js +517 -0
  106. package/scripts/flow-multi-approach.js +660 -0
  107. package/scripts/flow-new-feature +86 -0
  108. package/scripts/flow-onboard +1042 -0
  109. package/scripts/flow-orchestrate-llm.js +459 -0
  110. package/scripts/flow-orchestrate.js +3592 -0
  111. package/scripts/flow-output.js +123 -0
  112. package/scripts/flow-parallel-detector.js +399 -0
  113. package/scripts/flow-parallel-dispatch.js +987 -0
  114. package/scripts/flow-parallel.js +428 -0
  115. package/scripts/flow-pattern-enforcer.js +600 -0
  116. package/scripts/flow-prd-manager.js +282 -0
  117. package/scripts/flow-progress.js +323 -0
  118. package/scripts/flow-project-analyzer.js +975 -0
  119. package/scripts/flow-prompt-composer.js +487 -0
  120. package/scripts/flow-providers.js +1381 -0
  121. package/scripts/flow-queue.js +308 -0
  122. package/scripts/flow-ready +82 -0
  123. package/scripts/flow-ready.js +189 -0
  124. package/scripts/flow-regression.js +396 -0
  125. package/scripts/flow-response-parser.js +450 -0
  126. package/scripts/flow-resume.js +284 -0
  127. package/scripts/flow-rules-sync.js +439 -0
  128. package/scripts/flow-run-trace.js +718 -0
  129. package/scripts/flow-safety.js +587 -0
  130. package/scripts/flow-search +104 -0
  131. package/scripts/flow-security.js +481 -0
  132. package/scripts/flow-session-end +106 -0
  133. package/scripts/flow-session-end.js +437 -0
  134. package/scripts/flow-session-state.js +671 -0
  135. package/scripts/flow-setup-hooks +216 -0
  136. package/scripts/flow-setup-hooks.js +377 -0
  137. package/scripts/flow-skill-create.js +329 -0
  138. package/scripts/flow-skill-creator.js +572 -0
  139. package/scripts/flow-skill-generator.js +1046 -0
  140. package/scripts/flow-skill-learn.js +880 -0
  141. package/scripts/flow-skill-matcher.js +578 -0
  142. package/scripts/flow-spec-generator.js +820 -0
  143. package/scripts/flow-stack-wizard.js +895 -0
  144. package/scripts/flow-standup +162 -0
  145. package/scripts/flow-start +74 -0
  146. package/scripts/flow-start.js +235 -0
  147. package/scripts/flow-status +110 -0
  148. package/scripts/flow-status.js +301 -0
  149. package/scripts/flow-step-browser.js +83 -0
  150. package/scripts/flow-step-changelog.js +217 -0
  151. package/scripts/flow-step-comments.js +306 -0
  152. package/scripts/flow-step-complexity.js +234 -0
  153. package/scripts/flow-step-coverage.js +218 -0
  154. package/scripts/flow-step-knowledge.js +193 -0
  155. package/scripts/flow-step-pr-tests.js +364 -0
  156. package/scripts/flow-step-regression.js +89 -0
  157. package/scripts/flow-step-review.js +516 -0
  158. package/scripts/flow-step-security.js +162 -0
  159. package/scripts/flow-step-silent-failures.js +290 -0
  160. package/scripts/flow-step-simplifier.js +346 -0
  161. package/scripts/flow-story +105 -0
  162. package/scripts/flow-story.js +500 -0
  163. package/scripts/flow-suspend.js +252 -0
  164. package/scripts/flow-sync-daemon.js +654 -0
  165. package/scripts/flow-task-analyzer.js +606 -0
  166. package/scripts/flow-team-dashboard.js +748 -0
  167. package/scripts/flow-team-sync.js +752 -0
  168. package/scripts/flow-team.js +977 -0
  169. package/scripts/flow-tech-options.js +528 -0
  170. package/scripts/flow-templates.js +812 -0
  171. package/scripts/flow-tiered-learning.js +728 -0
  172. package/scripts/flow-trace +204 -0
  173. package/scripts/flow-transcript-chunking.js +1106 -0
  174. package/scripts/flow-transcript-digest.js +7918 -0
  175. package/scripts/flow-transcript-language.js +465 -0
  176. package/scripts/flow-transcript-parsing.js +1085 -0
  177. package/scripts/flow-transcript-stories.js +2194 -0
  178. package/scripts/flow-update-map +224 -0
  179. package/scripts/flow-utils.js +2242 -0
  180. package/scripts/flow-verification.js +644 -0
  181. package/scripts/flow-verify.js +1177 -0
  182. package/scripts/flow-voice-input.js +638 -0
  183. package/scripts/flow-watch +168 -0
  184. package/scripts/flow-workflow-steps.js +521 -0
  185. package/scripts/flow-workflow.js +1029 -0
  186. package/scripts/flow-worktree.js +489 -0
  187. package/scripts/hooks/adapters/base-adapter.js +102 -0
  188. package/scripts/hooks/adapters/claude-code.js +359 -0
  189. package/scripts/hooks/adapters/index.js +79 -0
  190. package/scripts/hooks/core/component-check.js +341 -0
  191. package/scripts/hooks/core/index.js +35 -0
  192. package/scripts/hooks/core/loop-check.js +241 -0
  193. package/scripts/hooks/core/session-context.js +294 -0
  194. package/scripts/hooks/core/task-gate.js +177 -0
  195. package/scripts/hooks/core/validation.js +230 -0
  196. package/scripts/hooks/entry/claude-code/post-tool-use.js +65 -0
  197. package/scripts/hooks/entry/claude-code/pre-tool-use.js +89 -0
  198. package/scripts/hooks/entry/claude-code/session-end.js +87 -0
  199. package/scripts/hooks/entry/claude-code/session-start.js +46 -0
  200. package/scripts/hooks/entry/claude-code/stop.js +43 -0
  201. package/scripts/postinstall.js +139 -0
  202. package/templates/browser-test-flow.json +56 -0
  203. package/templates/bug-report.md +43 -0
  204. package/templates/component-detail.md +42 -0
  205. package/templates/component.stories.tsx +49 -0
  206. package/templates/context/constraints.md +83 -0
  207. package/templates/context/conventions.md +177 -0
  208. package/templates/context/stack.md +60 -0
  209. package/templates/correction-report.md +90 -0
  210. package/templates/feature-proposal.md +35 -0
  211. package/templates/hybrid/_base.md +254 -0
  212. package/templates/hybrid/_patterns.md +45 -0
  213. package/templates/hybrid/create-component.md +127 -0
  214. package/templates/hybrid/create-file.md +56 -0
  215. package/templates/hybrid/create-hook.md +145 -0
  216. package/templates/hybrid/create-service.md +70 -0
  217. package/templates/hybrid/fix-bug.md +33 -0
  218. package/templates/hybrid/modify-file.md +55 -0
  219. package/templates/story.md +68 -0
  220. package/templates/task.json +56 -0
  221. 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 };