@ccpocket-base-auth/bridge 1.26.0

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 (89) hide show
  1. package/README.md +67 -0
  2. package/dist/archive-store.d.ts +28 -0
  3. package/dist/archive-store.js +68 -0
  4. package/dist/archive-store.js.map +1 -0
  5. package/dist/cli.d.ts +2 -0
  6. package/dist/cli.js +82 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/codex-process.d.ts +171 -0
  9. package/dist/codex-process.js +1928 -0
  10. package/dist/codex-process.js.map +1 -0
  11. package/dist/debug-trace-store.d.ts +15 -0
  12. package/dist/debug-trace-store.js +78 -0
  13. package/dist/debug-trace-store.js.map +1 -0
  14. package/dist/doctor.d.ts +58 -0
  15. package/dist/doctor.js +663 -0
  16. package/dist/doctor.js.map +1 -0
  17. package/dist/firebase-auth.d.ts +35 -0
  18. package/dist/firebase-auth.js +132 -0
  19. package/dist/firebase-auth.js.map +1 -0
  20. package/dist/gallery-store.d.ts +67 -0
  21. package/dist/gallery-store.js +333 -0
  22. package/dist/gallery-store.js.map +1 -0
  23. package/dist/image-store.d.ts +23 -0
  24. package/dist/image-store.js +142 -0
  25. package/dist/image-store.js.map +1 -0
  26. package/dist/index.d.ts +1 -0
  27. package/dist/index.js +191 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/mdns.d.ts +7 -0
  30. package/dist/mdns.js +49 -0
  31. package/dist/mdns.js.map +1 -0
  32. package/dist/parser.d.ts +465 -0
  33. package/dist/parser.js +251 -0
  34. package/dist/parser.js.map +1 -0
  35. package/dist/project-history.d.ts +10 -0
  36. package/dist/project-history.js +73 -0
  37. package/dist/project-history.js.map +1 -0
  38. package/dist/prompt-history-backup.d.ts +15 -0
  39. package/dist/prompt-history-backup.js +46 -0
  40. package/dist/prompt-history-backup.js.map +1 -0
  41. package/dist/proxy.d.ts +15 -0
  42. package/dist/proxy.js +95 -0
  43. package/dist/proxy.js.map +1 -0
  44. package/dist/push-i18n.d.ts +7 -0
  45. package/dist/push-i18n.js +75 -0
  46. package/dist/push-i18n.js.map +1 -0
  47. package/dist/push-relay.d.ts +29 -0
  48. package/dist/push-relay.js +70 -0
  49. package/dist/push-relay.js.map +1 -0
  50. package/dist/recording-store.d.ts +51 -0
  51. package/dist/recording-store.js +158 -0
  52. package/dist/recording-store.js.map +1 -0
  53. package/dist/screenshot.d.ts +28 -0
  54. package/dist/screenshot.js +98 -0
  55. package/dist/screenshot.js.map +1 -0
  56. package/dist/sdk-process.d.ts +180 -0
  57. package/dist/sdk-process.js +937 -0
  58. package/dist/sdk-process.js.map +1 -0
  59. package/dist/session.d.ts +142 -0
  60. package/dist/session.js +615 -0
  61. package/dist/session.js.map +1 -0
  62. package/dist/sessions-index.d.ts +128 -0
  63. package/dist/sessions-index.js +1767 -0
  64. package/dist/sessions-index.js.map +1 -0
  65. package/dist/setup-launchd.d.ts +8 -0
  66. package/dist/setup-launchd.js +109 -0
  67. package/dist/setup-launchd.js.map +1 -0
  68. package/dist/setup-systemd.d.ts +8 -0
  69. package/dist/setup-systemd.js +118 -0
  70. package/dist/setup-systemd.js.map +1 -0
  71. package/dist/startup-info.d.ts +8 -0
  72. package/dist/startup-info.js +92 -0
  73. package/dist/startup-info.js.map +1 -0
  74. package/dist/usage.d.ts +69 -0
  75. package/dist/usage.js +545 -0
  76. package/dist/usage.js.map +1 -0
  77. package/dist/version.d.ts +13 -0
  78. package/dist/version.js +43 -0
  79. package/dist/version.js.map +1 -0
  80. package/dist/websocket.d.ts +127 -0
  81. package/dist/websocket.js +2482 -0
  82. package/dist/websocket.js.map +1 -0
  83. package/dist/worktree-store.d.ts +25 -0
  84. package/dist/worktree-store.js +59 -0
  85. package/dist/worktree-store.js.map +1 -0
  86. package/dist/worktree.d.ts +47 -0
  87. package/dist/worktree.js +313 -0
  88. package/dist/worktree.js.map +1 -0
  89. package/package.json +68 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare class ProjectHistory {
2
+ private projects;
3
+ private readonly filePath;
4
+ constructor(filePath?: string);
5
+ init(): Promise<void>;
6
+ addProject(path: string): void;
7
+ getProjects(): string[];
8
+ removeProject(path: string): void;
9
+ private saveIndex;
10
+ }
@@ -0,0 +1,73 @@
1
+ import { readFile, writeFile, mkdir } from "node:fs/promises";
2
+ import { join, dirname } from "node:path";
3
+ import { homedir } from "node:os";
4
+ import { normalizeWorktreePath } from "./sessions-index.js";
5
+ const DEFAULT_HISTORY_FILE = join(homedir(), ".ccpocket", "project-history.json");
6
+ const MAX_PROJECTS = 20;
7
+ /** Minimum path depth to be considered a valid project path (e.g. /Users/name/project = 3). */
8
+ const MIN_PATH_SEGMENTS = 3;
9
+ function isValidProjectPath(path) {
10
+ if (!path.startsWith("/"))
11
+ return false;
12
+ const segments = path.split("/").filter(Boolean);
13
+ return segments.length >= MIN_PATH_SEGMENTS;
14
+ }
15
+ export class ProjectHistory {
16
+ projects = [];
17
+ filePath;
18
+ constructor(filePath) {
19
+ this.filePath = filePath ?? DEFAULT_HISTORY_FILE;
20
+ }
21
+ async init() {
22
+ await mkdir(dirname(this.filePath), { recursive: true });
23
+ try {
24
+ const data = await readFile(this.filePath, "utf-8");
25
+ const parsed = JSON.parse(data);
26
+ if (Array.isArray(parsed)) {
27
+ const raw = parsed.filter((p) => typeof p === "string");
28
+ // Normalize worktree paths and deduplicate (keep first occurrence)
29
+ const seen = new Set();
30
+ this.projects = raw
31
+ .map(normalizeWorktreePath)
32
+ .filter(isValidProjectPath)
33
+ .filter((p) => seen.has(p) ? false : (seen.add(p), true));
34
+ // Persist cleaned data if invalid entries were removed
35
+ if (this.projects.length < raw.length) {
36
+ this.saveIndex().catch(() => { });
37
+ }
38
+ }
39
+ }
40
+ catch {
41
+ // File doesn't exist or is corrupt — start fresh
42
+ this.projects = [];
43
+ }
44
+ }
45
+ addProject(path) {
46
+ const normalized = normalizeWorktreePath(path);
47
+ if (!isValidProjectPath(normalized))
48
+ return;
49
+ // Remove existing entry (if any) and add to front
50
+ this.projects = this.projects.filter((p) => p !== normalized);
51
+ this.projects.unshift(normalized);
52
+ // Enforce max limit
53
+ if (this.projects.length > MAX_PROJECTS) {
54
+ this.projects = this.projects.slice(0, MAX_PROJECTS);
55
+ }
56
+ this.saveIndex().catch((err) => {
57
+ console.error("[project-history] Failed to save:", err);
58
+ });
59
+ }
60
+ getProjects() {
61
+ return [...this.projects];
62
+ }
63
+ removeProject(path) {
64
+ this.projects = this.projects.filter((p) => p !== path);
65
+ this.saveIndex().catch((err) => {
66
+ console.error("[project-history] Failed to save:", err);
67
+ });
68
+ }
69
+ async saveIndex() {
70
+ await writeFile(this.filePath, JSON.stringify(this.projects, null, 2), "utf-8");
71
+ }
72
+ }
73
+ //# sourceMappingURL=project-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-history.js","sourceRoot":"","sources":["../src/project-history.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export interface BackupMeta {
2
+ appVersion: string;
3
+ dbVersion: number;
4
+ backedUpAt: string;
5
+ sizeBytes: number;
6
+ }
7
+ export declare class PromptHistoryBackupStore {
8
+ init(): Promise<void>;
9
+ save(data: Buffer, appVersion: string, dbVersion: number): Promise<BackupMeta>;
10
+ load(): Promise<{
11
+ data: Buffer;
12
+ meta: BackupMeta;
13
+ } | null>;
14
+ getMeta(): Promise<BackupMeta | null>;
15
+ }
@@ -0,0 +1,46 @@
1
+ import { readFile, writeFile, mkdir } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { homedir } from "node:os";
4
+ const BACKUP_DIR = join(homedir(), ".ccpocket", "prompt-history-backup");
5
+ const BACKUP_FILE = join(BACKUP_DIR, "backup.db");
6
+ const META_FILE = join(BACKUP_DIR, "meta.json");
7
+ export class PromptHistoryBackupStore {
8
+ async init() {
9
+ await mkdir(BACKUP_DIR, { recursive: true });
10
+ }
11
+ async save(data, appVersion, dbVersion) {
12
+ await mkdir(BACKUP_DIR, { recursive: true });
13
+ await writeFile(BACKUP_FILE, data);
14
+ const meta = {
15
+ appVersion,
16
+ dbVersion,
17
+ backedUpAt: new Date().toISOString(),
18
+ sizeBytes: data.length,
19
+ };
20
+ await writeFile(META_FILE, JSON.stringify(meta, null, 2), "utf-8");
21
+ return meta;
22
+ }
23
+ async load() {
24
+ try {
25
+ const [data, metaRaw] = await Promise.all([
26
+ readFile(BACKUP_FILE),
27
+ readFile(META_FILE, "utf-8"),
28
+ ]);
29
+ const meta = JSON.parse(metaRaw);
30
+ return { data, meta };
31
+ }
32
+ catch {
33
+ return null;
34
+ }
35
+ }
36
+ async getMeta() {
37
+ try {
38
+ const metaRaw = await readFile(META_FILE, "utf-8");
39
+ return JSON.parse(metaRaw);
40
+ }
41
+ catch {
42
+ return null;
43
+ }
44
+ }
45
+ }
46
+ //# sourceMappingURL=prompt-history-backup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-history-backup.js","sourceRoot":"","sources":["../src/prompt-history-backup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AASlC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAC;AACzE,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAEhD,MAAM,OAAO,wBAAwB;IACnC,KAAK,CAAC,IAAI;QACR,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,UAAkB,EAAE,SAAiB;QAC5D,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACnC,MAAM,IAAI,GAAe;YACvB,UAAU;YACV,SAAS;YACT,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,SAAS,EAAE,IAAI,CAAC,MAAM;SACvB,CAAC;QACF,MAAM,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACxC,QAAQ,CAAC,WAAW,CAAC;gBACrB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;aAC7B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAe,CAAC;YAC/C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAe,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Global proxy support for Bridge Server fetch() calls.
3
+ *
4
+ * Reads HTTPS_PROXY / HTTP_PROXY / ALL_PROXY and configures the
5
+ * Node.js global fetch dispatcher via undici.
6
+ *
7
+ * Supported protocols:
8
+ * http:// → undici ProxyAgent
9
+ * https:// → undici ProxyAgent
10
+ * socks5:// → SOCKS5 tunnel via undici Agent + socks
11
+ * socks4:// → SOCKS4 tunnel via undici Agent + socks
12
+ *
13
+ * Call setupProxy() once before any fetch() — typically in index.ts / cli.ts.
14
+ */
15
+ export declare function setupProxy(): string | undefined;
package/dist/proxy.js ADDED
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Global proxy support for Bridge Server fetch() calls.
3
+ *
4
+ * Reads HTTPS_PROXY / HTTP_PROXY / ALL_PROXY and configures the
5
+ * Node.js global fetch dispatcher via undici.
6
+ *
7
+ * Supported protocols:
8
+ * http:// → undici ProxyAgent
9
+ * https:// → undici ProxyAgent
10
+ * socks5:// → SOCKS5 tunnel via undici Agent + socks
11
+ * socks4:// → SOCKS4 tunnel via undici Agent + socks
12
+ *
13
+ * Call setupProxy() once before any fetch() — typically in index.ts / cli.ts.
14
+ */
15
+ import { setGlobalDispatcher, ProxyAgent, Agent } from "undici";
16
+ import { SocksClient } from "socks";
17
+ import { connect as tlsConnect } from "node:tls";
18
+ function getProxyUrl() {
19
+ return (process.env.HTTPS_PROXY ||
20
+ process.env.https_proxy ||
21
+ process.env.HTTP_PROXY ||
22
+ process.env.http_proxy ||
23
+ process.env.ALL_PROXY ||
24
+ process.env.all_proxy);
25
+ }
26
+ export function setupProxy() {
27
+ const proxyUrl = getProxyUrl();
28
+ if (!proxyUrl)
29
+ return undefined;
30
+ let parsed;
31
+ try {
32
+ parsed = new URL(proxyUrl);
33
+ }
34
+ catch {
35
+ console.warn(`[proxy] Invalid proxy URL: ${proxyUrl}`);
36
+ return undefined;
37
+ }
38
+ const proto = parsed.protocol.replace(":", "").toLowerCase();
39
+ if (proto === "http" || proto === "https") {
40
+ setGlobalDispatcher(new ProxyAgent({ uri: proxyUrl }));
41
+ }
42
+ else if (proto === "socks5" || proto === "socks5h" || proto === "socks4" || proto === "socks") {
43
+ setupSocks(parsed, proto);
44
+ }
45
+ else {
46
+ console.warn(`[proxy] Unsupported protocol: ${proto}`);
47
+ return undefined;
48
+ }
49
+ console.log(`[proxy] Using ${proto} proxy ${parsed.hostname}:${parsed.port}`);
50
+ return proxyUrl;
51
+ }
52
+ function setupSocks(parsed, proto) {
53
+ const proxy = {
54
+ host: parsed.hostname,
55
+ port: parseInt(parsed.port, 10) || 1080,
56
+ type: proto.startsWith("socks4") ? 4 : 5,
57
+ };
58
+ if (parsed.username) {
59
+ proxy.userId = decodeURIComponent(parsed.username);
60
+ }
61
+ if (parsed.password) {
62
+ proxy.password = decodeURIComponent(parsed.password);
63
+ }
64
+ setGlobalDispatcher(new Agent({
65
+ connect: async (opts, cb) => {
66
+ try {
67
+ const host = typeof opts.hostname === "string"
68
+ ? opts.hostname
69
+ : (opts.host ?? "localhost");
70
+ const port = typeof opts.port === "number"
71
+ ? opts.port
72
+ : parseInt(String(opts.port ?? "443"), 10);
73
+ const { socket } = await SocksClient.createConnection({
74
+ proxy,
75
+ command: "connect",
76
+ destination: { host, port },
77
+ });
78
+ if (opts.protocol === "https:" || port === 443) {
79
+ const tls = tlsConnect({
80
+ socket: socket,
81
+ servername: host,
82
+ });
83
+ cb(null, tls);
84
+ }
85
+ else {
86
+ cb(null, socket);
87
+ }
88
+ }
89
+ catch (err) {
90
+ cb(err instanceof Error ? err : new Error(String(err)), null);
91
+ }
92
+ },
93
+ }));
94
+ }
95
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type PushLocale = "en" | "ja" | "zh";
2
+ export declare function normalizePushLocale(locale: string | undefined): PushLocale;
3
+ /**
4
+ * Look up a translated push notification string.
5
+ * Supports `{param}` placeholders replaced by `params` values.
6
+ */
7
+ export declare function t(locale: PushLocale, key: string, params?: Record<string, string>): string;
@@ -0,0 +1,75 @@
1
+ const translations = {
2
+ en: {
3
+ approval_title: "Approval needed",
4
+ ask_title: "Response needed",
5
+ plan_ready_title: "Plan ready",
6
+ approval_body: "Approve execution of {toolName}",
7
+ plan_ready_body: "Plan is ready for review",
8
+ ask_default_body: "Claude is asking a question",
9
+ task_completed: "Task completed",
10
+ error_occurred: "Error occurred",
11
+ session_completed: "Session completed",
12
+ session_failed: "Session failed",
13
+ // Privacy mode: generic bodies without tool names, question text, or result details
14
+ approval_body_private: "Approve tool execution",
15
+ ask_body_private: "Please respond to a question",
16
+ result_success_body_private: "Session completed",
17
+ result_error_body_private: "Session failed",
18
+ },
19
+ ja: {
20
+ approval_title: "承認待ち",
21
+ ask_title: "回答待ち",
22
+ plan_ready_title: "プラン完成",
23
+ approval_body: "{toolName} の実行を承認してください",
24
+ plan_ready_body: "プランが完成しました。確認してください",
25
+ ask_default_body: "Claude が質問しています",
26
+ task_completed: "タスク完了",
27
+ error_occurred: "エラー発生",
28
+ session_completed: "セッション完了",
29
+ session_failed: "セッションが失敗しました",
30
+ // Privacy mode
31
+ approval_body_private: "ツールの実行を承認してください",
32
+ ask_body_private: "質問に回答してください",
33
+ result_success_body_private: "セッション完了",
34
+ result_error_body_private: "セッションが失敗しました",
35
+ },
36
+ zh: {
37
+ approval_title: "需要批准",
38
+ ask_title: "需要回复",
39
+ plan_ready_title: "计划已准备好",
40
+ approval_body: "请批准执行 {toolName}",
41
+ plan_ready_body: "计划已准备好,请查看",
42
+ ask_default_body: "Claude 正在提问",
43
+ task_completed: "任务已完成",
44
+ error_occurred: "发生错误",
45
+ session_completed: "会话已完成",
46
+ session_failed: "会话失败",
47
+ // Privacy mode
48
+ approval_body_private: "请批准工具执行",
49
+ ask_body_private: "请回答一个问题",
50
+ result_success_body_private: "会话已完成",
51
+ result_error_body_private: "会话失败",
52
+ },
53
+ };
54
+ const SUPPORTED_LOCALES = new Set(["en", "ja", "zh"]);
55
+ export function normalizePushLocale(locale) {
56
+ if (!locale)
57
+ return "en";
58
+ const lang = locale.split(/[-_]/)[0].toLowerCase();
59
+ return SUPPORTED_LOCALES.has(lang) ? lang : "en";
60
+ }
61
+ /**
62
+ * Look up a translated push notification string.
63
+ * Supports `{param}` placeholders replaced by `params` values.
64
+ */
65
+ export function t(locale, key, params) {
66
+ const table = translations[locale] ?? translations.en;
67
+ let text = table[key] ?? translations.en[key] ?? key;
68
+ if (params) {
69
+ for (const [k, v] of Object.entries(params)) {
70
+ text = text.replaceAll(`{${k}}`, v);
71
+ }
72
+ }
73
+ return text;
74
+ }
75
+ //# sourceMappingURL=push-i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-i18n.js","sourceRoot":"","sources":["../src/push-i18n.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY,GAA+C;IAC/D,EAAE,EAAE;QACF,cAAc,EAAE,iBAAiB;QACjC,SAAS,EAAE,iBAAiB;QAC5B,gBAAgB,EAAE,YAAY;QAC9B,aAAa,EAAE,iCAAiC;QAChD,eAAe,EAAE,0BAA0B;QAC3C,gBAAgB,EAAE,6BAA6B;QAC/C,cAAc,EAAE,gBAAgB;QAChC,cAAc,EAAE,gBAAgB;QAChC,iBAAiB,EAAE,mBAAmB;QACtC,cAAc,EAAE,gBAAgB;QAChC,oFAAoF;QACpF,qBAAqB,EAAE,wBAAwB;QAC/C,gBAAgB,EAAE,8BAA8B;QAChD,2BAA2B,EAAE,mBAAmB;QAChD,yBAAyB,EAAE,gBAAgB;KAC5C;IACD,EAAE,EAAE;QACF,cAAc,EAAE,MAAM;QACtB,SAAS,EAAE,MAAM;QACjB,gBAAgB,EAAE,OAAO;QACzB,aAAa,EAAE,yBAAyB;QACxC,eAAe,EAAE,qBAAqB;QACtC,gBAAgB,EAAE,iBAAiB;QACnC,cAAc,EAAE,OAAO;QACvB,cAAc,EAAE,OAAO;QACvB,iBAAiB,EAAE,SAAS;QAC5B,cAAc,EAAE,cAAc;QAC9B,eAAe;QACf,qBAAqB,EAAE,iBAAiB;QACxC,gBAAgB,EAAE,aAAa;QAC/B,2BAA2B,EAAE,SAAS;QACtC,yBAAyB,EAAE,cAAc;KAC1C;IACD,EAAE,EAAE;QACF,cAAc,EAAE,MAAM;QACtB,SAAS,EAAE,MAAM;QACjB,gBAAgB,EAAE,QAAQ;QAC1B,aAAa,EAAE,kBAAkB;QACjC,eAAe,EAAE,YAAY;QAC7B,gBAAgB,EAAE,aAAa;QAC/B,cAAc,EAAE,OAAO;QACvB,cAAc,EAAE,MAAM;QACtB,iBAAiB,EAAE,OAAO;QAC1B,cAAc,EAAE,MAAM;QACtB,eAAe;QACf,qBAAqB,EAAE,SAAS;QAChC,gBAAgB,EAAE,SAAS;QAC3B,2BAA2B,EAAE,OAAO;QACpC,yBAAyB,EAAE,MAAM;KAClC;CACF,CAAC;AAEF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAE9D,MAAM,UAAU,mBAAmB,CAAC,MAA0B;IAC5D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACnD,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,IAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,CAAC,CACf,MAAkB,EAClB,GAAW,EACX,MAA+B;IAE/B,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,EAAE,CAAC;IACtD,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;IACrD,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { FirebaseAuthClient } from "./firebase-auth.js";
2
+ export type PushPlatform = "ios" | "android" | "web";
3
+ export interface PushNotifyPayload {
4
+ eventType: string;
5
+ title: string;
6
+ body: string;
7
+ /** When set, only tokens registered with this locale receive the notification. */
8
+ locale?: string;
9
+ data?: Record<string, string>;
10
+ }
11
+ export interface PushRelayClientOptions {
12
+ relayUrl?: string;
13
+ firebaseAuth?: FirebaseAuthClient | null;
14
+ timeoutMs?: number;
15
+ fetchImpl?: typeof fetch;
16
+ }
17
+ export declare class PushRelayClient {
18
+ private readonly relayUrl;
19
+ private readonly firebaseAuth;
20
+ private readonly timeoutMs;
21
+ private readonly fetchImpl;
22
+ constructor(options?: PushRelayClientOptions);
23
+ get isConfigured(): boolean;
24
+ private get bridgeId();
25
+ registerToken(token: string, platform: PushPlatform, locale?: string): Promise<void>;
26
+ unregisterToken(token: string): Promise<void>;
27
+ notify(payload: PushNotifyPayload): Promise<void>;
28
+ private post;
29
+ }
@@ -0,0 +1,70 @@
1
+ const DEFAULT_RELAY_URL = "https://us-central1-ccpocket-ca33b.cloudfunctions.net/relay";
2
+ export class PushRelayClient {
3
+ relayUrl;
4
+ firebaseAuth;
5
+ timeoutMs;
6
+ fetchImpl;
7
+ constructor(options = {}) {
8
+ this.relayUrl = options.relayUrl ?? DEFAULT_RELAY_URL;
9
+ this.firebaseAuth = options.firebaseAuth ?? null;
10
+ this.timeoutMs = options.timeoutMs ?? 10_000;
11
+ this.fetchImpl = options.fetchImpl ?? fetch;
12
+ }
13
+ get isConfigured() {
14
+ return this.firebaseAuth != null;
15
+ }
16
+ get bridgeId() {
17
+ return this.firebaseAuth.uid;
18
+ }
19
+ async registerToken(token, platform, locale) {
20
+ if (!this.isConfigured)
21
+ return;
22
+ await this.post({ op: "register", token, platform, locale, bridgeId: this.bridgeId });
23
+ }
24
+ async unregisterToken(token) {
25
+ if (!this.isConfigured)
26
+ return;
27
+ await this.post({ op: "unregister", token, bridgeId: this.bridgeId });
28
+ }
29
+ async notify(payload) {
30
+ if (!this.isConfigured)
31
+ return;
32
+ await this.post({
33
+ op: "notify",
34
+ bridgeId: this.bridgeId,
35
+ eventType: payload.eventType,
36
+ title: payload.title,
37
+ body: payload.body,
38
+ locale: payload.locale,
39
+ data: payload.data,
40
+ });
41
+ }
42
+ async post(payload) {
43
+ if (!this.isConfigured || !this.firebaseAuth)
44
+ return;
45
+ console.log(`[push-relay] ${payload.op} → ${this.relayUrl} (bridgeId: ${payload.bridgeId})`);
46
+ const idToken = await this.firebaseAuth.getIdToken();
47
+ const controller = new AbortController();
48
+ const timer = setTimeout(() => controller.abort(), this.timeoutMs);
49
+ try {
50
+ const response = await this.fetchImpl(this.relayUrl, {
51
+ method: "POST",
52
+ headers: {
53
+ "Content-Type": "application/json",
54
+ "Authorization": `Bearer ${idToken}`,
55
+ },
56
+ body: JSON.stringify(payload),
57
+ signal: controller.signal,
58
+ });
59
+ const responseText = (await response.text()).trim().slice(0, 200);
60
+ if (!response.ok) {
61
+ throw new Error(`Push relay returned ${response.status}${responseText ? `: ${responseText}` : ""}`);
62
+ }
63
+ console.log(`[push-relay] ${payload.op} OK: ${responseText}`);
64
+ }
65
+ finally {
66
+ clearTimeout(timer);
67
+ }
68
+ }
69
+ }
70
+ //# sourceMappingURL=push-relay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-relay.js","sourceRoot":"","sources":["../src/push-relay.ts"],"names":[],"mappings":"AAyBA,MAAM,iBAAiB,GAAG,6DAA6D,CAAC;AAExF,MAAM,OAAO,eAAe;IACT,QAAQ,CAAS;IACjB,YAAY,CAA4B;IACxC,SAAS,CAAS;IAClB,SAAS,CAAe;IAEzC,YAAY,UAAkC,EAAE;QAC9C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,iBAAiB,CAAC;QACtD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;QACjD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAC9C,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;IACnC,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,YAAa,CAAC,GAAG,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAa,EAAE,QAAsB,EAAE,MAAe;QACxE,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAC/B,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAAa;QACjC,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAC/B,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAA0B;QACrC,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAC/B,MAAM,IAAI,CAAC,IAAI,CAAC;YACd,EAAE,EAAE,QAAQ;YACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,OAA2B;QAC5C,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAErD,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC,QAAQ,eAAe,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC7F,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACnD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,eAAe,EAAE,UAAU,OAAO,EAAE;iBACrC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,MAAM,YAAY,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAClE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtG,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,EAAE,QAAQ,YAAY,EAAE,CAAC,CAAC;QAChE,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,51 @@
1
+ import type { ClientMessage, ServerMessage } from "./parser.js";
2
+ export interface RecordingMeta {
3
+ bridgeSessionId: string;
4
+ claudeSessionId?: string;
5
+ projectPath: string;
6
+ createdAt: string;
7
+ }
8
+ export interface RecordingFileInfo {
9
+ name: string;
10
+ path: string;
11
+ modified: string;
12
+ sizeBytes: number;
13
+ meta?: RecordingMeta;
14
+ summary?: string;
15
+ firstPrompt?: string;
16
+ lastPrompt?: string;
17
+ }
18
+ export interface RecordedEvent {
19
+ ts: string;
20
+ direction: "outgoing" | "incoming";
21
+ message: ServerMessage | ClientMessage;
22
+ }
23
+ export declare class RecordingStore {
24
+ private recordingDir;
25
+ private writeChains;
26
+ constructor(rootDir?: string);
27
+ init(): Promise<void>;
28
+ getFilePath(sessionId: string): string;
29
+ private getMetaPath;
30
+ /** Save or update session metadata alongside the recording. */
31
+ saveMeta(sessionId: string, meta: RecordingMeta): void;
32
+ /** Read session metadata. */
33
+ getMeta(sessionId: string): Promise<RecordingMeta | null>;
34
+ record(sessionId: string, direction: "outgoing" | "incoming", message: ServerMessage | ClientMessage): void;
35
+ /** List all recording files, newest first, with metadata if available. */
36
+ listRecordings(): Promise<RecordingFileInfo[]>;
37
+ /**
38
+ * Extract key info directly from JSONL content without requiring meta or sessions-index.
39
+ * Scans for first/last user input messages and claudeSessionId from system messages.
40
+ */
41
+ extractInfoFromJsonl(sessionId: string): Promise<{
42
+ firstPrompt?: string;
43
+ lastPrompt?: string;
44
+ claudeSessionId?: string;
45
+ projectPath?: string;
46
+ }>;
47
+ /** Read recording content as string. */
48
+ getRecordingContent(sessionId: string): Promise<string | null>;
49
+ flush(): Promise<void>;
50
+ private enqueue;
51
+ }