ccpoke 1.4.2 → 1.5.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.en.md +26 -11
  2. package/README.md +26 -11
  3. package/dist/agent/agent-handler.d.ts +12 -0
  4. package/dist/agent/agent-handler.js +49 -0
  5. package/dist/agent/agent-handler.js.map +1 -0
  6. package/dist/agent/agent-registry.d.ts +9 -0
  7. package/dist/agent/agent-registry.js +24 -0
  8. package/dist/agent/agent-registry.js.map +1 -0
  9. package/dist/{hook/hook-installer.d.ts → agent/claude-code/claude-code-installer.d.ts} +2 -2
  10. package/dist/agent/claude-code/claude-code-installer.js +82 -0
  11. package/dist/agent/claude-code/claude-code-installer.js.map +1 -0
  12. package/dist/{monitor/transcript-parser.d.ts → agent/claude-code/claude-code-parser.d.ts} +6 -0
  13. package/dist/{monitor/transcript-parser.js → agent/claude-code/claude-code-parser.js} +10 -2
  14. package/dist/agent/claude-code/claude-code-parser.js.map +1 -0
  15. package/dist/agent/claude-code/claude-code-provider.d.ts +12 -0
  16. package/dist/agent/claude-code/claude-code-provider.js +72 -0
  17. package/dist/agent/claude-code/claude-code-provider.js.map +1 -0
  18. package/dist/agent/cursor/cursor-installer.d.ts +9 -0
  19. package/dist/agent/cursor/cursor-installer.js +89 -0
  20. package/dist/agent/cursor/cursor-installer.js.map +1 -0
  21. package/dist/agent/cursor/cursor-parser.d.ts +19 -0
  22. package/dist/agent/cursor/cursor-parser.js +61 -0
  23. package/dist/agent/cursor/cursor-parser.js.map +1 -0
  24. package/dist/agent/cursor/cursor-provider.d.ts +12 -0
  25. package/dist/agent/cursor/cursor-provider.js +72 -0
  26. package/dist/agent/cursor/cursor-provider.js.map +1 -0
  27. package/dist/agent/types.d.ts +27 -0
  28. package/dist/agent/types.js +11 -0
  29. package/dist/agent/types.js.map +1 -0
  30. package/dist/channel/telegram/telegram-channel.js +7 -90
  31. package/dist/channel/telegram/telegram-channel.js.map +1 -1
  32. package/dist/channel/types.d.ts +2 -0
  33. package/dist/commands/setup.js +83 -19
  34. package/dist/commands/setup.js.map +1 -1
  35. package/dist/commands/uninstall.js +12 -9
  36. package/dist/commands/uninstall.js.map +1 -1
  37. package/dist/config-manager.d.ts +2 -1
  38. package/dist/config-manager.js +21 -17
  39. package/dist/config-manager.js.map +1 -1
  40. package/dist/i18n/index.d.ts +7 -2
  41. package/dist/i18n/index.js +10 -5
  42. package/dist/i18n/index.js.map +1 -1
  43. package/dist/i18n/locales/en.js +11 -0
  44. package/dist/i18n/locales/en.js.map +1 -1
  45. package/dist/i18n/locales/vi.js +11 -0
  46. package/dist/i18n/locales/vi.js.map +1 -1
  47. package/dist/i18n/locales/zh.js +11 -0
  48. package/dist/i18n/locales/zh.js.map +1 -1
  49. package/dist/i18n/types.d.ts +11 -0
  50. package/dist/index.js +28 -8
  51. package/dist/index.js.map +1 -1
  52. package/dist/{hook/hook-server.d.ts → server/api-server.d.ts} +3 -3
  53. package/dist/{hook/hook-server.js → server/api-server.js} +6 -4
  54. package/dist/server/api-server.js.map +1 -0
  55. package/dist/utils/git-collector.js.map +1 -0
  56. package/dist/utils/markdown.d.ts +4 -0
  57. package/dist/utils/markdown.js +47 -0
  58. package/dist/utils/markdown.js.map +1 -0
  59. package/dist/utils/paths.d.ts +4 -1
  60. package/dist/utils/paths.js +5 -1
  61. package/dist/utils/paths.js.map +1 -1
  62. package/dist/utils/response-store.d.ts +2 -0
  63. package/dist/utils/response-store.js.map +1 -1
  64. package/dist/utils/stats-format.d.ts +3 -0
  65. package/dist/utils/stats-format.js +44 -0
  66. package/dist/utils/stats-format.js.map +1 -0
  67. package/package.json +4 -1
  68. package/dist/hook/hook-handler.d.ts +0 -10
  69. package/dist/hook/hook-handler.js +0 -76
  70. package/dist/hook/hook-handler.js.map +0 -1
  71. package/dist/hook/hook-installer.js +0 -110
  72. package/dist/hook/hook-installer.js.map +0 -1
  73. package/dist/hook/hook-server.js.map +0 -1
  74. package/dist/hook/response-store.d.ts +0 -8
  75. package/dist/hook/response-store.js +0 -18
  76. package/dist/monitor/git-collector.js.map +0 -1
  77. package/dist/monitor/transcript-parser.js.map +0 -1
  78. package/dist/setup.d.ts +0 -1
  79. package/dist/setup.js +0 -130
  80. package/dist/telegram/bot.d.ts +0 -20
  81. package/dist/telegram/bot.js +0 -130
  82. package/dist/telegram/message-formatter.d.ts +0 -18
  83. package/dist/telegram/message-formatter.js +0 -56
  84. package/dist/telegram/message-sender.d.ts +0 -2
  85. package/dist/telegram/message-sender.js +0 -76
  86. package/dist/utils/error-utils.d.ts +0 -1
  87. package/dist/utils/error-utils.js +0 -3
  88. /package/dist/{monitor → utils}/git-collector.d.ts +0 -0
  89. /package/dist/{monitor → utils}/git-collector.js +0 -0
