@adaptic/maestro 1.8.2 → 1.8.3

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 (43) hide show
  1. package/bin/maestro.mjs +15 -3
  2. package/package.json +1 -1
  3. package/plugins/maestro-skills/skills/board-deck.md +2 -2
  4. package/plugins/maestro-skills/skills/decision-brief.md +6 -6
  5. package/plugins/maestro-skills/skills/draft-comms.md +9 -9
  6. package/plugins/maestro-skills/skills/evening-wrap.md +2 -2
  7. package/plugins/maestro-skills/skills/hiring-triage.md +4 -4
  8. package/plugins/maestro-skills/skills/inbox-triage.md +5 -5
  9. package/plugins/maestro-skills/skills/morning-brief.md +4 -4
  10. package/plugins/maestro-skills/skills/pipeline-review.md +2 -2
  11. package/plugins/maestro-skills/skills/regulatory-status.md +2 -2
  12. package/plugins/maestro-skills/skills/schedule-meeting.md +3 -3
  13. package/plugins/maestro-skills/skills/slack-followup.md +5 -5
  14. package/plugins/maestro-skills/skills/weekly-memo.md +5 -5
  15. package/scaffold/CLAUDE.md +21 -0
  16. package/scripts/daemon/classifier.mjs +21 -5
  17. package/scripts/hooks/block-mcp-slack-send.sh +1 -1
  18. package/scripts/huddle/audio-bridge.mjs +17 -17
  19. package/scripts/huddle/boot-slack-cdp.sh +1 -1
  20. package/scripts/huddle/huddle-controller.mjs +3 -3
  21. package/scripts/huddle/huddle-server.mjs +21 -7
  22. package/scripts/huddle/launch-slack.sh +2 -2
  23. package/scripts/huddle/package-lock.json +2 -2
  24. package/scripts/huddle/package.json +2 -2
  25. package/scripts/huddle/setup-audio.sh +6 -6
  26. package/scripts/huddle/start-call.mjs +2 -2
  27. package/scripts/huddle/test-pipeline.mjs +2 -2
  28. package/scripts/parse-voice-transcript.mjs +4 -9
  29. package/scripts/poller/gmail-poller.mjs +8 -2
  30. package/scripts/poller/intra-session-check.mjs +4 -3
  31. package/scripts/poller-launchd/install.sh +48 -10
  32. package/scripts/pre_draft_lookup.py +2 -2
  33. package/scripts/self-optimization/compute-metrics.py +23 -2
  34. package/scripts/setup/boot-claude-session.sh +14 -5
  35. package/scripts/setup/render-environment-yaml.mjs +133 -0
  36. package/scripts/watchdog/ai.maestro.memory-watchdog.plist +3 -3
  37. package/scripts/watchdog/force-reboot.sh +3 -3
  38. package/scripts/watchdog/memory-watchdog.sh +11 -5
  39. package/workflows/daily/applicant-triage.yaml +3 -3
  40. package/workflows/daily/comms-triage.yaml +1 -1
  41. package/workflows/daily/morning-brief.yaml +1 -1
  42. package/workflows/daily/slack-followup-sweep.yaml +1 -1
  43. package/workflows/weekly/hiring-review.yaml +3 -3
@@ -26,8 +26,9 @@ set -euo pipefail
26
26
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
27
27
  MAESTRO_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
28
28
 
29
- # Auto-detect agent directory (sophie-ai, wundr, etc.)
30
- # The watchdog runs from maestro but protects the whole machine
29
+ # Auto-detect agent directory (any ~/<name>-ai or override via AGENT_DIR env).
30
+ # The watchdog runs from maestro but protects the whole machine — agents are
31
+ # discovered dynamically rather than hardcoded.
31
32
  AGENT_DIR="${AGENT_DIR:-}"
32
33
 
33
34
  # --- Ensure system paths are available ----------------------------------------
