@genspark/cli 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 (53) hide show
  1. package/README.md +23 -1
  2. package/dist/config.d.ts +11 -8
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +100 -13
  5. package/dist/config.js.map +1 -1
  6. package/dist/index.js +85 -25
  7. package/dist/index.js.map +1 -1
  8. package/dist/localFiles.d.ts +62 -0
  9. package/dist/localFiles.d.ts.map +1 -0
  10. package/dist/localFiles.js +130 -0
  11. package/dist/localFiles.js.map +1 -0
  12. package/dist/logger.d.ts +8 -0
  13. package/dist/logger.d.ts.map +1 -1
  14. package/dist/logger.js +13 -0
  15. package/dist/logger.js.map +1 -1
  16. package/dist/mesh/checkupdate.js +3 -3
  17. package/dist/mesh/checkupdate.js.map +1 -1
  18. package/dist/runtime.d.ts +44 -0
  19. package/dist/runtime.d.ts.map +1 -0
  20. package/dist/runtime.js +62 -0
  21. package/dist/runtime.js.map +1 -0
  22. package/dist/updater.d.ts +1 -0
  23. package/dist/updater.d.ts.map +1 -1
  24. package/dist/updater.js +10 -0
  25. package/dist/updater.js.map +1 -1
  26. package/docs/skills.md +20 -20
  27. package/package.json +1 -1
  28. package/skills/gsk-analyze-media/SKILL.md +2 -1
  29. package/skills/gsk-audio-generation/SKILL.md +1 -1
  30. package/skills/gsk-connector/SKILL.md +52 -0
  31. package/skills/gsk-github/SKILL.md +2 -0
  32. package/skills/gsk-gmail/SKILL.md +2 -0
  33. package/skills/gsk-google-calendar/SKILL.md +4 -1
  34. package/skills/gsk-google-chat/SKILL.md +4 -1
  35. package/skills/gsk-google-contacts/SKILL.md +2 -0
  36. package/skills/gsk-google-docs/SKILL.md +2 -0
  37. package/skills/gsk-google-drive/SKILL.md +3 -0
  38. package/skills/gsk-google-sheets/SKILL.md +4 -2
  39. package/skills/gsk-hub/SKILL.md +15 -5
  40. package/skills/gsk-image-generation/SKILL.md +2 -2
  41. package/skills/gsk-microsoft-teams/SKILL.md +4 -2
  42. package/skills/gsk-notion/SKILL.md +2 -0
  43. package/skills/gsk-onedrive/SKILL.md +3 -0
  44. package/skills/gsk-outlook-calendar/SKILL.md +3 -1
  45. package/skills/gsk-outlook-contacts/SKILL.md +2 -0
  46. package/skills/gsk-outlook-email/SKILL.md +3 -10
  47. package/skills/gsk-salesforce/SKILL.md +2 -0
  48. package/skills/gsk-shared/SKILL.md +12 -1
  49. package/skills/gsk-sharepoint/SKILL.md +3 -0
  50. package/skills/gsk-sharepoint-upload/SKILL.md +2 -0
  51. package/skills/gsk-slack/SKILL.md +12 -7
  52. package/skills/gsk-task-continue/SKILL.md +4 -3
  53. package/skills/gsk-video-generation/SKILL.md +8 -7
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Sandbox runtime detection for Genspark Tool CLI
3
+ *
4
+ * Genspark-managed sandbox templates bake an identity marker into the
5
+ * image at build time (see services/sb_box_template/Dockerfile.*):
6
+ *
7
+ * /opt/genspark/sandbox_family e.g. "sb-box-super-agent"
8
+ * /opt/genspark/sandbox_version e.g. "1"
9
+ *
10
+ * Known families: sb-box-super-agent, sb-box-second-brain, sb-box-legion
11
+ * (Firecracker microVMs on the sb-box fleet) and novita-code-sandbox
12
+ * (code-interpreter template). The base template (Dockerfile.base) bakes
13
+ * only sandbox_version — no family — so "is a Genspark sandbox" keys on
14
+ * either marker being present. Outside a Genspark sandbox the marker
15
+ * directory does not exist and every field resolves to null/false.
16
+ *
17
+ * Detection is filesystem-only by design — no env-var override. The marker
18
+ * identifies the runtime the process was launched into; behavior gates that
19
+ * need a stronger guarantee (billing, permissions) must be enforced
20
+ * server-side, not from this client-visible flag.
21
+ */
22
+ export interface SandboxRuntime {
23
+ /** Template family, e.g. "sb-box-super-agent"; null outside a sandbox. */
24
+ family: string | null;
25
+ /** Template marker version (sandbox_version file); null when absent. */
26
+ version: string | null;
27
+ /** True for any sb-box-* family (Firecracker microVM on the sb-box fleet). */
28
+ isSbBox: boolean;
29
+ /** True only for the super-agent sandbox (SAS) family. */
30
+ isSuperAgentSandbox: boolean;
31
+ /** True when any Genspark sandbox family marker is present. */
32
+ isGensparkSandbox: boolean;
33
+ }
34
+ /**
35
+ * Pure reader used by tests — resolves the runtime from an explicit marker
36
+ * directory. Production callers go through {@link getSandboxRuntime}.
37
+ */
38
+ export declare function readSandboxRuntime(markerDir: string): SandboxRuntime;
39
+ /**
40
+ * The sandbox runtime this CLI process is executing in. Read once from
41
+ * /opt/genspark and cached for the process lifetime.
42
+ */
43
+ export declare function getSandboxRuntime(): SandboxRuntime;
44
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,wEAAwE;IACxE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,8EAA8E;IAC9E,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,mBAAmB,EAAE,OAAO,CAAC;IAC7B,+DAA+D;IAC/D,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAWD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAYpE;AAID;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Sandbox runtime detection for Genspark Tool CLI
3
+ *
4
+ * Genspark-managed sandbox templates bake an identity marker into the
5
+ * image at build time (see services/sb_box_template/Dockerfile.*):
6
+ *
7
+ * /opt/genspark/sandbox_family e.g. "sb-box-super-agent"
8
+ * /opt/genspark/sandbox_version e.g. "1"
9
+ *
10
+ * Known families: sb-box-super-agent, sb-box-second-brain, sb-box-legion
11
+ * (Firecracker microVMs on the sb-box fleet) and novita-code-sandbox
12
+ * (code-interpreter template). The base template (Dockerfile.base) bakes
13
+ * only sandbox_version — no family — so "is a Genspark sandbox" keys on
14
+ * either marker being present. Outside a Genspark sandbox the marker
15
+ * directory does not exist and every field resolves to null/false.
16
+ *
17
+ * Detection is filesystem-only by design — no env-var override. The marker
18
+ * identifies the runtime the process was launched into; behavior gates that
19
+ * need a stronger guarantee (billing, permissions) must be enforced
20
+ * server-side, not from this client-visible flag.
21
+ */
22
+ import * as fs from "fs";
23
+ import * as path from "path";
24
+ const SANDBOX_MARKER_DIR = "/opt/genspark";
25
+ function readMarkerFile(dir, name) {
26
+ try {
27
+ const value = fs.readFileSync(path.join(dir, name), "utf-8").trim();
28
+ return value.length > 0 ? value : null;
29
+ }
30
+ catch {
31
+ return null;
32
+ }
33
+ }
34
+ /**
35
+ * Pure reader used by tests — resolves the runtime from an explicit marker
36
+ * directory. Production callers go through {@link getSandboxRuntime}.
37
+ */
38
+ export function readSandboxRuntime(markerDir) {
39
+ const family = readMarkerFile(markerDir, "sandbox_family");
40
+ const version = readMarkerFile(markerDir, "sandbox_version");
41
+ return {
42
+ family,
43
+ version,
44
+ isSbBox: family !== null && family.startsWith("sb-box-"),
45
+ isSuperAgentSandbox: family === "sb-box-super-agent",
46
+ // The sb-box base template bakes sandbox_version without a family file,
47
+ // so either marker alone must count as "inside a Genspark sandbox".
48
+ isGensparkSandbox: family !== null || version !== null,
49
+ };
50
+ }
51
+ let _cached = null;
52
+ /**
53
+ * The sandbox runtime this CLI process is executing in. Read once from
54
+ * /opt/genspark and cached for the process lifetime.
55
+ */
56
+ export function getSandboxRuntime() {
57
+ if (_cached === null) {
58
+ _cached = readSandboxRuntime(SANDBOX_MARKER_DIR);
59
+ }
60
+ return _cached;
61
+ }
62
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAe3C,SAAS,cAAc,CAAC,GAAW,EAAE,IAAY;IAC/C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACpE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC7D,OAAO;QACL,MAAM;QACN,OAAO;QACP,OAAO,EAAE,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;QACxD,mBAAmB,EAAE,MAAM,KAAK,oBAAoB;QACpD,wEAAwE;QACxE,oEAAoE;QACpE,iBAAiB,EAAE,MAAM,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI;KACvD,CAAC;AACJ,CAAC;AAED,IAAI,OAAO,GAA0B,IAAI,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/dist/updater.d.ts CHANGED
@@ -5,6 +5,7 @@
5
5
  * Controlled by:
