metheus-governance-mcp-cli 0.2.83 → 0.2.85
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/README.md +7 -6
- package/lib/bot-commands.mjs +9 -9
- package/lib/local-ai-adapters.mjs +19 -12
- package/lib/selftest-bot-commands.mjs +17 -14
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -232,15 +232,16 @@ Behavior:
|
|
|
232
232
|
- For Telegram, the CLI tries to match the verified bot identity against the server `me/bots` list first. If the server exposes one logical bot name with multiple roles such as `approval`, `worker`, `review`, and `monitor`, the CLI does not ask you to choose one UUID. It binds by server bot name and keeps the local role/AI fields empty so runtime can use the server bot role for each route.
|
|
233
233
|
- When the Telegram username matches exactly one server bot role, the CLI still auto-fills the local `role_profile` and blank AI defaults from your local `bot-runner.json` `role_profiles` mapping.
|
|
234
234
|
- `bot edit` without flags now uses the same sequential flow every time: provider -> bot entry -> username/token review -> grouped server-role review when needed -> AI field choices -> default choice -> save.
|
|
235
|
-
- when the CLI asks for `AI model`, it now shows client-specific
|
|
235
|
+
- when the CLI asks for `AI model`, it now shows client-specific model choices first and still allows manual entry when you need a custom model name.
|
|
236
236
|
- display labels are converted to tested execution model IDs at runtime:
|
|
237
|
-
- `
|
|
238
|
-
- `
|
|
239
|
-
- `
|
|
237
|
+
- `gpt-5.4` -> `gpt-5.4`
|
|
238
|
+
- `gpt-5.3-codex` -> `gpt-5.3-codex`
|
|
239
|
+
- `gpt-5.3-codex-spark` -> `gpt-5.3-codex-spark`
|
|
240
|
+
- older uppercase GPT labels are still accepted as compatibility aliases
|
|
240
241
|
- `Sonnet 4.6r` -> `sonnet`
|
|
241
242
|
- `Haiku 4.5` -> `haiku`
|
|
242
243
|
- `Opus 4.6` -> `opus`
|
|
243
|
-
- `
|
|
244
|
+
- `gemini-3.1-pro` -> `auto-gemini-3`
|
|
244
245
|
- if one server bot name maps to multiple server roles, `bot edit` keeps the Telegram env entry bound to the server identity and lets you review the local `role_profiles` for each detected role instead of forcing one role/profile UUID choice up front.
|
|
245
246
|
- In the normal Telegram edit path, the CLI keeps or re-resolves the server bot binding automatically. It no longer asks you to pick `approval / worker / review / monitor` or a server bot UUID first.
|
|
246
247
|
- `bot set-default` without flags starts a guided numbered flow: provider -> bot entry -> confirm default change.
|
|
@@ -267,7 +268,7 @@ Non-interactive examples:
|
|
|
267
268
|
```bash
|
|
268
269
|
metheus-governance-mcp-cli bot global --provider telegram --non-interactive true --api-base-url http://127.0.0.1:8999/telegram --auto-clear-webhook false --allowed-updates message,edited_message,channel_post
|
|
269
270
|
metheus-governance-mcp-cli bot add --provider telegram --non-interactive true --server-bot-id <server_bot_uuid> --token <telegram_bot_token> --default true
|
|
270
|
-
metheus-governance-mcp-cli bot add --provider telegram --non-interactive true --server-bot-id <server_bot_uuid> --token <telegram_bot_token> --ai-client gpt --ai-model "
|
|
271
|
+
metheus-governance-mcp-cli bot add --provider telegram --non-interactive true --server-bot-id <server_bot_uuid> --token <telegram_bot_token> --ai-client gpt --ai-model "gpt-5.4" --ai-permission-mode read_only --ai-reasoning-effort low
|
|
271
272
|
metheus-governance-mcp-cli bot edit --provider telegram --bot-key ryoai_bot --non-interactive true --ai-client claude --ai-model "Sonnet 4.6r" --ai-permission-mode danger_full_access --ai-reasoning-effort high
|
|
272
273
|
metheus-governance-mcp-cli bot set-default --provider telegram --bot-key main --non-interactive true
|
|
273
274
|
metheus-governance-mcp-cli bot migrate --provider telegram --bot-key main --server-bot-id <server_bot_uuid> --bot-name <telegram_username> --role-profile monitor --ai-client codex --ai-permission-mode read_only --ai-reasoning-effort low --non-interactive true
|
package/lib/bot-commands.mjs
CHANGED
|
@@ -1462,9 +1462,9 @@ function suggestedAIModelsForClient(clientName) {
|
|
|
1462
1462
|
const normalizedClient = String(clientName || "").trim().toLowerCase();
|
|
1463
1463
|
if (normalizedClient === "codex") {
|
|
1464
1464
|
return [
|
|
1465
|
-
{ value: "
|
|
1466
|
-
{ value: "
|
|
1467
|
-
{ value: "
|
|
1465
|
+
{ value: "gpt-5.4", label: "gpt-5.4", description: "recommended GPT model" },
|
|
1466
|
+
{ value: "gpt-5.3-codex", label: "gpt-5.3-codex", description: "stable GPT codex model" },
|
|
1467
|
+
{ value: "gpt-5.3-codex-spark", label: "gpt-5.3-codex-spark", description: "faster GPT codex model" },
|
|
1468
1468
|
];
|
|
1469
1469
|
}
|
|
1470
1470
|
if (normalizedClient === "claude") {
|
|
@@ -1473,12 +1473,12 @@ function suggestedAIModelsForClient(clientName) {
|
|
|
1473
1473
|
{ value: "Haiku 4.5", label: "Haiku 4.5", description: "display label; runs as haiku" },
|
|
1474
1474
|
{ value: "Opus 4.6", label: "Opus 4.6", description: "display label; runs as opus" },
|
|
1475
1475
|
];
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1476
|
+
}
|
|
1477
|
+
if (normalizedClient === "gemini") {
|
|
1478
|
+
return [
|
|
1479
|
+
{ value: "gemini-3.1-pro", label: "gemini-3.1-pro", description: "display label; runs as auto-gemini-3" },
|
|
1480
|
+
];
|
|
1481
|
+
}
|
|
1482
1482
|
if (normalizedClient === "sample") {
|
|
1483
1483
|
return [
|
|
1484
1484
|
{ value: "sample", label: "sample", description: "sample adapter model placeholder" },
|
|
@@ -11,19 +11,19 @@ const SUPPORTED_REASONING_EFFORTS = ["low", "medium", "high"];
|
|
|
11
11
|
const LOCAL_AI_MODEL_MAPPINGS = {
|
|
12
12
|
codex: [
|
|
13
13
|
{
|
|
14
|
-
display: "
|
|
15
|
-
execution: "gpt-5.
|
|
16
|
-
aliases: ["gpt-5.4", "gpt 5.4", "
|
|
14
|
+
display: "gpt-5.4",
|
|
15
|
+
execution: "gpt-5.4",
|
|
16
|
+
aliases: ["gpt-5.4", "gpt 5.4", "GPT-5.4"],
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
|
-
display: "
|
|
20
|
-
execution: "gpt-5.
|
|
21
|
-
aliases: ["gpt-5.3-codex", "gpt 5.3 codex", "
|
|
19
|
+
display: "gpt-5.3-codex",
|
|
20
|
+
execution: "gpt-5.3-codex",
|
|
21
|
+
aliases: ["gpt-5.3-codex", "gpt 5.3 codex", "GPT-5.3-CODEX"],
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
|
-
display: "
|
|
25
|
-
execution: "gpt-5.
|
|
26
|
-
aliases: ["gpt-5.3-codex-spark", "gpt 5.3 codex spark", "
|
|
24
|
+
display: "gpt-5.3-codex-spark",
|
|
25
|
+
execution: "gpt-5.3-codex-spark",
|
|
26
|
+
aliases: ["gpt-5.3-codex-spark", "gpt 5.3 codex spark", "GPT-5.3-CODEX-Spark"],
|
|
27
27
|
},
|
|
28
28
|
],
|
|
29
29
|
claude: [
|
|
@@ -45,9 +45,16 @@ const LOCAL_AI_MODEL_MAPPINGS = {
|
|
|
45
45
|
],
|
|
46
46
|
gemini: [
|
|
47
47
|
{
|
|
48
|
-
display: "
|
|
49
|
-
execution: "gemini-
|
|
50
|
-
aliases: [
|
|
48
|
+
display: "gemini-3.1-pro",
|
|
49
|
+
execution: "auto-gemini-3",
|
|
50
|
+
aliases: [
|
|
51
|
+
"gemini-3.1-pro",
|
|
52
|
+
"gemini 3.1 pro",
|
|
53
|
+
"Gemini 3.1 Pro",
|
|
54
|
+
"gemini-3.1-pro-preview",
|
|
55
|
+
"auto-gemini-3",
|
|
56
|
+
"pro",
|
|
57
|
+
],
|
|
51
58
|
},
|
|
52
59
|
],
|
|
53
60
|
sample: [],
|
|
@@ -234,19 +234,22 @@ export async function runSelftestBotCommands(push, deps) {
|
|
|
234
234
|
try {
|
|
235
235
|
push(
|
|
236
236
|
"display_model_labels_map_to_tested_execution_ids",
|
|
237
|
-
resolveLocalAIExecutionModel("codex", "
|
|
238
|
-
&& resolveLocalAIExecutionModel("codex", "
|
|
239
|
-
&& resolveLocalAIExecutionModel("codex", "
|
|
237
|
+
resolveLocalAIExecutionModel("codex", "gpt-5.4") === "gpt-5.4"
|
|
238
|
+
&& resolveLocalAIExecutionModel("codex", "gpt-5.3-codex") === "gpt-5.3-codex"
|
|
239
|
+
&& resolveLocalAIExecutionModel("codex", "gpt-5.3-codex-spark") === "gpt-5.3-codex-spark"
|
|
240
|
+
&& resolveLocalAIExecutionModel("codex", "GPT-5.4") === "gpt-5.4"
|
|
241
|
+
&& resolveLocalAIExecutionModel("codex", "GPT-5.3-CODEX") === "gpt-5.3-codex"
|
|
242
|
+
&& resolveLocalAIExecutionModel("codex", "GPT-5.3-CODEX-Spark") === "gpt-5.3-codex-spark"
|
|
240
243
|
&& resolveLocalAIExecutionModel("claude", "Sonnet 4.6r") === "sonnet"
|
|
241
244
|
&& resolveLocalAIExecutionModel("claude", "Haiku 4.5") === "haiku"
|
|
242
245
|
&& resolveLocalAIExecutionModel("claude", "Opus 4.6") === "opus"
|
|
243
|
-
&& resolveLocalAIExecutionModel("gemini", "
|
|
246
|
+
&& resolveLocalAIExecutionModel("gemini", "gemini-3.1-pro") === "auto-gemini-3",
|
|
244
247
|
[
|
|
245
|
-
`gpt54=${resolveLocalAIExecutionModel("codex", "
|
|
246
|
-
`gpt53codex=${resolveLocalAIExecutionModel("codex", "
|
|
247
|
-
`spark=${resolveLocalAIExecutionModel("codex", "
|
|
248
|
+
`gpt54=${resolveLocalAIExecutionModel("codex", "gpt-5.4")}`,
|
|
249
|
+
`gpt53codex=${resolveLocalAIExecutionModel("codex", "gpt-5.3-codex")}`,
|
|
250
|
+
`spark=${resolveLocalAIExecutionModel("codex", "gpt-5.3-codex-spark")}`,
|
|
248
251
|
`claude=${resolveLocalAIExecutionModel("claude", "Sonnet 4.6r")}`,
|
|
249
|
-
`gemini=${resolveLocalAIExecutionModel("gemini", "
|
|
252
|
+
`gemini=${resolveLocalAIExecutionModel("gemini", "gemini-3.1-pro")}`,
|
|
250
253
|
].join(" "),
|
|
251
254
|
);
|
|
252
255
|
|
|
@@ -390,7 +393,7 @@ export async function runSelftestBotCommands(push, deps) {
|
|
|
390
393
|
"3", // select role to edit: approval
|
|
391
394
|
"2", // approval: edit settings
|
|
392
395
|
"4", // approval AI client: gemini
|
|
393
|
-
"2", // approval AI model:
|
|
396
|
+
"2", // approval AI model: gemini-3.1-pro
|
|
394
397
|
"4", // approval permission: danger_full_access
|
|
395
398
|
"4", // approval reasoning: high
|
|
396
399
|
"n", // stop editing roles
|
|
@@ -413,7 +416,7 @@ export async function runSelftestBotCommands(push, deps) {
|
|
|
413
416
|
&& String(safeObject(safeObject(groupedRunnerConfig.role_profiles || {}).worker).permission_mode || "") === "danger_full_access"
|
|
414
417
|
&& String(safeObject(safeObject(groupedRunnerConfig.role_profiles || {}).worker).reasoning_effort || "") === "high"
|
|
415
418
|
&& String(safeObject(safeObject(groupedRunnerConfig.role_profiles || {}).approval).client || "") === "gemini"
|
|
416
|
-
&& String(safeObject(safeObject(groupedRunnerConfig.role_profiles || {}).approval).model || "") === "
|
|
419
|
+
&& String(safeObject(safeObject(groupedRunnerConfig.role_profiles || {}).approval).model || "") === "gemini-3.1-pro",
|
|
417
420
|
`worker=${JSON.stringify(safeObject(safeObject(groupedRunnerConfig.role_profiles || {}).worker))} approval=${JSON.stringify(safeObject(safeObject(groupedRunnerConfig.role_profiles || {}).approval))}`,
|
|
418
421
|
);
|
|
419
422
|
|
|
@@ -522,7 +525,7 @@ export async function runSelftestBotCommands(push, deps) {
|
|
|
522
525
|
"2", // change AI client
|
|
523
526
|
"4", // gemini
|
|
524
527
|
"2", // change AI model
|
|
525
|
-
"2", // gemini model:
|
|
528
|
+
"2", // gemini model: gemini-3.1-pro
|
|
526
529
|
"2", // change permission mode
|
|
527
530
|
"3", // workspace_write
|
|
528
531
|
"2", // change reasoning effort
|
|
@@ -541,7 +544,7 @@ export async function runSelftestBotCommands(push, deps) {
|
|
|
541
544
|
push(
|
|
542
545
|
"bot_edit_guided_prompts_update_ai_binding_fields",
|
|
543
546
|
String(guidedState.TELEGRAM_BOT_MONITORSELFTESTBOT_AI_CLIENT || "") === "gemini"
|
|
544
|
-
&& String(guidedState.TELEGRAM_BOT_MONITORSELFTESTBOT_AI_MODEL || "") === "
|
|
547
|
+
&& String(guidedState.TELEGRAM_BOT_MONITORSELFTESTBOT_AI_MODEL || "") === "gemini-3.1-pro"
|
|
545
548
|
&& String(guidedState.TELEGRAM_BOT_MONITORSELFTESTBOT_AI_PERMISSION_MODE || "") === "workspace_write"
|
|
546
549
|
&& String(guidedState.TELEGRAM_BOT_MONITORSELFTESTBOT_AI_REASONING_EFFORT || "") === "medium",
|
|
547
550
|
`client=${String(guidedState.TELEGRAM_BOT_MONITORSELFTESTBOT_AI_CLIENT || "")} model=${String(guidedState.TELEGRAM_BOT_MONITORSELFTESTBOT_AI_MODEL || "")}`,
|
|
@@ -703,7 +706,7 @@ export async function runSelftestBotCommands(push, deps) {
|
|
|
703
706
|
"--server-bot-id", mock.bots[0].id,
|
|
704
707
|
"--token", "selftest-main-token",
|
|
705
708
|
"--ai-client", "gpt",
|
|
706
|
-
"--ai-model", "
|
|
709
|
+
"--ai-model", "gpt-5.4",
|
|
707
710
|
"--ai-permission-mode", "read_only",
|
|
708
711
|
"--ai-reasoning-effort", "low",
|
|
709
712
|
"--verify", "true",
|
|
@@ -716,7 +719,7 @@ export async function runSelftestBotCommands(push, deps) {
|
|
|
716
719
|
String(aliasAddState.TELEGRAM_BOT_MONITORSELFTESTBOT_SERVER_BOT_ID || "") === mock.bots[0].id
|
|
717
720
|
&& String(aliasAddState.TELEGRAM_BOT_MONITORSELFTESTBOT_USERNAME || "") === ""
|
|
718
721
|
&& String(aliasAddState.TELEGRAM_BOT_MONITORSELFTESTBOT_AI_CLIENT || "") === "codex"
|
|
719
|
-
&& String(aliasAddState.TELEGRAM_BOT_MONITORSELFTESTBOT_AI_MODEL || "") === "
|
|
722
|
+
&& String(aliasAddState.TELEGRAM_BOT_MONITORSELFTESTBOT_AI_MODEL || "") === "gpt-5.4"
|
|
720
723
|
&& String(aliasAddState.TELEGRAM_BOT_MONITORSELFTESTBOT_AI_PERMISSION_MODE || "") === "read_only"
|
|
721
724
|
&& String(aliasAddState.TELEGRAM_BOT_MONITORSELFTESTBOT_AI_REASONING_EFFORT || "") === "low",
|
|
722
725
|
`client=${String(aliasAddState.TELEGRAM_BOT_MONITORSELFTESTBOT_AI_CLIENT || "")} model=${String(aliasAddState.TELEGRAM_BOT_MONITORSELFTESTBOT_AI_MODEL || "")}`,
|