@iinm/plain-agent 1.7.22 → 1.7.24

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 CHANGED
@@ -2,24 +2,21 @@
2
2
 
3
3
  A lightweight CLI-based coding agent.
4
4
 
5
- ## Why Plain Agent?
6
-
7
5
  - **Multi-provider** — Use Claude, GPT, Gemini, or any OpenAI-compatible model.
8
- Switch providers without changing your workflow.
6
+ - **Compact system prompt** Under 3.5 KB, keeping per-request overhead and cost low ([src/prompt.mjs](https://github.com/iinm/plain-agent/blob/main/src/prompt.mjs)).
9
7
  - **Fine-grained approval rules** — Auto-approve commands by name, arguments,
10
8
  and file paths using regex patterns
11
- ([`config.predefined.json`](https://github.com/iinm/plain-agent/blob/main/config/config.predefined.json)).
12
- - **Path validation** — File paths must stay within the working directory
13
- and git-ignored files (`.env`, etc.) are blocked.
9
+ ([`config.predefined.json#autoApproval`](https://github.com/iinm/plain-agent/blob/main/config/config.predefined.json)).
10
+ - **Path validation** — Restricts access to the working directory.
11
+ Git-ignored and untracked files require explicit approval.
14
12
  - **Sandboxed execution** — Run the agent's shell commands inside a Docker
15
13
  container with network access restricted to allowlisted destinations
16
14
  (e.g., `registry.npmjs.org` only for `npm install`).
17
- - **Extensible** — Define prompts and subagents in Markdown.
18
- Connect MCP servers. Reuse Claude Code plugins.
15
+ - **Extensible** — Define prompts and subagents in Markdown. Connect MCP servers.
16
+ Supports Claude Code plugins and `.claude/` commands, subagents, and skills.
19
17
 
20
18
  ## Limitations
21
19
 
22
- - **CLI only** — Plain Agent does not provide a terminal UI.
23
20
  - **Sequential subagent execution** — Subagents run one at a time rather than
24
21
  in parallel. The trade-off is full visibility: every step is streamed to
25
22
  your terminal so you can follow exactly what each subagent is doing.
@@ -146,6 +143,12 @@ Create the configuration.
146
143
  "variant": "fireworks",
147
144
  "baseURL": "https://api.fireworks.ai/inference",
148
145
  "apiKey": "<FIREWORKS_API_KEY>"
146
+ },
147
+ {
148
+ "name": "openai-compatible",
149
+ "variant": "novita",
150
+ "baseURL": "https://api.novita.ai/openai",
151
+ "apiKey": "<NOVITA_API_KEY>"
149
152
  }
150
153
  ]
151
154
  }
@@ -491,9 +494,9 @@ Files are loaded in the following order. Settings in later files override earlie
491
494
 
492
495
  The agent can use the following tools to assist with tasks:
493
496
 
494
- - **exec_command**: Run a command without shell interpretation.
495
497
  - **write_file**: Write a file.
496
498
  - **patch_file**: Patch a file.
499
+ - **exec_command**: Run a command without shell interpretation.
497
500
  - **tmux_command**: Run a tmux command.
498
501
  - **ask_web**: Use the web search to answer questions that need up-to-date information or supporting sources. (requires Google API key or Vertex AI configuration).
499
502
  - **ask_url**: Use one or more provided URLs to answer a question. Include the URLs in your question. (requires Google API key or Vertex AI configuration).
@@ -956,6 +956,29 @@
956
956
  }
957
957
  }
958
958
  },
959
+ {
960
+ "name": "glm-5.1",
961
+ "variant": "novita",
962
+ "platform": {
963
+ "name": "openai-compatible",
964
+ "variant": "novita"
965
+ },
966
+ "model": {
967
+ "format": "openai-messages",
968
+ "config": {
969
+ "model": "zai-org/glm-5.1"
970
+ }
971
+ },
972
+ "cost": {
973
+ "currency": "USD",
974
+ "unit": "1M",
975
+ "costs": {
976
+ "prompt_tokens": 1.4,
977
+ "prompt_tokens_details.cached_tokens": -1.14,
978
+ "completion_tokens": 4.4
979
+ }
980
+ }
981
+ },
959
982
 
960
983
  {
961
984
  "name": "kimi-k2.6",
@@ -980,42 +1003,50 @@
980
1003
  }
981
1004
  }
982
1005
  },
