@genspark/cli 1.6.0 → 1.7.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.
package/docs/skills.md CHANGED
@@ -8,8 +8,8 @@
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_... |
12
- | [gsk-analyze-media](../skills/gsk-analyze-media/SKILL.md) | Analyze various types of media content including images, audio, and video. |
11
+ | [gsk-aidrive](../skills/gsk-aidrive/SKILL.md) | AI-Drive file storage and management. Actions: ls, find, mkdir, rm, move, get_readable_url, download, download_video,... |
12
+ | [gsk-analyze-media](../skills/gsk-analyze-media/SKILL.md) | Analyze various types of media content including images, audio, and video. Returns per-file JSON with the analysis an... |
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) | Process audio: separate vocals/voice from music or extract any stem by text prompt (e.g. 'singing voice', 'piano', 'd... |
15
15
  | [gsk-audio-transcribe](../skills/gsk-audio-transcribe/SKILL.md) | Transcribe audio files to text with word-level timestamps. |
@@ -53,7 +53,7 @@
53
53
  | [gsk-social-twitter](../skills/gsk-social-twitter/SKILL.md) | Search and retrieve data from Twitter/X: posts, users, comments, retweets, and more. |
54
54
  | [gsk-stock-price](../skills/gsk-stock-price/SKILL.md) | Retrieve real-time stock price information for a specific company. |
55
55
  | [gsk-summarize-large-document](../skills/gsk-summarize-large-document/SKILL.md) | Analyze and answer questions about large documents (PDFs, web pages, Word docs, etc.). |
56
- | [gsk-task-artifacts](../skills/gsk-task-artifacts/SKILL.md) | List a task's produced artifacts (files, rendered exports, generated media) as downloadable URLs, plus the exportable... |
56
+ | [gsk-task-artifacts](../skills/gsk-task-artifacts/SKILL.md) | List a task's produced artifacts (files, rendered exports, generated media) as downloadable URLs with stable artifact... |
57
57
  | [gsk-task-continue](../skills/gsk-task-continue/SKILL.md) | Send a follow-up instruction to an existing task project — use this to edit, revise, extend, or converse with a task'... |
58
58
  | [gsk-task-info](../skills/gsk-task-info/SKILL.md) | Read a task's execution output: recent activity (messages including tool usage), current state, and extracted result ... |
59
59
  | [gsk-task-status](../skills/gsk-task-status/SKILL.md) | Look up an existing task: pass the run_id from an async submit (sb_task_run::…) for its durable lifecycle state, or t... |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@genspark/cli",
3
- "version": "1.6.0",
3
+ "version": "1.7.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",
@@ -2,9 +2,12 @@
2
2
  name: gsk-aidrive
3
3
  version: 1.0.0
4
4
  description: 'AI-Drive file storage and management. Actions: ls, find, mkdir, rm,
5
- move, get_readable_url, download_video, download_audio, download_file, upload. `ls`
6
- lists ONE directory (non-recursive) — to locate files by name anywhere in the drive,
7
- use `find` (one indexed query) instead of walking directories with repeated `ls`.'
5
+ move, get_readable_url, download, download_video, download_audio, download_file,
6
+ upload. `ls` lists ONE directory (non-recursive) — to locate files by name anywhere
7
+ in the drive, use `find` (one indexed query) instead of walking directories with
8
+ repeated `ls`. `download <ai-drive-path> [local-path]` copies a drive file OUT to
9
+ local disk (the path may be spelled `aidrive://...`); `download_file --file_url
10
+ <url>` goes the OPPOSITE direction, saving an external URL INTO the drive.'
8
11
  metadata:
9
12
  category: general
10
13
  requires:
@@ -17,7 +20,7 @@ metadata:
17
20
 
18
21
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
19
22
 
20
- AI-Drive file storage and management. Actions: ls, find, mkdir, rm, move, get_readable_url, download_video, download_audio, download_file, upload. `ls` lists ONE directory (non-recursive) — to locate files by name anywhere in the drive, use `find` (one indexed query) instead of walking directories with repeated `ls`.
23
+ AI-Drive file storage and management. Actions: ls, find, mkdir, rm, move, get_readable_url, download, download_video, download_audio, download_file, upload. `ls` lists ONE directory (non-recursive) — to locate files by name anywhere in the drive, use `find` (one indexed query) instead of walking directories with repeated `ls`. `download <ai-drive-path> [local-path]` copies a drive file OUT to local disk (the path may be spelled `aidrive://...`); `download_file --file_url <url>` goes the OPPOSITE direction, saving an external URL INTO the drive.
21
24
 
22
25
  ## Usage
23
26
 
@@ -31,12 +34,13 @@ gsk drive [options]
31
34
 
32
35
  | Flag | Required | Description |
33
36
  |------|----------|-------------|
34
- | `<action>` (positional) | Yes | Action to perform (string, one of: ls, find, mkdir, rm, move, get_readable_url, download_video, download_audio, download_file, upload) |
37
+ | `<action>` (positional) | Yes | Action to perform (string, one of: ls, find, mkdir, rm, move, get_readable_url, download, download_video, download_audio, download_file, upload) |
35
38
  | `--workspace` | No | AI Drive workspace. personal (default) is your own Drive, shared reaches folders other people shared with you, and public_brain is the system-owned Ask Org public knowledge workspace when you have editor access. (string, one of: personal, public_brain, shared, default: `personal`) |
36
39
  | `--share` | No | Which shared folder to work in, by name or id. Only for workspace=shared; omit it with ls to list everything shared with you. (string) |
37
40
  | `--to` | No | Who to share with, for the share/unshare actions: an email address, or 'org' / 'group:<uid>' for a whole organization or one of its groups. (string) |
38
41
  | `--permission` | No | What the recipient may do: view or edit (share action). The link audience can only ever view. (string, one of: view, edit, default: `view`) |
39
42
  | `--general_access` | No | Who else can open it, for the share action without a recipient: restricted, org, or link. (string, one of: restricted, org, link) |
43
+ | `--organization_id` | No | Which organization to share with, when you belong to more than one and use to=org or to=group:<uid>. (string) |
40
44
  | `--expires_at` | No | Optional ISO-8601 UTC instant after which the access stops, e.g. 2026-12-31T00:00:00+00:00. (string) |
41
45
  | `-p`, `--path` | No | Path to file or folder for actions: ls, mkdir, rm, move, get_readable_url. For compress: folder path to compress. For decompress: archive file path to decompress. For find: directory to search within (default '/' searches everywhere). (string) |
42
46
  | `-q`, `--query` | No | Filename search keyword for find action. Matches files and directories whose name contains the keyword. Case-insensitive. Supports partial matches. (string) |
@@ -49,7 +53,8 @@ gsk drive [options]
49
53
  | `--file_url` | No | URL of file to download, for download_file action (string) |
50
54
  | `--file_name` | No | User-friendly filename with appropriate extension (e.g. annual_report.pdf) for download_file action. If not provided, system will auto-generate filename (string) |
51
55
  | `--file_content` | No | Content to upload to AI Drive. Can be plain text or base64-encoded binary data. For text files (txt, md, json, csv, etc.), provide plain text content. For binary files, provide base64-encoded content with 'base64:' prefix. Size limit: 1MB without confirmation, 5MB absolute maximum. (string) |
52
- | `--upload_path` | No | Target path for upload action (must start with '/' and include filename). **Path Organization Best Practice**: Use /<workflow_name>/<YYYY-MM-DD_HHMMSS>/<filename> to organize outputs by workflow and execution time, preventing overwrites. Example: /Daily_Report_Workflow/2024-01-15_093000/analysis.md. Create parent directories with mkdir action first if they don't exist. (string) |
56
+ | `--upload_path` | No | Target path for upload action (must start with '/' and include filename). To upload a new version of an existing file, reuse the same path with overwrite=true instead of creating v2/_final name variants; give genuinely new artifacts (e.g. each run of a recurring workflow) their own path. Create parent directories with mkdir action first if they don't exist. (string) |
57
+ | `--overwrite` | No | Set to true to overwrite the existing file at upload_path (upload action only; default false fails if the path exists). (boolean) |
53
58
  | `--content_type` | No | MIME type of the content. If not provided, will be auto-detected from filename. Common types: text/plain, text/markdown, application/json, text/csv (string) |
54
59
  | `--confirmed` | No | Set to true to confirm upload when: (1) file size > 1MB, or (2) content contains potentially sensitive patterns. If confirmation is required but not provided, upload will fail with a warning. (boolean) |
55
60
 
@@ -2,6 +2,8 @@
2
2
  name: gsk-analyze-media
3
3
  version: 1.0.0
4
4
  description: Analyze various types of media content including images, audio, and video.
5
+ Returns per-file JSON with the analysis answer inline under `analysis` (full payload
6
+ at `analysis_result_url`).
5
7
  metadata:
6
8
  category: general
7
9
  requires:
@@ -14,7 +16,7 @@ metadata:
14
16
 
15
17
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
16
18
 
17
- Analyze various types of media content including images, audio, and video.
19
+ Analyze various types of media content including images, audio, and video. Returns per-file JSON with the analysis answer inline under `analysis` (full payload at `analysis_result_url`).
18
20
 
19
21
  ## Usage
20
22
 
@@ -36,6 +36,7 @@ gsk task create [options]
36
36
  | `--query` | Yes | Query for the task. The ending should clearly state what needs to be done, such as generating a doc/slides etc. The sub-agent sees ONLY what is passed via query/instructions — it cannot read your conversation. When you have already produced material for this task (research notes, analysis, drafts, exact figures), embed its FULL text verbatim in the query, NOT a summary or paraphrase: any detail omitted here is missing from the deliverable, and a query carrying such material is naturally long — do not shorten it. For a simple request with no pre-existing material, a concise query is fine. If the user uploaded files or you have data the sub-agent needs, embed the file URLs (file_wrapper_url, http(s)://, or aidrive://) directly in the query — sub-agents do not inherit parent context, so unreferenced files are invisible to them. (string) |
37
37
  | `--instructions` | Yes | Detailed instructions for the task. This will be set as system prompt to the specialized agent. State the working constraints here: audience, structure, style, output format, and what must be preserved exactly (figures, citations, links). Do not spend this field on a bare persona line like 'You are a professional slides assistant' — that gives the sub-agent nothing to work with. Include any file URLs (file_wrapper_url, http(s)://, or aidrive://) the sub-agent must reference; the sub-agent only sees what is passed via query/instructions. Design is the exception to the system-prompt transport: its Web canvas has one visible prompt field, so create_task appends instructions under an 'Additional requirements' heading in that field for the user to review before submitting. (string) |
38
38
  | `--agent_config_id` | No | Agent config ID for loading agent configuration. Required when task_type is 'custom_super_agent' - the ID of the user's custom agent. Optional when task_type is 'dynamic' - if provided, loads config from this ID instead of generating a new one dynamically. (string) |
39
+ | `--artifact_refs` | No | Optional artifact ids ('<project_id>#<selector>', from `gsk task artifacts` or `gsk task artifact <id>`) whose current files are imported into the task — pass an earlier task's output into this one by reference. Resolved at create time: any unknown/inaccessible ref fails the call immediately. Entries marked `requires_export: true` in the artifacts listing (HTML/Markdown docs, slides decks) cannot be passed directly — run `gsk task export` first and pass the returned download_url via file_urls. (array) |
39
40
  | `--attachments` | No | For `design` tasks: ordered structured references shown in the native Design attachment area. URLs may be private file-wrapper, https, or aidrive URLs. Each item preserves its original name, MIME type, and semantic role. (array) |
40
41
  | `--wait` | No | Default false: the task is SUBMITTED to the durable runtime and this call returns immediately with its run_id — poll `gsk task status <run_id>` until it finishes, stop it with `gsk task stop <run_id>`. Pass true to block until the task completes and get the full result inline (legacy behavior; generation can take 5-30+ minutes, so set your shell timeout to 1800000 ms). (boolean) |
41
42
 
@@ -3,7 +3,7 @@ name: gsk-genteam
3
3
  version: 1.0.0
4
4
  description: 'GenTeam (Genspark team workspace) operations as the calling user. Actions:
5
5
  join, channels, agents, read, search, send, create_channel, update_channel, invite_link,
6
- members.'
6
+ members, tasks.'
7
7
  metadata:
8
8
  category: general
9
9
  requires:
@@ -16,7 +16,7 @@ metadata:
16
16
 
17
17
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
18
18
 
19
- GenTeam (Genspark team workspace) operations as the calling user. Actions: join, channels, agents, read, search, send, create_channel, update_channel, invite_link, members.
19
+ GenTeam (Genspark team workspace) operations as the calling user. Actions: join, channels, agents, read, search, send, create_channel, update_channel, invite_link, members, tasks.
20
20
 
21
21
  ## Usage
22
22
 
@@ -28,19 +28,19 @@ gsk genteam [options]
28
28
 
29
29
  | Flag | Required | Description |
30
30
  |------|----------|-------------|
31
- | `<action>` (positional) | Yes | Action to perform. 'join': Join a GenTeam workspace or channel from an invite link; 'channels': List the caller's workspaces, or one workspace's channels by server_slug; 'agents': List a workspace's agents visible to the caller by server_slug; each id is a mention target for send; 'read': Read recent messages from a channel, DM, or thread; 'search': Search a workspace (messages, tasks, members, channels, agents) by server_slug, or find-in-channel by channel_id; 'send': Send a message (text, attachment, or thread reply) to a channel or DM as the caller; supports native @mentions (humans and agents) and native quote replies; 'create_channel': Create a channel in a workspace; the caller becomes its manager and auto-joins; 'update_channel': Edit a channel's display name, description, or member permission switches (manager only); 'invite_link': Create, list, or revoke the invite links that genteam_join consumes (workspace or channel scoped); 'members': List, add, or remove channel members (humans and agents) by actor id (string, one of: join, channels, agents, read, search, send, create_channel, update_channel, invite_link, members) |
31
+ | `<action>` (positional) | Yes | Action to perform. 'join': Join a GenTeam workspace or channel from an invite link; 'channels': List the caller's workspaces, or one workspace's channels by server_slug; 'agents': List a workspace's agents visible to the caller by server_slug; each id is a mention target for send; 'read': Read recent messages from a channel, DM, or thread; 'search': Search a workspace (messages, tasks, members, channels, agents) by server_slug, or find-in-channel by channel_id; 'send': Send a message (text, attachment, or thread reply) to a channel or DM as the caller; supports native @mentions (humans and agents) and native quote replies; 'create_channel': Create a channel in a workspace; the caller becomes its manager and auto-joins; 'update_channel': Edit a channel's display name, description, or member permission switches (manager only); 'invite_link': Create, list, or revoke the invite links that genteam_join consumes (workspace or channel scoped); 'members': List, add, or remove channel members (humans and agents) by actor id; 'tasks': Task board: list a channel's or workspace's tasks, get one task with its event history, claim/unclaim it, or change its status (string, one of: join, channels, agents, read, search, send, create_channel, update_channel, invite_link, members, tasks) |
32
32
  | `--invite_url` | No | [join] Full invite link URL, including the token query parameter. (string) |
33
33
  | `--invite_id` | No | [join] Invite link id (alternative to invite_url; requires token). \| [invite_link] Invite link id to revoke (from op=list or the create result). (string) |
34
34
  | `--token` | No | [join] Invite link token (alternative to invite_url; requires invite_id). (string) |
35
- | `--server_slug` | No | [channels] Workspace slug (from the workspace list or a GenTeam URL path segment). \| [agents] Workspace slug (from genteam_list_channels or a GenTeam URL path segment). \| [search] Workspace slug (from genteam_list_channels or a GenTeam URL path segment). Required unless channel_id is given. \| [create_channel] Workspace slug (from genteam_list_channels or a GenTeam URL path segment). \| [invite_link] Workspace slug; required unless channel_id is given. (string) |
35
+ | `--server_slug` | No | [channels] Workspace slug (from the workspace list or a GenTeam URL path segment). \| [agents] Workspace slug (from genteam_list_channels or a GenTeam URL path segment). \| [search] Workspace slug (from genteam_list_channels or a GenTeam URL path segment). Required unless channel_id is given. \| [create_channel] Workspace slug (from genteam_list_channels or a GenTeam URL path segment). \| [invite_link] Workspace slug; required unless channel_id is given. \| [tasks] list: workspace slug (from genteam_list_channels) for the caller's cross-channel board. (string) |
36
36
  | `--mine` | No | [agents] When true, return only agents the caller created. Default false. (boolean) |
37
- | `--channel_id` | No | [read] Channel id (from genteam_list_channels). \| [search] Find-in-channel target (from genteam_list_channels). When given, the search is scoped to this one channel. \| [send] Target channel id (from genteam_list_channels). \| [update_channel] Channel id (from genteam_list_channels). \| [invite_link] Channel id — scopes create/list to that channel's join links. \| [members] Channel id (from genteam_list_channels). (string) |
38
- | `--limit` | No | [read] Messages to return (1..200). Default 20. \| [search] Workspace mode only: max hits per group (default 8). Channel mode pages are a fixed 20 per request. (integer) |
37
+ | `--channel_id` | No | [read] Channel id (from genteam_list_channels). \| [search] Find-in-channel target (from genteam_list_channels). When given, the search is scoped to this one channel. \| [send] Target channel id (from genteam_list_channels). \| [update_channel] Channel id (from genteam_list_channels). \| [invite_link] Channel id — scopes create/list to that channel's join links. \| [members] Channel id (from genteam_list_channels). \| [tasks] list: channel board target (from genteam_list_channels). Mutually exclusive with server_slug. (string) |
38
+ | `--limit` | No | [read] Messages to return (1..200). Default 20. \| [search] Workspace mode only: max hits per group (default 8). Channel mode pages are a fixed 20 per request. \| [tasks] list (channel mode): page size, 1..100 (default 20). (integer) |
39
39
  | `--before_message_id` | No | [read] Message id cursor: return messages strictly older than this id. (string) |
40
40
  | `--after_message_id` | No | [read] Message id cursor: return messages strictly newer than this id. Mutually exclusive with before_message_id. (string) |
41
41
  | `--query` | No | [search] Search keywords. (string) |
42
42
  | `--scope` | No | [search] Workspace mode: everything (default), messages, tasks, members, channels, or agents. Channel mode: messages (default), contacts, or files. (string) |
43
- | `--cursor` | No | [search] Channel mode only: opaque paging cursor echoed by the previous page. (string) |
43
+ | `--cursor` | No | [search] Channel mode only: opaque paging cursor echoed by the previous page. \| [tasks] list (channel mode): opaque paging cursor echoed by the previous page as next_cursor. (string) |
44
44
  | `--content` | No | [send] Plain-text message body; with file_path it is the attachment caption (optional in that case). (string) |
45
45
  | `--file_path` | No | [send] File to attach: a Genspark file-wrapper URL (https://…/api/files/s/<code>, from `gsk upload`) or an AI Drive path (aidrive://…). (string) |
46
46
  | `--file_name` | No | [send] Display file name for the attachment; defaults to the name derived from file_path. (string) |
@@ -52,11 +52,17 @@ gsk genteam [options]
52
52
  | `--description` | No | [create_channel] Optional channel description (max 500 chars). \| [update_channel] New channel description (max 500 chars); empty string clears it. (string) |
53
53
  | `--member_invite_enabled` | No | [update_channel] Whether ordinary members may create invite links for this channel. (boolean) |
54
54
  | `--member_agent_add_enabled` | No | [update_channel] Whether ordinary members may add their own agents to this channel. (boolean) |
55
- | `--op` | No | [invite_link] Operation to perform. \| [members] Operation to perform. (string, one of: create, list, revoke) |
55
+ | `--op` | No | [invite_link] Operation to perform. \| [members] Operation to perform. \| [tasks] Operation to perform. (string, one of: create, list, revoke) |
56
56
  | `--max_uses` | No | [invite_link] create: how many joins the link allows (default per workspace size). (integer) |
57
57
  | `--expires_days` | No | [invite_link] create: link validity in days (default per workspace size). (integer) |
58
58
  | `--actor_type` | No | [members] add/remove: whether the target is a human or an agent. (string, one of: human, agent) |
59
59
  | `--actor_id` | No | [members] add/remove: the member id — a cogen UUID for humans, an agent_… id for agents. (string) |
60
+ | `--task_id` | No | [tasks] get/claim/unclaim/status: the task id (task_…, from op=list). (string) |
61
+ | `--status` | No | [tasks] op=list: status filter — active (default, = not done), all, or a comma list of todo, in_progress, in_review, done. op=status: the new status (one of those four). (string) |
62
+ | `--reason` | No | [tasks] op=status: optional note recorded on the status-change event. (string) |
63
+ | `--involvement` | No | [tasks] list (channel mode): me narrows to tasks the caller has a tie to (assignee, requester, creator, or thread participant). Default all. (string, one of: all, me) |
64
+ | `--assignee` | No | [tasks] list: assignee filter — current (the caller), unassigned, agent:<id>, or human:<cogen_id>. (string) |
65
+ | `--requester` | No | [tasks] list: requester/owner filter — same forms as assignee. (string) |
60
66
 
61
67
  ## Local File Support
62
68
 
@@ -57,6 +57,7 @@ gsk gmail [options]
57
57
  | `--client_send_id` | No | [send] Optional stable idempotency key. When provided, stored in X-Genspark-Client-Send-Id and mirrored into a provider-safe Message-ID digest. Scheduled agent retries use it for internal deduplication. Usually auto-resolved from the active scheduled-action context — the LLM only needs to pass this when it wants to derive its own key (e.g. plan fan-out). (string) |
58
58
  | `--attachments` | No | [send] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). \| [draft] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). \| [reply] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). \| [forward] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). (array) |
