@mysten-incubation/memwal-mcp 0.0.14-dev.0 → 0.0.14-dev.10

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.
Files changed (50) hide show
  1. package/README.md +238 -1
  2. package/dist/auth-required.d.ts +325 -0
  3. package/dist/auth-required.d.ts.map +1 -1
  4. package/dist/auth-required.js +84 -16
  5. package/dist/auth-required.js.map +1 -1
  6. package/dist/auth.d.ts +179 -18
  7. package/dist/auth.d.ts.map +1 -1
  8. package/dist/auth.js +458 -35
  9. package/dist/auth.js.map +1 -1
  10. package/dist/auto-save.d.ts +100 -0
  11. package/dist/auto-save.d.ts.map +1 -0
  12. package/dist/auto-save.js +290 -0
  13. package/dist/auto-save.js.map +1 -0
  14. package/dist/bridge.d.ts +14 -2
  15. package/dist/bridge.d.ts.map +1 -1
  16. package/dist/bridge.js +233 -25
  17. package/dist/bridge.js.map +1 -1
  18. package/dist/consent.d.ts +36 -0
  19. package/dist/consent.d.ts.map +1 -0
  20. package/dist/consent.js +129 -0
  21. package/dist/consent.js.map +1 -0
  22. package/dist/health-probe.d.ts +35 -0
  23. package/dist/health-probe.d.ts.map +1 -0
  24. package/dist/health-probe.js +87 -0
  25. package/dist/health-probe.js.map +1 -0
  26. package/dist/index.d.ts +11 -2
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +266 -5
  29. package/dist/index.js.map +1 -1
  30. package/dist/instructions.d.ts +17 -18
  31. package/dist/instructions.d.ts.map +1 -1
  32. package/dist/instructions.js +84 -20
  33. package/dist/instructions.js.map +1 -1
  34. package/dist/login.d.ts +15 -1
  35. package/dist/login.d.ts.map +1 -1
  36. package/dist/login.js +109 -9
  37. package/dist/login.js.map +1 -1
  38. package/dist/memory-policy.d.ts +38 -0
  39. package/dist/memory-policy.d.ts.map +1 -0
  40. package/dist/memory-policy.js +80 -0
  41. package/dist/memory-policy.js.map +1 -0
  42. package/dist/messages.d.ts +10 -3
  43. package/dist/messages.d.ts.map +1 -1
  44. package/dist/messages.js +16 -5
  45. package/dist/messages.js.map +1 -1
  46. package/dist/recovery.d.ts +1 -0
  47. package/dist/recovery.d.ts.map +1 -1
  48. package/dist/recovery.js +15 -13
  49. package/dist/recovery.js.map +1 -1
  50. package/package.json +1 -1
package/README.md CHANGED
@@ -23,6 +23,86 @@ Add Walrus Memory MCP to your MCP client config:
23
23
  }
