@genspark/cli 1.0.8 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.d.ts CHANGED
@@ -13,7 +13,9 @@ export declare class ApiClient {
13
13
  private timeout;
14
14
  private debugMode;
15
15
  private projectId?;
16
+ private options;
16
17
  constructor(options: GlobalOptions);
18
+ getOptions(): GlobalOptions;
17
19
  private request;
18
20
  /**
19
21
  * Simple JSON request (non-streaming) for endpoints that return plain JSON.
@@ -27,6 +29,28 @@ export declare class ApiClient {
27
29
  * Execute any tool by name with arguments
28
30
  */
29
31
  executeTool(toolName: string, args: Record<string, unknown>): Promise<ApiResponse>;
32
+ /**
33
+ * Send a message to a task agent (streaming).
34
+ * Calls the /agent_ask endpoint for multi-turn agent conversation.
35
+ * Pass projectId=null for the first call to create a new project.
36
+ * onDebug is called for each heartbeat/debug message during processing.
37
+ */
38
+ agentAsk(projectId: string | null, message: string, taskType: string, onDebug?: (msg: {
39
+ message: string;
40
+ [key: string]: unknown;
41
+ }) => void, signal?: AbortSignal): Promise<ApiResponse>;
42
+ /**
43
+ * Reconnect to an in-progress agent's event stream (streaming).
44
+ * Returns the agent's response if still running, or {message: "no_running_agent"} if done.
45
+ */
46
+ agentAskEvents(projectId: string, taskType: string, onDebug?: (msg: {
47
+ message: string;
48
+ [key: string]: unknown;
49
+ }) => void, signal?: AbortSignal): Promise<ApiResponse>;
50
+ /**
51
+ * Export a task agent's artifact to a downloadable file (docx, pptx, xlsx).
52
+ */
53
+ exportArtifact(projectId: string, taskType: string, format?: string): Promise<ApiResponse>;
30
54
  /**
31
55
  * Get a pre-signed URL for uploading a file
32
56
  */
@@ -51,6 +75,6 @@ export declare class ApiClient {
51
75
  requestStreaming<T>(endpoint: string, body: unknown, onDebug: (msg: {
52
76
  message: string;
53
77
  [key: string]: unknown;
54
- }) => void): Promise<ApiResponse<T>>;
78
+ }) => void, externalSignal?: AbortSignal): Promise<ApiResponse<T>>;
55
79
  }