59
59
  | `--body_type` | No | [draft] Body format: 'html' (default) or 'text'. (string) |
60
+ | `--prompt` | No | [draft] Optional instruction describing the email to write, in the sender's own voice using their Email Brain (persona plus their handling and writing rules) — e.g. 'ask Ana to move the review to Friday, apologize for the short notice'. Use INSTEAD of 'body' to have the body written for you, or TOGETHER WITH 'body' to revise that text per the instruction (everything the instruction does not ask to change is preserved). Recipients and attachments are never inferred from the instruction — pass them explicitly. Omit to commit 'body' exactly as given. (string) |
60
61
  | `--message_id` | No | [reply] The Gmail message ID to reply to \| [forward] The Gmail message ID to forward \| [delete] The Gmail message ID to delete \| [archive] The Gmail message ID to archive \| [move] The Gmail message ID to move \| [mark_as_read] (Deprecated, use message_ids) A single Gmail message ID to mark \| [add_label] The Gmail message ID to add label to \| [remove_label] The Gmail message ID to remove label from \| [get_attachment] The Gmail message ID containing the attachment (string) |
61
62
  | `--reply_all` | No | [reply] Whether to reply to all recipients (TO and CC). Default: true (reply to all recipients including CC) (boolean) |
62
63
  | `--include_original` | No | [reply] Whether to append the original message as a Gmail-style quoted block under the reply body so the recipient sees the thread context standard mail clients attach automatically. Default: true. Set to false only when the caller already embedded their own quoted block in `body` (the helper detects the canonical `gmail_quote_container` markup and short-circuits anyway, but this flag lets the caller opt out unconditionally — useful for terse one-line replies where the quote is noise). \| [forward] Whether to append the original message as a Gmail-style '---------- Forwarded message ----------' quoted block under the forwarder's note so the recipient sees the original verbatim — same shape as native Gmail forwards. Default: true. Set to false only when the caller already embedded their own forwarded block in `body` (e.g. the `.genmail` editor send path). (boolean, default: `True`) |