24
24
  ```
25
25
 
26
+ ## How the plugin launches the server
27
+
28
+ The [MemWal plugin](https://memory.walrus.xyz/mcp/claude-code) does **not** use the
29
+ `npx` form above. `npx` resolves a package *name* against the directory the MCP
30
+ client was started in — your project — so a project that contains an installed
31
+ `@mysten-incubation/memwal-mcp` claiming the pinned version would be run instead of
32
+ the published one. Pinning the version in the `npx` command does not prevent that:
33
+ the planted package simply claims the pinned version.
34
+
35
+ Instead, every plugin launch config runs the plugin's launcher:
36
+
37
+ ```json
38
+ {
39
+ "mcpServers": {
40
+ "memwal": {
41
+ "command": "node",
42
+ "args": ["${CLAUDE_PLUGIN_ROOT}/scripts/launch_mcp.mjs"]
43
+ }
44
+ }
45
+ }
46
+ ```
47
+
48
+ The launcher installs the pinned version once into a directory it owns and then
49
+ runs that absolute entry point with the current `node` binary:
50
+
51
+ ```
52
+ ~/.memwal/runtime/memwal-mcp@<version>/node_modules/@mysten-incubation/memwal-mcp/dist/bin/memwal-mcp.js
53
+ ```
54
+
55
+ It never consults your project's `node_modules` or a `PATH`-relative bin shim, and
56
+ it fails rather than falling back to the package name if the pinned version cannot
57
+ be installed. Everything after the script path is forwarded to the server
58
+ unchanged, so flags such as `--namespace work` or `--relayer <url>` work exactly as
59
+ they do above.
60
+
61
+ The runtime directory is trusted because of what it is, not how it is spelled:
62
+
63
+ - It must be outside the project the client started in. An absolute path is not
64
+ enough on its own — a client expands `${workspaceFolder}` to an absolute path
65
+ inside the repository, and a repository can commit a whole fake install there.
66
+ - It must be a real directory (not a symlink), owned by you, and not group- or
67
+ world-writable. The launcher creates it with mode `0700` and refuses to run code
68
+ out of it otherwise. If you see a refusal, `chmod 700 ~/.memwal ~/.memwal/runtime`.
69
+ - `MEMWAL_MCP_RUNTIME_DIR` moves it, subject to exactly the same rules.
70
+
71
+ The one-off install is run with `--ignore-scripts` (so no `preinstall` or
72
+ `postinstall` from the package or its dependencies executes), against an explicitly
73
+ pinned public registry, with the `npm_config_*` and `NODE_OPTIONS` environment
74
+ scrubbed for that spawn — npm ranks environment variables above every `.npmrc`, so
75
+ a client `env` block would otherwise choose the registry. npm itself is run as
76
+ `node <npm-cli.js>` resolved from the running node binary where that layout exists.
77
+
78
+ What that does **not** give you is an integrity check of the package contents: it
79
+ establishes where the code came from and that nobody else can write it, not that
80
+ the registry served the bytes a reviewer read. If you install from a private
81
+ registry, pre-populate the directory yourself (below) — the launcher then finds the
82
+ install and never runs npm at all.
83
+
84
+ If you configure MemWal without the plugin and want the same property, install the
85
+ version you intend to run into a directory outside any project and point your
86
+ client at its absolute path:
87
+
88
+ ```sh
89
+ mkdir -p ~/.memwal/runtime/memwal-mcp@0.0.14
90
+ chmod 700 ~/.memwal ~/.memwal/runtime
91
+ npm install --ignore-scripts --prefix ~/.memwal/runtime/memwal-mcp@0.0.14 \
92
+ @mysten-incubation/memwal-mcp@0.0.14
93
+ ```
94
+
95
+ ```json
96
+ {
97
+ "mcpServers": {
98
+ "memwal": {
99
+ "command": "node",
100
+ "args": ["/absolute/path/to/home/.memwal/runtime/memwal-mcp@0.0.14/node_modules/@mysten-incubation/memwal-mcp/dist/bin/memwal-mcp.js"]
101
+ }
102
+ }
103
+ }
104
+ ```
105
+
26
106
  ## Login
27
107
 
28
108
  Run the login flow manually:
@@ -38,6 +118,7 @@ The command opens your browser, asks you to connect your Sui wallet, and saves c
38
118
  ```sh
39
119
  memwal-mcp
40
120
  memwal-mcp login
121
+ memwal-mcp auto-save on|off
41
122
  memwal-mcp --logout
42
123
  memwal-mcp --help
