oh-my-muse 0.1.1 → 0.2.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 (63) hide show
  1. package/README.md +85 -47
  2. package/bin/lib.mjs +173 -440
  3. package/bin/omm.mjs +188 -229
  4. package/package.json +9 -18
  5. package/plugin/.muse-plugin/plugin.json +47 -0
  6. package/plugin/commands/omm-advisor.md +32 -0
  7. package/plugin/commands/omm-autopilot.md +31 -0
  8. package/plugin/commands/omm-pipeline.md +28 -0
  9. package/plugin/commands/omm-ralph.md +29 -0
  10. package/plugin/commands/omm-team.md +37 -0
  11. package/plugin/commands/omm-ultraqa.md +31 -0
  12. package/plugin/commands/omm-ultrawork.md +30 -0
  13. package/plugin/hooks/notify.mjs +352 -0
  14. package/plugin/skills/architect/SKILL.md +21 -0
  15. package/plugin/skills/critic/SKILL.md +21 -0
  16. package/plugin/skills/data-scientist/SKILL.md +21 -0
  17. package/plugin/skills/debugger/SKILL.md +21 -0
  18. package/plugin/skills/designer/SKILL.md +20 -0
  19. package/{pack → plugin}/skills/docs/SKILL.md +9 -3
  20. package/plugin/skills/docs-writer/SKILL.md +21 -0
  21. package/plugin/skills/file-picker/SKILL.md +19 -0
  22. package/{pack → plugin}/skills/harness/SKILL.md +10 -4
  23. package/plugin/skills/implementer/SKILL.md +21 -0
  24. package/plugin/skills/planner/SKILL.md +21 -0
  25. package/plugin/skills/refactorer/SKILL.md +21 -0
  26. package/plugin/skills/researcher/SKILL.md +20 -0
  27. package/plugin/skills/reviewer/SKILL.md +21 -0
  28. package/{pack → plugin}/skills/security/SKILL.md +7 -1
  29. package/plugin/skills/security-reviewer/SKILL.md +22 -0
  30. package/plugin/skills/tester/SKILL.md +22 -0
  31. package/{pack → plugin}/skills/verify/SKILL.md +7 -1
  32. package/hooks/notify.mjs +0 -133
  33. package/models.json +0 -38
  34. package/omm.jsonc +0 -25
  35. package/pack/agents/architect.ts +0 -26
  36. package/pack/agents/critic.ts +0 -26
  37. package/pack/agents/data-scientist.ts +0 -26
  38. package/pack/agents/debugger.ts +0 -26
  39. package/pack/agents/designer.ts +0 -25
  40. package/pack/agents/docs-writer.ts +0 -26
  41. package/pack/agents/file-picker.ts +0 -24
  42. package/pack/agents/implementer.ts +0 -26
  43. package/pack/agents/muse-advisor.ts +0 -63
  44. package/pack/agents/muse-autopilot.ts +0 -65
  45. package/pack/agents/muse-deep-interview.ts +0 -71
  46. package/pack/agents/muse-pipeline.ts +0 -49
  47. package/pack/agents/muse-ralph.ts +0 -48
  48. package/pack/agents/muse-ralplan.ts +0 -70
  49. package/pack/agents/muse-team.ts +0 -95
  50. package/pack/agents/muse-ultraqa.ts +0 -55
  51. package/pack/agents/muse-ultrawork.ts +0 -46
  52. package/pack/agents/planner.ts +0 -26
  53. package/pack/agents/refactorer.ts +0 -26
  54. package/pack/agents/researcher.ts +0 -25
  55. package/pack/agents/reviewer.ts +0 -26
  56. package/pack/agents/security-reviewer.ts +0 -27
  57. package/pack/agents/tester.ts +0 -27
  58. package/pack/skills/design/SKILL.md +0 -24
  59. package/pack/skills/tdd/SKILL.md +0 -24
  60. package/src/harness/DESIGN.md +0 -29
  61. package/src/harness/HARNESS.md +0 -42
  62. package/types/agent-definition.ts +0 -18
  63. package/types/orchestrator.ts +0 -37
