linkshell-cli 0.10.44 → 0.10.46

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 (41) hide show
  1. package/README.md +2 -0
  2. package/dist/cli/src/auth.js +4 -0
  3. package/dist/cli/src/auth.js.map +1 -1
  4. package/dist/cli/src/commands/desktop.d.ts +5 -5
  5. package/dist/cli/src/commands/desktop.js +67 -5
  6. package/dist/cli/src/commands/desktop.js.map +1 -1
  7. package/dist/cli/src/commands/login.js +10 -17
  8. package/dist/cli/src/commands/login.js.map +1 -1
  9. package/dist/cli/src/pro-membership.d.ts +16 -0
  10. package/dist/cli/src/pro-membership.js +91 -0
  11. package/dist/cli/src/pro-membership.js.map +1 -0
  12. package/dist/cli/tsconfig.tsbuildinfo +1 -1
  13. package/dist/client-core/src/pro-membership.d.ts +17 -0
  14. package/dist/client-core/src/pro-membership.js +107 -0
  15. package/dist/client-core/src/pro-membership.js.map +1 -0
  16. package/dist/host/src/drivers/acp/antigravity.js +9 -15
  17. package/dist/host/src/drivers/acp/antigravity.js.map +1 -1
  18. package/dist/host/src/drivers/acp/driver.d.ts +2 -0
  19. package/dist/host/src/drivers/acp/driver.js +18 -6
  20. package/dist/host/src/drivers/acp/driver.js.map +1 -1
  21. package/dist/host/src/drivers/claude/transcript.d.ts +6 -0
  22. package/dist/host/src/host.js +1 -1
  23. package/dist/host/src/host.js.map +1 -1
  24. package/dist/host/src/store.d.ts +4 -0
  25. package/dist/host/src/store.js +10 -0
  26. package/dist/host/src/store.js.map +1 -1
  27. package/dist/host/src/usage.d.ts +20 -5
  28. package/dist/host/src/usage.js +55 -3
  29. package/dist/host/src/usage.js.map +1 -1
  30. package/dist/wire/src/rpc.d.ts +190 -3
  31. package/dist/wire/src/updates.d.ts +68 -0
  32. package/dist/wire/src/updates.js +2 -0
  33. package/dist/wire/src/updates.js.map +1 -1
  34. package/dist/wire/src/usage.d.ts +46 -3
  35. package/dist/wire/src/usage.js +5 -1
  36. package/dist/wire/src/usage.js.map +1 -1
  37. package/package.json +4 -4
  38. package/src/auth.ts +3 -0
  39. package/src/commands/desktop.ts +60 -6
  40. package/src/commands/login.ts +7 -25
  41. package/src/pro-membership.ts +82 -0
@@ -2572,6 +2572,22 @@ export declare const sessionUpdateSchema: z.ZodDiscriminatedUnion<"sessionUpdate
2572
2572
  updatedAt?: string | null | undefined;