@@ -30,15 +30,15 @@ gsk gdrive [options]
30
30
 
31
31
  | Flag | Required | Description |
32
32
  |------|----------|-------------|
33
- | `<action>` (positional) | Yes | Action to perform. 'list': List files directly inside a Google Drive folder; 'search': Search files by name, type, or owner; 'read': Read and extract content from a file; 'upload': Upload a file to Google Drive; 'share': Grant access to a file (specific emails or anyone-with-link; app-created/opened files only under drive.file) (string, one of: list, search, read, upload, share) |
34
- | `--folder_id` | No | [list] Google Drive folder ID or folder URL. \| [search] Search within a specific folder for 'search' action. Accepts a folder ID or Google Drive folder URL. \| [upload] Google Drive folder ID to upload to. Optional, uploads to root if not specified. (string) |
33
+ | `<action>` (positional) | Yes | Action to perform. 'list': List files directly inside a Google Drive folder; 'search': Search files by name, type, or owner; 'read': Read and extract content from a file; 'upload': Upload a new file to Google Drive, or overwrite an existing one in place by passing its file_id (the ID, link, and shares are preserved); 'share': Grant access to a file (specific emails or anyone-with-link; app-created/opened files only under drive.file) (string, one of: list, search, read, upload, share) |
34
+ | `--folder_id` | No | [list] Google Drive folder ID or folder URL. \| [search] Search within a specific folder for 'search' action. Accepts a folder ID or Google Drive folder URL. \| [upload] Google Drive folder ID to upload to. Optional, uploads to root if not specified. Ignored when 'file_id' is set. (string) |
35
35
  | `--folder_url` | No | [list] Google Drive folder URL. \| [search] Google Drive folder URL to list/search within. (string) |
