@maincode-ai/matilda-code 0.21.12 → 0.21.13-nightly.20261026.e0eae1d8c
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/SKILL.md +0 -2
- package/bundled/mainy/docs/_meta.ts +0 -2
- package/bundled/mainy/docs/configuration/auth.md +5 -10
- package/bundled/mainy/docs/configuration/model-providers.md +31 -217
- package/bundled/mainy/docs/configuration/settings.md +32 -4
- 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/sub-agents.md +1 -1
- package/bundled/mainy/docs/features/worktree.md +3 -5
- package/bundled/mainy/docs/integration-github-action.md +3 -3
- package/bundled/mainy/docs/matilda-serve.md +1 -1
- package/bundled/mainy/docs/quickstart.md +2 -2
- package/bundled/mainy/docs/support/troubleshooting.md +3 -10
- package/chunks/agent-4FTU3WN6.js +3 -0
- package/chunks/agent-headless-QJUVHPFC.js +3 -0
- package/chunks/{askUserQuestion-2QI4NSFJ.js → askUserQuestion-QKX4NEFX.js} +1 -1
- package/chunks/{ca-I2HEEIL7.js → ca-C2V7I65K.js} +6 -6
- package/chunks/{chunk-6E766NPX.js → chunk-2ONZZ46N.js} +2 -2
- package/chunks/chunk-36K4HBVM.js +7 -0
- package/chunks/{chunk-EQGA7LH7.js → chunk-3B2HABK7.js} +1 -1
- package/chunks/{chunk-MCQUPLRE.js → chunk-5NMK4Y7C.js} +1 -1
- package/chunks/chunk-5YT4GCK7.js +14 -0
- package/chunks/{chunk-27Q5KW3A.js → chunk-62AFAL4I.js} +10 -10
- package/chunks/chunk-75KP2FVD.js +81 -0
- package/chunks/chunk-7ZODGQO6.js +4 -0
- package/chunks/chunk-BZB7HYRC.js +37 -0
- package/chunks/{chunk-YRQP3SLC.js → chunk-EXNHJQCD.js} +1 -1
- package/chunks/chunk-FCGYRGV4.js +9 -0
- package/chunks/chunk-G4YMVWG4.js +8 -0
- package/chunks/{chunk-6T2GIM76.js → chunk-HDARIAVM.js} +1 -1
- package/chunks/{chunk-YJAKOETP.js → chunk-HM5LCKDB.js} +2 -2
- package/chunks/chunk-IIQ5YERM.js +120 -0
- package/chunks/{chunk-CSJTA7NE.js → chunk-JGJ7BVZN.js} +18 -18
- package/chunks/{chunk-GTVCJCHR.js → chunk-JIKQI4MZ.js} +1 -1
- package/chunks/{chunk-WV3IUPZS.js → chunk-LHDCAN7Z.js} +1 -1
- package/chunks/chunk-LZDHANXA.js +89 -0
- package/chunks/{chunk-PGXQZVLX.js → chunk-NOE4UNQN.js} +1 -1
- package/chunks/chunk-OEZS5R3S.js +207 -0
- package/chunks/{chunk-OOEH6ZSV.js → chunk-PTMCLADZ.js} +1 -1
- package/chunks/{chunk-2HTPVSGT.js → chunk-PYZNGIIR.js} +1 -1
- package/chunks/chunk-QJJTUDDA.js +56 -0
- package/chunks/{chunk-LUNDTQ3G.js → chunk-R34HYLL4.js} +1 -1
- package/chunks/{chunk-QVCGLQCI.js → chunk-RK4LPGBV.js} +3 -3
- package/chunks/{chunk-DE3HKC2W.js → chunk-RYHMPK5G.js} +1 -1
- package/chunks/chunk-SR7ARGUY.js +13 -0
- package/chunks/{chunk-JRECUFB3.js → chunk-SY6JRCN3.js} +636 -654
- package/chunks/chunk-TUKNB5CQ.js +33 -0
- package/chunks/{chunk-VTGICC67.js → chunk-TZ4FRU6B.js} +1 -1
- package/chunks/chunk-U7V7APDV.js +9 -0
- package/chunks/{chunk-CZGZ3KK7.js → chunk-UVWZ44ZW.js} +1 -1
- package/chunks/{chunk-HYVP4472.js → chunk-V6UPUMP3.js} +1 -1
- package/chunks/{chunk-DOOFGSRV.js → chunk-VLDZBRTL.js} +1 -1
- package/chunks/{computer-use-WKDNUTLD.js → computer-use-OXAMR75N.js} +1 -1
- package/chunks/contextCommand-ERLW5VWL.js +3 -0
- package/chunks/{cron-create-F2LXM2OA.js → cron-create-AUDQ6STP.js} +1 -1
- package/chunks/{cron-delete-DE6Q2S2L.js → cron-delete-P5HE3PDD.js} +1 -1
- package/chunks/{cron-list-IAQEJVV7.js → cron-list-NR5FZBK2.js} +1 -1
- package/chunks/{de-AQXFJYZI.js → de-KOUI2CEW.js} +5 -5
- package/chunks/{devtools-5JRKK3E7.js → devtools-G5DWLP2N.js} +1 -1
- package/chunks/dist-XXTQNTKQ.js +42 -0
- package/chunks/dist-ZFZZLIQU.js +3 -0
- package/chunks/{edit-QQNJZ55P.js → edit-REFR5ROS.js} +1 -1
- package/chunks/{en-EJLDYIBM.js → en-RMYRLXC2.js} +4 -4
- package/chunks/{enter-worktree-5X5SAMBJ.js → enter-worktree-WO3DT2G7.js} +1 -1
- package/chunks/{enterPlanMode-HP35SPLN.js → enterPlanMode-PLRHEU5A.js} +1 -1
- package/chunks/{exit-worktree-SRKZBEYF.js → exit-worktree-J5PW6DCV.js} +1 -1
- package/chunks/{exitPlanMode-WSPTGGVN.js → exitPlanMode-KXUPNLCJ.js} +2 -2
- package/chunks/{fr-6TDHK7F2.js → fr-R3QF3LA2.js} +5 -5
- package/chunks/glob-ZVTVRDQO.js +22 -0
- package/chunks/{goal-tools-C6BSBHCF.js → goal-tools-XVKQJL5I.js} +1 -1
- package/chunks/{grep-MVCOBUYW.js → grep-R7CWUNNE.js} +1 -1
- package/chunks/{ja-GGNJR7AR.js → ja-A5OQLXUZ.js} +5 -5
- package/chunks/{keychain-token-storage-KQK6MNOJ.js → keychain-token-storage-IM4UB4P4.js} +1 -1
- package/chunks/{ls-JYJXFSXN.js → ls-DEAFYDVV.js} +1 -1
- package/chunks/{lsp-DYDK6XCS.js → lsp-DL7W47VY.js} +1 -1
- package/chunks/matildaAgentContentGenerator-57EIU5XE.js +8 -0
- package/chunks/mcp-client-X7LEGSP3.js +3 -0
- package/chunks/monitor-KPWTMH3V.js +32 -0
- package/chunks/{multipart-parser-JI75T2O5.js → multipart-parser-FKHYAVGR.js} +1 -1
- package/chunks/notebook-edit-3ZH5M2TC.js +17 -0
- package/chunks/openaiContentGenerator-6PXSD3T7.js +37 -0
- package/chunks/{pt-D6L2QTDM.js → pt-RG3S3KA7.js} +5 -5
- package/chunks/read-file-JNS7WRUP.js +3 -0
- package/chunks/ripGrep-ICJDGIIV.js +3 -0
- package/chunks/{ru-BNJCHDYO.js → ru-5S5HLRT7.js} +5 -5
- package/chunks/scheduler-QC2PPMFP.js +8 -0
- package/chunks/{send-message-P3SMWNEE.js → send-message-V2WYLN5X.js} +1 -1
- package/chunks/{serve-FXH6EBQ6.js → serve-NUVQULZJ.js} +59 -48
- package/chunks/shell-5LNI7URE.js +3 -0
- package/chunks/{skill-HZPFEAPF.js → skill-QFATRHQW.js} +1 -1
- package/chunks/src-6UPZ7TVB.js +3 -0
- package/chunks/src-LZEU4AYF.js +5 -0
- package/chunks/{symbol-search-EAIZPWN7.js → symbol-search-WL6ZHUUN.js} +1 -1
- package/chunks/{syntheticOutput-432LXITX.js → syntheticOutput-3KW6SQAF.js} +1 -1
- package/chunks/task-create-PNW5SN27.js +3 -0
- package/chunks/{task-detach-XMSJ3HBM.js → task-detach-B7PDPFBA.js} +1 -1
- package/chunks/task-list-GGZATGK5.js +9 -0
- package/chunks/{task-stop-NTS62FLG.js → task-stop-UKBBE2KG.js} +1 -1
- package/chunks/{task-update-AR26UFYZ.js → task-update-4RHVUBUV.js} +1 -1
- package/chunks/{team-create-PYXFVIR5.js → team-create-2TJC3X57.js} +1 -1
- package/chunks/team-delete-4UJ7SU65.js +8 -0
- package/chunks/todoWrite-NEBVKOSG.js +3 -0
- package/chunks/{tool-search-RKZDSRYS.js → tool-search-R5GS64YR.js} +1 -1
- package/chunks/{web-fetch-VW3SVDQ6.js → web-fetch-H3XJMAEF.js} +17 -17
- package/chunks/{web-search-XQUIZARL.js → web-search-Q6RWPEIB.js} +1 -1
- package/chunks/{workflow-YXNXDRWZ.js → workflow-3A7KN3E3.js} +2 -2
- package/chunks/write-file-O7Q6SKZC.js +15 -0
- package/cli.js +502 -498
- package/locales/ca.js +1 -28
- package/locales/de.js +1 -28
- package/locales/en.js +1 -30
- package/locales/fr.js +1 -30
- package/locales/ja.js +1 -28
- package/locales/pt.js +1 -28
- package/locales/ru.js +1 -28
- 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 +0 -1
- package/sandbox-macos-restrictive-open.sb +0 -1
- package/sandbox-macos-restrictive-proxied.sb +0 -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/bundled/mainy/docs/integration-jetbrains.md +0 -81
- package/bundled/mainy/docs/integration-zed.md +0 -72
- package/chunks/agent-WM63A6NK.js +0 -3
- package/chunks/agent-headless-QIUBDKPW.js +0 -3
- package/chunks/anthropicContentGenerator-VKFTAIU3.js +0 -39
- package/chunks/chunk-2MOGYHWM.js +0 -8
- package/chunks/chunk-3IRGBRSP.js +0 -113
- package/chunks/chunk-3YLXGE6T.js +0 -8
- package/chunks/chunk-4F4DA5UI.js +0 -8
- package/chunks/chunk-4J6DC24J.js +0 -59
- package/chunks/chunk-4Q2SNBUH.js +0 -18
- package/chunks/chunk-5C2RJ5RR.js +0 -37
- package/chunks/chunk-6EQMZNIY.js +0 -8
- package/chunks/chunk-6GBNB5Z2.js +0 -3
- package/chunks/chunk-6Z2MV7ZY.js +0 -186
- package/chunks/chunk-BVOCFLC4.js +0 -56
- package/chunks/chunk-FPO57O66.js +0 -39
- package/chunks/chunk-G7R2XEEF.js +0 -7
- package/chunks/chunk-GOJCMVJJ.js +0 -8
- package/chunks/chunk-JCE3JAVC.js +0 -25
- package/chunks/chunk-KHHJYBR5.js +0 -9
- package/chunks/chunk-LJR4RZZ2.js +0 -3
- package/chunks/chunk-MO2HXJG5.js +0 -9
- package/chunks/chunk-O44XK65C.js +0 -8
- package/chunks/chunk-OA56BXPD.js +0 -3
- package/chunks/chunk-PA6532AY.js +0 -6
- package/chunks/chunk-QN6Y6NPA.js +0 -3
- package/chunks/chunk-S3CWEVTS.js +0 -15
- package/chunks/chunk-SDTWBD62.js +0 -8
- package/chunks/chunk-U347OO7S.js +0 -9
- package/chunks/chunk-UIRBHC5X.js +0 -3
- package/chunks/chunk-VI74YQQO.js +0 -8
- package/chunks/chunk-VYZOOSMP.js +0 -30
- package/chunks/chunk-WC2VTVCE.js +0 -27
- package/chunks/chunk-WVY2P6WH.js +0 -26
- package/chunks/chunk-WZ75OGYY.js +0 -14
- package/chunks/chunk-XMZIY7XX.js +0 -13
- package/chunks/chunk-YV3PUOBU.js +0 -65
- package/chunks/contextCommand-DAB3HOHY.js +0 -3
- package/chunks/dist-7UYRLSLE.js +0 -3
- package/chunks/dist-ME6647DQ.js +0 -195
- package/chunks/dist-P6SLWL5V.js +0 -42
- package/chunks/dist-VG3ZDJ2A.js +0 -28
- package/chunks/dist-YTCHM57U.js +0 -23
- package/chunks/fileFromPath-7UCWPD4W.js +0 -3
- package/chunks/geminiContentGenerator-RJ73DQAP.js +0 -8
- package/chunks/glob-QQ6LGKDX.js +0 -22
- package/chunks/matildaAgentContentGenerator-YUYS4336.js +0 -8
- package/chunks/matildaContentGenerator-O4Z2QPCP.js +0 -8
- package/chunks/matildaOAuth2-7COTQQR2.js +0 -3
- package/chunks/mcp-client-RXVQU5VI.js +0 -3
- package/chunks/monitor-77KXDXPR.js +0 -32
- package/chunks/notebook-edit-TKJD2EQZ.js +0 -17
- package/chunks/openaiContentGenerator-2EALAM3U.js +0 -3
- package/chunks/read-file-3KUAH6ND.js +0 -3
- package/chunks/ripGrep-U2PLKXMY.js +0 -3
- package/chunks/scheduler-J7VU2V5Y.js +0 -8
- package/chunks/shell-PXR2AXDD.js +0 -3
- package/chunks/src-RFAEPLY7.js +0 -3
- package/chunks/src-WZTRMETQ.js +0 -5
- package/chunks/task-create-Z3QRCMX4.js +0 -3
- package/chunks/task-list-GXAJW3JP.js +0 -9
- package/chunks/team-delete-OMYVUAQU.js +0 -8
- package/chunks/todoWrite-5NZ7CHTC.js +0 -3
- package/chunks/write-file-XDDLTGSG.js +0 -15
package/bundled/mainy/SKILL.md
CHANGED
|
@@ -72,8 +72,6 @@ Use this index to locate the right document for the user's question. Load only t
|
|
|
72
72
|
| Topic | Doc Path |
|
|
73
73
|
| ----------------------- | -------------------------------------------- |
|
|
74
74
|
| VS Code integration | `docs/integration-vscode.md` |
|
|
75
|
-
| Zed IDE integration | `docs/integration-zed.md` |
|
|
76
|
-
| JetBrains integration | `docs/integration-jetbrains.md` |
|
|
77
75
|
| GitHub Actions | `docs/integration-github-action.md` |
|
|
78
76
|
| IDE companion spec | `docs/ide-integration/ide-companion-spec.md` |
|
|
79
77
|
| IDE integration details | `docs/ide-integration/ide-integration.md` |
|
|
@@ -11,8 +11,6 @@ export default {
|
|
|
11
11
|
title: 'Outside of the terminal', // Title is optional
|
|
12
12
|
},
|
|
13
13
|
'integration-vscode': 'Visual Studio Code',
|
|
14
|
-
'integration-zed': 'Zed IDE',
|
|
15
|
-
'integration-jetbrains': 'JetBrains IDEs',
|
|
16
14
|
'integration-github-action': 'GitHub Actions',
|
|
17
15
|
'matilda-serve': 'Daemon mode (matilda serve)',
|
|
18
16
|
'matilda-serve-deploy-local': 'Daemon mode — local launch templates',
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Matilda Code's standard sign-in uses your Matilda account. For normal
|
|
4
4
|
interactive use, you do not need to create, copy, or export an API key.
|
|
5
5
|
|
|
6
|
-
You can also use a Matilda API token
|
|
7
|
-
|
|
6
|
+
You can also use a Matilda API token, through `/auth` or, for CI and
|
|
7
|
+
automation, the `MATILDA_API_KEY` environment variable.
|
|
8
8
|
|
|
9
9
|
## Sign in
|
|
10
10
|
|
|
@@ -60,14 +60,9 @@ tokens or `~/.matilda/matilda-auth.json` to source control.
|
|
|
60
60
|
|
|
61
61
|
## Other model providers
|
|
62
62
|
|
|
63
|
-
`/auth` inside an interactive Matilda Code session
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
- **Third-party providers** (DeepSeek, OpenRouter, MiniMax, Z.AI, ModelScope, …)
|
|
67
|
-
- **Custom Provider** for any OpenAI-compatible endpoint
|
|
68
|
-
|
|
69
|
-
For an advanced custom provider configuration, see the
|
|
70
|
-
[Model Providers reference](model-providers.md).
|
|
63
|
+
`/auth` inside an interactive Matilda Code session offers the Matilda account
|
|
64
|
+
sign-in and a Matilda API token. Other providers are configured in
|
|
65
|
+
`settings.json`; see the [Model Providers reference](model-providers.md).
|
|
71
66
|
|
|
72
67
|
## Troubleshooting
|
|
73
68
|
|
|
@@ -4,7 +4,7 @@ Matilda Code allows you to configure multiple model providers through the `model
|
|
|
4
4
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
7
|
-
Use `modelProviders` to declare curated model lists per auth type that the `/model` picker can switch between. Keys must be valid auth types (`openai
|
|
7
|
+
Use `modelProviders` to declare curated model lists per auth type that the `/model` picker can switch between. Keys must be valid auth types (currently only `openai`). Each entry requires an `id` and **must include `envKey`**, with optional `name`, `description`, `baseUrl`, and `generationConfig`. Credentials are never persisted in settings; the runtime reads them from `process.env[envKey]`.
|
|
8
8
|
|
|
9
9
|
> [!note]
|
|
10
10
|
|
|
@@ -20,12 +20,9 @@ Below are comprehensive configuration examples for different authentication type
|
|
|
20
20
|
|
|
21
21
|
The `modelProviders` object keys must be valid `authType` values. Currently supported auth types are:
|
|
22
22
|
|
|
23
|
-
| Auth Type
|
|
24
|
-
|
|
|
25
|
-
| `openai`
|
|
26
|
-
| `anthropic` | Anthropic Claude API |
|
|
27
|
-
| `gemini` | Google Gemini API |
|
|
28
|
-
| `matilda-oauth` | Matilda OAuth (hard-coded, cannot be overridden in `modelProviders`) |
|
|
23
|
+
| Auth Type | Description |
|
|
24
|
+
| --------- | --------------------------------------------------------------------------------------- |
|
|
25
|
+
| `openai` | OpenAI-compatible APIs (OpenAI, Azure OpenAI, local inference servers like vLLM/Ollama) |
|
|
29
26
|
|
|
30
27
|
> [!warning]
|
|
31
28
|
> If an invalid auth type key is used (e.g., a typo like `"openai-custom"`), the configuration will be **silently skipped** and the models will not appear in the `/model` picker. Always use one of the supported auth type values listed above.
|
|
@@ -34,24 +31,20 @@ The `modelProviders` object keys must be valid `authType` values. Currently supp
|
|
|
34
31
|
|
|
35
32
|
Matilda Code uses the following official SDKs to send requests to each provider:
|
|
36
33
|
|
|
37
|
-
| Auth Type
|
|
38
|
-
|
|
|
39
|
-
| `openai`
|
|
40
|
-
| `anthropic` | [`@anthropic-ai/sdk`](https://www.npmjs.com/package/@anthropic-ai/sdk) - Official Anthropic SDK |
|
|
41
|
-
| `gemini` | [`@google/genai`](https://www.npmjs.com/package/@google/genai) - Official Google GenAI SDK |
|
|
42
|
-
| `matilda-oauth` | [`openai`](https://www.npmjs.com/package/openai) with custom provider (Matilda-compatible-compatible) |
|
|
34
|
+
| Auth Type | SDK Package |
|
|
35
|
+
| --------- | ------------------------------------------------------------------------------ |
|
|
36
|
+
| `openai` | [`openai`](https://www.npmjs.com/package/openai) - Official OpenAI Node.js SDK |
|
|
43
37
|
|
|
44
38
|
This means the `baseUrl` you configure should be compatible with the corresponding SDK's expected API format. For example, when using `openai` auth type, the endpoint must accept OpenAI API format requests.
|
|
45
39
|
|
|
46
40
|
### OpenAI-compatible providers (`openai`)
|
|
47
41
|
|
|
48
|
-
This auth type supports not only OpenAI's official API but also any OpenAI-compatible endpoint
|
|
42
|
+
This auth type supports not only OpenAI's official API but also any OpenAI-compatible endpoint.
|
|
49
43
|
|
|
50
44
|
```json
|
|
51
45
|
{
|
|
52
46
|
"env": {
|
|
53
|
-
"OPENAI_API_KEY": "sk-your-actual-openai-key-here"
|
|
54
|
-
"OPENROUTER_API_KEY": "sk-or-your-actual-openrouter-key-here"
|
|
47
|
+
"OPENAI_API_KEY": "sk-your-actual-openai-key-here"
|
|
55
48
|
},
|
|
56
49
|
"modelProviders": {
|
|
57
50
|
"openai": [
|
|
@@ -96,97 +89,6 @@ This auth type supports not only OpenAI's official API but also any OpenAI-compa
|
|
|
96
89
|
"max_tokens": 2048
|
|
97
90
|
}
|
|
98
91
|
}
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
"id": "openai/gpt-4o",
|
|
102
|
-
"name": "GPT-4o (via OpenRouter)",
|
|
103
|
-
"envKey": "OPENROUTER_API_KEY",
|
|
104
|
-
"baseUrl": "https://openrouter.ai/api/v1",
|
|
105
|
-
"generationConfig": {
|
|
106
|
-
"timeout": 120000,
|
|
107
|
-
"maxRetries": 3,
|
|
108
|
-
"samplingParams": {
|
|
109
|
-
"temperature": 0.7
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
]
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### Anthropic (`anthropic`)
|
|
119
|
-
|
|
120
|
-
```json
|
|
121
|
-
{
|
|
122
|
-
"env": {
|
|
123
|
-
"ANTHROPIC_API_KEY": "sk-ant-your-actual-anthropic-key-here"
|
|
124
|
-
},
|
|
125
|
-
"modelProviders": {
|
|
126
|
-
"anthropic": [
|
|
127
|
-
{
|
|
128
|
-
"id": "claude-3-5-sonnet",
|
|
129
|
-
"name": "Claude 3.5 Sonnet",
|
|
130
|
-
"envKey": "ANTHROPIC_API_KEY",
|
|
131
|
-
"baseUrl": "https://api.anthropic.com/v1",
|
|
132
|
-
"generationConfig": {
|
|
133
|
-
"timeout": 120000,
|
|
134
|
-
"maxRetries": 3,
|
|
135
|
-
"contextWindowSize": 200000,
|
|
136
|
-
"samplingParams": {
|
|
137
|
-
"temperature": 0.7,
|
|
138
|
-
"max_tokens": 8192,
|
|
139
|
-
"top_p": 0.9
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
"id": "claude-3-opus",
|
|
145
|
-
"name": "Claude 3 Opus",
|
|
146
|
-
"envKey": "ANTHROPIC_API_KEY",
|
|
147
|
-
"baseUrl": "https://api.anthropic.com/v1",
|
|
148
|
-
"generationConfig": {
|
|
149
|
-
"timeout": 180000,
|
|
150
|
-
"samplingParams": {
|
|
151
|
-
"temperature": 0.3,
|
|
152
|
-
"max_tokens": 4096
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
]
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
### Google Gemini (`gemini`)
|
|
162
|
-
|
|
163
|
-
```json
|
|
164
|
-
{
|
|
165
|
-
"env": {
|
|
166
|
-
"GEMINI_API_KEY": "AIza-your-actual-gemini-key-here"
|
|
167
|
-
},
|
|
168
|
-
"modelProviders": {
|
|
169
|
-
"gemini": [
|
|
170
|
-
{
|
|
171
|
-
"id": "gemini-2.0-flash",
|
|
172
|
-
"name": "Gemini 2.0 Flash",
|
|
173
|
-
"envKey": "GEMINI_API_KEY",
|
|
174
|
-
"baseUrl": "https://generativelanguage.googleapis.com",
|
|
175
|
-
"capabilities": {
|
|
176
|
-
"vision": true
|
|
177
|
-
},
|
|
178
|
-
"generationConfig": {
|
|
179
|
-
"timeout": 60000,
|
|
180
|
-
"maxRetries": 2,
|
|
181
|
-
"contextWindowSize": 1000000,
|
|
182
|
-
"schemaCompliance": "auto",
|
|
183
|
-
"samplingParams": {
|
|
184
|
-
"temperature": 0.4,
|
|
185
|
-
"top_p": 0.95,
|
|
186
|
-
"max_tokens": 8192,
|
|
187
|
-
"top_k": 40
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
92
|
}
|
|
191
93
|
]
|
|
192
94
|
}
|
|
@@ -266,7 +168,7 @@ export VLLM_API_KEY="not-needed"
|
|
|
266
168
|
|
|
267
169
|
> [!note]
|
|
268
170
|
>
|
|
269
|
-
> The `extra_body` parameter is **only supported for OpenAI-compatible providers** (`openai
|
|
171
|
+
> The `extra_body` parameter is **only supported for OpenAI-compatible providers** (`openai`).
|
|
270
172
|
|
|
271
173
|
> [!note]
|
|
272
174
|
>
|
|
@@ -289,88 +191,6 @@ export VLLM_API_KEY="not-needed"
|
|
|
289
191
|
>
|
|
290
192
|
> Each provider example includes an `env` field to illustrate how the API key should be configured.
|
|
291
193
|
|
|
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
194
|
## Resolution Layers and Atomicity
|
|
375
195
|
|
|
376
196
|
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.
|
|
@@ -382,9 +202,9 @@ The effective auth/model/credential values are chosen per field using the follow
|
|
|
382
202
|
| CLI arguments | `--auth-type` | `--model` | `--openaiApiKey` (or provider-specific equivalents) | `--openaiBaseUrl` (or provider-specific equivalents) | — | — |
|
|
383
203
|
| Environment variables | — | Provider-specific mapping (e.g. `OPENAI_MODEL`) | Provider-specific mapping (e.g. `OPENAI_API_KEY`) | Provider-specific mapping (e.g. `OPENAI_BASE_URL`) | — | — |
|
|
384
204
|
| Settings (`settings.json`) | `security.auth.selectedType` | `model.name` | `security.auth.apiKey` | `security.auth.baseUrl` | — | — |
|
|
385
|
-
| Default / computed |
|
|
205
|
+
| Default / computed | None: sign in or set `MATILDA_API_KEY` | Built-in default (OpenAI ⇒ `matilda3-coder-plus`) | — | — | — | `Config.getProxy()` if configured |
|
|
386
206
|
|
|
387
|
-
\*When present, CLI auth flags override settings. Otherwise, `security.auth.selectedType` or the implicit default determine the auth type. Matilda
|
|
207
|
+
\*When present, CLI auth flags override settings. Otherwise, `security.auth.selectedType` or the implicit default determine the auth type. `openai`, which the Matilda sign-in uses, is the only auth type surfaced without extra configuration.
|
|
388
208
|
|
|
389
209
|
> [!warning]
|
|
390
210
|
>
|
|
@@ -422,7 +242,7 @@ The configuration resolution follows a strict layering model with one crucial ru
|
|
|
422
242
|
| 1 | Programmatic overrides | Runtime `/model`, `/auth` changes |
|
|
423
243
|
| 2 | `modelProviders[authType][].generationConfig` | **Impermeable layer** - completely replaces all generationConfig fields; lower layers do not participate |
|
|
424
244
|
| 3 | `settings.model.generationConfig` | Only used for **Runtime Models** (when no provider model is selected) |
|
|
425
|
-
| 4 | Content-generator defaults | Provider-specific defaults (e.g.,
|
|
245
|
+
| 4 | Content-generator defaults | Provider-specific defaults (e.g., Matilda vs other endpoints) - only for Runtime Models |
|
|
426
246
|
|
|
427
247
|
### Atomic field treatment
|
|
428
248
|
|
|
@@ -476,24 +296,24 @@ The merge strategy for `modelProviders` itself is REPLACE: the entire `modelProv
|
|
|
476
296
|
|
|
477
297
|
## Reasoning / thinking configuration
|
|
478
298
|
|
|
479
|
-
The optional `reasoning` field under `generationConfig` controls how aggressively the model reasons before responding. The
|
|
299
|
+
The optional `reasoning` field under `generationConfig` controls how aggressively the model reasons before responding. The OpenAI-compatible pipeline honors it **unless** `generationConfig.samplingParams` is set (see the "Interaction with `samplingParams`" caveat below).
|
|
480
300
|
|
|
481
301
|
```jsonc
|
|
482
302
|
{
|
|
483
303
|
"modelProviders": {
|
|
484
304
|
"openai": [
|
|
485
305
|
{
|
|
486
|
-
"id": "
|
|
487
|
-
"name": "
|
|
488
|
-
"baseUrl": "https://api.
|
|
489
|
-
"envKey": "
|
|
306
|
+
"id": "gpt-5",
|
|
307
|
+
"name": "GPT-5",
|
|
308
|
+
"baseUrl": "https://api.openai.com/v1",
|
|
309
|
+
"envKey": "OPENAI_API_KEY",
|
|
490
310
|
"generationConfig": {
|
|
491
|
-
//
|
|
492
|
-
//
|
|
493
|
-
//
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
311
|
+
// OpenAI's Chat Completions API reads the flat `reasoning_effort`
|
|
312
|
+
// field, not the nested `reasoning` object, so set it through
|
|
313
|
+
// `samplingParams`, whose keys are sent unchanged.
|
|
314
|
+
"samplingParams": {
|
|
315
|
+
"reasoning_effort": "high",
|
|
316
|
+
},
|
|
497
317
|
},
|
|
498
318
|
},
|
|
499
319
|
],
|
|
@@ -503,29 +323,23 @@ The optional `reasoning` field under `generationConfig` controls how aggressivel
|
|
|
503
323
|
|
|
504
324
|
### Per-provider behavior
|
|
505
325
|
|
|
506
|
-
| Protocol / provider
|
|
507
|
-
|
|
|
508
|
-
| **OpenAI
|
|
509
|
-
| **OpenAI** (other compatible servers) | `reasoning: { effort, ... }` passed through verbatim | Set via `samplingParams` (e.g. `samplingParams.reasoning_effort` for GPT-5/o-series) when the provider expects a different shape. |
|
|
510
|
-
| **Anthropic** (real `api.anthropic.com`) | `output_config: { effort }` plus the `effort-2025-11-24` beta header | Real Anthropic accepts `'low'`/`'medium'`/`'high'` only. `'max'` is **clamped to `'high'`** with a `debugLogger.warn` line (once per generator); if you want max effort, switch the baseURL to a DeepSeek-compatible endpoint that supports it. |
|
|
511
|
-
| **Anthropic** (`api.deepseek.com/anthropic`) | Same `output_config: { effort }` + beta header | `'max'` is passed through unchanged. |
|
|
512
|
-
| **Gemini** (`@google/genai`) | `thinkingConfig: { includeThoughts: true, thinkingLevel }` | `'low'` → `LOW`, `'high'`/`'max'` → `HIGH`, others → `THINKING_LEVEL_UNSPECIFIED` (Gemini has no `MAX` tier). |
|
|
326
|
+
| Protocol / provider | Wire shape | Notes |
|
|
327
|
+
| --------------------- | ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
|
328
|
+
| **OpenAI-compatible** | `reasoning: { effort, ... }` passed through verbatim | Set via `samplingParams` (e.g. `samplingParams.reasoning_effort` for GPT-5/o-series) when the provider expects a different shape. |
|
|
513
329
|
|
|
514
330
|
### `reasoning: false`
|
|
515
331
|
|
|
516
332
|
Setting `reasoning: false` (the literal boolean) explicitly disables thinking on every provider — useful for cheap side queries that don't benefit from reasoning. This is honored at the request level too via `request.config.thinkingConfig.includeThoughts: false` for one-off calls (e.g. suggestion generation).
|
|
517
333
|
|
|
518
|
-
On
|
|
334
|
+
On Matilda's endpoint the OpenAI pipeline also sends `enable_thinking: false`. Other OpenAI-compatible servers whose models think by default need their own knob, such as `thinking: { type: 'disabled' }`, injected via `samplingParams` or `extra_body`.
|
|
519
335
|
|
|
520
336
|
### Interaction with `samplingParams` (OpenAI-compatible only)
|
|
521
337
|
|
|
522
338
|
> [!warning]
|
|
523
339
|
>
|
|
524
|
-
> When `generationConfig.samplingParams` is set on an OpenAI-compatible provider, the pipeline ships those keys to the wire **verbatim** and skips the separate `reasoning` injection entirely. So a config like `{ samplingParams: { temperature: 0.5 }, reasoning: { effort: 'max' } }` will silently drop the reasoning field on OpenAI
|
|
525
|
-
>
|
|
526
|
-
> If you set `samplingParams`, include the reasoning knob inside it directly — for DeepSeek that's `samplingParams.reasoning_effort`, for GPT-5/o-series it's `samplingParams.reasoning_effort` (their flat field) or `samplingParams.reasoning` (the nested object). For OpenRouter and other providers the field name varies; consult the provider docs.
|
|
340
|
+
> When `generationConfig.samplingParams` is set on an OpenAI-compatible provider, the pipeline ships those keys to the wire **verbatim** and skips the separate `reasoning` injection entirely. So a config like `{ samplingParams: { temperature: 0.5 }, reasoning: { effort: 'max' } }` will silently drop the reasoning field on OpenAI-compatible requests.
|
|
527
341
|
>
|
|
528
|
-
>
|
|
342
|
+
> If you set `samplingParams`, include the reasoning knob inside it directly. For GPT-5/o-series on Chat Completions that is `samplingParams.reasoning_effort`; for other servers the field name varies, so consult their docs.
|
|
529
343
|
|
|
530
344
|
### `budget_tokens`
|
|
531
345
|
|
|
@@ -535,7 +349,7 @@ You can pin an exact thinking-token budget by including `budget_tokens` alongsid
|
|
|
535
349
|
"reasoning": { "effort": "high", "budget_tokens": 50000 }
|
|
536
350
|
```
|
|
537
351
|
|
|
538
|
-
|
|
352
|
+
It is passed through inside `reasoning`, and whether it is honored depends on the server.
|
|
539
353
|
|
|
540
354
|
## Provider Models vs Runtime Models
|
|
541
355
|
|
|
@@ -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:
|
|
@@ -150,7 +178,7 @@ Settings are organized into categories. Most settings should be placed within th
|
|
|
150
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` |
|
|
151
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` |
|
|
152
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` |
|
|
153
|
-
| `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.
|
|
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` |
|
|
154
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` |
|
|
155
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` |
|
|
156
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` |
|
|
@@ -218,7 +246,7 @@ Overrides the auto-detected input modalities for the selected model. Matilda Cod
|
|
|
218
246
|
|
|
219
247
|
Allows you to add custom HTTP headers to all API requests. This is useful for request tracing, monitoring, API gateway routing, or when different models require different headers. For provider models, define `customHeaders` in `modelProviders[].generationConfig.customHeaders`. For runtime models without a matching provider entry, define it in `model.generationConfig.customHeaders`. No merging occurs between the two levels.
|
|
220
248
|
|
|
221
|
-
The `extra_body` field allows you to add custom parameters to the request body sent to the API. This is useful for provider-specific options that are not covered by the standard configuration fields. **Note: This field is only supported for OpenAI-compatible providers (`openai
|
|
249
|
+
The `extra_body` field allows you to add custom parameters to the request body sent to the API. This is useful for provider-specific options that are not covered by the standard configuration fields. **Note: This field is only supported for OpenAI-compatible providers (`openai`).** For provider models, define `extra_body` in `modelProviders[].generationConfig.extra_body`. For runtime models without a matching provider entry, define it in `model.generationConfig.extra_body`.
|
|
222
250
|
|
|
223
251
|
**model.openAILoggingDir examples:**
|
|
224
252
|
|
|
@@ -663,7 +691,7 @@ For sandbox image selection, precedence is:
|
|
|
663
691
|
| `--telemetry-otlp-endpoint` | | Sets the OTLP endpoint for telemetry. | | See [telemetry](../../developers/development/telemetry) for more information. |
|
|
664
692
|
| `--telemetry-otlp-protocol` | | Sets the OTLP protocol for telemetry (`grpc` or `http`). | | Defaults to `grpc`. See [telemetry](../../developers/development/telemetry) for more information. |
|
|
665
693
|
| `--telemetry-log-prompts` | | Enables logging of prompts for telemetry. | | See [telemetry](../../developers/development/telemetry) for more information. |
|
|
666
|
-
| `--acp` | | Enables ACP mode (Agent Client Protocol)
|
|
694
|
+
| `--acp` | | Enables ACP mode (Agent Client Protocol), which the VS Code companion and Matilda Desktop use. | | Stable. Replaces the deprecated `--experimental-acp` flag. |
|
|
667
695
|
| `--experimental-lsp` | | Enables experimental [LSP (Language Server Protocol)](../features/lsp) feature for code intelligence (go-to-definition, find references, diagnostics, etc.). | | Experimental. Requires language servers to be installed. |
|
|
668
696
|
| `--extensions` | `-e` | Specifies a list of extensions to use for the session. | Extension names | If not provided, all available extensions are used. Use the special term `matilda -e none` to disable all extensions. Example: `matilda -e my-extension -e my-other-extension` |
|
|
669
697
|
| `--list-extensions` | `-l` | Lists all available extensions and exits. | | |
|
|
@@ -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
|
|