2573
2573
  }>, z.ZodObject<{
2574
2574
  sessionUpdate: z.ZodLiteral<"usage_update">;
2575
+ accounting: z.ZodOptional<z.ZodObject<{
2576
+ id: z.ZodString;
2577
+ scope: z.ZodEnum<["turn", "session"]>;
2578
+ model: z.ZodOptional<z.ZodString>;
2579
+ timestamp: z.ZodOptional<z.ZodNumber>;
2580
+ }, "strip", z.ZodTypeAny, {
2581
+ id: string;
2582
+ scope: "session" | "turn";
2583
+ model?: string | undefined;
2584
+ timestamp?: number | undefined;
2585
+ }, {
2586
+ id: string;
2587
+ scope: "session" | "turn";
2588
+ model?: string | undefined;
2589
+ timestamp?: number | undefined;
2590
+ }>>;
2575
2591
  usedTokens: z.ZodOptional<z.ZodNumber>;
2576
2592
  contextWindow: z.ZodOptional<z.ZodNumber>;
2577
2593
  cost: z.ZodOptional<z.ZodNullable<z.ZodObject<{
@@ -2616,6 +2632,12 @@ export declare const sessionUpdateSchema: z.ZodDiscriminatedUnion<"sessionUpdate
2616
2632
  cachedReadTokens?: number | null | undefined;
2617
2633
  cachedWriteTokens?: number | null | undefined;
2618
2634
  } | undefined;
2635
+ accounting?: {
2636
+ id: string;
2637
+ scope: "session" | "turn";
2638
+ model?: string | undefined;
2639
+ timestamp?: number | undefined;
2640
+ } | undefined;
2619
2641
  usedTokens?: number | undefined;
2620
2642
  contextWindow?: number | undefined;
2621
2643
  cost?: {
@@ -2632,6 +2654,12 @@ export declare const sessionUpdateSchema: z.ZodDiscriminatedUnion<"sessionUpdate
2632
2654
  cachedReadTokens?: number | null | undefined;
2633
2655
  cachedWriteTokens?: number | null | undefined;
2634
2656
  } | undefined;
2657
+ accounting?: {
2658
+ id: string;
2659
+ scope: "session" | "turn";
2660
+ model?: string | undefined;
2661
+ timestamp?: number | undefined;
2662
+ } | undefined;
2635
2663
  usedTokens?: number | undefined;
2636
2664
  contextWindow?: number | undefined;
2637
2665
  cost?: {
@@ -5851,6 +5879,22 @@ export declare const sessionEventSchema: z.ZodObject<{
5851
5879
  updatedAt?: string | null | undefined;
5852
5880
  }>, z.ZodObject<{
5853
5881
  sessionUpdate: z.ZodLiteral<"usage_update">;
5882
+ accounting: z.ZodOptional<z.ZodObject<{
5883
+ id: z.ZodString;
5884
+ scope: z.ZodEnum<["turn", "session"]>;
5885
+ model: z.ZodOptional<z.ZodString>;
5886
+ timestamp: z.ZodOptional<z.ZodNumber>;
5887
+ }, "strip", z.ZodTypeAny, {
5888
+ id: string;
5889
+ scope: "session" | "turn";
5890
+ model?: string | undefined;
5891
+ timestamp?: number | undefined;
5892
+ }, {
5893
+ id: string;
5894
+ scope: "session" | "turn";
5895
+ model?: string | undefined;
5896
+ timestamp?: number | undefined;
5897
+ }>>;
5854
5898
  usedTokens: z.ZodOptional<z.ZodNumber>;
5855
5899
  contextWindow: z.ZodOptional<z.ZodNumber>;
5856
5900
  cost: z.ZodOptional<z.ZodNullable<z.ZodObject<{
@@ -5895,6 +5939,12 @@ export declare const sessionEventSchema: z.ZodObject<{
5895
5939
  cachedReadTokens?: number | null | undefined;
5896
5940
  cachedWriteTokens?: number | null | undefined;
5897
5941
  } | undefined;
5942
+ accounting?: {
5943
+ id: string;
5944
+ scope: "session" | "turn";
5945
+ model?: string | undefined;
5946
+ timestamp?: number | undefined;
5947
+ } | undefined;
5898
5948
  usedTokens?: number | undefined;
5899
5949
  contextWindow?: number | undefined;
5900
5950
  cost?: {
@@ -5911,6 +5961,12 @@ export declare const sessionEventSchema: z.ZodObject<{
5911
5961
  cachedReadTokens?: number | null | undefined;
5912
5962
  cachedWriteTokens?: number | null | undefined;
5913
5963
  } | undefined;
5964
+ accounting?: {
5965
+ id: string;
5966
+ scope: "session" | "turn";
5967
+ model?: string | undefined;
5968
+ timestamp?: number | undefined;
5969
+ } | undefined;
5914
5970
  usedTokens?: number | undefined;
5915
5971
  contextWindow?: number | undefined;
5916
5972
  cost?: {
@@ -7547,6 +7603,12 @@ export declare const sessionEventSchema: z.ZodObject<{
7547
7603
  cachedReadTokens?: number | null | undefined;
7548
7604
  cachedWriteTokens?: number | null | undefined;
7549
7605
  } | undefined;
7606
+ accounting?: {
7607
+ id: string;
7608
+ scope: "session" | "turn";
7609
+ model?: string | undefined;
7610
+ timestamp?: number | undefined;
7611
+ } | undefined;
7550
7612
  usedTokens?: number | undefined;
7551
7613
  contextWindow?: number | undefined;
7552
7614
  cost?: {
@@ -8038,6 +8100,12 @@ export declare const sessionEventSchema: z.ZodObject<{
8038
8100
  cachedReadTokens?: number | null | undefined;
8039
8101
  cachedWriteTokens?: number | null | undefined;
8040
8102
  } | undefined;
8103
+ accounting?: {
8104
+ id: string;
8105
+ scope: "session" | "turn";
8106
+ model?: string | undefined;
8107
+ timestamp?: number | undefined;
8108
+ } | undefined;
8041
8109
  usedTokens?: number | undefined;
8042
8110
  contextWindow?: number | undefined;
8043
8111
  cost?: {
@@ -150,6 +150,8 @@ export const sessionUpdateSchema = z.discriminatedUnion("sessionUpdate", [
150
150
  }),
151
151
  z.object({
152
152
  sessionUpdate: z.literal("usage_update"),
153
+ // Only accounting-bearing updates are additive; context-window snapshots are not usage.
154
+ accounting: z.object({ id: z.string(), scope: z.enum(["turn", "session"]), model: z.string().optional(), timestamp: z.number().optional() }).optional(),
153
155
  usedTokens: z.number().optional(),
154
156
  contextWindow: z.number().optional(),
155
157
  cost: z.object({ amount: z.number(), currency: z.string() }).nullable().optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"updates.js","sourceRoot":"","sources":["../../../../wire/src/updates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"updates.js","sourceRoot":"","sources":["../../../../wire/src/updates.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { z } from "zod";
2
2
  export declare const usageQuerySchema: z.ZodObject<{
3
3
  days: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<7>, z.ZodLiteral<30>]>>;
4
- agent: z.ZodDefault<z.ZodEnum<["all", "codex", "claude"]>>;
4
+ agent: z.ZodDefault<z.ZodString>;
5
5
  }, "strip", z.ZodTypeAny, {
6
- agent: "all" | "codex" | "claude";
6
+ agent: string;
7
7
  days: 1 | 7 | 30;
8
8
  }, {
9
- agent?: "all" | "codex" | "claude" | undefined;
9
+ agent?: string | undefined;
10
10
  days?: 1 | 7 | 30 | undefined;
11
11
  }>;
12
12
  export declare const usageTotalsSchema: z.ZodObject<{
@@ -125,6 +125,31 @@ export declare const usageReportSchema: z.ZodObject<{
125
125
  cacheReadTokens: number;
126
126
  cacheWriteTokens: number;
127
127
  }>, "many">;
128
+ agents: z.ZodOptional<z.ZodArray<z.ZodObject<{
129
+ id: z.ZodString;
130
+ label: z.ZodString;
131
+ source: z.ZodEnum<["native", "acp"]>;
132
+ status: z.ZodEnum<["available", "no_data"]>;
133
+ records: z.ZodNumber;
134
+ totalTokens: z.ZodNumber;
135
+ note: z.ZodString;
136
+ }, "strip", z.ZodTypeAny, {
137
+ status: "available" | "no_data";
138
+ id: string;
139
+ totalTokens: number;
140
+ label: string;
141
+ source: "acp" | "native";
142
+ records: number;
143
+ note: string;
144
+ }, {
145
+ status: "available" | "no_data";
146
+ id: string;
147
+ totalTokens: number;
148
+ label: string;
149
+ source: "acp" | "native";
150
+ records: number;
151
+ note: string;
152
+ }>, "many">>;
128
153
  warnings: z.ZodArray<z.ZodString, "many">;
129
154
  }, "strip", z.ZodTypeAny, {
130
155
  agent: string;
@@ -162,6 +187,15 @@ export declare const usageReportSchema: z.ZodObject<{
162
187
  cacheWriteTokens: number;
163
188
  }[];
164
189
  warnings: string[];
190
+ agents?: {
191
+ status: "available" | "no_data";
192
+ id: string;
193
+ totalTokens: number;
194
+ label: string;
195
+ source: "acp" | "native";
196
+ records: number;
197
+ note: string;
198
+ }[] | undefined;
165
199
  }, {
166
200
  agent: string;
167
201
  models: {
@@ -198,6 +232,15 @@ export declare const usageReportSchema: z.ZodObject<{
198
232
  cacheWriteTokens: number;
199
233
  }[];
200
234
  warnings: string[];
235
+ agents?: {
236
+ status: "available" | "no_data";
237
+ id: string;
238
+ totalTokens: number;
239
+ label: string;
240
+ source: "acp" | "native";
241
+ records: number;
242
+ note: string;
243
+ }[] | undefined;
201
244
  }>;
202
245
  export type UsageQuery = z.infer<typeof usageQuerySchema>;
203
246
  export type UsageTotals = z.infer<typeof usageTotalsSchema>;
@@ -1,7 +1,7 @@
1
1
  import { z } from "zod";
2
2
  export const usageQuerySchema = z.object({
3
3
  days: z.union([z.literal(1), z.literal(7), z.literal(30)]).default(7),
4
- agent: z.enum(["all", "codex", "claude"]).default("all"),
4
+ agent: z.string().min(1).max(128).default("all"),
5
5
  });
6
6
  export const usageTotalsSchema = z.object({
7
7
  records: z.number(), sessions: z.number(), inputTokens: z.number(), outputTokens: z.number(),
@@ -12,6 +12,10 @@ export const usageReportSchema = z.object({
12
12
  totals: usageTotalsSchema,
13
13
  daily: z.array(usageTotalsSchema.extend({ date: z.string() })),
14
14
  models: z.array(usageTotalsSchema.extend({ agent: z.string(), model: z.string() })),
15
+ agents: z.array(z.object({
16
+ id: z.string(), label: z.string(), source: z.enum(["native", "acp"]),
17
+ status: z.enum(["available", "no_data"]), records: z.number(), totalTokens: z.number(), note: z.string(),
18
+ })).optional(),
15
19
  warnings: z.array(z.string()),
16
20
  });
17
21
  //# sourceMappingURL=usage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../../wire/src/usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;CACzD,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IAC5F,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;CACnF,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IAClF,MAAM,EAAE,iBAAiB;IACzB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9D,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnF,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAC"}
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../../wire/src/usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;CACjD,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IAC5F,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;CACnF,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IAClF,MAAM,EAAE,iBAAiB;IACzB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9D,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnF,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACvB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACpE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;KACzG,CAAC,CAAC,CAAC,QAAQ,EAAE;IACd,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linkshell-cli",
3
- "version": "0.10.44",
3
+ "version": "0.10.46",
4
4
  "description": "Follow, steer and approve the coding agents on your computer (Claude Code, Codex, Gemini, Copilot and more) from your phone",
5
5
  "type": "module",
6
6
  "main": "dist/cli/src/index.js",
@@ -33,9 +33,9 @@
33
33
  "commander": "^13.1.0",
34
34
  "node-pty": "^1.1.0",
35
35
  "qrcode-terminal": "^0.12.0",
36
- "@linkshell/gateway": "0.6.21",
37
- "@linkshell/wire": "0.2.15",
38
- "@linkshell/host": "0.4.42"
36
+ "@linkshell/gateway": "0.6.23",
37
+ "@linkshell/host": "0.4.44",
38
+ "@linkshell/wire": "0.2.16"
39
39
  },
40
40
  "devDependencies": {
41
41
  "tsx": "^4.19.3",
package/src/auth.ts CHANGED
@@ -91,6 +91,9 @@ export async function refreshAccessToken(): Promise<AuthTokens | null> {
91
91
  userId: body.user.id,
92
92
  email: body.user.email ?? auth.email,
93
93
  };
94
+ // A login or logout may finish while the refresh is in flight.
95
+ const current = loadAuth();
96
+ if (tokens.userId !== auth.userId || current?.userId !== auth.userId || current.refreshToken !== auth.refreshToken) return null;
94
97
  saveAuth(tokens);
95
98
  return tokens;
96
99
  } catch {
@@ -10,17 +10,22 @@ import { prepareDesktopUpdate, recoverDesktopUpdate } from "./desktop-update.js"
10
10
  import { sep } from "node:path";
11
11
  import { ensureHostRunning, silenceSqliteWarning, withRunningHost } from "./host.js";
12
12
  import { linkshellDir, readHostLaunch, readHostOwner, readPid, stopDaemonAndWait } from "../utils/daemon.js";
13
+ import { cachedMembership, redeemDesktopPro, refreshMembership } from "../pro-membership.js";
13
14
 
14
15
  export function installationSource(path: string): "homebrew" | "npm" {
15
16
  return path.includes(`${sep}Cellar${sep}linkshell${sep}`) ? "homebrew" : "npm";
16
17
  }
17
18
 
19
+ function desktopAccount() {
20
+ const auth = loadAuth();
21
+ return auth?.userId ? { state: "signed-in", email: auth.email, userId: auth.userId, ...cachedMembership(auth.userId) } : { state: "signed-out" };
22
+ }
23
+
18
24
  /** A versioned, read-only snapshot. Missing sections stay unknown, never healthy. */
19
25
  export async function desktopSnapshot(version: string) {
20
26
  let executable = process.argv[1]!;
21
27
  try { executable = realpathSync(executable); } catch { /* Retain the launch path for diagnosis. */ }
22
- const auth = loadAuth();
23
- const account = auth?.userId ? { state: "signed-in", email: auth.email, userId: auth.userId } : { state: "signed-out" };
28
+ const account = desktopAccount();
24
29
  const base = { account, schema: 1, cliVersion: version, home: linkshellDir(), source: standaloneBundle() ? "standalone" : installationSource(executable), executable, hostOwner: readPid("host") ? readHostOwner(readPid("host")!) ?? "external" : "none", appBundle: standaloneBundle() };
25
30
  const result = await withRunningHost(async (client) => {
26
31
  const machine = await client.call("machine.info", {}, 5000);
@@ -33,13 +38,62 @@ export async function desktopSnapshot(version: string) {
33
38
  return result ? { ...base, status: "running", ...result } : { ...base, status: readPid("host") ? "unreachable" : "stopped" };
34
39
  }
35
40
 
36
- export async function runDesktop(version: string, action: string): Promise<void> {
41
+ async function redemptionInput(input: AsyncIterable<string | Buffer>): Promise<{ code: string; userId: string }> {
42
+ const chunks: Buffer[] = [];
43
+ let length = 0;
44
+ for await (const chunk of input) {
45
+ const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
46
+ length += buffer.length;
47
+ if (length > 4096) throw new Error("激活码内容过长,请检查后重试");
48
+ chunks.push(buffer);
49
+ }
50
+ try {
51
+ const value = JSON.parse(Buffer.concat(chunks).toString("utf8"));
52
+ if (typeof value?.code === "string" && typeof value?.userId === "string" && value.userId.trim()) return { code: value.code, userId: value.userId };
53
+ } catch { /* Never echo an input that contains the activation code. */ }
54
+ throw new Error("激活码请求无效,请刷新账号后重试");
55
+ }
56
+
57
+ export async function runDesktop(version: string, action: string, input: AsyncIterable<string | Buffer> = process.stdin): Promise<void> {
37
58
  silenceSqliteWarning();
38
59
  try {
60
+ if (action === "redeem-pro") {
61
+ const { code, userId } = await redemptionInput(input);
62
+ const result = await redeemDesktopPro(code, userId);
63
+ if (loadAuth()?.userId === userId) {
64
+ try {
65
+ const gateway = await refreshGateway(15_000);
66
+ if (gateway && gateway.status !== "online" && gateway.status !== "off") result.accountWarning ??= "兑换已成功,网关尚未连接,请稍后重新连接";
67
+ } catch {
68
+ result.accountWarning ??= "兑换已成功,本机服务暂未刷新,请稍后重新连接网关";
69
+ }
70
+ }
71
+ // A host query failing cannot turn a confirmed redemption into a failed redemption.
72
+ const snapshot = await desktopSnapshot(version).catch(() => {
73
+ result.accountWarning ??= "兑换已成功,本机服务状态暂时无法读取,请稍后刷新";
74
+ return { schema: 1, cliVersion: version, status: "unknown", account: desktopAccount() };
75
+ });
76
+ snapshot.account = desktopAccount();
77
+ if (snapshot.account.state === "signed-in" && "userId" in snapshot.account && snapshot.account.userId === userId) Object.assign(snapshot.account, { plan: "pro", planExpiresAt: result.redemption.planExpiresAt });
78
+ else result.accountWarning = "兑换已成功,登录账号已变更,请切回兑换时的账号查看会员状态";
79
+ process.stdout.write(`${JSON.stringify({ ...snapshot, ...result })}\n`);
80
+ return;
81
+ }
82
+ if (action === "account-refresh") await refreshMembership();
83
+ else if (action === "pair") {
84
+ const result = await withRunningHost(async client => {
85
+ const gateway = await client.call("gateway.status", {});
86
+ if (gateway.status !== "online") throw new Error("请先连接网关。官方网关需要登录 Pro 账号;自建网关可以免登录配对。");
87
+ return client.call("pairing.start", {}, 20_000);
88
+ });
89
+ if (!result) throw new Error("请先启动本机服务");
90
+ process.stdout.write(`${JSON.stringify(result)}\n`);
91
+ return;
92
+ }
39
93
  if (action.startsWith("usage-")) {
40
- const match = /^usage-(1|7|30)-(all|codex|claude)$/.exec(action);
94
+ const match = /^usage-(1|7|30)-(.{1,128})$/.exec(action);
41
95
  if (!match) throw new Error("无效的用量筛选条件");
42
- const result = await withRunningHost(client => client.call("usage.summary", { days: Number(match[1]) as 1 | 7 | 30, agent: match[2] as "all" | "codex" | "claude" }, 120_000));
96
+ const result = await withRunningHost(client => client.call("usage.summary", { days: Number(match[1]) as 1 | 7 | 30, agent: match[2]! }, 120_000));
43
97
  if (!result) throw new Error("请先启动本机服务");
44
98
  process.stdout.write(`${JSON.stringify(result)}\n`);
45
99
  return;
@@ -67,7 +121,7 @@ export async function runDesktop(version: string, action: string): Promise<void>
67
121
  const env = { ...process.env, ...(pid ? readHostLaunch(pid) : {}) };
68
122
  await stopDaemonAndWait("host", 30_000, pid ?? undefined);
69
123
  if (action === "restart") await ensureHostRunning(env);
70
- } else if (action !== "snapshot") throw new Error("Unknown desktop action");
124
+ } else if (action !== "snapshot" && action !== "account-refresh") throw new Error("Unknown desktop action");
71
125
  process.stdout.write(`${JSON.stringify(await desktopSnapshot(version))}\n`);
72
126
  } catch (error) {
73
127
  process.stdout.write(`${JSON.stringify({ schema: 1, status: "unknown", error: error instanceof Error ? error.message : String(error) })}\n`);
@@ -2,6 +2,8 @@ import * as http from "node:http";
2
2
  import { execSync } from "node:child_process";
3
3
  import { saveAuth, SUPABASE_URL, SUPABASE_ANON_KEY } from "../auth.js";
4
4
  import type { AuthTokens } from "../auth.js";
5
+ import { cacheMembership, type DesktopMembership } from "../pro-membership.js";
6
+ import { fetchProMembership } from "../../../client-core/src/pro-membership.js";
5
7
 
6
8
  const ITOOL_AUTH_URL = "https://itool.tech/en/auth/linkshell";
7
9
 
@@ -76,6 +78,7 @@ export async function runLogin(): Promise<LoginResult | null> {
76
78
  let userId = "";
77
79
  let email = "";
78
80
  let plan = "free";
81
+ let membership: DesktopMembership = { plan: "unknown", planExpiresAt: null };
79
82
  try {
80
83
  const userRes = await fetch(`${SUPABASE_URL}/auth/v1/user`, {
81
84
  headers: {
@@ -92,31 +95,9 @@ export async function runLogin(): Promise<LoginResult | null> {
92
95
  userId = user.id;
93
96
  email = user.email ?? "";
94
97
 
95
- // Check subscription from profiles table
96
- const profileRes = await fetch(
97
- `${SUPABASE_URL}/rest/v1/profiles?id=eq.${userId}&select=plan,plan_expires_at&limit=1`,
98
- {
99
- headers: {
100
- Authorization: `Bearer ${accessToken}`,
101
- apikey: SUPABASE_ANON_KEY,
102
- },
103
- signal: AbortSignal.timeout(5_000),
104
- },
105
- );
106
- if (profileRes.ok) {
107
- const profiles = (await profileRes.json()) as {
108
- plan: string;
109
- plan_expires_at: string | null;
110
- }[];
111
- if (
112
- profiles.length > 0 &&
113
- profiles[0]!.plan === "pro" &&
114
- profiles[0]!.plan_expires_at &&
115
- new Date(profiles[0]!.plan_expires_at) > new Date()
116
- ) {
117
- plan = "pro";
118
- }
119
- }
98
+ const profile = await fetchProMembership({ userId, accessToken, supabaseUrl: SUPABASE_URL, anonKey: SUPABASE_ANON_KEY });
99
+ plan = profile.plan;
100
+ membership = { plan: profile.plan, planExpiresAt: profile.expiresAt ?? null };
120
101
  }
121
102
  } catch {}
122
103
 
@@ -134,6 +115,7 @@ export async function runLogin(): Promise<LoginResult | null> {
134
115
  email,
135
116
  };
136
117
  saveAuth(tokens);
118
+ try { cacheMembership(userId, membership); } catch { /* A cache write cannot invalidate a completed login. */ }
137
119
 
138
120
  res.writeHead(200);
139
121
  res.end("ok");
@@ -0,0 +1,82 @@
1
+ import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { fetchProMembership, redeemProCode } from "../../client-core/src/pro-membership.js";
4
+ import { getValidToken, loadAuth, SUPABASE_ANON_KEY, SUPABASE_URL } from "./auth.js";
5
+ import { linkshellDir } from "./utils/daemon.js";
6
+
7
+ export interface DesktopMembership {
8
+ plan: "pro" | "free" | "unknown";
9
+ planExpiresAt: string | null;
10
+ }
11
+
12
+ const unknownMembership: DesktopMembership = { plan: "unknown", planExpiresAt: null };
13
+ const changedAccount = "登录账号已变更,请刷新账号后重试";
14
+ const cachePath = () => join(linkshellDir(), "account-pro.json");
15
+
16
+ /** Snapshot polling stays offline; the dashboard refreshes this account-scoped cache separately. */
17
+ export function cachedMembership(userId: string): DesktopMembership {
18
+ try {
19
+ const value = JSON.parse(readFileSync(cachePath(), "utf8"));
20
+ if (value.userId !== userId || !["pro", "free", "unknown"].includes(value.plan)) return { ...unknownMembership };
21
+ const expiry = typeof value.planExpiresAt === "string" && Number.isFinite(Date.parse(value.planExpiresAt)) ? value.planExpiresAt : null;
22
+ if (value.plan === "pro" && !expiry) return { ...unknownMembership };
23
+ return { plan: value.plan === "pro" ? expiry && Date.parse(expiry) > Date.now() ? "pro" : "free" : value.plan, planExpiresAt: expiry };
24
+ } catch {
25
+ return { ...unknownMembership };
26
+ }
27
+ }
28
+
29
+ export function cacheMembership(userId: string, membership: DesktopMembership, observedAt = Date.now()): void {
30
+ try {
31
+ const previous = JSON.parse(readFileSync(cachePath(), "utf8"));
32
+ // A profile request begun before redemption cannot replace its confirmed result.
33
+ if (previous.userId === userId && previous.observedAt > observedAt) return;
34
+ } catch { /* There may not be a prior account observation. */ }
35
+ mkdirSync(linkshellDir(), { recursive: true });
36
+ writeFileSync(cachePath(), JSON.stringify({ userId, ...membership, observedAt }) + "\n", { encoding: "utf8", mode: 0o600 });
37
+ }
38
+
39
+ async function accountToken(expectedUserId?: string): Promise<{ userId: string; accessToken: string }> {
40
+ const auth = loadAuth();
41
+ if (!auth?.userId) throw new Error("请先登录账号");
42
+ if (expectedUserId !== undefined && auth.userId !== expectedUserId) throw new Error(changedAccount);
43
+ const accessToken = await getValidToken();
44
+ const current = loadAuth();
45
+ if (current?.userId !== auth.userId) throw new Error(changedAccount);
46
+ if (!accessToken || current.accessToken !== accessToken) throw new Error("登录已失效,请重新登录后再试");
47
+ return { userId: auth.userId, accessToken };
48
+ }
49
+
50
+ export async function refreshMembership(): Promise<DesktopMembership> {
51
+ const userId = loadAuth()?.userId;
52
+ const observedAt = Date.now();
53
+ try {
54
+ const account = await accountToken(userId);
55
+ const membership = await fetchProMembership({ ...account, supabaseUrl: SUPABASE_URL, anonKey: SUPABASE_ANON_KEY });
56
+ if (loadAuth()?.userId !== account.userId) throw new Error(changedAccount);
57
+ const result: DesktopMembership = { plan: membership.plan, planExpiresAt: membership.expiresAt ?? null };
58
+ cacheMembership(account.userId, result, observedAt);
59
+ return result;
60
+ } catch (error) {
61
+ if (userId && loadAuth()?.userId === userId) {
62
+ try { cacheMembership(userId, unknownMembership, observedAt); } catch { /* Preserve the request's error. */ }
63
+ }
64
+ throw error;
65
+ }
66
+ }
67
+
68
+ export async function redeemDesktopPro(code: string, userId: string) {
69
+ if (!code.trim()) throw new Error("请输入激活码");
70
+ if (Buffer.byteLength(code, "utf8") > 512) throw new Error("激活码内容过长,请检查后重试");
71
+ const account = await accountToken(userId);
72
+ const redeemed = await redeemProCode(account.accessToken, code);
73
+ const redemption = { userId, idempotent: redeemed.idempotent, planExpiresAt: redeemed.expiresAt };
74
+ let accountWarning: string | undefined;
75
+ try {
76
+ if (loadAuth()?.userId === userId) cacheMembership(userId, { plan: "pro", planExpiresAt: redeemed.expiresAt });
77
+ } catch {
78
+ accountWarning = "兑换已成功,会员状态暂未保存,请刷新会员状态";
79
+ }
80
+ if (loadAuth()?.userId !== userId) accountWarning = "兑换已成功,登录账号已变更,请切回兑换时的账号查看会员状态";
81
+ return { redemption, accountWarning };
82
+ }