beecork 1.0.0 → 1.1.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 (112) hide show
  1. package/dist/channels/discord.d.ts.map +1 -1
  2. package/dist/channels/discord.js +118 -6
  3. package/dist/channels/discord.js.map +1 -1
  4. package/dist/channels/telegram.d.ts.map +1 -1
  5. package/dist/channels/telegram.js +122 -8
  6. package/dist/channels/telegram.js.map +1 -1
  7. package/dist/channels/whatsapp.d.ts.map +1 -1
  8. package/dist/channels/whatsapp.js +115 -2
  9. package/dist/channels/whatsapp.js.map +1 -1
  10. package/dist/cli/media.d.ts +3 -0
  11. package/dist/cli/media.d.ts.map +1 -0
  12. package/dist/cli/media.js +113 -0
  13. package/dist/cli/media.js.map +1 -0
  14. package/dist/cli/setup.d.ts.map +1 -1
  15. package/dist/cli/setup.js +213 -20
  16. package/dist/cli/setup.js.map +1 -1
  17. package/dist/daemon.js +21 -0
  18. package/dist/daemon.js.map +1 -1
  19. package/dist/dashboard/server.d.ts.map +1 -1
  20. package/dist/dashboard/server.js +24 -0
  21. package/dist/dashboard/server.js.map +1 -1
  22. package/dist/db/migrations.d.ts.map +1 -1
  23. package/dist/db/migrations.js +30 -0
  24. package/dist/db/migrations.js.map +1 -1
  25. package/dist/index.js +121 -0
  26. package/dist/index.js.map +1 -1
  27. package/dist/mcp/server.js +153 -0
  28. package/dist/mcp/server.js.map +1 -1
  29. package/dist/media/factory.d.ts +7 -0
  30. package/dist/media/factory.d.ts.map +1 -0
  31. package/dist/media/factory.js +33 -0
  32. package/dist/media/factory.js.map +1 -0
  33. package/dist/media/generators/dall-e.d.ts +11 -0
  34. package/dist/media/generators/dall-e.d.ts.map +1 -0
  35. package/dist/media/generators/dall-e.js +42 -0
  36. package/dist/media/generators/dall-e.js.map +1 -0
  37. package/dist/media/generators/elevenlabs-music.d.ts +10 -0
  38. package/dist/media/generators/elevenlabs-music.d.ts.map +1 -0
  39. package/dist/media/generators/elevenlabs-music.js +35 -0
  40. package/dist/media/generators/elevenlabs-music.js.map +1 -0
  41. package/dist/media/generators/elevenlabs-sfx.d.ts +10 -0
  42. package/dist/media/generators/elevenlabs-sfx.d.ts.map +1 -0
  43. package/dist/media/generators/elevenlabs-sfx.js +34 -0
  44. package/dist/media/generators/elevenlabs-sfx.js.map +1 -0
  45. package/dist/media/generators/kling.d.ts +10 -0
  46. package/dist/media/generators/kling.d.ts.map +1 -0
  47. package/dist/media/generators/kling.js +53 -0
  48. package/dist/media/generators/kling.js.map +1 -0
  49. package/dist/media/generators/lyria.d.ts +11 -0
  50. package/dist/media/generators/lyria.d.ts.map +1 -0
  51. package/dist/media/generators/lyria.js +42 -0
  52. package/dist/media/generators/lyria.js.map +1 -0
  53. package/dist/media/generators/nano-banana.d.ts +11 -0
  54. package/dist/media/generators/nano-banana.d.ts.map +1 -0
  55. package/dist/media/generators/nano-banana.js +46 -0
  56. package/dist/media/generators/nano-banana.js.map +1 -0
  57. package/dist/media/generators/recraft.d.ts +10 -0
  58. package/dist/media/generators/recraft.d.ts.map +1 -0
  59. package/dist/media/generators/recraft.js +53 -0
  60. package/dist/media/generators/recraft.js.map +1 -0
  61. package/dist/media/generators/runway.d.ts +10 -0
  62. package/dist/media/generators/runway.d.ts.map +1 -0
  63. package/dist/media/generators/runway.js +58 -0
  64. package/dist/media/generators/runway.js.map +1 -0
  65. package/dist/media/generators/stable-diffusion.d.ts +10 -0
  66. package/dist/media/generators/stable-diffusion.d.ts.map +1 -0
  67. package/dist/media/generators/stable-diffusion.js +36 -0
  68. package/dist/media/generators/stable-diffusion.js.map +1 -0
  69. package/dist/media/generators/veo.d.ts +10 -0
  70. package/dist/media/generators/veo.d.ts.map +1 -0
  71. package/dist/media/generators/veo.js +33 -0
  72. package/dist/media/generators/veo.js.map +1 -0
  73. package/dist/media/index.d.ts +13 -0
  74. package/dist/media/index.d.ts.map +1 -0
  75. package/dist/media/index.js +10 -0
  76. package/dist/media/index.js.map +1 -0
  77. package/dist/media/loader.d.ts +8 -0
  78. package/dist/media/loader.d.ts.map +1 -0
  79. package/dist/media/loader.js +46 -0
  80. package/dist/media/loader.js.map +1 -0
  81. package/dist/media/types.d.ts +22 -0
  82. package/dist/media/types.d.ts.map +1 -0
  83. package/dist/media/types.js +2 -0
  84. package/dist/media/types.js.map +1 -0
  85. package/dist/projects/index.d.ts +4 -0
  86. package/dist/projects/index.d.ts.map +1 -0
  87. package/dist/projects/index.js +3 -0
  88. package/dist/projects/index.js.map +1 -0
  89. package/dist/projects/manager.d.ts +20 -0
  90. package/dist/projects/manager.d.ts.map +1 -0
  91. package/dist/projects/manager.js +135 -0
  92. package/dist/projects/manager.js.map +1 -0
  93. package/dist/projects/router.d.ts +6 -0
  94. package/dist/projects/router.d.ts.map +1 -0
  95. package/dist/projects/router.js +177 -0
  96. package/dist/projects/router.js.map +1 -0
  97. package/dist/projects/types.d.ts +26 -0
  98. package/dist/projects/types.d.ts.map +1 -0
  99. package/dist/projects/types.js +2 -0
  100. package/dist/projects/types.js.map +1 -0
  101. package/dist/session/manager.d.ts +3 -1
  102. package/dist/session/manager.d.ts.map +1 -1
  103. package/dist/session/manager.js +6 -5
  104. package/dist/session/manager.js.map +1 -1
  105. package/dist/types.d.ts +7 -0
  106. package/dist/types.d.ts.map +1 -1
  107. package/dist/types.js.map +1 -1
  108. package/dist/util/progress.d.ts +35 -0
  109. package/dist/util/progress.d.ts.map +1 -0
  110. package/dist/util/progress.js +134 -0
  111. package/dist/util/progress.js.map +1 -0
  112. package/package.json +1 -1
