tokenmaxxing 1.0.0 → 1.0.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tokenmaxxing",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Automatic Claude Code account switching: pool multiple accounts and hot-swap when quota fills, resuming your session on the fresh account.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -1,8 +1,11 @@
1
1
  // `tokenmaxxing add --codex` - register an ADDITIONAL codex account. Runs
2
- // `codex login` inside a throwaway CODEX_HOME pinned to file-mode credential
3
- // storage (auto mode would keyring-namespace the login on macOS and leave
4
- // nothing harvestable), then parks the resulting auth.json under the token's
5
- // OWN identity and indexes it. The primary login is never touched.
2
+ // `codex login --device-auth` inside a throwaway CODEX_HOME pinned to
3
+ // file-mode credential storage (auto mode would keyring-namespace the login on
4
+ // macOS and leave nothing harvestable), then parks the resulting auth.json
5
+ // under the token's OWN identity and indexes it. The primary login is never
6
+ // touched. Device auth is the default (user decision 2026-07-20): the browser
7
+ // flow binds localhost on the machine running the command, so it dead-ends
8
+ // over ssh; the device code works from any browser.
6
9
 
7
10
  import { mkdirSync, rmSync } from "node:fs";
8
11
  import { join } from "node:path";
@@ -31,11 +34,11 @@ export async function cmdCodexAdd(): Promise<number> {
31
34
  writeFileAtomic(join(onboardDir, "config.toml"), 'cli_auth_credentials_store = "file"\n');
32
35
 
33
36
  console.log(c.cyan("Opening an isolated codex login - your primary login is untouched."));
34
- console.log(c.dim("Complete the browser sign-in with the account to add; the command exits once you're in."));
37
+ console.log(c.dim("Open the URL codex prints, enter the code, and sign in with the account to add; the command exits once you're in."));
35
38
  console.log();
36
39
 
37
40
  const savedTermios = saveTermios();
38
- const p = Bun.spawn([real, "login"], {
41
+ const p = Bun.spawn([real, "login", "--device-auth"], {
39
42
  stdin: "inherit",
40
43
  stdout: "inherit",
41
44
  stderr: "inherit",
package/src/cli/serve.ts CHANGED
@@ -54,14 +54,18 @@ const SERVE_USAGE = "usage: tokenmaxxing serve [setup | link <channel-id> <repo>
54
54
  * Scopes/events verified against docs.slack.dev 2026-07-18: a channel-thread
55
55
  * relay plus Slack's Agent messaging experience (agent_view + assistant:write
56
56
  * power the DM assistant surface and typing status; channel-thread streaming
57
- * works without them, verified live). Changing scopes on an existing app
58
- * requires reinstalling it to the workspace. */
57
+ * works without them, verified live). agent_view is an OBJECT whose required
58
+ * field is agent_description (max 300 chars; docs.slack.dev app-manifest
59
+ * reference, re-verified 2026-07-20) - a bare `agent_view: true` is rejected
60
+ * with "Must provide an object". Changing scopes on an existing app requires
61
+ * reinstalling it to the workspace. */
59
62
  const APP_MANIFEST = `display_information:
60
63
  name: tokenmaxxing
61
64
  description: bridges Slack threads to Claude Code sessions
62
65
 
63
66
  features:
64
- agent_view: true
67
+ agent_view:
68
+ agent_description: bridges Slack threads to Claude Code sessions
65
69
  bot_user:
66
70
  display_name: tokenmaxxing
67
71
  always_online: true