56
80
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,YAAY,CAAA;AAEnB;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,KAAK,GAAG,MAAc,EAC9B,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,CAAC,CAAC,CAoBZ;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAC,CAAQ;gBAEd,OAAO,EAAE,aAAa;YAQpB,OAAO;IA+JrB;;OAEG;YACW,WAAW;IAoDzB;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAS5C;;OAEG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,WAAW,CAAC;IAIvB;;OAEG;IACG,YAAY,CAChB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;IAQ9C;;OAEG;IACG,cAAc,CAClB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAI7C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC;IAIhC;;OAEG;IACG,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAKzE;;;;OAIG;IACG,gBAAgB,CAAC,CAAC,EACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,IAAI,GAClE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAmG3B"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,YAAY,CAAA;AAEnB;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,KAAK,GAAG,MAAc,EAC9B,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,CAAC,CAAC,CAoBZ;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAC,CAAQ;IAE1B,OAAO,CAAC,OAAO,CAAe;gBAElB,OAAO,EAAE,aAAa;IASlC,UAAU,IAAI,aAAa;YAIb,OAAO;IA+JrB;;OAEG;YACW,WAAW;IAoDzB;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAS5C;;OAEG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,WAAW,CAAC;IAIvB;;;;;OAKG;IACG,QAAQ,CACZ,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,IAAI,EACpE,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,CAAC;IAgBvB;;;OAGG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,IAAI,EACpE,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,CAAC;IAYvB;;OAEG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAe,GACtB,OAAO,CAAC,WAAW,CAAC;IAQvB;;OAEG;IACG,YAAY,CAChB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;IAQ9C;;OAEG;IACG,cAAc,CAClB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAI7C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC;IAIhC;;OAEG;IACG,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAKzE;;;;OAIG;IACG,gBAAgB,CAAC,CAAC,EACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,IAAI,EACnE,cAAc,CAAC,EAAE,WAAW,GAC3B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAwH3B"}
package/dist/client.js CHANGED
@@ -29,13 +29,18 @@ export class ApiClient {
29
29
  timeout;
30
30
  debugMode;
31
31
  projectId;
32
+ options;
32
33
  constructor(options) {
34
+ this.options = options;
33
35
  this.baseUrl = options.baseUrl.replace(/\/$/, '');
34
36
  this.apiKey = options.apiKey || '';
35
37
  this.timeout = options.timeout;
36
38
  this.debugMode = options.debug;
37
39
  this.projectId = options.projectId;
38
40
  }
41
+ getOptions() {
42
+ return this.options;
43
+ }
39
44
  async request(endpoint, method = 'GET', body) {
40
45
  const url = `${this.baseUrl}/api/tool_cli${endpoint}`;
41
46
  debug(`Request: ${method} ${url}`);
@@ -228,6 +233,42 @@ export class ApiClient {
228
233
  async executeTool(toolName, args) {
229
234
  return this.request(`/${toolName}`, 'POST', args);
230
235
  }
236
+ /**
237
+ * Send a message to a task agent (streaming).
238
+ * Calls the /agent_ask endpoint for multi-turn agent conversation.
239
+ * Pass projectId=null for the first call to create a new project.
240
+ * onDebug is called for each heartbeat/debug message during processing.
241
+ */
242
+ async agentAsk(projectId, message, taskType, onDebug, signal) {
243
+ const body = {
244
+ message,
245
+ task_type: taskType,
246
+ };
247
+ if (projectId) {
248
+ body.project_id = projectId;
249
+ }
250
+ return this.requestStreaming('/agent_ask', body, onDebug || (() => { }), signal);
251
+ }
252
+ /**
253
+ * Reconnect to an in-progress agent's event stream (streaming).
254
+ * Returns the agent's response if still running, or {message: "no_running_agent"} if done.
255
+ */
256
+ async agentAskEvents(projectId, taskType, onDebug, signal) {
257
+ return this.requestStreaming('/agent_ask_events', {
258
+ project_id: projectId,
259
+ task_type: taskType,
260
+ }, onDebug || (() => { }), signal);
261
+ }
262
+ /**
263
+ * Export a task agent's artifact to a downloadable file (docx, pptx, xlsx).
264
+ */
265
+ async exportArtifact(projectId, taskType, format = 'auto') {
266
+ return this.request('/export_artifact', 'POST', {
267
+ project_id: projectId,
268
+ task_type: taskType,
269
+ format,
270
+ });
271
+ }
231
272
  /**
232
273
  * Get a pre-signed URL for uploading a file
233
274
  */
@@ -258,7 +299,7 @@ export class ApiClient {
258
299
  * Calls onDebug for each debug/heartbeat message and returns the final result.
259
300
  * Suitable for long-running operations like phone calls.
260
301
  */
261
- async requestStreaming(endpoint, body, onDebug) {
302
+ async requestStreaming(endpoint, body, onDebug, externalSignal) {
262
303
  const url = `${this.baseUrl}/api/tool_cli${endpoint}`;
263
304
  debug(`Streaming request: POST ${url}`);
264
305
  const headers = {
@@ -270,9 +311,15 @@ export class ApiClient {
270
311
  headers['X-Project-ID'] = this.projectId;
271
312
  if (this.debugMode)
272
313
  headers['X-Debug'] = 'true';
273
- // Use a long timeout for phone calls (10 minutes)
314
+ // Use a long timeout (10 minutes), but also respect external signal for cancellation
274
315
  const controller = new AbortController();
275
- const timeoutId = setTimeout(() => controller.abort(), 600000);
316
+ // 1 hour matches backend internal forwarding timeout
317
+ const timeoutId = setTimeout(() => controller.abort(), 3600000);
318
+ if (externalSignal) {
319
+ externalSignal.addEventListener('abort', () => controller.abort(), {
320
+ once: true,
321
+ });
322
+ }
276
323
  try {
277
324
  info(`Calling ${endpoint}...`);
278
325
  const response = await fetch(url, {
@@ -286,7 +333,11 @@ export class ApiClient {
286
333
  if (!response.ok) {
287
334
  clearTimeout(timeoutId);
288
335
  const errorText = await response.text();
289
- return { status: 'error', message: `HTTP ${response.status}: ${errorText}`, data: null };
336
+ return {
337
+ status: 'error',
338
+ message: `HTTP ${response.status}: ${errorText}`,
339
+ data: null,
340
+ };
290
341
  }
291
342
  if (!response.body) {
292
343
  clearTimeout(timeoutId);
@@ -340,12 +391,21 @@ export class ApiClient {
340
391
  }
341
392
  }
342
393
  clearTimeout(timeoutId);
343
- return finalResult || { status: 'error', message: 'No final result in stream', data: null };
394
+ return (finalResult || {
395
+ status: 'error',
396
+ message: 'No final result in stream',
397
+ data: null,
398
+ });
344
399
  }
345
400
  catch (err) {
346
401
  clearTimeout(timeoutId);
347
402
  if (err instanceof Error && err.name === 'AbortError') {
348
- return { status: 'error', message: 'Request timeout (phone call took too long)', data: null };
403
+ // Re-throw if aborted by external signal (e.g., session/cancel)
404
+ // so callers can distinguish cancellation from timeout
405
+ if (externalSignal?.aborted) {
406
+ throw err;
407
+ }
408
+ return { status: 'error', message: 'Request timeout', data: null };
349
409
  }
350
410
  return { status: 'error', message: err.message, data: null };
351
411
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -32,7 +32,7 @@ import { checkForUpdates } from './updater.js';
32
32
  const require = createRequire(import.meta.url);
33
33
  const { version: VERSION } = require('../package.json');
34
34
  const DEFAULT_BASE_URL = 'https://www.genspark.ai';
35
- const DEFAULT_TIMEOUT = 300000; // 5 minutes (video generation can be slow)
35
+ const DEFAULT_TIMEOUT = 1800000; // 30 minutes (slides/video generation can be slow)
36
36
  // Load config file (lowest priority)
37
37
  const fileConfig = loadConfigFile();
38
38
  // Create main program
@@ -268,12 +268,17 @@ async function uploadToAiDrive(filePath, uploadPath, override = false) {
268
268
  throw new Error(`Unexpected response from AI Drive upload: ${responseBody.substring(0, 200)}`);
269
269
  }
270
270
  }
271
- async function downloadToFile(wrapperUrl, savePath, client) {
271
+ async function downloadToFile(url, savePath, client) {
272
272
  info(`Downloading to ${savePath}...`);
273
- const result = await client.getDownloadUrl({ file_wrapper_url: wrapperUrl });
274
- if (result.status !== 'ok' || !result.data)
275
- throw new Error(`Failed to get download URL: ${result.message}`);
276
- const resp = await fetch(result.data.download_url);
273
+ let downloadUrl = url;
274
+ // File wrapper URLs need to be resolved via /file/download first
275
+ if (url.includes('/api/files/')) {
276
+ const result = await client.getDownloadUrl({ file_wrapper_url: url });
277
+ if (result.status !== 'ok' || !result.data)
278
+ throw new Error(`Failed to get download URL: ${result.message}`);
279
+ downloadUrl = result.data.download_url;
280
+ }
281
+ const resp = await fetch(downloadUrl);
277
282
  if (!resp.ok)
278
283
  throw new Error(`Download failed: HTTP ${resp.status}`);
279
284
  const buffer = Buffer.from(await resp.arrayBuffer());
@@ -389,7 +394,9 @@ function registerToolCommand(parentProgram, tool, clientFactory) {
389
394
  for (const [name, param] of Object.entries(props)) {
390
395
  if (name === tool.cli.primary_arg)
391
396
  continue;
392
- const isRequired = required.includes(name);
397
+ // For create_task, make params optional so --acp mode works without them.
398
+ // Validation of required params happens in the action handler.
399
+ const isRequired = tool.name === 'create_task' ? false : required.includes(name);
393
400
  const paramType = Array.isArray(param.type) ? param.type[0] : param.type;
394
401
  const shortAlias = aliases[name];
395
402
  const shortPrefix = shortAlias ? `-${shortAlias}, ` : '';
@@ -420,6 +427,11 @@ function registerToolCommand(parentProgram, tool, clientFactory) {
420
427
  if (outputFileKeys.length > 0) {
421
428
  cmd.option('-o, --output-file <path>', 'Download the generated file to a local path');
422
429
  }
430
+ // For create_task, add --acp flag to enter ACP stdio bridge mode
431
+ if (tool.name === 'create_task') {
432
+ cmd.option('--acp', 'Start as ACP (Agent Client Protocol) stdio agent instead of one-shot execution', false);
433
+ cmd.option('-o, --output-file <path>', 'Export the artifact (pptx/docx/xlsx) to a local file after task completes');
434
+ }
423
435
  // For the aidrive tool, add client-side options used with --local_file upload
424
436
  if (tool.name === 'aidrive') {
425
437
  cmd.option('--local_file <path>', 'Local file path to upload to AI Drive (supports files >5 MB; alternative to --file_content)');
@@ -434,10 +446,34 @@ function registerToolCommand(parentProgram, tool, clientFactory) {
434
446
  primaryArgValue = undefined;
435
447
  }
436
448
  try {
449
+ // ACP mode: enter stdio bridge instead of one-shot execution
450
+ if (tool.name === 'create_task' && opts.acp) {
451
+ const taskType = primaryArgValue;
452
+ if (!taskType) {
453
+ logError('Task type is required for ACP mode. Usage: gsk task <type> --acp');
454
+ process.exit(1);
455
+ }
456
+ delete opts.acp;
457
+ const { startAcpBridge } = await import('./acp-serve.js');
458
+ await startAcpBridge(taskType, clientFactory().getOptions());
459
+ return;
460
+ }
461
+ // For create_task (non-ACP): validate required params manually
462
+ if (tool.name === 'create_task') {
463
+ for (const reqParam of required) {
464
+ if (reqParam === tool.cli.primary_arg)
465
+ continue;
466
+ if (opts[reqParam] === undefined || opts[reqParam] === null) {
467
+ logError(`Missing required option: --${reqParam}`);
468
+ process.exit(1);
469
+ }
470
+ }
471
+ }
437
472
  const client = clientFactory();
438
473
  // Extract and remove client-side-only options before sending to API
439
474
  const outputFilePath = opts.outputFile;
440
475
  delete opts.outputFile;
476
+ delete opts.acp; // ACP flag is client-side only
441
477
  const args = { ...opts };
442
478
  // Set primary arg
443
479
  if (tool.cli.primary_arg && primaryArgValue !== undefined) {
@@ -492,8 +528,10 @@ function registerToolCommand(parentProgram, tool, clientFactory) {
492
528
  // Resolve local file paths to uploaded URLs
493
529
  const resolvedArgs = await resolveLocalFiles(args, client);
494
530
  const result = await client.executeTool(tool.name, resolvedArgs);
495
- // If -o was specified and tool succeeded, download the output file
496
- if (outputFilePath &&
531
+ // If -o was specified and tool succeeded, download the output file.
532
+ // Skip for create_task — it has its own export logic below.
533
+ if (tool.name !== 'create_task' &&
534
+ outputFilePath &&
497
535
  outputFileKeys.length > 0 &&
498
536
  result.status === 'ok' &&
499
537
  result.data &&
@@ -507,6 +545,37 @@ function registerToolCommand(parentProgram, tool, clientFactory) {
507
545
  info('Warning: Could not find a file URL in the result to download');
508
546
  }
509
547
  }
548
+ // create_task -o: export artifact (pptx/docx/xlsx) after task completes
549
+ if (tool.name === 'create_task' &&
550
+ outputFilePath &&
551
+ result.status === 'ok' &&
552
+ result.data &&
553
+ typeof result.data === 'object') {
554
+ const data = result.data;
555
+ const projectId = data.project_id;
556
+ const taskType = (primaryArgValue || args.type);
557
+ if (projectId && taskType) {
558
+ info(`Exporting ${taskType} artifact...`);
559
+ try {
560
+ const exportResult = await client.exportArtifact(projectId, taskType);
561
+ if (exportResult.status === 'ok' && exportResult.data) {
562
+ const expData = exportResult.data;
563
+ const downloadUrl = expData.download_url;
564
+ if (downloadUrl) {
565
+ const localPath = await downloadToFile(downloadUrl, outputFilePath, client);
566
+ data.local_path = localPath;
567
+ data.export_format = expData.format;
568
+ }
569
+ }
570
+ else {
571
+ info(`Warning: Export not available — ${exportResult.message || 'unknown error'}`);
572
+ }
573
+ }
574
+ catch (exportErr) {
575
+ info(`Warning: Export failed — ${exportErr.message}`);
576
+ }
577
+ }
578
+ }
510
579
  output(result);
511
580
  }
512
581
  catch (err) {
@@ -806,10 +875,11 @@ program
806
875
  const agentType = opts.agent?.toLowerCase();
807
876
  const projectRoot = pathModule.resolve('.');
808
877
  // Normalize to forward slashes for markdown links (Windows compat)
878
+ // Use '.' as fallback when skills are in project root (e.g. -o .)
809
879
  const relSkillsDir = pathModule
810
880
  .relative(projectRoot, destDir)
811
881
  .split(pathModule.sep)
812
- .join('/');
882
+ .join('/') || '.';
813
883
  // Validate --agent value
814
884
  const validAgents = ['claude', 'gemini', 'all'];
815
885
  if (agentType && !validAgents.includes(agentType)) {
@@ -817,12 +887,10 @@ program
817
887
  process.exit(1);
818
888
  }
819
889
  if (agentType === 'claude' || agentType === 'all') {
820
- _generateClaudeConfig(projectRoot);
821
- info('Generated .claude/ config for Claude Code');
890
+ _generateClaudeConfig(projectRoot, relSkillsDir);
822
891
  }
823
892
  if (agentType === 'gemini' || agentType === 'all') {
824
893
  _generateGeminiConfig(projectRoot);
825
- info('Generated gemini config');
826
894
  }
827
895
  // Always generate CONTEXT.md as the universal agent entry point
828
896
  const created = _generateContextMd(projectRoot, relSkillsDir, skillDirs);
@@ -858,30 +926,35 @@ function _copyDirRecursive(src, dest) {
858
926
  }
859
927
  }
860
928
  }
861
- /** Generate .claude/settings.json pointing to skills */
862
- function _generateClaudeConfig(projectRoot) {
863
- const claudeDir = pathModule.join(projectRoot, '.claude');
864
- fs.mkdirSync(claudeDir, { recursive: true });
865
- const settingsPath = pathModule.join(claudeDir, 'settings.json');
866
- // Merge with existing settings if present
867
- let settings = {};
868
- if (fs.existsSync(settingsPath)) {
869
- try {
870
- settings = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
871
- }
872
- catch {
873
- // ignore parse errors
929
+ /** Generate CLAUDE.md referencing CONTEXT.md (Claude Code auto-loads CLAUDE.md) */
930
+ function _generateClaudeConfig(projectRoot, relSkillsDir) {
931
+ const claudeMdPath = pathModule.join(projectRoot, 'CLAUDE.md');
932
+ // Don't overwrite if already exists
933
+ if (fs.existsSync(claudeMdPath)) {
934
+ // Check if it already references CONTEXT.md
935
+ const existing = fs.readFileSync(claudeMdPath, 'utf-8');
936
+ if (existing.includes('CONTEXT.md')) {
937
+ info('CLAUDE.md already references CONTEXT.md, skipping');
938
+ return;
874
939
  }
940
+ // Append GSK section to existing CLAUDE.md
941
+ const section = `\n\n## GSK CLI\n\nThis project uses the Genspark CLI. Follow [CONTEXT.md](CONTEXT.md) for available tools and usage rules.\n`;
942
+ fs.appendFileSync(claudeMdPath, section);
943
+ info('Appended GSK section to existing CLAUDE.md');
944
+ return;
875
945
  }
876
- // Add context include for CONTEXT.md
877
- const contextIncludes = settings.contextIncludes || [];
878
- if (!contextIncludes.includes('CONTEXT.md')) {
879
- contextIncludes.push('CONTEXT.md');
880
- }
881
- settings.contextIncludes = contextIncludes;
882
- fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
946
+ const content = `# CLAUDE.md
947
+
948
+ ## GSK CLI
949
+
950
+ This project uses the [Genspark CLI](https://www.genspark.ai) (\`gsk\`). Follow [CONTEXT.md](CONTEXT.md) for all available tools, flags, and usage rules.
951
+
952
+ Quick start: read [gsk-shared](${relSkillsDir}/gsk-shared/SKILL.md) for authentication and global flags.
953
+ `;
954
+ fs.writeFileSync(claudeMdPath, content);
955
+ info('Generated CLAUDE.md for Claude Code');
883
956
  }
884
- /** Generate gemini-extension.json pointing to CONTEXT.md (merge with existing) */
957
+ /** Generate gemini-extension.json pointing to CONTEXT.md */
885
958
  function _generateGeminiConfig(projectRoot) {
886
959
  const configPath = pathModule.join(projectRoot, 'gemini-extension.json');
887
960
  // Merge with existing config if present
@@ -894,16 +967,20 @@ function _generateGeminiConfig(projectRoot) {
894
967
  // ignore parse errors
895
968
  }
896
969
  }
897
- if (!config.systemInstruction) {
898
- config.systemInstruction =
899
- 'Follow CONTEXT.md for GSK CLI usage and available tools.';
970
+ // Use contextFileName (Gemini convention) to point to CONTEXT.md
971
+ // Clean up old fields from previous versions
972
+ delete config.systemInstruction;
973
+ delete config.contextFiles;
974
+ if (!config.name) {
975
+ config.name = 'gsk-cli';
900
976
  }
901
- const contextFiles = config.contextFiles || [];
902
- if (!contextFiles.includes('CONTEXT.md')) {
903
- contextFiles.push('CONTEXT.md');
977
+ if (!config.description) {
978
+ config.description =
979
+ 'Genspark CLI tools for search, media generation, email, calendar, and more.';
904
980
  }
905
- config.contextFiles = contextFiles;
981
+ config.contextFileName = 'CONTEXT.md';
906
982
  fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n');
983
+ info('Generated gemini-extension.json');
907
984
  }
908
985
  /** Generate CONTEXT.md as universal agent entry point. Returns true if created. */
909
986
  function _generateContextMd(projectRoot, relSkillsDir, skillDirs) {
@@ -945,15 +1022,8 @@ ${skillList}
945
1022
  // ============================================
946
1023
  // Phone Call Command
947
1024
  // ============================================
948
- program
949
- .command('call')
950
- .description('Make an AI phone call on your behalf. Validates prerequisites, resolves contact info, and initiates the call.')
951
- .argument('<recipient>', 'Name of the person or business to call')
952
- .requiredOption('-c, --contact_info <value>', 'Phone number (e.g. +1-555-123-4567) or Google Maps place_id')
953
- .option('--is_place_id', 'Treat contact_info as a Google Maps place_id (for businesses)', false)
954
- .requiredOption('-p, --purpose <value>', "Purpose of the call (e.g. 'Check reservation availability')")
955
- .option('--dry-run', 'Only validate and resolve contact info, do not initiate the call')
956
- .action(async (recipient, opts) => {
1025
+ // Phone call action handler (shared by phone-call and hidden call alias)
1026
+ async function phoneCallAction(recipient, opts) {
957
1027
  try {
958
1028
  const client = createClient();
959
1029
  if (opts.dryRun) {
@@ -1053,7 +1123,25 @@ program
1053
1123
  logError(err.message);
1054
1124
  process.exit(1);
1055
1125
  }
1056
- });
1126
+ }
1127
+ // Phone call option definitions (shared by phone-call and hidden call alias)
1128
+ function addPhoneCallOptions(cmd) {
1129
+ return cmd
1130
+ .argument('<recipient>', 'Name of the person or business to call')
1131
+ .requiredOption('-c, --contact_info <value>', 'Phone number (e.g. +1-555-123-4567) or Google Maps place_id')
1132
+ .option('--is_place_id', 'Treat contact_info as a Google Maps place_id (for businesses)', false)
1133
+ .requiredOption('-p, --purpose <value>', "Purpose of the call (e.g. 'Check reservation availability')")
1134
+ .option('--dry-run', 'Only validate and resolve contact info, do not initiate the call');
1135
+ }
1136
+ // Primary command: gsk phone-call (alias: call-for-me)
1137
+ addPhoneCallOptions(program
1138
+ .command('phone-call')
1139
+ .alias('call-for-me')
1140
+ .description('Make an AI phone call on your behalf. Validates prerequisites, resolves contact info, and initiates the call.')).action(phoneCallAction);
1141
+ // Hidden backward-compatible alias: gsk call
1142
+ addPhoneCallOptions(program
1143
+ .command('call', { hidden: true })
1144
+ .description('Alias for phone-call (deprecated)')).action(phoneCallAction);
1057
1145
  // ============================================
1058
1146
  // Dynamic Tool Registration & Startup
1059
1147
  // ============================================
@@ -1101,8 +1189,11 @@ async function main() {
1101
1189
  }
1102
1190
  }
1103
1191
  // Register dynamic tool commands
1192
+ // Skip phone_call — the hardcoded `call` command handles phone calls
1104
1193
  if (tools) {
1105
1194
  for (const tool of tools) {
1195
+ if (tool.name === 'phone_call')
1196
+ continue;
1106
1197
  registerToolCommand(program, tool, createClient);
1107
1198
  }
1108
1199
  }