@genspark/cli 1.2.0 → 1.4.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/README.md +12 -9
- package/dist/client.d.ts +14 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +47 -32
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +16 -0
- package/dist/config.js.map +1 -1
- package/dist/index.js +162 -30
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/skills.md +7 -7
- package/package.json +1 -1
- package/skills/gsk-gmail/SKILL.md +14 -4
- package/skills/gsk-google-calendar/SKILL.md +8 -6
- package/skills/gsk-google-chat/SKILL.md +14 -8
- package/skills/gsk-google-contacts/SKILL.md +5 -17
- package/skills/gsk-google-docs/SKILL.md +8 -4
- package/skills/gsk-google-drive/SKILL.md +9 -4
- package/skills/gsk-onedrive/SKILL.md +13 -6
- package/skills/gsk-outlook-calendar/SKILL.md +9 -6
- package/skills/gsk-phone-call/SKILL.md +9 -10
package/README.md
CHANGED
|
@@ -682,30 +682,33 @@ Outlook Contacts operations: search.
|
|
|
682
682
|
gsk outlook_contacts search --query "John"
|
|
683
683
|
```
|
|
684
684
|
|
|
685
|
-
###
|
|
685
|
+
### Telephony
|
|
686
686
|
|
|
687
|
-
###
|
|
687
|
+
### telephony call
|
|
688
688
|
|
|
689
|
-
Make an AI phone call on your behalf. The AI validates prerequisites, resolves contact info, and initiates the call.
|
|
689
|
+
Make an AI phone call on your behalf. The AI validates prerequisites, resolves contact info, and initiates the call. Dialing is the default subcommand; companion subcommands (`status`, `hangup`, `log`, `detail`) inspect and control your calls, and `gsk telephony sms send` sends SMS.
|
|
690
|
+
|
|
691
|
+
The pre-migration forms (`gsk phone-call …`, `gsk sms`) still work as hidden deprecated aliases.
|
|
690
692
|
|
|
691
693
|
```bash
|
|
692
694
|
# Call a business by phone number
|
|
693
|
-
gsk
|
|
695
|
+
gsk telephony call "Pizza Hut" -c "+1-555-123-4567" -p "Check if they deliver to my area"
|
|
694
696
|
|
|
695
|
-
# Call a business by Google Maps place_id
|
|
696
|
-
|
|
697
|
+
# Call a business by Google Maps place_id (the contact_info type is
|
|
698
|
+
# detected automatically from its shape — there is no flag to set)
|
|
699
|
+
gsk telephony call "Joe's Pizza" -c "ChIJxxxxxxxx" -p "Reserve a table for 4"
|
|
697
700
|
|
|
698
701
|
# Dry run: validate and resolve contact info without initiating the call
|
|
699
|
-
gsk
|
|
702
|
+
gsk telephony call "Pizza Hut" -c "+1-555-123-4567" -p "Check hours" --dry-run
|
|
700
703
|
```
|
|
701
704
|
|
|
702
705
|
| Option | Default | Description |
|
|
703
706
|
|--------|---------|-------------|
|
|
704
707
|
| `<recipient>` | — | Name of the person or business to call (**required**, positional) |
|
|
705
|
-
| `-c, --contact_info <value>` | — | Phone number or Google Maps place_id (**required**) |
|
|
706
|
-
| `--is_place_id` | `false` | Treat contact_info as a Google Maps place_id |
|
|
708
|
+
| `-c, --contact_info <value>` | — | Phone number, `calllog:` contact_ref, or Google Maps place_id — type detected automatically (**required**) |
|
|
707
709
|
| `-p, --purpose <value>` | — | Purpose of the call (**required**) |
|
|
708
710
|
| `--dry-run` | — | Only validate and resolve contact info, do not initiate the call |
|
|
711
|
+
| `--async` | — | Return right after dialing starts; poll with `gsk telephony call status`, stop with `gsk telephony call hangup` |
|
|
709
712
|
|
|
710
713
|
### Social Media
|
|
711
714
|
|
package/dist/client.d.ts
CHANGED
|
@@ -13,9 +13,23 @@ export declare class ApiClient {
|
|
|
13
13
|
private timeout;
|
|
14
14
|
private debugMode;
|
|
15
15
|
private projectId?;
|
|
16
|
+
private invokedAs?;
|
|
16
17
|
private options;
|
|
17
18
|
constructor(options: GlobalOptions);
|
|
18
19
|
getOptions(): GlobalOptions;
|
|
20
|
+
/**
|
|
21
|
+
* Record which CLI command form triggered the next request(s) — sent as
|
|
22
|
+
* X-GSK-Invoked-As so the server can tell canonical from deprecated-legacy
|
|
23
|
+
* invocations (the only signal deprecation-removal decisions can use;
|
|
24
|
+
* tool names alone are identical across both forms).
|
|
25
|
+
*/
|
|
26
|
+
setInvokedAs(invokedAs: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* Common headers for every authenticated request path (buffered AND
|
|
29
|
+
* streaming — a header added in only one of them silently drops from
|
|
30
|
+
* tool executions, which all go through the streaming path).
|
|
31
|
+
*/
|
|
32
|
+
private baseHeaders;
|
|
19
33
|
private request;
|
|
20
34
|
/**
|
|
21
35
|
* Simple JSON request (non-streaming) for endpoints that return plain JSON.
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* API Client for Genspark Tool CLI
|
|
3
3
|
*/
|
|
4
|
+
import { createRequire } from 'module';
|
|
4
5
|
import { debug, info, error as logError } from './logger.js';
|
|
6
|
+
import { GSK_CLI_CAPS } from './config.js';
|
|
5
7
|
/**
|
|
6
8
|
* Make an unauthenticated request to the backend.
|
|
7
9
|
* Used for device-flow auth endpoints that don't require an API key.
|
|
@@ -23,12 +25,15 @@ export async function unauthenticatedRequest(baseUrl, endpoint, method = 'GET',
|
|
|
23
25
|
}
|
|
24
26
|
return (await response.json());
|
|
25
27
|
}
|
|
28
|
+
const _require = createRequire(import.meta.url);
|
|
29
|
+
const { version: CLI_VERSION } = _require('../package.json');
|
|
26
30
|
export class ApiClient {
|
|
27
31
|
baseUrl;
|
|
28
32
|
apiKey;
|
|
29
33
|
timeout;
|
|
30
34
|
debugMode;
|
|
31
35
|
projectId;
|
|
36
|
+
invokedAs;
|
|
32
37
|
options;
|
|
33
38
|
constructor(options) {
|
|
34
39
|
this.options = options;
|
|
@@ -41,27 +46,53 @@ export class ApiClient {
|
|
|
41
46
|
getOptions() {
|
|
42
47
|
return this.options;
|
|
43
48
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
/**
|
|
50
|
+
* Record which CLI command form triggered the next request(s) — sent as
|
|
51
|
+
* X-GSK-Invoked-As so the server can tell canonical from deprecated-legacy
|
|
52
|
+
* invocations (the only signal deprecation-removal decisions can use;
|
|
53
|
+
* tool names alone are identical across both forms).
|
|
54
|
+
*/
|
|
55
|
+
setInvokedAs(invokedAs) {
|
|
56
|
+
this.invokedAs = invokedAs;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Common headers for every authenticated request path (buffered AND
|
|
60
|
+
* streaming — a header added in only one of them silently drops from
|
|
61
|
+
* tool executions, which all go through the streaming path).
|
|
62
|
+
*/
|
|
63
|
+
baseHeaders() {
|
|
51
64
|
const headers = {
|
|
52
65
|
'Content-Type': 'application/json',
|
|
66
|
+
// Capability negotiation: servers only send grouped phone-call CLI
|
|
67
|
+
// metadata to clients that can attach dynamic subcommands to an
|
|
68
|
+
// existing static command. Older CLIs crash on it (Commander:
|
|
69
|
+
// cannot add command 'phone-call' — duplicate of the static one),
|
|
70
|
+
// so the server serves them the flat legacy view instead.
|
|
71
|
+
'X-GSK-CLI-Caps': GSK_CLI_CAPS,
|
|
72
|
+
// Version + invocation-form telemetry: lets the server attribute
|
|
73
|
+
// traffic to CLI releases and count deprecated-legacy command usage
|
|
74
|
+
// (the data behind deprecation-removal decisions).
|
|
75
|
+
'X-GSK-CLI-Version': CLI_VERSION,
|
|
53
76
|
};
|
|
54
|
-
if (this.
|
|
77
|
+
if (this.invokedAs)
|
|
78
|
+
headers['X-GSK-Invoked-As'] = this.invokedAs;
|
|
79
|
+
if (this.apiKey)
|
|
55
80
|
headers['X-Api-Key'] = this.apiKey;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if (this.projectId) {
|
|
81
|
+
// Project ID header enables sandbox lookup when sandbox_id is absent
|
|
82
|
+
if (this.projectId)
|
|
59
83
|
headers['X-Project-ID'] = this.projectId;
|
|
60
|
-
|
|
61
|
-
// Add debug header to request more details from server
|
|
62
|
-
if (this.debugMode) {
|
|
84
|
+
if (this.debugMode)
|
|
63
85
|
headers['X-Debug'] = 'true';
|
|
86
|
+
return headers;
|
|
87
|
+
}
|
|
88
|
+
async request(endpoint, method = 'GET', body) {
|
|
89
|
+
const url = `${this.baseUrl}/api/tool_cli${endpoint}`;
|
|
90
|
+
debug(`Request: ${method} ${url}`);
|
|
91
|
+
debug(`Project ID for header: ${this.projectId || '(not set)'}`);
|
|
92
|
+
if (body) {
|
|
93
|
+
debug(`Body: ${JSON.stringify(body)}`);
|
|
64
94
|
}
|
|
95
|
+
const headers = this.baseHeaders();
|
|
65
96
|
const controller = new AbortController();
|
|
66
97
|
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
67
98
|
try {
|
|
@@ -185,15 +216,7 @@ export class ApiClient {
|
|
|
185
216
|
if (body) {
|
|
186
217
|
debug(`Body: ${JSON.stringify(body)}`);
|
|
187
218
|
}
|
|
188
|
-
const headers =
|
|
189
|
-
'Content-Type': 'application/json',
|
|
190
|
-
};
|
|
191
|
-
if (this.apiKey) {
|
|
192
|
-
headers['X-Api-Key'] = this.apiKey;
|
|
193
|
-
}
|
|
194
|
-
if (this.projectId) {
|
|
195
|
-
headers['X-Project-ID'] = this.projectId;
|
|
196
|
-
}
|
|
219
|
+
const headers = this.baseHeaders();
|
|
197
220
|
const controller = new AbortController();
|
|
198
221
|
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
199
222
|
try {
|
|
@@ -361,15 +384,7 @@ export class ApiClient {
|
|
|
361
384
|
async requestStreaming(endpoint, body, onMessage, externalSignal) {
|
|
362
385
|
const url = `${this.baseUrl}/api/tool_cli${endpoint}`;
|
|
363
386
|
debug(`Streaming request: POST ${url}`);
|
|
364
|
-
const headers =
|
|
365
|
-
'Content-Type': 'application/json',
|
|
366
|
-
};
|
|
367
|
-
if (this.apiKey)
|
|
368
|
-
headers['X-Api-Key'] = this.apiKey;
|
|
369
|
-
if (this.projectId)
|
|
370
|
-
headers['X-Project-ID'] = this.projectId;
|
|
371
|
-
if (this.debugMode)
|
|
372
|
-
headers['X-Debug'] = 'true';
|
|
387
|
+
const headers = this.baseHeaders();
|
|
373
388
|
// Use a long timeout (10 minutes), but also respect external signal for cancellation
|
|
374
389
|
const controller = new AbortController();
|
|
375
390
|
// 1 hour — matches backend internal forwarding timeout
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ export interface ConfigFile {
|
|
|
23
23
|
*/
|
|
24
24
|
vd_project_id?: string;
|
|
25
25
|
}
|
|
26
|
+
export declare const GSK_CLI_CAPS = "cli-groups-v2,cli-paths-v3";
|
|
26
27
|
/**
|
|
27
28
|
* Set (or clear) the custom config path. Call this before any other
|
|
28
29
|
* function in this module so that subsequent reads/writes target the
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AASD,eAAO,MAAM,YAAY,+BAA+B,CAAA;AAuBxD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAEvE;AAYD;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAKtC;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,UAAU,CAiC3C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CASvD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,IAAI,CAuCnE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAgBzE"}
|
package/dist/config.js
CHANGED
|
@@ -9,6 +9,14 @@
|
|
|
9
9
|
import * as fs from 'fs';
|
|
10
10
|
import * as path from 'path';
|
|
11
11
|
import * as os from 'os';
|
|
12
|
+
// Capability string sent on every request (X-GSK-CLI-Caps) and stamped into
|
|
13
|
+
// the tools cache. The server tailors /tools CLI metadata to it (grouped
|
|
14
|
+
// phone-call view vs the flat legacy view), so a cache written by a CLI with
|
|
15
|
+
// different caps holds the WRONG view for this binary — e.g. an old CLI's
|
|
16
|
+
// flat-view cache would hide the grouped subcommands from a new CLI (and
|
|
17
|
+
// vice versa) for up to the cache TTL. Bump when the CLI gains/loses a
|
|
18
|
+
// capability the server keys on.
|
|
19
|
+
export const GSK_CLI_CAPS = 'cli-groups-v2,cli-paths-v3';
|
|
12
20
|
const CONFIG_DIR = '.genspark-tool-cli';
|
|
13
21
|
const CONFIG_FILE = 'config.json';
|
|
14
22
|
const TOOLS_CACHE_FILE = 'tools-cache.json';
|
|
@@ -114,6 +122,13 @@ export function loadToolsCache(baseUrl) {
|
|
|
114
122
|
if (cache.base_url !== baseUrl) {
|
|
115
123
|
return null;
|
|
116
124
|
}
|
|
125
|
+
// Validate the cache was written by a CLI with the same capabilities —
|
|
126
|
+
// the server tailors /tools metadata to X-GSK-CLI-Caps, so a cache from
|
|
127
|
+
// a different-caps CLI (older/newer install sharing this $HOME) holds
|
|
128
|
+
// the wrong view for this binary. Absent field = pre-caps cache = stale.
|
|
129
|
+
if (cache.caps !== GSK_CLI_CAPS) {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
117
132
|
// Check age (treat invalid timestamps as stale)
|
|
118
133
|
const fetchedAt = new Date(cache.fetched_at).getTime();
|
|
119
134
|
if (isNaN(fetchedAt) || Date.now() - fetchedAt > CACHE_MAX_AGE_MS) {
|
|
@@ -141,6 +156,7 @@ export function saveToolsCache(baseUrl, tools) {
|
|
|
141
156
|
const cache = {
|
|
142
157
|
fetched_at: new Date().toISOString(),
|
|
143
158
|
base_url: baseUrl,
|
|
159
|
+
caps: GSK_CLI_CAPS,
|
|
144
160
|
tools,
|
|
145
161
|
};
|
|
146
162
|
fs.writeFileSync(cachePath, JSON.stringify(cache, null, 2), 'utf-8');
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* Tool name: "web_search" -> Command: `gsk web_search`, Alias: `gsk search`
|
|
19
19
|
* Tool name: "crawler" -> Command: `gsk crawler`, Alias: `gsk crawl`
|
|
20
20
|
*/
|
|
21
|
-
import { Command } from 'commander';
|
|
21
|
+
import { Command, InvalidArgumentError } from 'commander';
|
|
22
22
|
import * as fs from 'fs';
|
|
23
23
|
import * as http from 'http';
|
|
24
24
|
import * as https from 'https';
|
|
@@ -470,6 +470,23 @@ function resolveVdProjectId() {
|
|
|
470
470
|
function expandHome(p) {
|
|
471
471
|
return p.replace(/^~(?=\/|$)/, os.homedir());
|
|
472
472
|
}
|
|
473
|
+
/**
|
|
474
|
+
* Parse the optional literal value of a boolean flag. Commander only calls
|
|
475
|
+
* this when the user supplied a value (`--flag false`); a bare `--flag`
|
|
476
|
+
* stays `true` without invoking the parser.
|
|
477
|
+
*
|
|
478
|
+
* Only boolean words are accepted: an optional-value flag greedily consumes
|
|
479
|
+
* the next non-dash token, so `--flag <positional>` would otherwise steal
|
|
480
|
+
* the positional and silently read as true — reject it loudly instead.
|
|
481
|
+
*/
|
|
482
|
+
function parseBooleanFlagValue(value) {
|
|
483
|
+
const v = value.toLowerCase();
|
|
484
|
+
if (['true', '1', 'yes', 'on'].includes(v))
|
|
485
|
+
return true;
|
|
486
|
+
if (['false', '0', 'no', 'off'].includes(v))
|
|
487
|
+
return false;
|
|
488
|
+
throw new InvalidArgumentError(`expected true/false. If '${value}' was meant as an argument, place it before the flag or pass an explicit value (--flag true ${value}).`);
|
|
489
|
+
}
|
|
473
490
|
/**
|
|
474
491
|
* Register a dynamic tool command from a server-provided schema.
|
|
475
492
|
*
|
|
@@ -478,13 +495,42 @@ function expandHome(p) {
|
|
|
478
495
|
* don't have to retype it on every invocation. Passing undefined keeps
|
|
479
496
|
* the flag fully user-provided (but in practice, the main loop skips
|
|
480
497
|
* vd-group tools entirely when no vd_project_id is resolved).
|
|
498
|
+
*
|
|
499
|
+
* `cmdOpts.hidden` registers the command hidden from help; `cmdOpts.deprecated`
|
|
500
|
+
* marks it a legacy alias of `replacement` — used for the deprecated flat
|
|
501
|
+
* top-level forms of tools that moved into a group. Deprecated commands warn
|
|
502
|
+
* on stderr at invocation time (help text alone never reaches an agent that
|
|
503
|
+
* already knows the old form) and tag their requests as legacy invocations.
|
|
481
504
|
*/
|
|
482
|
-
function registerToolCommand(parentProgram, tool, clientFactory, vdProjectIdDefault) {
|
|
505
|
+
function registerToolCommand(parentProgram, tool, clientFactory, vdProjectIdDefault, cmdOpts) {
|
|
483
506
|
// If the tool has a group, register as a subcommand under the group parent
|
|
484
507
|
// e.g., tool.name="email_list" with cli.group="email" creates `gsk email list`
|
|
485
508
|
let targetProgram = parentProgram;
|
|
486
509
|
let cmdName = tool.name;
|
|
487
|
-
if (tool.cli.
|
|
510
|
+
if (tool.cli.path && tool.cli.path.length >= 2) {
|
|
511
|
+
// Nested path (cli-paths-v3): all elements but the last are group
|
|
512
|
+
// levels, e.g. ["telephony", "number", "search"] -> `gsk telephony
|
|
513
|
+
// number search`. Group parents are memoized in _groupCommands under
|
|
514
|
+
// their space-joined path prefix ("telephony", "telephony number"), so
|
|
515
|
+
// a top-level path segment shares the entry a static or cli.group
|
|
516
|
+
// registration of the same name would use.
|
|
517
|
+
cmdName = tool.cli.path[tool.cli.path.length - 1];
|
|
518
|
+
let prefixKey = '';
|
|
519
|
+
for (const segment of tool.cli.path.slice(0, -1)) {
|
|
520
|
+
const parentCmd = prefixKey
|
|
521
|
+
? _groupCommands.get(prefixKey)
|
|
522
|
+
: parentProgram;
|
|
523
|
+
prefixKey = prefixKey ? `${prefixKey} ${segment}` : segment;
|
|
524
|
+
if (!_groupCommands.has(prefixKey)) {
|
|
525
|
+
const groupCmd = parentCmd
|
|
526
|
+
.command(segment)
|
|
527
|
+
.description(`Commands for ${segment}`);
|
|
528
|
+
_groupCommands.set(prefixKey, groupCmd);
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
targetProgram = _groupCommands.get(prefixKey);
|
|
532
|
+
}
|
|
533
|
+
else if (tool.cli.group) {
|
|
488
534
|
const groupName = tool.cli.group;
|
|
489
535
|
if (!_groupCommands.has(groupName)) {
|
|
490
536
|
const groupCmd = parentProgram
|
|
@@ -493,14 +539,20 @@ function registerToolCommand(parentProgram, tool, clientFactory, vdProjectIdDefa
|
|
|
493
539
|
_groupCommands.set(groupName, groupCmd);
|
|
494
540
|
}
|
|
495
541
|
targetProgram = _groupCommands.get(groupName);
|
|
496
|
-
//
|
|
542
|
+
// Subcommand name: explicit override wins (for tools whose name doesn't
|
|
543
|
+
// share the group prefix, e.g. "call_status" under group "phone-call"
|
|
544
|
+
// -> `gsk phone-call status`); otherwise strip the group prefix
|
|
497
545
|
// e.g., "email_list" with group "email" -> "list"
|
|
498
546
|
const prefix = groupName + '_';
|
|
499
|
-
cmdName =
|
|
500
|
-
|
|
501
|
-
|
|
547
|
+
cmdName =
|
|
548
|
+
tool.cli.subcommand ||
|
|
549
|
+
(tool.name.startsWith(prefix) ? tool.name.slice(prefix.length) : tool.name);
|
|
502
550
|
}
|
|
503
|
-
const cmd = targetProgram
|
|
551
|
+
const cmd = targetProgram
|
|
552
|
+
.command(cmdName, cmdOpts?.hidden ? { hidden: true } : {})
|
|
553
|
+
.description(cmdOpts?.deprecated
|
|
554
|
+
? `[deprecated: use \`${cmdOpts.deprecated.replacement}\`] ${tool.description}`
|
|
555
|
+
: tool.description);
|
|
504
556
|
// Register aliases
|
|
505
557
|
for (const alias of tool.cli.aliases) {
|
|
506
558
|
cmd.alias(alias);
|
|
@@ -560,7 +612,12 @@ function registerToolCommand(parentProgram, tool, clientFactory, vdProjectIdDefa
|
|
|
560
612
|
}
|
|
561
613
|
}
|
|
562
614
|
else if (paramType === 'boolean') {
|
|
563
|
-
|
|
615
|
+
// Accept an optional literal value: `--flag` alone means true, but
|
|
616
|
+
// `--flag false` must mean false. With a bare presence flag Commander
|
|
617
|
+
// treats the literal as a stray positional and the flag still reads
|
|
618
|
+
// true — that silent inversion once sent a phone number into a Maps
|
|
619
|
+
// place-id lookup (`--is_place_id false`).
|
|
620
|
+
cmd.option(`${shortPrefix}--${name} [value]`, param.description || name, parseBooleanFlagValue);
|
|
564
621
|
}
|
|
565
622
|
else {
|
|
566
623
|
const flag = `${shortPrefix}--${name} <value>`;
|
|
@@ -714,6 +771,26 @@ function registerToolCommand(parentProgram, tool, clientFactory, vdProjectIdDefa
|
|
|
714
771
|
}
|
|
715
772
|
}
|
|
716
773
|
const client = clientFactory();
|
|
774
|
+
// Deprecated legacy form: warn on stderr (agents only relearn from
|
|
775
|
+
// invocation-time feedback, not from hidden help text) and tag the
|
|
776
|
+
// request so the server's deprecation telemetry can count it.
|
|
777
|
+
if (cmdOpts?.deprecated) {
|
|
778
|
+
// Group-qualify the legacy label so `gsk phone-call status` and
|
|
779
|
+
// the flat `gsk call_status` count as distinct legacy forms.
|
|
780
|
+
const legacyName = tool.cli.group
|
|
781
|
+
? `${tool.cli.group} ${cmdName}`
|
|
782
|
+
: cmdName;
|
|
783
|
+
console.error(`[DEPRECATED] \`gsk ${legacyName}\` still works but is deprecated — ` +
|
|
784
|
+
`use \`${cmdOpts.deprecated.replacement}\` instead.`);
|
|
785
|
+
client.setInvokedAs(`${legacyName} (legacy)`);
|
|
786
|
+
}
|
|
787
|
+
else {
|
|
788
|
+
client.setInvokedAs(tool.cli.path && tool.cli.path.length >= 2
|
|
789
|
+
? tool.cli.path.join(' ')
|
|
790
|
+
: tool.cli.group
|
|
791
|
+
? `${tool.cli.group} ${cmdName}`
|
|
792
|
+
: cmdName);
|
|
793
|
+
}
|
|
717
794
|
// Extract and remove client-side-only options before sending to API
|
|
718
795
|
const outputFilePath = opts.outputFile;
|
|
719
796
|
delete opts.outputFile;
|
|
@@ -1585,20 +1662,16 @@ ${skillList}
|
|
|
1585
1662
|
fs.writeFileSync(contextPath, content);
|
|
1586
1663
|
return true;
|
|
1587
1664
|
}
|
|
1588
|
-
|
|
1589
|
-
// Phone Call Command
|
|
1590
|
-
// ============================================
|
|
1591
|
-
// Phone call action handler (shared by phone-call and hidden call alias)
|
|
1592
|
-
async function phoneCallAction(recipient, opts) {
|
|
1665
|
+
async function phoneCallAction(recipient, opts, invokedAs) {
|
|
1593
1666
|
try {
|
|
1594
1667
|
const client = createClient();
|
|
1668
|
+
client.setInvokedAs(invokedAs);
|
|
1595
1669
|
if (opts.dryRun) {
|
|
1596
1670
|
// Dry run: just call the phone_call tool to validate and resolve
|
|
1597
1671
|
info('Dry run: validating prerequisites and resolving contact info...');
|
|
1598
1672
|
const result = await client.executeTool('phone_call', {
|
|
1599
1673
|
recipient,
|
|
1600
1674
|
contact_info: opts.contact_info,
|
|
1601
|
-
is_place_id: opts.is_place_id,
|
|
1602
1675
|
purpose: opts.purpose,
|
|
1603
1676
|
});
|
|
1604
1677
|
if (result.status === 'ok' && result.session_state) {
|
|
@@ -1629,7 +1702,6 @@ async function phoneCallAction(recipient, opts) {
|
|
|
1629
1702
|
const result = await client.requestStreaming('/phone_call/initiate', {
|
|
1630
1703
|
recipient,
|
|
1631
1704
|
contact_info: opts.contact_info,
|
|
1632
|
-
is_place_id: opts.is_place_id,
|
|
1633
1705
|
purpose: opts.purpose,
|
|
1634
1706
|
mode: opts.async ? 'async' : 'sync',
|
|
1635
1707
|
}, msg => {
|
|
@@ -1709,25 +1781,54 @@ async function phoneCallAction(recipient, opts) {
|
|
|
1709
1781
|
process.exit(1);
|
|
1710
1782
|
}
|
|
1711
1783
|
}
|
|
1712
|
-
// Phone call option definitions
|
|
1784
|
+
// Phone call dial option definitions
|
|
1713
1785
|
function addPhoneCallOptions(cmd) {
|
|
1714
1786
|
return cmd
|
|
1715
1787
|
.argument('<recipient>', 'Name of the person or business to call')
|
|
1716
|
-
.requiredOption('-c, --contact_info <value>', 'Phone number (e.g. +1-555-123-4567) or Google
|
|
1717
|
-
|
|
1788
|
+
.requiredOption('-c, --contact_info <value>', 'Phone number (e.g. +1-555-123-4567), calllog: contact_ref, or Google ' +
|
|
1789
|
+
'Maps place_id — the type is detected automatically')
|
|
1718
1790
|
.requiredOption('-p, --purpose <value>', "Purpose of the call (e.g. 'Check reservation availability')")
|
|
1719
1791
|
.option('--dry-run', 'Only validate and resolve contact info, do not initiate the call')
|
|
1720
|
-
.option('--async', 'Return right after dialing starts; poll with call
|
|
1792
|
+
.option('--async', 'Return right after dialing starts; poll with `gsk telephony call status`, stop with `gsk telephony call hangup`');
|
|
1721
1793
|
}
|
|
1722
|
-
//
|
|
1723
|
-
|
|
1724
|
-
|
|
1794
|
+
// Canonical telephony tree: gsk telephony call (dial as the DEFAULT
|
|
1795
|
+
// subcommand, so `gsk telephony call <recipient> ...` dials). The companion
|
|
1796
|
+
// tools (status/log/detail/hangup) and the sms / number / setup-status
|
|
1797
|
+
// families attach as dynamic subcommands via the seeded _groupCommands
|
|
1798
|
+
// entries below.
|
|
1799
|
+
const telephonyCmd = program
|
|
1800
|
+
.command('telephony')
|
|
1801
|
+
.description('Telephony: AI phone calls, SMS, and phone-number management (see subcommands).');
|
|
1802
|
+
const telephonyCallCmd = telephonyCmd
|
|
1803
|
+
.command('call')
|
|
1804
|
+
.description('Make an AI phone call on your behalf, and inspect or control your calls (see subcommands).')
|
|
1805
|
+
.addHelpText('after', '\nDialing is the default subcommand: `gsk telephony call <recipient> -c <number> -p <purpose>`.\n' +
|
|
1806
|
+
'If the recipient name collides with a subcommand word (status, log, ...), use the explicit form:\n' +
|
|
1807
|
+
' gsk telephony call dial <recipient> -c <number> -p <purpose>\n');
|
|
1808
|
+
addPhoneCallOptions(telephonyCallCmd
|
|
1809
|
+
.command('dial', { isDefault: true })
|
|
1810
|
+
.description('Make an AI phone call on your behalf. Validates prerequisites, resolves contact info, and initiates the call. (default subcommand)')).action((recipient, opts) => phoneCallAction(recipient, opts, 'telephony call dial'));
|
|
1811
|
+
_groupCommands.set('telephony', telephonyCmd);
|
|
1812
|
+
_groupCommands.set('telephony call', telephonyCallCmd);
|
|
1813
|
+
// Pre-migration form: gsk phone-call (alias: call-for-me). Hidden from help
|
|
1814
|
+
// but fully functional — agents that learned the old form keep working and
|
|
1815
|
+
// get a deprecation warning + legacy invocation telemetry instead of a
|
|
1816
|
+
// breakage (deprecation lifecycle stage 1).
|
|
1817
|
+
const phoneCallCmd = program
|
|
1818
|
+
.command('phone-call', { hidden: true })
|
|
1725
1819
|
.alias('call-for-me')
|
|
1726
|
-
.description('Make an AI phone call on your behalf
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
.
|
|
1820
|
+
.description('[deprecated: use `gsk telephony call`] Make an AI phone call on your behalf, and inspect or control your calls (see subcommands).')
|
|
1821
|
+
.addHelpText('after', '\nDeprecated: use `gsk telephony call` instead.\n' +
|
|
1822
|
+
'Dialing is the default subcommand: `gsk phone-call <recipient> -c <number> -p <purpose>`.\n');
|
|
1823
|
+
addPhoneCallOptions(phoneCallCmd
|
|
1824
|
+
.command('dial', { isDefault: true })
|
|
1825
|
+
.description('[deprecated: use `gsk telephony call dial`] Make an AI phone call on your behalf. (default subcommand)')).action((recipient, opts) => {
|
|
1826
|
+
console.error('[DEPRECATED] `gsk phone-call` still works but is deprecated — use `gsk telephony call` instead.');
|
|
1827
|
+
return phoneCallAction(recipient, opts, 'phone-call dial (legacy)');
|
|
1828
|
+
});
|
|
1829
|
+
// Seed the dynamic-group map so server-registered phone-call tools become
|
|
1830
|
+
// subcommands of this static parent instead of a duplicate top-level group.
|
|
1831
|
+
_groupCommands.set('phone-call', phoneCallCmd);
|
|
1731
1832
|
// ============================================
|
|
1732
1833
|
// Dynamic Tool Registration & Startup
|
|
1733
1834
|
// ============================================
|
|
@@ -1791,7 +1892,8 @@ async function main() {
|
|
|
1791
1892
|
}
|
|
1792
1893
|
}
|
|
1793
1894
|
// Register dynamic tool commands
|
|
1794
|
-
// Skip phone_call — the hardcoded `call` command
|
|
1895
|
+
// Skip phone_call — the hardcoded `phone-call` command (dial default
|
|
1896
|
+
// subcommand) handles dialing with streaming UX the generic handler lacks.
|
|
1795
1897
|
// Hide the `vd` subcommand group entirely unless the user has opted in
|
|
1796
1898
|
// via config.vd_project_id or GSK_VD_PROJECT_ID env var.
|
|
1797
1899
|
const vdProjectId = resolveVdProjectId();
|
|
@@ -1801,7 +1903,37 @@ async function main() {
|
|
|
1801
1903
|
continue;
|
|
1802
1904
|
if (tool.cli.group === 'vd' && !vdProjectId)
|
|
1803
1905
|
continue;
|
|
1804
|
-
|
|
1906
|
+
const hasPath = Boolean(tool.cli.path && tool.cli.path.length >= 2);
|
|
1907
|
+
const subName = tool.cli.subcommand ||
|
|
1908
|
+
(tool.cli.group && tool.name.startsWith(`${tool.cli.group}_`)
|
|
1909
|
+
? tool.name.slice(`${tool.cli.group}_`.length)
|
|
1910
|
+
: tool.name);
|
|
1911
|
+
// Canonical invocation — the replacement target every hidden legacy
|
|
1912
|
+
// form points to in its deprecation warning.
|
|
1913
|
+
const canonical = hasPath
|
|
1914
|
+
? `gsk ${tool.cli.path.join(' ')}`
|
|
1915
|
+
: tool.cli.group
|
|
1916
|
+
? `gsk ${tool.cli.group} ${subName}`
|
|
1917
|
+
: `gsk ${tool.name}`;
|
|
1918
|
+
// Hidden deprecated aliases: a path tool's pre-path GROUP form (the
|
|
1919
|
+
// server keeps sending group metadata alongside the path exactly so
|
|
1920
|
+
// agents that learned `gsk phone-call status` don't break), plus the
|
|
1921
|
+
// pre-grouping flat top-level form.
|
|
1922
|
+
const legacyGroupForm = Boolean(hasPath && tool.cli.group);
|
|
1923
|
+
const legacyTopLevel = Boolean(tool.cli.legacy_top_level && (tool.cli.group || hasPath));
|
|
1924
|
+
const hasLegacyForms = legacyGroupForm || legacyTopLevel;
|
|
1925
|
+
// When legacy forms exist, the alias names belong to the hidden flat
|
|
1926
|
+
// command, not the canonical form.
|
|
1927
|
+
registerToolCommand(program, hasLegacyForms ? { ...tool, cli: { ...tool.cli, aliases: [] } } : tool, createClient, vdProjectId);
|
|
1928
|
+
if (legacyGroupForm) {
|
|
1929
|
+
registerToolCommand(program, { ...tool, cli: { ...tool.cli, aliases: [], path: null } }, createClient, vdProjectId, { hidden: true, deprecated: { replacement: canonical } });
|
|
1930
|
+
}
|
|
1931
|
+
if (legacyTopLevel) {
|
|
1932
|
+
registerToolCommand(program, {
|
|
1933
|
+
...tool,
|
|
1934
|
+
cli: { ...tool.cli, path: null, group: null, subcommand: null },
|
|
1935
|
+
}, createClient, vdProjectId, { hidden: true, deprecated: { replacement: canonical } });
|
|
1936
|
+
}
|
|
1805
1937
|
}
|
|
1806
1938
|
}
|
|
1807
1939
|
// Parse and run
|