murmur8 3.5.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 (120) hide show
  1. package/.blueprint/agents/AGENT_BA_CASS.md +239 -0
  2. package/.blueprint/agents/AGENT_DEVELOPER_CODEY.md +308 -0
  3. package/.blueprint/agents/AGENT_SPECIFICATION_ALEX.md +183 -0
  4. package/.blueprint/agents/AGENT_TESTER_NIGEL.md +159 -0
  5. package/.blueprint/agents/GUARDRAILS.md +83 -0
  6. package/.blueprint/agents/TEAM_MANIFESTO.md +91 -0
  7. package/.blueprint/features/.gitkeep +0 -0
  8. package/.blueprint/features/feature_adaptive-retry/FEATURE_SPEC.md +239 -0
  9. package/.blueprint/features/feature_adaptive-retry/IMPLEMENTATION_PLAN.md +48 -0
  10. package/.blueprint/features/feature_adaptive-retry/story-prompt-modification.md +85 -0
  11. package/.blueprint/features/feature_adaptive-retry/story-retry-config.md +89 -0
  12. package/.blueprint/features/feature_adaptive-retry/story-should-retry.md +98 -0
  13. package/.blueprint/features/feature_adaptive-retry/story-strategy-recommendation.md +85 -0
  14. package/.blueprint/features/feature_agent-guardrails/FEATURE_SPEC.md +328 -0
  15. package/.blueprint/features/feature_agent-guardrails/IMPLEMENTATION_PLAN.md +90 -0
  16. package/.blueprint/features/feature_agent-guardrails/story-citation-requirements.md +50 -0
  17. package/.blueprint/features/feature_agent-guardrails/story-confidentiality.md +50 -0
  18. package/.blueprint/features/feature_agent-guardrails/story-escalation-protocol.md +55 -0
  19. package/.blueprint/features/feature_agent-guardrails/story-source-restrictions.md +50 -0
  20. package/.blueprint/features/feature_compressed-feedback/FEATURE_SPEC.md +136 -0
  21. package/.blueprint/features/feature_compressed-feedback/IMPLEMENTATION_PLAN.md +40 -0
  22. package/.blueprint/features/feature_feedback-loop/FEATURE_SPEC.md +347 -0
  23. package/.blueprint/features/feature_feedback-loop/IMPLEMENTATION_PLAN.md +71 -0
  24. package/.blueprint/features/feature_feedback-loop/story-feedback-collection.md +63 -0
  25. package/.blueprint/features/feature_feedback-loop/story-feedback-config.md +61 -0
  26. package/.blueprint/features/feature_feedback-loop/story-feedback-insights.md +63 -0
  27. package/.blueprint/features/feature_feedback-loop/story-quality-gates.md +57 -0
  28. package/.blueprint/features/feature_interactive-alex/FEATURE_SPEC.md +263 -0
  29. package/.blueprint/features/feature_interactive-alex/IMPLEMENTATION_PLAN.md +69 -0
  30. package/.blueprint/features/feature_interactive-alex/handoff-alex.md +19 -0
  31. package/.blueprint/features/feature_interactive-alex/handoff-cass.md +21 -0
  32. package/.blueprint/features/feature_interactive-alex/handoff-nigel.md +19 -0
  33. package/.blueprint/features/feature_interactive-alex/story-flag-routing.md +54 -0
  34. package/.blueprint/features/feature_interactive-alex/story-iterative-drafting.md +65 -0
  35. package/.blueprint/features/feature_interactive-alex/story-pipeline-integration.md +66 -0
  36. package/.blueprint/features/feature_interactive-alex/story-session-lifecycle.md +75 -0
  37. package/.blueprint/features/feature_interactive-alex/story-system-spec-creation.md +57 -0
  38. package/.blueprint/features/feature_lazy-business-context/FEATURE_SPEC.md +140 -0
  39. package/.blueprint/features/feature_lazy-business-context/IMPLEMENTATION_PLAN.md +54 -0
  40. package/.blueprint/features/feature_model-native-features/FEATURE_SPEC.md +174 -0
  41. package/.blueprint/features/feature_model-native-features/IMPLEMENTATION_PLAN.md +45 -0
  42. package/.blueprint/features/feature_parallel-abort/FEATURE_SPEC.md +117 -0
  43. package/.blueprint/features/feature_parallel-confirm/FEATURE_SPEC.md +90 -0
  44. package/.blueprint/features/feature_parallel-features/FEATURE_SPEC.md +291 -0
  45. package/.blueprint/features/feature_parallel-features/IMPLEMENTATION_PLAN.md +73 -0
  46. package/.blueprint/features/feature_parallel-lock/FEATURE_SPEC.md +119 -0
  47. package/.blueprint/features/feature_parallel-logging/FEATURE_SPEC.md +105 -0
  48. package/.blueprint/features/feature_parallel-preflight/FEATURE_SPEC.md +141 -0
  49. package/.blueprint/features/feature_pipeline-history/FEATURE_SPEC.md +239 -0
  50. package/.blueprint/features/feature_pipeline-history/IMPLEMENTATION_PLAN.md +71 -0
  51. package/.blueprint/features/feature_pipeline-history/story-clear-history.md +73 -0
  52. package/.blueprint/features/feature_pipeline-history/story-display-history.md +75 -0
  53. package/.blueprint/features/feature_pipeline-history/story-record-execution.md +76 -0
  54. package/.blueprint/features/feature_pipeline-history/story-show-statistics.md +85 -0
  55. package/.blueprint/features/feature_pipeline-insights/FEATURE_SPEC.md +288 -0
  56. package/.blueprint/features/feature_pipeline-insights/IMPLEMENTATION_PLAN.md +65 -0
  57. package/.blueprint/features/feature_pipeline-insights/story-anomaly-detection.md +71 -0
  58. package/.blueprint/features/feature_pipeline-insights/story-bottleneck-analysis.md +75 -0
  59. package/.blueprint/features/feature_pipeline-insights/story-failure-patterns.md +75 -0
  60. package/.blueprint/features/feature_pipeline-insights/story-json-output.md +75 -0
  61. package/.blueprint/features/feature_pipeline-insights/story-trend-analysis.md +78 -0
  62. package/.blueprint/features/feature_shared-guardrails/FEATURE_SPEC.md +119 -0
  63. package/.blueprint/features/feature_shared-guardrails/IMPLEMENTATION_PLAN.md +34 -0
  64. package/.blueprint/features/feature_shared-guardrails/story-extract-guardrails.md +60 -0
  65. package/.blueprint/features/feature_shared-guardrails/story-update-init-commands.md +63 -0
  66. package/.blueprint/features/feature_slim-agent-prompts/FEATURE_SPEC.md +145 -0
  67. package/.blueprint/features/feature_slim-agent-prompts/IMPLEMENTATION_PLAN.md +87 -0
  68. package/.blueprint/features/feature_slim-agent-prompts/story-create-runtime-prompt-template.md +59 -0
  69. package/.blueprint/features/feature_slim-agent-prompts/story-create-slim-agent-prompts.md +65 -0
  70. package/.blueprint/features/feature_slim-agent-prompts/story-skill-integration.md +53 -0
  71. package/.blueprint/features/feature_smart-story-routing/FEATURE_SPEC.md +147 -0
  72. package/.blueprint/features/feature_smart-story-routing/IMPLEMENTATION_PLAN.md +73 -0
  73. package/.blueprint/features/feature_template-extraction/FEATURE_SPEC.md +134 -0
  74. package/.blueprint/features/feature_template-extraction/IMPLEMENTATION_PLAN.md +46 -0
  75. package/.blueprint/features/feature_upstream-summaries/FEATURE_SPEC.md +150 -0
  76. package/.blueprint/features/feature_upstream-summaries/IMPLEMENTATION_PLAN.md +70 -0
  77. package/.blueprint/features/feature_validate-command/FEATURE_SPEC.md +209 -0
  78. package/.blueprint/features/feature_validate-command/IMPLEMENTATION_PLAN.md +59 -0
  79. package/.blueprint/features/feature_validate-command/story-failure-output.md +61 -0
  80. package/.blueprint/features/feature_validate-command/story-node-version-check.md +52 -0
  81. package/.blueprint/features/feature_validate-command/story-run-validation.md +59 -0
  82. package/.blueprint/features/feature_validate-command/story-success-output.md +50 -0
  83. package/.blueprint/prompts/TEMPLATE.md +65 -0
  84. package/.blueprint/prompts/alex-runtime.md +49 -0
  85. package/.blueprint/prompts/cass-runtime.md +46 -0
  86. package/.blueprint/prompts/codey-implement-runtime.md +52 -0
  87. package/.blueprint/prompts/codey-plan-runtime.md +47 -0
  88. package/.blueprint/prompts/nigel-runtime.md +47 -0
  89. package/.blueprint/system_specification/.gitkeep +0 -0
  90. package/.blueprint/system_specification/SYSTEM_SPEC.md +248 -0
  91. package/.blueprint/templates/FEATURE_SPEC.md +125 -0
  92. package/.blueprint/templates/STORY_TEMPLATE.md +96 -0
  93. package/.blueprint/templates/SYSTEM_SPEC.md +128 -0
  94. package/.blueprint/templates/TEST_TEMPLATE.md +76 -0
  95. package/.blueprint/ways_of_working/DEVELOPMENT_RITUAL.md +178 -0
  96. package/.business_context/README.md +27 -0
  97. package/LICENSE +21 -0
  98. package/README.md +564 -0
  99. package/SKILL.md +840 -0
  100. package/bin/cli.js +388 -0
  101. package/package.json +36 -0
  102. package/src/business-context.js +91 -0
  103. package/src/classifier.js +173 -0
  104. package/src/feedback.js +201 -0
  105. package/src/handoff.js +148 -0
  106. package/src/history.js +306 -0
  107. package/src/index.js +170 -0
  108. package/src/init.js +139 -0
  109. package/src/insights.js +504 -0
  110. package/src/interactive.js +338 -0
  111. package/src/orchestrator.js +217 -0
  112. package/src/parallel.js +1544 -0
  113. package/src/retry.js +274 -0
  114. package/src/stack.js +320 -0
  115. package/src/tools/index.js +27 -0
  116. package/src/tools/prompts.js +45 -0
  117. package/src/tools/schemas.js +38 -0
  118. package/src/tools/validation.js +83 -0
  119. package/src/update.js +112 -0
  120. package/src/validate.js +172 -0