36
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) |
37
37
  | `--trashed` | No | [list] Include trashed files. \| [search] Include trashed files in search results for 'search' action (boolean) |
38
38
  | `--all_pages` | No | [list] List every page in the selected folder. Use for complete programmatic inventory; default false. (boolean) |
39
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) |
40
40
  | `--owner` | No | [search] Filter by file owner (email address) for 'search' action (string) |
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) |
41
+ | `--file_id` | No | [read] The ID of the file to read from Google Drive. \| [upload] Existing Google Drive file ID to OVERWRITE in place instead of creating a new file (from google_drive search/list/upload results). The content is replaced while the file ID, link, and existing shares are preserved — use this when the user wants to update a document they already have, not get a new one. \| [share] Google Drive file ID to share (from google_drive search/list/upload results). (string) |
42
42
  | `--question` | No | [read] The question to answer about the file content. (string) |
43
43
  | `--raw_content` | No | [read] Return the complete converted document text (markdown) without question-answering. For programmatic consumers that need full fidelity; ignores 'question'. (boolean) |
44
44
  | `--content` | No | [upload] Text content to create as a file. Use this for creating text-based files (e.g., .txt, .md, .csv, .json, .html). Provide exactly one of 'content', 'file_path', or 'file_url'. (string) |
@@ -70,6 +70,7 @@ gsk outlook [options]
70
70
  | `--attachments` | No | [send] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). \| [draft] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). \| [reply] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). \| [reply_draft] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). \| [forward] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). \| [group_reply] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). (array) |