6
6
  * - GSK_NO_AUTO_UPDATE=1 env var to disable
7
7
  * - "auto_update": false in config file
8
+ * - Disabled inside Genspark sandboxes (/opt/genspark marker, see runtime.ts)
8
9
  * - Checks at most once every 4 hours (cached in ~/.genspark-tool-cli/update-meta.json)
9
10
  */
10
11
  export declare const CHECK_INTERVAL_MS: number;
@@ -1 +1 @@
1
- {"version":3,"file":"updater.d.ts","sourceRoot":"","sources":["../src/updater.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH,eAAO,MAAM,iBAAiB,QAAqB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAgBD,wBAAgB,cAAc,IAAI,UAAU,GAAG,IAAI,CAOlD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAkB/D;AA4CD;;;GAGG;AACH,wBAAsB,eAAe,CACnC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CA4Cf"}
1
+ {"version":3,"file":"updater.d.ts","sourceRoot":"","sources":["../src/updater.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAaH,eAAO,MAAM,iBAAiB,QAAqB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAgBD,wBAAgB,cAAc,IAAI,UAAU,GAAG,IAAI,CAOlD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAkB/D;AA4CD;;;GAGG;AACH,wBAAsB,eAAe,CACnC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAuDf"}
package/dist/updater.js CHANGED
@@ -5,6 +5,7 @@
5
5
  * Controlled by:
6
6
  * - GSK_NO_AUTO_UPDATE=1 env var to disable
7
7
  * - "auto_update": false in config file
8
+ * - Disabled inside Genspark sandboxes (/opt/genspark marker, see runtime.ts)
8
9
  * - Checks at most once every 4 hours (cached in ~/.genspark-tool-cli/update-meta.json)
9
10
  */
10
11
  import * as fs from "fs";
@@ -13,6 +14,7 @@ import * as os from "os";
13
14
  import { spawn } from "child_process";
14
15
  import { debug, info } from "./logger.js";
15
16
  import { loadConfigFile } from "./config.js";
17
+ import { getSandboxRuntime } from "./runtime.js";
16
18
  const PACKAGE_NAME = "@genspark/cli";
17
19
  const CONFIG_DIR = path.join(os.homedir(), ".genspark-tool-cli");
18
20
  const UPDATE_META_FILE = path.join(CONFIG_DIR, "update-meta.json");
@@ -108,6 +110,14 @@ export async function checkForUpdates(currentVersion) {
108
110
  debug("Auto-update disabled via GSK_NO_AUTO_UPDATE");
109
111
  return;
110
112
  }
113
+ // Sandbox templates pin the CLI version at image build; a self-update
114
+ // inside the ephemeral sandbox would drift from the template-tested
115
+ // version and waste boot time, so skip regardless of env/config.
116
+ const runtime = getSandboxRuntime();
117
+ if (runtime.isGensparkSandbox) {
118
+ debug(`Auto-update disabled inside Genspark sandbox (${runtime.family})`);
119
+ return;
120
+ }
111
121
  // Check if auto-update is disabled via config file
112
122
  const config = loadConfigFile();
113
123
  if (config.auto_update === false) {
@@ -1 +1 @@
1
- {"version":3,"file":"updater.js","sourceRoot":"","sources":["../src/updater.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"updater.js","sourceRoot":"","sources":["../src/updater.ts"],"names":[],"mappings":"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"}
package/docs/skills.md CHANGED
@@ -8,54 +8,54 @@
8
8
 
9
9
  | Skill | Description |
10
10
  |-------|-------------|
11
- | [gsk-aidrive](../skills/gsk-aidrive/SKILL.md) | AI-Drive file storage and management. Actions: ls, find, mkdir, rm, move, get_readable_url, download_video, download_aud |
11
+ | [gsk-aidrive](../skills/gsk-aidrive/SKILL.md) | AI-Drive file storage and management. Actions: ls, find, mkdir, rm, move, get_readable_url, download_video, download_... |
12
12
  | [gsk-analyze-media](../skills/gsk-analyze-media/SKILL.md) | Analyze various types of media content including images, audio, and video. |
13
13
  | [gsk-audio-generation](../skills/gsk-audio-generation/SKILL.md) | Generate audio (TTS, sound effects, music) with per-model params; query get_model_info for each model's params_schema. |
14
14
  | [gsk-audio-processing](../skills/gsk-audio-processing/SKILL.md) | Preprocess audio: remove background noise, extract specific sounds, or enhance quality. |
15
15
  | [gsk-audio-transcribe](../skills/gsk-audio-transcribe/SKILL.md) | Transcribe audio files to text with word-level timestamps. |
16
- | [gsk-batch-crawl-url-and-answer](../skills/gsk-batch-crawl-url-and-answer/SKILL.md) | Crawl multiple URLs in parallel and answer specific questions from each. More efficient than calling crawler multiple ti |
17
- | [gsk-batch-understand-videos](../skills/gsk-batch-understand-videos/SKILL.md) | Process multiple YouTube videos in parallel: fetch each transcript and answer per-video questions. Input: list of {video |
18
- | [gsk-claw-share-link](../skills/gsk-claw-share-link/SKILL.md) | Generate a time-limited share URL for a file on a Genspark Claw VM. Use when the user is not in the web UI and you need |
16
+ | [gsk-batch-crawl-url-and-answer](../skills/gsk-batch-crawl-url-and-answer/SKILL.md) | Crawl multiple URLs in parallel and answer specific questions from each. More efficient than calling crawler multiple... |
17
+ | [gsk-batch-understand-videos](../skills/gsk-batch-understand-videos/SKILL.md) | Process multiple YouTube videos in parallel: fetch each transcript and answer per-video questions. Input: list of {vi... |
18
+ | [gsk-claw-share-link](../skills/gsk-claw-share-link/SKILL.md) | Generate a time-limited share URL for a file on a Genspark Claw VM. Use when the user is not in the web UI and you ne... |
19
19
  | [gsk-crawler](../skills/gsk-crawler/SKILL.md) | Crawl and extract content from web pages. Supports HTML, PDF, and documents. |
20
- | [gsk-create-task](../skills/gsk-create-task/SKILL.md) | Create and execute tasks using specialized AI agents. Supports super_agent, podcasts, docs, slides, deep_research, websi |
21
- | [gsk-get-model-info](../skills/gsk-get-model-info/SKILL.md) | Detailed generation-model info: capabilities, params_schema, available speakers and prompting guides (audio/video/image/ |
22
- | [gsk-get-service-url](../skills/gsk-get-service-url/SKILL.md) | Get the public HTTPS URL for a service running on the sandbox. Use this to access web servers, APIs, or applications fro |
20
+ | [gsk-create-task](../skills/gsk-create-task/SKILL.md) | Create and execute tasks using specialized AI agents. Supports super_agent, podcasts, docs, slides, deep_research, we... |
21
+ | [gsk-get-model-info](../skills/gsk-get-model-info/SKILL.md) | Detailed generation-model info: capabilities, params_schema, available speakers and prompting guides (audio/video/ima... |
22
+ | [gsk-get-service-url](../skills/gsk-get-service-url/SKILL.md) | Get the public HTTPS URL for a service running on the sandbox. Use this to access web servers, APIs, or applications ... |
23
23
  | [gsk-github](../skills/gsk-github/SKILL.md) | GitHub operations. Actions: list_repos, search_issues, create_issue, update_issue. |
24
- | [gsk-gmail](../skills/gsk-gmail/SKILL.md) | Gmail operations. Actions: search, read, send, draft, reply, forward, delete, archive, move, mark_as_read, add_label, re |
24
+ | [gsk-gmail](../skills/gsk-gmail/SKILL.md) | Gmail operations. Actions: search, read, send, draft, reply, forward, delete, archive, move, mark_as_read, add_label,... |
25
25
  | [gsk-google-calendar](../skills/gsk-google-calendar/SKILL.md) | Google Calendar operations. Actions: list, free_busy, create, respond, modify, delete. |
26
- | [gsk-google-chat](../skills/gsk-google-chat/SKILL.md) | Google Chat operations. Actions: list_spaces, read, list_members, send, upload, react, update, delete. Sent messages car |
26
+ | [gsk-google-chat](../skills/gsk-google-chat/SKILL.md) | Google Chat operations. Actions: list_spaces, read, list_members, send, upload, react, update, delete. Sent messages ... |
27
27
  | [gsk-google-contacts](../skills/gsk-google-contacts/SKILL.md) | Google Contacts operations. Actions: search, get. |
28
28
  | [gsk-google-docs](../skills/gsk-google-docs/SKILL.md) | Google Docs document operations. Actions: create, read, append, batch_update, export, search. |
29
29
  | [gsk-google-drive](../skills/gsk-google-drive/SKILL.md) | Google Drive file operations. Actions: list, search, read, upload, share. |
30
30
  | [gsk-google-sheets](../skills/gsk-google-sheets/SKILL.md) | Google Sheets spreadsheet operations. Actions: create, read, write, append, search, export. |
31
- | [gsk-hub](../skills/gsk-hub/SKILL.md) | Genspark Hub (the user's project spaces at genspark.ai/hub) — NOT HubSpot. Actions: list_hubs, read_hub. When the user s |
31
+ | [gsk-hub](../skills/gsk-hub/SKILL.md) | Genspark Hub (the user's project spaces at genspark.ai/hub) — NOT HubSpot. Read-only actions: list_hubs, read_hub, re... |
32
32
  | [gsk-image-generation](../skills/gsk-image-generation/SKILL.md) | Generate images using AI models. Supports text-to-image and image editing. |
33
33
  | [gsk-image-search](../skills/gsk-image-search/SKILL.md) | Search for images on the web. Returns image URLs, titles, and source information. |
34
- | [gsk-inbox-contacts](../skills/gsk-inbox-contacts/SKILL.md) | Unified contact lookup across all connected email accounts (Gmail + Outlook). Searches synced address-book contacts AND |
35
- | [gsk-maps-search](../skills/gsk-maps-search/SKILL.md) | Search maps for places, local businesses, distances between locations, and directions. Use ONLY for geographical/locatio |
34
+ | [gsk-inbox-contacts](../skills/gsk-inbox-contacts/SKILL.md) | Unified contact lookup across all connected email accounts (Gmail + Outlook). Searches synced address-book contacts A... |
35
+ | [gsk-maps-search](../skills/gsk-maps-search/SKILL.md) | Search maps for places, local businesses, distances between locations, and directions. Use ONLY for geographical/loca... |
36
36
  | [gsk-meeting](../skills/gsk-meeting/SKILL.md) | Meeting notes operations. Actions: list, search, get. |
37
- | [gsk-microsoft-teams](../skills/gsk-microsoft-teams/SKILL.md) | Microsoft Teams operations. Actions: send, list_channels, list_chats, read_chat, list_channel_messages, list_channel_rep |
37
+ | [gsk-microsoft-teams](../skills/gsk-microsoft-teams/SKILL.md) | Microsoft Teams operations. Actions: send, list_channels, list_chats, read_chat, list_channel_messages, list_channel_... |
38
38
  | [gsk-notion](../skills/gsk-notion/SKILL.md) | Notion page operations. Actions: search, read, create. |
39
39
  | [gsk-onedrive](../skills/gsk-onedrive/SKILL.md) | OneDrive file operations. Actions: list, search, read, upload, share. |
40
40
  | [gsk-outlook-calendar](../skills/gsk-outlook-calendar/SKILL.md) | Outlook Calendar operations. Actions: list, free_busy, create, respond, modify, delete. |
41
41
  | [gsk-outlook-contacts](../skills/gsk-outlook-contacts/SKILL.md) | Outlook Contacts operations. Actions: search. |
42
- | [gsk-outlook-email](../skills/gsk-outlook-email/SKILL.md) | Outlook Email operations. Actions: search, read, list_folders, list_emails, list_email_changes, send, draft, reply, repl |
43
- | [gsk-phone-call](../skills/gsk-phone-call/SKILL.md) | Make a real AI phone call on the user's behalf. Validates prerequisites (membership, phone setup, credits), resolves the |
42
+ | [gsk-outlook-email](../skills/gsk-outlook-email/SKILL.md) | Outlook Email operations. Actions: search, read, list_folders, list_emails, list_email_changes, send, draft, reply, r... |
43
+ | [gsk-phone-call](../skills/gsk-phone-call/SKILL.md) | Make a real AI phone call on the user's behalf. Validates prerequisites (membership, phone setup, credits), resolves ... |
44
44
  | [gsk-salesforce](../skills/gsk-salesforce/SKILL.md) | Salesforce DX CLI (`sf`) operations in a pre-authenticated sandbox. Actions: run (forwards any `sf` subcommand). |
45
- | [gsk-scholar-search](../skills/gsk-scholar-search/SKILL.md) | Search scholarly articles and academic papers. Returns matching papers with titles, authors, venues, and citation counts |
45
+ | [gsk-scholar-search](../skills/gsk-scholar-search/SKILL.md) | Search scholarly articles and academic papers. Returns matching papers with titles, authors, venues, and citation cou... |
46
46
  | [gsk-sharepoint](../skills/gsk-sharepoint/SKILL.md) | SharePoint site and file operations. Actions: list, search, read_content, read_file, upload. |
47
47
  | [gsk-sharepoint-upload](../skills/gsk-sharepoint-upload/SKILL.md) | Upload a file to a SharePoint document library. |
48
- | [gsk-slack](../skills/gsk-slack/SKILL.md) | Slack messaging operations. Actions: send, search, read, lookup, react, upload. |
48
+ | [gsk-slack](../skills/gsk-slack/SKILL.md) | Slack messaging operations. Actions: send, search, read, lookup, react, upload, update, delete, permalink, connect_in... |
49
49
  | [gsk-social-instagram](../skills/gsk-social-instagram/SKILL.md) | Search and retrieve data from Instagram: posts, users, comments, and connections. |
50
50
  | [gsk-social-reddit](../skills/gsk-social-reddit/SKILL.md) | Search and retrieve data from Reddit: posts, comments, users, and subreddits. |
51
51
  | [gsk-social-twitter](../skills/gsk-social-twitter/SKILL.md) | Search and retrieve data from Twitter/X: posts, users, comments, retweets, and more. |
52
52
  | [gsk-stock-price](../skills/gsk-stock-price/SKILL.md) | Retrieve real-time stock price information for a specific company. |
53
53
  | [gsk-summarize-large-document](../skills/gsk-summarize-large-document/SKILL.md) | Analyze and answer questions about large documents (PDFs, web pages, Word docs, etc.). |
54
- | [gsk-task-continue](../skills/gsk-task-continue/SKILL.md) | Continue an existing task project you previously created with create_task by sending a follow-up instruction — use this |
55
- | [gsk-task-status](../skills/gsk-task-status/SKILL.md) | Look up an existing task project previously created with create_task: returns its status, page URL (task_url), and extra |
54
+ | [gsk-task-continue](../skills/gsk-task-continue/SKILL.md) | Continue an existing task project you previously created with create_task by sending a follow-up instruction — use th... |
55
+ | [gsk-task-status](../skills/gsk-task-status/SKILL.md) | Look up an existing task project previously created with create_task: returns its status, page URL (task_url), and ex... |
56
56
  | [gsk-understand-images](../skills/gsk-understand-images/SKILL.md) | Analyze and understand images. Supports multiple images and custom analysis instructions. |
57
57
  | [gsk-video-generation](../skills/gsk-video-generation/SKILL.md) | Generate videos using AI models. Supports text-to-video and image-to-video generation. |
58
- | [gsk-vm-email-send](../skills/gsk-vm-email-send/SKILL.md) | Send an email from your OpenClaw VM's email address. Recipient must be in the VM's email allowlist or be your own login |
58
+ | [gsk-vm-email-send](../skills/gsk-vm-email-send/SKILL.md) | Send an email from your OpenClaw VM's email address. Recipient must be in the VM's email allowlist or be your own log... |
59
59
  | [gsk-voice-cloning](../skills/gsk-voice-cloning/SKILL.md) | Clone a voice from an audio sample using Minimax. Returns a voice ID for use with Minimax TTS. |
60
60
  | [gsk-web-search](../skills/gsk-web-search/SKILL.md) | Search the web. Returns search results with titles, snippets, and URLs. |
61
61
  | [gsk-youtube](../skills/gsk-youtube/SKILL.md) | YouTube operations. Actions: search, transcript, comments. |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@genspark/cli",
3
- "version": "1.4.2",
3
+ "version": "1.5.0",
4
4
  "description": "CLI tool for Genspark Tool API - search, crawl, analyze images, generate media",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -31,8 +31,9 @@ gsk media-analyze [options]
31
31
  | `-i`, `--media_urls` | Yes | Media URLs / AI Drive paths / repo paths to analyze. (array) |
32
32
  | `--repo_id` | No | Project repo id from your first-turn context. Required only for repo-relative paths in `media_urls`. (string) |
33
33
  | `--video_metadata` | No | Video-specific metadata for analysis (optional)Unless the user requires, it is not required to provide (object) |
34
- | `-r`, `--requirements` | No | Must in English, Detailed analysis requirements and goals. Please clearly describe: - What is the purpose of the analysis? - What information needs to be extracted from the media? - What information is most important to you? - How will these analysis results be used? - What are the clips that can be extracted from the video? What are their corresponding time ranges (in milliseconds) and descriptions? - ... (You can add more requirements here) - Specific requirements for different media types (images, audio, video) For example: 'I need to analyze these materials for emotional tone, main content, use cases for a marketing campaign, other requirements...' Always ask first what the media semantically depicts (scene, objects, on-screen content) before stylistic, texture, or usage aspects. Note: This parameter is ignored when analyze_type='video_style_replication'. (string) |
34
+ | `-r`, `--requirements` | No | Always provide this unless analyze_type='video_style_replication'. Must in English, Detailed analysis requirements and goals. Please clearly describe: - What is the purpose of the analysis? - What information needs to be extracted from the media? - What information is most important to you? - How will these analysis results be used? - What are the clips that can be extracted from the video? What are their corresponding time ranges (in milliseconds) and descriptions? - ... (You can add more requirements here) - Specific requirements for different media types (images, audio, video) For example: 'I need to analyze these materials for emotional tone, main content, use cases for a marketing campaign, other requirements...' Always ask first what the media semantically depicts (scene, objects, on-screen content) before stylistic, texture, or usage aspects. Note: This parameter is ignored when analyze_type='video_style_replication'. (string) |
35
35
  | `--analyze_type` | No | Type of analysis to perform. Options: - '' (empty/default): Standard content analysis based on requirements - 'video_style_replication': Analyze video's cinematography style, expression techniques, and production methods to enable replicating its visual language in new content. When this type is used, a specialized prompt guides the analysis to extract filmmaking craft, aesthetic decisions, and technical approaches that define the video's unique character. The output is suitable for guiding AI video generation systems to replicate similar styles. (string, one of: , video_style_replication) |
36
+ | `--analysis_model` | No | Model used for the analysis. Defaults to gemini-3-flash-preview (fast). Use gemini-3.1-pro-preview for quality-critical review passes — e.g. music/audio QC, where the flash default is unreliable. (string, one of: gemini-3-flash-preview, gemini-3.1-pro-preview) |
36
37
 
37
38
  ## Local File Support
38
39
 
@@ -30,7 +30,7 @@ gsk audio [options]
30
30
  | Flag | Required | Description |
31
31
  |------|----------|-------------|
32
32
  | `<prompt>` (positional) | No | What to generate: narration text for TTS (model-specific format — see the model's prompting guide), or a description for music / sound effects. For voice-clone models this text is narrated with the cloned voice. (string) |
33
- | `-m`, `--model` | No | Model id. Query get_model_info with it before generating. (string, one of: CassetteAI/music-generator, bytedance/seed-audio-1.0, elevenlabs/music, elevenlabs/sound-effects, elevenlabs/v3-tts, elevenlabs/voice-changer, elevenlabs/voice-clone, fal-ai/elevenlabs/sound-effects, fal-ai/elevenlabs/tts/multilingual-v2, fal-ai/minimax-music/v2.6, fal-ai/minimax/speech-2.8-hd, fal-ai/minimax/voice-clone, fal-ai/vibevoice/7b, google/gemini-3.1-flash-tts-preview, google/lyria-music, mureka/instrumental-generator, mureka/song-generator, nova-sr) |
33
+ | `-m`, `--model` | No | Model id. Query get_model_info with it before generating. (string, one of: CassetteAI/music-generator, alibaba/qwen-audio-3-tts, bytedance/seed-audio-1.0, elevenlabs/music, elevenlabs/sound-effects, elevenlabs/v3-tts, elevenlabs/voice-changer, elevenlabs/voice-clone, fal-ai/elevenlabs/sound-effects, fal-ai/elevenlabs/tts/multilingual-v2, fal-ai/minimax/speech-2.8-hd, fal-ai/minimax/voice-clone, fal-ai/vibevoice/7b, google/gemini-3.1-flash-tts-preview, google/lyria-music, minimax/music-3.0, mureka/instrumental-generator, mureka/song-generator, nova-sr) |
34
34
  | `-p`, `--params` | No | Model-specific parameters (speakers, speed/pitch/volume, duration, voice_files, lyrics, composition_plan, output_format, ...). MUST follow the `params_schema` that get_model_info returns for the chosen model. (object) |
35
35
  | `-f`, `--file_name` | No | Name for the generated audio. (string, default: `audio`) |
36
36
  | `--audio_type` | No | (string, one of: speech, music, sound_effect, default: `speech`) |
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: gsk-connector
3
+ description: Discover and invoke ANY user connector (Gmail, Slack, Notion, HubSpot, custom MCP servers, ...) through one fixed 4-command flow. Use this INSTEAD of per-connector commands — it covers every current and future connector with zero extra docs.
4
+ ---
5
+
6
+ # Connectors — unified discovery & invocation
7
+
8
+ **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
9
+
10
+ > **Availability:** the unified `gsk connector` commands are rolling out
11
+ > behind a feature flag and may not be enabled for every account yet. If
12
+ > `gsk connector ...` returns an unknown-command / not-found error, fall
13
+ > back to the per-service commands documented in the sibling `gsk-<service>`
14
+ > skills (`gsk gmail ...`, `gsk slack ...`, `gsk mcp call ...`, ...) — those
15
+ > remain fully supported.
16
+
17
+ One flow covers every connector, present and future:
18
+
19
+ ```bash
20
+ gsk connector list # 1. what is already connected?
21
+ gsk connector search <keyword> # 2. does a connector for X exist?
22
+ gsk connector tools <identifier> # 3. what can it do? (full JSON schema per tool)
23
+ gsk connector call <identifier> -t <tool> -a '<json>' # 4. do it
24
+ ```
25
+
26
+ - `<identifier>`: connector id (`gmail`, `slack`, `hubspot`), display name
27
+ (`"Google Drive"`), or MCP slug (`figma_design`) — all returned by
28
+ steps 1-2.
29
+ - `-a` takes the tool's argument object as a **JSON string**; `'{}'` for none.
30
+ - Every response embeds a `next`/`call` field with the exact follow-up
31
+ command — copy it.
32
+
33
+ ## Error codes (final NDJSON line, `status: "error"`)
34
+
35
+ | error_code | Meaning / what to do |
36
+ |---|---|
37
+ | `not_connected` / `account_not_connected` | Ask the user to connect it: Settings → Connectors in the Genspark web app. Do not retry until they confirm. |
38
+ | `connector_blocked_by_org_policy` | The org admin disabled this connector. Tell the user; do not retry. |
39
+ | `unknown_connector` / `unknown_tool` | Typo — use the `suggestions` field. |
40
+ | `scope_denied` | This API token cannot use that tool. |
41
+ | `rate_limited` | Back off; honor `retry_after`. |
42
+
43
+ ## Example
44
+
45
+ ```bash
46
+ gsk connector search crm
47
+ gsk connector tools hubspot
48
+ gsk connector call hubspot -t create_contact -a '{"email": "a@b.com", "firstname": "Ada"}'
49
+ ```
50
+
51
+ Old per-connector commands (`gsk gmail ...`, `gsk mcp call ...`) still work
52
+ but are deprecated — prefer this flow.
@@ -15,6 +15,8 @@ metadata:
15
15
 
16
16
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
17
17
 
18
+ > **Note:** a unified `gsk connector` flow is rolling out (see `../gsk-connector/SKILL.md`: `gsk connector tools <id>` / `gsk connector call <id> -t <tool>`) and may not be enabled for every account yet. THIS command remains fully supported — use it directly, and it stays the fallback whenever `gsk connector` is unavailable.
19
+
18
20
  GitHub operations. Actions: list_repos, search_issues, create_issue, update_issue.
19
21
 
20
22
  ## Usage
@@ -16,6 +16,8 @@ metadata:
16
16
 
17
17
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
18
18
 
19
+ > **Note:** a unified `gsk connector` flow is rolling out (see `../gsk-connector/SKILL.md`: `gsk connector tools <id>` / `gsk connector call <id> -t <tool>`) and may not be enabled for every account yet. THIS command remains fully supported — use it directly, and it stays the fallback whenever `gsk connector` is unavailable.
20
+
19
21
  Gmail operations. Actions: search, read, send, draft, reply, forward, delete, archive, move, mark_as_read, add_label, remove_label, create_label, get_attachment, list_send_as, get_vacation, update_vacation, get_signature, update_signature.
20
22
 
21
23
  ## Usage
@@ -15,6 +15,8 @@ metadata:
15
15
 
16
16
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
17
17
 
18
+ > **Note:** a unified `gsk connector` flow is rolling out (see `../gsk-connector/SKILL.md`: `gsk connector tools <id>` / `gsk connector call <id> -t <tool>`) and may not be enabled for every account yet. THIS command remains fully supported — use it directly, and it stays the fallback whenever `gsk connector` is unavailable.
19
+
18
20
  Google Calendar operations. Actions: list, free_busy, create, respond, modify, delete.
19
21
 
20
22
  ## Usage
@@ -27,11 +29,12 @@ gsk google_calendar [options]
27
29
 
28
30
  | Flag | Required | Description |
29
31
  |------|----------|-------------|
30
- | `<action>` (positional) | Yes | Action to perform. 'list': List upcoming calendar events; 'free_busy': Query free/busy intervals for calendars in a time window (find open meeting slots); 'create': Create a new calendar event. By default this returns a LOCAL DRAFT only — nothing lands in the calendar until the user confirms it in the Genspark UI. Callers without a confirmation UI (e.g. gsk) must pass --skip_confirmation to create the event directly; 'respond': RSVP (accept / decline / tentative) to an existing invite so the organizer's UI reflects the response; 'modify': Modify (events.patch) an existing event in place without delete+create; 'delete': Delete a calendar event (string, one of: list, free_busy, create, respond, modify, delete) |
32
+ | `<action>` (positional) | Yes | Action to perform. 'list': List upcoming calendar events. Returns at most 'limit' (default 20) events; the response sets truncated=true when more events exist in the window; 'free_busy': Query free/busy intervals for calendars in a time window (find open meeting slots); 'create': Create a new calendar event. By default this returns a LOCAL DRAFT only — nothing lands in the calendar until the user confirms it in the Genspark UI. Callers without a confirmation UI (e.g. gsk) must pass --skip_confirmation to create the event directly; 'respond': RSVP (accept / decline / tentative) to an existing invite so the organizer's UI reflects the response; 'modify': Modify (events.patch) an existing event in place without delete+create; 'delete': Delete a calendar event (string, one of: list, free_busy, create, respond, modify, delete) |
31
33
  | `--filter_query` | No | [list] Text to filter calendar events, empty for listing all events (string) |
32
34
  | `--time_min` | No | [list] Optional. Start time of the search range (RFC3339 timestamp) (string) |
33
35
  | `--time_max` | No | [list] Optional. End time of the search range (RFC3339 timestamp) (string) |
34
36
  | `--from_account` | No | [list] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [create] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [respond] Optional: Email address of the Gmail account to use. Defaults to the user's primary Gmail account. \| [modify] Optional: Email address of the Gmail account to use. \| [delete] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. (string) |
37
+ | `--limit` | No | [list] Optional. Maximum number of events to return. Defaults to 20. (integer) |
35
38
  | `--start_time` | No | [free_busy] Window start, RFC3339 (e.g. '2026-07-20T09:00:00+08:00' or '2026-07-20T01:00:00Z'). \| [create] Start time of the event in ISO 8601 format, must include correct timezone offset (e.g., 'yyyy-mm-ddThh:mm:ss+hh:mm') \| [modify] New start time (ISO 8601 with timezone offset, e.g. '2026-05-20T10:00:00-07:00'). Pass with --end_time when rescheduling. (string) |
36
39
  | `--end_time` | No | [free_busy] Window end, RFC3339. \| [create] End time of the event in ISO 8601 format, must include correct timezone offset (e.g., 'yyyy-mm-ddThh:mm:ss-hh:mm') \| [modify] New end time (ISO 8601 with timezone offset). Required if start_time is given. (string) |
37
40
  | `--calendars` | No | [free_busy] Calendar IDs to check — 'primary' or email addresses. Default: ['primary']. (array) |
@@ -16,6 +16,8 @@ metadata:
16
16
 
17
17
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
18
18
 
19
+ > **Note:** a unified `gsk connector` flow is rolling out (see `../gsk-connector/SKILL.md`: `gsk connector tools <id>` / `gsk connector call <id> -t <tool>`) and may not be enabled for every account yet. THIS command remains fully supported — use it directly, and it stays the fallback whenever `gsk connector` is unavailable.
20
+
19
21
  Google Chat operations. Actions: list_spaces, read, list_members, send, upload, react, update, delete. Sent messages carry a visible Genspark app attribution next to the sender's name (added by Google, cannot be hidden).
20
22
 
21
23
  ## Usage
@@ -32,8 +34,9 @@ gsk google_chat [options]
32
34
  | `--search_query` | No | [list_spaces] Optional case-insensitive filter on the space display name. (string) |
33
35
  | `--limit` | No | [list_spaces] Maximum number of spaces to return (1-200). Default: 50 \| [read] Maximum number of messages to return (1-100). Default: 25 (integer) |
34
36
  | `--space` | No | [read] Space resource name, e.g. 'spaces/AAAAxxxx'. \| [send] Space resource name, e.g. 'spaces/AAAAxxxx'. \| [upload] Space resource name, e.g. 'spaces/AAAAxxxx'. \| [list_members] Space resource name, e.g. 'spaces/AAAAxxxx'. (string) |
37
+ | `--thread` | No | [read] Optional thread resource name (e.g. 'spaces/AAAAxxxx/threads/yyyy') to return only that thread's messages — e.g. to verify where a threaded reply landed. \| [send] Optional thread resource name (e.g. 'spaces/AAAAxxxx/threads/yyyy') to reply in a thread. Omit to start a new thread. If the thread cannot be replied to, the API starts a NEW thread instead — the response then carries 'thread_fallback': true and 'actual_thread' (set 'strict_thread' to fail instead). \| [upload] Optional thread resource name (e.g. 'spaces/AAAAxxxx/threads/yyyy') to attach in a thread. Omit to start a new thread. If the thread cannot be replied to, the API starts a NEW thread instead — the response then carries 'thread_fallback': true and 'actual_thread' (set 'strict_thread' to fail instead). (string) |
35
38
  | `--message` | No | [send] The message text to send. Supports Google Chat formatting. \| [upload] Optional caption text sent with the attachment. \| [update] Message resource name to edit, e.g. 'spaces/AAAAxxxx/messages/yyyy'. \| [delete] Message resource name to delete, e.g. 'spaces/AAAAxxxx/messages/yyyy'. \| [react] Message resource name, e.g. 'spaces/AAAAxxxx/messages/yyyy'. (string) |
36
- | `--thread` | No | [send] Optional thread resource name (e.g. 'spaces/AAAAxxxx/threads/yyyy') to reply in a thread. Omit to start a new thread. \| [upload] Optional thread resource name (e.g. 'spaces/AAAAxxxx/threads/yyyy') to attach in a thread. Omit to start a new thread. (string) |
39
+ | `--strict_thread` | No | [send] If true and 'thread' is set, fail with an error when the thread cannot be replied to instead of falling back to a new thread. Default: false. \| [upload] If true and 'thread' is set, fail with an error when the thread cannot be replied to instead of falling back to a new thread. Default: false. (boolean, default: `False`) |
37
40
  | `--file_path` | No | [upload] Path or URL of the file to upload. Accepts (1) a local server filesystem path; (2) a Genspark file-wrapper URL (``https://www.genspark.ai/api/files/s/<code>``); or (3) an AI Drive path (``/mnt/aidrive/...``, ``/aidrive/...``, ``aidrive://...``). Mutually exclusive with ``content``. (string) |
38
41
  | `--content` | No | [upload] Text content to upload as the file body (UTF-8). Requires ``file_name``. Mutually exclusive with ``file_path``. (string) |
39
42
  | `--file_name` | No | [upload] File name including extension (e.g. 'report.pdf'). Required with ``content``; defaults to the source basename with ``file_path``. (string) |
@@ -14,6 +14,8 @@ metadata:
14
14
 
15
15
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
16
16
 
17
+ > **Note:** a unified `gsk connector` flow is rolling out (see `../gsk-connector/SKILL.md`: `gsk connector tools <id>` / `gsk connector call <id> -t <tool>`) and may not be enabled for every account yet. THIS command remains fully supported — use it directly, and it stays the fallback whenever `gsk connector` is unavailable.
18
+
17
19
  Google Contacts operations. Actions: search, get.
18
20
 
19
21
  ## Usage
@@ -15,6 +15,8 @@ metadata:
15
15
 
16
16
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
17
17
 
18
+ > **Note:** a unified `gsk connector` flow is rolling out (see `../gsk-connector/SKILL.md`: `gsk connector tools <id>` / `gsk connector call <id> -t <tool>`) and may not be enabled for every account yet. THIS command remains fully supported — use it directly, and it stays the fallback whenever `gsk connector` is unavailable.
19
+
18
20
  Google Docs document operations. Actions: create, read, append, batch_update, export, search.
19
21
 
20
22
  ## Usage
@@ -14,6 +14,8 @@ metadata:
14
14
 
15
15
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
16
16
 
17
+ > **Note:** a unified `gsk connector` flow is rolling out (see `../gsk-connector/SKILL.md`: `gsk connector tools <id>` / `gsk connector call <id> -t <tool>`) and may not be enabled for every account yet. THIS command remains fully supported — use it directly, and it stays the fallback whenever `gsk connector` is unavailable.
18
+
17
19
  Google Drive file operations. Actions: list, search, read, upload, share.
18
20
 
19
21
  ## Usage
@@ -33,6 +35,7 @@ gsk gdrive [options]
33
35
  | `--folder_url` | No | [list] Google Drive folder URL. \| [search] Google Drive folder URL to list/search within. (string) |
34
36
  | `--mime_type` | No | [list] Optional MIME type filter. \| [search] Filter by MIME type for 'search' (e.g., 'application/pdf'). \| [upload] The MIME type of the file (optional, will be auto-detected from file_name extension). Examples: 'text/plain', 'text/csv', 'application/json', 'image/png'. (string) |
35
37
  | `--trashed` | No | [list] Include trashed files. \| [search] Include trashed files in search results for 'search' action (boolean) |
38
+ | `--all_pages` | No | [list] List every page in the selected folder. Use for complete programmatic inventory; default false. (boolean) |
36
39
  | `--query` | No | [search] Use keywords simply, terms will be combined into advanced search query in the later process.For example, if user ask for 'tax related documents', just use 'tax' as the query,DO NOT use advanced search query like 'name contains 'tax'' or 'fullText contains 'tax''. Use '*' to list all authorized files, especially when folder_id is supplied. (string) |
37
40
  | `--owner` | No | [search] Filter by file owner (email address) for 'search' action (string) |
38
41
  | `--file_id` | No | [read] The ID of the file to read from Google Drive. \| [share] Google Drive file ID to share (from google_drive search/list/upload results). (string) |
@@ -15,6 +15,8 @@ metadata:
15
15
 
16
16
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
17
17
 
18
+ > **Note:** a unified `gsk connector` flow is rolling out (see `../gsk-connector/SKILL.md`: `gsk connector tools <id>` / `gsk connector call <id> -t <tool>`) and may not be enabled for every account yet. THIS command remains fully supported — use it directly, and it stays the fallback whenever `gsk connector` is unavailable.
19
+
18
20
  Google Sheets spreadsheet operations. Actions: create, read, write, append, search, export.
19
21
 
20
22
  ## Usage
@@ -32,14 +34,14 @@ gsk sheets [options]
32
34
  | `<action>` (positional) | Yes | Action to perform. 'create': Create a new spreadsheet; 'read': Read data from a spreadsheet; 'write': Write data to a specific range; 'append': Append rows to a spreadsheet; 'search': Search spreadsheets by name; 'export': Export a spreadsheet to CSV or other format (string, one of: create, read, write, append, search, export) |
33
35
  | `--title` | No | [create] Title of the new spreadsheet. (string) |
34
36
  | `--sheet_names` | No | [create] Names of sheets to create. Default: ['Sheet1'] (array) |
35
- | `--initial_data` | No | [create] Optional inline initial data for the first sheet, as a 2D array where each inner array is a row. Mutually exclusive with from_sandbox_path / from_aidrive_path / from_url. Prefer the from_* options when the data already exists as a file (CSV/TSV/XLSX/JSON), since 'initial_data' must round-trip through the LLM context. (array) |
37
+ | `--initial_data` | No | [create] Optional inline initial data for the first sheet, as a 2D array where each inner array is a row. Via the gsk CLI, pass the whole array as ONE JSON string: --initial_data '[["Name","Age"],["Alice","30"]]'. Mutually exclusive with from_sandbox_path / from_aidrive_path / from_url. Prefer the from_* options when the data already exists as a file (CSV/TSV/XLSX/JSON), since 'initial_data' must round-trip through the LLM context. (array) |
36
38
  | `--from_sandbox_path` | No | [create] Absolute path inside the workflow sandbox (e.g. '/home/user/result.csv'). When set, the file is read from the sandbox and parsed into a 2D array instead of using 'initial_data'. Supported formats: csv, tsv, xlsx, json. Legacy binary .xls (BIFF) is NOT supported — re-save as .xlsx first. Mutually exclusive with from_aidrive_path / from_url / initial_data. \| [write] Absolute path inside the workflow sandbox (e.g. '/home/user/result.csv'). When set, the file is read from the sandbox and parsed into a 2D array instead of using 'values'. Supported formats: csv, tsv, xlsx, json. Legacy binary .xls (BIFF) is NOT supported — re-save as .xlsx first. Mutually exclusive with from_aidrive_path / from_url / values. \| [append] Absolute path inside the workflow sandbox (e.g. '/home/user/result.csv'). When set, the file is read from the sandbox and parsed into a 2D array instead of using 'values'. Supported formats: csv, tsv, xlsx, json. Legacy binary .xls (BIFF) is NOT supported — re-save as .xlsx first. Mutually exclusive with from_aidrive_path / from_url / values. (string) |
37
39
  | `--from_aidrive_path` | No | [create] Absolute path inside the user's AI-Drive (e.g. '/reports/sales.xlsx'). Read directly via the AI-Drive backend; the file is NOT loaded into the LLM context. Mutually exclusive with from_sandbox_path / from_url / initial_data. \| [write] Absolute path inside the user's AI-Drive (e.g. '/reports/sales.xlsx'). Read directly via the AI-Drive backend; the file is NOT loaded into the LLM context. Mutually exclusive with from_sandbox_path / from_url / values. \| [append] Absolute path inside the user's AI-Drive (e.g. '/reports/sales.xlsx'). Read directly via the AI-Drive backend; the file is NOT loaded into the LLM context. Mutually exclusive with from_sandbox_path / from_url / values. (string) |
38
40
  | `--from_url` | No | [create] HTTPS URL of a CSV/TSV/XLSX/JSON file. Accepts AI-Drive readable URLs, file-wrapper URLs, or any HTTPS link. Plain http:// is rejected; redirects are not followed. Mutually exclusive with from_sandbox_path / from_aidrive_path / initial_data. \| [write] HTTPS URL of a CSV/TSV/XLSX/JSON file. Accepts AI-Drive readable URLs, file-wrapper URLs, or any HTTPS link. Plain http:// is rejected; redirects are not followed. Mutually exclusive with from_sandbox_path / from_aidrive_path / values. \| [append] HTTPS URL of a CSV/TSV/XLSX/JSON file. Accepts AI-Drive readable URLs, file-wrapper URLs, or any HTTPS link. Plain http:// is rejected; redirects are not followed. Mutually exclusive with from_sandbox_path / from_aidrive_path / values. (string) |
39
41
  | `--sheet_name` | No | [create] For xlsx sources only: which sheet to read. Defaults to the first sheet if omitted. Ignored for csv/tsv/json sources. \| [write] For xlsx sources only: which sheet to read. Defaults to the first sheet if omitted. Ignored for csv/tsv/json sources. \| [append] For xlsx sources only: which sheet to read. Defaults to the first sheet if omitted. Ignored for csv/tsv/json sources. (string) |
40
42
  | `--spreadsheet_id` | No | [read] The ID of the spreadsheet to read from. \| [write] The ID of the spreadsheet to write to. \| [append] The ID of the spreadsheet to append to. \| [export] The ID of the Google Sheets spreadsheet to export. (string) |
41
43
  | `--range` | No | [read] The A1 notation range to read (e.g., 'Sheet1!A1:D10', 'A1:B5'). Default: reads first sheet entirely. \| [write] The A1 notation range to write to (e.g., 'Sheet1!A1:D10'). The range should match the size of the data. \| [append] The A1 notation of a range to search for data table. New rows will be appended after the last row in this table. Example: 'Sheet1!A:D' or 'Sheet1' (string) |
42
- | `--values` | No | [write] Inline 2D array of values to write. Each inner array is a row. Example: [['Name', 'Age'], ['Alice', '30'], ['Bob', '25']]. Mutually exclusive with from_sandbox_path / from_aidrive_path / from_url. Prefer the from_* options when the data already exists as a file, to avoid sending it through the LLM context. \| [append] Inline 2D array of values to append. Each inner array is a row. Example: [['Alice', '30'], ['Bob', '25']]. Mutually exclusive with from_sandbox_path / from_aidrive_path / from_url. Prefer the from_* options when the data already exists as a file. (array) |
44
+ | `--values` | No | [write] Inline 2D array of values to write. Each inner array is a row. Example: [['Name', 'Age'], ['Alice', '30'], ['Bob', '25']]. Via the gsk CLI, pass the whole array as ONE JSON string: --values '[["Name","Age"],["Alice","30"]]'. Mutually exclusive with from_sandbox_path / from_aidrive_path / from_url. Prefer the from_* options when the data already exists as a file, to avoid sending it through the LLM context. \| [append] Inline 2D array of values to append. Each inner array is a row. Example: [['Alice', '30'], ['Bob', '25']]. Via the gsk CLI, pass the whole array as ONE JSON string: --values '[["Alice","30"],["Bob","25"]]'. Mutually exclusive with from_sandbox_path / from_aidrive_path / from_url. Prefer the from_* options when the data already exists as a file. (array) |
43
45
  | `--query` | No | [search] Search query to find spreadsheets by name or content. (string) |
44
46
  | `--limit` | No | [search] Maximum number of results to return (1-50). Default: 10 (integer) |
45
47
  | `--filename` | No | [export] Optional custom filename for the exported file (without extension). If not provided, the original spreadsheet name will be used. (string) |
@@ -2,8 +2,9 @@
2
2
  name: gsk-hub
3
3
  version: 1.0.0
4
4
  description: 'Genspark Hub (the user''s project spaces at genspark.ai/hub) — NOT HubSpot.
5
- Actions: list_hubs, read_hub. When the user says ''my Hub'', use this; for HubSpot
6
- CRM use `hubspot`.'
5
+ Read-only actions: list_hubs, read_hub, read_file, read_long_line, grep_files, get_file_url,
6
+ search_sessions, grep_session, read_session, read_long_line_session. When the user
7
+ says ''my Hub'', use this; for HubSpot CRM use `hubspot`.'
7
8
  metadata:
8
9
  category: general
9
10
  requires:
@@ -16,7 +17,7 @@ metadata:
16
17
 
17
18
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
18
19
 
19
- Genspark Hub (the user's project spaces at genspark.ai/hub) — NOT HubSpot. Actions: list_hubs, read_hub. When the user says 'my Hub', use this; for HubSpot CRM use `hubspot`.
20
+ Genspark Hub (the user's project spaces at genspark.ai/hub) — NOT HubSpot. Read-only actions: list_hubs, read_hub, read_file, read_long_line, grep_files, get_file_url, search_sessions, grep_session, read_session, read_long_line_session. When the user says 'my Hub', use this; for HubSpot CRM use `hubspot`.
20
21
 
21
22
  ## Usage
22
23
 
@@ -28,9 +29,18 @@ gsk hub [options]
28
29
 
29
30
  | Flag | Required | Description |
30
31
  |------|----------|-------------|
31
- | `<action>` (positional) | Yes | Action to perform. 'list_hubs': List the user's Genspark Hubs; 'read_hub': Read one hub's metadata, members, files, and projects (string, one of: list_hubs, read_hub) |
32
+ | `<action>` (positional) | Yes | Action to perform. 'list_hubs': List the user's Genspark Hubs; 'read_hub': Read one hub's metadata, members, files, and projects; 'read_file': Read a hub file's extracted text (line numbers, limit/offset pagination); 'read_long_line': Read the full content of a truncated file line; 'grep_files': Regex-search hub file text (optional include file filter); 'get_file_url': Get a shareable URL for the original hub file (raw bytes, for download / binary analysis); 'search_sessions': Find previous sessions in a hub by keyword (empty query = recent sessions); 'grep_session': Regex-search one hub session's conversation history; 'read_session': Read one hub session's conversation history (line numbers, limit/offset pagination); 'read_long_line_session': Read the full content of a truncated session line (string, one of: list_hubs, read_hub, read_file, read_long_line, grep_files, get_file_url, search_sessions, grep_session, read_session, read_long_line_session) |
32
33
  | `--include_archived` | No | [list_hubs] Also include archived hubs. Default: false. (boolean) |
33
- | `--hub_id` | No | [read_hub] Hub ID (from hub_list_hubs). (string) |
34
+ | `--hub_id` | No | [read_hub] Hub ID (from hub_list_hubs). Optional when the calling project belongs to a hub — defaults to that hub. \| [read_file] Hub ID (from hub_list_hubs). Optional when the calling project belongs to a hub — defaults to that hub. \| [read_long_line] Hub ID (from hub_list_hubs). Optional when the calling project belongs to a hub — defaults to that hub. \| [grep_files] Hub ID (from hub_list_hubs). Optional when the calling project belongs to a hub — defaults to that hub. \| [get_file_url] Hub ID (from hub_list_hubs). Optional when the calling project belongs to a hub — defaults to that hub. \| [search_sessions] Hub ID (from hub_list_hubs). Optional when the calling project belongs to a hub — defaults to that hub. \| [grep_session] Hub ID (from hub_list_hubs). Optional when the calling project belongs to a hub — defaults to that hub. \| [read_session] Hub ID (from hub_list_hubs). Optional when the calling project belongs to a hub — defaults to that hub. \| [read_long_line_session] Hub ID (from hub_list_hubs). Optional when the calling project belongs to a hub — defaults to that hub. (string) |
35
+ | `--file_name` | No | [read_file] Exact file name from hub_read_hub's files list. \| [read_long_line] Exact file name from hub_read_hub's files list. \| [get_file_url] Exact file name from hub_read_hub's files list. (string) |
36
+ | `--limit` | No | [read_file] Number of lines to read (default 100, max 2000). \| [read_session] Number of lines to read (default 100, max 1000). (integer) |
37
+ | `--offset` | No | [read_file] Starting line number (1-indexed), for pagination. \| [read_session] Starting line number (1-indexed), for pagination. (integer) |
38
+ | `--line_number` | No | [read_long_line] The line number (1-indexed) of the truncated line. \| [read_long_line_session] The line number (1-indexed) of the truncated line. (integer) |
39
+ | `--char_offset` | No | [read_long_line] Starting character position (0-indexed, default 0), for paginating through very long lines. \| [read_long_line_session] Starting character position (0-indexed, default 0), for paginating through very long lines. (integer) |
40
+ | `--pattern` | No | [grep_files] Regular expression to search for in file content. \| [grep_session] Regular expression to search for in the session. (string) |
41
+ | `--include` | No | [grep_files] Optional file name filter (e.g. '*.pdf', '*.docx'). (string) |
42
+ | `--query` | No | [search_sessions] Keywords, e.g. 'API error', 'brand guidelines'. Empty returns recent sessions. (string) |
43
+ | `--id` | No | [grep_session] Session ID (from hub_search_sessions). \| [read_session] Session ID (from hub_search_sessions). \| [read_long_line_session] Session ID (from hub_search_sessions). (string) |
34
44
 
35
45
  ## See Also
36
46
 
@@ -28,13 +28,13 @@ gsk img [options]
28
28
 
29
29
  | Flag | Required | Description |
30
30
  |------|----------|-------------|
31
- | `-m`, `--model` | No | Default model: use nano-banana-2-flash-lite gpt-image-2: GPT Image 2 - Latest OpenAI image model. Superior text rendering, editing, and face preservation. Supports text-to-image and image editing with multi-image input. nano-banana-pro: [GEMINI NANO BANANA PRO] State of the Art (SOTA) for both generation and image editing. Multi-image fusion: Combine different images into one seamless new visual. Character & style consistency: Maintain the same subject or visual style across multiple generations. Conversational editing: Edit images with simple, natural language instructions. Perfect for creative use cases, marketing, training, advertising. Supports up to 14 images as reference input. Supports high resolution output up to 2K/4K. nano-banana-2: [GEMINI NANO BANANA 2] Gemini 3.1 Flash Image. Fast and efficient with advanced reasoning. Multi-image fusion with up to 14 reference images. Supports 0.5K/1K/2K/4K resolution. Google Search grounding for real-time data. Best for high-volume, speed-optimized workflows. fal-ai/bytedance/seedream/v5/lite: Bytedance Seedream v5 Lite model for text-to-image, image-to-image (single and multiple image editing) generation with native 2K resolution and excellent text layout.fal-ai/flux-2-pro: Flux 2 Pro model - higher quality version of Flux 2 with professional-grade output. Enhanced realism, superior text generation, and advanced editing capabilities. Ideal for high-quality realistic images and complex editing tasks.fal-ai/z-image/turbo: Z-Image Turbo model optimized for speed without sacrificing quality. Supports both text-to-image and image-to-image modes. Perfect for quick iterations, bulk generation, style transfer, and cost-effective projects.bbox-segment: A model for extracting subjects from images based on bbox region.fal-bria-rmbg: A model specialized for remove background from image. Should prioritize this tool if the user wants to remove background from image. fal-ai/recraft-clarity-upscale: A model specialized for upscale image. fal-ai/image-editing/text-removal: A specialized model for removing text and watermarks from images. Automatically detects and removes text while preserving the background and other visual elements. Use when users want to clean images, remove watermarks, or eliminate text overlays. flux-pro/outpaint: A model specialized for expand image to a specific aspect ratio. nano-banana-2-flash-lite: [GEMINI NANO BANANA 2 FLASH LITE] Fast, lightweight Gemini image model for text-to-image and image editing with multi-image input. Native 1K output. Best for speed-sensitive, high-volume workflows. (string, one of: gpt-image-2, nano-banana-pro, nano-banana-2, fal-ai/bytedance/seedream/v5/lite, fal-ai/flux-2-pro, fal-ai/z-image/turbo, bbox-segment, fal-bria-rmbg, fal-ai/recraft-clarity-upscale, fal-ai/image-editing/text-removal, flux-pro/outpaint, nano-banana-2-flash-lite) |
31
+ | `-m`, `--model` | No | If this parameter is omitted, nano-banana-2-flash-lite is used. Pick ONLY a model described below; never pick an undescribed model name unless the user explicitly asks for it by name. gpt-image-2: GPT Image 2 - Latest OpenAI image model. Superior text rendering, editing, and face preservation. Supports text-to-image and image editing with multi-image input. nano-banana-pro: [GEMINI NANO BANANA PRO] State of the Art (SOTA) for both generation and image editing. Multi-image fusion: Combine different images into one seamless new visual. Character & style consistency: Maintain the same subject or visual style across multiple generations. Conversational editing: Edit images with simple, natural language instructions. Perfect for creative use cases, marketing, training, advertising. Supports up to 14 images as reference input. Supports high resolution output up to 2K/4K. nano-banana-2: [GEMINI NANO BANANA 2] Gemini 3.1 Flash Image. Fast and efficient with advanced reasoning. Multi-image fusion with up to 14 reference images. Supports 0.5K/1K/2K/4K resolution. Google Search grounding for real-time data. Best for high-volume, speed-optimized workflows. fal-ai/bytedance/seedream/v5/lite: Bytedance Seedream v5 Lite model for text-to-image, image-to-image (single and multiple image editing) generation with native 2K resolution and excellent text layout.fal-ai/bytedance/seedream/v5/pro: Bytedance Seedream 5.0 Pro - flagship photorealistic model for text-to-image and multi-image editing (up to 10 reference images). High-density text/infographic layout, region-precise edits, native text in 14 languages, up to 2K output. qwen-image-3: Qwen Image 3 - Alibaba's latest image model for text-to-image and reference-image editing (1-3 reference images). Superior Chinese & English text rendering, precise prompt adherence, identity-preserving edits. Best for posters, bilingual typography, and instruction-based edits. fal-ai/flux-2-pro: Flux 2 Pro model - higher quality version of Flux 2 with professional-grade output. Enhanced realism, superior text generation, and advanced editing capabilities. Ideal for high-quality realistic images and complex editing tasks.fal-ai/z-image/turbo: Z-Image Turbo model optimized for speed without sacrificing quality. Supports both text-to-image and image-to-image modes. Perfect for quick iterations, bulk generation, style transfer, and cost-effective projects.bbox-segment: A model for extracting subjects from images based on bbox region.fal-bria-rmbg: A model specialized for remove background from image. Should prioritize this tool if the user wants to remove background from image. fal-ai/recraft-clarity-upscale: A model specialized for upscale image. fal-ai/image-editing/text-removal: A specialized model for removing text and watermarks from images. Automatically detects and removes text while preserving the background and other visual elements. Use when users want to clean images, remove watermarks, or eliminate text overlays. flux-pro/outpaint: A model specialized for expand image to a specific aspect ratio. nano-banana-2-flash-lite: [GEMINI NANO BANANA 2 FLASH LITE] Fast, lightweight Gemini image model for text-to-image and image editing with multi-image input. Native 1K output. Best for speed-sensitive, high-volume workflows. (string, one of: gpt-image-2, nano-banana-pro, nano-banana-2, fal-ai/bytedance/seedream/v5/lite, fal-ai/bytedance/seedream/v5/pro, qwen-image-3, fal-ai/flux-2-pro, fal-ai/z-image/turbo, bbox-segment, fal-bria-rmbg, fal-ai/recraft-clarity-upscale, fal-ai/image-editing/text-removal, flux-pro/outpaint, nano-banana-2-flash-lite) |
32
32
  | `<query>` (positional) | No | Detailed description of the image to generate. The prompt should be in English.However, any specific text that should appear within the image does not need to be translated.(e.g., 'A futuristic cityscape with flying cars and neon lights at night'). Omit when passing the prompt by `query_file` instead. (string) |
33
33
  | `--query_file` | No | Optional. Repo-relative path to a UTF-8 text file containing the prompt, used verbatim in place of `query` (lets you pass a long prompt by path instead of inlining it). Requires `repo_id`. When set, `query` may be omitted. (string) |
34
34
  | `--bbox` | No | BBox of the target object, for bbox segmentation modelFormat: [x1, y1, x2, y2], x1 and y1 are the top-left corner coordinates, x2 and y2 are the bottom-right corner coordinates. (array) |
35
35
  | `-i`, `--image_urls` | No | The URLs of the images to use as a reference for the image generation or editing. (default is [], if the task is based on one or more reference images, it is required) (array) |
36
36
  | `--repo_id` | No | Optional. Second Brain repo id (provided in the agent's system prompt). Required only when image_urls contains relative paths from a Second Brain project (e.g. 'assets/foo.png'). Absolute http(s) URLs and data: URLs do not need this parameter. (string) |
37
- | `-r`, `--aspect_ratio` | No | The aspect ratio of the image to generate. (string, one of: 1:1, 4:3, 16:9, 9:16, 3:4, 2:3, 3:2, auto) |
37
+ | `-r`, `--aspect_ratio` | No | The aspect ratio of the image to generate. Default 'auto'. When editing with image_urls (image-to-image), use 'auto' so the output keeps the reference image's aspect ratio — never switch between portrait and landscape unless the user explicitly asks. (string, one of: 1:1, 4:3, 16:9, 9:16, 3:4, 2:3, 3:2, auto) |
38
38
  | `-s`, `--image_size` | No | Image size resolution. Default is auto. (string, one of: auto, 0.5k, 1k, 2k, 3k, 4k) |
39
39
 
40
40
  ## Local File Support