@@ -203,9 +204,14 @@ trigger_emergency_stop() {
203
204
  echo "$reason" > "$stop_file"
204
205
  log_event "critical" "emergency_stop_triggered" "$reason"
205
206
 
206
- # Also create in any detected agent directories
207
- for agent_dir in "$HOME"/sophie-ai "$HOME"/wundr; do
208
- if [ -d "$agent_dir" ]; then
207
+ # Also create in any detected agent directory. Discovers ~/<name>-ai
208
+ # directories dynamically so the watchdog protects every agent on this
209
+ # machine without a hardcoded list. AGENT_DIR override still wins.
210
+ if [ -n "$AGENT_DIR" ] && [ -d "$AGENT_DIR" ]; then
211
+ echo "$reason" > "$AGENT_DIR/.emergency-stop" 2>/dev/null || true
212
+ fi
213
+ for agent_dir in "$HOME"/*-ai; do
214
+ if [ -d "$agent_dir" ] && [ -f "$agent_dir/config/agent.json" ]; then
209
215
  echo "$reason" > "$agent_dir/.emergency-stop" 2>/dev/null || true
210
216
  fi
211
217
  done
@@ -107,7 +107,7 @@ steps:
107
107
  classification: outputs/briefs/daily/{date}/candidate-classification.md
108
108
  category: advance
109
109
  tone: warm_professional
110
- voice: sophie
110
+ voice: agent
111
111
  sla: 24h
112
112
  outputs:
113
113
  file: outputs/comms/hiring/{date}/daily-advance-drafts.md
@@ -123,7 +123,7 @@ steps:
123
123
  classification: outputs/briefs/daily/{date}/candidate-classification.md
124
124
  category: hold
125
125
  tone: professional
126
- voice: sophie
126
+ voice: agent
127
127
  outputs:
128
128
  file: outputs/comms/hiring/{date}/daily-hold-drafts.md
129
129
 
@@ -138,7 +138,7 @@ steps:
138
138
  classification: outputs/briefs/daily/{date}/candidate-classification.md
139
139
  category: reject
140
140
  tone: kind_encouraging
141
- voice: sophie
141
+ voice: agent
142
142
  sla: 48h
143
143
  outputs:
144
144
  file: outputs/comms/hiring/{date}/daily-rejection-drafts.md
@@ -29,7 +29,7 @@ steps:
29
29
  timeout: 300
30
30
  parallel_with: slack-scan
31
31
  inputs:
32
- account: sophie@adaptic.ai
32
+ account: "{{agent.email}}" # resolved from config/agent.json at workflow execution
33
33
  mode: observe
34
34
  last_triage: "{last_run_timestamp}"
35
35
  outputs:
@@ -62,7 +62,7 @@ steps:
62
62
  timeout: 300
63
63
  parallel_with: market-sweep
64
64
  inputs:
65
- account: sophie@adaptic.ai
65
+ account: "{{agent.email}}" # resolved from config/agent.json at workflow execution
66
66
  mode: observe # read-only, never act
67
67
  priority_senders: [] # from config/contacts.yaml
68
68
  outputs:
@@ -43,7 +43,7 @@ steps:
43
43
  depends_on: [check-commitments]
44
44
  inputs:
45
45
  overdue_items: outputs/followups/daily/{date}/slack-commitments-status.md
46
- voice: sophie # Follow up in Sophie's voice
46
+ voice: agent # Follow up in the agent's own voice (mode resolved from config/agent.json voiceModes)
47
47
  outputs:
48
48
  file: outputs/followups/daily/{date}/slack-followup-drafts.md
49
49
 
@@ -65,7 +65,7 @@ steps:
65
65
  screening_results: outputs/briefs/weekly/{date}/screening-results.md
66
66
  category: advance
67
67
  tone: warm_professional
68
- voice: sophie
68
+ voice: agent
69
69
  outputs:
70
70
  file: outputs/comms/hiring/{date}/advance-drafts.md
71
71
 
@@ -80,7 +80,7 @@ steps:
80
80
  screening_results: outputs/briefs/weekly/{date}/screening-results.md
81
81
  category: reject
82
82
  tone: kind_encouraging
83
- voice: sophie
83
+ voice: agent
84
84
  outputs:
85
85
  file: outputs/comms/hiring/{date}/rejection-drafts.md
86
86
 
@@ -95,7 +95,7 @@ steps:
95
95
  screening_results: outputs/briefs/weekly/{date}/screening-results.md
96
96
  category: hold
97
97
  tone: professional
98
- voice: sophie
98
+ voice: agent
99
99
  outputs:
100
100
  file: outputs/comms/hiring/{date}/hold-drafts.md
101
101