@genspark/cli 1.4.2 → 1.5.1

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 (68) hide show
  1. package/README.md +23 -1
  2. package/dist/argsFile.d.ts +17 -0
  3. package/dist/argsFile.d.ts.map +1 -0
  4. package/dist/argsFile.js +38 -0
  5. package/dist/argsFile.js.map +1 -0
  6. package/dist/client.d.ts +10 -0
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +19 -1
  9. package/dist/client.js.map +1 -1
  10. package/dist/config.d.ts +11 -8
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +100 -13
  13. package/dist/config.js.map +1 -1
  14. package/dist/index.d.ts +7 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +290 -41
  17. package/dist/index.js.map +1 -1
  18. package/dist/localFiles.d.ts +62 -0
  19. package/dist/localFiles.d.ts.map +1 -0
  20. package/dist/localFiles.js +130 -0
  21. package/dist/localFiles.js.map +1 -0
  22. package/dist/logger.d.ts +8 -0
  23. package/dist/logger.d.ts.map +1 -1
  24. package/dist/logger.js +13 -0
  25. package/dist/logger.js.map +1 -1
  26. package/dist/mesh/checkupdate.js +3 -3
  27. package/dist/mesh/checkupdate.js.map +1 -1
  28. package/dist/runtime.d.ts +44 -0
  29. package/dist/runtime.d.ts.map +1 -0
  30. package/dist/runtime.js +62 -0
  31. package/dist/runtime.js.map +1 -0
  32. package/dist/types.d.ts +1 -0
  33. package/dist/types.d.ts.map +1 -1
  34. package/dist/updater.d.ts +1 -0
  35. package/dist/updater.d.ts.map +1 -1
  36. package/dist/updater.js +10 -0
  37. package/dist/updater.js.map +1 -1
  38. package/docs/skills.md +24 -23
  39. package/package.json +1 -1
  40. package/skills/gsk-analyze-media/SKILL.md +2 -1
  41. package/skills/gsk-audio-generation/SKILL.md +1 -1
  42. package/skills/gsk-connector/SKILL.md +52 -0
  43. package/skills/gsk-create-task/SKILL.md +34 -1
  44. package/skills/gsk-github/SKILL.md +2 -0
  45. package/skills/gsk-gmail/SKILL.md +2 -0
  46. package/skills/gsk-google-calendar/SKILL.md +4 -1
  47. package/skills/gsk-google-chat/SKILL.md +4 -1
  48. package/skills/gsk-google-contacts/SKILL.md +2 -0
  49. package/skills/gsk-google-docs/SKILL.md +2 -0
  50. package/skills/gsk-google-drive/SKILL.md +3 -0
  51. package/skills/gsk-google-sheets/SKILL.md +4 -2
  52. package/skills/gsk-google-slides/SKILL.md +47 -0
  53. package/skills/gsk-hub/SKILL.md +15 -5
  54. package/skills/gsk-image-generation/SKILL.md +2 -2
  55. package/skills/gsk-microsoft-teams/SKILL.md +16 -11
  56. package/skills/gsk-notion/SKILL.md +2 -0
  57. package/skills/gsk-onedrive/SKILL.md +3 -0
  58. package/skills/gsk-outlook-calendar/SKILL.md +3 -1
  59. package/skills/gsk-outlook-contacts/SKILL.md +2 -0
  60. package/skills/gsk-outlook-email/SKILL.md +3 -10
  61. package/skills/gsk-salesforce/SKILL.md +2 -0
  62. package/skills/gsk-shared/SKILL.md +12 -1
  63. package/skills/gsk-sharepoint/SKILL.md +3 -0
  64. package/skills/gsk-sharepoint-upload/SKILL.md +2 -0
  65. package/skills/gsk-slack/SKILL.md +12 -7
  66. package/skills/gsk-task-continue/SKILL.md +4 -3
  67. package/skills/gsk-video-generation/SKILL.md +8 -7
  68. package/skills/gsk-youtube/SKILL.md +5 -4
@@ -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/types.d.ts CHANGED
@@ -15,6 +15,7 @@ export interface ApiResponse<T = unknown> {
15
15
  message: string;
16
16
  data: T | null;
17
17
  session_state?: Record<string, unknown> | null;
18
+ http_status?: number;
18
19
  }