43
124
  ```
@@ -52,9 +133,111 @@ Use CLI flags or environment variables to override the default Walrus Memory end
52
133
  | `--web-url <url>` | `MEMWAL_WEB_URL` | Override the web app URL used during login. |
53
134
  | `--label <text>` | `MEMWAL_CLIENT_LABEL` | Friendly delegate-key label shown in Walrus Memory. |
54
135
  | `--namespace <name>` (alias `--ns`) | `MEMWAL_NAMESPACE` | Default memory namespace applied when the agent omits one. |
136
+ | `auto-save on\|off` | `MEMWAL_AUTO_SAVE` | Whether the agent saves durable facts unprompted. On once you agree at login; see [Automatic Memory](#automatic-memory). |
55
137
 
56
138
  Enable verbose stderr logging with `MEMWAL_MCP_DEBUG=1`.
57
139
 
140
+ Set `MEMWAL_MCP_TRANSPORT=http` to dial the relayer's Streamable HTTP endpoint instead of the default SSE pair. Opt-in: reconnect replay is not transport-aware yet, so a write interrupted mid-send may be retried and duplicated.
141
+
142
+ ## Automatic Memory
143
+
144
+ MemWal saves durable facts — preferences, decisions, constraints, recurring
145
+ workflows — as you state them, without asking each time. That is what it is for,
146
+ so it is on. It asks you once first.
147
+
148
+ The question comes up in your terminal the first time you run `login`:
149
+
150
+ ```
151
+ MemWal can save things about you automatically.
152
+
153
+ What that means: when you state a preference, a decision, or a setting in
154
+ chat — "I prefer pnpm", "we deploy from dev", "the relayer is at X" —
155
+ MemWal writes it to your memory without asking each time, so it is there
156
+ in your next session and in every other client you use.
157
+
158
+ Before you choose:
159
+
160
+ - Saved memories are permanent. They go to Walrus, which is immutable
161
+ storage. You can stop saving new ones at any time, but you cannot
162
+ delete one that is already saved.
163
+ - They are encrypted to your account. Only your delegate key reads them.
164
+ - MemWal strips obvious credentials — API keys, tokens, passwords,
165
+ private keys — before saving. Treat that as a safety net, not a
166
+ guarantee: do not paste secrets into a session with this on.
167
+
168
+ [1] Save automatically recommended, this is what MemWal is for
169
+ [2] Only save when I ask nothing is saved unless you say "remember this"
170
+
171
+ Your choice [1/2]:
172
+ ```
173
+
174
+ **Saved memories are permanent.** Walrus is immutable storage: you can stop
175
+ saving new ones at any time, but you cannot delete one already saved — which is
176
+ why you are asked before it starts rather than after.
177
+
178
+ Until you answer, nothing is saved unprompted on a new install; "remember this"
179
+ and recall work throughout. If you were using MemWal before this question
180
+ existed, it keeps saving as it always has and asks you at your next login.
181
+
182
+ The question is only ever asked in a terminal. It is never an MCP tool and never
183
+ something the assistant can answer for you. Change it any time:
184
+
185
+ ```sh
186
+ npx -y @mysten-incubation/memwal-mcp auto-save on
187
+ npx -y @mysten-incubation/memwal-mcp auto-save off
188
+ npx -y @mysten-incubation/memwal-mcp auto-save # report the current setting
189
+ ```
190
+
191
+ The answer is stored as `{"autoSave": true}` in `settings.json` next to your
192
+ credentials file, so it follows the same project-local-beats-global resolution.
193
+ To pin one MCP client instead, set the environment variable — it overrides the
194
+ file and skips the question:
195
+
196
+ ```json
197
+ {
198
+ "mcpServers": {
199
+ "memwal": {
200
+ "command": "npx",
201
+ "args": ["-y", "@mysten-incubation/memwal-mcp"],
202
+ "env": { "MEMWAL_AUTO_SAVE": "1" }
203
+ }
204
+ }
205
+ }
206
+ ```
207
+
208
+ Recall is never gated, and neither is an explicit "remember this" — the setting
209
+ only decides whether the agent saves things you did not ask it to save. Saying
210
+ no costs nothing and is not asked about again.
211
+
212
+ ### What is never saved
213
+
214
+ Walrus storage is append-only and encrypted: a memory that lands **cannot be
215
+ edited or deleted**. So credentials are excluded whichever way you answer, by the same
216
+ rules stated in the server instructions, the tool descriptions and the plugin
217
+ hooks — and enforced by a check that runs before any text is sent:
218
+
219
+ - passwords, API keys, access and refresh tokens, private keys, seed and
220
+ recovery phrases, authorization headers, session cookies, and connection
221
+ strings or URLs with an embedded `user:password`;
222
+ - anything you say not to save ("don't save this", "off the record");
223
+ - pasted third-party content — a fenced block, a quoted passage — which is not
224
+ a fact about you.
225
+
226
+ When a message mixes a preference with a credential, the **preference is kept**
227
+ and only the credential is removed: "I prefer dark mode, db is
228
+ `postgres://admin:hunter2@db.internal/app`" is stored with the password gone and
229
+ the host intact. The agent is told which kinds were removed; the secret itself
230
+ is never stored, logged, or echoed back.
231
+
232
+ Detection targets specific credential shapes rather than "looks random", so
233
+ identifiers you *do* want remembered — blob ids, Sui object ids, commit SHAs,
234
+ digests — pass through untouched. Where a secret is indistinguishable from an
235
+ identifier, the **label** decides: pasting your `credentials.json` has its
236
+ `delegatePrivateKey` removed, while the same 64 hex characters with nothing
237
+ calling them a key are stored as the digest they look like. The trade-off is
238
+ that a secret in no recognisable shape, and with no label near it, can still
239
+ slip past the check — which is why the model-facing rules exist alongside it.
240
+
58
241
  ## Default Namespace
