@iinm/plain-agent 1.9.1 → 1.9.2

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
@@ -1,32 +1,71 @@
1
- <p align="center">
2
- <img src="https://pub-0bb49aa929f242d49c89ed8c297932b5.r2.dev/plain-agent/plain-agent-logo.png" alt="plain-agent logo" width="320">
3
- </p>
4
-
5
1
  # Plain Agent
6
2
 
7
- A lightweight CLI-based coding agent.
3
+ A lightweight, capable coding agent for the terminal.
8
4
 
9
5
  - **Multi-provider** — Use Claude, GPT, Gemini, or any OpenAI-compatible model.
10
- - **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)).
11
- - **Fine-grained approval rules** — Auto-approve commands by name, arguments,
12
- and file paths using regex patterns
13
- ([config.predefined.json#autoApproval](https://github.com/iinm/plain-agent/blob/main/config/config.predefined.json)).
14
- - **Path validation** — Restricts access to the working directory.
15
- Git-ignored and untracked files require explicit approval.
16
- - **Sandboxed execution** — Run the agent's shell commands inside a Docker
17
- container with network access restricted to allowlisted destinations
18
- (e.g., `registry.npmjs.org` only for `npm install`).
19
- - **Plain-text memory** — Task state is persisted as Markdown files under
20
- `.plain-agent/memory/`, easy to review.
6
+ <details>
7
+ <summary>Predefined models</summary>
8
+
9
+ ```
10
+ # Model+Variant (Platform+Variant)
11
+ claude-haiku-4-5+thinking-16k (platform: anthropic+default)
12
+ claude-haiku-4-5+thinking-32k (platform: anthropic+default)
13
+ claude-sonnet-4-6+thinking-high (platform: anthropic+default)
14
+ claude-sonnet-4-6+thinking-max (platform: anthropic+default)
15
+ claude-opus-4-7+thinking-high (platform: anthropic+default)
16
+ claude-opus-4-7+thinking-max (platform: anthropic+default)
17
+ claude-haiku-4-5+thinking-16k-bedrock (platform: bedrock+default)
18
+ claude-haiku-4-5+thinking-32k-bedrock (platform: bedrock+default)
19
+ claude-sonnet-4-6+thinking-high-bedrock (platform: bedrock+default)
20
+ claude-sonnet-4-6+thinking-max-bedrock (platform: bedrock+default)
21
+ claude-opus-4-7+thinking-high-bedrock (platform: bedrock+default)
22
+ claude-opus-4-7+thinking-max-bedrock (platform: bedrock+default)
23
+ gemini-3-flash-preview+thinking-medium (platform: gemini+default)
24
+ gemini-3-flash-preview+thinking-high (platform: gemini+default)
25
+ gemini-3.1-pro-preview+thinking-medium (platform: gemini+default)
26
+ gemini-3.1-pro-preview+thinking-high (platform: gemini+default)
27
+ gemini-3-flash-preview+thinking-medium-vertex-ai (platform: vertex-ai+default)
28
+ gemini-3-flash-preview+thinking-high-vertex-ai (platform: vertex-ai+default)
29
+ gemini-3.1-pro-preview+thinking-medium-vertex-ai (platform: vertex-ai+default)
30
+ gemini-3.1-pro-preview+thinking-high-vertex-ai (platform: vertex-ai+default)
31
+ gpt-5.4-mini+thinking-medium (platform: openai+default)
32
+ gpt-5.4-mini+thinking-high (platform: openai+default)
33
+ gpt-5.4-mini+thinking-xhigh (platform: openai+default)
34
+ gpt-5.5+thinking-medium (platform: openai+default)
35
+ gpt-5.5+thinking-high (platform: openai+default)
36
+ gpt-5.5+thinking-xhigh (platform: openai+default)
37
+ gpt-5.2-chat+thinking-medium-azure (platform: azure+openai)
38
+ gpt-oss-120b+fireworks (platform: openai-compatible+fireworks)
39
+ glm-5+vertex-ai (platform: vertex-ai+default)
40
+ glm-5.1+fireworks (platform: openai-compatible+fireworks)
41
+ glm-5.1+novita (platform: openai-compatible+novita)
42
+ kimi-k2.6+fireworks (platform: openai-compatible+fireworks)
43
+ kimi-k2.6+novita (platform: openai-compatible+novita)
44
+ deepseek-v4-pro+novita (platform: openai-compatible+novita)
45
+ deepseek-v4-pro+fireworks (platform: openai-compatible+fireworks)
46
+ minimax-m2.7+fireworks (platform: openai-compatible+fireworks)
47
+ minimax-m2.7+novita (platform: openai-compatible+novita)
48
+ qwen3.6-plus+fireworks (platform: openai-compatible+fireworks)
49
+ qwen3.6-27b+novita (platform: openai-compatible+novita)
50
+ nova-2-lite+bedrock (platform: bedrock+default)
51
+ claude-haiku-4-5+thinking-16k-bedrock-converse (platform: bedrock+default)
52
+ ```
53
+ </details>
54
+
55
+
56
+ - **Approval rules & path validation** — Auto-approve tool uses by name and arguments using regex patterns ([config.predefined.json#autoApproval](https://github.com/iinm/plain-agent/blob/main/config/config.predefined.json)); restrict file access to the working directory — git-ignored and untracked files require explicit approval ([src/toolInputValidator.mjs](https://github.com/iinm/plain-agent/blob/main/src/toolInputValidator.mjs)).
57
+ - **Sandboxed execution** — Run agent commands in a Docker container with a read-only project root and no network; writable mode and allowlisted network destinations can be enabled as needed.
58
+ - **Plain-text memory** — Task state is saved as Markdown files under `.plain-agent/memory/` for easy review.
21
59
  - **Extensible** — Define prompts and subagents in Markdown. Connect MCP servers.
22
60
  Supports Claude Code plugins and `.claude/` commands, subagents, and skills.
23
61
 
24
62
  ## Limitations
25
63
 
64
+ - **Path validation only covers tool arguments** — Path validation restricts only paths explicitly passed as tool-use arguments; it cannot control file access inside arbitrary scripts. Always use sandboxed execution when allowing arbitrary script execution.
65
+ - **No session persistence** — Sessions are not persisted. Start a fresh session and use memory files (`.plain-agent/memory/`) instead.
26
66
  - **Sequential subagent execution** — Subagents run one at a time rather than
27
67
  in parallel. The trade-off is full visibility: every step is streamed to
28
68
  your terminal so you can follow exactly what each subagent is doing.
29
- - **No session persistence** — Sessions are not persisted. Start a fresh session and use memory files (`.plain-agent/memory/`) instead.
30
69
 
31
70
  ## Requirements
32
71
 
@@ -157,7 +196,7 @@ Create the configuration.
157
196
  ```
158
197
 
159
198
  ```js
160
- // OpenAI-compatible provider (Ollama) example with a custom model
199
+ // Ollama example with a custom model
161
200
  {
162
201
  "platforms": [
163
202
  {
@@ -184,7 +223,6 @@ Create the configuration.
184
223
  }
185
224
  ]
186
225
  }
187
-
188
226
  ```
189
227
  </details>
190
228
 
@@ -327,9 +365,7 @@ Files are loaded in the following order. Settings in later files override earlie
327
365
  ├── (4) config.local.json # Project-specific local configuration (including secrets)
328
366
  ├── prompts/ # Project-specific prompts
329
367
  ├── agents/ # Project-specific agent roles
330
- ├── memory/ # Task-specific memory files
331
- ├── sandbox/ # Sandbox runner scripts
332
- └── tmp/ # Agent scratch space
368
+ └── sandbox/ # Sandbox runner scripts
333
369
  ```
334
370
 
335
371
  ### Example
@@ -914,6 +914,30 @@
914
914
  }
915
915
  },
916
916
 
917
+ {
918
+ "name": "gpt-oss-120b",
919
+ "variant": "fireworks",
920
+ "platform": {
921
+ "name": "openai-compatible",
922
+ "variant": "fireworks"
923
+ },
924
+ "model": {
925
+ "format": "openai-messages",
926
+ "config": {
927
+ "model": "accounts/fireworks/models/gpt-oss-120b"
928
+ }
929
+ },
930
+ "cost": {
931
+ "currency": "USD",
932
+ "unit": "1M",
933
+ "costs": {
934
+ "prompt_tokens": 0.15,
935
+ "prompt_tokens_details.cached_tokens": -0.14,
936
+ "completion_tokens": 0.6
937
+ }
938
+ }
939
+ },
940
+
917
941
  {
918
942
  "name": "glm-5",
919
943
  "variant": "vertex-ai",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iinm/plain-agent",
3
- "version": "1.9.1",
3
+ "version": "1.9.2",
4
4
  "description": "A lightweight CLI-based coding agent",
5
5
  "license": "MIT",
6
6
  "type": "module",