71
71
  | `--body_type` | No | [draft] Body format: 'html' (default) or 'text'. (string) |
72
72
  | `--from_address` | No | [draft] Optional 'From:' identity to send AS — Gmail verified alias, Outlook proxyAddress / mail-enabled group, or a granted SendAs / on-behalf address. Must be an address the from-account is authorized to send as (see 'send_as' on /api/ai-inbox/mailbox/accounts). For Gmail this becomes the draft's MIME 'From:' header; for Outlook the saved draft stays as the from-account and the alias is applied by the eventual send call. (string) |
73
+ | `--prompt` | No | [draft] Optional instruction describing the email to write, in the sender's own voice using their Email Brain (persona plus their handling and writing rules) — e.g. 'ask Ana to move the review to Friday, apologize for the short notice'. Use INSTEAD of 'body' to have the body written for you, or TOGETHER WITH 'body' to revise that text per the instruction (everything the instruction does not ask to change is preserved). Recipients and attachments are never inferred from the instruction — pass them explicitly. Omit to commit 'body' exactly as given. (string) |
73
74
  | `--message_id` | No | [reply] The Outlook message ID to reply to. \| [forward] The Outlook message ID to forward. \| [delete] The Outlook message ID to delete \| [archive] The Outlook message ID to archive \| [move] The Outlook message ID to move \| [mark_as_read] (Deprecated, use message_ids) A single Outlook message ID to mark \| [add_category] The Outlook message ID to add category to \| [remove_category] The Outlook message ID to remove category from \| [get_attachment] The Outlook message ID containing the attachment (string) |
