@0xmaxma/claude-gateway 1.8.6 → 1.8.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 +159 -4
- package/dist/agent/dreaming/config.d.ts +3 -1
- package/dist/agent/dreaming/config.d.ts.map +1 -1
- package/dist/agent/dreaming/config.js +14 -3
- package/dist/agent/dreaming/config.js.map +1 -1
- package/dist/agent/dreaming/index.d.ts +2 -0
- package/dist/agent/dreaming/index.d.ts.map +1 -1
- package/dist/agent/dreaming/index.js +1 -1
- package/dist/agent/dreaming/index.js.map +1 -1
- package/dist/agent/knowledge/config.d.ts +3 -1
- package/dist/agent/knowledge/config.d.ts.map +1 -1
- package/dist/agent/knowledge/config.js +13 -3
- package/dist/agent/knowledge/config.js.map +1 -1
- package/dist/agent/runner.d.ts +66 -1
- package/dist/agent/runner.d.ts.map +1 -1
- package/dist/agent/runner.js +165 -12
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/skill-learning/config.d.ts +3 -1
- package/dist/agent/skill-learning/config.d.ts.map +1 -1
- package/dist/agent/skill-learning/config.js +13 -3
- package/dist/agent/skill-learning/config.js.map +1 -1
- package/dist/agent/skill-learning/index.d.ts +2 -0
- package/dist/agent/skill-learning/index.d.ts.map +1 -1
- package/dist/agent/skill-learning/index.js +1 -1
- package/dist/agent/skill-learning/index.js.map +1 -1
- package/dist/api/connectors-router.d.ts +50 -0
- package/dist/api/connectors-router.d.ts.map +1 -0
- package/dist/api/connectors-router.js +650 -0
- package/dist/api/connectors-router.js.map +1 -0
- package/dist/api/gateway-router.d.ts +4 -0
- package/dist/api/gateway-router.d.ts.map +1 -1
- package/dist/api/gateway-router.js +26 -0
- package/dist/api/gateway-router.js.map +1 -1
- package/dist/api/oauth-connectors-router.d.ts +43 -0
- package/dist/api/oauth-connectors-router.d.ts.map +1 -0
- package/dist/api/oauth-connectors-router.js +384 -0
- package/dist/api/oauth-connectors-router.js.map +1 -0
- package/dist/api/router.d.ts.map +1 -1
- package/dist/api/router.js +101 -9
- package/dist/api/router.js.map +1 -1
- package/dist/apps/agent-manager.d.ts +6 -2
- package/dist/apps/agent-manager.d.ts.map +1 -1
- package/dist/apps/agent-manager.js +14 -17
- package/dist/apps/agent-manager.js.map +1 -1
- package/dist/apps/installer.d.ts +3 -1
- package/dist/apps/installer.d.ts.map +1 -1
- package/dist/apps/installer.js +8 -2
- package/dist/apps/installer.js.map +1 -1
- package/dist/cli/commands/service.d.ts +34 -4
- package/dist/cli/commands/service.d.ts.map +1 -1
- package/dist/cli/commands/service.js +552 -96
- package/dist/cli/commands/service.js.map +1 -1
- package/dist/config/bootstrap.d.ts.map +1 -1
- package/dist/config/bootstrap.js +4 -1
- package/dist/config/bootstrap.js.map +1 -1
- package/dist/config/config-write-lock.d.ts +45 -0
- package/dist/config/config-write-lock.d.ts.map +1 -0
- package/dist/config/config-write-lock.js +164 -0
- package/dist/config/config-write-lock.js.map +1 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +36 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/migrator.d.ts.map +1 -1
- package/dist/config/migrator.js +12 -1
- package/dist/config/migrator.js.map +1 -1
- package/dist/config/watcher.d.ts.map +1 -1
- package/dist/config/watcher.js +29 -0
- package/dist/config/watcher.js.map +1 -1
- package/dist/connectors/custom-connectors-store.d.ts +54 -0
- package/dist/connectors/custom-connectors-store.d.ts.map +1 -0
- package/dist/connectors/custom-connectors-store.js +204 -0
- package/dist/connectors/custom-connectors-store.js.map +1 -0
- package/dist/connectors/custom.d.ts +69 -0
- package/dist/connectors/custom.d.ts.map +1 -0
- package/dist/connectors/custom.js +158 -0
- package/dist/connectors/custom.js.map +1 -0
- package/dist/connectors/mcp-oauth.d.ts +152 -0
- package/dist/connectors/mcp-oauth.d.ts.map +1 -0
- package/dist/connectors/mcp-oauth.js +522 -0
- package/dist/connectors/mcp-oauth.js.map +1 -0
- package/dist/connectors/oauth-refresh-sweep.d.ts +71 -0
- package/dist/connectors/oauth-refresh-sweep.d.ts.map +1 -0
- package/dist/connectors/oauth-refresh-sweep.js +337 -0
- package/dist/connectors/oauth-refresh-sweep.js.map +1 -0
- package/dist/connectors/pending-oauth-store.d.ts +39 -0
- package/dist/connectors/pending-oauth-store.d.ts.map +1 -0
- package/dist/connectors/pending-oauth-store.js +50 -0
- package/dist/connectors/pending-oauth-store.js.map +1 -0
- package/dist/connectors/resolve.d.ts +52 -0
- package/dist/connectors/resolve.d.ts.map +1 -0
- package/dist/connectors/resolve.js +176 -0
- package/dist/connectors/resolve.js.map +1 -0
- package/dist/connectors/token-env.d.ts +93 -0
- package/dist/connectors/token-env.d.ts.map +1 -0
- package/dist/connectors/token-env.js +323 -0
- package/dist/connectors/token-env.js.map +1 -0
- package/dist/connectors/types.d.ts +126 -0
- package/dist/connectors/types.d.ts.map +1 -0
- package/dist/connectors/types.js +13 -0
- package/dist/connectors/types.js.map +1 -0
- package/dist/index.js +37 -4
- package/dist/index.js.map +1 -1
- package/dist/session/process.d.ts +23 -0
- package/dist/session/process.d.ts.map +1 -1
- package/dist/session/process.js +97 -4
- package/dist/session/process.js.map +1 -1
- package/dist/types.d.ts +46 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -126,6 +126,12 @@ non-interactive run is refused rather than left hanging). Always stop the gatewa
|
|
|
126
126
|
`service uninstall` or `systemctl --user stop claude-gateway.service` — a bare `kill <pid>` bypasses
|
|
127
127
|
systemd's own stop tracking, so `Restart=always` brings it right back regardless of exit code.
|
|
128
128
|
|
|
129
|
+
`install`'s exit code distinguishes three outcomes: `0` fully healthy, `1` install/enable itself
|
|
130
|
+
failed or a validation/confirmation gate refused (nothing was written), `2` install/enable
|
|
131
|
+
succeeded but `/health` never answered within the poll window. A script that only checks the exit
|
|
132
|
+
code — not the JSON result on stdout — can still tell "didn't happen" apart from "happened, health
|
|
133
|
+
unconfirmed" this way.
|
|
134
|
+
|
|
129
135
|
`install` also refuses (rather than just warning) if a `claude-gateway.service` unit already
|
|
130
136
|
exists and is enabled or active at *system* scope (e.g. one written by provisioning outside this
|
|
131
137
|
CLI) — installing a second, independent unit alongside it would race for the port on the next
|
|
@@ -134,9 +140,51 @@ pass `--force` to install anyway.
|
|
|
134
140
|
|
|
135
141
|
The systemd path writes `~/.config/systemd/user/claude-gateway.service`. Run
|
|
136
142
|
`loginctl enable-linger $USER` once if it must keep running while you're logged out.
|
|
143
|
+
The unit sets `OOMPolicy=continue` so that an OOM-killed child process (e.g. a dev server an
|
|
144
|
+
agent spawned on its own) doesn't take the whole gateway down with it — only `Restart=always`
|
|
145
|
+
restarting the *gateway's own* process is intended. Re-running `claude-gateway service install`
|
|
146
|
+
against an already-active unit whose rendered content changed (a newer CLI version, or different
|
|
147
|
+
flags) automatically restarts it via `systemctl ... restart`, so the update takes effect
|
|
148
|
+
immediately; re-running with unchanged content leaves the running unit alone.
|
|
137
149
|
Prefer [PM2](https://pm2.keymetrics.io)? `claude-gateway service install --manager pm2` registers
|
|
138
150
|
and saves the process instead (run `pm2 startup` separately for boot-time start).
|
|
139
151
|
|
|
152
|
+
**System-scope installs (for automated/infra provisioning)**
|
|
153
|
+
|
|
154
|
+
Pass `--scope system` to install a root-owned unit at `/etc/systemd/system/claude-gateway.service`
|
|
155
|
+
instead — for provisioning that needs the gateway to run under a fixed system account rather than
|
|
156
|
+
whoever happens to run the install interactively. It requires:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
sudo claude-gateway service install --scope system --run-as gwuser --yes
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
- The caller must already be root — `--scope system` never escalates via `sudo` on its own, and
|
|
163
|
+
refuses immediately if it isn't.
|
|
164
|
+
- `--run-as <user>` is required and becomes the unit's `User=`; `WantedBy=` is
|
|
165
|
+
`multi-user.target` instead of `default.target`, so it starts at boot regardless of any login
|
|
166
|
+
session (the `loginctl enable-linger` hint is skipped — it's meaningless here).
|
|
167
|
+
- `WorkingDirectory=`/`HOME=`/the config path all resolve to `--run-as`'s own home directory
|
|
168
|
+
(looked up via `getent passwd`, not the installing root process's home) — the unit runs as that
|
|
169
|
+
user, so its paths must be theirs. A `~/...` in `--config`/`--env-file` expands against that same
|
|
170
|
+
home. `$GATEWAY_CONFIG` from the installing (root) process's own environment is **not** consulted
|
|
171
|
+
for a system-scope install — only an explicit `--config` is — since it belongs to root's
|
|
172
|
+
environment, not `--run-as`'s. If the user's `~/.claude-gateway` doesn't exist yet, the install
|
|
173
|
+
creates it and `chown`s it to them; if it already exists but is owned by someone else (e.g. a
|
|
174
|
+
prior install used a different `--run-as`), ownership is reassigned to match. An
|
|
175
|
+
already-correctly-owned directory is left untouched. Refuses if `--run-as` doesn't resolve to a
|
|
176
|
+
real user on this host.
|
|
177
|
+
- A system-scope install never refuses itself over the system-scope conflict check described
|
|
178
|
+
above — that check exists to protect a *user*-scope install from colliding with an externally
|
|
179
|
+
provisioned system-scope unit, and a system-scope install *is* that unit.
|
|
180
|
+
- `--after <target1,target2>`, `--env-file <path>`, and `--env KEY=VALUE[,KEY=VALUE...]` further
|
|
181
|
+
customize the generated unit (both scopes): extra `After=` ordering targets, an
|
|
182
|
+
`EnvironmentFile=-<path>` for feeding secrets in without ever writing them into the unit text,
|
|
183
|
+
and additional non-secret `Environment=` lines. `--env` refuses to override `HOME`, `PATH`, or
|
|
184
|
+
`GATEWAY_CONFIG` (the installer's own reserved names) — use `--env-file` for anything sensitive.
|
|
185
|
+
- `service status --scope system` and `service uninstall --scope system` work the same way against
|
|
186
|
+
the system-scope unit (uninstall also requires root).
|
|
187
|
+
|
|
140
188
|
Once installed, drive it through the CLI — it detects whichever manager owns the process:
|
|
141
189
|
|
|
142
190
|
```bash
|
|
@@ -270,6 +318,17 @@ Config lives at `~/.claude-gateway/config.json` (or set `GATEWAY_CONFIG` env var
|
|
|
270
318
|
}
|
|
271
319
|
```
|
|
272
320
|
|
|
321
|
+
### `gateway.timezone` (optional)
|
|
322
|
+
|
|
323
|
+
IANA timezone, default `"UTC"`. Shared default for the per-feature scheduling
|
|
324
|
+
timezones below when they are unset or invalid: `gateway.history.cleanupTimezone`,
|
|
325
|
+
`gateway.appBackup.cleanupTimezone`, `gateway.skillLearning.pruneTimezone`,
|
|
326
|
+
`gateway.dreaming.dreamTimezone`, and `gateway.knowledge.reflection.timezone`. A
|
|
327
|
+
valid per-feature field still overrides this shared default for that one feature;
|
|
328
|
+
an invalid per-feature value falls through to `gateway.timezone` rather than being
|
|
329
|
+
treated as set. An invalid `gateway.timezone` itself falls back to `"UTC"` rather
|
|
330
|
+
than crashing that scheduler.
|
|
331
|
+
|
|
273
332
|
### `gateway.publicUrl` (optional)
|
|
274
333
|
|
|
275
334
|
The externally reachable gateway base URL. Set it manually to enable short-lived
|
|
@@ -293,6 +352,91 @@ public base — e.g. LINE, which derives its host from the inbound webhook — b
|
|
|
293
352
|
`<base>/shared/<token>` themselves. HTTP is accepted only for local development
|
|
294
353
|
hosts such as `http://host.docker.internal:10850/gateway`.
|
|
295
354
|
|
|
355
|
+
### `gateway.oauthReturnUrl` (optional)
|
|
356
|
+
|
|
357
|
+
Where to send the browser after a connector OAuth sign-in finishes. The gateway is
|
|
358
|
+
product-agnostic and never hardcodes a downstream app's domain, so this is opt-in.
|
|
359
|
+
|
|
360
|
+
```json
|
|
361
|
+
{
|
|
362
|
+
"gateway": {
|
|
363
|
+
"oauthReturnUrl": "https://app.example.com/settings/connectors"
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
Set, the callback issues a real `302` to it on **every** terminal outcome — success, and
|
|
369
|
+
also a denied, expired or failed sign-in, which carries `?connector_oauth_error=<code>`.
|
|
370
|
+
Unset, the callback renders a plain "Connected — you can close this tab" page instead.
|
|
371
|
+
The value is validated once at startup: anything that isn't a well-formed `http(s)` URL
|
|
372
|
+
is logged and ignored rather than injecting a broken redirect into every future callback.
|
|
373
|
+
The scheme is part of that check — this value becomes the `Location` of a redirect sent
|
|
374
|
+
to the end user's own browser from a public route, so a `javascript:` or `data:` URL
|
|
375
|
+
here would be script running on every sign-in, and is refused like any other malformed
|
|
376
|
+
value.
|
|
377
|
+
|
|
378
|
+
### `gateway.customConnectors` (optional)
|
|
379
|
+
|
|
380
|
+
User-pasted MCP connectors, keyed by a slugified id. Normally written through the API
|
|
381
|
+
(`POST /api/v1/connectors/custom`) rather than by hand.
|
|
382
|
+
|
|
383
|
+
```json
|
|
384
|
+
{
|
|
385
|
+
"gateway": {
|
|
386
|
+
"customConnectors": {
|
|
387
|
+
"firecrawl": {
|
|
388
|
+
"label": "Firecrawl",
|
|
389
|
+
"config": {
|
|
390
|
+
"type": "streamable-http",
|
|
391
|
+
"url": "https://mcp.firecrawl.dev/v2/mcp-oauth",
|
|
392
|
+
"headers": { "Authorization": "Bearer {access_token}" }
|
|
393
|
+
},
|
|
394
|
+
"secretNames": ["access_token"],
|
|
395
|
+
"credentialOwner": "gateway"
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
Each entry is raw `mcpServers`-entry JSON with `{placeholder}` tokens standing in for
|
|
403
|
+
secrets. `credentialOwner` records who holds the credential and keeps it valid — `none`,
|
|
404
|
+
`static` (a pasted value), `gateway` (this gateway ran the OAuth flow and refreshes the
|
|
405
|
+
token itself) or `external` (a control plane pushes tokens in). It is written by the
|
|
406
|
+
route that creates the entry; see [API.md](./API.md#connectors-api). **Only the placeholder names are stored here** — the values live in
|
|
407
|
+
`~/.claude-gateway/mcp-token.env` (mode `0600`), namespaced
|
|
408
|
+
`CUSTOM__<connectorId>__<placeholderName>`, and are substituted in when a session spawns.
|
|
409
|
+
Override that file's path with `GATEWAY_MCP_TOKEN_ENV_PATH`.
|
|
410
|
+
|
|
411
|
+
Custom connectors are **admin-trusted but not code-reviewed** — the config is whatever
|
|
412
|
+
the admin pasted, and it becomes an MCP server in every agent's session. Per-agent
|
|
413
|
+
enablement is opt-out and lives on the agent instead (`PATCH /api/v1/agents/:id` with
|
|
414
|
+
`connectors`); connecting a connector at all is the security gate. See
|
|
415
|
+
[API.md](./API.md#connectors-api) for the full model, the OAuth flow, and the refresh
|
|
416
|
+
behaviour.
|
|
417
|
+
|
|
418
|
+
### `gateway.connectorsDefaultEnabled` (optional)
|
|
419
|
+
|
|
420
|
+
Whether a connected connector is available to an agent that has no explicit entry in its
|
|
421
|
+
own `connectors` map. Defaults to `true` — opt-out: connecting a connector makes it
|
|
422
|
+
available everywhere, and an agent only misses it if explicitly disabled.
|
|
423
|
+
|
|
424
|
+
```json
|
|
425
|
+
{
|
|
426
|
+
"gateway": {
|
|
427
|
+
"connectorsDefaultEnabled": false
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
Set it to `false` on a gateway that hosts agents for **more than one person**. The default
|
|
433
|
+
suits the common single-operator install, but with several owners it hands a credential
|
|
434
|
+
connected by one of them to every agent on the box — including agents whose chat users are
|
|
435
|
+
not that person. With `false`, each agent has to be opted in explicitly (`PATCH
|
|
436
|
+
/api/v1/agents/:id` with `{"connectors": {"<id>": {"enabled": true}}}`).
|
|
437
|
+
|
|
438
|
+
Changing this affects the next session spawn, like any other connector change.
|
|
439
|
+
|
|
296
440
|
### `gateway.logs` (optional)
|
|
297
441
|
|
|
298
442
|
Verbosity, rotation and retention for the files in `logDir`. The whole block is optional —
|
|
@@ -347,7 +491,7 @@ Global default retention policy. Can be overridden per-agent with an `history` k
|
|
|
347
491
|
| `retentionDays` | `null` (keep forever) | Delete messages older than N days on each cleanup cycle |
|
|
348
492
|
| `maxHistoryMessages` | `50` | Max history messages re-injected into a session at spawn. Lower it to shrink the context loaded at session start. `0` = inject no history |
|
|
349
493
|
| `cleanupHour` | `3` | Hour of day to run cleanup (24h, in `cleanupTimezone`) |
|
|
350
|
-
| `cleanupTimezone` | `"UTC"` | IANA timezone for the cleanup schedule |
|
|
494
|
+
| `cleanupTimezone` | `"UTC"` | IANA timezone for the cleanup schedule; falls back to `gateway.timezone` when unset or invalid |
|
|
351
495
|
|
|
352
496
|
Per-agent override example:
|
|
353
497
|
```json
|
|
@@ -436,7 +580,7 @@ Controls [skill self-improvement](#skill-self-improvement) — agents learning r
|
|
|
436
580
|
| `maxAgeDays` | `30` | Curator prunes auto-skills older than this (with too few uses) |
|
|
437
581
|
| `minUsesToKeep` | `2` | Auto-skills used fewer times than this are prune candidates |
|
|
438
582
|
| `maxReviewsPerDay` | `20` | Per-day cap on background review runs |
|
|
439
|
-
| `pruneHour` / `pruneTimezone` | `3` / `UTC` | When the daily curator runs |
|
|
583
|
+
| `pruneHour` / `pruneTimezone` | `3` / `UTC` | When the daily curator runs; `pruneTimezone` falls back to `gateway.timezone` when unset or invalid |
|
|
440
584
|
| `notify` | `true` | Push a per-write ping to every configured channel (see [notifications](#skill-self-improvement)); the `SKILLS_LEARNED.md` diary is written regardless |
|
|
441
585
|
|
|
442
586
|
```json
|
|
@@ -491,7 +635,7 @@ Nightly memory **dreaming** — background consolidation of an agent's long-term
|
|
|
491
635
|
|-------|---------|-------------|
|
|
492
636
|
| `enabled` | `true` | Master switch (`false` ⇒ no scheduler, no run) |
|
|
493
637
|
| `mode` | `"auto"` | `auto` = apply ops via the safe applier (backup, bounded-loss, net-negative); `propose` = diary-only dry-run |
|
|
494
|
-
| `dreamHour` / `dreamTimezone` | `3` / `UTC` | When the nightly dream runs (invalid tz → UTC) |
|
|
638
|
+
| `dreamHour` / `dreamTimezone` | `3` / `UTC` | When the nightly dream runs (invalid tz → `gateway.timezone`, then UTC); `dreamTimezone` falls back to `gateway.timezone` when unset or invalid |
|
|
495
639
|
| `dreamMinute` | `0` | Minute-of-hour the dream fires at, paired with `dreamHour` (0–59). Set with `staggerWindowMinutes: 0` to fire at an exact `HH:MM` (e.g. for a controlled re-test) |
|
|
496
640
|
| `quietMinutes` | `30` | Skip a run if a session was active within this window |
|
|
497
641
|
| `lookbackDays` | `3` | How far back to scan sessions |
|
|
@@ -531,7 +675,7 @@ Two read-only MCP tools expose it to the agent: **`memory_search`** (keyword/FTS
|
|
|
531
675
|
| `shared.graph` | `false` | Compile the memory-wiki graph + dashboards over the shared vault to `<vault>/reports/*.md` (opt-in). Independent of the dashboard **Knowledge base** tab, which computes its graph on-demand |
|
|
532
676
|
| `shared.staleness` | *(object)* | Shared-note TTL lifecycle GC; uses the same fields/defaults as `dreaming.staleness` (whole notes only; no numeric `supersedes #N` syntax) |
|
|
533
677
|
| `reflection.enabled` | `true` | Enable the singleton, per-shared-vault reflection scheduler (daily timer; see cadence note below) |
|
|
534
|
-
| `reflection.dayOfWeek` / `hour` / `minute` / `timezone` | `0` / `4` / `0` / `UTC` | `hour`/`minute` is the **daily** staleness-GC slot; `dayOfWeek` selects the weekday that additionally runs LLM consolidation (Sunday 04:00 UTC by default; invalid timezone falls back to UTC) |
|
|
678
|
+
| `reflection.dayOfWeek` / `hour` / `minute` / `timezone` | `0` / `4` / `0` / `UTC` | `hour`/`minute` is the **daily** staleness-GC slot; `dayOfWeek` selects the weekday that additionally runs LLM consolidation (Sunday 04:00 UTC by default; invalid timezone falls back to `gateway.timezone`, then `UTC`) |
|
|
535
679
|
| `reflection.maxClustersPerRun` / `reviewModel` | `5` / `claude-haiku-4-5-…` | Hard cap on changed linked-note clusters per consolidation run and the bounded synthesis model |
|
|
536
680
|
|
|
537
681
|
**Shared KB.** A shared SQLite/FTS5 vault outside any single agent's workspace lets agents build a common knowledge base. Notes under `<root>/<project>/notes/*.md` are indexed and reachable via `memory_search` with `corpus:"shared"` (the shared vault) or `corpus:"all"` (this agent's memory + shared, merged by relevance). Concurrent writers are safe without a lock — atomic note writes (temp+rename) plus a cross-process `PRAGMA busy_timeout` on the index. Per-agent overrides under the agent's own `knowledge` block. The MCP layer runs under Bun, so the read tools query `kb.sqlite` via `bun:sqlite`. Two write paths feed the vault, sharing one freeform-name namespace (issue #386, no agent-id prefix, no ownership scoping): the nightly dreaming promoter (gated by `mode:"auto"`; it promotes only content that carries a real fact — content that is nothing but `MEMORY.md` index-pointer bullets is skipped, since those links resolve only inside the promoting agent's own workspace — and names each note after the proposal's `topic` slug when the reviewer supplied one, falling back to its `reason`, so a recurring fact updates the same note across nights instead of piling up near-duplicates; a fallback name that reads as an editing instruction rather than the name of a fact is passed over, and the note is named from the fact itself instead — the promotion is only abandoned when nothing nameable remains, and every skip is logged — including a write the note-size cap refuses and an unexpected write failure. A name that doesn't collide is checked against a near-duplicate search, but an unattended **merge** now also requires real token containment against the candidate — below that bar the fact gets its own note, since two notes are recoverable while two unrelated facts fused into one are not. `[[wikilink]]`s to related notes use a lower bar than merges, because a link is additive where a merge is destructive — and they are attached whether the fact merges or lands as a new note, so a note below the merge bar is never a disconnected graph node. Containment is scored against each candidate's full body rather than the matched chunk, though against a capped seed — the bar means "half of the fact's leading topic words are already here", not half of the whole fact. Retired `stale__*` notes are never merge targets; a recurrence of a retired name folds the retired body back in and removes the twin on both the create and the update path, because a retired note stays searchable and a twin beside a live note of the same name would answer every query twice forever. The twin is only dropped once the merged write lands (issue #398)) and the **`memory_shared_create`**/**`memory_shared_get`**/**`memory_shared_update`**/**`memory_shared_delete`** MCP tools, which let any agent create, read, update, or delete any note on demand regardless of `mode`. `memory_shared_create` warns instead of writing when it finds content-similar existing notes (pass `confirm:true` to proceed — related notes get `[[wikilink]]`ed into the new note rather than left disconnected); `memory_shared_update` warns instead of writing when the edit would drop 50%+ of the existing note's lines (same `confirm:true` escape hatch). Immediate reindex after every write or delete.
|
|
@@ -685,6 +829,8 @@ Tools are **prefixed by channel name** to avoid collisions. Each module controls
|
|
|
685
829
|
|
|
686
830
|
**Adding a new channel** (e.g. Slack) means implementing `ChannelModule` interface in `mcp/tools/slack/module.ts` and registering it in `server.ts`.
|
|
687
831
|
|
|
832
|
+
**Connectors** are the other half of the MCP picture: where the modules above are tools the gateway itself implements, a connector is an **external** MCP server the gateway injects into a session's `mcp-config.json`. The gateway stores only the connector definition, the per-connector secret (`~/.claude-gateway/mcp-token.env`) and the per-agent enablement — Claude Code then talks to that server directly. See [`gateway.customConnectors`](#gatewaycustomconnectors-optional) and [API.md](./API.md#connectors-api).
|
|
833
|
+
|
|
688
834
|
### Process Modes
|
|
689
835
|
|
|
690
836
|
| Mode | Process | Behaviour |
|
|
@@ -859,6 +1005,14 @@ Pass API key via `X-Api-Key: <key>` or `Authorization: Bearer <key>` header.
|
|
|
859
1005
|
| `POST` | `/api/v1/apps/:name/start\|stop\|restart` | Start/stop/restart app containers (admin) |
|
|
860
1006
|
| `POST` | `/api/v1/apps/:name/update` | Blue-green update with auto-rollback → `jobId` (admin) |
|
|
861
1007
|
| `POST` | `/api/v1/apps/:name/reconfigure` | Change env vars / host ports on an installed app, with rollback → `jobId` (admin) |
|
|
1008
|
+
| `GET` | `/api/v1/connectors` | List connectors with connected state |
|
|
1009
|
+
| `GET` | `/api/v1/connectors/:id/status` | Connected state for one connector (for polling) |
|
|
1010
|
+
| `POST` | `/api/v1/connectors/:id/connect` | Store a pasted token (admin) |
|
|
1011
|
+
| `POST` | `/api/v1/connectors/:id/oauth/receive` | Accept a token pushed by an external control plane (admin) |
|
|
1012
|
+
| `DELETE` | `/api/v1/connectors/:id` | Disconnect a connector (admin) |
|
|
1013
|
+
| `POST` | `/api/v1/connectors/custom` | Add a user-pasted connector (admin) |
|
|
1014
|
+
| `POST` | `/api/v1/connectors/custom/:id/oauth/start` | Begin OAuth 2.1 + PKCE sign-in → `authorizeUrl` (admin) |
|
|
1015
|
+
| `GET` | `/oauth/mcp/callback` | OAuth redirect target (public — guarded by a single-use `state`) |
|
|
862
1016
|
| `GET` | `/app/:name/:portName/*` | Reverse proxy to installed app (no auth) |
|
|
863
1017
|
|
|
864
1018
|
**Wizard API** — create agents programmatically with the same flow as the interactive `claude-gateway agents create` terminal wizard. The wizard generates workspace files via Claude, writes them on confirm, and optionally pairs a Telegram/Discord bot. State is in-memory with a 30-minute TTL; nothing is written until `/confirm`. See [API.md](./API.md) for the full wizard flow.
|
|
@@ -1023,6 +1177,7 @@ claude-gateway/
|
|
|
1023
1177
|
```
|
|
1024
1178
|
~/.claude-gateway/
|
|
1025
1179
|
├── config.json ← gateway config
|
|
1180
|
+
├── mcp-token.env ← connector secrets, mode 0600 (see `gateway.customConnectors`)
|
|
1026
1181
|
├── logs/
|
|
1027
1182
|
│ ├── alfred.log
|
|
1028
1183
|
│ ├── alfred.log.1 ← rotated generation (see `gateway.logs`)
|
|
@@ -21,5 +21,7 @@ export declare const DREAMING_DEFAULTS: ResolvedDreamingCfg;
|
|
|
21
21
|
* default when absent/non-boolean; numerics are sanitized like the parent config.
|
|
22
22
|
*/
|
|
23
23
|
export declare function resolveStalenessConfig(agentCfg?: StalenessConfig, globalCfg?: StalenessConfig): ResolvedStalenessCfg;
|
|
24
|
-
export declare function resolveDreamingConfig(agentCfg?: DreamingConfig, globalCfg?: DreamingConfig
|
|
24
|
+
export declare function resolveDreamingConfig(agentCfg?: DreamingConfig, globalCfg?: DreamingConfig,
|
|
25
|
+
/** `gateway.timezone` — the shared default when neither override sets `dreamTimezone`. */
|
|
26
|
+
gatewayTimezone?: string): ResolvedDreamingCfg;
|
|
25
27
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/agent/dreaming/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1G,oDAAoD;AACpD,eAAO,MAAM,kBAAkB,EAAE,oBAQhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,mBAe/B,CAAC;AASF;;;;;GAKG;AAEH;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,CAAC,EAAE,eAAe,EAC1B,SAAS,CAAC,EAAE,eAAe,GAC1B,oBAAoB,CAoBtB;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,CAAC,EAAE,cAAc,EACzB,SAAS,CAAC,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/agent/dreaming/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1G,oDAAoD;AACpD,eAAO,MAAM,kBAAkB,EAAE,oBAQhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,mBAe/B,CAAC;AASF;;;;;GAKG;AAEH;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,CAAC,EAAE,eAAe,EAC1B,SAAS,CAAC,EAAE,eAAe,GAC1B,oBAAoB,CAoBtB;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,CAAC,EAAE,cAAc,EACzB,SAAS,CAAC,EAAE,cAAc;AAC1B,0FAA0F;AAC1F,eAAe,CAAC,EAAE,MAAM,GACvB,mBAAmB,CAwCrB"}
|
|
@@ -73,9 +73,20 @@ function resolveStalenessConfig(agentCfg, globalCfg) {
|
|
|
73
73
|
maxInvalidationsPerRun: (0, config_num_1.numOr)(pick(agentCfg?.maxInvalidationsPerRun, globalCfg?.maxInvalidationsPerRun, d.maxInvalidationsPerRun), d.maxInvalidationsPerRun, 0, Infinity),
|
|
74
74
|
};
|
|
75
75
|
}
|
|
76
|
-
function resolveDreamingConfig(agentCfg, globalCfg
|
|
76
|
+
function resolveDreamingConfig(agentCfg, globalCfg,
|
|
77
|
+
/** `gateway.timezone` — the shared default when neither override sets `dreamTimezone`. */
|
|
78
|
+
gatewayTimezone) {
|
|
77
79
|
const d = exports.DREAMING_DEFAULTS;
|
|
78
|
-
|
|
80
|
+
// Each precedence level is validated in turn — an invalid-but-present agent/global
|
|
81
|
+
// override does not count as "set" and falls through to the next level, same as
|
|
82
|
+
// resolveSkillLearningConfig and AppInstaller's cleanupTimezone (issue #462 review).
|
|
83
|
+
const dreamTimezone = (0, config_1.isValidTimezone)(agentCfg?.dreamTimezone)
|
|
84
|
+
? agentCfg.dreamTimezone
|
|
85
|
+
: (0, config_1.isValidTimezone)(globalCfg?.dreamTimezone)
|
|
86
|
+
? globalCfg.dreamTimezone
|
|
87
|
+
: (0, config_1.isValidTimezone)(gatewayTimezone)
|
|
88
|
+
? gatewayTimezone
|
|
89
|
+
: d.dreamTimezone;
|
|
79
90
|
const mode = pick(agentCfg?.mode, globalCfg?.mode, d.mode);
|
|
80
91
|
return {
|
|
81
92
|
enabled: pick(agentCfg?.enabled, globalCfg?.enabled, d.enabled),
|
|
@@ -84,7 +95,7 @@ function resolveDreamingConfig(agentCfg, globalCfg) {
|
|
|
84
95
|
dreamHour: (0, config_num_1.numOr)(pick(agentCfg?.dreamHour, globalCfg?.dreamHour, d.dreamHour), d.dreamHour, 0, 23),
|
|
85
96
|
// dreamMinute pairs with dreamHour for minute-level scheduling — clamp 0..59.
|
|
86
97
|
dreamMinute: (0, config_num_1.numOr)(pick(agentCfg?.dreamMinute, globalCfg?.dreamMinute, d.dreamMinute), d.dreamMinute, 0, 59),
|
|
87
|
-
dreamTimezone
|
|
98
|
+
dreamTimezone,
|
|
88
99
|
quietMinutes: (0, config_num_1.numOr)(pick(agentCfg?.quietMinutes, globalCfg?.quietMinutes, d.quietMinutes), d.quietMinutes, 0, Infinity),
|
|
89
100
|
lookbackDays: (0, config_num_1.numOr)(pick(agentCfg?.lookbackDays, globalCfg?.lookbackDays, d.lookbackDays), d.lookbackDays, 0, Infinity),
|
|
90
101
|
maxChangesPerRun: (0, config_num_1.numOr)(pick(agentCfg?.maxChangesPerRun, globalCfg?.maxChangesPerRun, d.maxChangesPerRun), d.maxChangesPerRun, 0, Infinity),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/agent/dreaming/config.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAoDH,wDAuBC;AAED,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/agent/dreaming/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,8 @@ export interface DreamingManagerDeps {
|
|
|
15
15
|
workspaceDir: string;
|
|
16
16
|
globalCfg?: DreamingConfig;
|
|
17
17
|
agentCfg?: DreamingConfig;
|
|
18
|
+
/** `gateway.timezone` — the shared default when neither `globalCfg`/`agentCfg` sets `dreamTimezone`. */
|
|
19
|
+
gatewayTimezone?: string;
|
|
18
20
|
logger?: {
|
|
19
21
|
info: (msg: string, data?: Record<string, unknown>) => void;
|
|
20
22
|
warn?: (msg: string, data?: Record<string, unknown>) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/dreaming/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AAOjE,OAAO,KAAK,EACV,cAAc,EAEd,aAAa,EACb,cAAc,EACd,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,cAAc,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QAC5D,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;KAC9D,CAAC;IACF,qFAAqF;IACrF,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,4FAA4F;IAC5F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC;IAC5E;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;CACnD;AAgBD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,aAAa,EAAE,EAC1B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,aAAa,EAAE,CAiBjB;AAUD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAS5E;AAED,qBAAa,eAAe;IAC1B,QAAQ,CAAC,GAAG,EAAE,mBAAmB,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAC3C,OAAO,CAAC,KAAK,CAA4C;gBAE7C,IAAI,EAAE,mBAAmB;IAKrC,OAAO,CAAC,GAAG;IAIX;;;OAGG;IACG,SAAS,CAAC,GAAG,GAAE,MAAmB,GAAG,OAAO,CAAC,cAAc,CAAC;IA+MlE,OAAO,CAAC,KAAK;IAuBb;;;;OAIG;IACH,aAAa,IAAI,IAAI;IAsBrB,IAAI,IAAI,IAAI;CAGb"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/dreaming/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AAOjE,OAAO,KAAK,EACV,cAAc,EAEd,aAAa,EACb,cAAc,EACd,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,cAAc,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,wGAAwG;IACxG,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QAC5D,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;KAC9D,CAAC;IACF,qFAAqF;IACrF,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,4FAA4F;IAC5F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC;IAC5E;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;CACnD;AAgBD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,aAAa,EAAE,EAC1B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,aAAa,EAAE,CAiBjB;AAUD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAS5E;AAED,qBAAa,eAAe;IAC1B,QAAQ,CAAC,GAAG,EAAE,mBAAmB,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAC3C,OAAO,CAAC,KAAK,CAA4C;gBAE7C,IAAI,EAAE,mBAAmB;IAKrC,OAAO,CAAC,GAAG;IAIX;;;OAGG;IACG,SAAS,CAAC,GAAG,GAAE,MAAmB,GAAG,OAAO,CAAC,cAAc,CAAC;IA+MlE,OAAO,CAAC,KAAK;IAuBb;;;;OAIG;IACH,aAAa,IAAI,IAAI;IAsBrB,IAAI,IAAI,IAAI;CAGb"}
|
|
@@ -129,7 +129,7 @@ function agentJitterMs(agentId, windowMinutes) {
|
|
|
129
129
|
class DreamingManager {
|
|
130
130
|
constructor(deps) {
|
|
131
131
|
this.deps = deps;
|
|
132
|
-
this.cfg = (0, config_2.resolveDreamingConfig)(deps.agentCfg, deps.globalCfg);
|
|
132
|
+
this.cfg = (0, config_2.resolveDreamingConfig)(deps.agentCfg, deps.globalCfg, deps.gatewayTimezone);
|
|
133
133
|
}
|
|
134
134
|
log(msg, data) {
|
|
135
135
|
this.deps.logger?.info(msg, data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/dreaming/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/dreaming/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,9 @@ export declare function resolveArchiveConfig(agentCfg?: KnowledgeArchiveConfig,
|
|
|
12
12
|
export declare const SHARED_DEFAULTS: ResolvedKnowledgeSharedCfg;
|
|
13
13
|
export declare function resolveSharedConfig(agentCfg?: KnowledgeSharedConfig, globalCfg?: KnowledgeSharedConfig): ResolvedKnowledgeSharedCfg;
|
|
14
14
|
export declare const REFLECTION_DEFAULTS: ResolvedKnowledgeReflectionCfg;
|
|
15
|
-
export declare function resolveReflectionConfig(agentCfg?: KnowledgeReflectionConfig, globalCfg?: KnowledgeReflectionConfig
|
|
15
|
+
export declare function resolveReflectionConfig(agentCfg?: KnowledgeReflectionConfig, globalCfg?: KnowledgeReflectionConfig,
|
|
16
|
+
/** `gateway.timezone` — the shared default when neither override sets `timezone`. */
|
|
17
|
+
gatewayTimezone?: string): ResolvedKnowledgeReflectionCfg;
|
|
16
18
|
/** Directory for a project's shared vault: <root>/<project>. */
|
|
17
19
|
export declare function sharedVaultDir(cfg: ResolvedKnowledgeSharedCfg): string;
|
|
18
20
|
/** The shared vault's SQLite index path. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/agent/knowledge/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,KAAK,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,8BAA8B,EAC/B,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,gBAAgB,EAAE,2BAK9B,CAAC;AAWF,wBAAgB,oBAAoB,CAClC,QAAQ,CAAC,EAAE,sBAAsB,EACjC,SAAS,CAAC,EAAE,sBAAsB,GACjC,2BAA2B,CAuB7B;AAID,eAAO,MAAM,eAAe,EAAE,0BAO7B,CAAC;AAcF,wBAAgB,mBAAmB,CACjC,QAAQ,CAAC,EAAE,qBAAqB,EAChC,SAAS,CAAC,EAAE,qBAAqB,GAChC,0BAA0B,CAmB5B;AAID,eAAO,MAAM,mBAAmB,EAAE,8BAQjC,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,QAAQ,CAAC,EAAE,yBAAyB,EACpC,SAAS,CAAC,EAAE,yBAAyB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/agent/knowledge/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,KAAK,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,8BAA8B,EAC/B,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,gBAAgB,EAAE,2BAK9B,CAAC;AAWF,wBAAgB,oBAAoB,CAClC,QAAQ,CAAC,EAAE,sBAAsB,EACjC,SAAS,CAAC,EAAE,sBAAsB,GACjC,2BAA2B,CAuB7B;AAID,eAAO,MAAM,eAAe,EAAE,0BAO7B,CAAC;AAcF,wBAAgB,mBAAmB,CACjC,QAAQ,CAAC,EAAE,qBAAqB,EAChC,SAAS,CAAC,EAAE,qBAAqB,GAChC,0BAA0B,CAmB5B;AAID,eAAO,MAAM,mBAAmB,EAAE,8BAQjC,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,QAAQ,CAAC,EAAE,yBAAyB,EACpC,SAAS,CAAC,EAAE,yBAAyB;AACrC,qFAAqF;AACrF,eAAe,CAAC,EAAE,MAAM,GACvB,8BAA8B,CAyBhC;AAED,gEAAgE;AAChE,wBAAgB,cAAc,CAAC,GAAG,EAAE,0BAA0B,GAAG,MAAM,CAEtE;AAED,4CAA4C;AAC5C,wBAAgB,YAAY,CAAC,GAAG,EAAE,0BAA0B,GAAG,MAAM,CAEpE;AAED,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,GAAG,EAAE,0BAA0B,GAAG,MAAM,CAEtE"}
|
|
@@ -131,15 +131,25 @@ exports.REFLECTION_DEFAULTS = {
|
|
|
131
131
|
maxClustersPerRun: 5,
|
|
132
132
|
reviewModel: 'claude-haiku-4-5-20251001',
|
|
133
133
|
};
|
|
134
|
-
function resolveReflectionConfig(agentCfg, globalCfg
|
|
134
|
+
function resolveReflectionConfig(agentCfg, globalCfg,
|
|
135
|
+
/** `gateway.timezone` — the shared default when neither override sets `timezone`. */
|
|
136
|
+
gatewayTimezone) {
|
|
135
137
|
const d = exports.REFLECTION_DEFAULTS;
|
|
136
|
-
|
|
138
|
+
// Each precedence level is validated in turn — an invalid-but-present agent/global
|
|
139
|
+
// override does not count as "set" and falls through to the next level (issue #462 review).
|
|
140
|
+
const timezone = (0, config_2.isValidTimezone)(agentCfg?.timezone)
|
|
141
|
+
? agentCfg.timezone
|
|
142
|
+
: (0, config_2.isValidTimezone)(globalCfg?.timezone)
|
|
143
|
+
? globalCfg.timezone
|
|
144
|
+
: (0, config_2.isValidTimezone)(gatewayTimezone)
|
|
145
|
+
? gatewayTimezone
|
|
146
|
+
: d.timezone;
|
|
137
147
|
return {
|
|
138
148
|
enabled: pick(agentCfg?.enabled, globalCfg?.enabled, d.enabled),
|
|
139
149
|
dayOfWeek: (0, config_num_1.numOr)(pick(agentCfg?.dayOfWeek, globalCfg?.dayOfWeek, d.dayOfWeek), d.dayOfWeek, 0, 6),
|
|
140
150
|
hour: (0, config_num_1.numOr)(pick(agentCfg?.hour, globalCfg?.hour, d.hour), d.hour, 0, 23),
|
|
141
151
|
minute: (0, config_num_1.numOr)(pick(agentCfg?.minute, globalCfg?.minute, d.minute), d.minute, 0, 59),
|
|
142
|
-
timezone
|
|
152
|
+
timezone,
|
|
143
153
|
maxClustersPerRun: (0, config_num_1.numOr)(pick(agentCfg?.maxClustersPerRun, globalCfg?.maxClustersPerRun, d.maxClustersPerRun), d.maxClustersPerRun, 0, 1000),
|
|
144
154
|
reviewModel: pick(agentCfg?.reviewModel, globalCfg?.reviewModel, d.reviewModel),
|
|
145
155
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/agent/knowledge/config.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCH,oDA0BC;AAyBD,kDAsBC;AAcD,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/agent/knowledge/config.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/runner.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
|
-
import { AgentConfig, GatewayConfig, Logger, ModelConfig, ApiAttachment, ImageParams } from '../types';
|
|
2
|
+
import { AgentConfig, CustomConnectorEntry, GatewayConfig, Logger, ModelConfig, ApiAttachment, ImageParams } from '../types';
|
|
3
|
+
import { SessionProcess } from '../session/process';
|
|
3
4
|
import { type SkillRegistry } from '../skills';
|
|
4
5
|
import { type ApiStreamCallbacks, type TurnSink } from './turn-stream';
|
|
5
6
|
import { type CliChannel } from '../cli-viewer/pairing-store';
|
|
@@ -145,6 +146,11 @@ export declare class AgentRunner extends EventEmitter {
|
|
|
145
146
|
private handleCommandRequest;
|
|
146
147
|
/**
|
|
147
148
|
* Persist the current model to config.json using atomic write (tmp + rename).
|
|
149
|
+
*
|
|
150
|
+
* Runs under the process-wide config write lock: the read and the rename below are
|
|
151
|
+
* synchronous and so cannot interleave with each other, but without the lock they
|
|
152
|
+
* can still land between an async writer's read and its own rename — dropping this
|
|
153
|
+
* model change, or being dropped by it. See config/config-write-lock.ts.
|
|
148
154
|
*/
|
|
149
155
|
private persistModelToConfig;
|
|
150
156
|
private static escapeXmlAttr;
|
|
@@ -364,11 +370,51 @@ export declare class AgentRunner extends EventEmitter {
|
|
|
364
370
|
restartOrDefer(opts?: {
|
|
365
371
|
skipBusy?: boolean;
|
|
366
372
|
deferIdle?: boolean;
|
|
373
|
+
filter?: (proc: SessionProcess) => boolean;
|
|
367
374
|
}): Promise<{
|
|
368
375
|
immediate: number;
|
|
369
376
|
deferred: number;
|
|
370
377
|
skipped: number;
|
|
371
378
|
}>;
|
|
379
|
+
/**
|
|
380
|
+
* Called after a connector's secret or definition changes: a connector was
|
|
381
|
+
* connected, an external control plane pushed a fresh access_token for one it
|
|
382
|
+
* owns (POST /oauth/receive), the background refresh sweep in
|
|
383
|
+
* oauth-refresh-sweep.ts (invoked from gateway-router.ts's 60s interval)
|
|
384
|
+
* rotated one, or a connector was deleted / had its refresh given up on.
|
|
385
|
+
*
|
|
386
|
+
* Restarts exactly the sessions whose own mcp-config no longer matches what
|
|
387
|
+
* `connectorId` resolves to for this agent — see
|
|
388
|
+
* SessionProcess.connectorConfigChanged, which owns that comparison. The
|
|
389
|
+
* stdio MCP subprocess reads its env once at spawn (see writeMcpConfig), so
|
|
390
|
+
* there is no way to hot-patch a running child; a session that IS affected
|
|
391
|
+
* genuinely needs a respawn, and one that isn't must not be disrupted.
|
|
392
|
+
*
|
|
393
|
+
* `overlay` is merged over this runner's view of `gateway.customConnectors` —
|
|
394
|
+
* and adopted into it, so the sessions restarted below respawn from the new
|
|
395
|
+
* state rather than the one the watcher has not delivered yet (see the inline
|
|
396
|
+
* note). Callers that have just written a connector entry need it:
|
|
397
|
+
* config.json's watcher propagates asynchronously, so a route that creates a
|
|
398
|
+
* connector and immediately asks what it resolves to would otherwise be
|
|
399
|
+
* answered from a config snapshot taken before its own write. A `null` value
|
|
400
|
+
* expresses the other half of that write — the entry was REMOVED — which a
|
|
401
|
+
* merge alone cannot say. Deleting a connector whose owner is `'none'` has no
|
|
402
|
+
* secrets to clear, so without it the stale snapshot still resolves the entry
|
|
403
|
+
* to the identical fingerprint, nothing looks changed, and every live session
|
|
404
|
+
* keeps the deleted MCP server connected and callable while the API reports it
|
|
405
|
+
* gone.
|
|
406
|
+
*
|
|
407
|
+
* Deliberately takes no "the caller already decided" escape hatch. The delete
|
|
408
|
+
* and give-up paths needed one while this asked whether the connector still
|
|
409
|
+
* resolves — after `deleteSecrets` it never does, so the answer was always no
|
|
410
|
+
* and the restart silently did nothing. Per-session comparison answers those
|
|
411
|
+
* paths correctly on its own: resolving to nothing IS the change.
|
|
412
|
+
*/
|
|
413
|
+
restartSessionsUsingConnector(connectorId: string, opts?: {
|
|
414
|
+
overlay?: Record<string, CustomConnectorEntry | null>;
|
|
415
|
+
}): Promise<{
|
|
416
|
+
restarted: boolean;
|
|
417
|
+
}>;
|
|
372
418
|
/**
|
|
373
419
|
* Format a timestamp as a human-readable age string (e.g. "5m ago", "2h ago").
|
|
374
420
|
*/
|
|
@@ -399,6 +445,25 @@ export declare class AgentRunner extends EventEmitter {
|
|
|
399
445
|
private writeMenuForward;
|
|
400
446
|
private startIdleCleaner;
|
|
401
447
|
start(): Promise<void>;
|
|
448
|
+
/**
|
|
449
|
+
* Remove any `.sessions/<id>/` directory not backed by a currently-live
|
|
450
|
+
* `SessionProcess` — leftovers from a hard kill (SIGKILL, crash, host
|
|
451
|
+
* reboot) that `SessionProcess.stop()`'s own cleanup never got to run for.
|
|
452
|
+
* Each holds a `mcp-config.json` with fully-substituted secrets (channel
|
|
453
|
+
* bot tokens, GATEWAY_API_KEY) that must not accumulate unbounded (#460).
|
|
454
|
+
*
|
|
455
|
+
* Called once per runner instance at the top of `start()`, before any of
|
|
456
|
+
* this agent's own sessions exist yet, so `this.sessions` is normally
|
|
457
|
+
* empty here — but the liveness check is real, not just a formality: skip
|
|
458
|
+
* anything present in `this.sessions` regardless, rather than assuming
|
|
459
|
+
* "start() always runs on an empty pool" and deleting unconditionally.
|
|
460
|
+
*
|
|
461
|
+
* Async (fsPromises) rather than sync fs calls: a first upgrade to this fix
|
|
462
|
+
* can face a real backlog of leftovers accumulated before it existed, and
|
|
463
|
+
* synchronous readdir/rm would block the event loop — and every other
|
|
464
|
+
* agent's start() sharing this process — for the duration.
|
|
465
|
+
*/
|
|
466
|
+
private sweepStaleSessionDirs;
|
|
402
467
|
updateAgentConfig(newConfig: AgentConfig): void;
|
|
403
468
|
startSlackOutbound(): void;
|
|
404
469
|
stopSlackOutbound(): void;
|