983
-
984
1006
  {
985
- "name": "deepseek-v3.2",
986
- "variant": "vertex-ai",
1007
+ "name": "kimi-k2.6",
1008
+ "variant": "novita",
987
1009
  "platform": {
988
- "name": "vertex-ai",
989
- "variant": "default"
1010
+ "name": "openai-compatible",
1011
+ "variant": "novita"
990
1012
  },
991
1013
  "model": {
992
1014
  "format": "openai-messages",
993
1015
  "config": {
994
- "model": "deepseek-ai/deepseek-v3.2-maas",
995
- "chat_template_kwargs": { "thinking": true }
1016
+ "model": "moonshotai/kimi-k2.6"
1017
+ }
1018
+ },
1019
+ "cost": {
1020
+ "currency": "USD",
1021
+ "unit": "1M",
1022
+ "costs": {
1023
+ "prompt_tokens": 0.95,
1024
+ "prompt_tokens_details.cached_tokens": -0.79,
1025
+ "completion_tokens": 4
996
1026
  }
997
1027
  }
998
1028
  },
1029
+
999
1030
  {
1000
- "name": "deepseek-v3.2",
1001
- "variant": "fireworks",
1031
+ "name": "deepseek-v4-pro",
1032
+ "variant": "novita",
1002
1033
  "platform": {
1003
1034
  "name": "openai-compatible",
1004
- "variant": "fireworks"
1035
+ "variant": "novita"
1005
1036
  },
1006
1037
  "model": {
1007
1038
  "format": "openai-messages",
1008
1039
  "config": {
1009
- "model": "accounts/fireworks/models/deepseek-v3p2"
1040
+ "model": "deepseek/deepseek-v4-pro"
1010
1041
  }
1011
1042
  },
1012
1043
  "cost": {
1013
1044
  "currency": "USD",
1014
1045
  "unit": "1M",
1015
1046
  "costs": {
1016
- "prompt_tokens": 0.56,
1017
- "prompt_tokens_details.cached_tokens": -0.28,
1018
- "completion_tokens": 1.68
1047
+ "prompt_tokens": 1.74,
1048
+ "prompt_tokens_details.cached_tokens": -1.595,
1049
+ "completion_tokens": 3.48
1019
1050
  }
1020
1051
  }
1021
1052
  },
@@ -1038,26 +1069,35 @@
1038
1069
  "unit": "1M",
1039
1070
  "costs": {
1040
1071
  "prompt_tokens": 0.3,
1041
- "prompt_tokens_details.cached_tokens": -0.27,
1072
+ "prompt_tokens_details.cached_tokens": -0.24,
1042
1073
  "completion_tokens": 1.2
1043
1074
  }
1044
1075
  }
1045
1076
  },
1046
-
1047
1077
  {
1048
- "name": "qwen3-next",
1049
- "variant": "vertex-ai",
1078
+ "name": "minimax-m2.7",
1079
+ "variant": "novita",
1050
1080
  "platform": {
1051
- "name": "vertex-ai",
1052
- "variant": "default"
1081
+ "name": "openai-compatible",
1082
+ "variant": "novita"
1053
1083
  },
1054
1084
  "model": {
1055
1085
  "format": "openai-messages",
1056
1086
  "config": {
1057
- "model": "qwen/qwen3-next-80b-a3b-thinking-maas"
1087
+ "model": "minimax/minimax-m2.7"
1088
+ }
1089
+ },
1090
+ "cost": {
1091
+ "currency": "USD",
1092
+ "unit": "1M",
1093
+ "costs": {
1094
+ "prompt_tokens": 0.3,
1095
+ "prompt_tokens_details.cached_tokens": -0.24,
1096
+ "completion_tokens": 1.2
1058
1097
  }
1059
1098
  }
1060
1099
  },
1100
+
1061
1101
  {
1062
1102
  "name": "qwen3.6-plus",
1063
1103
  "variant": "fireworks",
@@ -1081,6 +1121,28 @@
1081
1121
  }
1082
1122
  }
1083
1123
  },
1124
+ {
1125
+ "name": "qwen3.6-27b",
1126
+ "variant": "novita",
1127
+ "platform": {
1128
+ "name": "openai-compatible",
1129
+ "variant": "novita"
1130
+ },
1131
+ "model": {
1132
+ "format": "openai-messages",
1133
+ "config": {
1134
+ "model": "qwen/qwen3.6-27b"
1135
+ }
1136
+ },
1137
+ "cost": {
1138
+ "currency": "USD",
1139
+ "unit": "1M",
1140
+ "costs": {
1141
+ "prompt_tokens": 0.6,
1142
+ "completion_tokens": 3.6
1143
+ }
1144
+ }
1145
+ },
1084
1146
 
1085
1147
  {
1086
1148
  "name": "nova-2-lite",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iinm/plain-agent",
3
- "version": "1.7.22",
3
+ "version": "1.7.24",
4
4
  "description": "A lightweight CLI-based coding agent",
5
5
  "license": "MIT",
6
6
  "type": "module",