74
75
  | `--reply_all` | No | [reply] Optional: If true (default), reply to all original recipients (TO and CC). If false, reply only to the original sender. (boolean, default: `True`) |
75
76
  | `--include_original` | No | [reply] Optional: Whether to include the original email content as a quote in the reply. Defaults to true. \| [reply_draft] Optional: Whether to include the original email content as a quote in the draft. Defaults to true. \| [forward] Whether to append the original message as a Gmail-style '---------- Forwarded message ----------' quoted block under the forwarder's note so the recipient sees the original verbatim. Default: true. Set to false only when the caller already embedded their own forwarded block in `body` (e.g. the `.genmail` editor send path). (boolean, default: `True`) |
@@ -1,38 +1,21 @@
1
1
  ---
2
2
  name: gsk-phone-call
3
3
  version: 1.0.0
4
- description: 'Make a real AI phone call on the user''s behalf. Validates prerequisites
5
- (membership, phone setup, credits), resolves the contact (Google Maps place data
6
- for businesses; number validation for personal contacts), then dials, converses
7
- by voice, and returns the outcome: call status, true audio duration (audio_duration_seconds),
8
- dial attempts (dial_attempts), summary, and transcript. A persistent call record
9
- (summary, transcript, recording) is saved with the call''s project.
10
-
11
- MANDATORY after every call, without being asked: (1) present the outcome to the
12
- user — who was called, final status, real call duration, and the key result; (2)
13
- disclose EVERY dial attempt made, including automatic retries and any accidental
14
- extra dials; (3) tell the user a persistent call record exists and how to see it
15
- (the call_log / call_detail tools, or the call''s project page). Show the transcript
16
- inline when short; offer it otherwise.
17
-
18
- Phone numbers must have verifiable lineage (user-provided, prior tool results, or
19
- the built-in Maps lookup) — never fabricate a number. contact_info accepts a phone
20
- number, a calllog: contact_ref, or a Google Maps place_id from maps_search — the
21
- type is detected automatically from its shape. With --dry-run, only validates and
22
- resolves the contact (plus the from_number choice when one is given); no call is
23
- placed.
24
-
25
- First-time users must finish a one-time web setup before any real call: if the result
26
- carries code=setup_incomplete, show the user its setup_url (browser page ending
27
- in a short test call to their own phone), wait for them to confirm, then retry.
28
- Use phone_call_setup_status to pre-check instead of dialing blind when the user
29
- may not have set up yet.'
4
+ description: >-
5
+ Make a real AI phone call on the user's behalf. Validates prerequisites
6
+ (membership, phone setup, credits), resolves the contact, then dials and returns
7
+ status, real audio duration, dial attempts, summary, and transcript. After every
8
+ call, present the outcome, disclose every dial attempt, point to call_log or
9
+ call_detail, and show short transcripts inline. Never fabricate a phone number or
10
+ Maps place_id; contact_info must have verified lineage. A dry run validates only
11
+ and never places a call. On code=setup_incomplete, show setup_url, wait for setup,
12
+ and use phone_call_setup_status before retrying.
30
13
  metadata:
