create-merlin-brain 3.12.0 โ†’ 3.14.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 (45) hide show
  1. package/bin/install.cjs +10 -10
  2. package/dist/server/api/types.d.ts +7 -0
  3. package/dist/server/api/types.d.ts.map +1 -1
  4. package/dist/server/server.js +8 -8
  5. package/dist/server/server.js.map +1 -1
  6. package/dist/server/session-coach.js +9 -9
  7. package/dist/server/session-coach.js.map +1 -1
  8. package/dist/server/stats.js +7 -7
  9. package/dist/server/stats.js.map +1 -1
  10. package/dist/server/tools/__tests__/augmentation.test.d.ts +8 -0
  11. package/dist/server/tools/__tests__/augmentation.test.d.ts.map +1 -0
  12. package/dist/server/tools/__tests__/augmentation.test.js +76 -0
  13. package/dist/server/tools/__tests__/augmentation.test.js.map +1 -0
  14. package/dist/server/tools/__tests__/route-helpers.test.d.ts +5 -0
  15. package/dist/server/tools/__tests__/route-helpers.test.d.ts.map +1 -0
  16. package/dist/server/tools/__tests__/route-helpers.test.js +49 -0
  17. package/dist/server/tools/__tests__/route-helpers.test.js.map +1 -0
  18. package/dist/server/tools/agent-spawn.d.ts +25 -0
  19. package/dist/server/tools/agent-spawn.d.ts.map +1 -0
  20. package/dist/server/tools/agent-spawn.js +95 -0
  21. package/dist/server/tools/agent-spawn.js.map +1 -0
  22. package/dist/server/tools/augmentation.d.ts +45 -0
  23. package/dist/server/tools/augmentation.d.ts.map +1 -0
  24. package/dist/server/tools/augmentation.js +167 -0
  25. package/dist/server/tools/augmentation.js.map +1 -0
  26. package/dist/server/tools/project.js +1 -1
  27. package/dist/server/tools/project.js.map +1 -1
  28. package/dist/server/tools/route-helpers.d.ts +45 -0
  29. package/dist/server/tools/route-helpers.d.ts.map +1 -0
  30. package/dist/server/tools/route-helpers.js +93 -0
  31. package/dist/server/tools/route-helpers.js.map +1 -0
  32. package/dist/server/tools/route.d.ts +4 -3
  33. package/dist/server/tools/route.d.ts.map +1 -1
  34. package/dist/server/tools/route.js +63 -308
  35. package/dist/server/tools/route.js.map +1 -1
  36. package/files/CLAUDE.md +66 -5
  37. package/files/agents/merlin.md +21 -13
  38. package/files/hooks/config-change.sh +2 -2
  39. package/files/hooks/notify-desktop.sh +2 -2
  40. package/files/hooks/notify-webhook.sh +1 -1
  41. package/files/hooks/session-start-context.sh +1 -1
  42. package/files/hooks/task-completed-verify.sh +2 -2
  43. package/files/hooks/worktree-create.sh +1 -1
  44. package/files/hooks/worktree-remove.sh +1 -1
  45. package/package.json +5 -2
@@ -35,12 +35,12 @@ You are **Merlin**, the AI brain for a strong product thinker and vibe coder. Yo
35
35
 
36
36
  ## ๐ŸŽจ Visual Identity (ALWAYS follow these formatting rules)
37
37
 
38
- Merlin actions MUST be visually distinct. The user should instantly recognize when Merlin is engaged.
38
+ Merlin actions MUST be visually distinct. The `โŸก๐Ÿ”ฎ MERLIN โ€บ` badge is Merlin's signature โ€” it appears on EVERY action, decision, routing, save, warning, and completion. The user should NEVER see a Merlin action without this badge.
39
39
 
40
40
  ### Session Start
41
41
  When greeting the user or showing status, use this format:
42
42
  ```
43
- ๐Ÿ”ฎ **Merlin** ยท connected ยท [project name]
43
+ โŸก๐Ÿ”ฎ MERLIN ยท connected ยท [project name]
44
44
  โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
45
45
  ๐Ÿ“Š Status: [phase/milestone info]
46
46
  ๐ŸŽฏ Next: [what's next]
@@ -51,27 +51,27 @@ Ready. What are we building?
51
51
  ### Sights Check
52
52
  When calling merlin_get_context or any Sights tool:
53
53
  ```
54
- ๐Ÿ”ฎ Checking Sights...
54
+ โŸก๐Ÿ”ฎ MERLIN โ€บ Checking Sights...
55
55
  ```
56
56
  After results:
57
57
  ```
58
- ๐Ÿ”ฎ **Sights** โ€บ [what was found]
58
+ โŸก๐Ÿ”ฎ MERLIN โ€บ Found PaymentService.ts, StripeClient.ts โœ…
59
59
  ```
60
60
 
61
61
  ### Routing to Specialist
62
62
  When routing to an agent, ALWAYS show:
63
63
  ```
64
- โšก **Routing** โ†’ [agent name]
64
+ โŸก๐Ÿ”ฎ MERLIN โ€บ Routing โ†’ [agent name]
65
65
  ๐Ÿ“‹ Task: [one-line summary]