59
242
 
60
243
  By default the MCP tool schemas expose an optional `namespace` argument and the
@@ -146,12 +329,66 @@ You can also pass explicit URLs:
146
329
 
147
330
  ## Credential Storage
148
331
 
149
- Credentials are stored locally in `~/.memwal/credentials.json`. To remove them:
332
+ Credentials are stored locally in `~/.memwal/credentials.json`, and the
333
+ automatic-memory setting in `settings.json` beside it. To remove the
334
+ credentials:
150
335
 
151
336
  ```sh
152
337
  npx -y @mysten-incubation/memwal-mcp --logout
153
338
  ```
154
339
 
340
+ A sign-in that is still in flight also writes a `login-pending.json`
341
+ write-ahead record, beside `credentials.json` in `~/.memwal`. It holds the
342
+ delegate keypair minted for that sign-in, written before the browser can
343
+ register the public half on-chain so an interrupted login can be reclaimed
344
+ instead of paid for a second time. Same owner-only mode `0600` as
345
+ `credentials.json`.
346
+
347
+ It is removed once the sign-in completes, on `--logout`, and on a successful
348
+ recovery at the next start. A record older than 24 hours is discarded rather
349
+ than reused.
350
+
351
+ ### Per-project credentials
352
+
353
+ A project can keep its own `.memwal/credentials.json` so memory written from it
354
+ goes to a separate account. That file lives inside the repository, where anyone
355
+ who can commit to it — or who can get you to open a clone — could otherwise
356
+ choose the account and relayer your memories go to. So it is **ignored until you
357
+ approve it**, once per machine:
358
+
359
+ ```sh
360
+ cd path/to/project
361
+ npx -y @mysten-incubation/memwal-mcp approve-project
362
+ ```
363
+
364
+ Until then the global credentials are used, and a line on stderr names the file
365
+ that was skipped and the destination it wanted. An approval covers one exact
366
+ project path, account, delegate key and relayer: if any of those change, it has
367
+ to be approved again. The record is kept in `~/.memwal/project-approvals.json`,
368
+ outside the repository, so a repository cannot carry its own approval.
369
+ `revoke-project` withdraws it.
370
+
371
+ Approving also picks the file that is **written**: a later sign-in from that
372
+ project saves a delegate private key into `.memwal/credentials.json` in plain
373
+ text, inside the repository. `approve-project` says so, and so does the sign-in
374
+ warning. Add `.memwal/` to your `.gitignore`. The write-ahead record is the one
375
+ thing that stays out: a project sign-in keeps it in `~/.memwal/login-pending/`,
376
+ one file per approved project, so no key material lands in the checkout and a
377
+ sign-in is still reclaimable only by the project that started it.
378
+
379
+ `MEMWAL_CREDS_DIR` points the credentials, the approval record and the
380
+ write-ahead record at a directory of your choosing and overrides project
381
+ resolution entirely, with no approval. Because it skips the gate, it must be an
382
+ **absolute path outside the current project**: a relative value would resolve
383
+ against the working directory and put the approval record inside the
384
+ repository, and an MCP client passes on the `env` block it reads from
385
+ `.cursor/mcp.json` / `.vscode/mcp.json` / `.claude/settings.json` in the
386
+ checkout — where `${workspaceFolder}` is expanded, so an in-project absolute
387
+ path is not proof you chose it. Anything else is refused with an error naming
388
+ the value, rather than quietly ignored. An empty value means unset.
389
+
390
+ `memwal_health` reports the destination in use as `account=… relayer=…`.
391
+
155
392
  ## License