31
14
  category: phone-call
32
15
  requires:
33
16
  bins:
34
17
  - gsk
35
- cliHelp: gsk phone-call dial --help
18
+ cliHelp: gsk telephony call dial --help
36
19
  ---
37
20
 
38
21
  # gsk-phone-call
@@ -47,7 +30,7 @@ First-time users must finish a one-time web setup before any real call: if the r
47
30
  ## Usage
48
31
 
49
32
  ```bash
50
- gsk phone-call dial [options]
33
+ gsk telephony call dial [options]
51
34
  ```
52
35
 
53
36
  ## Flags
@@ -2,8 +2,9 @@
2
2
  name: gsk-task-artifacts
3
3
  version: 1.0.0
4
4
  description: List a task's produced artifacts (files, rendered exports, generated
5
- media) as downloadable URLs, plus the exportable formats for docs/slides/sheets
6
- deliverables.
5
+ media) as downloadable URLs with stable artifact ids resolvable via `task artifact
6
+ <artifact_id>`, consumable via `task create --artifact_refs` — plus the exportable
7
+ formats for docs/slides/sheets deliverables.
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
- List a task's produced artifacts (files, rendered exports, generated media) as downloadable URLs, plus the exportable formats for docs/slides/sheets deliverables.
20
+ List a task's produced artifacts (files, rendered exports, generated media) as downloadable URLs with stable artifact ids — resolvable via `task artifact <artifact_id>`, consumable via `task create --artifact_refs` — plus the exportable formats for docs/slides/sheets deliverables.
20
21
 
21
22
  ## Usage
22
23