@0xmaxma/claude-gateway 1.3.23 → 1.3.25

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 (35) hide show
  1. package/README.md +125 -49
  2. package/dist/api/line-pending-senders.d.ts +7 -2
  3. package/dist/api/line-pending-senders.d.ts.map +1 -1
  4. package/dist/api/line-pending-senders.js +7 -2
  5. package/dist/api/line-pending-senders.js.map +1 -1
  6. package/dist/api/packages.d.ts.map +1 -1
  7. package/dist/api/packages.js +92 -16
  8. package/dist/api/packages.js.map +1 -1
  9. package/dist/api/router.d.ts.map +1 -1
  10. package/dist/api/router.js +563 -172
  11. package/dist/api/router.js.map +1 -1
  12. package/dist/api/wizard-state.d.ts +1 -4
  13. package/dist/api/wizard-state.d.ts.map +1 -1
  14. package/dist/api/wizard-state.js.map +1 -1
  15. package/dist/discord/receiver.d.ts +1 -0
  16. package/dist/discord/receiver.d.ts.map +1 -1
  17. package/dist/discord/receiver.js +24 -6
  18. package/dist/discord/receiver.js.map +1 -1
  19. package/dist/telegram/receiver.d.ts +1 -0
  20. package/dist/telegram/receiver.d.ts.map +1 -1
  21. package/dist/telegram/receiver.js +18 -6
  22. package/dist/telegram/receiver.js.map +1 -1
  23. package/mcp/tools/discord/access.ts +136 -20
  24. package/mcp/tools/discord/client.ts +3 -1
  25. package/mcp/tools/discord/module.ts +75 -4
  26. package/mcp/tools/discord/skills/access/SKILL.md +66 -8
  27. package/mcp/tools/discord/skills/configure/SKILL.md +11 -1
  28. package/mcp/tools/discord/types.ts +21 -2
  29. package/mcp/tools/telegram/dedup.ts +4 -1
  30. package/mcp/tools/telegram/module.ts +5 -14
  31. package/mcp/tools/telegram/pure.ts +169 -31
  32. package/mcp/tools/telegram/receiver-server.ts +108 -78
  33. package/mcp/tools/telegram/skills/access/SKILL.md +93 -23
  34. package/mcp/tools/telegram/skills/configure/SKILL.md +31 -26
  35. package/package.json +1 -1
package/README.md CHANGED
@@ -733,20 +733,28 @@ When the config schema changes (new fields added in `config.template.json`), the
733
733
 
734
734
  ## Pairing New Users
735
735
 
736
- 1. Set `dmPolicy` to `pairing` in `access.json`:
737
- ```json
738
- { "dmPolicy": "pairing" }
739
- ```
740
- 2. Ask the user to DM the bot — they receive a 6-character pairing code
741
- 3. Approve it:
736
+ New agents default to `dmPolicy: "allowlist"` with the orthogonal `pairing`
737
+ toggle **on**, so pairing works out of the box — no setup needed.
738
+
739
+ 1. Ask the user to DM the bot — they receive a 6-character pairing code
740
+ 2. Approve it:
742
741
  ```bash
743
- npm run pair -- --agent=alfred --code=abc123
742
+ npm run pair -- --agent=alfred --code=abc123 --channel=discord
744
743
  ```
745
- 4. The bot confirms pairing within 5 seconds
746
- 5. Lock down after everyone is paired:
747
- ```bash
748
- npm run pair -- --agent=alfred --policy=allowlist
744
+ (omit `--channel` or use `--channel=telegram` for Telegram)
745
+ 3. The bot confirms pairing within 5 seconds
746
+ 4. Lock down after everyone is paired (optional) — turn the pairing toggle off
747
+ so unknown senders are dropped silently (the base policy is already
748
+ `allowlist`):
749
749
  ```
