@aipermission/mcp 0.1.9 → 0.1.11

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
@@ -98,11 +98,11 @@ Supported clients:
98
98
  - `gemini`: `GEMINI.md`
99
99
  - `custom`: prints portable Markdown to stdout
100
100
 
101
- These instructions teach the agent how to poll `approval_pending` and `running` requests, handle `stale` approvals by sending a fresh request, read live console output, write short reasons, use explicit file transfer paths, and avoid printing secrets. The default installer uses the operator instruction bundled in the npm package; `--source` accepts local file paths only and rejects HTTP(S) sources.
101
+ These instructions teach the agent how to poll `approval_pending` and `running` requests, handle `stale` approvals by sending a fresh request, read live console output, recover stuck persistent console sessions with `restart_console_session`, write short reasons, use explicit file transfer paths, and avoid printing secrets. The default installer uses the operator instruction bundled in the npm package; `--source` accepts local file paths only and rejects HTTP(S) sources.
102
102
 
103
103
  ## Security Boundary
104
104
 
105
- This package talks to a local AIPermission gateway. `AIPERMISSION_API_URL` must point to `localhost`, `127.0.0.1`, or `[::1]`; remote URLs are rejected before the bearer token is sent. Do not expose the gateway on LAN or the public internet, and do not use it as a shared DevOps service. Tokens grant access only to the servers and execution rules configured in the gateway UI. Token/server permissions may be temporary; expired grants are omitted from `list_servers` and no longer authorize command, console, or file-transfer tools.
105
+ This package talks to a local AIPermission gateway. `AIPERMISSION_API_URL` must point to `localhost`, `127.0.0.1`, or `[::1]`; remote URLs are rejected before the bearer token is sent. Do not expose the gateway on LAN or the public internet, and do not use it as a shared DevOps service. Tokens grant access only to the servers and execution rules configured in the gateway UI. Token/server permissions may be temporary; expired grants are omitted from `list_servers` and no longer authorize command, console, or file-transfer tools. `list_servers` is permission-scoped, not a live SSH health check; treat `exec` connection errors as the current reachability signal.
106
106
 
107
107
  ## License
108
108
 
@@ -27,6 +27,11 @@ If no server is visible, say that the current token has no accessible servers.
27
27
  If `expires_at` is present, treat access as temporary. Finish within that
28
28
  maintenance window or ask the operator to extend access.
29
29
 
30
+ `list_servers()` is permission-scoped, not a live health check. A visible server
31
+ may still be powered off, unreachable, reject SSH authentication, or require host
32
+ key review. Treat `exec` dial, timeout, authentication, and host-key errors as
33
+ the current reachability signal.
34
+
30
35
  ## Command Reasons
31
36
 
32
37
  Every `exec` call should include a short `reason`.
@@ -72,6 +77,9 @@ stale
72
77
 
73
78
  If the request is `declined`, read `user_note` and follow the user's correction.
74
79
  If the request is `stale`, the approval context changed before execution; send a fresh `exec` request with the current command and reason instead of trying to reuse the old approval.
80
+ If the request is `error`, read the error text. SSH reachability, refused ports,
81
+ authentication failures, and host-key failures are current connection signals;
82
+ do not assume a listed server is live just because `list_servers` returned it.
75
83
 
76
84
  ## Running Flow
77
85
 
@@ -83,11 +91,12 @@ When `exec` or `get_request` returns `running`:
83
91
  4. Do not start another long-running command on the same server until the active request reaches a terminal status, unless the user explicitly asks.
84
92
 
85
93
  If the request appears stuck for an unusually long time and `read_console`
86
- shows no useful progress, ask the operator before recovery. When the operator
87
- agrees, call `restart_console_session(server_id)`. This closes the
88
- gateway-owned persistent console session and the next `exec` opens a fresh SSH
89
- session. Treat any canceled request as inconclusive and re-run only the minimal
90
- safe inspection needed.
94
+ shows no useful progress, ask the operator before recovery unless they already
95
+ asked you to recover the session. When recovery is approved, call
96
+ `restart_console_session(server_id)`. This does not intentionally run a remote
97
+ shell command; it closes the gateway-owned persistent console session and the
98
+ next `exec` opens a fresh SSH session. Treat any canceled request as
99
+ inconclusive and re-run only the minimal safe inspection needed.
91
100
 
92
101
  ## Message Flow
93
102
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aipermission/mcp",
3
- "version": "0.1.9",
3
+ "version": "0.1.11",
4
4
  "mcpName": "io.github.aipermission/aipermission-mcp",
5
5
  "description": "Local-first MCP bridge for the aipermission gateway.",
6
6
  "license": "MIT",
package/server.json CHANGED
@@ -3,12 +3,12 @@
3
3
  "name": "io.github.aipermission/aipermission-mcp",
4
4
  "title": "AIPermission",
5
5
  "description": "Local-first MCP bridge for the AIPermission gateway.",
6
- "version": "0.1.9",
6
+ "version": "0.1.11",
7
7
  "packages": [
8
8
  {
9
9
  "registryType": "npm",
10
10
  "identifier": "@aipermission/mcp",
11
- "version": "0.1.9",
11
+ "version": "0.1.11",
12
12
  "transport": {
13
13
  "type": "stdio"
14
14
  }