@mulmoclaude/core 4.9.1 → 4.9.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.
|
@@ -549,9 +549,10 @@ user's file by re-encoding it.
|
|
|
549
549
|
A collection whose schema declares `storage: { type: "sqlite", path: … }`
|
|
550
550
|
keeps its records in a single SQLite database file, read/written through
|
|
551
551
|
Node's BUILT-IN `node:sqlite` module — no npm dependency. That module
|
|
552
|
-
exists only in **Node.js >= 22.5
|
|
553
|
-
|
|
554
|
-
|
|
552
|
+
exists only in **Node.js >= 22.5**. The app's own floor is >= 22.19, so a
|
|
553
|
+
supported runtime always has it and this failure means a Node built without
|
|
554
|
+
the module. Only sqlite-backed collections break (file and dataSource
|
|
555
|
+
collections keep working); every operation fails with
|
|
555
556
|
`sqlite storage needs the node:sqlite module (Node.js >= 22.5) — this
|
|
556
557
|
runtime cannot load it`.
|
|
557
558
|
|
|
@@ -1392,8 +1393,8 @@ treatment, and the workspace mounted if you want it to follow the port.
|
|
|
1392
1393
|
- The platform token (bot token, app token) was revoked or regenerated.
|
|
1393
1394
|
- The bridge process is not running at all. Check before assuming anything above.
|
|
1394
1395
|
Since #3084 a bridge that died says why on its last line — `[<transport>]
|
|
1395
|
-
|
|
1396
|
-
|
|
1396
|
+
unhandled rejection — exiting: …` or `[<transport>] uncaught exception —
|
|
1397
|
+
exiting: …`, naming the transport. A bridge stopped on purpose names the
|
|
1397
1398
|
signal: Ctrl-C prints `[<transport>] SIGINT — shutting down`, while a plain
|
|
1398
1399
|
`kill <pid>` sends SIGTERM and prints `[<transport>] SIGTERM — shutting down`.
|
|
1399
1400
|
**No such line and the process gone** means either an older npm build (they
|
|
@@ -1497,7 +1498,7 @@ install hint alone.
|
|
|
1497
1498
|
### Why
|
|
1498
1499
|
|
|
1499
1500
|
Two servers over one workspace overwrite each other's `.session-token`. After
|
|
1500
|
-
that a stateless plugin dispatch authenticates cleanly against the
|
|
1501
|
+
that a stateless plugin dispatch authenticates cleanly against the _wrong_
|
|
1501
1502
|
server, while the session-scoped `/api/internal/tool-result` push lands where
|
|
1502
1503
|
the session does not exist and is dropped — so plugin views simply never render
|
|
1503
1504
|
on one of the two and nothing reports an error. The guard refuses that setup
|
|
@@ -1527,10 +1528,51 @@ means a real instance answered.
|
|
|
1527
1528
|
To share one workspace between two servers anyway — accepting the token stomping:
|
|
1528
1529
|
|
|
1529
1530
|
```bash
|
|
1530
|
-
MULMOCLAUDE_ALLOW_MULTIPLE_INSTANCES=1
|
|
1531
|
+
yarn dev --allow-multiple-instances # or MULMOCLAUDE_ALLOW_MULTIPLE_INSTANCES=1
|
|
1531
1532
|
```
|
|
1532
1533
|
|
|
1533
|
-
|
|
1534
|
-
`npx mulmoclaude`
|
|
1535
|
-
|
|
1536
|
-
|
|
1534
|
+
The flag and the env var are equivalent on `yarn dev`, `yarn server` and
|
|
1535
|
+
`npx mulmoclaude` alike. (Before #3113 the flag was silently dropped by `yarn dev`,
|
|
1536
|
+
so an older build needs the env var there.)
|
|
1537
|
+
|
|
1538
|
+
## A bridge enabled in `config/bridges.json` is not running
|
|
1539
|
+
|
|
1540
|
+
### Symptoms
|
|
1541
|
+
|
|
1542
|
+
The workspace has `config/bridges.json` with a bridge switched on, the server
|
|
1543
|
+
started fine, and no messages arrive from that platform.
|
|
1544
|
+
|
|
1545
|
+
### Cause
|
|
1546
|
+
|
|
1547
|
+
An in-process bridge (#3080) never blocks server startup — a failure costs that
|
|
1548
|
+
one bridge and goes to the log. So the server looking healthy says nothing about
|
|
1549
|
+
the bridge. The log line names which of the three happened:
|
|
1550
|
+
|
|
1551
|
+
```
|
|
1552
|
+
bridges bridge failed to start — the server continues without it
|
|
1553
|
+
{ transportId: 'telegram', error: 'TELEGRAM_BOT_TOKEN is required. …' }
|
|
1554
|
+
|
|
1555
|
+
bridges enabled bridge cannot run in-process yet — start it with its CLI instead
|
|
1556
|
+
{ transportId: 'slack' }
|
|
1557
|
+
|
|
1558
|
+
bridges ignoring a malformed entry in config/bridges.json
|
|
1559
|
+
{ key: 'telegram', reason: '`enabled` must be true or false' }
|
|
1560
|
+
```
|
|
1561
|
+
|
|
1562
|
+
### Fix
|
|
1563
|
+
|
|
1564
|
+
1. `grep bridges <the server log>` and read which of the three it is.
|
|
1565
|
+
2. **Credentials missing** — they live in `.env`, not in `config/bridges.json`.
|
|
1566
|
+
The error text names the variable (`TELEGRAM_BOT_TOKEN`, …).
|
|
1567
|
+
3. **Not converted yet** — only `telegram` runs in-process today; the other 24
|
|
1568
|
+
still need `yarn <name>`. See `docs/in-process-bridges.md`.
|
|
1569
|
+
4. **Malformed entry** — the shape is `{ "bridges": { "<id>": { "enabled": true } } }`.
|
|
1570
|
+
A transport id is lowercase letters, digits and dashes.
|
|
1571
|
+
|
|
1572
|
+
Confirm with the startup line that lists what did start:
|
|
1573
|
+
|
|
1574
|
+
```
|
|
1575
|
+
bridges in-process bridges running { transports: [ 'telegram' ] }
|
|
1576
|
+
```
|
|
1577
|
+
|
|
1578
|
+
Absence of that line means nothing started.
|
package/assets/helps/sandbox.md
CHANGED
|
@@ -23,11 +23,11 @@ The container runs with `--cap-drop ALL` and as the host user's UID/GID, so it h
|
|
|
23
23
|
|
|
24
24
|
## Disabling the Sandbox
|
|
25
25
|
|
|
26
|
-
Set the environment variable `DISABLE_SANDBOX=1` to always run the agent directly on the host, even when Docker is available. Equivalently, pass the `--disable-sandbox` CLI flag — `
|
|
26
|
+
Set the environment variable `DISABLE_SANDBOX=1` to always run the agent directly on the host, even when Docker is available. Equivalently, pass the `--disable-sandbox` CLI flag — `yarn dev --disable-sandbox`, `yarn server --disable-sandbox` or `npx mulmoclaude --disable-sandbox`. The flag form is handy on Windows PowerShell (no inline `VAR=value` syntax), in IDE / launcher run configs, and for quick ad-hoc debugging. Both set the same internal switch; the env var stays supported in parallel.
|
|
27
27
|
|
|
28
28
|
## Debug aids (opt-in env vars)
|
|
29
29
|
|
|
30
|
-
These flags exist for development / debugging only. Off by default so production runs aren't surprised. Each has an equivalent `--flag` CLI form (drop the `=1`, kebab-case the name) accepted by `
|
|
30
|
+
These flags exist for development / debugging only. Off by default so production runs aren't surprised. Each has an equivalent `--flag` CLI form (drop the `=1`, kebab-case the name) accepted by `yarn dev`, `yarn server` and `npx mulmoclaude` — e.g. `DISABLE_SANDBOX=1` ≡ `--disable-sandbox`, `PERSIST_TOOL_CALLS=1` ≡ `--persist-tool-calls`, `DISABLE_MACOS_REMINDER_NOTIFICATIONS=1` ≡ `--disable-macos-reminders`, `JOURNAL_FORCE_RUN_ON_STARTUP=1` ≡ `--journal-force-run`, `CHAT_INDEX_FORCE_RUN_ON_STARTUP=1` ≡ `--chat-index-force-run`. Secret-bearing vars (auth token, API keys) have no flag form on purpose — argv is visible via `ps` / shell history.
|
|
31
31
|
|
|
32
32
|
- `DISABLE_SANDBOX=1` — see above. Bypasses the Docker sandbox.
|
|
33
33
|
- `PERSIST_TOOL_CALLS=1` — also persist `tool_call` events to the session jsonl alongside `tool_result`. Useful for reading the args sent to a tool after the run is over (page refresh / server restart). Off by default because args can be large and may carry payload bytes (inline images, full MulmoScript JSON) you didn't expect to land in the jsonl. See [issue #1096](https://github.com/receptron/mulmoclaude/issues/1096) for the rationale.
|