@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**, while the app itself runs on >= 20.12,
553
- so on an older runtime ONLY sqlite-backed collections break (file and
554
- dataSource collections keep working) and every operation fails with
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
- unhandled rejection — exiting: …` or `[<transport>] uncaught exception —
1396
- exiting: …`, naming the transport. A bridge stopped on purpose names the
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 *wrong*
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 yarn dev
1531
+ yarn dev --allow-multiple-instances # or MULMOCLAUDE_ALLOW_MULTIPLE_INSTANCES=1
1531
1532
  ```
1532
1533
 
1533
- Use the env var for `yarn dev`. The `--allow-multiple-instances` flag works on
1534
- `npx mulmoclaude` and `yarn server`, but **not** on `yarn dev`: that is a compound
1535
- `a && b && c` script, yarn appends extra args to the last command only, and the
1536
- guard that stops the launch runs in the first one.
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.
@@ -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 — `npx mulmoclaude --disable-sandbox` or `yarn server --disable-sandbox` (**not** `yarn dev`, whose compound script drops trailing args; use the env var there). 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.
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 `npx mulmoclaude` and `yarn server` — but **not** `yarn dev`, which drops trailing args — 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.
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.