package/README.md CHANGED
@@ -5,96 +5,134 @@
5
5
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](LICENSE)
6
6
  [![ESM](https://img.shields.io/badge/modules-ESM-yellow)](package.json)
7
7
 
8
- Token-efficient agent pack runner for Muse Spark. Three literal tiers
9
- (`budget` | `balanced` | `premium`), atomic installs, validated configs,
10
- and redacted secrets.
8
+ Native [Muse Code](https://github.com/anthropics/muse-code) plugin:
9
+ 18 specialist skills, 7 orchestrator commands, and turn/session-end
10
+ notifications. No tiers, no presets, no model routing — the model is chosen
11
+ per session (see below).
11
12
 
12
13
  ## Install
13
14
 
14
- Requires Node.js `>= 20` (ES modules).
15
+ Requires Node.js `>= 20` and Muse Code `1.3.0+` with `muse` on `PATH`.
15
16
 
16
17
  ```sh
17
- git clone https://github.com/jefalcon/oh-my-muse.git
18
- cd oh-my-muse
19
- node bin/omm.mjs --help
18
+ npm install -g oh-my-muse
19
+ omm install
20
+ omm install --scope user # or: --scope project
20
21
  ```
21
22
 
22
- Use it in a project (paths are absolute; `--dir` defaults to cwd):
23
+ `omm install` resolves the shipped `plugin/` directory from the installed
24
+ package (never from the cwd) and runs `muse plugins install <plugin-dir>`.
25
+ It then prints a pending step it deliberately does **not** execute:
23
26
 
24
27
  ```sh
25
- node /absolute/path/to/oh-my-muse/bin/omm.mjs setup --dir /absolute/path/to/project
26
- node /absolute/path/to/oh-my-muse/bin/omm.mjs install --dir /absolute/path/to/project
27
- node /absolute/path/to/oh-my-muse/bin/omm.mjs doctor --dir /absolute/path/to/project
28
+ muse plugins approve oh-my-muse
28
29
  ```
29
30
 
30
- Or link the binary once:
31
+ Run that yourself to trust and enable the plugin. Verify any time with:
31
32
 
32
33
  ```sh
33
- npm link
34
- omm setup --dir /absolute/path/to/project
35
- omm install --dir /absolute/path/to/project
34
+ omm validate # both real validators: skills, then plugin
35
+ omm doctor # node, muse in PATH, muse version, validation
36
36
  ```
37
37
 
38
- ## Examples
38
+ ## Choosing the model
39
39
 
40
- List configured agents with resolved tier and model:
40
+ There are no tiers or presets in 0.2.0. The session model applies to every
41
+ skill and command. Pick it per invocation or persistently:
41
42
 
42
43
  ```sh
43
- omm list --dir /absolute/path/to/project
44
- omm list --json --dir /absolute/path/to/project
44
+ muse --model muse-spark-1.3-contributor
45
45
  ```
46
46
 
47
- Show or apply a model preset (`code`, `chat`, `reason`, plus custom ones
48
- in `models.json`):
47
+ or in `${XDG_CONFIG_HOME:-$HOME/.config}/muse/settings.json`:
49
48
 
50
- ```sh
51
- omm preset code --dir /absolute/path/to/project
52
- omm preset reason --apply planner --dir /absolute/path/to/project
49
+ ```json
50
+ { "schema_version": 1, "model": "muse-spark-1.3-contributor" }
53
51
  ```
54
52
 
55
- Read and change config (values support `$ENV` / `${VAR:-default}`):
53
+ (A tier-driven `muse exec` wrapper is deferred to a later version.)
54
+
55
+ ## Use
56
+
57
+ Commands (each loads `workflow-authoring` and runs its wave plan + gate):
58
+
59
+ | Command | Orchestration |
60
+ | ---------------- | --------------------------------------------------------- |
61
+ | `/omm-team` | Parallel research, serialized same-file edits, reviewer loop |
62
+ | `/omm-autopilot` | One driver owns the change, helpers support it |
63
+ | `/omm-ultrawork` | Maximum parallelism for independent steps |
64
+ | `/omm-pipeline` | Strict sequence with a verify-command gate per step |
65
+ | `/omm-ultraqa` | Parallel checks under a zero-failure gate |
66
+ | `/omm-ralph` | One unfinished step per loop iteration, pass/fail check |
67
+ | `/omm-advisor` | Three independent advisors reconciled into one decision |
68
+
69
+ Skills (loaded by the model, `user-invocable: false`): `architect`,
70
+ `critic`, `data-scientist`, `debugger`, `designer`, `docs-writer`,
71
+ `file-picker`, `implementer`, `planner`, `refactorer`, `researcher`,
72
+ `reviewer`, `security-reviewer`, `tester`, plus `harness`, `verify`,
73
+ `docs`, `security`.
74
+
75
+ Notifications: the single `omm-notify-stop` hook (`Stop`,
76
+ `plugin/hooks/notify.mjs`, self-contained, node builtins only) reads
77
+ **only** `$HOME/.config/oh-my-muse/notify.json` (`XDG_CONFIG_HOME` is
78
+ NOT used). It is silent unless that file sets a channel:
56
79
 
57
80
  ```sh
58
- omm config show --dir /absolute/path/to/project
59
- omm config get defaultTier --dir /absolute/path/to/project
60
- omm config set defaultTier premium --dir /absolute/path/to/project
81
+ omm notify setup --channel file --file omm-notify.log \
82
+ --message "turn done in {{projectName}}"
83
+ omm notify test # send one notification using the file
61
84
  ```
62
85
 
63
- Skills, notifications, and maintenance:
86
+ Message templates support `{{projectName}}` (session cwd basename),
87
+ `{{event}}`, `{{date}}`, `{{model}}`, `{{sessionId}}`. With
88
+ `includeAssistantMessage: true` the turn's last assistant message is
89
+ appended (truncated to 500 chars, redacted).
90
+
91
+ Two warnings, both verified on this machine:
92
+
93
+ - Muse **filters the hook environment**: only `HOME`, `LANG`, `PATH`,
94
+ etc. reach the hook — no `OMM_*`, no `XDG_CONFIG_HOME`. That is why
95
+ secrets live in the file, never in env. For CLI use (`omm notify`)
96
+ `OMM_*` variables still override the file.
97
+ - `Stop` fires at the end of **every turn** (also under `muse exec`),
98
+ not once per session.
99
+
100
+ The file must stay owner-only (mode `0600`, directory `0700`):
101
+ `setup` writes it that way; a group/other-readable file makes the hook
102
+ send nothing and `omm doctor` fail. Telegram needs `botToken` +
103
+ `chatId`; Discord/Slack need `webhookUrl` (https + provider host
104
+ allowlist enforced; secrets redacted from every diagnostic and never
105
+ printed by `setup`/`doctor`). File-channel notes land inside the
106
+ payload `cwd` unless `allowExternalFile` is set. On-demand, without a
107
+ file:
64
108
 
65
109
  ```sh
66
- omm skill list --dir /absolute/path/to/project
67
- omm notify --channel file --message "deploy done" --file /absolute/path/to/notify.log
68
- omm update --dir /absolute/path/to/project
69
- omm uninstall --dir /absolute/path/to/project
110
+ omm notify --channel file --message "deploy done" --file ./notify.log
70
111
  ```
71
112
 
72
- ## Tiers
113
+ An explicit `--file` opts out of root confinement; file/env-driven
114
+ paths stay confined unless `allowExternalFile` /
115
+ `OMM_NOTIFY_ALLOW_EXTERNAL=1`. `omm doctor` reports the config file,
116
+ its mode, and its channel (never secrets).
73
117
 
74
- | Tier | Model | Use for |
75
- | ---------- | -------------------- | ------------------- |
76
- | `budget` | `muse-spark-fast` | fast, low-cost chat |
77
- | `balanced` | `muse-spark` | general coding work |
78
- | `premium` | `muse-spark-reasoning` | deep reasoning |
118
+ ## Uninstall
79
119
 
80
- Details: [docs/MODES.md](docs/MODES.md),
81
- [docs/MODEL-COMPATIBILITY.md](docs/MODEL-COMPATIBILITY.md),
82
- [docs/PARITY.md](docs/PARITY.md).
120
+ ```sh
121
+ omm uninstall # muse plugins remove oh-my-muse
122
+ ```
83
123
 
84
124
  ## Development
85
125
 
86
126
  ```sh
87
- npm run typecheck # tsc --noEmit
88
- npm test # node --test test/
89
- node test/smoke.mjs # agent shape validation
127
+ npm test # node --test test/ (validators skip cleanly when muse is absent)
90
128
  ```
91
129
 
92
130
  See [CONTRIBUTING.md](CONTRIBUTING.md), [CHANGELOG.md](CHANGELOG.md),
131
+ [docs/PARITY.md](docs/PARITY.md), [docs/OPEN-QUESTIONS.md](docs/OPEN-QUESTIONS.md),
93
132
  and [SECURITY.md](SECURITY.md).
94
133
 
95
134
  ## Attribution
96
135
 
97
136
  Built for the Muse Spark ecosystem. This is a community project and is
98
137
  **not affiliated with Meta**. "Muse" and "Muse Spark" model names belong
99
- to their respective owners; model availability and pricing are governed
100
- by the provider, including OpenRouter-routed models.
138
+ to their respective owners.