murmur8 4.2.0 → 4.3.1
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/.blueprint/agents/AGENT_SPECIFICATION_ALEX.md +33 -3
- package/.blueprint/features/feature_config-factory/FEATURE_SPEC.md +138 -0
- package/.blueprint/features/feature_config-factory/IMPLEMENTATION_PLAN.md +187 -0
- package/.blueprint/features/feature_config-factory/handoff-nigel.md +57 -0
- package/.blueprint/features/feature_cost-tracking/FEATURE_SPEC.md +216 -0
- package/.blueprint/features/feature_cost-tracking/IMPLEMENTATION_PLAN.md +50 -0
- package/.blueprint/features/feature_diff-preview/FEATURE_SPEC.md +182 -0
- package/.blueprint/features/feature_diff-preview/IMPLEMENTATION_PLAN.md +42 -0
- package/.blueprint/features/feature_extract-prompt-util/FEATURE_SPEC.md +42 -0
- package/.blueprint/features/feature_fix-status-icons/FEATURE_SPEC.md +37 -0
- package/.blueprint/features/feature_murm-subagent/FEATURE_SPEC.md +137 -0
- package/.blueprint/features/feature_murm-subagent/SKILL_CHANGES.md +345 -0
- package/.blueprint/features/feature_split-cli-commands/FEATURE_SPEC.md +125 -0
- package/.blueprint/features/feature_split-cli-commands/IMPLEMENTATION_PLAN.md +119 -0
- package/.blueprint/features/feature_split-cli-commands/handoff-nigel.md +45 -0
- package/.blueprint/features/feature_theme-adoption/FEATURE_SPEC.md +143 -0
- package/.blueprint/features/feature_theme-adoption/IMPLEMENTATION_PLAN.md +68 -0
- package/.blueprint/features/feature_theme-adoption/handoff-nigel.md +35 -0
- package/.blueprint/templates/BACKLOG_TEMPLATE.md +46 -0
- package/README.md +79 -12
- package/SKILL.md +377 -3
- package/bin/cli.js +20 -411
- package/package.json +1 -1
- package/src/commands/cost-config.js +28 -0
- package/src/commands/feedback-config.js +32 -0
- package/src/commands/help.js +86 -0
- package/src/commands/history.js +42 -0
- package/src/commands/init.js +12 -0
- package/src/commands/insights.js +23 -0
- package/src/commands/murm-config.js +52 -0
- package/src/commands/murm.js +109 -0
- package/src/commands/queue.js +19 -0
- package/src/commands/retry-config.js +28 -0
- package/src/commands/stack-config.js +32 -0
- package/src/commands/update.js +12 -0
- package/src/commands/utils.js +25 -0
- package/src/commands/validate.js +15 -0
- package/src/config-factory.js +190 -0
- package/src/cost.js +122 -0
- package/src/diff-preview.js +165 -0
- package/src/feedback.js +5 -2
- package/src/history.js +51 -3
- package/src/index.js +25 -0
- package/src/init.js +1 -15
- package/src/insights.js +19 -16
- package/src/retry.js +5 -2
- package/src/stack.js +4 -1
- package/src/theme.js +6 -5
- package/src/update.js +2 -15
- package/src/utils.js +26 -0
- package/src/validate.js +5 -12
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# Feature Specification — Theme Adoption
|
|
2
|
+
|
|
3
|
+
## 1. Feature Intent
|
|
4
|
+
**Why this feature exists.**
|
|
5
|
+
|
|
6
|
+
- `src/theme.js` provides consistent murmuration-themed formatting (glyphs, colors, progress bars)
|
|
7
|
+
- Currently only used by murm.js for parallel execution output
|
|
8
|
+
- Other CLI output (history, insights, validate, configs) uses plain text
|
|
9
|
+
- Inconsistent visual experience across commands
|
|
10
|
+
- Theme constants and helpers should be reused project-wide
|
|
11
|
+
|
|
12
|
+
> Technical enhancement — adopt theme.js across all CLI output.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 2. Scope
|
|
17
|
+
### In Scope
|
|
18
|
+
- Use `colorize()` for success/error/warning messages across all commands
|
|
19
|
+
- Use `formatStageStart()` pattern for pipeline stage output in SKILL.md execution
|
|
20
|
+
- Use `progressBar()` where applicable (history stats, insights)
|
|
21
|
+
- Use status icons consistently (checkmarks, X marks, warnings)
|
|
22
|
+
- Respect TTY detection for color output
|
|
23
|
+
|
|
24
|
+
### Out of Scope
|
|
25
|
+
- Creating new theme elements
|
|
26
|
+
- Changing the banner or glyph design
|
|
27
|
+
- Adding animation or spinners to non-murm commands
|
|
28
|
+
- Changing the fundamental output structure of commands
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 3. Actors Involved
|
|
33
|
+
**Who interacts with this feature.**
|
|
34
|
+
|
|
35
|
+
- **CLI User**: Sees consistent, themed output across all commands
|
|
36
|
+
- **Developer**: Uses theme.js helpers instead of inline ANSI codes
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 4. Behaviour Overview
|
|
41
|
+
**What the feature does, conceptually.**
|
|
42
|
+
|
|
43
|
+
Before:
|
|
44
|
+
```
|
|
45
|
+
Retry Configuration
|
|
46
|
+
Max retries: 3
|
|
47
|
+
Window size: 10
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
After:
|
|
51
|
+
```
|
|
52
|
+
Retry Configuration
|
|
53
|
+
|
|
54
|
+
Max retries: 3
|
|
55
|
+
Window size: 10
|
|
56
|
+
High failure threshold: 0.2
|
|
57
|
+
|
|
58
|
+
Stage Strategies:
|
|
59
|
+
alex : simplify-prompt -> add-context
|
|
60
|
+
```
|
|
61
|
+
(With colored headers when TTY detected)
|
|
62
|
+
|
|
63
|
+
**Files to update:**
|
|
64
|
+
- `src/validate.js` — use `colorize()` for pass/fail indicators
|
|
65
|
+
- `src/history.js` — use status icons and colors for status display
|
|
66
|
+
- `src/insights.js` — use `colorize()` for recommendations
|
|
67
|
+
- `src/retry.js` — use `colorize()` in `displayConfig()`
|
|
68
|
+
- `src/feedback.js` — use `colorize()` in `displayConfig()`
|
|
69
|
+
- `src/stack.js` — use `colorize()` in `displayStackConfig()`
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 5. State & Lifecycle Interactions
|
|
74
|
+
**How this feature touches the system lifecycle.**
|
|
75
|
+
|
|
76
|
+
- No state changes — output formatting only
|
|
77
|
+
- Respects existing TTY detection patterns
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 6. Rules & Decision Logic
|
|
82
|
+
**New or exercised rules.**
|
|
83
|
+
|
|
84
|
+
| Rule | Description |
|
|
85
|
+
|------|-------------|
|
|
86
|
+
| TTY detection | Use `process.stdout.isTTY` to enable/disable colors |
|
|
87
|
+
| Success indicators | Green checkmark (✓) or `colorize(text, 'green')` |
|
|
88
|
+
| Error indicators | Red X (✗) or `colorize(text, 'red')` |
|
|
89
|
+
| Warning indicators | Yellow warning (⚠) or `colorize(text, 'yellow')` |
|
|
90
|
+
| Headers | Cyan for section headers |
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 7. Dependencies
|
|
95
|
+
**What this feature relies on.**
|
|
96
|
+
|
|
97
|
+
- `src/theme.js` — already exists with all needed exports
|
|
98
|
+
- No new dependencies
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 8. Non-Functional Considerations
|
|
103
|
+
|
|
104
|
+
- **Accessibility**: Plain text fallback when not TTY (pipes, redirects)
|
|
105
|
+
- **Consistency**: Same visual language across all commands
|
|
106
|
+
- **Maintainability**: Centralized theme makes future changes easy
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 9. Assumptions & Open Questions
|
|
111
|
+
|
|
112
|
+
**Assumptions:**
|
|
113
|
+
- All modules can safely import from theme.js without circular dependencies
|
|
114
|
+
- TTY detection is sufficient for determining color support
|
|
115
|
+
|
|
116
|
+
**Open Questions:**
|
|
117
|
+
- Should `STATUS_ICONS` in theme.js be updated from `parallel_*` to `murm_*`? (See fix-status-icons in FEATURE_IDEAS.md)
|
|
118
|
+
- Should a `--no-color` flag be added globally?
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## 10. Impact on System Specification
|
|
123
|
+
|
|
124
|
+
- No impact — visual enhancement only
|
|
125
|
+
- Does not change system boundaries or behaviour
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## 11. Handover to BA (Cass)
|
|
130
|
+
|
|
131
|
+
**Skip Cass stage** — this is a technical enhancement feature with no user stories needed.
|
|
132
|
+
|
|
133
|
+
Direct handover to Nigel for test creation:
|
|
134
|
+
- Tests should verify output includes expected formatting
|
|
135
|
+
- Tests should verify TTY=false produces plain text
|
|
136
|
+
- Tests should verify no regressions in output content
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 12. Change Log (Feature-Level)
|
|
141
|
+
| Date | Change | Reason | Raised By |
|
|
142
|
+
|------|--------|--------|-----------|
|
|
143
|
+
| 2026-03-03 | Initial spec | Consistent CLI theming | Alex |
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Implementation Plan — Theme Adoption
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Adopt theme.js across all CLI output modules for consistent visual formatting. Replace inline ANSI codes with centralized `colorize()` helper.
|
|
5
|
+
|
|
6
|
+
## Changes Required
|
|
7
|
+
|
|
8
|
+
### 1. src/validate.js
|
|
9
|
+
**Current state:** Uses inline ANSI codes for colors
|
|
10
|
+
**Change:** Import `colorize` from theme.js and use it
|
|
11
|
+
|
|
12
|
+
```javascript
|
|
13
|
+
// Before
|
|
14
|
+
const green = useColor ? '\x1b[32m' : '';
|
|
15
|
+
const red = useColor ? '\x1b[31m' : '';
|
|
16
|
+
const reset = useColor ? '\x1b[0m' : '';
|
|
17
|
+
|
|
18
|
+
// After
|
|
19
|
+
const { colorize } = require('./theme');
|
|
20
|
+
// Use colorize(text, 'green', useColor)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### 2. src/insights.js
|
|
24
|
+
**Current state:** No theme imports, plain section headers
|
|
25
|
+
**Change:** Import `colorize`, apply to section headers
|
|
26
|
+
|
|
27
|
+
- Header "Pipeline Insights" - cyan
|
|
28
|
+
- Section headers (BOTTLENECK ANALYSIS, etc.) - cyan
|
|
29
|
+
- Recommendations - yellow
|
|
30
|
+
|
|
31
|
+
### 3. src/retry.js
|
|
32
|
+
**Current state:** Plain text output in displayConfig()
|
|
33
|
+
**Change:** Import `colorize`, apply to header
|
|
34
|
+
|
|
35
|
+
- Header "Retry Configuration" - cyan
|
|
36
|
+
- Section "Stage Strategies" - cyan
|
|
37
|
+
|
|
38
|
+
### 4. src/feedback.js
|
|
39
|
+
**Current state:** Plain text output in displayConfig()
|
|
40
|
+
**Change:** Import `colorize`, apply to header
|
|
41
|
+
|
|
42
|
+
- Header "Feedback Configuration" - cyan
|
|
43
|
+
- Section "Issue Mappings" - cyan
|
|
44
|
+
|
|
45
|
+
### 5. src/stack.js
|
|
46
|
+
**Current state:** Plain text output in displayStackConfig()
|
|
47
|
+
**Change:** Import `colorize`, apply to header
|
|
48
|
+
|
|
49
|
+
- Header "Stack Configuration" - cyan
|
|
50
|
+
|
|
51
|
+
### 6. src/history.js
|
|
52
|
+
**Current state:** Already imports colorize from theme.js
|
|
53
|
+
**Change:** No changes needed - already compliant
|
|
54
|
+
|
|
55
|
+
## TTY Detection Pattern
|
|
56
|
+
All display functions should:
|
|
57
|
+
1. Check `process.stdout.isTTY` to determine if colors should be enabled
|
|
58
|
+
2. Pass this as `useColor` parameter to `colorize()`
|
|
59
|
+
|
|
60
|
+
## Implementation Order
|
|
61
|
+
1. validate.js - Replace inline ANSI with colorize import
|
|
62
|
+
2. insights.js - Add colorize for headers
|
|
63
|
+
3. retry.js - Add colorize for displayConfig
|
|
64
|
+
4. feedback.js - Add colorize for displayConfig
|
|
65
|
+
5. stack.js - Add colorize for displayStackConfig
|
|
66
|
+
|
|
67
|
+
## Testing
|
|
68
|
+
Run `node --test test/feature_theme-adoption.test.js` after each change.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Nigel Handoff — Theme Adoption
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
Created test suite for theme adoption across CLI modules. Tests verify:
|
|
5
|
+
- `colorize()` function usage for colored output
|
|
6
|
+
- TTY detection pattern (useColor parameter)
|
|
7
|
+
- Plain text fallback when colors disabled
|
|
8
|
+
- Consistent status icons (checkmark/X)
|
|
9
|
+
- Section headers in config displays
|
|
10
|
+
|
|
11
|
+
## Test File
|
|
12
|
+
`test/feature_theme-adoption.test.js`
|
|
13
|
+
|
|
14
|
+
## Test Coverage
|
|
15
|
+
| Module | Tests |
|
|
16
|
+
|--------|-------|
|
|
17
|
+
| theme.js | Exports, colorize behavior |
|
|
18
|
+
| validate.js | formatOutput with/without color |
|
|
19
|
+
| insights.js | Section headers |
|
|
20
|
+
| retry.js | displayConfig output |
|
|
21
|
+
| feedback.js | displayConfig output |
|
|
22
|
+
| stack.js | displayStackConfig output |
|
|
23
|
+
|
|
24
|
+
## Implementation Notes for Codey
|
|
25
|
+
1. **validate.js** - Replace inline ANSI codes with `colorize()` import from theme.js
|
|
26
|
+
2. **insights.js** - Add colorize import, apply to section headers (BOTTLENECK ANALYSIS, etc.)
|
|
27
|
+
3. **retry.js** - Add colorize import, theme the header and optionally section labels
|
|
28
|
+
4. **feedback.js** - Add colorize import, theme the header
|
|
29
|
+
5. **stack.js** - Add colorize import, theme the header
|
|
30
|
+
6. **history.js** - Already imports colorize, verify consistent usage
|
|
31
|
+
|
|
32
|
+
## Key Patterns
|
|
33
|
+
- Use `process.stdout.isTTY` to determine `useColor`
|
|
34
|
+
- Pass `useColor` boolean to `colorize(text, color, useColor)`
|
|
35
|
+
- Green for success, red for error, yellow for warning, cyan for headers
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Feature Backlog
|
|
2
|
+
|
|
3
|
+
## Definitions
|
|
4
|
+
|
|
5
|
+
| Priority | Meaning |
|
|
6
|
+
|----------|---------|
|
|
7
|
+
| P0 | Critical — blocker |
|
|
8
|
+
| P1 | High — do soon |
|
|
9
|
+
| P2 | Medium — planned |
|
|
10
|
+
| P3 | Low — future |
|
|
11
|
+
|
|
12
|
+
| Effort | Meaning |
|
|
13
|
+
|--------|---------|
|
|
14
|
+
| S | Small — <1 hour |
|
|
15
|
+
| M | Medium — 1-3 hours |
|
|
16
|
+
| L | Large — 3-8 hours |
|
|
17
|
+
| XL | Extra Large — 1+ days |
|
|
18
|
+
|
|
19
|
+
| Status | Meaning |
|
|
20
|
+
|--------|---------|
|
|
21
|
+
| ⏳ | Ready to implement |
|
|
22
|
+
| 🚧 | In progress |
|
|
23
|
+
| ❓ | Needs clarification |
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Backlog
|
|
28
|
+
|
|
29
|
+
| Status | P | E | Slug | Description |
|
|
30
|
+
|--------|---|---|------|-------------|
|
|
31
|
+
| ⏳ | P1 | M | example-feature | Brief description of what this feature does |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Details
|
|
36
|
+
|
|
37
|
+
### example-feature
|
|
38
|
+
|
|
39
|
+
Additional context only if the one-line description is insufficient. Keep brief.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Notes
|
|
44
|
+
|
|
45
|
+
- Items removed automatically when pipeline completes successfully
|
|
46
|
+
- Run with: `/implement-feature "slug"` or `npx murmur8 murm slug-a slug-b`
|
package/README.md
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
# murmur8
|
|
2
2
|
|
|
3
|
-
A multi-agent workflow framework for automated feature development
|
|
3
|
+
A multi-agent workflow framework for automated feature development. Four specialised AI agents collaborate in sequence to take features from specification to implementation, with built-in feedback loops and self-improvement capabilities.
|
|
4
4
|
|
|
5
5
|
Like a murmuration of starlings, individual agents move together as one, each responding to its neighbours to create something greater than the sum of its parts.
|
|
6
6
|
|
|
7
|
+
# TLDR - Using murmur8
|
|
8
|
+
|
|
9
|
+
## Using murmur8 inside Claude Code or Copilot CLI
|
|
10
|
+
Initialize with `npx murmur8 init`, then run `/implement-feature your-feature` in Claude Code or Copilot CLI. Four AI agents collaborate to turn your idea into tested, working code — from spec to implementation. Add up to 3 feature slugs and the murmuration magic will build them in paralell in an isolated git worktree.
|
|
11
|
+
|
|
12
|
+
## Using murmur8 outside of Claude Code or Copilot CLI
|
|
13
|
+
Initialize with `npx murmur8 init`, then run `npx murmur8 murm feature-a feature-b` from your terminal. Each feature gets an isolated git worktree and runs its own pipeline. Successful features auto-merge to main. Use `--dry-run` to preview the plan first.
|
|
14
|
+
|
|
7
15
|
## Upgrading to v4.0
|
|
8
16
|
|
|
9
17
|
v4.0 completes the murmuration theming by renaming all parallel internals. Existing users should be aware of the following breaking changes.
|
|
@@ -95,7 +103,9 @@ This updates `.blueprint/agents/`, `.blueprint/templates/`, `.blueprint/ways_of_
|
|
|
95
103
|
| Command | Description |
|
|
96
104
|
|---------|-------------|
|
|
97
105
|
| `npx murmur8 history` | View recent pipeline runs |
|
|
106
|
+
| `npx murmur8 history --cost` | View runs with cost breakdown |
|
|
98
107
|
| `npx murmur8 history --stats` | View aggregate statistics |
|
|
108
|
+
| `npx murmur8 history --stats --cost` | View stats with cost metrics |
|
|
99
109
|
| `npx murmur8 history --all` | View all runs |
|
|
100
110
|
| `npx murmur8 history clear` | Clear history |
|
|
101
111
|
| `npx murmur8 history export` | Export history as CSV (default) |
|
|
@@ -128,6 +138,9 @@ This updates `.blueprint/agents/`, `.blueprint/templates/`, `.blueprint/ways_of_
|
|
|
128
138
|
| `npx murmur8 stack-config` | View detected tech stack |
|
|
129
139
|
| `npx murmur8 stack-config set <key> <value>` | Modify stack settings (language, frameworks, testRunner, etc.) |
|
|
130
140
|
| `npx murmur8 stack-config reset` | Reset to empty defaults |
|
|
141
|
+
| `npx murmur8 cost-config` | View cost tracking pricing |
|
|
142
|
+
| `npx murmur8 cost-config set <key> <value>` | Modify pricing (inputPrice, outputPrice) |
|
|
143
|
+
| `npx murmur8 cost-config reset` | Reset to default Claude pricing |
|
|
131
144
|
| `npx murmur8 retry-config` | View retry configuration |
|
|
132
145
|
| `npx murmur8 retry-config set <key> <value>` | Modify retry settings |
|
|
133
146
|
| `npx murmur8 retry-config reset` | Reset to defaults |
|
|
@@ -136,20 +149,22 @@ This updates `.blueprint/agents/`, `.blueprint/templates/`, `.blueprint/ways_of_
|
|
|
136
149
|
| `npx murmur8 murm-config` | View murmuration pipeline configuration |
|
|
137
150
|
| `npx murmur8 murm-config set <key> <value>` | Modify murmuration settings |
|
|
138
151
|
|
|
139
|
-
##
|
|
152
|
+
## Skill usage
|
|
140
153
|
|
|
141
154
|
Run the pipeline with the `/implement-feature` skill in Claude Code:
|
|
142
155
|
|
|
143
156
|
```bash
|
|
144
157
|
/implement-feature # Interactive
|
|
145
|
-
/implement-feature "
|
|
146
|
-
/implement-feature "
|
|
147
|
-
/implement-feature "
|
|
148
|
-
/implement-feature "
|
|
149
|
-
/implement-feature "
|
|
150
|
-
/implement-feature "
|
|
151
|
-
/implement-feature "
|
|
152
|
-
/implement-feature "
|
|
158
|
+
/implement-feature "Your Slug" # New feature
|
|
159
|
+
/implement-feature "Your Slug" --no-feedback # Skip feedback collection
|
|
160
|
+
/implement-feature "Your Slug" --no-validate # Skip pre-flight validation
|
|
161
|
+
/implement-feature "Your Slug" --no-history # Skip history recording
|
|
162
|
+
/implement-feature "Your Slug" --no-commit # Skip auto-commit
|
|
163
|
+
/implement-feature "Your Slug" --no-diff-preview # Skip diff preview before commit
|
|
164
|
+
/implement-feature "Your Slug" --pause-after=alex|cass|nigel|codey-plan
|
|
165
|
+
/implement-feature "Your Slug" --with-stories # Force include Cass stage
|
|
166
|
+
/implement-feature "Your Slug" --skip-stories # Force skip Cass stage
|
|
167
|
+
/implement-feature "Your Slug A" "Your Slug B" "Your Slug C" # Runs murmuration with sub agents within a single instance of the CLI.
|
|
153
168
|
```
|
|
154
169
|
|
|
155
170
|
## Smart Story Routing (v2.7)
|
|
@@ -234,8 +249,15 @@ The pipeline includes validation, smart routing, feedback loops, and history tra
|
|
|
234
249
|
│
|
|
235
250
|
▼
|
|
236
251
|
┌─────────────────────────────────────────────────────────────────┐
|
|
252
|
+
│ Diff Preview (unless --no-diff-preview) │
|
|
253
|
+
│ • Show file changes (added/modified/deleted) │
|
|
254
|
+
│ • User confirms: commit / abort / view full diff │
|
|
255
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
256
|
+
│
|
|
257
|
+
▼
|
|
258
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
237
259
|
│ Auto-commit → Record to History │
|
|
238
|
-
│ • Duration, feedback scores, outcome
|
|
260
|
+
│ • Duration, feedback scores, token cost, outcome │
|
|
239
261
|
└─────────────────────────────────────────────────────────────────┘
|
|
240
262
|
```
|
|
241
263
|
|
|
@@ -246,7 +268,7 @@ murmur8 includes these built-in modules for observability and self-improvement:
|
|
|
246
268
|
| Module | Purpose |
|
|
247
269
|
|--------|---------|
|
|
248
270
|
| **validate** | Pre-flight checks before pipeline runs |
|
|
249
|
-
| **history** | Records execution data (timing, status, feedback) |
|
|
271
|
+
| **history** | Records execution data (timing, status, feedback, cost) |
|
|
250
272
|
| **insights** | Analyzes patterns, detects bottlenecks, recommends improvements |
|
|
251
273
|
| **retry** | Smart retry strategies based on failure history |
|
|
252
274
|
| **feedback** | Agent-to-agent quality assessment with correlation tracking |
|
|
@@ -256,6 +278,8 @@ murmur8 includes these built-in modules for observability and self-improvement:
|
|
|
256
278
|
| **tools** | Tool schemas and validation for Claude native features |
|
|
257
279
|
| **murm** | Murmuration pipeline execution using git worktrees |
|
|
258
280
|
| **stack** | Configurable tech stack detection and configuration |
|
|
281
|
+
| **cost** | Token usage tracking and cost estimation per stage |
|
|
282
|
+
| **diff-preview** | Pre-commit change review with user confirmation |
|
|
259
283
|
|
|
260
284
|
### How They Work Together
|
|
261
285
|
|
|
@@ -264,8 +288,12 @@ Pipeline Run
|
|
|
264
288
|
│
|
|
265
289
|
├──► history.js records timing at each stage
|
|
266
290
|
│
|
|
291
|
+
├──► cost.js tracks token usage per stage
|
|
292
|
+
│
|
|
267
293
|
├──► feedback.js collects quality ratings between stages
|
|
268
294
|
│
|
|
295
|
+
├──► diff-preview.js shows changes before commit
|
|
296
|
+
│
|
|
269
297
|
└──► On completion/failure, data stored in pipeline-history.json
|
|
270
298
|
│
|
|
271
299
|
▼
|
|
@@ -317,6 +345,7 @@ your-project/
|
|
|
317
345
|
│ ├── pipeline-history.json # Execution history (gitignored)
|
|
318
346
|
│ ├── retry-config.json # Retry configuration (gitignored)
|
|
319
347
|
│ ├── feedback-config.json # Feedback thresholds (gitignored)
|
|
348
|
+
│ ├── cost-config.json # Cost tracking pricing (gitignored)
|
|
320
349
|
│ ├── murm-config.json # Murmuration execution config (gitignored)
|
|
321
350
|
│ ├── murm-queue.json # Murmuration pipeline state (gitignored)
|
|
322
351
|
│ ├── stack-config.json # Tech stack configuration (gitignored)
|
|
@@ -410,6 +439,44 @@ Version 2.7 introduces several optimizations to reduce token usage:
|
|
|
410
439
|
|
|
411
440
|
**Total estimated savings: 10,000+ tokens per pipeline run** (more for technical features)
|
|
412
441
|
|
|
442
|
+
## Cost Tracking
|
|
443
|
+
|
|
444
|
+
Track token usage and estimated costs per pipeline stage:
|
|
445
|
+
|
|
446
|
+
```bash
|
|
447
|
+
# View costs in history
|
|
448
|
+
npx murmur8 history --cost
|
|
449
|
+
|
|
450
|
+
SLUG STATUS DURATION TOTAL COST
|
|
451
|
+
user-auth success 12m 30s $0.088
|
|
452
|
+
api-validation success 8m 15s $0.062
|
|
453
|
+
|
|
454
|
+
# View cost statistics
|
|
455
|
+
npx murmur8 history --stats --cost
|
|
456
|
+
|
|
457
|
+
Avg cost per run: $0.075
|
|
458
|
+
Total cost (all runs): $1.12
|
|
459
|
+
Most expensive stage: codey-implement
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
### Configuration
|
|
463
|
+
|
|
464
|
+
Default pricing uses Claude Sonnet rates ($3/M input, $15/M output):
|
|
465
|
+
|
|
466
|
+
```bash
|
|
467
|
+
# View current pricing
|
|
468
|
+
npx murmur8 cost-config
|
|
469
|
+
|
|
470
|
+
# Customize pricing (per million tokens)
|
|
471
|
+
npx murmur8 cost-config set inputPrice 3
|
|
472
|
+
npx murmur8 cost-config set outputPrice 15
|
|
473
|
+
|
|
474
|
+
# Reset to defaults
|
|
475
|
+
npx murmur8 cost-config reset
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
Cost data is stored in `pipeline-history.json` alongside timing and feedback data.
|
|
479
|
+
|
|
413
480
|
## Murmuration
|
|
414
481
|
|
|
415
482
|
Run multiple feature pipelines simultaneously using git worktrees for isolation. Each feature gets its own worktree and branch, allowing true parallel development without conflicts.
|