@@ -4,6 +4,7 @@ import { saveMedia, isOversized } from '../media/store.js';
4
4
  import { retryWithBackoff } from '../util/retry.js';
5
5
  import { chunkText, parseTabMessage, buildMediaPrompt } from '../util/text.js';
6
6
  import { inboundLimiter } from '../util/rate-limiter.js';
7
+ import { ProgressTracker } from '../util/progress.js';
7
8
  import { initVoiceProviders } from '../voice/index.js';
8
9
  const WHATSAPP_MAX_LENGTH = 8192;
9
10
  export class WhatsAppChannel {
@@ -159,13 +160,125 @@ export class WhatsAppChannel {
159
160
  if (!text && media.length === 0)
160
161
  return;
161
162
  try {
163
+ // Handle project commands
164
+ if (text === '/projects') {
165
+ const { listProjects } = await import('../projects/index.js');
166
+ const projects = listProjects();
167
+ if (projects.length === 0) {
168
+ await sock.sendMessage(sender, { text: 'No projects found. Create one with /newproject <name>' });
169
+ return;
170
+ }
171
+ const userProjects = projects.filter((p) => p.type === 'user-project');
172
+ const categories = projects.filter((p) => p.type === 'category');
173
+ let msg2 = '📦 Projects:\n';
174
+ if (userProjects.length > 0) {
175
+ msg2 += userProjects.map((p) => ` • ${p.name} — ${p.path}`).join('\n');
176
+ }
177
+ if (categories.length > 0) {
178
+ msg2 += '\n\n📁 Categories:\n';
179
+ msg2 += categories.map((p) => ` • ${p.name}`).join('\n');
180
+ }
181
+ await sock.sendMessage(sender, { text: msg2 });
182
+ return;
183
+ }
184
+ if (text.startsWith('/project ') && !text.startsWith('/projects')) {
185
+ const pname = text.slice(9).trim();
186
+ const { getProject, setUserContext } = await import('../projects/index.js');
187
+ const project = getProject(pname);
188
+ if (!project) {
189
+ await sock.sendMessage(sender, { text: `Project "${pname}" not found. Use /projects to list or /newproject to create.` });
190
+ return;
191
+ }
192
+ const waNumber = sender.replace('@s.whatsapp.net', '');
193
+ setUserContext(waNumber, project.name, project.name);
194
+ await sock.sendMessage(sender, { text: `Switched to project: ${project.name}\nPath: ${project.path}\n\nNext messages will work in this project.` });
195
+ return;
196
+ }
197
+ if (text.startsWith('/newproject ')) {
198
+ const parts = text.slice(12).trim().split(/\s+/);
199
+ const pname = parts[0];
200
+ const customPath = parts[1] || undefined;
201
+ if (!pname) {
202
+ await sock.sendMessage(sender, { text: 'Usage: /newproject <name> [path]' });
203
+ return;
204
+ }
205
+ const { createProject, setUserContext } = await import('../projects/index.js');
206
+ const project = createProject(pname, customPath);
207
+ const waNumber = sender.replace('@s.whatsapp.net', '');
208
+ setUserContext(waNumber, project.name, project.name);
209
+ await sock.sendMessage(sender, { text: `✓ Project "${pname}" created at ${project.path}\nSwitched to this project.` });
210
+ return;
211
+ }
212
+ if (text.startsWith('/close ')) {
213
+ const tabToClose = text.slice(7).trim();
214
+ if (!tabToClose) {
215
+ await sock.sendMessage(sender, { text: 'Usage: /close <tabname>' });
216
+ return;
217
+ }
218
+ const { closeTab } = await import('../projects/index.js');
219
+ const closed = closeTab(tabToClose);
220
+ if (closed) {
221
+ await sock.sendMessage(sender, { text: `Tab "${tabToClose}" permanently closed. History deleted.` });
222
+ }
223
+ else {
224
+ await sock.sendMessage(sender, { text: `Tab "${tabToClose}" not found.` });
225
+ }
226
+ return;
227
+ }
228
+ if (text.startsWith('/fresh ')) {
229
+ const projectName = text.slice(7).trim();
230
+ const { getProject, setUserContext } = await import('../projects/index.js');
231
+ const project = getProject(projectName);
232
+ if (!project) {
233
+ await sock.sendMessage(sender, { text: `Project "${projectName}" not found.` });
234
+ return;
235
+ }
236
+ const freshTab = `${projectName}-${Date.now().toString(36).slice(-4)}`;
237
+ const waNumber = sender.replace('@s.whatsapp.net', '');
238
+ setUserContext(waNumber, project.name, freshTab);
239
+ await sock.sendMessage(sender, { text: `Fresh start in "${projectName}" (tab: ${freshTab})\nSend your message now.` });
240
+ return;
241
+ }
162
242
  const { tabName, prompt: rawPrompt } = parseTabMessage(text);
163
243
  if (!rawPrompt && media.length === 0)
164
244
  return;
165
245
  // Build prompt with media references
166
246
  const prompt = buildMediaPrompt(media, rawPrompt);
247
+ // Smart project routing (if no explicit /tab command)
248
+ let effectiveTabName = tabName;
249
+ let projectPath;
250
+ if (tabName === 'default' && !text.startsWith('/tab ')) {
251
+ try {
252
+ const { routeMessage, setUserContext } = await import('../projects/index.js');
253
+ const waNumber = sender.replace('@s.whatsapp.net', '');
254
+ const decision = routeMessage(rawPrompt, {
255
+ userId: waNumber,
256
+ });
257
+ if (decision.needsConfirmation) {
258
+ const { listProjects } = await import('../projects/index.js');
259
+ const projects = listProjects().filter((p) => p.type === 'user-project');
260
+ const options = projects.map((p, i) => `${i + 1}) ${p.name}`).join('\n');
261
+ await sock.sendMessage(sender, { text: `Which project?\n${options}\n\nReply with the number, or just send your message with /project <name> first.` });
262
+ return;
263
+ }
264
+ effectiveTabName = decision.tabName;
265
+ projectPath = decision.project.path;
266
+ setUserContext(waNumber, decision.project.name, decision.tabName);
267
+ }
268
+ catch (err) {
269
+ logger.warn('Project routing failed, using default:', err);
270
+ }
271
+ }
167
272
  await sock.sendPresenceUpdate('composing', sender).catch(() => { });
168
- const result = await this.ctx.tabManager.sendMessage(tabName, prompt);
273
+ // Progress updates for long tasks (every 30 seconds)
274
+ const progressTracker = new ProgressTracker(effectiveTabName, (msg) => {
275
+ sock.sendMessage(sender, { text: msg }).catch(() => { });
276
+ });
277
+ const result = await this.ctx.tabManager.sendMessage(effectiveTabName, prompt, {
278
+ onToolUse: (name, input) => progressTracker.record(name, input),
279
+ projectPath,
280
+ });
281
+ progressTracker.stop();
169
282
  const responseText = result.error
170
283
  ? `Error: ${result.text}`
171
284
  : result.text || '(empty response)';
@@ -183,7 +296,7 @@ export class WhatsAppChannel {
183
296
  logger.warn('TTS failed, sending text reply:', err);
184
297
  }
185
298
  }
186
- await this.sendResponse(sender, responseText, tabName);
299
+ await this.sendResponse(sender, responseText, effectiveTabName);
187
300
  }
188
301
  catch (err) {
189
302
  logger.error('WhatsApp message handler error:', err);
@@ -1 +1 @@
1
- {"version":3,"file":"whatsapp.js","sourceRoot":"","sources":["../../src/channels/whatsapp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"whatsapp.js","sourceRoot":"","sources":["../../src/channels/whatsapp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIvD,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,MAAM,OAAO,eAAe;IACjB,EAAE,GAAG,UAAU,CAAC;IAChB,IAAI,GAAG,UAAU,CAAC;IAClB,gBAAgB,GAAG,mBAAmB,CAAC;IACvC,iBAAiB,GAAG,KAAK,CAAC;IAC1B,aAAa,GAAG,IAAI,CAAC;IAEtB,IAAI,GAAY,IAAI,CAAC;IACrB,GAAG,CAAiB;IACpB,cAAc,CAAc;IAC5B,iBAAiB,GAAG,CAAC,CAAC;IACb,oBAAoB,GAAG,EAAE,CAAC;IAC1B,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3D,cAAc,GAAiC,IAAI,CAAC;IACpD,WAAW,GAAuB,IAAI,CAAC;IACvC,WAAW,GAAuB,IAAI,CAAC;IAE/C,YAAY,GAAmB;QAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,KAAK;QACT,6BAA6B;QAC7B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/D,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QAEvB,IAAI,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACzI,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,4BAA4B,CAAC;YAC7G,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAE5D,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,qBAAqB,CAAC,WAAW,CAAC,CAAC;YAEtE,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;gBACvB,IAAI,EAAE,KAAK;gBACX,iBAAiB,EAAE,IAAI;aACxB,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,IAAI,CAAC,IAAW,CAAC;YAE9B,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YAEtC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,MAAW,EAAE,EAAE;gBAC9C,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;gBAC9C,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;oBAC3B,MAAM,MAAM,GAAI,cAAc,EAAE,KAAa,EAAE,MAAM,EAAE,UAAU,CAAC;oBAClE,IAAI,MAAM,KAAK,gBAAgB,CAAC,SAAS,EAAE,CAAC;wBAC1C,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBACzB,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;4BACvD,MAAM,CAAC,KAAK,CAAC,mCAAmC,IAAI,CAAC,oBAAoB,sBAAsB,CAAC,CAAC;4BACjG,OAAO;wBACT,CAAC;wBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBACrF,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;wBAC3C,MAAM,CAAC,IAAI,CAAC,+CAA+C,KAAK,GAAG,IAAI,cAAc,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,oBAAoB,MAAM,CAAC,CAAC;wBAChJ,UAAU,CAAC,GAAG,EAAE;4BACd,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gCACvB,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;4BAClD,CAAC,CAAC,CAAC;wBACL,CAAC,EAAE,KAAK,CAAC,CAAC;oBACZ,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;oBAC/D,CAAC;gBACH,CAAC;qBAAM,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;oBACjC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,EAAE,KAAK,EAAE,CAAM,EAAE,EAAE;gBAC7C,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM;oBAAE,OAAO;gBAE5C,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;gBACjC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;oBAAE,OAAO;gBAE/C,mBAAmB;gBACnB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;oBACnC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,kEAAkE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBAC7H,OAAO;gBACT,CAAC;gBAED,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY;oBACnC,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI;oBACrC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO;oBACjC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC;gBAE1C,+BAA+B;gBAC/B,MAAM,eAAe,GAA2C,EAAE,CAAC;gBACnE,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;oBAC7B,eAAe,CAAC,IAAI,CAClB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC;yBACpC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE;wBACpB,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;4BAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAgB,EAAE,KAAK,CAAC,CAAC;4BACpD,OAAO,EAAE,IAAI,EAAE,OAAgB,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,IAAI,YAAY,EAAE,QAAQ,EAAE,CAAC;wBAC3G,CAAC;wBACD,OAAO,IAAI,CAAC;oBACd,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CACrB,CAAC;gBACJ,CAAC;gBACD,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;oBAC7B,eAAe,CAAC,IAAI,CAClB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC;yBACpC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE;wBACpB,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;4BAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;4BACzD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAgB,EAAE,GAAG,CAAC,CAAC;4BAClD,OAAO;gCACL,IAAI,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAsB;gCAC7E,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,IAAI,WAAW;gCAC1D,QAAQ;gCACR,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,IAAI,SAAS;6BACxD,CAAC;wBACJ,CAAC;wBACD,OAAO,IAAI,CAAC;oBACd,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CACrB,CAAC;gBACJ,CAAC;gBACD,IAAI,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;oBAChC,eAAe,CAAC,IAAI,CAClB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC;yBACpC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE;wBACpB,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;4BAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC;4BAC5E,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAgB,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC;4BACrG,OAAO,EAAE,IAAI,EAAE,UAAmB,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,IAAI,0BAA0B,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC;wBAC5L,CAAC;wBACD,OAAO,IAAI,CAAC;oBACd,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CACrB,CAAC;gBACJ,CAAC;gBACD,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;oBAC7B,eAAe,CAAC,IAAI,CAClB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC;yBACpC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE;wBACpB,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;4BAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAgB,EAAE,KAAK,CAAC,CAAC;4BACpD,OAAO,EAAE,IAAI,EAAE,OAAgB,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,IAAI,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC;wBACnK,CAAC;wBACD,OAAO,IAAI,CAAC;oBACd,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CACrB,CAAC;gBACJ,CAAC;gBACD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;gBAC5D,MAAM,KAAK,GAAsB,SAAS;qBACvC,MAAM,CAAC,CAAC,CAAC,EAAuD,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC;qBAChH,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC;gBAEtB,iDAAiD;gBACjD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;wBACxB,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;4BACzC,IAAI,CAAC;gCACH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gCACtE,GAAG,CAAC,OAAO,GAAG,qCAAqC,aAAa,EAAE,CAAC;4BACrE,CAAC;4BAAC,OAAO,GAAG,EAAE,CAAC;gCACb,MAAM,CAAC,IAAI,CAAC,wDAAwD,EAAE,GAAG,CAAC,CAAC;4BAC7E,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO;gBAExC,IAAI,CAAC;oBACH,0BAA0B;oBAC1B,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;wBACzB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;wBAC9D,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;wBAChC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BAC1B,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,uDAAuD,EAAE,CAAC,CAAC;4BAClG,OAAO;wBACT,CAAC;wBACD,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;wBAC5E,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;wBACtE,IAAI,IAAI,GAAG,gBAAgB,CAAC;wBAC5B,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC5B,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC/E,CAAC;wBACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC1B,IAAI,IAAI,sBAAsB,CAAC;4BAC/B,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACjE,CAAC;wBACD,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC/C,OAAO;oBACT,CAAC;oBAED,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;wBAClE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;wBACnC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;wBAC5E,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;wBAClC,IAAI,CAAC,OAAO,EAAE,CAAC;4BACb,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,KAAK,8DAA8D,EAAE,CAAC,CAAC;4BAC1H,OAAO;wBACT,CAAC;wBACD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;wBACvD,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;wBACrD,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,wBAAwB,OAAO,CAAC,IAAI,WAAW,OAAO,CAAC,IAAI,8CAA8C,EAAE,CAAC,CAAC;wBACpJ,OAAO;oBACT,CAAC;oBAED,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;wBACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBACjD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;wBACvB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;wBACzC,IAAI,CAAC,KAAK,EAAE,CAAC;4BACX,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,CAAC,CAAC;4BAC7E,OAAO;wBACT,CAAC;wBACD,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;wBAC/E,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;wBACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;wBACvD,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;wBACrD,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,KAAK,gBAAgB,OAAO,CAAC,IAAI,6BAA6B,EAAE,CAAC,CAAC;wBACvH,OAAO;oBACT,CAAC;oBAED,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;wBACxC,IAAI,CAAC,UAAU,EAAE,CAAC;4BAChB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC;4BACpE,OAAO;wBACT,CAAC;wBACD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;wBAC1D,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;wBACpC,IAAI,MAAM,EAAE,CAAC;4BACX,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,UAAU,wCAAwC,EAAE,CAAC,CAAC;wBACvG,CAAC;6BAAM,CAAC;4BACN,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,UAAU,cAAc,EAAE,CAAC,CAAC;wBAC7E,CAAC;wBACD,OAAO;oBACT,CAAC;oBAED,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;wBACzC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;wBAC5E,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;wBACxC,IAAI,CAAC,OAAO,EAAE,CAAC;4BACb,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,WAAW,cAAc,EAAE,CAAC,CAAC;4BAChF,OAAO;wBACT,CAAC;wBACD,MAAM,QAAQ,GAAG,GAAG,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;wBACvD,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;wBACjD,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,mBAAmB,WAAW,WAAW,QAAQ,2BAA2B,EAAE,CAAC,CAAC;wBACvH,OAAO;oBACT,CAAC;oBAED,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;oBAC7D,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;wBAAE,OAAO;oBAE7C,qCAAqC;oBACrC,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;oBAElD,sDAAsD;oBACtD,IAAI,gBAAgB,GAAG,OAAO,CAAC;oBAC/B,IAAI,WAA+B,CAAC;oBAEpC,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;wBACvD,IAAI,CAAC;4BACH,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;4BAC9E,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;4BACvD,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,EAAE;gCACvC,MAAM,EAAE,QAAQ;6BACjB,CAAC,CAAC;4BAEH,IAAI,QAAQ,CAAC,iBAAiB,EAAE,CAAC;gCAC/B,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;gCAC9D,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;gCAC9E,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gCACtF,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,mBAAmB,OAAO,kFAAkF,EAAE,CAAC,CAAC;gCACvJ,OAAO;4BACT,CAAC;4BAED,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC;4BACpC,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;4BACpC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;wBACpE,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAC;wBAC7D,CAAC;oBACH,CAAC;oBAED,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBAEnE,qDAAqD;oBACrD,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,EAAE;wBACpE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBAC1D,CAAC,CAAC,CAAC;oBAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE;wBAC7E,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;wBAC/D,WAAW;qBACZ,CAAC,CAAC;oBACH,eAAe,CAAC,IAAI,EAAE,CAAC;oBACvB,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK;wBAC/B,CAAC,CAAC,UAAU,MAAM,CAAC,IAAI,EAAE;wBACzB,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,kBAAkB,CAAC;oBAEtC,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBAEhE,sCAAsC;oBACtC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC;oBACxD,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,cAAc,KAAK,OAAO,IAAI,cAAc,KAAK,MAAM,CAAC,EAAE,CAAC;wBAClF,IAAI,CAAC;4BACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;4BAClE,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,wBAAwB,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;4BAC7G,IAAI,cAAc,KAAK,OAAO;gCAAE,OAAO,CAAC,kBAAkB;wBAC5D,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;wBACtD,CAAC;oBACH,CAAC;oBAED,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;gBAClE,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;oBACrD,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,8EAA8E,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAC3I,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;YACtD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,IAAI;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAW,CAAC;QAC9B,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,IAAY,EAAE,QAAsB;QACpE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAW,CAAC;QAC9B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACpD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,gBAAgB,CACpB,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAC/C,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EACnB,eAAe,CAChB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAe,EAAE,OAAiB;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAW,CAAC;QAC9B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,MAAM,iBAAiB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACxE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,2CAA2C,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,MAAe;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAW,CAAC;QAC9B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC/C,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,SAAS,CAAC,OAA8B;QACtC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IAED,kBAAkB;IAEV,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,IAAY,EAAE,OAAgB;QACpE,MAAM,MAAM,GAAG,OAAO,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,EAAE,mBAAmB,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAW,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,gBAAgB,CACpB,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAC5C,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EACnB,eAAe,CAChB,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,gCAAgC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,GAAW;QAC3B,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACjD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ export declare function mediaSetup(): Promise<void>;
2
+ export declare function mediaList(): void;
3
+ //# sourceMappingURL=media.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/cli/media.ts"],"names":[],"mappings":"AA0BA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAiFhD;AAED,wBAAgB,SAAS,IAAI,IAAI,CAahC"}
@@ -0,0 +1,113 @@
1
+ import readline from 'node:readline';
2
+ function ask(rl, question, defaultValue) {
3
+ const prompt = defaultValue ? `${question} [${defaultValue}]: ` : `${question}: `;
4
+ return new Promise(r => rl.question(prompt, a => r(a.trim() || defaultValue || '')));
5
+ }
6
+ const IMAGE_PROVIDERS = [
7
+ { id: 'nano-banana', name: 'Google Nano Banana', keyHint: 'Google AI API key (from ai.google.dev)' },
8
+ { id: 'dall-e', name: 'DALL-E (OpenAI)', keyHint: 'OpenAI API key (sk-...)' },
9
+ { id: 'stable-diffusion', name: 'Stable Diffusion (Stability AI)', keyHint: 'Stability AI API key' },
10
+ { id: 'recraft', name: 'Recraft (Images + SVG Vectors)', keyHint: 'Recraft API key' },
11
+ ];
12
+ const VIDEO_PROVIDERS = [
13
+ { id: 'runway', name: 'Runway Gen-3', keyHint: 'Runway API key' },
14
+ { id: 'veo', name: 'Google Veo', keyHint: 'Google AI API key' },
15
+ { id: 'kling', name: 'Kling AI', keyHint: 'Kling API key' },
16
+ ];
17
+ const AUDIO_PROVIDERS = [
18
+ { id: 'elevenlabs-music', name: 'ElevenLabs Music', keyHint: 'ElevenLabs API key (xi-...)' },
19
+ { id: 'lyria', name: 'Google Lyria (Music)', keyHint: 'Google AI API key (from ai.google.dev)' },
20
+ { id: 'elevenlabs-sfx', name: 'ElevenLabs Sound Effects', keyHint: 'ElevenLabs API key (xi-...)' },
21
+ ];
22
+ export async function mediaSetup() {
23
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
24
+ const { getConfig, saveConfig } = await import('../config.js');
25
+ const config = getConfig();
26
+ const generators = config.mediaGenerators || [];
27
+ console.log('\nMedia Generation Setup\n');
28
+ console.log('Configure AI providers for generating images, videos, and audio.');
29
+ console.log('You need API keys from each provider.\n');
30
+ console.log('Already configured: ' + (generators.length > 0 ? generators.map(g => g.provider).join(', ') : 'none'));
31
+ console.log('');
32
+ // Image providers
33
+ console.log('Image Generation:');
34
+ for (let i = 0; i < IMAGE_PROVIDERS.length; i++) {
35
+ console.log(` ${i + 1}) ${IMAGE_PROVIDERS[i].name}`);
36
+ }
37
+ const imgChoice = await ask(rl, 'Add image provider? (number or Enter to skip)');
38
+ if (imgChoice) {
39
+ const idx = parseInt(imgChoice) - 1;
40
+ if (idx >= 0 && idx < IMAGE_PROVIDERS.length) {
41
+ const provider = IMAGE_PROVIDERS[idx];
42
+ const apiKey = await ask(rl, ` ${provider.keyHint}`);
43
+ if (apiKey) {
44
+ // Remove existing same provider if any
45
+ const filtered = generators.filter(g => g.provider !== provider.id);
46
+ filtered.push({ provider: provider.id, apiKey });
47
+ generators.length = 0;
48
+ generators.push(...filtered);
49
+ console.log(` ✓ ${provider.name} configured\n`);
50
+ }
51
+ }
52
+ }
53
+ // Video providers
54
+ console.log('\nVideo Generation:');
55
+ for (let i = 0; i < VIDEO_PROVIDERS.length; i++) {
56
+ console.log(` ${i + 1}) ${VIDEO_PROVIDERS[i].name}`);
57
+ }
58
+ const vidChoice = await ask(rl, 'Add video provider? (number or Enter to skip)');
59
+ if (vidChoice) {
60
+ const idx = parseInt(vidChoice) - 1;
61
+ if (idx >= 0 && idx < VIDEO_PROVIDERS.length) {
62
+ const provider = VIDEO_PROVIDERS[idx];
63
+ const apiKey = await ask(rl, ` ${provider.keyHint}`);
64
+ if (apiKey) {
65
+ const filtered = generators.filter(g => g.provider !== provider.id);
66
+ filtered.push({ provider: provider.id, apiKey });
67
+ generators.length = 0;
68
+ generators.push(...filtered);
69
+ console.log(` ✓ ${provider.name} configured\n`);
70
+ }
71
+ }
72
+ }
73
+ // Audio providers
74
+ console.log('\nAudio/Music Generation:');
75
+ for (let i = 0; i < AUDIO_PROVIDERS.length; i++) {
76
+ console.log(` ${i + 1}) ${AUDIO_PROVIDERS[i].name}`);
77
+ }
78
+ const audChoice = await ask(rl, 'Add audio provider? (number or Enter to skip)');
79
+ if (audChoice) {
80
+ const idx = parseInt(audChoice) - 1;
81
+ if (idx >= 0 && idx < AUDIO_PROVIDERS.length) {
82
+ const provider = AUDIO_PROVIDERS[idx];
83
+ const apiKey = await ask(rl, ` ${provider.keyHint}`);
84
+ if (apiKey) {
85
+ const filtered = generators.filter(g => g.provider !== provider.id);
86
+ filtered.push({ provider: provider.id, apiKey });
87
+ generators.length = 0;
88
+ generators.push(...filtered);
89
+ console.log(` ✓ ${provider.name} configured\n`);
90
+ }
91
+ }
92
+ }
93
+ config.mediaGenerators = generators;
94
+ saveConfig(config);
95
+ console.log(`\n✓ ${generators.length} media provider(s) configured.`);
96
+ console.log('Restart daemon to activate: beecork stop && beecork start\n');
97
+ rl.close();
98
+ }
99
+ export function mediaList() {
100
+ const { getConfig } = require('../config.js');
101
+ const config = getConfig();
102
+ const generators = config.mediaGenerators || [];
103
+ if (generators.length === 0) {
104
+ console.log('No media generators configured. Run: beecork media');
105
+ return;
106
+ }
107
+ console.log(`\n${generators.length} media provider(s):\n`);
108
+ for (const g of generators) {
109
+ console.log(` ${g.provider}${g.model ? ` (${g.model})` : ''} — API key: ${g.apiKey.slice(0, 8)}...`);
110
+ }
111
+ console.log('');
112
+ }
113
+ //# sourceMappingURL=media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/cli/media.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"AA4BA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAuKjD"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"AA6BA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAqVjD"}
package/dist/cli/setup.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import readline from 'node:readline';
2
+ import crypto from 'node:crypto';
2
3
  import { execSync } from 'node:child_process';
3
4
  import fs from 'node:fs';
4
5
  import path from 'node:path';
@@ -29,22 +30,41 @@ export async function setupWizard() {
29
30
  console.log('This wizard will configure Beecork to make Claude Code always-on.\n');
30
31
  try {
31
32
  // 0. Auto-detect Claude Code
33
+ let claudeCodeMissing = false;
32
34
  console.log('Checking prerequisites...\n');
33
35
  try {
34
36
  const version = execSync('claude --version 2>&1', { encoding: 'utf-8' }).trim();
35
37
  console.log(` \u2713 Claude Code found: ${version}`);
36
38
  }
37
39
  catch {
38
- console.log(' \u2717 Claude Code not found. Install: npm install -g @anthropic-ai/claude-code');
40
+ claudeCodeMissing = true;
41
+ console.log(' \u2717 Claude Code is not installed yet.');
42
+ console.log('');
43
+ console.log(' Claude Code is the AI brain that Beecork connects to.');
44
+ console.log(' You need a Claude Pro or Max subscription ($20/month) from anthropic.com');
45
+ console.log(' Then install it: npm install -g @anthropic-ai/claude-code');
46
+ console.log('');
47
+ console.log(' You can continue setup now and install Claude Code afterwards.');
48
+ console.log(' Beecork will remind you at the end.');
49
+ console.log('');
50
+ console.log(' Guide: https://support.beecork.com/claude-code-setup');
39
51
  }
40
52
  console.log('');
41
53
  // 1. Telegram token with step-by-step instructions
42
54
  console.log('Step 1: Create a Telegram Bot');
43
- console.log(' 1. Open Telegram and search for @BotFather');
44
- console.log(' 2. Send /newbot');
45
- console.log(' 3. Choose a name (e.g., "My Beecork")');
46
- console.log(' 4. Choose a username (must end in "bot", e.g., "mybeecork_bot")');
47
- console.log(' 5. Copy the token BotFather gives you\n');
55
+ console.log('');
56
+ console.log(' A Telegram bot is your personal AI phone number.');
57
+ console.log(' Only you can talk to it — nobody else can access your Claude.');
58
+ console.log('');
59
+ console.log(' How to create one:');
60
+ console.log(' 1. Open Telegram on your phone');
61
+ console.log(' 2. Search for @BotFather (it has a blue checkmark)');
62
+ console.log(' 3. Tap "Start" and then send: /newbot');
63
+ console.log(' 4. Choose a display name (e.g., "My Beecork")');
64
+ console.log(' 5. Choose a username ending in "bot" (e.g., "mybeecork_bot")');
65
+ console.log(' 6. BotFather will reply with a token — copy it');
66
+ console.log('');
67
+ console.log(' Detailed guide: https://support.beecork.com/telegram-setup\n');
48
68
  let token = '';
49
69
  while (!token) {
50
70
  token = await ask(rl, 'Paste your Telegram Bot token');
@@ -70,9 +90,16 @@ export async function setupWizard() {
70
90
  }
71
91
  // 2. Telegram user ID
72
92
  console.log('Step 2: Find your Telegram User ID');
93
+ console.log('');
94
+ console.log(' Your user ID tells Beecork who is allowed to use the bot.');
95
+ console.log(' Without it, anyone who finds your bot could use your Claude.');
96
+ console.log('');
97
+ console.log(' How to find it:');
73
98
  console.log(' 1. Search for @userinfobot on Telegram');
74
- console.log(' 2. Send it any message');
75
- console.log(' 3. It will reply with your user ID (a number like 123456789)\n');
99
+ console.log(' 2. Tap "Start" and send it any message');
100
+ console.log(' 3. It replies with your user ID (a number like 123456789)');
101
+ console.log('');
102
+ console.log(' Detailed guide: https://support.beecork.com/telegram-setup\n');
76
103
  const userIdStr = await ask(rl, 'Your Telegram user ID');
77
104
  const userId = parseInt(userIdStr, 10);
78
105
  if (isNaN(userId)) {
@@ -131,6 +158,139 @@ export async function setupWizard() {
131
158
  },
132
159
  deployment: 'local',
133
160
  };
161
+ // Optional: Additional channels
162
+ console.log('\nOptional: Add more channels\n');
163
+ console.log('You can also connect via WhatsApp, Discord, or Webhooks.');
164
+ console.log('You can always add these later with: beecork discord, beecork whatsapp, etc.\n');
165
+ const addDiscord = await ask(rl, 'Set up Discord? (y/n)', 'n');
166
+ if (addDiscord.toLowerCase() === 'y') {
167
+ console.log('\nDiscord Setup:');
168
+ console.log(' 1. Go to https://discord.com/developers/applications');
169
+ console.log(' 2. Click "New Application", give it a name');
170
+ console.log(' 3. Go to Bot → click "Add Bot"');
171
+ console.log(' 4. Copy the bot token');
172
+ console.log(' 5. Under Bot → enable "Message Content Intent"');
173
+ console.log(' 6. Use OAuth2 URL Generator to invite bot to your server');
174
+ console.log('');
175
+ console.log(' Detailed guide: https://support.beecork.com/discord-setup\n');
176
+ const discordToken = await ask(rl, 'Discord bot token (or press Enter to skip)');
177
+ if (discordToken) {
178
+ const discordUserId = await ask(rl, 'Your Discord user ID (right-click your name → Copy User ID)');
179
+ config.discord = {
180
+ token: discordToken,
181
+ allowedUserIds: discordUserId ? [discordUserId] : [],
182
+ };
183
+ console.log(' ✓ Discord configured\n');
184
+ }
185
+ }
186
+ const addWhatsApp = await ask(rl, 'Set up WhatsApp? (y/n)', 'n');
187
+ if (addWhatsApp.toLowerCase() === 'y') {
188
+ console.log('\nWhatsApp Setup:');
189
+ console.log(' WhatsApp connects via QR code scanning (like WhatsApp Web).');
190
+ console.log(' When you start the daemon, a QR code appears in the terminal.');
191
+ console.log(' Scan it with your phone to link your WhatsApp account.');
192
+ console.log('');
193
+ console.log(' Note: This uses reverse-engineered WhatsApp Web protocol.');
194
+ console.log(' For personal use only — not officially supported by WhatsApp.');
195
+ console.log('');
196
+ console.log(' Guide: https://support.beecork.com/whatsapp-setup\n');
197
+ const waNumber = await ask(rl, 'Your WhatsApp phone number (e.g., 14155551234)');
198
+ if (waNumber) {
199
+ config.whatsapp = {
200
+ enabled: true,
201
+ mode: 'baileys',
202
+ sessionPath: `${getBeecorkHome()}/whatsapp-session`,
203
+ allowedNumbers: [waNumber],
204
+ };
205
+ console.log(' ✓ WhatsApp configured (scan QR code when daemon starts)\n');
206
+ }
207
+ }
208
+ const addWebhook = await ask(rl, 'Enable Webhook API? (y/n)', 'n');
209
+ if (addWebhook.toLowerCase() === 'y') {
210
+ const webhookPort = await ask(rl, 'Webhook port', '8374');
211
+ const webhookToken = await ask(rl, 'Webhook auth token (press Enter to auto-generate)');
212
+ const whToken = webhookToken || crypto.randomBytes(24).toString('base64url');
213
+ config.webhook = {
214
+ enabled: true,
215
+ port: parseInt(webhookPort),
216
+ authToken: whToken,
217
+ };
218
+ console.log(` ✓ Webhook enabled on port ${webhookPort}`);
219
+ if (!webhookToken)
220
+ console.log(` Auth token: ${whToken}\n`);
221
+ }
222
+ // Optional: Media generation
223
+ console.log('\nOptional: Media Generation\n');
224
+ console.log('Beecork can generate images, videos, and music using AI providers.');
225
+ console.log('You can add these later with: beecork media\n');
226
+ const addMedia = await ask(rl, 'Set up media generation? (y/n)', 'n');
227
+ if (addMedia.toLowerCase() === 'y') {
228
+ const mediaGenerators = [];
229
+ console.log('\nImage: 1) Nano Banana (Google) 2) DALL-E (OpenAI) 3) Stable Diffusion 4) Recraft (Vectors)');
230
+ const imgChoice = await ask(rl, 'Choose image provider (1/2/3/4 or Enter to skip)');
231
+ if (imgChoice === '1') {
232
+ const key = await ask(rl, ' Google AI API key (from ai.google.dev)');
233
+ if (key)
234
+ mediaGenerators.push({ provider: 'nano-banana', apiKey: key });
235
+ }
236
+ else if (imgChoice === '2') {
237
+ const key = await ask(rl, ' OpenAI API key');
238
+ if (key)
239
+ mediaGenerators.push({ provider: 'dall-e', apiKey: key });
240
+ }
241
+ else if (imgChoice === '3') {
242
+ const key = await ask(rl, ' Stability AI API key');
243
+ if (key)
244
+ mediaGenerators.push({ provider: 'stable-diffusion', apiKey: key });
245
+ }
246
+ else if (imgChoice === '4') {
247
+ const key = await ask(rl, ' Recraft API key');
248
+ if (key)
249
+ mediaGenerators.push({ provider: 'recraft', apiKey: key });
250
+ }
251
+ console.log('\nVideo: 1) Runway 2) Veo 3) Kling');
252
+ const vidChoice = await ask(rl, 'Choose video provider (1/2/3 or Enter to skip)');
253
+ if (vidChoice === '1') {
254
+ const key = await ask(rl, ' Runway API key');
255
+ if (key)
256
+ mediaGenerators.push({ provider: 'runway', apiKey: key });
257
+ }
258
+ else if (vidChoice === '2') {
259
+ const key = await ask(rl, ' Google AI API key');
260
+ if (key)
261
+ mediaGenerators.push({ provider: 'veo', apiKey: key });
262
+ }
263
+ else if (vidChoice === '3') {
264
+ const key = await ask(rl, ' Kling API key');
265
+ if (key)
266
+ mediaGenerators.push({ provider: 'kling', apiKey: key });
267
+ }
268
+ console.log('\nAudio/Music: 1) ElevenLabs Music 2) Google Lyria 3) ElevenLabs SFX');
269
+ const audChoice = await ask(rl, 'Choose audio provider (1/2/3 or Enter to skip)');
270
+ if (audChoice === '1') {
271
+ const key = await ask(rl, ' ElevenLabs API key (xi-...)');
272
+ if (key)
273
+ mediaGenerators.push({ provider: 'elevenlabs-music', apiKey: key });
274
+ }
275
+ else if (audChoice === '2') {
276
+ const key = await ask(rl, ' Google AI API key (from ai.google.dev)');
277
+ if (key)
278
+ mediaGenerators.push({ provider: 'lyria', apiKey: key });
279
+ }
280
+ else if (audChoice === '3') {
281
+ const key = await ask(rl, ' ElevenLabs API key (xi-...)');
282
+ if (key)
283
+ mediaGenerators.push({ provider: 'elevenlabs-sfx', apiKey: key });
284
+ }
285
+ if (mediaGenerators.length > 0) {
286
+ config.mediaGenerators = mediaGenerators;
287
+ console.log(`\n ✓ ${mediaGenerators.length} media provider(s) configured`);
288
+ }
289
+ }
290
+ console.log('You can add or change channels later with:');
291
+ console.log(' beecork discord — add/reconfigure Discord');
292
+ console.log(' beecork whatsapp — add/reconfigure WhatsApp');
293
+ console.log(' beecork dashboard — manage everything from the web UI\n');
134
294
  // Write everything
135
295
  ensureBeecorkDirs();
136
296
  saveConfig(config);
@@ -169,9 +329,27 @@ export async function setupWizard() {
169
329
  }
170
330
  }
171
331
  console.log('\n✅ Setup complete!\n');
172
- console.log(' Start the daemon: beecork start');
173
- console.log(' Then send a message to your Telegram bot to test.\n');
174
- console.log(' Run "beecork quickstart" for a full getting-started checklist.\n');
332
+ if (claudeCodeMissing) {
333
+ console.log(' ⚠️ IMPORTANT: Install Claude Code before starting the daemon:');
334
+ console.log('');
335
+ console.log(' npm install -g @anthropic-ai/claude-code');
336
+ console.log('');
337
+ console.log(' You also need a Claude Pro or Max subscription ($20/month).');
338
+ console.log(' Sign up at: https://claude.ai');
339
+ console.log(' Guide: https://support.beecork.com/claude-code-setup');
340
+ console.log('');
341
+ }
342
+ console.log(' Next steps:');
343
+ console.log(' 1. Start the daemon: beecork start');
344
+ console.log(' 2. Send a message to your Telegram bot');
345
+ console.log(' 3. Check status: beecork status');
346
+ console.log('');
347
+ console.log(' Useful commands:');
348
+ console.log(' beecork doctor — check if everything is working');
349
+ console.log(' beecork dashboard — open web control panel');
350
+ console.log(' beecork quickstart — full getting-started checklist');
351
+ console.log('');
352
+ console.log(' Need help? https://support.beecork.com\n');
175
353
  }
176
354
  finally {
177
355
  rl.close();
@@ -220,16 +398,31 @@ const BEECORK_CLAUDE_MD = `${BEECORK_MARKER_START}
220
398
 
221
399
  You have Beecork MCP tools available when running inside Beecork:
222
400
 
223
- - **beecork_remember**Store facts in long-term memory (preferences, addresses, decisions)
224
- - **beecork_recall**Search memories. Call this at the start of complex tasks.
225
- - **beecork_cron_create** Schedule tasks: "at" (one-time), "every" (interval), "cron" (expression)
226
- - **beecork_cron_list / beecork_cron_delete**Manage scheduled tasks
227
- - **beecork_tab_create / beecork_tab_list**Manage virtual tabs
228
- - **beecork_send_message**Send message to another tab
229
- - **beecork_notify**Notify the user mid-task without stopping
230
- - **beecork_status**Check system status
401
+ **Memory:** beecork_remember, beecork_recall store and search long-term memory
402
+ **Scheduling:** beecork_cron_create/list/delete schedule recurring tasks
403
+ **Tabs:** beecork_tab_create/list, beecork_send_message manage virtual tabs
404
+ **Communication:** beecork_notify, beecork_send_medianotify user, send files
405
+ **Delegation:** beecork_delegate, beecork_delegation_statusdelegate tasks to other tabs
406
+ **Media:** beecork_generate_image/video/audio generate media via AI providers
407
+ **Projects:** beecork_project_create/list manage projects
408
+ **Observability:** beecork_cost, beecork_activity, beecork_status — track spending and activity
409
+ **Handoff:** beecork_handoff — export session for terminal resume
410
+
411
+ ### Self-Extension
412
+
413
+ You can install new capabilities for yourself. If the user asks for a tool or media provider that isn't configured:
414
+
415
+ 1. Check if a community package exists: \`beecork-media-<name>\` or \`beecork-channel-<name>\` on npm
416
+ 2. Install it: \`npm install -g beecork-media-<name>\`
417
+ 3. Or create a custom MCP server: write a Node.js script wrapping the API, register in \`~/.beecork/mcp-config.json\`
418
+ 4. Tell the user to restart: \`beecork stop && beecork start\`
419
+
420
+ ### Guidelines
231
421
 
232
- When running unattended: always call beecork_recall first, always beecork_remember important outcomes, use beecork_notify for progress on long tasks.
422
+ - Always call beecork_recall at the start of complex tasks
423
+ - Always beecork_remember important outcomes and decisions
424
+ - Use beecork_notify for progress on long tasks
425
+ - Use beecork_delegate for independent subtasks that need their own workspace
233
426
  ${BEECORK_MARKER_END}`;
234
427
  function injectClaudeMd() {
235
428
  const claudeMdPath = path.join(os.homedir(), '.claude', 'CLAUDE.md');