@murmurv2/cli 2.11.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 (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +53 -0
  3. package/bin/murmur-npm.mjs +6 -0
  4. package/package.json +42 -0
  5. package/runtime/bin/murmur-svc.exe +0 -0
  6. package/runtime/npm-runtime-manifest.json +299 -0
  7. package/runtime/package.json +1 -0
  8. package/runtime/packages/mcp-server/dist/src/index.js +1 -0
  9. package/runtime/packages/mcp-server/package.json +1 -0
  10. package/runtime/packages/setup/bin/murmur.mjs +26 -0
  11. package/runtime/packages/setup/dist/src/appdata.d.ts +9 -0
  12. package/runtime/packages/setup/dist/src/appdata.js +53 -0
  13. package/runtime/packages/setup/dist/src/cli.d.ts +9 -0
  14. package/runtime/packages/setup/dist/src/cli.js +130 -0
  15. package/runtime/packages/setup/dist/src/clients.d.ts +151 -0
  16. package/runtime/packages/setup/dist/src/clients.js +251 -0
  17. package/runtime/packages/setup/dist/src/commands.d.ts +35 -0
  18. package/runtime/packages/setup/dist/src/commands.js +115 -0
  19. package/runtime/packages/setup/dist/src/config.d.ts +49 -0
  20. package/runtime/packages/setup/dist/src/config.js +70 -0
  21. package/runtime/packages/setup/dist/src/doctor.d.ts +25 -0
  22. package/runtime/packages/setup/dist/src/doctor.js +174 -0
  23. package/runtime/packages/setup/dist/src/file-identity.d.ts +3 -0
  24. package/runtime/packages/setup/dist/src/file-identity.js +11 -0
  25. package/runtime/packages/setup/dist/src/index.d.ts +7 -0
  26. package/runtime/packages/setup/dist/src/index.js +7 -0
  27. package/runtime/packages/setup/dist/src/onboarding.d.ts +46 -0
  28. package/runtime/packages/setup/dist/src/onboarding.js +298 -0
  29. package/runtime/packages/setup/dist/src/outbox-attention.d.ts +51 -0
  30. package/runtime/packages/setup/dist/src/outbox-attention.js +98 -0
  31. package/runtime/packages/setup/dist/src/paths.d.ts +10 -0
  32. package/runtime/packages/setup/dist/src/paths.js +41 -0
  33. package/runtime/packages/setup/dist/src/platform/darwin.d.ts +17 -0
  34. package/runtime/packages/setup/dist/src/platform/darwin.js +270 -0
  35. package/runtime/packages/setup/dist/src/platform/linux.d.ts +9 -0
  36. package/runtime/packages/setup/dist/src/platform/linux.js +176 -0
  37. package/runtime/packages/setup/dist/src/platform/windows.d.ts +25 -0
  38. package/runtime/packages/setup/dist/src/platform/windows.js +189 -0
  39. package/runtime/packages/setup/dist/src/private-file.d.ts +5 -0
  40. package/runtime/packages/setup/dist/src/private-file.js +101 -0
  41. package/runtime/packages/setup/dist/src/reply-test.d.ts +25 -0
  42. package/runtime/packages/setup/dist/src/reply-test.js +75 -0
  43. package/runtime/packages/setup/dist/src/state.d.ts +3 -0
  44. package/runtime/packages/setup/dist/src/state.js +12 -0
  45. package/runtime/packages/setup/dist/src/status-line.d.ts +5 -0
  46. package/runtime/packages/setup/dist/src/status-line.js +19 -0
  47. package/runtime/packages/setup/dist/src/status.d.ts +137 -0
  48. package/runtime/packages/setup/dist/src/status.js +199 -0
  49. package/runtime/packages/setup/dist/src/types.d.ts +40 -0
  50. package/runtime/packages/setup/dist/src/types.js +1 -0
  51. package/runtime/packages/setup/dist/src/updates.d.ts +46 -0
  52. package/runtime/packages/setup/dist/src/updates.js +284 -0
  53. package/runtime/packages/setup/dist/src/verdict.d.ts +11 -0
  54. package/runtime/packages/setup/dist/src/verdict.js +159 -0
  55. package/runtime/packages/setup/package.json +1 -0
  56. package/runtime/plugins/claude-code/.claude-plugin/plugin.json +34 -0
  57. package/runtime/plugins/claude-code/.mcp.json +8 -0
  58. package/runtime/plugins/claude-code/scripts/configure-statusline.mjs +124 -0
  59. package/runtime/plugins/claude-code/scripts/statusline.mjs +210 -0
  60. package/runtime/plugins/claude-code/skills/inbox/SKILL.md +8 -0
  61. package/runtime/plugins/claude-code/skills/mark-read/SKILL.md +13 -0
  62. package/runtime/plugins/claude-code/skills/status/SKILL.md +13 -0
  63. package/runtime/scripts/ack-security.mjs +22 -0
  64. package/runtime/scripts/codex-app-server-wake.mjs +696 -0
  65. package/runtime/scripts/daemon-observation.mjs +48 -0
  66. package/runtime/scripts/doctor-protocol.mjs +96 -0
  67. package/runtime/scripts/lease.mjs +193 -0
  68. package/runtime/scripts/murmur-daemon.mjs +545 -0
  69. package/runtime/scripts/murmur-jetstream-advisory.mjs +11 -0
  70. package/runtime/scripts/murmur-shell-send.mjs +142 -0
  71. package/runtime/scripts/notify-router.mjs +309 -0
  72. package/runtime/scripts/runtime-capability.mjs +34 -0
  73. package/runtime/scripts/secure-state.mjs +105 -0
  74. package/runtime/scripts/wake-drain-claude.mjs +484 -0
  75. package/runtime/scripts/wake-monitor.mjs +653 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 alexfrmn
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,53 @@
1
+ # Murmur CLI
2
+
3
+ Install once, join with a private invitation file, and connect an AI client to
4
+ Murmur's encrypted messaging mesh. The executable is `murmur`.
5
+
6
+ The public npm release is pending. After `@murmurv2/cli@2.11.0` is published,
7
+ use the command below. Until publication is confirmed, use a GitHub release
8
+ asset; older public registry packages do not contain the current fixes.
9
+ Maintainers rehearsing a release use only their coordinator-approved registry.
10
+
11
+ ```sh
12
+ npm install --global @murmurv2/cli@2.11.0
13
+ murmur version --json
14
+ ```
15
+
16
+ Node.js **22.13.0 or newer** is required. No Git, TypeScript, Go, native compiler,
17
+ install lifecycle scripts or helper download is needed on the receiving machine.
18
+ The tarball includes the CLI, daemon, MCP entry, and prebuilt Windows x64 service
19
+ helper. It does not include a desktop application. On Windows PowerShell use
20
+ `npm.cmd` and `murmur.cmd` if execution policy blocks the PowerShell shims.
21
+
22
+ Run the following with the same absolute profile path on each line:
23
+
24
+ ```sh
25
+ murmur join --agent-id YOUR-AGENT --invite-file /private/invite.txt --reply-out /private/reply.txt --data-dir /absolute/profile
26
+ murmur service install --data-dir /absolute/profile
27
+ murmur service start --data-dir /absolute/profile
28
+ murmur clients detect --data-dir /absolute/profile
29
+ murmur clients configure --client codex-cli --data-dir /absolute/profile
30
+ murmur doctor --peer HOST-AGENT --data-dir /absolute/profile --json
31
+ ```
32
+
33
+ The invitation host must import your reply file and reload its own peer
34
+ configuration before the roundtrip check can succeed. Keep the invitation and
35
+ reply outside the profile, in an existing private directory. Do not paste them
36
+ into chat or edit `agent-config.json` manually.
37
+
38
+ Choose an installed client reported by `clients detect`; configuration preserves
39
+ unrelated settings and refuses conflicting Murmur entries. Reload that client,
40
+ then require a returned `murmur_request` response. A daemon ACK alone is not an
41
+ agent reply or proof that an LLM woke up.
42
+
43
+ On Windows, run **service mutations only** from an elevated terminal. The CLI and
44
+ AI client normally run without elevation. The Windows service is x64-only in
45
+ this release. On Linux the service uses user systemd; on macOS it uses launchd.
46
+ Commands do not silently restart an existing daemon or replace an occupied profile.
47
+
48
+ For an isolated install, add `--prefix /absolute/npm-prefix` to the npm command
49
+ and use its generated `bin/murmur` (Windows: `murmur.cmd` in the prefix). Keep that
50
+ prefix in place while its service and client configuration refer to it.
51
+
52
+ [`docs/setup-onboarding.md`](https://github.com/alexfrmn/murmur/blob/main/docs/setup-onboarding.md)
53
+ documents the shared commands and their evidence limits.
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ // The npm payload keeps the same root-relative layout as release archives.
3
+ // Source checkouts and native bundles continue to use the ordinary CLI entry.
4
+ import { existsSync } from 'node:fs';
5
+ const packed = new URL('../runtime/packages/setup/bin/murmur.mjs', import.meta.url);
6
+ await import(existsSync(packed) ? packed.href : './murmur.mjs');
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@murmurv2/cli",
3
+ "version": "2.11.0",
4
+ "type": "module",
5
+ "main": "runtime/packages/setup/dist/src/index.js",
6
+ "types": "runtime/packages/setup/dist/src/index.d.ts",
7
+ "bin": {
8
+ "murmur": "bin/murmur-npm.mjs"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc -b",
12
+ "prepack": "npm run build --prefix ../.. && node ../../scripts/prepare-cli-package.mjs"
13
+ },
14
+ "dependencies": {
15
+ "@iarna/toml": "^2.2.5",
16
+ "@murmurv2/broker-nats": "^0.3.4",
17
+ "@murmurv2/core": "^0.6.3",
18
+ "@murmurv2/mcp-server": "^0.2.2",
19
+ "@murmurv2/security": "^0.1.1",
20
+ "nats": "^2.28.2",
21
+ "ws": "^8.21.0"
22
+ },
23
+ "engines": {
24
+ "node": ">=22.13.0"
25
+ },
26
+ "license": "MIT",
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+https://github.com/alexfrmn/murmur.git",
30
+ "directory": "packages/setup"
31
+ },
32
+ "publishConfig": {
33
+ "access": "public"
34
+ },
35
+ "description": "Murmur CLI — invite-based setup, background service, client configuration and diagnostics.",
36
+ "files": [
37
+ "bin/murmur-npm.mjs",
38
+ "runtime",
39
+ "LICENSE"
40
+ ],
41
+ "homepage": "https://murmurconnect.com"
42
+ }
Binary file
@@ -0,0 +1,299 @@
1
+ {
2
+ "schema": "murmur.npm-cli/1",
3
+ "sourceCommit": "91279e5249e265cfe54dcd0904d9ae92fbb18ec5",
4
+ "sourceDirty": false,
5
+ "declaredVersion": "2.11.0",
6
+ "sourceLockSha256": "4317a76743610366f9b5846993c7c201bc2c0c4fcabfda2d5448e7ff921a9647",
7
+ "windowsHelper": {
8
+ "component": "windows-service",
9
+ "platform": "windows",
10
+ "arch": "amd64",
11
+ "version": "2.11.0",
12
+ "sourceCommit": "91279e5249e265cfe54dcd0904d9ae92fbb18ec5",
13
+ "sha256": "877f76eb7791c5a83b1a33dce0eaa7aa497eabdee2f877d750d695355cac76ab",
14
+ "size": 3128320,
15
+ "nativeVersionExecuted": false
16
+ },
17
+ "files": {
18
+ "package.json": {
19
+ "sha256": "7670e3b33c8ef783813b1b8860726f9dd2ba2bcdc7c49da05f2780d89fdc0d6b",
20
+ "size": 83
21
+ },
22
+ "packages/setup/package.json": {
23
+ "sha256": "ac61a66e834fcbad44a2fbed34dc2f7573309f1245bdd8e83dd9540803758df2",
24
+ "size": 132
25
+ },
26
+ "packages/setup/dist/src/appdata.d.ts": {
27
+ "sha256": "1e0cfde6b9b1ba6e9d6ba96dc197a8a429c299d2c8a159260b1d2982aa550253",
28
+ "size": 691
29
+ },
30
+ "packages/setup/dist/src/appdata.js": {
31
+ "sha256": "1c1627aa1724a56dc6631d728b56f7715de80d9f8b730cf69e7d0afbdf5b5ddc",
32
+ "size": 2678
33
+ },
34
+ "packages/setup/dist/src/cli.d.ts": {
35
+ "sha256": "6da2fbea536a227db1e8b1d7646d4554cd6e071b05240d5489203eaf007c72e2",
36
+ "size": 418
37
+ },
38
+ "packages/setup/dist/src/cli.js": {
39
+ "sha256": "13ab60762776c1750da857762f3957a08340e41c651cab6274f3a678b0480d31",
40
+ "size": 8745
41
+ },
42
+ "packages/setup/dist/src/clients.d.ts": {
43
+ "sha256": "74291be39ef9cffab6d483e38d955cdc0100e9d5ba0d734d77cad8d2f1fc01fb",
44
+ "size": 4380
45
+ },
46
+ "packages/setup/dist/src/clients.js": {
47
+ "sha256": "1098fe951626980c0c5717d8a211d282db5d6c4acfd09a055b8ebd2d1b9362ab",
48
+ "size": 13670
49
+ },
50
+ "packages/setup/dist/src/commands.d.ts": {
51
+ "sha256": "63f0a5e9834ca75bced2079cb4c4f0e087c1c7cd14ad958aeda5234bcd80337e",
52
+ "size": 1316
53
+ },
54
+ "packages/setup/dist/src/commands.js": {
55
+ "sha256": "eef7c76c21383b2dba733ce4967afa964c547a263333a380606b05eb197fb04f",
56
+ "size": 5731
57
+ },
58
+ "packages/setup/dist/src/config.d.ts": {
59
+ "sha256": "b244629bb9a19d4a48b813c817733d998efea543e8daec99e282010d4e784499",
60
+ "size": 1346
61
+ },
62
+ "packages/setup/dist/src/config.js": {
63
+ "sha256": "9ad91d6d9408f72166ed363eacac4496b1e831ccdda10cd28375f6e21521ef4e",
64
+ "size": 3212
65
+ },
66
+ "packages/setup/dist/src/doctor.d.ts": {
67
+ "sha256": "115b7cf132e4101fe4964173787902d9585f586ee83aa9ae1694161bd646804f",
68
+ "size": 827
69
+ },
70
+ "packages/setup/dist/src/doctor.js": {
71
+ "sha256": "9e240e1f0796ce5e3a6e64dbcc41c56a9febd285c2276f88bb15dde6d68c201e",
72
+ "size": 11225
73
+ },
74
+ "packages/setup/dist/src/file-identity.d.ts": {
75
+ "sha256": "1f5845364d263c80167ed533e46a02751a008d3993a6894aae50a13f646e6767",
76
+ "size": 290
77
+ },
78
+ "packages/setup/dist/src/file-identity.js": {
79
+ "sha256": "1c1f7fd4866339e03536681866a700f49faa0622c961f4e89ae97639d0374da8",
80
+ "size": 621
81
+ },
82
+ "packages/setup/dist/src/index.d.ts": {
83
+ "sha256": "8d863cf184dd6837b7d6544a202f6b2a19787b37e82bac379decc8a07268a7a0",
84
+ "size": 236
85
+ },
86
+ "packages/setup/dist/src/index.js": {
87
+ "sha256": "8d863cf184dd6837b7d6544a202f6b2a19787b37e82bac379decc8a07268a7a0",
88
+ "size": 236
89
+ },
90
+ "packages/setup/dist/src/onboarding.d.ts": {
91
+ "sha256": "b76892619695c2bd9298248d4e7557dce832a688aca0106c02939c4ae0352277",
92
+ "size": 1141
93
+ },
94
+ "packages/setup/dist/src/onboarding.js": {
95
+ "sha256": "caaec0a7f9e8f685185b096bccf1741ae93e7f64983602833ef4e1ccbff70544",
96
+ "size": 14985
97
+ },
98
+ "packages/setup/dist/src/outbox-attention.d.ts": {
99
+ "sha256": "a96effdd0e47701836fb93ab0c24a30d78f29fc0f3e7193406067535532ff962",
100
+ "size": 1606
101
+ },
102
+ "packages/setup/dist/src/outbox-attention.js": {
103
+ "sha256": "db70b6eed2338efe0c2875dbca9c0306cce3c940f0f7f09f3dff7c528ca377af",
104
+ "size": 5113
105
+ },
106
+ "packages/setup/dist/src/paths.d.ts": {
107
+ "sha256": "5c9ce9ac87f5fa90124fa071cc6a5d2176d045fc41de58deb53a0e3ef5d85504",
108
+ "size": 295
109
+ },
110
+ "packages/setup/dist/src/paths.js": {
111
+ "sha256": "967414a7d6b846af2d7122641e42d81d2f570d166c39d91f1c1a4a288400fb42",
112
+ "size": 2507
113
+ },
114
+ "packages/setup/dist/src/platform/darwin.d.ts": {
115
+ "sha256": "5980cc87fb445e076e91faed33976353a6e130949621364ee042a5647241785c",
116
+ "size": 591
117
+ },
118
+ "packages/setup/dist/src/platform/darwin.js": {
119
+ "sha256": "b361a9481c12aa5952dd9c18f30cf612f2126bef87993e6808acf38e56ae7422",
120
+ "size": 12996
121
+ },
122
+ "packages/setup/dist/src/platform/linux.d.ts": {
123
+ "sha256": "989d39cc9d5c73c9dae7dc926344fa2c6dde5e80f0a8d7657d5ce1f774da9b44",
124
+ "size": 375
125
+ },
126
+ "packages/setup/dist/src/platform/linux.js": {
127
+ "sha256": "ab86ab63919d8df3c5c8ccd3bec1d34b4926d847911c56ecf5f8acbcc6404e26",
128
+ "size": 9042
129
+ },
130
+ "packages/setup/dist/src/platform/windows.d.ts": {
131
+ "sha256": "9f2cb7a20c26f936c9878ca5d525edd7486142392452db47c49e5676e98e2808",
132
+ "size": 1123
133
+ },
134
+ "packages/setup/dist/src/platform/windows.js": {
135
+ "sha256": "1a6db62bf38dd56fe78a115e30dc003aef892453265add5e338f8b32beedb87c",
136
+ "size": 10787
137
+ },
138
+ "packages/setup/dist/src/private-file.d.ts": {
139
+ "sha256": "dd574a6f2135aa13064a45b452275aada896402243a4d147f7c417afe8199c4a",
140
+ "size": 443
141
+ },
142
+ "packages/setup/dist/src/private-file.js": {
143
+ "sha256": "ccd60c99d56aba56d6b9f691d99c5bc51086303557e70495e45602298ada22b6",
144
+ "size": 5499
145
+ },
146
+ "packages/setup/dist/src/reply-test.d.ts": {
147
+ "sha256": "aaa1e6357f33d0a6144e1d00dacfdf16363fa235cb376e7c3d4700f3d4d7fd33",
148
+ "size": 813
149
+ },
150
+ "packages/setup/dist/src/reply-test.js": {
151
+ "sha256": "9e477cb83b3d45e7f526b7381fb9a263a240981cf6846d22e88e791bc8e18f46",
152
+ "size": 5030
153
+ },
154
+ "packages/setup/dist/src/state.d.ts": {
155
+ "sha256": "868f415e920d37db4b714f8c5f771fafe3e46f84437f2a5b7d803c7be0e82841",
156
+ "size": 239
157
+ },
158
+ "packages/setup/dist/src/state.js": {
159
+ "sha256": "33d38685ece13a625d1bdb7118173fc358a778b3159a0525818a91f3ca89f62f",
160
+ "size": 632
161
+ },
162
+ "packages/setup/dist/src/status-line.d.ts": {
163
+ "sha256": "3836cac32982321f19c88bd9652ed0b1a1cf2cd47d67196faf612555b3543916",
164
+ "size": 244
165
+ },
166
+ "packages/setup/dist/src/status-line.js": {
167
+ "sha256": "14d7c3981e42b3db248d248ccd683b8dff51f8c07ed5a2f7712fe94769bfe607",
168
+ "size": 984
169
+ },
170
+ "packages/setup/dist/src/status.d.ts": {
171
+ "sha256": "426841217d3f9f6248a63d65fb708af3aa38cd481bad1390a68d1ec1a3910124",
172
+ "size": 4244
173
+ },
174
+ "packages/setup/dist/src/status.js": {
175
+ "sha256": "ddc80da3c1843cf84137b2543805c6c4cdf3316efe44870e6151476c1ca6d27c",
176
+ "size": 13155
177
+ },
178
+ "packages/setup/dist/src/types.d.ts": {
179
+ "sha256": "2d9d05df2818b22a2be5050288cfe9837f2669814218cbeca1be64b19a079463",
180
+ "size": 1506
181
+ },
182
+ "packages/setup/dist/src/types.js": {
183
+ "sha256": "8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881",
184
+ "size": 11
185
+ },
186
+ "packages/setup/dist/src/updates.d.ts": {
187
+ "sha256": "10b685e6d83f4f4a6123abc2000f9f67ca08573b3bc25cbf22c67cce812d4ea9",
188
+ "size": 1606
189
+ },
190
+ "packages/setup/dist/src/updates.js": {
191
+ "sha256": "7c005f543068a0e33027857376efd712938142840f79fb5995f1200d8defb3fd",
192
+ "size": 12731
193
+ },
194
+ "packages/setup/dist/src/verdict.d.ts": {
195
+ "sha256": "1945fb3a7054345b6f5166dd80708ab9466cde70772d62200a48d7a43f9c13b6",
196
+ "size": 505
197
+ },
198
+ "packages/setup/dist/src/verdict.js": {
199
+ "sha256": "3b3265b31dc366745a42a48ac56655d838586197bba9774a0b47c90c02a9099b",
200
+ "size": 7929
201
+ },
202
+ "packages/setup/bin/murmur.mjs": {
203
+ "sha256": "6761c1030f648455e3b99499cd1fa7a356b091700dbbcb2392623315243c5bb5",
204
+ "size": 1408
205
+ },
206
+ "packages/mcp-server/package.json": {
207
+ "sha256": "89c47db7851f89caec72da4f215ebc21cf1e294aeef3b45d2583562d846ab035",
208
+ "size": 33
209
+ },
210
+ "packages/mcp-server/dist/src/index.js": {
211
+ "sha256": "506403a79cff2f69ba25b04c4cb7a66477c7ab3c7e38e5399a9bfb98a0ea4c41",
212
+ "size": 31
213
+ },
214
+ "scripts/murmur-daemon.mjs": {
215
+ "sha256": "e3f7a2dfcb842ea4a908fd0e10ab6c5f066ea3034af51991c3326a1bcf808be6",
216
+ "size": 22863
217
+ },
218
+ "scripts/murmur-shell-send.mjs": {
219
+ "sha256": "5e0ae14f59b634f89751c0487edbf7b9f03f95b0a38e55d5619d392bd2343eee",
220
+ "size": 5105
221
+ },
222
+ "scripts/runtime-capability.mjs": {
223
+ "sha256": "1ee5358161a678c763df9f84bd05068c4938e5166a3f59b1535b54dcb5621d9c",
224
+ "size": 1816
225
+ },
226
+ "scripts/notify-router.mjs": {
227
+ "sha256": "bd6a2277293f5ee05d4ee71cbd96cea06dafbcbae578ae94d5e3492ed0f1cac5",
228
+ "size": 10755
229
+ },
230
+ "scripts/codex-app-server-wake.mjs": {
231
+ "sha256": "8b3d975498f5904d42a18bc345a943a4707d9b147f5ae81fd050645796e97c26",
232
+ "size": 26600
233
+ },
234
+ "scripts/murmur-jetstream-advisory.mjs": {
235
+ "sha256": "4232c92418d46bd4c6bc4785641dd226f58a79e35211e51a469a8d469065e0a7",
236
+ "size": 326
237
+ },
238
+ "scripts/wake-monitor.mjs": {
239
+ "sha256": "416dd71e7e93b6827d9e603438804856cd38e7b575d9842ee33442a856a07cef",
240
+ "size": 31907
241
+ },
242
+ "scripts/lease.mjs": {
243
+ "sha256": "c380ec90c0b5cef4d010df4d59793f86f0dc319c82039997c3d8884a9e92f56e",
244
+ "size": 9613
245
+ },
246
+ "scripts/secure-state.mjs": {
247
+ "sha256": "31d7001f38f9f0294726c811e7847fad8a637986565c3eabc4c57ca0666a4a32",
248
+ "size": 3280
249
+ },
250
+ "scripts/daemon-observation.mjs": {
251
+ "sha256": "cef36ccf407d3c45c11ad796c709f05176faedc2af7adfdd0f618d306a03f459",
252
+ "size": 2349
253
+ },
254
+ "scripts/ack-security.mjs": {
255
+ "sha256": "bb769e874b6d4144b074596ba4c99dac4b6987b1e0e2967ffcf5fa73962e41a1",
256
+ "size": 1265
257
+ },
258
+ "scripts/doctor-protocol.mjs": {
259
+ "sha256": "e373b1ff7801bde10c016cb5d24fefdec39382127008a5c359c804338bd5dc13",
260
+ "size": 5282
261
+ },
262
+ "scripts/wake-drain-claude.mjs": {
263
+ "sha256": "9f5d95c4242b56cd01b09e2198bb3dc4cbd819d8acf1bf664016f364279ca046",
264
+ "size": 22815
265
+ },
266
+ "plugins/claude-code/.claude-plugin/plugin.json": {
267
+ "sha256": "39743b9ea55f475c767dba430e1014fcfa19648e95ddcf0da9b0128f1744ec88",
268
+ "size": 1133
269
+ },
270
+ "plugins/claude-code/.mcp.json": {
271
+ "sha256": "a865cd60e7bd1eaf8b025dc8e5fb7ae8d7425ca8996058ef1eed54f4bed9fe13",
272
+ "size": 204
273
+ },
274
+ "plugins/claude-code/scripts/statusline.mjs": {
275
+ "sha256": "2d56e8f40ecb472cc8bbf066437d490ead8bc8c102a14259e0252f6fcf83b4a0",
276
+ "size": 9050
277
+ },
278
+ "plugins/claude-code/scripts/configure-statusline.mjs": {
279
+ "sha256": "7d611f947ee005db1f039ea7892960536aabc1ffa9f59364b83663a27c4fabdb",
280
+ "size": 6971
281
+ },
282
+ "plugins/claude-code/skills/status/SKILL.md": {
283
+ "sha256": "fd85f335c85f2e86a6ee0f6d15c88b2e9a7c8e2939f4259f3d8905ea38714039",
284
+ "size": 601
285
+ },
286
+ "plugins/claude-code/skills/inbox/SKILL.md": {
287
+ "sha256": "053f63072a7423a163f69acfac08a2bd6bcdf3aa2f01990f8e694e6e30a8dca1",
288
+ "size": 526
289
+ },
290
+ "plugins/claude-code/skills/mark-read/SKILL.md": {
291
+ "sha256": "a9117d5186527ee563eed9a46bc942a467211ae75eb08c5265fe6ded5b6aca8c",
292
+ "size": 705
293
+ },
294
+ "bin/murmur-svc.exe": {
295
+ "sha256": "877f76eb7791c5a83b1a33dce0eaa7aa497eabdee2f877d750d695355cac76ab",
296
+ "size": 3128320
297
+ }
298
+ }
299
+ }
@@ -0,0 +1 @@
1
+ {"name":"murmur","private":true,"version":"2.11.0","engines":{"node":">=22.13.0"}}
@@ -0,0 +1 @@
1
+ import "@murmurv2/mcp-server";
@@ -0,0 +1 @@
1
+ {"type":"module","private":true}
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+ import { checkRuntime } from '../../../scripts/runtime-capability.mjs';
3
+ // Murmur requires node:sqlite (checked below); Node's ExperimentalWarning for it on every command
4
+ // only tells a new user that something is wrong. Other warnings pass through unchanged.
5
+ const emitWarning = process.emitWarning;
6
+ process.emitWarning = function (warning, ...rest) {
7
+ const type = typeof rest[0] === 'string' ? rest[0] : rest[0]?.type ?? warning?.name;
8
+ if (type === 'ExperimentalWarning' && /SQLite/.test(String(warning?.message ?? warning))) return;
9
+ return emitWarning.call(this, warning, ...rest);
10
+ };
11
+ try { await checkRuntime(); }
12
+ catch (error) { process.stderr.write(error.message + '\n'); process.exit(1); }
13
+ // Dynamic imports let the capability check run before the engine imports SQLite.
14
+ const { main, isRawCliOutput } = await import('../dist/src/cli.js');
15
+ const { safeError } = await import('../dist/src/config.js');
16
+ const lineMode = process.argv[2] === 'status' && process.argv.includes('--line');
17
+ try {
18
+ const result = await main(process.argv.slice(2));
19
+ if (isRawCliOutput(result)) {
20
+ if (result.text) process.stdout.write(result.text + '\n');
21
+ } else process.stdout.write(JSON.stringify(result) + '\n');
22
+ } catch (error) {
23
+ if (lineMode) process.stdout.write('Murmur: unknown (status.command-failed)\n');
24
+ process.stderr.write(safeError(error) + '\n');
25
+ process.exitCode = 1;
26
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * A process with MSIX package identity (e.g. an app installed from Microsoft Store) sees AppData
3
+ * virtualized: writes to %LOCALAPPDATA%\X land in %LOCALAPPDATA%\Packages\<pkg>\LocalCache\Local\X,
4
+ * while the LocalSystem service reads the real, empty %LOCALAPPDATA%\X. Detect it by filesystem
5
+ * identity, not by name: inside the package the profile and its LocalCache twin are one directory,
6
+ * outside it a leftover twin is a different one. A profile that does not exist yet is probed in its
7
+ * nearest existing ancestor with a temporary directory that is removed again.
8
+ */
9
+ export declare function refuseVirtualizedAppData(dataDir: string, env?: NodeJS.ProcessEnv): Promise<void>;
@@ -0,0 +1,53 @@
1
+ import { mkdir, readdir, rmdir, stat } from 'node:fs/promises';
2
+ import { randomUUID } from 'node:crypto';
3
+ import path from 'node:path';
4
+ import { sameClientFileIdentity } from './file-identity.js';
5
+ const paths = path.win32;
6
+ const inside = (base, dir) => {
7
+ const relative = paths.relative(base, dir);
8
+ return relative && !relative.startsWith('..') && !paths.isAbsolute(relative) ? relative : null;
9
+ };
10
+ // BigInt: NTFS file IDs exceed 2^53. Compared with sameClientFileIdentity, because Node 22.13 on
11
+ // Windows reports dev 0 for a plain path and the real volume serial through a junction.
12
+ const identity = (dir) => stat(dir, { bigint: true }).catch(() => null);
13
+ /**
14
+ * A process with MSIX package identity (e.g. an app installed from Microsoft Store) sees AppData
15
+ * virtualized: writes to %LOCALAPPDATA%\X land in %LOCALAPPDATA%\Packages\<pkg>\LocalCache\Local\X,
16
+ * while the LocalSystem service reads the real, empty %LOCALAPPDATA%\X. Detect it by filesystem
17
+ * identity, not by name: inside the package the profile and its LocalCache twin are one directory,
18
+ * outside it a leftover twin is a different one. A profile that does not exist yet is probed in its
19
+ * nearest existing ancestor with a temporary directory that is removed again.
20
+ */
21
+ export async function refuseVirtualizedAppData(dataDir, env = process.env) {
22
+ if (process.platform !== 'win32' || !env.LOCALAPPDATA)
23
+ return;
24
+ const packages = paths.join(env.LOCALAPPDATA, 'Packages');
25
+ if (inside(packages, dataDir) !== null)
26
+ return;
27
+ const bases = [[env.LOCALAPPDATA, 'Local'], [env.APPDATA, 'Roaming']];
28
+ const base = bases.find(([root]) => root && inside(root, dataDir) !== null);
29
+ if (!base)
30
+ return;
31
+ // Climb to the nearest existing directory that is still inside the AppData root.
32
+ let probe = null, target = dataDir;
33
+ while (!(await identity(target)) && inside(base[0], paths.dirname(target)) !== null)
34
+ target = paths.dirname(target);
35
+ if (!(await identity(target))) {
36
+ target = paths.join(paths.dirname(target), `.murmur-appdata-probe-${randomUUID()}`);
37
+ await mkdir(target);
38
+ probe = target;
39
+ }
40
+ try {
41
+ const own = (await identity(target)), relative = inside(base[0], target);
42
+ const names = await readdir(packages).catch(() => []);
43
+ for (const name of names) {
44
+ const twin = await identity(paths.join(packages, name, 'LocalCache', base[1], relative));
45
+ if (twin && sameClientFileIdentity(twin, own))
46
+ throw new Error('profile.virtualized-appdata');
47
+ }
48
+ }
49
+ finally {
50
+ if (probe)
51
+ await rmdir(probe).catch(() => { });
52
+ }
53
+ }
@@ -0,0 +1,9 @@
1
+ import type { PlatformAdapter } from './types.js';
2
+ export declare function platformAdapter(): PlatformAdapter;
3
+ export interface RawCliOutput {
4
+ kind: 'raw';
5
+ text: string;
6
+ }
7
+ export declare const rawCliOutput: (text: string) => RawCliOutput;
8
+ export declare const isRawCliOutput: (value: unknown) => value is RawCliOutput;
9
+ export declare function main(args: string[], adapter?: PlatformAdapter): Promise<unknown>;