palmier 1.0.7 → 1.0.8

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
@@ -158,7 +158,7 @@ Revoking the linked device also clears the host's linked-device record; device c
158
158
 
159
159
  Palmier can store website passwords and PINs like a browser's password manager so agents can sign in to sites without ever seeing the credentials. When an agent driving a browser (via the `playwright-cli` skill) reaches a login or PIN field, it calls the `fill-password` tool with the page URL, the username, and the field's element ref. Palmier matches the saved secret by **origin**, fills it directly into the live browser session, and presses Enter to submit the form in the same step — so the plaintext secret sits on the page for as little time as possible and never enters the agent's context. If nothing is saved for that `(origin, username)`, Palmier prompts you in the app with a masked dialog. The dialog has a "Save for next time" checkbox (on by default): leave it checked to store the secret for reuse, or uncheck it to fill it just this once without saving. Either way it is filled into the page. The plaintext secret is never returned to the agent and is never written to task history.
160
160
 
161
- Saved passwords and PINs are encrypted at rest with AES-256-GCM under a host-local key, both stored in `~/.config/palmier/` (`passwords.enc` and `password-key`). Manage them from the host:
161
+ Saved passwords and PINs are encrypted at rest with AES-256-GCM under a host-local key, both stored in `~/.config/palmier/` (`passwords.enc` and `password-key`). Manage them from the app via **Manage saved passwords** in the side panel (lists origin and username only, with per-entry delete), or from the host CLI:
162
162
 
163
163
  ```bash
164
164
  # List saved passwords (origin and username only — never the password)
@@ -10,6 +10,7 @@ import { getAgent, getPromptCommandLine, getNpmInstalledVersion } from "./agents
10
10
  import { validateClient, revokeClient } from "./client-store.js";
11
11
  import { publishHostEvent } from "./events.js";
12
12
  import { getLinkedDevice, setLinkedDevice, clearLinkedDevice, clearLinkedDeviceIfMatches } from "./linked-device.js";
13
+ import { listPasswords, deletePassword } from "./password-store.js";
13
14
  import { currentVersion, performUpdate, performAgentUpdate } from "./update-checker.js";
14
15
  import { PLAYWRIGHT_CLI_PACKAGE, PLAYWRIGHT_CLI_LABEL } from "./playwright-cli.js";
15
16
  import { saveConfig } from "./config.js";
@@ -696,6 +697,15 @@ export function createRpcHandler(config, nc) {
696
697
  clearLinkedDevice();
697
698
  return { ok: true };
698
699
  }
700
+ case "passwords.list": {
701
+ return { passwords: listPasswords() };
702
+ }
703
+ case "passwords.delete": {
704
+ const params = request.params;
705
+ if (!params?.origin || !params?.username)
706
+ return { error: "origin and username are required" };
707
+ return { ok: deletePassword(params.origin, params.username) };
708
+ }
699
709
  case "clients.revoke_self": {
700
710
  const clientToken = request.clientToken ?? "";
701
711
  if (!clientToken)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "palmier",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "description": "Palmier host CLI - provisions, executes tasks, and serves NATS RPC",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Hongxu Cai",