750
+ /gateway:discord-access dm-pairing off # Discord
751
+ /telegram:access pairing off # Telegram
752
+ ```
753
+
754
+ `pairing` is an **orthogonal on/off toggle**, not a `dmPolicy` value: the base
755
+ policy stays `open` | `allowlist` | `disabled`, and pairing layers on top of
756
+ `allowlist`. A legacy `access.json` with `"dmPolicy": "pairing"` is migrated
757
+ automatically on read to `{ dmPolicy: "allowlist", pairing: true }`.
750
758
 
751
759
  To manage channels (add/remove Telegram or Discord) on an existing agent:
752
760
  ```bash
@@ -755,78 +763,135 @@ make update-agent # choose "Manage channels"
755
763
 
756
764
  ---
757
765
 
766
+ ## Channel Conditions & Limitations
767
+
768
+ Each channel gates inbound messages in two tiers — **DM/1:1** and **group** — and
769
+ each has platform-level conditions that must be met *before* the gateway ever
770
+ sees a message. If those aren't met the bot looks online but stays silent.
771
+
772
+ | Channel | Scope | Message reaches the bot when… | Access gate | Answers in group when… |
773
+ |---------|-------|-------------------------------|-------------|------------------------|
774
+ | **Telegram** | DM | always (long-polling) | `dmPolicy` + `pairing` → `allowFrom` | — |
775
+ | | Group | bot is **Admin**, or **Privacy Mode is OFF** + re-added; otherwise only `/cmd`, @mentions, replies | `groupPolicy` + `groupAllowlist` | `requireMention` false, or @mentioned/replied |
776
+ | **Discord** | DM | **Message Content Intent** enabled | `dmPolicy` + `pairing` → `allowFrom` | — |
777
+ | | Guild | **Message Content Intent** + **View Channel** + **Read Message History** | `groupPolicy` + `guildAllowlist` (+ optional `channelAllowlist`/`roleAllowlist`) | `requireMention` false, or @mentioned/replied |
778
+ | **LINE** | 1:1 | webhook delivered (valid signature) | `dmPolicy` | — |
779
+ | | Group/Room | webhook delivered + bot is a member | `groupPolicy` + `groupAllowlist` | `requireMention` false, or **native** @mention |
780
+
781
+ **Telegram limits**
782
+ - Exactly one process may poll a bot token — a second poller causes `409 Conflict`.
783
+ - Bot **commands are DM-only**; in groups they're silently dropped.
784
+ - Group **Privacy Mode is ON by default** — see [Telegram Groups](#telegram-groups). Admin status bypasses it; a Privacy-Mode change only applies after the bot is removed and re-added.
785
+ - Pairing codes: DM knocks reply the code privately; group knocks post the code in the group (needs a message that actually reaches the bot, i.e. Admin/Privacy-off).
786
+
787
+ **Discord limits**
788
+ - **MESSAGE CONTENT INTENT** is a privileged intent — without it message text arrives empty, so the bot can neither answer nor pair. Enable it in the Developer Portal.
789
+ - The bot needs channel permissions **View Channel**, **Read Message History**, **Send Messages** (+ **Create Public Threads** / **Send Messages in Threads** if `DISCORD_AUTO_THREAD=true`).
790
+ - `channelAllowlist` / `roleAllowlist` are backend-only filters (no web UI) applied after the guild gate.
791
+
792
+ **LINE limits**
793
+ - Inbound arrives via the Express **webhook**, not polling; the signature is verified over the **exact raw bytes**. Front it with the bun CORS proxy (see `/tunnel`) — never point cloudflared straight at the gateway, or chunked bodies break the signature and webhooks are dropped.
794
+ - Group/room `requireMention` uses LINE's **native mention** only (`mention.mentionees[].isSelf`). Typing the bot's name as plain text does **not** count, and `@All` does **not** count as a bot mention.
795
+ - Delivery is **reply-token-first (free) → push fallback (metered)**. The single-use reply token lives only ~1 min; after that, replies consume the OA's monthly push quota.
796
+ - Max **5 message objects** per reply/push request (the gateway auto-chunks to fit).
797
+
798
+ ---
799
+
758
800
  ## Telegram Groups
759
801
 
760
- The bot can respond in Telegram groups and supergroups. Groups must be registered before the bot will respond.
802
+ The bot can respond in Telegram groups and supergroups. A group must be in the
803
+ agent's `groupAllowlist` before the bot will answer there.
804
+
805
+ ### Delivery gotcha: Privacy Mode (read this first)
806
+
807
+ Telegram bots ship with **Privacy Mode ON** (`getMe` returns
808
+ `can_read_all_group_messages: false`). A privacy-mode bot only *receives*, inside
809
+ a group:
810
+
811
+ - messages that start with `/` (commands),
812
+ - messages that @mention the bot's username, and
813
+ - replies to the bot's own messages.
761
814
 
762
- **Step 1 Add the bot to the group as Admin**
815
+ Everything else is filtered by Telegram **before it reaches the gateway** the
816
+ bot looks online but never sees the message, so it can neither answer nor mint a
817
+ pairing code. On top of that, bot commands (`/start`, `/status`, …) are
818
+ **DM-only**: the receiver silently drops them in groups so pairing codes can't
819
+ leak to other members. Net effect in a default-privacy group: a plain message is
820
+ invisible and a command is dropped, so nothing happens.
763
821
 
764
- Add your bot to the group and **promote it to Admin**. Without admin rights, Telegram does not deliver group messages to the bot — it will appear online but never respond.
822
+ Do one of these so the bot actually receives group messages:
765
823
 
766
- Minimum required admin permission: **"Read Messages"** (or any admin role even the most restricted works).
824
+ - **Promote the bot to Admin in the group (easiest).** An admin bot receives
825
+ every message regardless of Privacy Mode — no BotFather change, no re-add. Any
826
+ admin role works, even the most restricted.
827
+ - **Disable Privacy Mode**, then **remove and re-add the bot** to the group (the
828
+ new setting only applies on re-join): [@BotFather](https://t.me/BotFather) →
829
+ `/setprivacy` → pick the bot → **Disable**.
767
830
 
768
- **Step 2 — Get the group ID**
831
+ ### Register the group
769
832
 
770
- Forward any message from the group to [@userinfobot](https://t.me/userinfobot). It will reply with the chat ID a negative number like `-1001234567890`.
833
+ Once the bot can receive group messages, add the group to `groupAllowlist` one of
834
+ two ways.
835
+
836
+ **Option A — pairing code (recommended).** With `groupPolicy: "allowlist"` and
837
+ `pairing: true` (both defaults), send any message in the group. The bot replies
838
+ with a 6-character code. Approve it from a gateway agent session:
771
839
 
772
- Alternatively, send a message in the group and visit:
773
840
  ```
774
- https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates
841
+ /telegram:access pair <code>
775
842
  ```
776
- Look for `"chat":{"id": ...}` in the result.
777
843
 
778
- **Step 3 Register the group**
844
+ That adds the group id to `groupAllowlist` (the code also lands in the agent's
845
+ `pending` as a `"kind": "group"` entry).
779
846
 
780
- Edit the agent's `access.json` directly:
847
+ **Option B edit `access.json` directly.** Get the group id by forwarding any
848
+ group message to [@userinfobot](https://t.me/userinfobot) — a negative number
849
+ like `-1001234567890` — then edit:
781
850
 
782
851
  ```
783
852
  ~/.claude-gateway/agents/<your-agent-id>/workspace/.telegram-state/access.json
784
853
  ```
785
854
 
786
- Add the group under `"groups"`:
787
-
788
855
  ```json
789
856
  {
790
857
  "dmPolicy": "allowlist",
858
+ "pairing": true,
791
859
  "allowFrom": ["..."],
792
- "groups": {
793
- "-1001234567890": {
794
- "requireMention": true,
795
- "allowFrom": []
796
- }
797
- }
860
+ "groupPolicy": "allowlist",
861
+ "groupAllowlist": ["-1001234567890"],
862
+ "requireMention": true
798
863
  }
799
864
  ```
800
865
 
801
- Set `"requireMention": false` if you want the bot to respond to all messages without needing an @mention.
802
- To restrict to specific members only, add their Telegram user IDs to `"allowFrom"`.
803
-
804
- **Step 4 — Start chatting**
866
+ `access.json` is re-read on every inbound message changes take effect
867
+ immediately, no restart.
805
868
 
806
- @mention the bot in the group (or reply to one of its messages). Changes to `access.json` take effect immediately — no restart needed.
869
+ ### Mention gate
807
870
 
808
- **Managing groups**
871
+ `requireMention` is a single top-level boolean (default `true`):
809
872
 
810
- Edit `access.json` to add or remove entries from the `"groups"` object. The gateway re-reads the file on every inbound message.
873
+ - `true` the bot answers in an allowlisted group only when @mentioned or
874
+ replied to. This relies on Telegram delivering the @mention; if the bot ignores
875
+ mentions, make it an Admin (see above).
876
+ - `false` — the bot answers **every** message in an allowlisted group. This only
877
+ does anything if the bot can *see* every message, i.e. you also promoted it to
878
+ Admin or disabled Privacy Mode.
811
879
 
812
- > **Note:** `/telegram:access` skill is available when running inside a gateway agent session (TELEGRAM_STATE_DIR is set automatically). For standalone terminal use, edit `access.json` directly as shown above.
880
+ Toggle it with `/telegram:access group mention <on|off>`.
813
881
 
814
- **Optional Let the bot read all messages (disable Privacy Mode)**
815
-
816
- By default, Telegram bots in groups only receive messages that start with `/` or directly @mention the bot. If you want the bot to respond to every message without an @mention (and have set `"requireMention": false` in `access.json`), you also need to disable Privacy Mode at the bot level:
817
-
818
- 1. Open [@BotFather](https://t.me/BotFather)
819
- 2. Send `/setprivacy`
820
- 3. Select your bot
821
- 4. Choose **Disable**
822
-
823
- This is a bot-level setting — it applies to all groups the bot joins. If @mention-only is fine, skip this step and keep `"requireMention": true`.
882
+ > **Legacy schema note:** older docs showed a per-group `"groups": { "<id>": {…} }`
883
+ > map. That form is still accepted and auto-migrated on read to the flat
884
+ > `groupAllowlist` + top-level `requireMention` shown above, but new setups should
885
+ > use the flat schema. A per-group member restriction from the old schema is
886
+ > preserved under `legacyGroupAllowFrom`; there is no command to edit it.
824
887
 
825
888
  ---
826
889
 
827
890
  ## Telegram Commands
828
891
 
829
- Once paired, the following bot commands are available in a private chat:
892
+ Bot commands are **DM-only** sent in a group they are silently ignored (this
893
+ keeps pairing codes and session state from leaking to other members). Once
894
+ paired, the following commands are available in a private chat:
830
895
 
831
896
  **Session management**
832
897
 
@@ -905,6 +970,17 @@ npm run typecheck
905
970
  - Ensure no other process is polling the same bot token (causes 409 Conflict)
906
971
  - Only `TelegramReceiver` polls Telegram — MCP session subprocesses run in `SEND_ONLY` mode (no polling)
907
972
 
973
+ **Bot silent in a Telegram group**
974
+ - The group must be in `groupAllowlist` — see [Telegram Groups](#telegram-groups). An empty `pending` after messaging usually means the message never reached the bot.
975
+ - Most common cause: **Privacy Mode** (default ON). A non-admin bot only receives commands, @mentions, and replies in groups — a plain message needed to mint the pairing code is filtered by Telegram. Promote the bot to Admin, or disable Privacy Mode in BotFather and re-add it.
976
+ - `/start` and other commands are dropped in groups by design — use a normal message (or an @mention) to trigger the pairing code.
977
+ - If `requireMention: true`, the bot only answers when @mentioned or replied to.
978
+
979
+ **Bot silent in a Discord server (guild)**
980
+ - Enable the **MESSAGE CONTENT INTENT** in the Discord Developer Portal (Bot settings) — without it the bot receives events but empty message text, so it can't respond or pair.
981
+ - The guild must be in `guildAllowlist` (`groupPolicy: allowlist`), and the bot needs **View Channel** + **Read Message History** in that channel.
982
+ - If `requireMention: true`, the bot only answers when @mentioned or replied to.
983
+
908
984
  **Session loses memory after restart**
909
985
  - History is persisted in `~/.claude-gateway/agents/<id>/sessions/<chat_id>.jsonl`
910
986
  - If the file is missing, the session starts fresh (no error)
@@ -17,8 +17,13 @@ export interface PendingSender {
17
17
  }
18
18
  /** Mint a short visual-match pairing code (6 uppercase hex). */
19
19
  export declare function generatePairingCode(): string;
20
- /** Max distinct senders retained per agent (oldest evicted first). */
21
- export declare const MAX_PENDING_PER_AGENT = 20;
20
+ /**
21
+ * Max distinct senders retained per agent (oldest evicted first). Kept at 5 to
22
+ * match the per-kind pending cap in the Telegram/Discord gate (countPending ⇒ 5
23
+ * for each of DM and group), so every channel bounds unapproved knocks the same
24
+ * way and a flood can't exhaust memory.
25
+ */
26
+ export declare const MAX_PENDING_PER_AGENT = 5;
22
27
  /**
23
28
  * Record a denied 1:1 DM sender (Tier 1 discovery). Returns true on first
24
29
  * contact (entry newly created).
@@ -1 +1 @@
1
- {"version":3,"file":"line-pending-senders.d.ts","sourceRoot":"","sources":["../../src/api/line-pending-senders.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACjC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,gEAAgE;AAChE,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,sEAAsE;AACtE,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAuDxC;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,EACpB,GAAG,GAAE,MAAmB,EACxB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAET;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,OAAO,GAAG,MAAM,EACtB,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,GAAE,MAAmB,EACxB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAET;AAED,uDAAuD;AACvD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE,CAIlE;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEvF;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAEpE;AAED,2DAA2D;AAC3D,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
1
+ {"version":3,"file":"line-pending-senders.d.ts","sourceRoot":"","sources":["../../src/api/line-pending-senders.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACjC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,gEAAgE;AAChE,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAuDvC;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,EACpB,GAAG,GAAE,MAAmB,EACxB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAET;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,OAAO,GAAG,MAAM,EACtB,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,GAAE,MAAmB,EACxB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAET;AAED,uDAAuD;AACvD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE,CAIlE;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEvF;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAEpE;AAED,2DAA2D;AAC3D,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
@@ -24,8 +24,13 @@ const crypto_1 = require("crypto");
24
24
  function generatePairingCode() {
25
25
  return (0, crypto_1.randomBytes)(3).toString('hex').toUpperCase();
26
26
  }
27
- /** Max distinct senders retained per agent (oldest evicted first). */
28
- exports.MAX_PENDING_PER_AGENT = 20;
27
+ /**
28
+ * Max distinct senders retained per agent (oldest evicted first). Kept at 5 to
29
+ * match the per-kind pending cap in the Telegram/Discord gate (countPending ⇒ 5
30
+ * for each of DM and group), so every channel bounds unapproved knocks the same
31
+ * way and a flood can't exhaust memory.
32
+ */
33
+ exports.MAX_PENDING_PER_AGENT = 5;
29
34
  // agentId -> (id -> entry) (id = userId | groupId | roomId)
30
35
  const store = new Map();
31
36
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"line-pending-senders.js","sourceRoot":"","sources":["../../src/api/line-pending-senders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"line-pending-senders.js","sourceRoot":"","sources":["../../src/api/line-pending-senders.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"packages.d.ts","sourceRoot":"","sources":["../../src/api/packages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAIpD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AA4BlC,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,wBAAgB,QAAQ,IAAI,IAAI,CAE/B;AAsFD,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAwJ/D"}
1
+ {"version":3,"file":"packages.d.ts","sourceRoot":"","sources":["../../src/api/packages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAIpD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAsDlC,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,wBAAgB,QAAQ,IAAI,IAAI,CAE/B;AA4HD,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CA0L/D"}
@@ -9,10 +9,19 @@ const child_process_1 = require("child_process");
9
9
  const fs_1 = require("fs");
10
10
  const path_1 = require("path");
11
11
  const auth_1 = require("./auth");
12
- // URL param "name" → npm package name
13
- const PACKAGE_MAP = {
14
- 'claude-gateway': '@0xmaxma/claude-gateway',
15
- 'claude-code': '@anthropic-ai/claude-code',
12
+ const migrator_1 = require("../config/migrator");
13
+ // URL param "name" → package config.
14
+ // claude-gateway is a genuine npm global — keep npm detect/update.
15
+ // claude-code ships via the native installer (no longer an npm global), so
16
+ // detect from the `claude` binary and update via its native updater.
17
+ const PACKAGES = {
18
+ 'claude-gateway': { npm: '@0xmaxma/claude-gateway', detect: 'npm', update: 'npm' },
19
+ 'claude-code': {
20
+ npm: '@anthropic-ai/claude-code',
21
+ detect: 'binary',
22
+ bin: 'claude',
23
+ update: 'native',
24
+ },
16
25
  };
17
26
  const CACHE_TTL_MS = 5 * 60 * 1000;
18
27
  let versionCache = null;
@@ -40,6 +49,42 @@ function getNpmListVersion(packageName) {
40
49
  return null;
41
50
  }
42
51
  }
52
+ // Resolve the installed version by shelling out to the binary on PATH
53
+ // (e.g. `claude --version` → "2.1.207 (Claude Code)"). Parses the leading
54
+ // semver (with optional prerelease) and returns null on any failure —
55
+ // binary missing, non-zero exit, or unparseable output. `bin` is always a
56
+ // trusted constant from PACKAGES, never request-derived.
57
+ function getBinaryVersion(bin) {
58
+ try {
59
+ const output = (0, child_process_1.execSync)(`${bin} --version`, {
60
+ encoding: 'utf-8',
61
+ stdio: ['pipe', 'pipe', 'pipe'],
62
+ timeout: 10000,
63
+ });
64
+ // `claude --version` prints the version first (e.g. "2.1.207 (Claude Code)").
65
+ // Anchor to the start of the trimmed output so a version-like token later in
66
+ // the line can never be mistaken for the installed version.
67
+ const match = output.trim().match(/^(\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?)/);
68
+ return match ? match[1] : null;
69
+ }
70
+ catch {
71
+ return null;
72
+ }
73
+ }
74
+ // Resolve the currently-installed version per the package's detect strategy.
75
+ function resolveCurrent(config) {
76
+ if (config.detect === 'binary' && config.bin) {
77
+ return getBinaryVersion(config.bin);
78
+ }
79
+ return getNpmListVersion(config.npm);
80
+ }
81
+ // An update is available only when `latest` is strictly newer than `current`.
82
+ // Using semver ordering (not `current !== latest`) avoids a false "update
83
+ // available" when the installed version is *ahead* of the npm-registry latest
84
+ // — e.g. a native-installer channel that leads the npm dist-tag.
85
+ function updateAvailable(current, latest) {
86
+ return !!(current && latest && (0, migrator_1.compareSemver)(latest, current) > 0);
87
+ }
43
88
  async function getLatestVersion(packageName) {
44
89
  const encodedName = packageName.replace('/', '%2F');
45
90
  const res = await fetch(`https://registry.npmjs.org/${encodedName}/latest`);
@@ -49,17 +94,17 @@ async function getLatestVersion(packageName) {
49
94
  return data.version ?? null;
50
95
  }
51
96
  async function fetchAllPackageVersions() {
52
- const pkgs = Object.values(PACKAGE_MAP);
53
- // Run all synchronous npm list calls before entering async Promise.all
54
- const currents = pkgs.map(getNpmListVersion);
55
- return Promise.all(pkgs.map(async (pkg, i) => {
97
+ const configs = Object.values(PACKAGES);
98
+ // Run all synchronous current-version lookups before entering async Promise.all
99
+ const currents = configs.map(resolveCurrent);
100
+ return Promise.all(configs.map(async (config, i) => {
56
101
  const current = currents[i];
57
- const latest = await getLatestVersion(pkg);
102
+ const latest = await getLatestVersion(config.npm);
58
103
  return {
59
- package: pkg,
104
+ package: config.npm,
60
105
  current,
61
106
  latest,
62
- hasUpdate: !!(current && latest && current !== latest),
107
+ hasUpdate: updateAvailable(current, latest),
63
108
  };
64
109
  }));
65
110
  }
@@ -146,12 +191,13 @@ function createPackagesRouter(apiKeys) {
146
191
  }
147
192
  }
148
193
  const { name } = req.params;
149
- const packageName = PACKAGE_MAP[name];
150
- if (!packageName) {
194
+ const config = PACKAGES[name];
195
+ if (!config) {
151
196
  res.status(404).json({ error: `unknown package: ${name}` });
152
197
  return;
153
198
  }
154
- const from = getNpmListVersion(packageName);
199
+ const packageName = config.npm;
200
+ const from = resolveCurrent(config);
155
201
  let latest;
156
202
  try {
157
203
  latest = await getLatestVersion(packageName);
@@ -164,8 +210,8 @@ function createPackagesRouter(apiKeys) {
164
210
  res.status(503).json({ error: 'registry unavailable' });
165
211
  return;
166
212
  }
167
- // Already on latest — no install needed
168
- if (from === latest) {
213
+ // Already on latest (or ahead of it) — no install needed
214
+ if (from && !updateAvailable(from, latest)) {
169
215
  res.json({ package: packageName, from, to: from, updated: false, warning: null });
170
216
  return;
171
217
  }
@@ -176,6 +222,36 @@ function createPackagesRouter(apiKeys) {
176
222
  }
177
223
  isUpdating = true;
178
224
  try {
225
+ // Native-installer packages (e.g. claude-code) update the binary on PATH
226
+ // via their own updater. npm install -g would write a separate npm copy
227
+ // that isn't the running binary, so it must not be used here.
228
+ if (config.update === 'native' && config.bin) {
229
+ let updateErr = null;
230
+ try {
231
+ (0, child_process_1.execSync)(`${config.bin} update`, {
232
+ stdio: ['pipe', 'pipe', 'pipe'],
233
+ timeout: 300000,
234
+ });
235
+ }
236
+ catch (err) {
237
+ updateErr = err;
238
+ }
239
+ if (updateErr !== null) {
240
+ const stderr = updateErr.stderr?.toString() ??
241
+ updateErr.message ??
242
+ 'update failed';
243
+ res.status(500).json({ error: stderr });
244
+ return;
245
+ }
246
+ // Invalidate version cache and re-read the actual binary version.
247
+ // The native updater may legitimately be a no-op (already newest on its
248
+ // own channel), so report `updated` from whether the version changed.
249
+ versionCache = null;
250
+ const to = resolveCurrent(config);
251
+ res.json({ package: packageName, from, to, updated: to !== from, warning: null });
252
+ return;
253
+ }
254
+ // npm-global packages (e.g. claude-gateway) update via npm install -g.
179
255
  // Resolve npm global root for temp dir cleanup
180
256
  let npmRoot = '';
181
257
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"packages.js","sourceRoot":"","sources":["../../src/api/packages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"packages.js","sourceRoot":"","sources":["../../src/api/packages.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/api/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAOpD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAe,MAAM,UAAU,CAAC;AAyLzE,wBAAgB,eAAe,CAC7B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EACtC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EACtC,OAAO,EAAE,MAAM,EAAE,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,WAAW,EAAE,GACrB,MAAM,CAiyER"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/api/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAOpD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAe,MAAM,UAAU,CAAC;AAmJzE,wBAAgB,eAAe,CAC7B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EACtC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EACtC,OAAO,EAAE,MAAM,EAAE,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,WAAW,EAAE,GACrB,MAAM,CAipFR"}