tomo-ai 0.8.4 → 0.8.5
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/CHANGELOG.md +21 -0
- package/README.md +14 -2
- package/dist/agent/claude-login.d.ts +32 -0
- package/dist/agent/claude-login.d.ts.map +1 -0
- package/dist/agent/claude-login.js +176 -0
- package/dist/agent/claude-login.js.map +1 -0
- package/dist/agent/commands.d.ts +6 -1
- package/dist/agent/commands.d.ts.map +1 -1
- package/dist/agent/commands.js +97 -19
- package/dist/agent/commands.js.map +1 -1
- package/dist/agent/sdk-options.js +11 -1
- package/dist/agent/sdk-options.js.map +1 -1
- package/dist/agent.d.ts +7 -3
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +102 -15
- package/dist/agent.js.map +1 -1
- package/dist/auth.d.ts +19 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +56 -0
- package/dist/auth.js.map +1 -0
- package/dist/channels/imessage-dedupe.d.ts +25 -0
- package/dist/channels/imessage-dedupe.d.ts.map +1 -0
- package/dist/channels/imessage-dedupe.js +85 -0
- package/dist/channels/imessage-dedupe.js.map +1 -0
- package/dist/channels/imessage.d.ts +3 -0
- package/dist/channels/imessage.d.ts.map +1 -1
- package/dist/channels/imessage.js +18 -1
- package/dist/channels/imessage.js.map +1 -1
- package/dist/channels/telegram.d.ts.map +1 -1
- package/dist/channels/telegram.js +2 -1
- package/dist/channels/telegram.js.map +1 -1
- package/dist/cli/backup-workspace.d.ts +9 -0
- package/dist/cli/backup-workspace.d.ts.map +1 -0
- package/dist/cli/backup-workspace.js +76 -0
- package/dist/cli/backup-workspace.js.map +1 -0
- package/dist/cli/backup.d.ts.map +1 -1
- package/dist/cli/backup.js +11 -39
- package/dist/cli/backup.js.map +1 -1
- package/dist/cli/config/auth.d.ts +2 -0
- package/dist/cli/config/auth.d.ts.map +1 -0
- package/dist/cli/config/auth.js +60 -0
- package/dist/cli/config/auth.js.map +1 -0
- package/dist/cli/config/identities.js +3 -3
- package/dist/cli/config/identities.js.map +1 -1
- package/dist/cli/config/index.d.ts.map +1 -1
- package/dist/cli/config/index.js +4 -0
- package/dist/cli/config/index.js.map +1 -1
- package/dist/cli/config/sessions.js +2 -2
- package/dist/cli/config/sessions.js.map +1 -1
- package/dist/cli/config/shared.d.ts +1 -0
- package/dist/cli/config/shared.d.ts.map +1 -1
- package/dist/cli/config/shared.js +10 -8
- package/dist/cli/config/shared.js.map +1 -1
- package/dist/cli/daemon.js +4 -4
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +19 -19
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/lcm.d.ts.map +1 -1
- package/dist/cli/lcm.js +28 -27
- package/dist/cli/lcm.js.map +1 -1
- package/dist/cli/service.d.ts.map +1 -1
- package/dist/cli/service.js +2 -2
- package/dist/cli/service.js.map +1 -1
- package/dist/cli/sessions.d.ts.map +1 -1
- package/dist/cli/sessions.js +3 -6
- package/dist/cli/sessions.js.map +1 -1
- package/dist/cli/start.js +13 -10
- package/dist/cli/start.js.map +1 -1
- package/dist/cli/uninstall.d.ts.map +1 -1
- package/dist/cli/uninstall.js +2 -4
- package/dist/cli/uninstall.js.map +1 -1
- package/dist/config.d.ts +8 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +19 -10
- package/dist/config.js.map +1 -1
- package/dist/fs-utils.d.ts +6 -2
- package/dist/fs-utils.d.ts.map +1 -1
- package/dist/fs-utils.js +5 -3
- package/dist/fs-utils.js.map +1 -1
- package/dist/lcm/blocks.d.ts +3 -3
- package/dist/lcm/blocks.d.ts.map +1 -1
- package/dist/lcm/blocks.js +8 -8
- package/dist/lcm/blocks.js.map +1 -1
- package/dist/lcm/compact.d.ts +4 -2
- package/dist/lcm/compact.d.ts.map +1 -1
- package/dist/lcm/compact.js +7 -7
- package/dist/lcm/compact.js.map +1 -1
- package/dist/lcm/prune-tools.d.ts +2 -0
- package/dist/lcm/prune-tools.d.ts.map +1 -1
- package/dist/lcm/prune-tools.js +2 -2
- package/dist/lcm/prune-tools.js.map +1 -1
- package/dist/lcm/runner.d.ts.map +1 -1
- package/dist/lcm/runner.js +6 -2
- package/dist/lcm/runner.js.map +1 -1
- package/dist/lcm/stats.d.ts +2 -2
- package/dist/lcm/stats.d.ts.map +1 -1
- package/dist/lcm/stats.js +4 -4
- package/dist/lcm/stats.js.map +1 -1
- package/dist/mcp/internal-server.d.ts +5 -4
- package/dist/mcp/internal-server.d.ts.map +1 -1
- package/dist/mcp/internal-server.js +6 -5
- package/dist/mcp/internal-server.js.map +1 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +7 -0
- package/dist/router.js.map +1 -1
- package/dist/runtime-paths.d.ts +29 -0
- package/dist/runtime-paths.d.ts.map +1 -0
- package/dist/runtime-paths.js +33 -0
- package/dist/runtime-paths.js.map +1 -0
- package/dist/sessions/index.d.ts +1 -1
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +1 -1
- package/dist/sessions/index.js.map +1 -1
- package/dist/sessions/repair.d.ts +1 -1
- package/dist/sessions/repair.d.ts.map +1 -1
- package/dist/sessions/repair.js +2 -2
- package/dist/sessions/repair.js.map +1 -1
- package/dist/sessions/store.d.ts +11 -4
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js +60 -13
- package/dist/sessions/store.js.map +1 -1
- package/dist/workspace/index.d.ts.map +1 -1
- package/dist/workspace/index.js +2 -3
- package/dist/workspace/index.js.map +1 -1
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.8.5 (2026-06-26)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- **API key authentication config** (#158). Adds explicit API-key auth configuration and prevents the Anthropic API key from leaking to custom gateways/base URLs.
|
|
8
|
+
- **Claude login from the owner DM** (#165). The owner can authenticate Claude directly through a DM command instead of the CLI only, with clearer messaging when login verification fails.
|
|
9
|
+
- **Custom workspace for SDK sessions** (#175). SDK sessions now honor a configured custom workspace path. Runtime path resolution was consolidated into a new `runtime-paths` module.
|
|
10
|
+
|
|
11
|
+
### Bug fixes
|
|
12
|
+
|
|
13
|
+
- **iMessage inbound webhook dedupe is now persisted** (#163). Webhook dedupe state survives daemon restarts instead of living only in memory, so restarts no longer risk re-processing recently seen messages.
|
|
14
|
+
- **Direct-send note attribution** (#148). Summoned-group direct sends are attributed to the correct caller, attribution is caller-aware, and pending notes are capped.
|
|
15
|
+
- **Suppress group LCM output** (#164). Lifecycle-management chatter no longer leaks into group chats.
|
|
16
|
+
|
|
17
|
+
### Other
|
|
18
|
+
|
|
19
|
+
- Test against Node 26 in CI and align Node typings (#171).
|
|
20
|
+
- Extract `backup-workspace` out of the backup command.
|
|
21
|
+
- Bump `@anthropic-ai/claude-agent-sdk` `0.3.181` → `0.3.195` (#173, #169, #176).
|
|
22
|
+
- Bump `grammy` `1.44.0` (#168), `@clack/prompts` `1.6.0` (#170), `eslint` `10.6.0`, `actions/checkout` v7 (#166), and the dev-dependencies group (#174).
|
|
23
|
+
|
|
3
24
|
## 0.8.4 (2026-06-19)
|
|
4
25
|
|
|
5
26
|
### Features
|
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@ That's it. Open Telegram and message your bot.
|
|
|
32
32
|
## Requirements
|
|
33
33
|
|
|
34
34
|
- Node.js 22.12+
|
|
35
|
-
- [Claude Code](https://claude.com/claude-code) installed.
|
|
35
|
+
- [Claude Code](https://claude.com/claude-code) installed. Direct Claude models can use a Claude subscription or an Anthropic API key; LiteLLM gateways support other backends.
|
|
36
36
|
- At least one channel:
|
|
37
37
|
- **Telegram** — bot token from [@BotFather](https://t.me/BotFather)
|
|
38
38
|
- **iMessage** — [BlueBubbles](https://bluebubbles.app) server running on a Mac with iMessage signed in
|
|
@@ -41,7 +41,7 @@ That's it. Open Telegram and message your bot.
|
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
43
|
tomo init # First-time setup
|
|
44
|
-
tomo config # Interactive settings (model, LiteLLM, channels, identities, groups)
|
|
44
|
+
tomo config # Interactive settings (authentication, model, LiteLLM, channels, identities, groups)
|
|
45
45
|
tomo start # Start in background (daemon)
|
|
46
46
|
tomo start -f # Start in foreground (for dev)
|
|
47
47
|
tomo stop # Stop the daemon
|
|
@@ -60,6 +60,7 @@ tomo sessions clear # Reset all sessions
|
|
|
60
60
|
| `/new` | Start a new conversation (resets session) |
|
|
61
61
|
| `/model` | Switch model (Claude aliases or LiteLLM `provider/model` names) |
|
|
62
62
|
| `/restore` | Restore `config.json` from `config.json.bak` and restart |
|
|
63
|
+
| `/login` | Refresh Claude login from a configured owner's private DM |
|
|
63
64
|
| `/status` | Show session info (model, channel, message count) |
|
|
64
65
|
| `/pet` | Check Tomo's pet's mood, growth stage, and stats |
|
|
65
66
|
|
|
@@ -203,6 +204,10 @@ Run `tomo config` for interactive setup, or edit `~/.tomo/config.json` directly:
|
|
|
203
204
|
|
|
204
205
|
```json
|
|
205
206
|
{
|
|
207
|
+
"auth": {
|
|
208
|
+
"method": "api-key",
|
|
209
|
+
"apiKey": "sk-ant-..."
|
|
210
|
+
},
|
|
206
211
|
"channels": {
|
|
207
212
|
"telegram": {
|
|
208
213
|
"token": "your-bot-token",
|
|
@@ -246,6 +251,7 @@ Environment variables override config file values:
|
|
|
246
251
|
|
|
247
252
|
| Variable | Description |
|
|
248
253
|
|----------|-------------|
|
|
254
|
+
| `ANTHROPIC_API_KEY` | Use Anthropic API-key authentication; overrides the authentication stored in `config.json` |
|
|
249
255
|
| `TELEGRAM_BOT_TOKEN` | Override Telegram token |
|
|
250
256
|
| `IMESSAGE_URL` | Override BlueBubbles URL |
|
|
251
257
|
| `IMESSAGE_TYPING_START_DELAY_MS` | Delay before showing iMessage typing for ordinary turns (default: `1200`) |
|
|
@@ -263,6 +269,12 @@ Environment variables override config file values:
|
|
|
263
269
|
| `TOMO_CONTINUITY_SCRIPT_MAX_OUTPUT_CHARS` | Override continuity script stdout/stderr cap (default: `8000`) |
|
|
264
270
|
| `LOG_LEVEL` | Log level (default: `debug`) |
|
|
265
271
|
|
|
272
|
+
### Anthropic Authentication
|
|
273
|
+
|
|
274
|
+
Direct Claude models use your existing Claude Code subscription login by default. To use Anthropic API billing instead, run `tomo config`, choose **Anthropic authentication**, and enter an API key. Tomo stores the selected method under `auth` in `~/.tomo/config.json` and passes the key only to direct Claude Agent SDK child processes. `ANTHROPIC_API_KEY` remains supported and takes precedence over the saved setting.
|
|
275
|
+
|
|
276
|
+
Because the config contains channel credentials and may now contain an Anthropic API key, Tomo writes both `config.json` and `config.json.bak` with owner-only (`0600`) permissions.
|
|
277
|
+
|
|
266
278
|
`continuityScript` can also be a simple path string, e.g. `"continuityScript": "~/bin/tomo-continuity.sh"`. Relative paths resolve under `~/.tomo`; the script runs once per scheduled heartbeat and manual `tomo continuity` trigger, and its stdout/stderr or failure status is appended to the normal continuity prompt.
|
|
267
279
|
|
|
268
280
|
### Steering
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type ChildProcessWithoutNullStreams } from "node:child_process";
|
|
2
|
+
export interface ClaudeLoginManagerOptions {
|
|
3
|
+
spawnLogin?: () => ChildProcessWithoutNullStreams;
|
|
4
|
+
verifyLogin?: () => Promise<void>;
|
|
5
|
+
timeoutMs?: number;
|
|
6
|
+
}
|
|
7
|
+
export interface ClaudeLoginStart {
|
|
8
|
+
url: string;
|
|
9
|
+
reused: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface ClaudeLoginCompletion {
|
|
12
|
+
verified: boolean;
|
|
13
|
+
verificationError?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Owns the single machine-global Claude OAuth flow. The PKCE verifier lives in
|
|
17
|
+
* the waiting `claude auth login` child, so the process must stay alive between
|
|
18
|
+
* sending the URL and receiving the one-time code from the owner.
|
|
19
|
+
*/
|
|
20
|
+
export declare class ClaudeLoginManager {
|
|
21
|
+
private pending;
|
|
22
|
+
private readonly spawnLogin;
|
|
23
|
+
private readonly verifyLogin;
|
|
24
|
+
private readonly timeoutMs;
|
|
25
|
+
constructor(options?: ClaudeLoginManagerOptions);
|
|
26
|
+
start(owner: string): Promise<ClaudeLoginStart>;
|
|
27
|
+
complete(owner: string, code: string): Promise<ClaudeLoginCompletion>;
|
|
28
|
+
cancel(owner: string): boolean;
|
|
29
|
+
stop(): void;
|
|
30
|
+
private clearPending;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=claude-login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-login.d.ts","sourceRoot":"","sources":["../../src/agent/claude-login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAoB1F,MAAM,WAAW,yBAAyB;IACxC,UAAU,CAAC,EAAE,MAAM,8BAA8B,CAAC;IAClD,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;GAIG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuC;IAClE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,OAAO,GAAE,yBAA8B;IAQ7C,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuF/C,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAiC3E,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAW9B,IAAI,IAAI,IAAI;IAUZ,OAAO,CAAC,YAAY;CAIrB"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { execFile, spawn } from "node:child_process";
|
|
2
|
+
const LOGIN_TIMEOUT_MS = 10 * 60 * 1000;
|
|
3
|
+
const LOGIN_URL_RE = /https:\/\/claude\.com\/cai\/oauth\/authorize\?[^\s]+/;
|
|
4
|
+
/**
|
|
5
|
+
* Owns the single machine-global Claude OAuth flow. The PKCE verifier lives in
|
|
6
|
+
* the waiting `claude auth login` child, so the process must stay alive between
|
|
7
|
+
* sending the URL and receiving the one-time code from the owner.
|
|
8
|
+
*/
|
|
9
|
+
export class ClaudeLoginManager {
|
|
10
|
+
pending = null;
|
|
11
|
+
spawnLogin;
|
|
12
|
+
verifyLogin;
|
|
13
|
+
timeoutMs;
|
|
14
|
+
constructor(options = {}) {
|
|
15
|
+
this.spawnLogin = options.spawnLogin ?? (() => spawn("claude", ["auth", "login"], {
|
|
16
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
17
|
+
}));
|
|
18
|
+
this.verifyLogin = options.verifyLogin ?? verifyClaudeLogin;
|
|
19
|
+
this.timeoutMs = options.timeoutMs ?? LOGIN_TIMEOUT_MS;
|
|
20
|
+
}
|
|
21
|
+
async start(owner) {
|
|
22
|
+
const normalizedOwner = owner.toLowerCase();
|
|
23
|
+
if (this.pending) {
|
|
24
|
+
if (this.pending.owner !== normalizedOwner) {
|
|
25
|
+
throw new Error("Another owner already has a Claude login in progress");
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
url: this.pending.url ?? await this.pending.urlPromise,
|
|
29
|
+
reused: true,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const child = this.spawnLogin();
|
|
33
|
+
let resolveUrl;
|
|
34
|
+
let rejectUrl;
|
|
35
|
+
const urlPromise = new Promise((resolve, reject) => {
|
|
36
|
+
resolveUrl = resolve;
|
|
37
|
+
rejectUrl = reject;
|
|
38
|
+
});
|
|
39
|
+
let resolveCompletion;
|
|
40
|
+
let rejectCompletion;
|
|
41
|
+
const completionPromise = new Promise((resolve, reject) => {
|
|
42
|
+
resolveCompletion = resolve;
|
|
43
|
+
rejectCompletion = reject;
|
|
44
|
+
});
|
|
45
|
+
// A child can fail before `/login <code>` attaches its await. Keep that
|
|
46
|
+
// rejection observed while preserving it for the eventual caller.
|
|
47
|
+
void completionPromise.catch(() => { });
|
|
48
|
+
const pending = {
|
|
49
|
+
owner: normalizedOwner,
|
|
50
|
+
child,
|
|
51
|
+
output: "",
|
|
52
|
+
codeSubmitted: false,
|
|
53
|
+
timeout: setTimeout(() => {
|
|
54
|
+
const err = new Error("Claude login expired after 10 minutes; run /login again");
|
|
55
|
+
rejectUrl(err);
|
|
56
|
+
rejectCompletion(err);
|
|
57
|
+
child.kill();
|
|
58
|
+
this.clearPending(pending);
|
|
59
|
+
}, this.timeoutMs),
|
|
60
|
+
urlPromise,
|
|
61
|
+
resolveUrl,
|
|
62
|
+
rejectUrl,
|
|
63
|
+
completionPromise,
|
|
64
|
+
resolveCompletion,
|
|
65
|
+
rejectCompletion,
|
|
66
|
+
};
|
|
67
|
+
this.pending = pending;
|
|
68
|
+
const capture = (chunk) => {
|
|
69
|
+
pending.output = (pending.output + chunk.toString()).slice(-16_000);
|
|
70
|
+
if (pending.url)
|
|
71
|
+
return;
|
|
72
|
+
const match = LOGIN_URL_RE.exec(pending.output);
|
|
73
|
+
if (match) {
|
|
74
|
+
pending.url = match[0];
|
|
75
|
+
pending.resolveUrl(match[0]);
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
child.stdout.on("data", capture);
|
|
79
|
+
child.stderr.on("data", capture);
|
|
80
|
+
child.stdin.on("error", (err) => {
|
|
81
|
+
pending.rejectCompletion(new Error(`Could not submit Claude login code: ${err.message}`));
|
|
82
|
+
});
|
|
83
|
+
child.once("error", (err) => {
|
|
84
|
+
pending.rejectUrl(new Error(`Could not start Claude login: ${err.message}`));
|
|
85
|
+
pending.rejectCompletion(err);
|
|
86
|
+
this.clearPending(pending);
|
|
87
|
+
});
|
|
88
|
+
child.once("exit", (code, signal) => {
|
|
89
|
+
// Exit 0 after a submitted code means the CLI accepted the exchange. The
|
|
90
|
+
// separate authenticated probe below is the authoritative verification.
|
|
91
|
+
if (code === 0 && pending.codeSubmitted) {
|
|
92
|
+
pending.resolveCompletion();
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
const reason = signal ? `signal ${signal}` : `exit code ${code ?? "unknown"}`;
|
|
96
|
+
const err = new Error(`Claude login did not complete (${reason})`);
|
|
97
|
+
pending.rejectUrl(err);
|
|
98
|
+
pending.rejectCompletion(err);
|
|
99
|
+
}
|
|
100
|
+
this.clearPending(pending);
|
|
101
|
+
});
|
|
102
|
+
return { url: await urlPromise, reused: false };
|
|
103
|
+
}
|
|
104
|
+
async complete(owner, code) {
|
|
105
|
+
const pending = this.pending;
|
|
106
|
+
if (!pending)
|
|
107
|
+
throw new Error("No Claude login is waiting; send /login first");
|
|
108
|
+
if (pending.owner !== owner.toLowerCase()) {
|
|
109
|
+
throw new Error("This Claude login belongs to another owner");
|
|
110
|
+
}
|
|
111
|
+
if (pending.codeSubmitted)
|
|
112
|
+
throw new Error("That Claude login code is already being verified");
|
|
113
|
+
const trimmed = code.trim();
|
|
114
|
+
const hash = trimmed.lastIndexOf("#");
|
|
115
|
+
if (hash <= 0 || hash === trimmed.length - 1 || /\s/.test(trimmed)) {
|
|
116
|
+
throw new Error("Invalid authorization code; paste the complete code returned by Claude");
|
|
117
|
+
}
|
|
118
|
+
const expectedState = pending.url ? new URL(pending.url).searchParams.get("state") : null;
|
|
119
|
+
const receivedState = trimmed.slice(hash + 1);
|
|
120
|
+
if (!expectedState || receivedState !== expectedState) {
|
|
121
|
+
throw new Error("Authorization code does not match the active /login request");
|
|
122
|
+
}
|
|
123
|
+
pending.codeSubmitted = true;
|
|
124
|
+
pending.child.stdin.end(`${trimmed}\n`);
|
|
125
|
+
await pending.completionPromise;
|
|
126
|
+
try {
|
|
127
|
+
await this.verifyLogin();
|
|
128
|
+
return { verified: true };
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
return {
|
|
132
|
+
verified: false,
|
|
133
|
+
verificationError: err instanceof Error ? err.message : String(err),
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
cancel(owner) {
|
|
138
|
+
const pending = this.pending;
|
|
139
|
+
if (!pending || pending.owner !== owner.toLowerCase())
|
|
140
|
+
return false;
|
|
141
|
+
const err = new Error("Claude login cancelled");
|
|
142
|
+
pending.rejectUrl(err);
|
|
143
|
+
pending.rejectCompletion(err);
|
|
144
|
+
pending.child.kill();
|
|
145
|
+
this.clearPending(pending);
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
stop() {
|
|
149
|
+
const pending = this.pending;
|
|
150
|
+
if (!pending)
|
|
151
|
+
return;
|
|
152
|
+
const err = new Error("Tomo stopped during Claude login");
|
|
153
|
+
pending.rejectUrl(err);
|
|
154
|
+
pending.rejectCompletion(err);
|
|
155
|
+
pending.child.kill();
|
|
156
|
+
this.clearPending(pending);
|
|
157
|
+
}
|
|
158
|
+
clearPending(pending) {
|
|
159
|
+
clearTimeout(pending.timeout);
|
|
160
|
+
if (this.pending === pending)
|
|
161
|
+
this.pending = null;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function verifyClaudeLogin() {
|
|
165
|
+
return new Promise((resolve, reject) => {
|
|
166
|
+
execFile("claude", ["-p", "Reply with exactly OK.", "--safe-mode", "--no-session-persistence", "--tools", ""], { timeout: 60_000 }, (err, stdout, stderr) => {
|
|
167
|
+
if (!err) {
|
|
168
|
+
resolve();
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
const detail = `${stderr || stdout}`.trim().split("\n")[0]?.slice(0, 300);
|
|
172
|
+
reject(new Error(`Claude login verification failed${detail ? `: ${detail}` : ""}`));
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=claude-login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-login.js","sourceRoot":"","sources":["../../src/agent/claude-login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAuC,MAAM,oBAAoB,CAAC;AAE1F,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACxC,MAAM,YAAY,GAAG,sDAAsD,CAAC;AAiC5E;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IACrB,OAAO,GAAwB,IAAI,CAAC;IAC3B,UAAU,CAAuC;IACjD,WAAW,CAAsB;IACjC,SAAS,CAAS;IAEnC,YAAY,UAAqC,EAAE;QACjD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;YAChF,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,iBAAiB,CAAC;QAC5D,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAa;QACvB,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,eAAe,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC1E,CAAC;YACD,OAAO;gBACL,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU;gBACtD,MAAM,EAAE,IAAI;aACb,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,IAAI,UAAkC,CAAC;QACvC,IAAI,SAAgC,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzD,UAAU,GAAG,OAAO,CAAC;YACrB,SAAS,GAAG,MAAM,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,IAAI,iBAA8B,CAAC;QACnC,IAAI,gBAAuC,CAAC;QAC5C,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9D,iBAAiB,GAAG,OAAO,CAAC;YAC5B,gBAAgB,GAAG,MAAM,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,wEAAwE;QACxE,kEAAkE;QAClE,KAAK,iBAAiB,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEvC,MAAM,OAAO,GAAiB;YAC5B,KAAK,EAAE,eAAe;YACtB,KAAK;YACL,MAAM,EAAE,EAAE;YACV,aAAa,EAAE,KAAK;YACpB,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE;gBACvB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;gBACjF,SAAS,CAAC,GAAG,CAAC,CAAC;gBACf,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBACtB,KAAK,CAAC,IAAI,EAAE,CAAC;gBACb,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;YAClB,UAAU;YACV,UAAU;YACV,SAAS;YACT,iBAAiB;YACjB,iBAAiB;YACjB,gBAAgB;SACjB,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,MAAM,OAAO,GAAG,CAAC,KAAsB,EAAQ,EAAE;YAC/C,OAAO,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;YACpE,IAAI,OAAO,CAAC,GAAG;gBAAE,OAAO;YACxB,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACvB,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC;QACF,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC9B,OAAO,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,uCAAuC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5F,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC1B,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,iCAAiC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC7E,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAClC,yEAAyE;YACzE,wEAAwE;YACxE,IAAI,IAAI,KAAK,CAAC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;gBACxC,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,IAAI,SAAS,EAAE,CAAC;gBAC9E,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,kCAAkC,MAAM,GAAG,CAAC,CAAC;gBACnE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACvB,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAChC,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,IAAY;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC/E,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,OAAO,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAE/F,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;QAC5F,CAAC;QACD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1F,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,IAAI,aAAa,KAAK,aAAa,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QAED,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;QACxC,MAAM,OAAO,CAAC,iBAAiB,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YACzB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,iBAAiB,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACpE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE;YAAE,OAAO,KAAK,CAAC;QACpE,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAChD,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC1D,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAEO,YAAY,CAAC,OAAqB;QACxC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACpD,CAAC;CACF;AAED,SAAS,iBAAiB;IACxB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,QAAQ,CACN,QAAQ,EACR,CAAC,IAAI,EAAE,wBAAwB,EAAE,aAAa,EAAE,0BAA0B,EAAE,SAAS,EAAE,EAAE,CAAC,EAC1F,EAAE,OAAO,EAAE,MAAM,EAAE,EACnB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACtB,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1E,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAmC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACtF,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/agent/commands.d.ts
CHANGED
|
@@ -13,15 +13,18 @@ export interface ChatCommandDeps {
|
|
|
13
13
|
queuePendingNote(sessionKey: string, note: string): void;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
|
-
* Handles slash commands typed in chat (/new, /model, /status, /pet,
|
|
16
|
+
* Handles slash commands typed in chat (/new, /model, /status, /pet,
|
|
17
|
+
* /restore, /login).
|
|
17
18
|
* Wired to Channel.onCommand by the Agent.
|
|
18
19
|
*/
|
|
19
20
|
export declare class ChatCommandHandler {
|
|
20
21
|
private readonly deps;
|
|
21
22
|
private restoringConfig;
|
|
23
|
+
private readonly claudeLogin;
|
|
22
24
|
constructor(deps: ChatCommandDeps);
|
|
23
25
|
/** True once /restore has begun — the Agent drops inbound messages until restart. */
|
|
24
26
|
get isRestoring(): boolean;
|
|
27
|
+
stop(): void;
|
|
25
28
|
handle(channel: Channel, command: string, chatId: string, senderName: string, args?: string, senderId?: string): Promise<void>;
|
|
26
29
|
/**
|
|
27
30
|
* /summon pulls the owner's main dm: session into a group: subsequent group
|
|
@@ -31,6 +34,8 @@ export declare class ChatCommandHandler {
|
|
|
31
34
|
*/
|
|
32
35
|
private handleSummonCommand;
|
|
33
36
|
private persistModelOverride;
|
|
37
|
+
private handleClaudeLogin;
|
|
38
|
+
private scheduleRestart;
|
|
34
39
|
private restoreConfigAndRestart;
|
|
35
40
|
}
|
|
36
41
|
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/agent/commands.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/agent/commands.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAazD,iEAAiE;AACjE,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,uFAAuF;IACvF,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1D;AAED;;;;GAIG;AACH,qBAAa,kBAAkB;IAIjB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;gBAE3B,IAAI,EAAE,eAAe;IAElD,qFAAqF;IACrF,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,IAAI,IAAI;IAIN,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+JpI;;;;;OAKG;YACW,mBAAmB;IA8DjC,OAAO,CAAC,oBAAoB;YAed,iBAAiB;IAuE/B,OAAO,CAAC,eAAe;YAgBT,uBAAuB;CAwBtC"}
|
package/dist/agent/commands.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
-
import { copyFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { chmodSync, copyFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
3
|
import { dirname, join } from "node:path";
|
|
4
4
|
import { config, CONFIG_BACKUP_PATH, CONFIG_PATH, RESTART_REASON_FILE } from "../config.js";
|
|
5
5
|
import { backupFileIfExistsSync, writeJsonAtomicSync } from "../fs-utils.js";
|
|
@@ -8,18 +8,21 @@ import { MODEL_ALIASES, isLiteLlmProviderModel, modelHelpText, resolveModelName
|
|
|
8
8
|
import { CHATGPT_SUBSCRIPTION_DEFAULT_MODEL, CHATGPT_SUBSCRIPTION_MODE, isChatGptSubscriptionModel, liteLlmModeLabel, } from "../litellm.js";
|
|
9
9
|
import { log } from "../logger.js";
|
|
10
10
|
import { PetStore } from "../mcp/pet-store.js";
|
|
11
|
+
import { ClaudeLoginManager } from "./claude-login.js";
|
|
11
12
|
/** Back up ~/.tomo/config.json before a programmatic rewrite. */
|
|
12
13
|
export function backupConfigFile() {
|
|
13
14
|
mkdirSync(dirname(CONFIG_BACKUP_PATH), { recursive: true });
|
|
14
|
-
backupFileIfExistsSync(CONFIG_PATH, CONFIG_BACKUP_PATH);
|
|
15
|
+
backupFileIfExistsSync(CONFIG_PATH, CONFIG_BACKUP_PATH, { mode: 0o600 });
|
|
15
16
|
}
|
|
16
17
|
/**
|
|
17
|
-
* Handles slash commands typed in chat (/new, /model, /status, /pet,
|
|
18
|
+
* Handles slash commands typed in chat (/new, /model, /status, /pet,
|
|
19
|
+
* /restore, /login).
|
|
18
20
|
* Wired to Channel.onCommand by the Agent.
|
|
19
21
|
*/
|
|
20
22
|
export class ChatCommandHandler {
|
|
21
23
|
deps;
|
|
22
24
|
restoringConfig = false;
|
|
25
|
+
claudeLogin = new ClaudeLoginManager();
|
|
23
26
|
constructor(deps) {
|
|
24
27
|
this.deps = deps;
|
|
25
28
|
}
|
|
@@ -27,12 +30,21 @@ export class ChatCommandHandler {
|
|
|
27
30
|
get isRestoring() {
|
|
28
31
|
return this.restoringConfig;
|
|
29
32
|
}
|
|
33
|
+
stop() {
|
|
34
|
+
this.claudeLogin.stop();
|
|
35
|
+
}
|
|
30
36
|
async handle(channel, command, chatId, senderName, args, senderId) {
|
|
31
|
-
const { sessionKey: key } = this.deps.router.resolve(channel.name, chatId, false);
|
|
32
37
|
if (this.restoringConfig) {
|
|
33
38
|
await channel.send({ chatId, text: "Restore is already in progress. Restarting Tomo..." });
|
|
34
39
|
return;
|
|
35
40
|
}
|
|
41
|
+
// Check /login before resolving a session: a rejected group login must not
|
|
42
|
+
// create or mutate a conversation entry as a side effect.
|
|
43
|
+
if (command === "login") {
|
|
44
|
+
await this.handleClaudeLogin(channel, chatId, senderId, args);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const { sessionKey: key } = this.deps.router.resolve(channel.name, chatId, false);
|
|
36
48
|
if (command === "summon" || command === "dismiss") {
|
|
37
49
|
await this.handleSummonCommand(channel, command, chatId, senderName, senderId);
|
|
38
50
|
return;
|
|
@@ -221,7 +233,85 @@ export class ChatCommandHandler {
|
|
|
221
233
|
cfg.sessionModelOverrides = overrides;
|
|
222
234
|
mkdirSync(dirname(CONFIG_PATH), { recursive: true });
|
|
223
235
|
backupConfigFile();
|
|
224
|
-
writeJsonAtomicSync(CONFIG_PATH, cfg);
|
|
236
|
+
writeJsonAtomicSync(CONFIG_PATH, cfg, { mode: 0o600 });
|
|
237
|
+
}
|
|
238
|
+
async handleClaudeLogin(channel, chatId, senderId, args) {
|
|
239
|
+
const rawKey = `${channel.name}:${chatId}`;
|
|
240
|
+
if (isGroupSessionKey(rawKey)) {
|
|
241
|
+
await channel.send({ chatId, text: "/login is only available in a configured owner's private DM." });
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
const identity = senderId ? this.deps.router.identityForSender(channel.name, senderId) : undefined;
|
|
245
|
+
if (!identity) {
|
|
246
|
+
log.warn({ channel: channel.name, chatId }, "/login refused (sender is not a configured identity)");
|
|
247
|
+
await channel.send({ chatId, text: "Only a configured owner can refresh Claude login." });
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
const arg = args?.trim() ?? "";
|
|
251
|
+
if (arg.toLowerCase() === "cancel") {
|
|
252
|
+
const cancelled = this.claudeLogin.cancel(identity.name);
|
|
253
|
+
await channel.send({
|
|
254
|
+
chatId,
|
|
255
|
+
text: cancelled ? "Claude login cancelled." : "No Claude login is currently waiting.",
|
|
256
|
+
});
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
try {
|
|
260
|
+
if (!arg) {
|
|
261
|
+
const { url, reused } = await this.claudeLogin.start(identity.name);
|
|
262
|
+
await channel.send({
|
|
263
|
+
chatId,
|
|
264
|
+
text: [
|
|
265
|
+
reused ? "Claude login is already waiting." : "Claude login started.",
|
|
266
|
+
"",
|
|
267
|
+
url,
|
|
268
|
+
"",
|
|
269
|
+
"Authorize in your browser, then send the returned code here as:",
|
|
270
|
+
"/login <code>",
|
|
271
|
+
"",
|
|
272
|
+
"The request expires after 10 minutes. Use /login cancel to abort it.",
|
|
273
|
+
].join("\n"),
|
|
274
|
+
});
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
const completion = await this.claudeLogin.complete(identity.name, arg);
|
|
278
|
+
const reason = completion.verified
|
|
279
|
+
? "Claude login refreshed via owner DM"
|
|
280
|
+
: "Claude login refreshed via owner DM; verification probe failed";
|
|
281
|
+
mkdirSync(dirname(RESTART_REASON_FILE), { recursive: true });
|
|
282
|
+
writeFileSync(RESTART_REASON_FILE, reason, "utf-8");
|
|
283
|
+
await channel.send({
|
|
284
|
+
chatId,
|
|
285
|
+
text: completion.verified
|
|
286
|
+
? "Claude login verified. Restarting Tomo..."
|
|
287
|
+
: [
|
|
288
|
+
"[warning] Claude credentials were saved, but the verification probe failed. Restarting Tomo...",
|
|
289
|
+
completion.verificationError ? `\n${completion.verificationError}` : "",
|
|
290
|
+
].join(""),
|
|
291
|
+
});
|
|
292
|
+
this.scheduleRestart();
|
|
293
|
+
}
|
|
294
|
+
catch (err) {
|
|
295
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
296
|
+
log.warn({ err, identity: identity.name }, "Claude login command failed");
|
|
297
|
+
await channel.send({ chatId, text: `[error] Claude login failed: ${detail}` });
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
scheduleRestart() {
|
|
301
|
+
if (process.env.NODE_ENV === "test")
|
|
302
|
+
return;
|
|
303
|
+
setTimeout(() => {
|
|
304
|
+
const cli = process.argv[1];
|
|
305
|
+
if (!cli) {
|
|
306
|
+
process.kill(process.pid, "SIGTERM");
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
const child = spawn(process.execPath, [cli, "restart"], {
|
|
310
|
+
detached: true,
|
|
311
|
+
stdio: "ignore",
|
|
312
|
+
});
|
|
313
|
+
child.unref();
|
|
314
|
+
}, 100);
|
|
225
315
|
}
|
|
226
316
|
async restoreConfigAndRestart(channel, chatId) {
|
|
227
317
|
if (!existsSync(CONFIG_BACKUP_PATH)) {
|
|
@@ -231,25 +321,13 @@ export class ChatCommandHandler {
|
|
|
231
321
|
try {
|
|
232
322
|
mkdirSync(dirname(CONFIG_PATH), { recursive: true });
|
|
233
323
|
copyFileSync(CONFIG_BACKUP_PATH, CONFIG_PATH);
|
|
324
|
+
chmodSync(CONFIG_PATH, 0o600);
|
|
234
325
|
const reason = "Restored ~/.tomo/config.json from ~/.tomo/config.json.bak";
|
|
235
326
|
mkdirSync(dirname(RESTART_REASON_FILE), { recursive: true });
|
|
236
327
|
writeFileSync(RESTART_REASON_FILE, reason, "utf-8");
|
|
237
328
|
this.restoringConfig = true;
|
|
238
329
|
await channel.send({ chatId, text: "Restored config.json from config.json.bak. Restarting Tomo..." });
|
|
239
|
-
|
|
240
|
-
return;
|
|
241
|
-
setTimeout(() => {
|
|
242
|
-
const cli = process.argv[1];
|
|
243
|
-
if (!cli) {
|
|
244
|
-
process.kill(process.pid, "SIGTERM");
|
|
245
|
-
return;
|
|
246
|
-
}
|
|
247
|
-
const child = spawn(process.execPath, [cli, "restart"], {
|
|
248
|
-
detached: true,
|
|
249
|
-
stdio: "ignore",
|
|
250
|
-
});
|
|
251
|
-
child.unref();
|
|
252
|
-
}, 100);
|
|
330
|
+
this.scheduleRestart();
|
|
253
331
|
}
|
|
254
332
|
catch (err) {
|
|
255
333
|
const detail = err instanceof Error ? err.message : String(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/agent/commands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/agent/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -152,7 +152,8 @@ function buildSdkEnv(args) {
|
|
|
152
152
|
const litellm = config.litellm;
|
|
153
153
|
const useGateway = Boolean(litellm?.baseUrl)
|
|
154
154
|
&& (litellm.mode !== CHATGPT_SUBSCRIPTION_MODE || isChatGptSubscriptionModel(args.model));
|
|
155
|
-
|
|
155
|
+
const useDirectApiKey = !useGateway && config.auth.method === "api-key";
|
|
156
|
+
if (!args.disableAutoCompact && !useGateway && !useDirectApiKey)
|
|
156
157
|
return null;
|
|
157
158
|
// Note: SDK `env` fully replaces the child's env (not merged despite the
|
|
158
159
|
// d.ts claim), so we must spread process.env ourselves — otherwise the
|
|
@@ -160,6 +161,9 @@ function buildSdkEnv(args) {
|
|
|
160
161
|
const env = { ...process.env };
|
|
161
162
|
if (useGateway && litellm) {
|
|
162
163
|
env.ANTHROPIC_BASE_URL = litellm.baseUrl;
|
|
164
|
+
// Never forward a direct Anthropic credential inherited by the daemon to
|
|
165
|
+
// a gateway. Only the gateway's explicitly configured key belongs here.
|
|
166
|
+
delete env.ANTHROPIC_API_KEY;
|
|
163
167
|
if (litellm.apiKey) {
|
|
164
168
|
env.ANTHROPIC_API_KEY = litellm.apiKey;
|
|
165
169
|
}
|
|
@@ -169,6 +173,12 @@ function buildSdkEnv(args) {
|
|
|
169
173
|
// LiteLLM, a deliberate chatgpt-subscription bypass must scrub it so Claude
|
|
170
174
|
// models really go to Anthropic direct.
|
|
171
175
|
delete env.ANTHROPIC_BASE_URL;
|
|
176
|
+
if (useDirectApiKey && config.auth.apiKey) {
|
|
177
|
+
env.ANTHROPIC_API_KEY = config.auth.apiKey;
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
delete env.ANTHROPIC_API_KEY;
|
|
181
|
+
}
|
|
172
182
|
}
|
|
173
183
|
if (args.disableAutoCompact) {
|
|
174
184
|
env.DISABLE_AUTO_COMPACT = "1";
|