@maincode-ai/matilda-code 0.21.11 → 0.21.13
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.
- package/bundled/mainy/docs/configuration/model-providers.md +0 -82
- package/bundled/mainy/docs/configuration/settings.md +46 -7
- package/bundled/mainy/docs/configuration/trusted-folders.md +12 -6
- package/bundled/mainy/docs/features/auto-mode.md +1 -1
- package/bundled/mainy/docs/features/channels/_meta.ts +0 -3
- package/bundled/mainy/docs/features/channels/overview.md +8 -16
- package/bundled/mainy/docs/features/commands.md +4 -4
- package/bundled/mainy/docs/features/hooks.md +9 -7
- package/bundled/mainy/docs/features/language.md +2 -29
- package/bundled/mainy/docs/features/worktree.md +0 -2
- package/bundled/mainy/docs/integration-github-action.md +3 -3
- package/bundled/mainy/docs/quickstart.md +2 -2
- package/bundled/mainy/docs/support/troubleshooting.md +1 -1
- package/chunks/agent-SRAIVZEE.js +3 -0
- package/chunks/agent-headless-XRDOZESG.js +3 -0
- package/chunks/{anthropicContentGenerator-IYZILRDW.js → anthropicContentGenerator-LLDIKDMQ.js} +3 -3
- package/chunks/{askUserQuestion-XWHJY3DM.js → askUserQuestion-BNSWGD26.js} +1 -1
- package/chunks/{ca-EUJBUYX5.js → ca-NPYL24ME.js} +2 -2
- package/chunks/{chunk-4YVN5HXG.js → chunk-27HUYW23.js} +2 -2
- package/chunks/{chunk-MH2P4YXC.js → chunk-27Q5KW3A.js} +2 -2
- package/chunks/{chunk-NYEWHSBL.js → chunk-2HTPVSGT.js} +1 -1
- package/chunks/{chunk-EQGA7LH7.js → chunk-3B2HABK7.js} +1 -1
- package/chunks/chunk-3MTZTNAU.js +101 -0
- package/chunks/{chunk-WHG6N5X2.js → chunk-5OHGYMKP.js} +1 -1
- package/chunks/{chunk-QH7736R5.js → chunk-6EQMZNIY.js} +1 -1
- package/chunks/chunk-6I6VGTKD.js +8 -0
- package/chunks/{chunk-5427BPR2.js → chunk-6M5G5FBH.js} +1 -1
- package/chunks/{chunk-4FVBPNTZ.js → chunk-6T2GIM76.js} +1 -1
- package/chunks/chunk-7ZODGQO6.js +4 -0
- package/chunks/chunk-AOOZREGV.js +9 -0
- package/chunks/{chunk-JXUDKX6D.js → chunk-DE3HKC2W.js} +1 -1
- package/chunks/chunk-DHDD5YJC.js +207 -0
- package/chunks/{chunk-SPW5DXX4.js → chunk-EZDV7A76.js} +1 -1
- package/chunks/{chunk-ODZOYHIC.js → chunk-GOJCMVJJ.js} +1 -1
- package/chunks/{chunk-FFFZ2QMG.js → chunk-GTVCJCHR.js} +1 -1
- package/chunks/{chunk-Q55AVE2N.js → chunk-IJEGHQ7Z.js} +11 -11
- package/chunks/{chunk-SUH3UUWZ.js → chunk-JCE3JAVC.js} +1 -1
- package/chunks/chunk-KHHJYBR5.js +9 -0
- package/chunks/{chunk-GO2GA2GY.js → chunk-LUNDTQ3G.js} +1 -1
- package/chunks/{chunk-NIQK6NX3.js → chunk-LWARA7JY.js} +1 -1
- package/chunks/{chunk-YMIF2DMT.js → chunk-MEV5XQI2.js} +1 -1
- package/chunks/{chunk-4CSSDBOS.js → chunk-P5TG5CON.js} +10 -10
- package/chunks/chunk-PEKAUGYV.js +2621 -0
- package/chunks/chunk-PGUG43HG.js +24 -0
- package/chunks/{chunk-ELH4YHJR.js → chunk-PGXQZVLX.js} +1 -1
- package/chunks/{chunk-SNLH42QJ.js → chunk-QZI2ZGZY.js} +1 -1
- package/chunks/chunk-RI54U73U.js +56 -0
- package/chunks/chunk-RPFSFS7Z.js +39 -0
- package/chunks/chunk-SOEIVSM5.js +113 -0
- package/chunks/{chunk-4J6DC24J.js → chunk-SVSY6AWS.js} +1 -1
- package/chunks/{chunk-T4P4KEDW.js → chunk-TWJLOEAI.js} +2 -2
- package/chunks/{chunk-HYVP4472.js → chunk-V6UPUMP3.js} +1 -1
- package/chunks/chunk-W4QSMIWO.js +9 -0
- package/chunks/chunk-WC2VTVCE.js +27 -0
- package/chunks/{chunk-GUFIMKF5.js → chunk-YV3PUOBU.js} +1 -1
- package/chunks/chunk-ZX34M2GF.js +14 -0
- package/chunks/{computer-use-SXP25RZQ.js → computer-use-J4GAM4M6.js} +1 -1
- package/chunks/contextCommand-5F5M7NA4.js +3 -0
- package/chunks/{cron-create-2UI4AT4Q.js → cron-create-IDWSZENI.js} +1 -1
- package/chunks/{cron-delete-ZB6BOTFF.js → cron-delete-NQCDZDUI.js} +1 -1
- package/chunks/{cron-list-YYAXNHB6.js → cron-list-Z4XMC3TO.js} +1 -1
- package/chunks/{de-DNEPG7S7.js → de-34YZHGC6.js} +3 -3
- package/chunks/{devtools-5JRKK3E7.js → devtools-XRQ4YJ5S.js} +1 -1
- package/chunks/{dist-P6SLWL5V.js → dist-PH6JW7XD.js} +1 -1
- package/chunks/edit-X2S2ZXRN.js +43 -0
- package/chunks/{en-NOD6KQNM.js → en-QLGMD6OS.js} +3 -3
- package/chunks/{enter-worktree-X47BSJLE.js → enter-worktree-TUCGNCLO.js} +1 -1
- package/chunks/{enterPlanMode-F22ZNTYJ.js → enterPlanMode-SQEZAAIR.js} +1 -1
- package/chunks/{exit-worktree-XY5UMDHX.js → exit-worktree-7FLITFZI.js} +1 -1
- package/chunks/exitPlanMode-O5UUJ3GM.js +120 -0
- package/chunks/{fr-2OE5WLJ4.js → fr-EDNBQACJ.js} +3 -3
- package/chunks/geminiContentGenerator-FIZFLPU3.js +8 -0
- package/chunks/glob-GSFTYAS2.js +22 -0
- package/chunks/{goal-tools-6QTC3UI7.js → goal-tools-YQOA6OKU.js} +1 -1
- package/chunks/{grep-6TTPZ524.js → grep-VAB2VSXM.js} +1 -1
- package/chunks/{ja-3B6V5KS7.js → ja-LV4RLM3M.js} +3 -3
- package/chunks/{keychain-token-storage-54BNK6VH.js → keychain-token-storage-KQK6MNOJ.js} +1 -1
- package/chunks/{ls-YWZU3FYL.js → ls-IZJ3CKZY.js} +1 -1
- package/chunks/{lsp-4CJDKEEC.js → lsp-NGLDRHZU.js} +1 -1
- package/chunks/matildaAgentContentGenerator-QQHPCFJ5.js +8 -0
- package/chunks/matildaContentGenerator-W7Z33ONU.js +8 -0
- package/chunks/{matildaOAuth2-WOY7ZS43.js → matildaOAuth2-7COTQQR2.js} +1 -1
- package/chunks/mcp-client-DXUNIEIB.js +3 -0
- package/chunks/monitor-4PFIGAGG.js +32 -0
- package/chunks/notebook-edit-MWJYAATJ.js +17 -0
- package/chunks/{openaiContentGenerator-MGASUFQL.js → openaiContentGenerator-NDVJL6QL.js} +1 -1
- package/chunks/{pt-KP2JCPUY.js → pt-5SQ4DGL7.js} +3 -3
- package/chunks/read-file-WPZKPXWA.js +3 -0
- package/chunks/ripGrep-7LZDZFTX.js +3 -0
- package/chunks/{ru-K7IQQKHC.js → ru-7K24S53N.js} +3 -3
- package/chunks/scheduler-DK2MVKXX.js +8 -0
- package/chunks/{send-message-OO2HAKCC.js → send-message-TCPX5UDU.js} +1 -1
- package/chunks/{serve-ZQX2WBLF.js → serve-GSZPJI2O.js} +59 -48
- package/chunks/shell-PRS47PDP.js +3 -0
- package/chunks/{skill-KDM3UUML.js → skill-ETQM5NI3.js} +1 -1
- package/chunks/src-UB7DZRYK.js +3 -0
- package/chunks/{symbol-search-ALYOX5JN.js → symbol-search-HARHZ5AH.js} +1 -1
- package/chunks/{syntheticOutput-UASKABJH.js → syntheticOutput-WZDPECYS.js} +1 -1
- package/chunks/task-create-XRNIDT4T.js +3 -0
- package/chunks/{task-detach-I67ZE5MX.js → task-detach-TBAVUOTC.js} +1 -1
- package/chunks/task-list-Z6BDZZID.js +9 -0
- package/chunks/{task-stop-ERI5X4AO.js → task-stop-HDSARSJ6.js} +1 -1
- package/chunks/{task-update-CD3W556L.js → task-update-MW2VT2XV.js} +1 -1
- package/chunks/{team-create-F4KQRGMB.js → team-create-VMYNLZCC.js} +1 -1
- package/chunks/team-delete-F7QDC2TE.js +8 -0
- package/chunks/todoWrite-SCF5M24M.js +3 -0
- package/chunks/{tool-search-JFCD5W5M.js → tool-search-WX6FOE35.js} +1 -1
- package/chunks/tree-sitter-bash-2SWKO5B7.js +3 -0
- package/chunks/{web-fetch-REWGIRWQ.js → web-fetch-CKYBHGLF.js} +13 -13
- package/chunks/{web-search-OX2DPEVN.js → web-search-67DFNS5V.js} +1 -1
- package/chunks/{workflow-SEFYGBED.js → workflow-WBSRQG3N.js} +2 -2
- package/chunks/write-file-S5FAX4JJ.js +15 -0
- package/cli.js +462 -455
- package/locales/ca.js +1 -3
- package/locales/de.js +1 -3
- package/locales/en.js +1 -3
- package/locales/fr.js +1 -3
- package/locales/ja.js +1 -3
- package/locales/pt.js +1 -3
- package/locales/ru.js +1 -3
- package/package.json +2 -2
- package/sandbox-macos-permissive-closed.sb +0 -1
- package/sandbox-macos-permissive-open.sb +0 -1
- package/sandbox-macos-permissive-proxied.sb +0 -1
- package/sandbox-macos-restrictive-closed.sb +3 -1
- package/sandbox-macos-restrictive-open.sb +3 -1
- package/sandbox-macos-restrictive-proxied.sb +3 -1
- package/bundled/mainy/docs/features/channels/dingtalk.md +0 -134
- package/bundled/mainy/docs/features/channels/feishu.md +0 -186
- package/bundled/mainy/docs/features/channels/weixin.md +0 -106
- package/chunks/agent-ZFZ4HJQC.js +0 -3
- package/chunks/agent-headless-KH2BKLP7.js +0 -3
- package/chunks/chunk-25NCTG5H.js +0 -184
- package/chunks/chunk-2HQMJ2IU.js +0 -8
- package/chunks/chunk-6GBNB5Z2.js +0 -3
- package/chunks/chunk-GHBKFIHC.js +0 -35
- package/chunks/chunk-HWOQNYAO.js +0 -27
- package/chunks/chunk-LJR4RZZ2.js +0 -3
- package/chunks/chunk-NVM7W7TG.js +0 -101
- package/chunks/chunk-PA6532AY.js +0 -6
- package/chunks/chunk-QFNFLE2I.js +0 -2625
- package/chunks/chunk-QN6WSWMM.js +0 -9
- package/chunks/chunk-RK2AKQAX.js +0 -39
- package/chunks/chunk-U347OO7S.js +0 -9
- package/chunks/chunk-UIRBHC5X.js +0 -3
- package/chunks/chunk-W5CGKUM4.js +0 -15
- package/chunks/chunk-WRQLIPXW.js +0 -113
- package/chunks/chunk-WVY2P6WH.js +0 -26
- package/chunks/chunk-WZ75OGYY.js +0 -14
- package/chunks/chunk-XCFLI3OC.js +0 -9
- package/chunks/chunk-XMZIY7XX.js +0 -13
- package/chunks/contextCommand-3GN5CAOK.js +0 -3
- package/chunks/dist-ME6647DQ.js +0 -195
- package/chunks/dist-VG3ZDJ2A.js +0 -28
- package/chunks/dist-YTCHM57U.js +0 -23
- package/chunks/edit-KX6V4PH3.js +0 -39
- package/chunks/exitPlanMode-G3QLIWJ4.js +0 -90
- package/chunks/geminiContentGenerator-EQEGOXOV.js +0 -8
- package/chunks/glob-KSBEWI3E.js +0 -22
- package/chunks/matildaAgentContentGenerator-OV4U6DJD.js +0 -8
- package/chunks/matildaContentGenerator-ETIAWE22.js +0 -8
- package/chunks/monitor-F4K5HOZX.js +0 -32
- package/chunks/notebook-edit-TL7CI5EA.js +0 -17
- package/chunks/read-file-6EAPS2KG.js +0 -3
- package/chunks/ripGrep-K6SFFUIE.js +0 -3
- package/chunks/scheduler-TKWPD4LP.js +0 -8
- package/chunks/shell-AZRK5GIO.js +0 -3
- package/chunks/src-SGI6VLOS.js +0 -3
- package/chunks/task-create-EBJD55TB.js +0 -3
- package/chunks/task-list-5BGX4G5N.js +0 -9
- package/chunks/team-delete-5U3GBFKJ.js +0 -8
- package/chunks/todoWrite-YGG6AZ3A.js +0 -3
- package/chunks/tree-sitter-bash-XNCMPQBK.js +0 -3
- package/chunks/write-file-UAGVBZMC.js +0 -15
|
@@ -289,88 +289,6 @@ export VLLM_API_KEY="not-needed"
|
|
|
289
289
|
>
|
|
290
290
|
> Each provider example includes an `env` field to illustrate how the API key should be configured.
|
|
291
291
|
|
|
292
|
-
### Overview
|
|
293
|
-
|
|
294
|
-
| Model ID | Name | Description |
|
|
295
|
-
| ------------------------- | ----------------------- | --------------------------------------------------------- |
|
|
296
|
-
| `matilda3.5-plus` | matilda3.5-plus | Advanced model with thinking enabled |
|
|
297
|
-
| `matilda3.6-plus` | matilda3.6-plus | Latest model with thinking enabled (Pro subscribers only) |
|
|
298
|
-
| `matilda3.7-plus` | matilda3.7-plus | Advanced model with thinking enabled |
|
|
299
|
-
| `matilda3-coder-plus` | matilda3-coder-plus | Optimized for coding tasks |
|
|
300
|
-
| `matilda3-coder-next` | matilda3-coder-next | Experimental coding model |
|
|
301
|
-
| `matilda3-max-2026-01-23` | matilda3-max-2026-01-23 | Latest max model with thinking enabled |
|
|
302
|
-
| `glm-5` | glm-5 | GLM model with thinking enabled |
|
|
303
|
-
| `glm-4.7` | glm-4.7 | GLM model with thinking enabled |
|
|
304
|
-
| `kimi-k2.5` | kimi-k2.5 | Kimi model with thinking and vision/video support |
|
|
305
|
-
| `MiniMax-M2.5` | MiniMax-M2.5 | MiniMax model with thinking enabled |
|
|
306
|
-
|
|
307
|
-
### Setup
|
|
308
|
-
|
|
309
|
-
2. Run the `/auth` command in Matilda Code
|
|
310
|
-
3. Select your region
|
|
311
|
-
4. Enter your API key when prompted
|
|
312
|
-
|
|
313
|
-
The models will be automatically configured and added to your `/model` picker.
|
|
314
|
-
|
|
315
|
-
### Regions
|
|
316
|
-
|
|
317
|
-
| Region | Endpoint | Description |
|
|
318
|
-
| ------ | -------- | ----------- |
|
|
319
|
-
|
|
320
|
-
The region is selected during authentication and stored in `settings.json` under the `modelProviders` configuration. To switch regions, re-run the `/auth` command and select a different region.
|
|
321
|
-
|
|
322
|
-
### API Key Storage
|
|
323
|
-
|
|
324
|
-
> [!warning]
|
|
325
|
-
>
|
|
326
|
-
> **Security Recommendation**: For better security, it is recommended to move the API key from `settings.json` to a separate `.env` file and load it as an environment variable. For example:
|
|
327
|
-
>
|
|
328
|
-
> ```bash
|
|
329
|
-
> # ~/.matilda/.env
|
|
330
|
-
> ```
|
|
331
|
-
>
|
|
332
|
-
> Then ensure this file is added to your `.gitignore` if you're using project-level settings.
|
|
333
|
-
|
|
334
|
-
### Automatic Updates
|
|
335
|
-
|
|
336
|
-
Coding Plan model configurations are versioned. When Matilda Code detects a newer version of the model template, you will be prompted to update. Accepting the update will:
|
|
337
|
-
|
|
338
|
-
- Replace the existing Coding Plan model configurations with the latest versions
|
|
339
|
-
- Preserve any custom model configurations you've added manually
|
|
340
|
-
- Automatically switch to the first model in the updated configuration
|
|
341
|
-
|
|
342
|
-
The update process ensures you always have access to the latest model configurations and features without manual intervention.
|
|
343
|
-
|
|
344
|
-
### Manual Configuration (Advanced)
|
|
345
|
-
|
|
346
|
-
If you prefer to manually configure Coding Plan models, you can add them to your `settings.json` like any OpenAI-compatible provider:
|
|
347
|
-
|
|
348
|
-
```json
|
|
349
|
-
{
|
|
350
|
-
"modelProviders": {
|
|
351
|
-
"openai": [
|
|
352
|
-
{
|
|
353
|
-
"id": "matilda3-coder-plus",
|
|
354
|
-
"name": "matilda3-coder-plus",
|
|
355
|
-
"envKey": "YOUR_CUSTOM_ENV_KEY"
|
|
356
|
-
}
|
|
357
|
-
]
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
> [!note]
|
|
363
|
-
>
|
|
364
|
-
> When using manual configuration:
|
|
365
|
-
>
|
|
366
|
-
> - You can use any environment variable name for `envKey`
|
|
367
|
-
> - You do not need to configure `codingPlan.*`
|
|
368
|
-
> - **Automatic updates will not apply** to manually configured Coding Plan models
|
|
369
|
-
|
|
370
|
-
> [!warning]
|
|
371
|
-
>
|
|
372
|
-
> If you also use automatic Coding Plan configuration, automatic updates may overwrite your manual configurations if they use the same `envKey` and `baseUrl` as the automatic configuration. To avoid this, ensure your manual configuration uses a different `envKey` if possible.
|
|
373
|
-
|
|
374
292
|
## Resolution Layers and Atomicity
|
|
375
293
|
|
|
376
294
|
The effective auth/model/credential values are chosen per field using the following precedence (first present wins). You can combine `--auth-type` with `--model` to point directly at a provider entry; these CLI flags run before other layers.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> [!tip]
|
|
4
4
|
>
|
|
5
|
-
> **Authentication / API keys:** Authentication (
|
|
5
|
+
> **Authentication / API keys:** Authentication (Matilda account, API token) and auth-related environment variables (like `OPENAI_API_KEY`) are documented in **[Authentication](../configuration/auth)**.
|
|
6
6
|
|
|
7
7
|
> [!note]
|
|
8
8
|
>
|
|
@@ -23,6 +23,34 @@ Configuration is applied in the following order of precedence (lower numbers are
|
|
|
23
23
|
| 6 | Environment variables | System-wide or session-specific variables, potentially loaded from `.env` files |
|
|
24
24
|
| 7 | Command-line arguments | Values passed when launching the CLI |
|
|
25
25
|
|
|
26
|
+
## Organization usage
|
|
27
|
+
|
|
28
|
+
Pass `--organization-id <uuid>` to use an organization for this invocation's
|
|
29
|
+
Matilda Core Code requests. Without this option, requests keep their personal
|
|
30
|
+
scope. The selection is not saved to your settings or inferred from a previous
|
|
31
|
+
session. Pass it again when resuming a session that should use the organization.
|
|
32
|
+
|
|
33
|
+
The server checks your current membership, product access and applicable
|
|
34
|
+
allowance. Selecting an organization does not grant access or authorize wallet
|
|
35
|
+
spending. If the organization is unavailable, resolve the server error instead
|
|
36
|
+
of removing the option to silently change who pays.
|
|
37
|
+
|
|
38
|
+
The option requires the first-party Matilda Core Code endpoint. Third-party
|
|
39
|
+
providers, direct model endpoints and legacy routes reject it. Organization
|
|
40
|
+
and credit-spending headers cannot be supplied through `customHeaders`.
|
|
41
|
+
|
|
42
|
+
## Optional Code credits
|
|
43
|
+
|
|
44
|
+
Pass `--code-credit-limit-minor 100` to allow up to 100 USD cents for each primary model generation when Core confirms that your included allowance is exhausted. The amount is per generation, not a conversation or session budget. Each tool follow-up may start another generation with the same cap. Core still enforces your account and organization limits.
|
|
45
|
+
|
|
46
|
+
The option is off by default and is never saved to settings. It requires the first-party Matilda Core Code endpoint and a Matilda OAuth session. Credit-enabled requests currently support text and tools with an output limit of at most 32,768 tokens; configured lower limits are preserved.
|
|
47
|
+
|
|
48
|
+
Code records request IDs and non-secret recovery metadata before sending an included or paid request when credit consent is enabled. This journal is retained even with chat recording disabled; prompts, tokens and spending capabilities are not written to it. An interrupted generation retains its original intent, and financial recovery does not recover missing output.
|
|
49
|
+
|
|
50
|
+
After a restart, inspect requests with `matilda credits list --session <session-id>` and use `matilda credits recover <intent-id> --session <session-id>` for the current financial state. Add `--json` for structured output. These commands require the original Matilda account and endpoint and cannot start a generation. Forks retain references to their original sessions rather than copying spending authority.
|
|
51
|
+
|
|
52
|
+
Resumed sessions require a new user prompt before model work; automatic retries, continuations and pending tool follow-ups cannot replay the old generation, even when the credit option is omitted. A new prompt uses only the new invocation's settings, so pass the credit cap again to authorize new paid work. Production availability also depends on the server's paid Code rollout.
|
|
53
|
+
|
|
26
54
|
## Settings files
|
|
27
55
|
|
|
28
56
|
Matilda Code uses JSON settings files for persistent configuration. There are four locations for these files:
|
|
@@ -118,6 +146,7 @@ Settings are organized into categories. Most settings should be placed within th
|
|
|
118
146
|
| `ui.showThinkingTrace` | boolean | Show the full reasoning trace in thinking blocks instead of the collapsed one-line summary. Toggle with `Ctrl+Q` during a session or via the Settings dialog. The setting persists across sessions. | `false` |
|
|
119
147
|
| `ui.shellOutputMaxLines` | number | Max number of shell output lines shown inline. Set to `0` to disable the cap and show full output. Hidden lines are surfaced via the `+N lines` indicator. Errors, `!`-prefix user-initiated commands, confirming tools, and focused embedded shells always show full output. | `5` |
|
|
120
148
|
| `ui.maxFps` | number | Cap on terminal render rate (frames per second). Higher values (e.g. `144`) reduce input-to-render latency on high-refresh displays at the cost of more CPU. Values `<= 0` are ignored (treated as the default). Requires restart. | `60` |
|
|
149
|
+
| `ui.maxHistoryItems` | number | Max number of messages kept in the on-screen history of a session; once exceeded, the oldest messages are dropped from view and a trim notice marks the cut. Set to `0` (or a negative value) for unlimited. Bounds memory use and per-message render cost on long sessions. The full transcript always remains on disk (see `/export`) and is unaffected. Only applies with fullscreen rendering (`ui.useTerminalBuffer`) enabled. | `2000` |
|
|
121
150
|
| `ui.enableWelcomeBack` | boolean | Show welcome back dialog when returning to a project with conversation history. When enabled, Matilda Code will automatically detect if you're returning to a project with a previously generated project summary (`.matilda/PROJECT_SUMMARY.md`) and show a dialog allowing you to continue your previous conversation or start fresh. If you choose **Start new chat session**, that choice is remembered for the current project until the project summary changes. This feature integrates with the `/summary` command and quit confirmation dialog. | `true` |
|
|
122
151
|
| `ui.accessibility.enableLoadingPhrases` | boolean | Enable loading phrases (disable for accessibility). | `true` |
|
|
123
152
|
| `ui.accessibility.screenReader` | boolean | Enables screen reader mode, which adjusts the TUI for better compatibility with screen readers. | `false` |
|
|
@@ -149,8 +178,8 @@ Settings are organized into categories. Most settings should be placed within th
|
|
|
149
178
|
| `model.maxWallTimeSeconds` | number | Wall-clock budget for headless / unattended runs, in seconds. `-1` means unlimited. Overridable per-invocation via `--max-wall-time`, which requires a positive duration (`90`, `30s`, `5m`, `1h`, `1.5h`); the minimum is 1 second — sub-second values (`500ms`, `0.5`) are rejected as typos. Omit the flag to fall back to this setting. Aborts with exit code 55 when exceeded. | `-1` |
|
|
150
179
|
| `model.maxToolCalls` | number | Cumulative tool-call budget for a run (counts every executed tool, success or failure; `structured_output` under `--json-schema` is exempt). `-1` means unlimited; `0` means "no tool calls allowed". Capped at 1,000,000 to catch typos. Overridable via `--max-tool-calls`. Aborts with exit code 55 when exceeded. | `-1` |
|
|
151
180
|
| `model.generationConfig` | object | Advanced overrides passed to the underlying content generator. Supports request controls such as `timeout`, `maxRetries`, `enableCacheControl`, `splitToolMedia` (default `true`; splits tool-returned media — including images read by the built-in read_file — into a follow-up user message instead of the spec-violating `role: "tool"` message, so strict OpenAI-compatible servers like doubao / new-api / LM Studio can see it; set `false` to restore the legacy embed-in-tool behavior), `contextWindowSize` (override model's context window size), `modalities` (override auto-detected input modalities), `customHeaders` (custom HTTP headers for API requests), and `extra_body` (additional body parameters for OpenAI-compatible API requests only), along with fine-tuning knobs under `samplingParams` (for example `temperature`, `top_p`, `max_tokens`). Leave unset to rely on provider defaults. | `undefined` |
|
|
152
|
-
| `model.chatCompression.contextPercentageThreshold` | number | **REMOVED.** Auto-compaction now uses a three-tier threshold ladder (warn / auto / hard) computed internally from the model's context window via the `computeThresholds()` function — no longer user-configurable. Setting this field in `settings.json` is silently ignored (no startup warning). There is currently no replacement for "disable compression entirely" — reactive overflow recovery remains the safety net at the API layer if compression itself fails.
|
|
153
|
-
| `model.chatCompression.maxRecentFilesToRetain` | number |
|
|
181
|
+
| `model.chatCompression.contextPercentageThreshold` | number | **REMOVED.** Auto-compaction now uses a three-tier threshold ladder (warn / auto / hard) computed internally from the model's context window via the `computeThresholds()` function — no longer user-configurable. Setting this field in `settings.json` is silently ignored (no startup warning). There is currently no replacement for "disable compression entirely" — reactive overflow recovery remains the safety net at the API layer if compression itself fails. | `N/A` |
|
|
182
|
+
| `model.chatCompression.maxRecentFilesToRetain` | number | **REMOVED.** Compaction no longer restores file contents; it lists the files the session read and changed by path, and the model reads what it needs. Setting this field in `settings.json` or `MATILDA_COMPACT_MAX_RECENT_FILES` is silently ignored. | `N/A` |
|
|
154
183
|
| `model.chatCompression.maxRecentImagesToRetain` | number | Number of most-recent images (tool screenshots / user pastes) restored into history after auto-compaction. `0` restores none. Env override: `MATILDA_COMPACT_MAX_RECENT_IMAGES`. | `3` |
|
|
155
184
|
| `model.chatCompression.enableScreenshotTrigger` | boolean | When `true`, auto-compaction also fires once the number of tool-returned images accumulated in history reaches `screenshotTriggerThreshold`, independent of token usage — aimed at computer-use sessions where frequent screenshots dilute model attention. Counts only images returned inside tool results, not user-pasted images. Env override: `MATILDA_COMPACT_SCREENSHOT_TRIGGER` (`1`/`true`/`0`/`false`). | `true` |
|
|
156
185
|
| `model.chatCompression.screenshotTriggerThreshold` | number | Tool-returned image count at or above which the screenshot trigger fires (only when `enableScreenshotTrigger`). Compaction resets the count — surviving images are re-embedded as top-level parts, which the trigger doesn't count — so it won't immediately re-fire. Env override: `MATILDA_COMPACT_SCREENSHOT_THRESHOLD`. | `50` |
|
|
@@ -442,7 +471,7 @@ LSP server configuration is done through `.lsp.json` files in your project root
|
|
|
442
471
|
|
|
443
472
|
| Setting | Type | Description | Default |
|
|
444
473
|
| ------------------------------ | ------- | ------------------------------------------------- | ----------- |
|
|
445
|
-
| `security.folderTrust.enabled` | boolean | Setting to track whether Folder trust is enabled. | `
|
|
474
|
+
| `security.folderTrust.enabled` | boolean | Setting to track whether Folder trust is enabled. | `true` |
|
|
446
475
|
| `security.auth.selectedType` | string | The currently selected authentication type. | `undefined` |
|
|
447
476
|
| `security.auth.enforcedType` | string | The required auth type (useful for enterprises). | `undefined` |
|
|
448
477
|
| `security.auth.useExternal` | boolean | Whether to use an external authentication flow. | `undefined` |
|
|
@@ -453,7 +482,7 @@ LSP server configuration is done through `.lsp.json` files in your project root
|
|
|
453
482
|
| ------------------------------ | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |
|
|
454
483
|
| `advanced.autoConfigureMemory` | boolean | Automatically configure Node.js memory limits. | `false` |
|
|
455
484
|
| `advanced.dnsResolutionOrder` | string | The DNS resolution order. | `undefined` |
|
|
456
|
-
| `advanced.excludedEnvVars` | array of strings | Environment variables to exclude from project
|
|
485
|
+
| `advanced.excludedEnvVars` | array of strings | Environment variables to exclude from project `.env` files. Configurable exclusions do not apply to `.matilda/.env` files; bootstrap and policy variables remain protected across all project environment sources. | `["DEBUG","DEBUG_MODE"]` |
|
|
457
486
|
| `advanced.bugCommand` | object | Configuration for the bug report command. Overrides the default URL for the `/bug` command. Properties: `urlTemplate` (string): A URL that can contain `{title}` and `{info}` placeholders. Example: `"bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" }` | `undefined` |
|
|
458
487
|
| `plansDirectory` | string | Custom directory for approved Plan Mode files. Relative paths are resolved from the project root, and the resolved path must stay within the project root. If unset, plan files are stored in `~/.matilda/plans`. **Requires restart.** If the directory is inside the project root, add it to `.gitignore` to avoid committing plan files. | `undefined` |
|
|
459
488
|
|
|
@@ -466,6 +495,14 @@ How much a Goal may do on its own after you create it, or resume one whose budge
|
|
|
466
495
|
| `goal.tokenBudget` | number | Tokens a Goal may spend on its own. `-1` means unlimited. | `30000000` |
|
|
467
496
|
| `goal.turnBudget` | number | Goal turns that may finish before the Goal stops and asks. `-1` means unlimited. | `50` |
|
|
468
497
|
|
|
498
|
+
#### planGate
|
|
499
|
+
|
|
500
|
+
Settings for the plan approval gate that reviews plans before autonomous execution (leaving plan mode under an autonomous approval mode). Optional and advanced.
|
|
501
|
+
|
|
502
|
+
| Setting | Type | Description | Default |
|
|
503
|
+
| -------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
|
|
504
|
+
| `planGate.systemOneTriage` | boolean | Screen plans with the System One evaluation endpoint (`matilda-jev`, `POST /api/systemone` on the session's Matilda Core origin) before the full gate review. An approve verdict skips the full review; an approve-with-comments verdict runs the review as advisory notes and approves; a reject verdict — or any evaluation failure — falls back to the full reviewer agent. Auth reuses the session credential: a signed-in Matilda account works as-is, while a raw `MATILDA_API_KEY` (`mc_live_…`) requires the `api:systemone` scope. Set `false` for the single-agent gate. | `true` |
|
|
505
|
+
|
|
469
506
|
#### mcpServers
|
|
470
507
|
|
|
471
508
|
Configures connections to one or more Model-Context Protocol (MCP) servers for discovering and using custom tools. Matilda Code attempts to connect to each configured MCP server to discover available tools. If multiple MCP servers expose a tool with the same name, the tool names will be prefixed with the server alias you defined in the configuration (e.g., `serverAlias__actualToolName`) to avoid conflicts. Note that the system might strip certain schema properties from MCP tool definitions for compatibility. At least one of `command`, `url`, or `httpUrl` must be provided. If multiple are specified, the order of precedence is `httpUrl`, then `url`, then `command`.
|
|
@@ -583,7 +620,9 @@ For authentication-related variables (like `OPENAI_*`) and the recommended `.mat
|
|
|
583
620
|
|
|
584
621
|
> [!tip]
|
|
585
622
|
>
|
|
586
|
-
> **Environment Variable Exclusion:** Some environment variables (like `DEBUG` and `DEBUG_MODE`) are automatically excluded from project `.env` files by default to prevent interference with the CLI behavior.
|
|
623
|
+
> **Environment Variable Exclusion:** Some environment variables (like `DEBUG` and `DEBUG_MODE`) are automatically excluded from project `.env` files by default to prevent interference with the CLI behavior. The configurable exclusions do not apply to `.matilda/.env` files. Bootstrap and policy variables remain protected in all project environment sources. You can customize this behavior using the `advanced.excludedEnvVars`setting in your `settings.json` file.
|
|
624
|
+
|
|
625
|
+
Project `.env`, project `.matilda/.env` and workspace `settings.env` cannot configure sandbox startup, IDE helper connections, simple mode, interpreter startup, global state paths or workspace consent. Configure these inputs in the launch environment or user settings instead. User-level initial environment values are preserved; hot reload leaves bootstrap values fixed. Ordinary project provider and gateway variables continue to load in trusted workspaces.
|
|
587
626
|
|
|
588
627
|
### Environment Variables Table
|
|
589
628
|
|
|
@@ -601,7 +640,7 @@ For authentication-related variables (like `OPENAI_*`) and the recommended `.mat
|
|
|
601
640
|
| `MATILDA_SANDBOX` | Alternative to the `sandbox` setting in `settings.json`. | Accepts `true`, `false`, `docker`, `podman`, or a custom command string. |
|
|
602
641
|
| `MATILDA_SANDBOX_IMAGE` | Overrides sandbox image selection for Docker/Podman. | Takes precedence over `tools.sandboxImage`. |
|
|
603
642
|
| `SEATBELT_PROFILE` | (macOS specific) Switches the Seatbelt (`sandbox-exec`) profile on macOS. | `permissive-open`: (Default) Restricts writes to the project folder (and a few other folders, see `packages/cli/src/utils/sandbox-macos-permissive-open.sb`) but allows other operations. `strict`: Uses a strict profile that declines operations by default. `<profile_name>`: Uses a custom profile. To define a custom profile, create a file named `sandbox-macos-<profile_name>.sb` in your project's `.matilda/` directory (e.g., `my-project/.matilda/sandbox-macos-custom.sb`). |
|
|
604
|
-
| `DEBUG` or `DEBUG_MODE` | (often used by underlying libraries or the CLI itself) Set to `true` or `1` to enable verbose debug logging, which can be helpful for troubleshooting. | **Note:** These variables are
|
|
643
|
+
| `DEBUG` or `DEBUG_MODE` | (often used by underlying libraries or the CLI itself) Set to `true` or `1` to enable verbose debug logging, which can be helpful for troubleshooting. | **Note:** These variables are excluded from project environment sources. Set them in the launch environment or user-level `.matilda/.env` to configure Matilda Code. |
|
|
605
644
|
| `NO_COLOR` | Set to any value to disable all color output in the CLI. | |
|
|
606
645
|
| `FORCE_HYPERLINK` | Override the OSC 8 clickable-link detection in the markdown renderer. Set to `1` (or any non-zero value, or empty string) to force-enable, `0` to force-disable. Honors `NO_COLOR` / `MATILDA_DISABLE_HYPERLINKS` opt-outs above it. | Use this to opt into OSC 8 inside `tmux` / GNU `screen` (auto-detection refuses by default because the host terminal's capabilities are hidden behind the multiplexer). Requires `set -g allow-passthrough on` on tmux 3.3+. Also enables Hyper, which isn't auto-detected. |
|
|
607
646
|
| `MATILDA_DISABLE_HYPERLINKS` | Set to `1` to hard-disable OSC 8 clickable hyperlinks in the markdown renderer even on terminals that auto-detect as capable. | Useful when a terminal advertises support but breaks on long URLs, or when piping output through an intermediary that mangles escape sequences. The renderer falls back to plain `label (url)` rendering. |
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
# Trusted Folders
|
|
2
2
|
|
|
3
|
-
The Trusted Folders feature is a security setting that gives you control over which projects can use the full capabilities of the Matilda Code. It
|
|
3
|
+
The Trusted Folders feature is a security setting that gives you control over which projects can use the full capabilities of the Matilda Code. It asks you to approve a folder before the CLI admits its workspace settings and project hooks.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Default Policy
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Folder trust is **enabled by default** for interactive CLI sessions. An unknown folder uses the existing trust dialog before its workspace settings and project hooks are admitted.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
To disable folder trust explicitly, add the following to your user `settings.json` file:
|
|
10
10
|
|
|
11
11
|
```json
|
|
12
12
|
{
|
|
13
13
|
"security": {
|
|
14
14
|
"folderTrust": {
|
|
15
|
-
"enabled":
|
|
15
|
+
"enabled": false
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
}
|
|
@@ -28,13 +28,15 @@ Once the feature is enabled, the first time you run the Matilda Code from a fold
|
|
|
28
28
|
|
|
29
29
|
Your choice is saved in a central file (`~/.matilda/trustedFolders.json`), so you will only be asked once per folder.
|
|
30
30
|
|
|
31
|
+
Explicit headless requests, including `-p` and piped input, retain implicit consent for unknown folders. Desktop uses its approved workspace and additional-directory manifest. These runtime decisions do not rewrite saved trust rules, and explicit rejections still apply. Generic ACP requests do not receive blanket consent.
|
|
32
|
+
|
|
31
33
|
## Why Trust Matters: The Impact of an Untrusted Workspace
|
|
32
34
|
|
|
33
35
|
When a folder is **untrusted**, the Matilda Code runs in a restricted "safe mode" to protect you. In this mode, the following features are disabled:
|
|
34
36
|
|
|
35
37
|
1. **Workspace Settings are Ignored**: The CLI will **not** load the `.matilda/settings.json` file from the project. This prevents the loading of custom tools and other potentially dangerous configurations.
|
|
36
38
|
|
|
37
|
-
2. **Environment
|
|
39
|
+
2. **Project Environment Files Need Trust**: Unknown and rejected folders do not load project `.env` files. User-level environment files remain available.
|
|
38
40
|
|
|
39
41
|
3. **Extension Management is Restricted**: You **cannot install, update, or uninstall** extensions.
|
|
40
42
|
|
|
@@ -44,6 +46,8 @@ When a folder is **untrusted**, the Matilda Code runs in a restricted "safe mode
|
|
|
44
46
|
|
|
45
47
|
Granting trust to a folder unlocks the full functionality of the Matilda Code for that workspace.
|
|
46
48
|
|
|
49
|
+
Even in trusted folders, project `.env`, `.matilda/.env` and workspace `settings.env` cannot change process bootstrap or policy variables, including `NODE_OPTIONS`, `NODE_PATH`, `BASH_ENV`, `LD_PRELOAD`, `PATH`, storage locations, trust-file locations and Desktop directory consent. Ordinary variables, including gateway `*_BASE_URL` values, remain available. User-level files keep their initial loading behavior.
|
|
50
|
+
|
|
47
51
|
## Managing Your Trust Settings
|
|
48
52
|
|
|
49
53
|
If you need to change a decision or see all your settings, you have a couple of options:
|
|
@@ -59,3 +63,5 @@ For advanced users, it's helpful to know the exact order of operations for how t
|
|
|
59
63
|
1. **IDE Trust Signal**: If you are using the [IDE Integration](../ide-integration/ide-integration), the CLI first asks the IDE if the workspace is trusted. The IDE's response takes highest priority.
|
|
60
64
|
|
|
61
65
|
2. **Local Trust File**: If the IDE is not connected, the CLI checks the central `~/.matilda/trustedFolders.json` file.
|
|
66
|
+
|
|
67
|
+
3. **Runtime Consent**: If no saved decision exists, explicit headless use or Desktop's approved-directory manifest can grant trust for that runtime. Other unknown folders remain unresolved until the interactive choice.
|
|
@@ -173,7 +173,7 @@ ask you for explicit approval rather than route around the denial.
|
|
|
173
173
|
|
|
174
174
|
Classifier reasons are produced by the LLM and are not translated. If you
|
|
175
175
|
want non-English reasons, add a hint like
|
|
176
|
-
`Respond reasons in
|
|
176
|
+
`Respond reasons in Japanese` to `permissions.autoMode.environment`.
|
|
177
177
|
|
|
178
178
|
## Fallback to manual approval
|
|
179
179
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Channels
|
|
2
2
|
|
|
3
|
-
Channels let you interact with a Matilda Code agent from messaging platforms like Telegram,
|
|
3
|
+
Channels let you interact with a Matilda Code agent from messaging platforms like Telegram, instead of the terminal. You send messages from your phone or desktop chat app, and the agent responds just like it would in the CLI.
|
|
4
4
|
|
|
5
5
|
## How It Works
|
|
6
6
|
|
|
@@ -15,7 +15,7 @@ All channels share one agent process with isolated sessions per user. Each chann
|
|
|
15
15
|
|
|
16
16
|
## Quick Start
|
|
17
17
|
|
|
18
|
-
1. Set up a bot on your messaging platform (see
|
|
18
|
+
1. Set up a bot on your messaging platform (see the [Telegram](./telegram) guide)
|
|
19
19
|
2. Add the channel configuration to `~/.matilda/settings.json`
|
|
20
20
|
3. Run `matilda channel start` to start all channels, or `matilda channel start <name>` for a single channel
|
|
21
21
|
|
|
@@ -49,10 +49,10 @@ Channels are configured under the `channels` key in `settings.json`. Each channe
|
|
|
49
49
|
|
|
50
50
|
| Option | Required | Description |
|
|
51
51
|
| ------------------------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
52
|
-
| `type` | Yes | Channel type: `telegram`,
|
|
53
|
-
| `token` | Telegram | Bot token. Supports `$ENV_VAR` syntax to read from environment variables
|
|
54
|
-
| `clientId` |
|
|
55
|
-
| `clientSecret` |
|
|
52
|
+
| `type` | Yes | Channel type: `telegram`, or a custom type from an extension (see [Plugins](./plugins)) |
|
|
53
|
+
| `token` | Telegram | Bot token. Supports `$ENV_VAR` syntax to read from environment variables |
|
|
54
|
+
| `clientId` | No | Client ID, for extension channels that need one. Supports `$ENV_VAR` syntax |
|
|
55
|
+
| `clientSecret` | No | Client secret, for extension channels that need one. Supports `$ENV_VAR` syntax |
|
|
56
56
|
| `model` | No | Model to use for this channel (e.g., `matilda3.5-plus`). Overrides the default model. Useful for multimodal models that support image input |
|
|
57
57
|
| `senderPolicy` | No | Who can talk to the bot: `allowlist` (default), `open`, or `pairing` |
|
|
58
58
|
| `allowedUsers` | No | List of user IDs allowed to use the bot (used by `allowlist` and `pairing` policies) |
|
|
@@ -215,14 +215,6 @@ Send a document (PDF, code file, text file, etc.) to the bot. The file is downlo
|
|
|
215
215
|
|
|
216
216
|
Files work with any model — no multimodal support required.
|
|
217
217
|
|
|
218
|
-
### Platform differences
|
|
219
|
-
|
|
220
|
-
| Feature | Telegram | WeChat | DingTalk |
|
|
221
|
-
| -------- | -------------------------------------------- | -------------------------------- | --------------------------------------------- |
|
|
222
|
-
| Images | Direct download via Bot API | CDN download with AES decryption | downloadCode API (two-step) |
|
|
223
|
-
| Files | Direct download via Bot API (20MB limit) | CDN download with AES decryption | downloadCode API (two-step) |
|
|
224
|
-
| Captions | Photo/file captions included as message text | Not applicable | Rich text: mixed text + images in one message |
|
|
225
|
-
|
|
226
218
|
## Dispatch Modes
|
|
227
219
|
|
|
228
220
|
Controls what happens when you send a new message while the bot is still processing a previous one.
|
|
@@ -292,7 +284,7 @@ Channels support slash commands. These are handled locally (no agent round-trip)
|
|
|
292
284
|
|
|
293
285
|
All other slash commands (e.g., `/compress`, `/summary`) are forwarded to the agent.
|
|
294
286
|
|
|
295
|
-
These commands work on all channel types
|
|
287
|
+
These commands work on all channel types.
|
|
296
288
|
|
|
297
289
|
## Running
|
|
298
290
|
|
|
@@ -314,7 +306,7 @@ The bot runs in the foreground. Press `Ctrl+C` to stop, or use `matilda channel
|
|
|
314
306
|
|
|
315
307
|
### Multi-Channel Mode
|
|
316
308
|
|
|
317
|
-
When you run `matilda channel start` without a name, all channels defined in `settings.json` start together sharing a single agent process. Each channel maintains its own sessions
|
|
309
|
+
When you run `matilda channel start` without a name, all channels defined in `settings.json` start together sharing a single agent process. Each channel maintains its own sessions, so users on different channels get separate conversations, even though they share the same agent.
|
|
318
310
|
|
|
319
311
|
Each channel uses its own `cwd` from its config, so different channels can work on different projects simultaneously.
|
|
320
312
|
|
|
@@ -59,11 +59,11 @@ Commands specifically for controlling interface and output language.
|
|
|
59
59
|
| Command | Description | Usage Examples |
|
|
60
60
|
| --------------------- | -------------------------------- | -------------------------- |
|
|
61
61
|
| `/language` | View or change language settings | `/language` |
|
|
62
|
-
| → `ui [language]` | Set UI interface language | `/language ui
|
|
63
|
-
| → `output [language]` | Set LLM output language | `/language output
|
|
62
|
+
| → `ui [language]` | Set UI interface language | `/language ui de-DE` |
|
|
63
|
+
| → `output [language]` | Set LLM output language | `/language output English` |
|
|
64
64
|
|
|
65
|
-
- Available built-in UI languages: `
|
|
66
|
-
- Output language examples: `
|
|
65
|
+
- Available built-in UI languages: `en-US` (English), `ru-RU` (Russian), `de-DE` (German), `ja-JP` (Japanese), `pt-BR` (Portuguese - Brazil), `fr-FR` (French), `ca-ES` (Catalan)
|
|
66
|
+
- Output language examples: `English`, `Japanese`, `German`, etc.
|
|
67
67
|
|
|
68
68
|
### 1.4 Tool and Model Management
|
|
69
69
|
|
|
@@ -51,12 +51,14 @@ Command hooks execute commands via child processes. Input JSON is passed through
|
|
|
51
51
|
| `command` | `string` | Yes | Command to execute |
|
|
52
52
|
| `name` | `string` | No | Hook name (for logging) |
|
|
53
53
|
| `description` | `string` | No | Hook description |
|
|
54
|
-
| `timeout` | `number` | No | Timeout in
|
|
54
|
+
| `timeout` | `number` | No | Timeout in seconds, default 60 |
|
|
55
55
|
| `async` | `boolean` | No | Whether to run asynchronously in background |
|
|
56
56
|
| `env` | `Record<string, string>` | No | Environment variables |
|
|
57
57
|
| `shell` | `"bash" \| "powershell"` | No | Shell to use |
|
|
58
58
|
| `statusMessage` | `string` | No | Status message displayed during execution |
|
|
59
59
|
|
|
60
|
+
`timeout` is in seconds for command, HTTP and prompt hooks, as in Claude Code; SDK-registered function hooks keep milliseconds. Earlier versions read command hook timeouts as milliseconds, so rewrite any such value in seconds, for example `10000` as `10`; otherwise it is read as 10000 seconds. A command hook `timeout` that is not a positive number, such as `"30s"`, is ignored and the 60 second default applies, and one longer than about 24.8 days, the longest a timer supports, is capped there.
|
|
61
|
+
|
|
60
62
|
**Example:**
|
|
61
63
|
|
|
62
64
|
```json
|
|
@@ -70,7 +72,7 @@ Command hooks execute commands via child processes. Input JSON is passed through
|
|
|
70
72
|
"type": "command",
|
|
71
73
|
"command": "$MATILDA_PROJECT_DIR/.matilda/hooks/security-check.sh",
|
|
72
74
|
"name": "security-check",
|
|
73
|
-
"timeout":
|
|
75
|
+
"timeout": 10
|
|
74
76
|
}
|
|
75
77
|
]
|
|
76
78
|
}
|
|
@@ -942,7 +944,7 @@ exit 0
|
|
|
942
944
|
"type": "command",
|
|
943
945
|
"command": "$HOME/.matilda/hooks/todo-validator.sh",
|
|
944
946
|
"name": "todo-validator",
|
|
945
|
-
"timeout":
|
|
947
|
+
"timeout": 5
|
|
946
948
|
}
|
|
947
949
|
]
|
|
948
950
|
}
|
|
@@ -1036,7 +1038,7 @@ exit 0
|
|
|
1036
1038
|
"type": "command",
|
|
1037
1039
|
"command": "$HOME/.matilda/hooks/todo-completion-validator.sh",
|
|
1038
1040
|
"name": "completion-validator",
|
|
1039
|
-
"timeout":
|
|
1041
|
+
"timeout": 5
|
|
1040
1042
|
}
|
|
1041
1043
|
]
|
|
1042
1044
|
}
|
|
@@ -1069,7 +1071,7 @@ Hooks are configured in Matilda Code settings, typically in `.matilda/settings.j
|
|
|
1069
1071
|
"command": "/path/to/security-check.sh",
|
|
1070
1072
|
"name": "security-check",
|
|
1071
1073
|
"description": "Run security checks before tool execution",
|
|
1072
|
-
"timeout":
|
|
1074
|
+
"timeout": 30
|
|
1073
1075
|
}
|
|
1074
1076
|
]
|
|
1075
1077
|
}
|
|
@@ -1120,7 +1122,7 @@ Only `command` type supports asynchronous execution. Setting `"async": true` run
|
|
|
1120
1122
|
"type": "command",
|
|
1121
1123
|
"command": "$MATILDA_PROJECT_DIR/.matilda/hooks/run-tests-async.sh",
|
|
1122
1124
|
"async": true,
|
|
1123
|
-
"timeout":
|
|
1125
|
+
"timeout": 300
|
|
1124
1126
|
}
|
|
1125
1127
|
]
|
|
1126
1128
|
}
|
|
@@ -1206,7 +1208,7 @@ Configure in `.matilda/settings.json`:
|
|
|
1206
1208
|
"command": "${SECURITY_CHECK_SCRIPT}",
|
|
1207
1209
|
"name": "security-checker",
|
|
1208
1210
|
"description": "Security validation for bash commands",
|
|
1209
|
-
"timeout":
|
|
1211
|
+
"timeout": 10
|
|
1210
1212
|
}
|
|
1211
1213
|
]
|
|
1212
1214
|
}
|
|
@@ -21,7 +21,6 @@ This is the CLI’s UI localization layer (i18n/l10n): it controls the language
|
|
|
21
21
|
Use the `/language ui` command:
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
/language ui zh-CN # Chinese
|
|
25
24
|
/language ui en-US # English
|
|
26
25
|
/language ui ru-RU # Russian
|
|
27
26
|
/language ui de-DE # German
|
|
@@ -34,7 +33,6 @@ Use the `/language ui` command:
|
|
|
34
33
|
Aliases are also supported:
|
|
35
34
|
|
|
36
35
|
```bash
|
|
37
|
-
/language ui zh # Chinese
|
|
38
36
|
/language ui en # English
|
|
39
37
|
/language ui ru # Russian
|
|
40
38
|
/language ui de # German
|
|
@@ -67,7 +65,6 @@ The LLM output language is controlled by a rule file at `~/.matilda/output-langu
|
|
|
67
65
|
|
|
68
66
|
On first startup, if no `output-language.md` file exists, Matilda Code automatically creates one based on your system locale. For example:
|
|
69
67
|
|
|
70
|
-
- System locale `zh` creates a rule for Chinese responses
|
|
71
68
|
- System locale `en` creates a rule for English responses
|
|
72
69
|
- System locale `ru` creates a rule for Russian responses
|
|
73
70
|
- System locale `de` creates a rule for German responses
|
|
@@ -81,13 +78,12 @@ On first startup, if no `output-language.md` file exists, Matilda Code automatic
|
|
|
81
78
|
Use `/language output <language>` to change:
|
|
82
79
|
|
|
83
80
|
```bash
|
|
84
|
-
/language output Chinese
|
|
85
81
|
/language output English
|
|
86
82
|
/language output Japanese
|
|
87
83
|
/language output German
|
|
88
84
|
```
|
|
89
85
|
|
|
90
|
-
|
|
86
|
+
The LLM will be instructed to respond in that language.
|
|
91
87
|
|
|
92
88
|
> [!note]
|
|
93
89
|
>
|
|
@@ -110,7 +106,7 @@ Any language name works. The LLM will be instructed to respond in that language.
|
|
|
110
106
|
### Via Environment Variable
|
|
111
107
|
|
|
112
108
|
```bash
|
|
113
|
-
export MATILDA_CODE_LANG=
|
|
109
|
+
export MATILDA_CODE_LANG=de
|
|
114
110
|
```
|
|
115
111
|
|
|
116
112
|
This influences auto-detection on first startup (if you haven’t set a UI language and no `output-language.md` file exists yet).
|
|
@@ -129,29 +125,6 @@ User directory takes precedence over built-in translations.
|
|
|
129
125
|
> Contributions are welcome! If you’d like to improve built-in translations or add new languages.
|
|
130
126
|
> For a concrete example, see [PR #1238: feat(i18n): add Russian language support](https://github.com/MaincodeHQ/matilda-code/pull/1238).
|
|
131
127
|
|
|
132
|
-
### Maintaining `zh-TW` (Traditional Chinese for Taiwan)
|
|
133
|
-
|
|
134
|
-
`zh-TW` is **not** an automatic OpenCC s2t conversion of `zh.js` — it is a hand-maintained Taiwan-vocabulary translation. When adding or updating keys, please follow the conventions below.
|
|
135
|
-
|
|
136
|
-
The "CI enforced?" column indicates whether `npm run check-i18n` will fail the build on a violation. Rows marked **No** are style guidance enforced by review only — typically because the offending form has a legitimate non-UI meaning (`文件` can mean "document", `打開` is colloquially fine in Taiwan).
|
|
137
|
-
|
|
138
|
-
| Avoid | Use instead | CI enforced? | Reason |
|
|
139
|
-
| --------------------- | --------------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
140
|
-
| 文件 (file) | 檔案 | No | Taiwan term for filesystem files (but `文件` can legitimately mean "document") |
|
|
141
|
-
| 服務器 / 服务器 | 伺服器 | Yes | Taiwan term for "server" |
|
|
142
|
-
| 菜單 / 菜单 | 選單 | Yes | Taiwan term for "menu" |
|
|
143
|
-
| 鏈接 / 链接 | 連結 | Yes | Taiwan term for "link" (bare `鏈` is fine — e.g. 區塊鏈) |
|
|
144
|
-
| 打開 | 開啟 | No | Taiwan-preferred verb for "open" (UI); `打開` is colloquially common |
|
|
145
|
-
| 爲 / 啓 / 曆史 / 鏈接 | 為 / 啟 / 歷史 / 連結 | Yes | Variant Traditional forms from raw OpenCC s2t. Note: `曆` is context-dependent and correct in calendar terms (日曆, 農曆, 西曆); CI only flags the bigram `曆史`, not bare `曆`. |
|
|
146
|
-
|
|
147
|
-
If you are not a Traditional Chinese speaker and need to bootstrap a value, **do not paste raw OpenCC `s2t` output**: the default s2t profile emits variant Traditional characters (e.g. 爲, 啓) that Taiwan does not use, and never rewrites Mainland-Chinese vocabulary (服務器, 菜單). Prefer `s2twp.json` (Simplified → Taiwan with phrase mapping) as a starting point and then ask a Taiwan-Chinese speaker to review.
|
|
148
|
-
|
|
149
|
-
The `check-i18n` script (run in CI via `npm run check-i18n`) will fail the build if any of the CI-enforced substrings above end up in a `zh-TW` value. See `scripts/check-i18n.ts → ZH_TW_FORBIDDEN_PATTERNS` for the full list. If a translation legitimately needs to contain a CI-forbidden substring, add its key to `ZH_TW_ALLOWED_EXCEPTIONS` in the same file with a brief justification.
|
|
150
|
-
|
|
151
|
-
> [!note]
|
|
152
|
-
>
|
|
153
|
-
> The check uses plain substring matching, which does not understand Chinese word boundaries. A bigram pattern can therefore false-positive across compound-word boundaries — for example, `區塊鏈接口` (= `區塊鏈` + `接口`) contains the substring `鏈接` even though neither word is incorrect. If you hit a surprising CI failure of this kind, add the translation key to `ZH_TW_ALLOWED_EXCEPTIONS` rather than removing the pattern.
|
|
154
|
-
|
|
155
128
|
### Language Pack Format
|
|
156
129
|
|
|
157
130
|
```javascript
|
|
@@ -328,8 +328,6 @@ The following items are intentionally not implemented in the current phase:
|
|
|
328
328
|
- **Mid-session `enter_worktree` does NOT switch `process.cwd()` or `Config.targetDir`.** That tool uses the model-context-only convention (see [Sub-Agents](./sub-agents.md)). Only the startup `--worktree` flag actually switches the process working directory.
|
|
329
329
|
- **Relative paths in other arg fields are resolved BEFORE the worktree chdir.** Path-taking flags (`--mcp-config`, `--openai-logging-dir`, `--json-file`, `--input-file`, `--telemetry-outfile`, `--include-directories`) are normalized to absolute paths against the launch cwd when `--worktree` is set. Other path-shaped argv fields not in this list still resolve against the worktree cwd — use absolute paths to be safe.
|
|
330
330
|
|
|
331
|
-
Track the roadmap in `docs/design/worktree.md`.
|
|
332
|
-
|
|
333
331
|
## Troubleshooting
|
|
334
332
|
|
|
335
333
|
**The Footer shows no worktree indicator even though I just created one.**
|
|
@@ -21,7 +21,7 @@ Get started with Matilda Code CLI in your repository in just a few minutes:
|
|
|
21
21
|
|
|
22
22
|
### 1. Get a Matilda API Key
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
Get a Matilda API token from the [Matilda external API guide][Matilda external API].
|
|
25
25
|
|
|
26
26
|
### 2. Add it as a GitHub Secret
|
|
27
27
|
|
|
@@ -175,7 +175,7 @@ You can set the following secrets in your repository:
|
|
|
175
175
|
|
|
176
176
|
| Name | Description | Required | When Required |
|
|
177
177
|
| ----------------- | --------------------------------------------- | -------- | --------------------------------------------- |
|
|
178
|
-
| `MATILDA_API_KEY` | Your Matilda API
|
|
178
|
+
| `MATILDA_API_KEY` | Your Matilda API token. | Yes | Required for all workflows that call Matilda. |
|
|
179
179
|
| `APP_PRIVATE_KEY` | Private key for your GitHub App (PEM format). | No | Using a custom GitHub App. |
|
|
180
180
|
|
|
181
181
|
To add a secret:
|
|
@@ -234,7 +234,7 @@ Contributions are welcome! Check out the Matilda Code CLI **Contributing Guide**
|
|
|
234
234
|
|
|
235
235
|
[secrets]: https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions
|
|
236
236
|
[Matilda Code]: https://github.com/MaincodeHQ/matilda-code
|
|
237
|
-
[Matilda
|
|
237
|
+
[Matilda external API]: https://matilda.maincode.help/welcome/external-api
|
|
238
238
|
[Matilda Code CLI]: https://github.com/MaincodeHQ/matilda-code-action/
|
|
239
239
|
[variables]: https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/use-variables#creating-configuration-variables-for-a-repository
|
|
240
240
|
[GitHub CLI]: https://docs.github.com/en/github-cli/github-cli
|
|
@@ -185,8 +185,8 @@ Here are the most important commands for daily use:
|
|
|
185
185
|
| `/clear` | Clear terminal screen content | `/clear` (shortcut: `Ctrl+L`) |
|
|
186
186
|
| `/theme` | Change Matilda Code visual theme | `/theme` |
|
|
187
187
|
| `/language` | View or change language settings | `/language` |
|
|
188
|
-
| → `ui [language]` | Set UI interface language | `/language ui
|
|
189
|
-
| → `output [language]` | Set LLM output language | `/language output
|
|
188
|
+
| → `ui [language]` | Set UI interface language | `/language ui de-DE` |
|
|
189
|
+
| → `output [language]` | Set LLM output language | `/language output German` |
|
|
190
190
|
| `/quit` | Exit Matilda Code immediately | `/quit` or `/exit` |
|
|
191
191
|
|
|
192
192
|
See the [CLI reference](./features/commands) for a complete list of commands.
|