19
20
  export interface ToolParameter {
20
21
  type: string | string[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAC/C;AAGD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACxB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ,CAAA;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;QACzC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KACpB,CAAA;IACD,GAAG,EAAE;QACH,OAAO,EAAE,MAAM,EAAE,CAAA;QACjB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC1C,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;QAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAA;QAI1B,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;KACvB,CAAA;CACF;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB;AAGD,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAGD,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAGD,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAI9C,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAGD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACxB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ,CAAA;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;QACzC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KACpB,CAAA;IACD,GAAG,EAAE;QACH,OAAO,EAAE,MAAM,EAAE,CAAA;QACjB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC1C,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;QAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAA;QAI1B,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;KACvB,CAAA;CACF;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB;AAGD,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAGD,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAGD,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;CACrB"}
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
@@ -2,60 +2,61 @@
2
2
 
3
3
  > Auto-generated by `python -m backend.genspark_tool_cli.generate_skills`. Do not edit manually.
4
4
 
5
- **Total skills:** 51
5
+ **Total skills:** 52
6
6
 
7
- ## Service Skills (51)
7
+ ## Service Skills (52)
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-google-slides](../skills/gsk-google-slides/SKILL.md) | Google Slides presentation operations. Actions: search, read, create, batch_update, export. |
32
+ | [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
33
  | [gsk-image-generation](../skills/gsk-image-generation/SKILL.md) | Generate images using AI models. Supports text-to-image and image editing. |
33
34
  | [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 |
35
+ | [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... |
36
+ | [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
37
  | [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 |
38
+ | [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
39
  | [gsk-notion](../skills/gsk-notion/SKILL.md) | Notion page operations. Actions: search, read, create. |
39
40
  | [gsk-onedrive](../skills/gsk-onedrive/SKILL.md) | OneDrive file operations. Actions: list, search, read, upload, share. |
40
41
  | [gsk-outlook-calendar](../skills/gsk-outlook-calendar/SKILL.md) | Outlook Calendar operations. Actions: list, free_busy, create, respond, modify, delete. |
41
42
  | [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 |
43
+ | [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... |
44
+ | [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
45
  | [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 |
46
+ | [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
47
  | [gsk-sharepoint](../skills/gsk-sharepoint/SKILL.md) | SharePoint site and file operations. Actions: list, search, read_content, read_file, upload. |
47
48
  | [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. |
49
+ | [gsk-slack](../skills/gsk-slack/SKILL.md) | Slack messaging operations. Actions: send, search, read, lookup, react, upload, update, delete, permalink, connect_in... |
49
50
  | [gsk-social-instagram](../skills/gsk-social-instagram/SKILL.md) | Search and retrieve data from Instagram: posts, users, comments, and connections. |
50
51
  | [gsk-social-reddit](../skills/gsk-social-reddit/SKILL.md) | Search and retrieve data from Reddit: posts, comments, users, and subreddits. |
51
52
  | [gsk-social-twitter](../skills/gsk-social-twitter/SKILL.md) | Search and retrieve data from Twitter/X: posts, users, comments, retweets, and more. |
52
53
  | [gsk-stock-price](../skills/gsk-stock-price/SKILL.md) | Retrieve real-time stock price information for a specific company. |
53
54
  | [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 |
55
+ | [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... |
56
+ | [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
57
  | [gsk-understand-images](../skills/gsk-understand-images/SKILL.md) | Analyze and understand images. Supports multiple images and custom analysis instructions. |
57
58
  | [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 |
59
+ | [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
60
  | [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
61
  | [gsk-web-search](../skills/gsk-web-search/SKILL.md) | Search the web. Returns search results with titles, snippets, and URLs. |
61
- | [gsk-youtube](../skills/gsk-youtube/SKILL.md) | YouTube operations. Actions: search, transcript, comments. |
62
+ | [gsk-youtube](../skills/gsk-youtube/SKILL.md) | YouTube operations. Actions: search (find videos by keyword), transcript (read a video's spoken content by video id),... |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@genspark/cli",
3
- "version": "1.4.2",
3
+ "version": "1.5.1",
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.
@@ -19,7 +19,40 @@ metadata:
19
19
 
20
20
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
21
21
 
22
- Create and execute tasks using specialized AI agents. Supports super_agent, podcasts, docs, slides, deep_research, website, video_generation, audio_generation, meeting_notes, cross_check, and custom_super_agent (a user-created custom agent; requires agent_config_id). The returned data.task_url is owner-only until shared from that page. To re-fetch a created task's link or outcome, use task_status — re-running create_task creates and bills a new task.
22
+ Create and execute tasks using specialized AI agents. Supports super_agent, podcasts, docs, slides, design, deep_research, website, video_generation, audio_generation, meeting_notes, cross_check, and custom_super_agent (a user-created custom agent; requires agent_config_id). Design pre-creates a persistent project in `awaiting_user` state; because its Web canvas has one visible composer, `query` and `instructions` are combined into that prefilled prompt rather than using a hidden system prompt. Open its `task_url` to review and submit/iterate, then use `task_status`, `task_continue`, and `design_export` with the same `project_id`. The returned data.task_url is owner-only until shared from that page. To re-fetch a created task's link or outcome, use task_status — re-running create_task creates and bills a new task.
23
+
24
+ ### Persistent Design workflow
25
+
26
+ `design` is managed entirely through the GSK task lifecycle; it does not
27
+ require a local bridge:
28
+
29
+ ```bash
30
+ gsk task design --task_name "Pricing page" \
31
+ --query "Design a responsive pricing page" \
32
+ --instructions "Produce implementation-ready HTML/CSS/assets" \
33
+ --image ./current-desktop.png \
34
+ --file ./design-tokens.css
35
+ gsk task_status <project_id>
36
+ gsk task_continue <project_id> -m "Emphasize the enterprise tier" \
37
+ --last-seen-revision <revision> --image ./mobile-v2.png
38
+ gsk design_export <project_id> --revision latest --preview \
39
+ --viewport 1440x900 --viewport 390x844 -o design.zip
40
+ ```
41
+
42
+ For Design commands, repeat `--image` and `--file` in the order the references
43
+ should appear. The CLI uploads the complete local batch before creating or
44
+ continuing the project, detects each MIME type, and sends structured attachment
45
+ metadata; upload failure therefore does not start a partial Design operation.
46
+ `design_export --preview` returns private PNG wrappers for the exact same
47
+ resolved revision as the ZIP and manifest. If no viewport is supplied, desktop
48
+ and mobile defaults are rendered.
49
+
50
+ The full SB-Git `main` HEAD SHA is the immutable `revision`. `updated_at`
51
+ is the timestamp of that same commit. Before the first Web submission,
52
+ `status=awaiting_user`, `revision=null`, and `updated_at` is the project
53
+ creation timestamp. Read operations follow the same owner/share permissions as
54
+ the Web project; continuation requires write access. Missing and unauthorized
55
+ IDs intentionally return the same not-found response.
23
56
 
24
57
  ## Usage
25
58
 
@@ -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) |