156
393
 
157
394
  Apache-2.0
@@ -22,6 +22,261 @@
22
22
  * and coexist.
23
23
  */
24
24
  import { type MemWalCredentials } from "./auth.js";
25
+ /** Tool names the OLDEST relayer this bridge still talks to serves.
26
+ *
27
+ * The bridge ships on npm and updates itself; a relayer ships per environment
28
+ * and does not, so the bridge is routinely NEWER than the relayer it dials —
29
+ * 0.0.14-dev.0 against prod and staging on 0.0.13, which is GH #928. The
30
+ * cold-start list is served before any relayer capability is known, so every
31
+ * name in it that the dialled relayer does not serve is a tool the agent can
32
+ * be told about and then cannot call.
33
+ *
34
+ * Cold start is therefore a FLOOR, not a forecast: add a name here only once
35
+ * the tool has shipped to prod, never when it lands on dev. Newer tools reach
36
+ * the client a beat later anyway — the relayer's own `tools/list` replaces
37
+ * this one and `notifications/tools/list_changed` tells the client to re-read
38
+ * it. `memwal_remember_status` is the worked example: it exists on dev, not on
39
+ * prod/staging, and belongs here only after a prod release carries it. */
40
+ export declare const BASELINE_RELAYER_TOOLS: ReadonlySet<string>;
41
+ /** Every tool this bridge can describe, baseline or not. Only the baseline
42
+ * subset is advertised at cold start; this is what the schema tests pin, so a
43
+ * newer tool's shape stays reviewed while it waits for a prod release. */
44
+ export declare const ALL_TOOL_DEFINITIONS: ({
45
+ name: string;
46
+ title: string;
47
+ annotations: {
48
+ readOnlyHint: boolean;
49
+ destructiveHint: boolean;
50
+ };
51
+ description: string;
52
+ inputSchema: {
53
+ type: string;
54
+ properties: {
55
+ text: {
56
+ type: string;
57
+ minLength: number;
58
+ };
59
+ namespace: {
60
+ type: string;
61
+ minLength?: undefined;
62
+ };
63
+ facts?: undefined;
64
+ job_id?: undefined;
65
+ job_ids?: undefined;
66
+ waitMs?: undefined;
67
+ query?: undefined;
68
+ limit?: undefined;
69
+ maxDistance?: undefined;
70
+ freshKey?: undefined;
71
+ };
72
+ required: string[];
73
+ additionalProperties: boolean;
74
+ };
75
+ } | {
76
+ name: string;
77
+ title: string;
78
+ annotations: {
79
+ readOnlyHint: boolean;
80
+ destructiveHint: boolean;
81
+ };
82
+ description: string;
83
+ inputSchema: {
84
+ type: string;
85
+ properties: {
86
+ facts: {
87
+ type: string;
88
+ items: {
89
+ type: string;
90
+ minLength: number;
91
+ };
92
+ minItems: number;
93
+ maxItems: number;
94
+ };
95
+ namespace: {
96
+ type: string;
97
+ minLength?: undefined;
98
+ };
99
+ text?: undefined;
100
+ job_id?: undefined;
101
+ job_ids?: undefined;
102
+ waitMs?: undefined;
103
+ query?: undefined;
104
+ limit?: undefined;
105
+ maxDistance?: undefined;
106
+ freshKey?: undefined;
107
+ };
108
+ required: string[];
109
+ additionalProperties: boolean;
110
+ };
111
+ } | {
112
+ name: string;
113
+ title: string;
114
+ annotations: {
115
+ readOnlyHint: boolean;
116
+ destructiveHint: boolean;
117
+ };
118
+ description: string;
119
+ inputSchema: {
120
+ type: string;
121
+ properties: {
122
+ job_id: {
123
+ type: string;
124
+ minLength: number;
125
+ };
126
+ job_ids: {
127
+ type: string;
128
+ items: {
129
+ type: string;
130
+ minLength: number;
131
+ };
132
+ minItems: number;
133
+ maxItems: number;
134
+ };
135
+ waitMs: {
136
+ type: string;
137
+ minimum: number;
138
+ maximum: number;
139
+ default: number;
140
+ };
141
+ text?: undefined;
142
+ namespace?: undefined;
143
+ facts?: undefined;
144
+ query?: undefined;
145
+ limit?: undefined;
146
+ maxDistance?: undefined;
147
+ freshKey?: undefined;
148
+ };
149
+ additionalProperties: boolean;
150
+ required?: undefined;
151
+ };
152
+ } | {
153
+ name: string;
154
+ title: string;
155
+ annotations: {
156
+ readOnlyHint: boolean;
157
+ destructiveHint: boolean;
158
+ };
159
+ description: string;
160
+ inputSchema: {
161
+ type: string;
162
+ properties: {
163
+ query: {
164
+ type: string;
165
+ minLength: number;
166
+ };
167
+ limit: {
168
+ type: string;
169
+ minimum: number;
170
+ maximum: number;
171
+ default: number;
172
+ };
173
+ namespace: {
174
+ type: string;
175
+ minLength?: undefined;
176
+ };
177
+ maxDistance: {
178
+ type: string;
179
+ minimum: number;
180
+ description: string;
181
+ };
182
+ text?: undefined;
183
+ facts?: undefined;
184
+ job_id?: undefined;
185
+ job_ids?: undefined;
186
+ waitMs?: undefined;
187
+ freshKey?: undefined;
188
+ };
189
+ required: string[];
190
+ additionalProperties: boolean;
191
+ };
192
+ } | {
193
+ name: string;
194
+ title: string;
195
+ annotations: {
196
+ readOnlyHint: boolean;
197
+ destructiveHint: boolean;
198
+ };
199
+ description: string;
200
+ inputSchema: {
201
+ type: string;
202
+ properties: {
203
+ namespace: {
204
+ type: string;
205
+ minLength: number;
206
+ };
207
+ limit: {
208
+ type: string;
209
+ minimum: number;
210
+ maximum: number;
211
+ default: number;
212
+ };
213
+ text?: undefined;
214
+ facts?: undefined;
215
+ job_id?: undefined;
216
+ job_ids?: undefined;
217
+ waitMs?: undefined;
218
+ query?: undefined;
219
+ maxDistance?: undefined;
220
+ freshKey?: undefined;
221
+ };
222
+ required: string[];
223
+ additionalProperties: boolean;
224
+ };
225
+ } | {
226
+ name: string;
227
+ title: string;
228
+ annotations: {
229
+ readOnlyHint: boolean;
230
+ destructiveHint: boolean;
231
+ };
232
+ description: string;
233
+ inputSchema: {
234
+ type: string;
235
+ properties: {
236
+ text?: undefined;
237
+ namespace?: undefined;
238
+ facts?: undefined;
239
+ job_id?: undefined;
240
+ job_ids?: undefined;
241
+ waitMs?: undefined;
242
+ query?: undefined;
243
+ limit?: undefined;
244
+ maxDistance?: undefined;
245
+ freshKey?: undefined;
246
+ };
247
+ additionalProperties: boolean;
248
+ required?: undefined;
249
+ };
250
+ } | {
251
+ name: string;
252
+ title: string;
253
+ annotations: {
254
+ readOnlyHint: boolean;
255
+ destructiveHint: boolean;
256
+ };
257
+ description: string;
258
+ inputSchema: {
259
+ type: string;
260
+ properties: {
261
+ freshKey: {
262
+ type: string;
263
+ default: boolean;
264
+ description: string;
265
+ };
266
+ text?: undefined;
267
+ namespace?: undefined;
268
+ facts?: undefined;
269
+ job_id?: undefined;
270
+ job_ids?: undefined;
271
+ waitMs?: undefined;
272
+ query?: undefined;
273
+ limit?: undefined;
274
+ maxDistance?: undefined;
275
+ };
276
+ additionalProperties: boolean;
277
+ required?: undefined;
278
+ };
279
+ })[];
25
280
  /** Signed-in cold-start list (bridge). Credentials exist; the relayer session
26
281
  * is not up yet. Proactive wording so clients that keep the first tools/list
27
282
  * still save/recall without being asked. */