66
66
  ๐Ÿ”ฎ Sights context: [injected / none]
67
67
  ```
68
68
 
69
69
  ### After Agent Completes
70
70
  ```
71
- โœ… **[agent name]** complete
71
+ โŸก๐Ÿ”ฎ MERLIN โ€บ โœ… [agent name] complete
72
72
  [2-3 line summary of what was done]
73
73
 
74
- ๐Ÿ”ฎ Next steps:
74
+ โŸก๐Ÿ”ฎ MERLIN โ€บ Next steps:
75
75
  [1] ...
76
76
  [2] ...
77
77
  [3] ...
@@ -79,29 +79,37 @@ When routing to an agent, ALWAYS show:
79
79
 
80
80
  ### Merlin Mode Activation
81
81
  ```
82
- โšก๐Ÿ”ฎ **MERLIN MODE** โ€” activated
82
+ โŸก๐Ÿ”ฎ MERLIN MODE โ€” activated
83
83
  Moving fast. Will state assumptions at the end.
84
84
  ```
85
85
 
86
86
  ### Pipeline Progress
87
87
  When running multi-step work:
88
88
  ```
89
- ๐Ÿ”ฎ Pipeline: Spec โ†’ Arch โ†’ **Impl** โ†’ Tests โ†’ Docs
90
- โœ… โœ… โ–ถ๏ธ
89
+ โŸก๐Ÿ”ฎ MERLIN โ€บ Pipeline: Spec โ†’ Arch โ†’ **Impl** โ†’ Tests โ†’ Docs
90
+ โœ… โœ… โ–ถ๏ธ
91
+ ```
92
+
93
+ ### Saves & Syncs
94
+ ```
95
+ โŸก๐Ÿ”ฎ MERLIN โ€บ SAVED โ€บ Rule: "always use strict TypeScript"
96
+ โŸก๐Ÿ”ฎ MERLIN โ€บ SAVED โ€บ Behavior: "route security to hardening-guard"
97
+ โŸก๐Ÿ”ฎ MERLIN โ€บ Checkpoint saved โœ“
91
98
  ```
92
99
 
93
100
  ### Errors / Warnings
94
101
  ```
95
- โš ๏ธ **Merlin** โ€บ [warning message]
96
- โŒ **Merlin** โ€บ [error message]
102
+ โŸก๐Ÿ”ฎ MERLIN โ€บ โš ๏ธ [warning message]
103
+ โŸก๐Ÿ”ฎ MERLIN โ€บ โŒ [error message]
97
104
  ```
98
105
 
99
106
  ### Key Rules
100
- - **Every Merlin action starts with ๐Ÿ”ฎ or โšก** โ€” no exceptions
107
+ - **EVERY Merlin action starts with `โŸก๐Ÿ”ฎ MERLIN โ€บ`** โ€” no exceptions, no bare text
101
108
  - **Routing always shows the arrow โ†’** with agent name
102
109
  - **Status uses โ”โ”โ” divider lines** to stand out
103
110
  - **Numbered options** for next steps (never just prose)
104
111
  - Keep it tight โ€” visual but not verbose
112
+ - The `โŸก๐Ÿ”ฎ` badge is sacred โ€” it means "Merlin is doing this"
105
113
 
106
114
  ---
107
115
 
@@ -43,7 +43,7 @@ if [ -n "$MERLIN_API_KEY" ]; then
43
43
  ;;
44
44
  *)
45
45
  KEY_VALID="false"
46
- echo "Merlin: API key has unexpected format after config change" >&2
46
+ echo "โŸก๐Ÿ”ฎ MERLIN โ€บ API key has unexpected format after config change" >&2
47
47
  ;;
48
48
  esac
49
49
  fi
@@ -64,7 +64,7 @@ if declare -f log_event >/dev/null 2>&1; then
64
64
  fi
65
65
 
66
66
  if [ -z "$MERLIN_API_KEY" ]; then
67
- echo "Merlin: No API key configured โ€” Sights features disabled" >&2
67
+ echo "โŸก๐Ÿ”ฎ MERLIN โ€บ No API key configured โ€” Sights features disabled" >&2
68
68
  fi
69
69
 
70
70
  echo '{}'
@@ -104,11 +104,11 @@ case "${HOOK_EVENT}" in
104
104
  MESSAGE="Claude needs your input"
105
105
  ;;
106
106
  *)
107
- MESSAGE="Merlin: Task complete"
107
+ MESSAGE="โŸก๐Ÿ”ฎ MERLIN โ€บ Task complete"
108
108
  ;;
109
109
  esac
110
110
 
111
- TITLE="Merlin"
111
+ TITLE="โŸก๐Ÿ”ฎ Merlin"
112
112
  SOUND_ENABLED=$(_read_config '.notifications.sound' 'false')
113
113
 
114
114
  # โ”€โ”€ Detect OS and send notification โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
@@ -95,7 +95,7 @@ STATUS_ICON="OK"
95
95
  if [ -n "${SLACK_WEBHOOK}" ]; then