package/src/index.js ADDED
@@ -0,0 +1,170 @@
1
+ const { init } = require('./init');
2
+ const { update } = require('./update');
3
+ const { validate, formatOutput, checkNodeVersion } = require('./validate');
4
+ const { recordHistory, displayHistory, showStats, clearHistory, storeStageFeedback } = require('./history');
5
+ const {
6
+ readConfig,
7
+ writeConfig,
8
+ resetConfig,
9
+ calculateFailureRate,
10
+ recommendStrategy,
11
+ applyStrategy,
12
+ shouldRetry,
13
+ mapIssuesToStrategies
14
+ } = require('./retry');
15
+ const {
16
+ validateFeedback,
17
+ shouldPause,
18
+ getDefaultConfig: getFeedbackDefaultConfig,
19
+ readConfig: readFeedbackConfig,
20
+ writeConfig: writeFeedbackConfig
21
+ } = require('./feedback');
22
+ const {
23
+ calculateCalibration,
24
+ correlateIssues,
25
+ recommendThreshold,
26
+ displayFeedbackInsights
27
+ } = require('./insights');
28
+ const {
29
+ parseHandoffSummary,
30
+ extractSection,
31
+ countBulletItems,
32
+ extractFilePaths,
33
+ validateHandoffSummary,
34
+ getHandoffPath,
35
+ getHandoffTemplate
36
+ } = require('./handoff');
37
+ const {
38
+ needsBusinessContext,
39
+ parseIncludeBusinessContextFlag,
40
+ shouldIncludeBusinessContext,
41
+ buildQueueState,
42
+ generateBusinessContextDirective
43
+ } = require('./business-context');
44
+ const {
45
+ classifyFeature,
46
+ parseStoryFlags,
47
+ shouldIncludeStories,
48
+ buildClassifiedQueueState,
49
+ logClassification,
50
+ TECHNICAL_KEYWORDS,
51
+ USER_FACING_KEYWORDS
52
+ } = require('./classifier');
53
+ const {
54
+ parseFlags: parseInteractiveFlags,
55
+ shouldEnterInteractiveMode,
56
+ createSession,
57
+ getSessionProgress,
58
+ handleCommand,
59
+ getNextSection,
60
+ markSectionComplete,
61
+ markSectionTBD,
62
+ gatherContext,
63
+ identifyGaps,
64
+ generateQuestions,
65
+ canFinalize,
66
+ generateSpec,
67
+ writeSpec,
68
+ generateHandoff,
69
+ getOutputPath,
70
+ SESSION_STATES,
71
+ SECTION_ORDER,
72
+ MIN_REQUIRED_SECTIONS,
73
+ SYSTEM_SPEC_QUESTIONS
74
+ } = require('./interactive');
75
+ const {
76
+ getDefaultStackConfig,
77
+ readStackConfig,
78
+ writeStackConfig,
79
+ resetStackConfig,
80
+ setStackConfigValue,
81
+ detectStackConfig,
82
+ displayStackConfig
83
+ } = require('./stack');
84
+ const tools = require('./tools');
85
+
86
+ module.exports = {
87
+ init,
88
+ update,
89
+ validate,
90
+ formatOutput,
91
+ checkNodeVersion,
92
+ recordHistory,
93
+ displayHistory,
94
+ showStats,
95
+ clearHistory,
96
+ storeStageFeedback,
97
+ // Retry module exports
98
+ readConfig,
99
+ writeConfig,
100
+ resetConfig,
101
+ calculateFailureRate,
102
+ recommendStrategy,
103
+ applyStrategy,
104
+ shouldRetry,
105
+ mapIssuesToStrategies,
106
+ // Feedback module exports
107
+ validateFeedback,
108
+ shouldPause,
109
+ getFeedbackDefaultConfig,
110
+ readFeedbackConfig,
111
+ writeFeedbackConfig,
112
+ // Feedback insights exports
113
+ calculateCalibration,
114
+ correlateIssues,
115
+ recommendThreshold,
116
+ displayFeedbackInsights,
117
+ // Handoff summary exports
118
+ parseHandoffSummary,
119
+ extractSection,
120
+ countBulletItems,
121
+ extractFilePaths,
122
+ validateHandoffSummary,
123
+ getHandoffPath,
124
+ getHandoffTemplate,
125
+ // Business context exports
126
+ needsBusinessContext,
127
+ parseIncludeBusinessContextFlag,
128
+ shouldIncludeBusinessContext,
129
+ buildQueueState,
130
+ generateBusinessContextDirective,
131
+ // Classifier module exports (smart story routing)
132
+ classifyFeature,
133
+ parseStoryFlags,
134
+ shouldIncludeStories,
135
+ buildClassifiedQueueState,
136
+ logClassification,
137
+ TECHNICAL_KEYWORDS,
138
+ USER_FACING_KEYWORDS,
139
+ // Stack config exports
140
+ getDefaultStackConfig,
141
+ readStackConfig,
142
+ writeStackConfig,
143
+ resetStackConfig,
144
+ setStackConfigValue,
145
+ detectStackConfig,
146
+ displayStackConfig,
147
+ // Tools module (model native features)
148
+ tools,
149
+ // Interactive mode exports
150
+ parseInteractiveFlags,
151
+ shouldEnterInteractiveMode,
152
+ createSession,
153
+ getSessionProgress,
154
+ handleCommand,
155
+ getNextSection,
156
+ markSectionComplete,
157
+ markSectionTBD,
158
+ gatherContext,
159
+ identifyGaps,
160
+ generateQuestions,
161
+ canFinalize,
162
+ generateSpec,
163
+ writeSpec,
164
+ generateHandoff,
165
+ getOutputPath,
166
+ SESSION_STATES,
167
+ SECTION_ORDER,
168
+ MIN_REQUIRED_SECTIONS,
169
+ SYSTEM_SPEC_QUESTIONS
170
+ };
package/src/init.js ADDED
@@ -0,0 +1,139 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+ const readline = require('readline');
4
+
5
+ const { detectStackConfig, writeStackConfig, CONFIG_FILE: STACK_CONFIG_FILE } = require('./stack');
6
+
7
+ const PACKAGE_ROOT = path.resolve(__dirname, '..');
8
+ const TARGET_DIR = process.cwd();
9
+
10
+ async function prompt(question) {
11
+ const rl = readline.createInterface({
12
+ input: process.stdin,
13
+ output: process.stdout
14
+ });
15
+
16
+ return new Promise((resolve) => {
17
+ rl.question(question, (answer) => {
18
+ rl.close();
19
+ resolve(answer.toLowerCase().trim());
20
+ });
21
+ });
22
+ }
23
+
24
+ function copyDir(src, dest) {
25
+ fs.mkdirSync(dest, { recursive: true });
26
+
27
+ const entries = fs.readdirSync(src, { withFileTypes: true });
28
+
29
+ for (const entry of entries) {
30
+ const srcPath = path.join(src, entry.name);
31
+ const destPath = path.join(dest, entry.name);
32
+
33
+ if (entry.isDirectory()) {
34
+ copyDir(srcPath, destPath);
35
+ } else {
36
+ fs.copyFileSync(srcPath, destPath);
37
+ }
38
+ }
39
+ }
40
+
41
+ function updateGitignore() {
42
+ const gitignorePath = path.join(TARGET_DIR, '.gitignore');
43
+ const entriesToAdd = [
44
+ '# agent-workflow',
45
+ '.claude/implement-queue.json',
46
+ '.claude/pipeline-history.json',
47
+ '.claude/stack-config.json'
48
+ ];
49
+
50
+ let content = '';
51
+ if (fs.existsSync(gitignorePath)) {
52
+ content = fs.readFileSync(gitignorePath, 'utf8');
53
+ }
54
+
55
+ const newEntries = entriesToAdd.filter(entry => !content.includes(entry));
56
+
57
+ if (newEntries.length > 0) {
58
+ const addition = '\n' + newEntries.join('\n') + '\n';
59
+ fs.appendFileSync(gitignorePath, addition);
60
+ console.log('Updated .gitignore');
61
+ }
62
+ }
63
+
64
+ async function init() {
65
+ const blueprintSrc = path.join(PACKAGE_ROOT, '.blueprint');
66
+ const blueprintDest = path.join(TARGET_DIR, '.blueprint');
67
+ const businessContextSrc = path.join(PACKAGE_ROOT, '.business_context');
68
+ const businessContextDest = path.join(TARGET_DIR, '.business_context');
69
+ const skillSrc = path.join(PACKAGE_ROOT, 'SKILL.md');
70
+ const claudeCommandsDir = path.join(TARGET_DIR, '.claude', 'commands');
71
+ const skillCommandDest = path.join(claudeCommandsDir, 'implement-feature.md');
72
+
73
+ // Check if .blueprint already exists
74
+ if (fs.existsSync(blueprintDest)) {
75
+ const answer = await prompt('.blueprint directory already exists. Overwrite? (y/N): ');
76
+ if (answer !== 'y' && answer !== 'yes') {
77
+ console.log('Aborted. Use "agent-workflow update" to update existing installation.');
78
+ return;
79
+ }
80
+ fs.rmSync(blueprintDest, { recursive: true });
81
+ }
82
+
83
+ // Copy skill to .claude/commands/ for Claude Code discovery
84
+ fs.mkdirSync(claudeCommandsDir, { recursive: true });
85
+ if (fs.existsSync(skillCommandDest)) {
86
+ const answer = await prompt('.claude/commands/implement-feature.md already exists. Overwrite? (y/N): ');
87
+ if (answer !== 'y' && answer !== 'yes') {
88
+ console.log('Skipping skill command');
89
+ } else {
90
+ fs.copyFileSync(skillSrc, skillCommandDest);
91
+ console.log('Copied skill to .claude/commands/implement-feature.md');
92
+ }
93
+ } else {
94
+ fs.copyFileSync(skillSrc, skillCommandDest);
95
+ console.log('Copied skill to .claude/commands/implement-feature.md');
96
+ }
97
+
98
+ // Copy .blueprint directory
99
+ console.log('Copying .blueprint directory...');
100
+ copyDir(blueprintSrc, blueprintDest);
101
+ console.log('Copied .blueprint directory');
102
+
103
+ // Copy .business_context directory
104
+ if (!fs.existsSync(businessContextDest)) {
105
+ console.log('Copying .business_context directory...');
106
+ copyDir(businessContextSrc, businessContextDest);
107
+ console.log('Copied .business_context directory');
108
+ } else {
109
+ console.log('.business_context directory already exists, skipping');
110
+ }
111
+
112
+ // Update .gitignore
113
+ updateGitignore();
114
+
115
+ // Auto-detect tech stack
116
+ const stackConfigPath = path.join(TARGET_DIR, STACK_CONFIG_FILE);
117
+ if (!fs.existsSync(stackConfigPath)) {
118
+ const detected = detectStackConfig(TARGET_DIR);
119
+ const hasValues = detected.language || detected.runtime;
120
+ if (hasValues) {
121
+ writeStackConfig(detected);
122
+ const parts = [detected.language, detected.runtime, ...detected.frameworks, detected.testRunner].filter(Boolean);
123
+ console.log(`Detected tech stack: ${parts.join(', ')}`);
124
+ }
125
+ } else {
126
+ console.log('Stack config already exists, skipping detection');
127
+ }
128
+
129
+ console.log(`
130
+ murmur8 initialized successfully!
131
+
132
+ Next steps:
133
+ 1. Review your tech stack with \`npx murmur8 stack-config\`
134
+ 2. Add business context documents to .business_context/
135
+ 3. Run /implement-feature in Claude Code to start your first feature
136
+ `);
137
+ }
138
+
139
+ module.exports = { init };