@@ -1,6 +1,6 @@
1
1
  import { readFileSync, writeFileSync, mkdirSync } from "node:fs";
2
2
  import { randomBytes } from "node:crypto";
3
- import { isValidLocale, setLocale } from "./i18n/index.js";
3
+ import { Locale, isValidLocale, setLocale } from "./i18n/index.js";
4
4
  import { t } from "./i18n/index.js";
5
5
  import { paths } from "./utils/paths.js";
6
6
  import { DEFAULT_HOOK_PORT } from "./utils/constants.js";
@@ -20,7 +20,7 @@ export class ConfigManager {
20
20
  }
21
21
  const raw = JSON.parse(data);
22
22
  const cfg = ConfigManager.validate(raw);
23
- if (cfg.hook_secret !== raw.hook_secret) {
23
+ if (cfg.hook_secret !== raw.hook_secret || !raw.agents) {
24
24
  ConfigManager.save(cfg);
25
25
  }
26
26
  setLocale(cfg.locale);
@@ -53,40 +53,44 @@ export class ConfigManager {
53
53
  if (typeof data !== "object" || data === null) {
54
54
  throw new Error(t("config.mustBeObject"));
55
55
  }
56
- const obj = data;
57
- if (typeof obj.telegram_bot_token !== "string" || !obj.telegram_bot_token.includes(":")) {
56
+ if (typeof data.telegram_bot_token !== "string" || !data.telegram_bot_token.includes(":")) {
58
57
  throw new Error(t("config.invalidToken"));
59
58
  }
60
- if (typeof obj.user_id !== "number" || !Number.isInteger(obj.user_id)) {
59
+ if (typeof data.user_id !== "number" || !Number.isInteger(data.user_id)) {
61
60
  throw new Error(t("config.invalidUserId"));
62
61
  }
63
62
  let hookPort = DEFAULT_HOOK_PORT;
64
- if (obj.hook_port !== undefined) {
65
- if (typeof obj.hook_port !== "number" ||
66
- !Number.isInteger(obj.hook_port) ||
67
- obj.hook_port < 1 ||
68
- obj.hook_port > 65535) {
63
+ if (data.hook_port !== undefined) {
64
+ if (typeof data.hook_port !== "number" ||
65
+ !Number.isInteger(data.hook_port) ||
66
+ data.hook_port < 1 ||
67
+ data.hook_port > 65535) {
69
68
  throw new Error(t("config.invalidPort"));
70
69
  }
71
- hookPort = obj.hook_port;
70
+ hookPort = data.hook_port;
72
71
  }
73
72
  let hookSecret;
74
- if (typeof obj.hook_secret === "string" && obj.hook_secret.length > 0) {
75
- if (!/^[a-f0-9]+$/i.test(obj.hook_secret)) {
73
+ if (typeof data.hook_secret === "string" && data.hook_secret.length > 0) {
74
+ if (!/^[a-f0-9]+$/i.test(data.hook_secret)) {
76
75
  throw new Error(t("config.invalidSecret"));
77
76
  }
78
- hookSecret = obj.hook_secret;
77
+ hookSecret = data.hook_secret;
79
78
  }
80
79
  else {
81
80
  hookSecret = ConfigManager.generateSecret();
82
81
  }
83
- const locale = isValidLocale(obj.locale) ? obj.locale : "en";
82
+ const locale = isValidLocale(data.locale) ? data.locale : Locale.EN;
83
+ let agents = ["claude-code"];
84
+ if (Array.isArray(data.agents) && data.agents.length > 0) {
85
+ agents = data.agents.filter((a) => typeof a === "string");
86
+ }
84
87
  const cfg = {
85
- telegram_bot_token: obj.telegram_bot_token,
86
- user_id: obj.user_id,
88
+ telegram_bot_token: data.telegram_bot_token,
89
+ user_id: data.user_id,
87
90
  hook_port: hookPort,
88
91
  hook_secret: hookSecret,
89
92
  locale,
93
+ agents,
90
94
  };
91
95
  return cfg;
92
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../src/config-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../src/config-manager.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,12 @@
1
1
  import type { TranslationKeys } from "./types.js";
2
- export type Locale = "en" | "vi" | "zh";
3
- export declare const SUPPORTED_LOCALES: readonly Locale[];
2
+ export declare const Locale: {
3
+ readonly EN: "en";
4
+ readonly VI: "vi";
5
+ readonly ZH: "zh";
6
+ };
7
+ export type Locale = (typeof Locale)[keyof typeof Locale];
4
8
  export declare const LOCALE_LABELS: Record<Locale, string>;
9
+ export declare const SUPPORTED_LOCALES: Locale[];
5
10
  export declare function setLocale(locale: Locale): void;
6
11
  export declare function getLocale(): Locale;
7
12
  export declare function isValidLocale(value: unknown): value is Locale;
@@ -1,14 +1,19 @@
1
1
  import { en } from "./locales/en.js";
2
2
  import { vi } from "./locales/vi.js";
3
3
  import { zh } from "./locales/zh.js";
4
- export const SUPPORTED_LOCALES = ["en", "vi", "zh"];
4
+ export const Locale = {
5
+ EN: "en",
6
+ VI: "vi",
7
+ ZH: "zh",
8
+ };
5
9
  export const LOCALE_LABELS = {
6
- en: "English",
7
- vi: "Tiếng Việt",
8
- zh: "中文",
10
+ [Locale.EN]: "English",
11
+ [Locale.VI]: "Tiếng Việt",
12
+ [Locale.ZH]: "中文",
9
13
  };
14
+ export const SUPPORTED_LOCALES = Object.values(Locale);
10
15
  const localeMap = { en, vi, zh };
11
- let currentLocale = "en";
16
+ let currentLocale = Locale.EN;
12
17
  export function setLocale(locale) {
13
18
  currentLocale = locale;
14
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAIrC,MAAM,CAAC,MAAM,iBAAiB,GAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAEhF,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,YAAY;IAChB,EAAE,EAAE,IAAI;CACT,CAAC;AAEF,MAAM,SAAS,GAAoC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAElE,IAAI,aAAa,GAAW,IAAI,CAAC;AAEjC,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,aAAa,GAAG,MAAM,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,KAAe,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,UAAU,CAAC,YAA6B,EAAE,GAAW;IAC5D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,MAAM,GAAY,YAAY,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1E,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,GAAI,MAAkC,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,CAAC,CAAC,GAAW,EAAE,MAAwC;IACrE,IAAI,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC;IAEtD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,KAAK,GAAG,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5D,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,QAAQ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,SAAS,CAAC,aAAa,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI;CACA,CAAC;AAIX,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,SAAS;IACtB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,YAAY;IACzB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAa,CAAC;AAEnE,MAAM,SAAS,GAAoC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAElE,IAAI,aAAa,GAAW,MAAM,CAAC,EAAE,CAAC;AAEtC,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,aAAa,GAAG,MAAM,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,KAAe,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,UAAU,CAAC,YAA6B,EAAE,GAAW;IAC5D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,MAAM,GAAY,YAAY,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1E,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,GAAI,MAAkC,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,CAAC,CAAC,GAAW,EAAE,MAAwC;IACrE,IAAI,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC;IAEtD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,KAAK,GAAG,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5D,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,QAAQ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,SAAS,CAAC,aAAa,CAAC,CAAC;AAClC,CAAC"}
@@ -46,6 +46,12 @@ export const en = {
46
46
  chatIdRegistered: "Chat ID registered",
47
47
  complete: "🎉 Setup complete!\n\n Next steps:\n 1. Start bot: {command}\n 2. Use Claude Code normally → notifications will arrive",
48
48
  languageMessage: "Language",
49
+ tokenUnchanged: "Bot token unchanged — skipping verification",
50
+ selectAgents: "Select AI agents (space to toggle)",
51
+ agentNotInstalled: "{agent} is not installed on this machine",
52
+ agentHookInstalled: "{agent} hook installed",
53
+ agentHookAlreadyInstalled: "{agent} hook already installed",
54
+ agentHookUninstalled: "{agent} hook removed",
49
55
  },
50
56
  uninstall: {
51
57
  intro: "🗑️ Uninstalling ccpoke",
@@ -56,6 +62,7 @@ export const en = {
56
62
  removeGlobal: "To also remove the package:\n pnpm remove -g ccpoke",
57
63
  removeGitClone: "To also remove the source:\n rm -rf <ccpoke-directory>",
58
64
  done: "ccpoke uninstalled",
65
+ agentHookRemoved: "{agent} hook removed",
59
66
  },
60
67
  update: {
61
68
  intro: "📦 ccpoke update",
@@ -118,6 +125,10 @@ export const en = {
118
125
  invalidHookPort: "invalid hook port: {port} (must be 1-65535)",
119
126
  hookAlreadyInstalled: "ccpoke hook already installed",
120
127
  },
128
+ agent: {
129
+ unknownAgent: "Unknown agent: {agent}",
130
+ taskDone: "✅ Task done",
131
+ },
121
132
  common: {
122
133
  unknownCommand: "unknown command: {command}",
123
134
  setupFailed: "setup failed",
@@ -1 +1 @@
1
- {"version":3,"file":"en.js","sourceRoot":"","sources":["../../../src/i18n/locales/en.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"en.js","sourceRoot":"","sources":["../../../src/i18n/locales/en.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,12 @@ export const vi = {
46
46
  chatIdRegistered: "Đã đăng ký Chat ID",
47
47
  complete: "🎉 Setup hoàn tất!\n\n Bước tiếp:\n 1. Chạy bot: {command}\n 2. Dùng Claude Code bình thường → notification sẽ đến",
48
48
  languageMessage: "Ngôn ngữ",
49
+ tokenUnchanged: "Token không đổi — bỏ qua xác thực",
50
+ selectAgents: "Chọn AI agents (ấn cách để chọn)",
51
+ agentNotInstalled: "{agent} chưa được cài trên máy này",
52
+ agentHookInstalled: "Đã cài hook cho {agent}",
53
+ agentHookAlreadyInstalled: "Hook cho {agent} đã được cài rồi",
54
+ agentHookUninstalled: "Đã gỡ hook cho {agent}",
49
55
  },
50
56
  uninstall: {
51
57
  intro: "🗑️ Gỡ cài đặt ccpoke",
@@ -56,6 +62,7 @@ export const vi = {
56
62
  removeGlobal: "Để gỡ package:\n pnpm remove -g ccpoke",
57
63
  removeGitClone: "Để xóa source:\n rm -rf <ccpoke-directory>",
58
64
  done: "Đã gỡ ccpoke",
65
+ agentHookRemoved: "Đã gỡ hook cho {agent}",
59
66
  },
60
67
  update: {
61
68
  intro: "📦 ccpoke cập nhật",
@@ -118,6 +125,10 @@ export const vi = {
118
125
  invalidHookPort: "hook port không hợp lệ: {port} (phải từ 1-65535)",
119
126
  hookAlreadyInstalled: "ccpoke hook đã được cài rồi",
120
127
  },
128
+ agent: {
129
+ unknownAgent: "Agent không xác định: {agent}",
130
+ taskDone: "✅ Task done",
131
+ },
121
132
  common: {
122
133
  unknownCommand: "lệnh không xác định: {command}",
123
134
  setupFailed: "setup thất bại",
@@ -1 +1 @@
1
- {"version":3,"file":"vi.js","sourceRoot":"","sources":["../../../src/i18n/locales/vi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vi.js","sourceRoot":"","sources":["../../../src/i18n/locales/vi.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,12 @@ export const zh = {
46
46
  chatIdRegistered: "聊天 ID 已注册",
47
47
  complete: "🎉 设置完成!\n\n 下一步:\n 1. 启动机器人: {command}\n 2. 正常使用 Claude Code → 通知将自动发送",
48
48
  languageMessage: "语言",
49
+ tokenUnchanged: "Token 未更改 — 跳过验证",
50
+ selectAgents: "选择 AI 代理 (空格键切换)",
51
+ agentNotInstalled: "{agent} 未安装在此设备上",
52
+ agentHookInstalled: "{agent} hook 已安装",
53
+ agentHookAlreadyInstalled: "{agent} hook 已安装",
54
+ agentHookUninstalled: "{agent} hook 已移除",
49
55
  },
50
56
  uninstall: {
51
57
  intro: "🗑️ 卸载 ccpoke",
@@ -56,6 +62,7 @@ export const zh = {
56
62
  removeGlobal: "要同时删除包:\n pnpm remove -g ccpoke",
57
63
  removeGitClone: "要同时删除源代码:\n rm -rf <ccpoke-directory>",
58
64
  done: "ccpoke 已卸载",
65
+ agentHookRemoved: "{agent} hook 已移除",
59
66
  },
60
67
  update: {
61
68
  intro: "📦 ccpoke 更新",
@@ -118,6 +125,10 @@ export const zh = {
118
125
  invalidHookPort: "无效的 hook 端口: {port}(必须为 1-65535)",
119
126
  hookAlreadyInstalled: "ccpoke hook 已安装",
120
127
  },
128
+ agent: {
129
+ unknownAgent: "未知代理: {agent}",
130
+ taskDone: "✅ 任务完成",
131
+ },
121
132
  common: {
122
133
  unknownCommand: "未知命令: {command}",
123
134
  setupFailed: "setup 失败",
@@ -1 +1 @@
1
- {"version":3,"file":"zh.js","sourceRoot":"","sources":["../../../src/i18n/locales/zh.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zh.js","sourceRoot":"","sources":["../../../src/i18n/locales/zh.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,12 @@ export interface TranslationKeys {
46
46
  chatIdRegistered: string;
47
47
  complete: string;
48
48
  languageMessage: string;
49
+ tokenUnchanged: string;
50
+ selectAgents: string;
51
+ agentNotInstalled: string;
52
+ agentHookInstalled: string;
53
+ agentHookAlreadyInstalled: string;
54
+ agentHookUninstalled: string;
49
55
  };
50
56
  uninstall: {
51
57
  intro: string;
@@ -56,6 +62,7 @@ export interface TranslationKeys {
56
62
  removeGlobal: string;
57
63
  removeGitClone: string;
58
64
  done: string;
65
+ agentHookRemoved: string;
59
66
  };
60
67
  update: {
61
68
  intro: string;
@@ -118,6 +125,10 @@ export interface TranslationKeys {
118
125
  invalidHookPort: string;
119
126
  hookAlreadyInstalled: string;
120
127
  };
128
+ agent: {
129
+ unknownAgent: string;
130
+ taskDone: string;
131
+ };
121
132
  common: {
122
133
  unknownCommand: string;
123
134
  setupFailed: string;
package/dist/index.js CHANGED
@@ -1,8 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { ConfigManager } from "./config-manager.js";
3
3
  import { TelegramChannel } from "./channel/telegram/telegram-channel.js";
4
- import { HookServer } from "./hook/hook-server.js";
5
- import { HookHandler } from "./hook/hook-handler.js";
4
+ import { ApiServer } from "./server/api-server.js";
5
+ import { AgentHandler } from "./agent/agent-handler.js";
6
+ import { createDefaultRegistry } from "./agent/agent-registry.js";
6
7
  import { runSetup } from "./commands/setup.js";
7
8
  import { runUpdate } from "./commands/update.js";
8
9
  import { runUninstall } from "./commands/uninstall.js";
@@ -22,7 +23,9 @@ else {
22
23
  }
23
24
  async function loadOrSetupConfig() {
24
25
  try {
25
- return ConfigManager.load();
26
+ const config = ConfigManager.load();
27
+ ensureAgentHooks(config);
28
+ return config;
26
29
  }
27
30
  catch {
28
31
  log(t("bot.firstTimeSetup"));
@@ -35,10 +38,26 @@ async function loadOrSetupConfig() {
35
38
  }
36
39
  }
37
40
  }
41
+ function ensureAgentHooks(config) {
42
+ const registry = createDefaultRegistry();
43
+ for (const agentName of config.agents) {
44
+ const provider = registry.resolve(agentName);
45
+ if (!provider)
46
+ continue;
47
+ if (provider.isHookInstalled())
48
+ continue;
49
+ if (!provider.detect()) {
50
+ logError(t("setup.agentNotInstalled", { agent: provider.displayName }));
51
+ continue;
52
+ }
53
+ provider.installHook(config.hook_port, config.hook_secret);
54
+ log(t("setup.agentHookInstalled", { agent: provider.displayName }));
55
+ }
56
+ }
38
57
  async function startBot() {
39
58
  const cfg = await loadOrSetupConfig();
40
- const hookServer = new HookServer(cfg.hook_port, cfg.hook_secret);
41
- hookServer.start();
59
+ const apiServer = new ApiServer(cfg.hook_port, cfg.hook_secret);
60
+ apiServer.start();
42
61
  log(`ccpoke: ${t("bot.started", { port: cfg.hook_port })}`);
43
62
  const tunnelManager = new TunnelManager();
44
63
  try {
@@ -48,9 +67,10 @@ async function startBot() {
48
67
  catch (err) {
49
68
  logError(t("tunnel.failed"), err);
50
69
  }
70
+ const registry = createDefaultRegistry();
51
71
  const channel = new TelegramChannel(cfg);
52
- const handler = new HookHandler(channel, cfg.hook_port, tunnelManager);
53
- hookServer.setHandler(handler);
72
+ const handler = new AgentHandler(registry, channel, cfg.hook_port, tunnelManager);
73
+ apiServer.setHandler(handler);
54
74
  await channel.initialize();
55
75
  if (detectInstallMethod() === InstallMethod.Npx) {
56
76
  log(t("bot.globalInstallTip"));
@@ -60,7 +80,7 @@ async function startBot() {
60
80
  log(t("bot.shuttingDown"));
61
81
  tunnelManager.stop();
62
82
  await channel.shutdown();
63
- await hookServer.stop();
83
+ await apiServer.stop();
64
84
  process.exit(0);
65
85
  };
66
86
  process.on("SIGINT", shutdown);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { HookHandler } from "./hook-handler.js";
2
- export declare class HookServer {
1
+ import { AgentHandler } from "../agent/agent-handler.js";
2
+ export declare class ApiServer {
3
3
  private app;
4
4
  private server;
5
5
  private port;
6
6
  private secret;
7
7
  private handler;
8
8
  constructor(port: number, secret: string);
9
- setHandler(handler: HookHandler): void;
9
+ setHandler(handler: AgentHandler): void;
10
10
  start(): void;
11
11
  stop(): Promise<void>;
12
12
  private createApp;
@@ -1,11 +1,12 @@
1
1
  import express, {} from "express";
2
- import { HookHandler } from "./hook-handler.js";
2
+ import { AgentHandler } from "../agent/agent-handler.js";
3
+ import { AgentName } from "../agent/types.js";
3
4
  import { responseStore } from "../utils/response-store.js";
4
5
  import { MINI_APP_BASE_URL, ApiRoute } from "../utils/constants.js";
5
6
  import { t } from "../i18n/index.js";
6
7
  import { log } from "../utils/log.js";
7
8
  const ALLOWED_CORS_ORIGIN = new URL(MINI_APP_BASE_URL).origin;
8
- export class HookServer {
9
+ export class ApiServer {
9
10
  app;
10
11
  server = null;
11
12
  port;
@@ -53,7 +54,8 @@ export class HookServer {
53
54
  res.status(403).send("forbidden");
54
55
  return;
55
56
  }
56
- setImmediate(() => this.handler?.handleStopEvent(req.body));
57
+ const agentName = req.query.agent ? `${req.query.agent}` : AgentName.ClaudeCode;
58
+ setImmediate(() => this.handler?.handleStopEvent(agentName, req.body));
57
59
  res.status(200).send("ok");
58
60
  });
59
61
  app.get(ApiRoute.Health, (_req, res) => {
@@ -62,4 +64,4 @@ export class HookServer {
62
64
  return app;
63
65
  }
64
66
  }
65
- //# sourceMappingURL=hook-server.js.map
67
+ //# sourceMappingURL=api-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-server.js","sourceRoot":"","sources":["../../src/server/api-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-collector.js","sourceRoot":"","sources":["../../src/utils/git-collector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function extractProseSnippet(text: string, maxLength: number): string;
2
+ export declare function stripInlineMarkdown(text: string): string;
3
+ export declare function isStructuredBlock(line: string): boolean;
4
+ export declare function truncateAtWordBoundary(text: string, maxLength: number): string;
@@ -0,0 +1,47 @@
1
+ export function extractProseSnippet(text, maxLength) {
2
+ const withoutCodeBlocks = text.replace(/```[\s\S]*?```/g, "").replace(/```[\s\S]*/g, "");
3
+ const paragraphs = withoutCodeBlocks.split(/\n\n+/);
4
+ const candidates = paragraphs
5
+ .map((p) => ({ raw: p.trim(), cleaned: stripInlineMarkdown(p.trim()) }))
6
+ .filter((c) => c.cleaned.length >= 20);
7
+ const prose = candidates.find((c) => !isStructuredBlock(c.raw));
8
+ if (prose)
9
+ return truncateAtWordBoundary(prose.cleaned, maxLength);
10
+ const fallback = candidates[0];
11
+ if (fallback)
12
+ return truncateAtWordBoundary(fallback.cleaned, maxLength);
13
+ return truncateAtWordBoundary(stripInlineMarkdown(text), maxLength);
14
+ }
15
+ export function stripInlineMarkdown(text) {
16
+ return text
17
+ .replace(/\*\*(.+?)\*\*/g, "$1")
18
+ .replace(/(?<!\w)\*(.+?)\*(?!\w)/g, "$1")
19
+ .replace(/__(.+?)__/g, "$1")
20
+ .replace(/(?<!\w)_(.+?)_(?!\w)/g, "$1")
21
+ .replace(/`([^`]+)`/g, "$1")
22
+ .replace(/~~(.+?)~~/g, "$1")
23
+ .replace(/\[([^\]]+)\]\([^)]+\)/g, "$1");
24
+ }
25
+ export function isStructuredBlock(line) {
26
+ if (/^\|.*\|/.test(line))
27
+ return true;
28
+ if (/^#{1,6}\s/.test(line))
29
+ return true;
30
+ if (/^\*\*[^*]+\*\*:?\s*$/.test(line))
31
+ return true;
32
+ const lines = line.split("\n");
33
+ const listLines = lines.filter((l) => /^\s*[-*•]\s|^\s*\d+[.)]\s/.test(l));
34
+ if (listLines.length > lines.length * 0.5)
35
+ return true;
36
+ return false;
37
+ }
38
+ export function truncateAtWordBoundary(text, maxLength) {
39
+ const normalized = text.replace(/\n+/g, " ").replace(/\s+/g, " ").trim();
40
+ if (normalized.length <= maxLength)
41
+ return normalized;
42
+ const truncated = normalized.slice(0, maxLength);
43
+ const lastSpace = truncated.lastIndexOf(" ");
44
+ const cut = lastSpace > maxLength * 0.6 ? truncated.slice(0, lastSpace) : truncated;
45
+ return cut;
46
+ }
47
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/utils/markdown.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,13 @@ export declare const paths: {
5
5
  readonly configFile: string;
6
6
  readonly stateFile: string;
7
7
  readonly hooksDir: string;
8
- readonly hookScript: string;
9
8
  readonly responsesDir: string;
9
+ readonly claudeCodeHookScript: string;
10
+ readonly cursorHookScript: string;
10
11
  readonly claudeDir: string;
11
12
  readonly claudeSettings: string;
13
+ readonly cursorDir: string;
14
+ readonly cursorHooksJson: string;
12
15
  };
13
16
  export declare function getPackageVersion(): string;
14
17
  export declare function expandHome(filepath: string): string;
@@ -6,6 +6,7 @@ const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
6
6
  const PROJECT_ROOT = join(MODULE_DIR, "..", "..");
7
7
  const CCPOKE_HOME = join(homedir(), ".ccpoke");
8
8
  const CLAUDE_HOME = join(homedir(), ".claude");
9
+ const CURSOR_HOME = join(homedir(), ".cursor");
9
10
  export const paths = {
10
11
  projectRoot: PROJECT_ROOT,
11
12
  packageJson: join(PROJECT_ROOT, "package.json"),
@@ -13,10 +14,13 @@ export const paths = {
13
14
  configFile: join(CCPOKE_HOME, "config.json"),
14
15
  stateFile: join(CCPOKE_HOME, "state.json"),
15
16
  hooksDir: join(CCPOKE_HOME, "hooks"),
16
- hookScript: join(CCPOKE_HOME, "hooks", process.platform === "win32" ? "stop-notify.cmd" : "stop-notify.sh"),
17
17
  responsesDir: join(CCPOKE_HOME, "responses"),
18
+ claudeCodeHookScript: join(CCPOKE_HOME, "hooks", process.platform === "win32" ? "claude-code-stop.cmd" : "claude-code-stop.sh"),
19
+ cursorHookScript: join(CCPOKE_HOME, "hooks", process.platform === "win32" ? "cursor-stop.cmd" : "cursor-stop.sh"),
18
20
  claudeDir: CLAUDE_HOME,
19
21
  claudeSettings: join(CLAUDE_HOME, "settings.json"),
22
+ cursorDir: CURSOR_HOME,
23
+ cursorHooksJson: join(CURSOR_HOME, "hooks.json"),
20
24
  };
21
25
  export function getPackageVersion() {
22
26
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAElD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAE/C,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,WAAW,EAAE,YAAY;IAEzB,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC;IAE/C,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC;IAC5C,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC;IAC1C,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;IACpC,UAAU,EAAE,IAAI,CACd,WAAW,EACX,OAAO,EACP,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CACpE;IACD,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;IAE5C,SAAS,EAAE,WAAW;IACtB,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC;CAC1C,CAAC;AAEX,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAElD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAE/C,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,WAAW,EAAE,YAAY;IAEzB,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC;IAE/C,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC;IAC5C,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC;IAC1C,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;IACpC,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;IAE5C,oBAAoB,EAAE,IAAI,CACxB,WAAW,EACX,OAAO,EACP,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,qBAAqB,CAC9E;IACD,gBAAgB,EAAE,IAAI,CACpB,WAAW,EACX,OAAO,EACP,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CACpE;IAED,SAAS,EAAE,WAAW;IACtB,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC;IAElD,SAAS,EAAE,WAAW;IACtB,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC;CACxC,CAAC;AAEX,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { type GitChangeStatus } from "./constants.js";
2
2
  export interface StoredResponse {
3
3
  id: string;
4
+ agent: string;
5
+ agentDisplayName: string;
4
6
  projectName: string;
5
7
  responseSummary: string;
6
8
  durationMs: number;