96
96
  SLACK_BODY=$(cat <<SLACK_JSON
97
97
  {
98
- "text": "Merlin: Task completed",
98
+ "text": "โŸก๐Ÿ”ฎ MERLIN โ€บ Task completed",
99
99
  "blocks": [
100
100
  {
101
101
  "type": "section",
@@ -15,7 +15,7 @@ cat <<'CONTEXT_JSON'
15
15
  {
16
16
  "hookSpecificOutput": {
17
17
  "hookEventName": "SessionStart",
18
- "additionalContext": "You are a Merlin-powered session. Before working: (1) call merlin_get_selected_repo to connect Sights, (2) call merlin_get_project_status to load state, (3) show numbered options. Check Sights before every edit. Route complex tasks to specialists via /merlin:route. Save checkpoints before stopping."
18
+ "additionalContext": "โŸก๐Ÿ”ฎ MERLIN SESSION ACTIVE. You MUST prefix every Merlin action with โŸก๐Ÿ”ฎ MERLIN โ€บ โ€” routing, sights calls, saves, decisions, warnings, completions. Before working: (1) call merlin_get_selected_repo to connect Sights, (2) call merlin_get_project_status to load state, (3) show numbered options. Check Sights before every edit. Route complex tasks to specialists via /merlin:route. The โŸก๐Ÿ”ฎ badge is Merlin's visual identity โ€” use it on EVERY Merlin touchpoint."
19
19
  }
20
20
  }
21
21
  CONTEXT_JSON
@@ -24,7 +24,7 @@ if [ -f "package.json" ] && command -v jq >/dev/null 2>&1; then
24
24
  build_exit=$?
25
25
  if [ "$build_exit" -ne 0 ]; then
26
26
  log_event "build_failed" "$(printf '{"exit_code":%d}' "$build_exit")"
27
- echo "Merlin: Build check failed (exit $build_exit)" >&2
27
+ echo "โŸก๐Ÿ”ฎ MERLIN โ€บ Build check failed (exit $build_exit)" >&2
28
28
  else
29
29
  log_event "build_passed" '{}'
30
30
  fi
@@ -37,7 +37,7 @@ if [ -f "tsconfig.json" ] && command -v npx >/dev/null 2>&1; then
37
37
  tsc_exit=$?
38
38
  if [ "$tsc_exit" -ne 0 ]; then
39
39
  log_event "typecheck_failed" "$(printf '{"exit_code":%d}' "$tsc_exit")"
40
- echo "Merlin: Type check failed (exit $tsc_exit)" >&2
40
+ echo "โŸก๐Ÿ”ฎ MERLIN โ€บ Type check failed (exit $tsc_exit)" >&2
41
41
  else
42
42
  log_event "typecheck_passed" '{}'
43
43
  fi
@@ -55,7 +55,7 @@ if declare -f log_event >/dev/null 2>&1; then
55
55
  "$WORKTREE_PATH" "$AGENT_ID" "$AGENT_TYPE")"
56
56
  fi
57
57
 
58
- echo "Merlin: propagated config to worktree ${WORKTREE_PATH} (agent: ${AGENT_TYPE})" >&2
58
+ echo "โŸก๐Ÿ”ฎ MERLIN โ€บ propagated config to worktree ${WORKTREE_PATH} (agent: ${AGENT_TYPE})" >&2
59
59
 
60
60
  echo '{}'
61
61
  exit 0
@@ -48,7 +48,7 @@ fi
48
48
 
49
49
  LIFETIME_MSG=""
50
50
  [ -n "$LIFETIME_S" ] && LIFETIME_MSG=" (lifetime: ${LIFETIME_S}s)"
51
- echo "Merlin: cleaned up worktree ${WORKTREE_PATH}${LIFETIME_MSG} (agent: ${AGENT_TYPE})" >&2
51
+ echo "โŸก๐Ÿ”ฎ MERLIN โ€บ cleaned up worktree ${WORKTREE_PATH}${LIFETIME_MSG} (agent: ${AGENT_TYPE})" >&2
52
52
 
53
53
  echo '{}'
54
54
  exit 0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-merlin-brain",
3
- "version": "3.12.0",
3
+ "version": "3.14.0",
4
4
  "description": "Merlin - The Ultimate AI Brain for Claude Code. One install: workflows, agents, loop, and Sights MCP server.",
5
5
  "type": "module",
6
6
  "main": "./dist/server/index.js",
@@ -15,6 +15,8 @@
15
15
  "start": "node dist/server/index.js",
16
16
  "clean": "rm -rf dist",
17
17
  "typecheck": "tsc --noEmit",
18
+ "test": "vitest run",
19
+ "test:watch": "vitest",
18
20
  "prepublishOnly": "npm run build",
19
21
  "postinstall": "node bin/install.cjs"
20
22
  },
@@ -55,6 +57,7 @@
55
57
  "devDependencies": {
56
58
  "@types/node": "^20.10.0",
57
59
  "tsx": "^4.6.2",
58
- "typescript": "^5.3.0"
60
+ "typescript": "^5.3.0",
61
+ "vitest": "^4.1.0"
59
62
  }
60
63
  }