@@ -51,6 +306,7 @@ export declare const TOOL_DEFINITIONS: ({
51
306
  query?: undefined;
52
307
  limit?: undefined;
53
308
  maxDistance?: undefined;
309
+ freshKey?: undefined;
54
310
  };
55
311
  required: string[];
56
312
  additionalProperties: boolean;
@@ -86,6 +342,7 @@ export declare const TOOL_DEFINITIONS: ({
86
342
  query?: undefined;
87
343
  limit?: undefined;
88
344
  maxDistance?: undefined;
345
+ freshKey?: undefined;
89
346
  };
90
347
  required: string[];
91
348
  additionalProperties: boolean;
@@ -126,6 +383,7 @@ export declare const TOOL_DEFINITIONS: ({
126
383
  query?: undefined;
127
384
  limit?: undefined;
128
385
  maxDistance?: undefined;
386
+ freshKey?: undefined;
129
387
  };
130
388
  additionalProperties: boolean;
131
389
  required?: undefined;
@@ -165,6 +423,7 @@ export declare const TOOL_DEFINITIONS: ({
165
423
  job_id?: undefined;
166
424
  job_ids?: undefined;
167
425
  waitMs?: undefined;
426
+ freshKey?: undefined;
168
427
  };
169
428
  required: string[];
170
429
  additionalProperties: boolean;
@@ -197,6 +456,7 @@ export declare const TOOL_DEFINITIONS: ({
197
456
  waitMs?: undefined;
198
457
  query?: undefined;
199
458
  maxDistance?: undefined;
459
+ freshKey?: undefined;
200
460
  };
201
461
  required: string[];
202
462
  additionalProperties: boolean;
@@ -221,6 +481,36 @@ export declare const TOOL_DEFINITIONS: ({
221
481
  query?: undefined;
222
482
  limit?: undefined;
223
483
  maxDistance?: undefined;
484
+ freshKey?: undefined;
485
+ };
486
+ additionalProperties: boolean;
487
+ required?: undefined;
488
+ };
489
+ } | {
490
+ name: string;
491
+ title: string;
492
+ annotations: {
493
+ readOnlyHint: boolean;
494
+ destructiveHint: boolean;
495
+ };
496
+ description: string;
497
+ inputSchema: {
498
+ type: string;
499
+ properties: {
500
+ freshKey: {
501
+ type: string;
502
+ default: boolean;
503
+ description: string;
504
+ };
505
+ text?: undefined;
506
+ namespace?: undefined;
507
+ facts?: undefined;
508
+ job_id?: undefined;
509
+ job_ids?: undefined;
510
+ waitMs?: undefined;
511
+ query?: undefined;
512
+ limit?: undefined;
513
+ maxDistance?: undefined;
224
514
  };
225
515
  additionalProperties: boolean;
226
516
  required?: undefined;
@@ -255,6 +545,7 @@ export declare const SIGNED_OUT_TOOL_DEFINITIONS: ({
255
545
  query?: undefined;
256
546
  limit?: undefined;
257
547
  maxDistance?: undefined;
548
+ freshKey?: undefined;
258
549
  };
259
550
  required: string[];
260
551
  additionalProperties: boolean;
@@ -290,6 +581,7 @@ export declare const SIGNED_OUT_TOOL_DEFINITIONS: ({
290
581
  query?: undefined;
291
582
  limit?: undefined;
292
583
  maxDistance?: undefined;
584
+ freshKey?: undefined;
293
585
  };
294
586
  required: string[];
295
587
  additionalProperties: boolean;
@@ -330,6 +622,7 @@ export declare const SIGNED_OUT_TOOL_DEFINITIONS: ({
330
622
  query?: undefined;
331
623
  limit?: undefined;
332
624
  maxDistance?: undefined;
625
+ freshKey?: undefined;
333
626
  };
334
627
  additionalProperties: boolean;
335
628
  required?: undefined;
@@ -369,6 +662,7 @@ export declare const SIGNED_OUT_TOOL_DEFINITIONS: ({
369
662
  job_id?: undefined;
370
663
  job_ids?: undefined;
371
664
  waitMs?: undefined;
665
+ freshKey?: undefined;
372
666
  };
373
667
  required: string[];
374
668
  additionalProperties: boolean;
@@ -401,6 +695,7 @@ export declare const SIGNED_OUT_TOOL_DEFINITIONS: ({
401
695
  waitMs?: undefined;
402
696
  query?: undefined;
403
697
  maxDistance?: undefined;
698
+ freshKey?: undefined;
404
699
  };
405
700
  required: string[];
406
701
  additionalProperties: boolean;
@@ -425,6 +720,36 @@ export declare const SIGNED_OUT_TOOL_DEFINITIONS: ({
425
720
  query?: undefined;
426
721
  limit?: undefined;
427
722
  maxDistance?: undefined;
723
+ freshKey?: undefined;
724
+ };
725
+ additionalProperties: boolean;
726
+ required?: undefined;
727
+ };
728
+ } | {
729
+ name: string;
730
+ title: string;
731
+ annotations: {
732
+ readOnlyHint: boolean;
733
+ destructiveHint: boolean;
734
+ };
735
+ description: string;
736
+ inputSchema: {
737
+ type: string;
738
+ properties: {
739
+ freshKey: {
740
+ type: string;
741
+ default: boolean;
742
+ description: string;
743
+ };
744
+ text?: undefined;
745
+ namespace?: undefined;
746
+ facts?: undefined;
747
+ job_id?: undefined;
748
+ job_ids?: undefined;
749
+ waitMs?: undefined;
750
+ query?: undefined;
751
+ limit?: undefined;
752
+ maxDistance?: undefined;
428
753
  };
429
754
  additionalProperties: boolean;
430
755
  required?: undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"auth-required.d.ts","sourceRoot":"","sources":["../src/auth-required.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAiLzE;;4CAE4C;AAC5C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA6B,CAAC;AAE3D;;8BAE8B;AAC9B,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA8B,CAAC;AA2CvE;;;mCAGmC;AACnC,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd;;;;4DAIwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAmID;;yCAEyC;AACzC,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,iBAAiB,CAAC;IACzB;;sCAEkC;IAClC,YAAY,EAAE,MAAM,EAAE,CAAC;CAC1B;AAwID;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,qBAAqB,CACvC,MAAM,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAgE7B"}
1
+ {"version":3,"file":"auth-required.d.ts","sourceRoot":"","sources":["../src/auth-required.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AA2MzE;;;;;;;;;;;;;;0EAc0E;AAC1E,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAOrD,CAAC;AAMH;;0EAE0E;AAC1E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA6B,CAAC;AAS/D;;4CAE4C;AAC5C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAuB,CAAC;AAErD;;8BAE8B;AAC9B,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAwB,CAAC;AA+CjE;;;mCAGmC;AACnC,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd;;;;4DAIwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AA6ID;;yCAEyC;AACzC,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,iBAAiB,CAAC;IACzB;;sCAEkC;IAClC,YAAY,EAAE,MAAM,EAAE,CAAC;CAC1B;AA4ID;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,qBAAqB,CACvC,MAAM,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAgE7B"}