shortcutxl 0.3.64 → 0.3.65
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/CHANGELOG.md +1 -1
- package/dist/app/tools/index.d.ts +1 -1
- package/dist/app/tools/index.js +1 -1
- package/dist/app/tools/web-search.d.ts +1 -1
- package/dist/app/tools/web-search.js +4 -4
- package/dist/cli.js +12 -7
- package/dist/embedded-agent/host-tools/get-tool-info/shared.d.ts +1 -1
- package/dist/main.js +6 -2
- package/dist/shell/tools/presentation/registry.js +2 -2
- package/dist/tool-names.d.ts +1 -1
- package/dist/tool-names.js +1 -1
- package/package.json +1 -1
- package/user-docs/dist/shortcutxl-docs.pdf +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -25,6 +25,6 @@ export { createGetSessionSettingsTool, createUpdateSessionSettingsTool } from '.
|
|
|
25
25
|
export { createActionSwitchModeTool, createInstallationSwitchModeTool, createPlanSwitchModeTool } from './switch-mode.js';
|
|
26
26
|
export { createTakeScreenshotTool, defaultOperations as defaultScreenshotOperations, type Screenshot, type ScreenshotRange, type TakeScreenshotOperations } from './take-screenshot.js';
|
|
27
27
|
export { createSendMessageTool, createTaskTool } from './task/index.js';
|
|
28
|
-
export {
|
|
28
|
+
export { EXA_WEB_SEARCH_TOOL_SUMMARY, createWebSearchTool, type WebSearchOperations, type WebSearchToolDetails, type WebSearchToolInput, type WebSearchToolOptions } from './web-search.js';
|
|
29
29
|
export { createWriteTool, type WriteOperations, type WriteToolInput, type WriteToolOptions } from './write.js';
|
|
30
30
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/app/tools/index.js
CHANGED
|
@@ -24,6 +24,6 @@ export { createGetSessionSettingsTool, createUpdateSessionSettingsTool } from '.
|
|
|
24
24
|
export { createActionSwitchModeTool, createInstallationSwitchModeTool, createPlanSwitchModeTool } from './switch-mode.js';
|
|
25
25
|
export { createTakeScreenshotTool, defaultOperations as defaultScreenshotOperations } from './take-screenshot.js';
|
|
26
26
|
export { createSendMessageTool, createTaskTool } from './task/index.js';
|
|
27
|
-
export {
|
|
27
|
+
export { EXA_WEB_SEARCH_TOOL_SUMMARY, createWebSearchTool } from './web-search.js';
|
|
28
28
|
export { createWriteTool } from './write.js';
|
|
29
29
|
//# sourceMappingURL=index.js.map
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* and third-party API keys stay server-side.
|
|
6
6
|
*/
|
|
7
7
|
import type { ToolDefinition } from '../../core/core-types.js';
|
|
8
|
-
export declare const
|
|
8
|
+
export declare const EXA_WEB_SEARCH_TOOL_SUMMARY = "Batch web search up to 1000 queries, returning structured answers with sources";
|
|
9
9
|
declare const schema: import("@sinclair/typebox").TObject<{
|
|
10
10
|
description: import("@sinclair/typebox").TString;
|
|
11
11
|
inputPath: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
@@ -11,7 +11,7 @@ import { APP_NAME } from '../../config.js';
|
|
|
11
11
|
import { SHORTCUT_API_URL } from '../../constants.js';
|
|
12
12
|
import { SHORTCUT_API_ENDPOINTS } from '../../endpoints.js';
|
|
13
13
|
import { SHORTCUT_PROVIDER_ID } from '../../model-ids.js';
|
|
14
|
-
import {
|
|
14
|
+
import { EXA_WEB_SEARCH } from '../../tool-names.js';
|
|
15
15
|
const TIMEOUT_MS = 90_000;
|
|
16
16
|
const MAX_WEB_SEARCH_QUERIES = 1000;
|
|
17
17
|
// Pace request starts, not completions. With 1s Exa latency this still reaches
|
|
@@ -32,7 +32,7 @@ Search the web with Exa.
|
|
|
32
32
|
- With outputSchema, answer is the structured object matching that schema instead of a string.
|
|
33
33
|
- The JSONL file is saved to ./web_search/exa_web_search_*.jsonl unless outputDir is provided.
|
|
34
34
|
`;
|
|
35
|
-
export const
|
|
35
|
+
export const EXA_WEB_SEARCH_TOOL_SUMMARY = 'Batch web search up to 1000 queries, returning structured answers with sources';
|
|
36
36
|
const schema = Type.Object({
|
|
37
37
|
description: Type.String({
|
|
38
38
|
description: "A short one-sentence summary starting with 'Searching for...' or 'Looking for...'",
|
|
@@ -212,8 +212,8 @@ async function requestWebSearchResult(baseUrl, apiKey, query, outputSchema, ops,
|
|
|
212
212
|
export function createWebSearchTool(baseUrl = SHORTCUT_API_URL, options) {
|
|
213
213
|
const ops = { ...defaultOperations, ...(options?.operations ?? {}) };
|
|
214
214
|
return {
|
|
215
|
-
name:
|
|
216
|
-
label: 'Web Search',
|
|
215
|
+
name: EXA_WEB_SEARCH,
|
|
216
|
+
label: 'Exa Web Search',
|
|
217
217
|
description: TOOL_DESCRIPTION,
|
|
218
218
|
parameters: schema,
|
|
219
219
|
async execute(toolCallId, input, signal, onUpdate, ctx) {
|
package/dist/cli.js
CHANGED
|
@@ -315707,7 +315707,7 @@ var init_user_message_id = __esm({
|
|
|
315707
315707
|
});
|
|
315708
315708
|
|
|
315709
315709
|
// src/tool-names.ts
|
|
315710
|
-
var READ, BASH, EDIT, WRITE, GREP, FIND, LS, BUILT_IN_TOOL_NAME_LIST, BUILT_IN_TOOL_NAMES, EXECUTE_CODE, EXCEL_EXEC, SHEET_EXEC, TASK, SEND_MESSAGE, GOAL, ACTION_SWITCH_MODE, PLAN_SWITCH_MODE, INSTALLATION_SWITCH_MODE, LLM_ANALYSIS, REFRESH_CONTEXT, MCP, MCP_TOOL_NAMES, GET_TOOL_INFO, EXECUTE_TOOL, GET_SESSION_SETTINGS, UPDATE_SESSION_SETTINGS, LOOP, TAKE_SCREENSHOT,
|
|
315710
|
+
var READ, BASH, EDIT, WRITE, GREP, FIND, LS, BUILT_IN_TOOL_NAME_LIST, BUILT_IN_TOOL_NAMES, EXECUTE_CODE, EXCEL_EXEC, SHEET_EXEC, TASK, SEND_MESSAGE, GOAL, ACTION_SWITCH_MODE, PLAN_SWITCH_MODE, INSTALLATION_SWITCH_MODE, LLM_ANALYSIS, REFRESH_CONTEXT, MCP, MCP_TOOL_NAMES, GET_TOOL_INFO, EXECUTE_TOOL, GET_SESSION_SETTINGS, UPDATE_SESSION_SETTINGS, LOOP, TAKE_SCREENSHOT, EXA_WEB_SEARCH;
|
|
315711
315711
|
var init_tool_names = __esm({
|
|
315712
315712
|
"src/tool-names.ts"() {
|
|
315713
315713
|
"use strict";
|
|
@@ -315739,7 +315739,7 @@ var init_tool_names = __esm({
|
|
|
315739
315739
|
UPDATE_SESSION_SETTINGS = "update_session_settings";
|
|
315740
315740
|
LOOP = "loop";
|
|
315741
315741
|
TAKE_SCREENSHOT = "take_screenshot";
|
|
315742
|
-
|
|
315742
|
+
EXA_WEB_SEARCH = "exa_web_search";
|
|
315743
315743
|
}
|
|
315744
315744
|
});
|
|
315745
315745
|
|
|
@@ -451507,8 +451507,8 @@ async function requestWebSearchResult(baseUrl, apiKey, query, outputSchema, ops,
|
|
|
451507
451507
|
function createWebSearchTool(baseUrl = SHORTCUT_API_URL, options2) {
|
|
451508
451508
|
const ops = { ...defaultOperations2, ...options2?.operations ?? {} };
|
|
451509
451509
|
return {
|
|
451510
|
-
name:
|
|
451511
|
-
label: "Web Search",
|
|
451510
|
+
name: EXA_WEB_SEARCH,
|
|
451511
|
+
label: "Exa Web Search",
|
|
451512
451512
|
description: TOOL_DESCRIPTION8,
|
|
451513
451513
|
parameters: schema14,
|
|
451514
451514
|
async execute(toolCallId, input, signal, onUpdate, ctx) {
|
|
@@ -451596,7 +451596,7 @@ function createWebSearchTool(baseUrl = SHORTCUT_API_URL, options2) {
|
|
|
451596
451596
|
}
|
|
451597
451597
|
};
|
|
451598
451598
|
}
|
|
451599
|
-
var TIMEOUT_MS, MAX_WEB_SEARCH_QUERIES, MAX_WEB_SEARCH_STARTS_PER_SECOND, WEB_SEARCH_RATE_WINDOW_MS, MAX_IN_FLIGHT_WEB_SEARCH_REQUESTS, DEFAULT_OUTPUT_DIR, DEFAULT_NO_RESULTS_TEXT, TOOL_DESCRIPTION8, schema14, defaultOperations2;
|
|
451599
|
+
var TIMEOUT_MS, MAX_WEB_SEARCH_QUERIES, MAX_WEB_SEARCH_STARTS_PER_SECOND, WEB_SEARCH_RATE_WINDOW_MS, MAX_IN_FLIGHT_WEB_SEARCH_REQUESTS, DEFAULT_OUTPUT_DIR, DEFAULT_NO_RESULTS_TEXT, TOOL_DESCRIPTION8, EXA_WEB_SEARCH_TOOL_SUMMARY, schema14, defaultOperations2;
|
|
451600
451600
|
var init_web_search = __esm({
|
|
451601
451601
|
"src/app/tools/web-search.ts"() {
|
|
451602
451602
|
"use strict";
|
|
@@ -451621,6 +451621,7 @@ var init_web_search = __esm({
|
|
|
451621
451621
|
- With outputSchema, answer is the structured object matching that schema instead of a string.
|
|
451622
451622
|
- The JSONL file is saved to ./web_search/exa_web_search_*.jsonl unless outputDir is provided.
|
|
451623
451623
|
`;
|
|
451624
|
+
EXA_WEB_SEARCH_TOOL_SUMMARY = "Batch web search up to 1000 queries, returning structured answers with sources";
|
|
451624
451625
|
schema14 = Type.Object({
|
|
451625
451626
|
description: Type.String({
|
|
451626
451627
|
description: "A short one-sentence summary starting with 'Searching for...' or 'Looking for...'",
|
|
@@ -525721,7 +525722,7 @@ function lookupToolPresentation(toolName, tool) {
|
|
|
525721
525722
|
return renderTextResult(result, options2.expanded, theme2);
|
|
525722
525723
|
}
|
|
525723
525724
|
};
|
|
525724
|
-
case
|
|
525725
|
+
case EXA_WEB_SEARCH:
|
|
525725
525726
|
return {
|
|
525726
525727
|
renderCall(args, options2, theme2) {
|
|
525727
525728
|
return renderWebSearchCall(args, options2.expanded, theme2);
|
|
@@ -548448,7 +548449,12 @@ async function buildSessionOptions(parsed, sessionManager, modelRegistry2, mcpOA
|
|
|
548448
548449
|
if (!tool) throw new Error(`Runtime tool '${name}' was not registered.`);
|
|
548449
548450
|
return tool;
|
|
548450
548451
|
};
|
|
548452
|
+
const exaWebSearchTool = createWebSearchTool();
|
|
548451
548453
|
const executableTools = [
|
|
548454
|
+
{
|
|
548455
|
+
summary: EXA_WEB_SEARCH_TOOL_SUMMARY,
|
|
548456
|
+
definition: exaWebSearchTool
|
|
548457
|
+
},
|
|
548452
548458
|
{
|
|
548453
548459
|
summary: LOOP_TOOL_SUMMARY,
|
|
548454
548460
|
definition: createLoopTool(loopManager)
|
|
@@ -548592,7 +548598,6 @@ async function buildSessionOptions(parsed, sessionManager, modelRegistry2, mcpOA
|
|
|
548592
548598
|
} else {
|
|
548593
548599
|
availableTools2.push(createTakeScreenshotTool());
|
|
548594
548600
|
}
|
|
548595
|
-
availableTools2.push(createWebSearchTool());
|
|
548596
548601
|
const mcpManager = await createMcpManager({
|
|
548597
548602
|
cwd: process.cwd(),
|
|
548598
548603
|
globalConfigDir: getAgentDir(),
|
|
@@ -5,7 +5,7 @@ export type ExecutableToolName = (typeof EXECUTABLE_TOOL_NAMES)[number];
|
|
|
5
5
|
export declare function executableToolNameLiteralUnion(values: readonly ExecutableToolName[], options: {
|
|
6
6
|
description: string;
|
|
7
7
|
errorPrefix: string;
|
|
8
|
-
}): import("@sinclair/typebox").TLiteral<"sandbox_llm" | "goal" | "loop" | "
|
|
8
|
+
}): import("@sinclair/typebox").TLiteral<"sandbox_llm" | "goal" | "loop" | "exa_web_search" | "create_website"> | import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"sandbox_llm" | "goal" | "loop" | "exa_web_search" | "create_website">, ...import("@sinclair/typebox").TLiteral<"sandbox_llm" | "goal" | "loop" | "exa_web_search" | "create_website">[]]>;
|
|
9
9
|
/**
|
|
10
10
|
* Session-scoped gate shared by `get_tool_info` (writer) and `execute_tool`
|
|
11
11
|
* (reader). Both contracts must be constructed from the same instance.
|
package/dist/main.js
CHANGED
|
@@ -42,7 +42,7 @@ import { createGetSessionSettingsTool, createUpdateSessionSettingsTool } from '.
|
|
|
42
42
|
import { createActionSwitchModeTool, createInstallationSwitchModeTool, createPlanSwitchModeTool } from './app/tools/switch-mode.js';
|
|
43
43
|
import { createTakeScreenshotTool, defaultOperations as defaultScreenshotOperations } from './app/tools/take-screenshot.js';
|
|
44
44
|
import { createSendMessageTool, createTaskTool, TASK_NOTIFICATION_CUSTOM_TYPE } from './app/tools/task/index.js';
|
|
45
|
-
import { createWebSearchTool } from './app/tools/web-search.js';
|
|
45
|
+
import { createWebSearchTool, EXA_WEB_SEARCH_TOOL_SUMMARY } from './app/tools/web-search.js';
|
|
46
46
|
import { createWriteTool } from './app/tools/write.js';
|
|
47
47
|
import { fetchWorkbookConnectionState } from './app/workbook-context/workbook-summary.js';
|
|
48
48
|
import { SCOPE_UNSET } from './app/workbook-scope.js';
|
|
@@ -171,7 +171,12 @@ export async function buildSessionOptions(parsed, sessionManager, modelRegistry,
|
|
|
171
171
|
throw new Error(`Runtime tool '${name}' was not registered.`);
|
|
172
172
|
return tool;
|
|
173
173
|
};
|
|
174
|
+
const exaWebSearchTool = createWebSearchTool();
|
|
174
175
|
const executableTools = [
|
|
176
|
+
{
|
|
177
|
+
summary: EXA_WEB_SEARCH_TOOL_SUMMARY,
|
|
178
|
+
definition: exaWebSearchTool
|
|
179
|
+
},
|
|
175
180
|
{
|
|
176
181
|
summary: LOOP_TOOL_SUMMARY,
|
|
177
182
|
definition: createLoopTool(loopManager)
|
|
@@ -293,7 +298,6 @@ export async function buildSessionOptions(parsed, sessionManager, modelRegistry,
|
|
|
293
298
|
// CLI mode without headless engine: stub (returns error for screenshot capture)
|
|
294
299
|
availableTools.push(createTakeScreenshotTool());
|
|
295
300
|
}
|
|
296
|
-
availableTools.push(createWebSearchTool());
|
|
297
301
|
const mcpManager = await createMcpManager({
|
|
298
302
|
cwd: process.cwd(),
|
|
299
303
|
globalConfigDir: getAgentDir(),
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* for how every built-in tool is displayed in the TUI.
|
|
7
7
|
*/
|
|
8
8
|
import { readTaskQueryFile, resolveTaskQuery } from '../../../app/tools/task/query.js';
|
|
9
|
-
import { ACTION_SWITCH_MODE, BASH, EDIT, EXECUTE_CODE, EXECUTE_TOOL, FIND, GET_TOOL_INFO, GOAL, GREP, INSTALLATION_SWITCH_MODE, LLM_ANALYSIS, LS, PLAN_SWITCH_MODE, READ, SEND_MESSAGE,
|
|
9
|
+
import { ACTION_SWITCH_MODE, BASH, EDIT, EXA_WEB_SEARCH, EXECUTE_CODE, EXECUTE_TOOL, FIND, GET_TOOL_INFO, GOAL, GREP, INSTALLATION_SWITCH_MODE, LLM_ANALYSIS, LS, PLAN_SWITCH_MODE, READ, SEND_MESSAGE, WRITE } from '../../../tool-names.js';
|
|
10
10
|
import { renderBashCall, renderBashResult } from './renderers/bash.js';
|
|
11
11
|
import { renderCodeExecCall } from './renderers/code-exec.js';
|
|
12
12
|
import { renderEditCall, renderEditResult, renderReadCall, renderReadResult, renderWriteCall, renderWriteResult } from './renderers/file-ops.js';
|
|
@@ -136,7 +136,7 @@ export function lookupToolPresentation(toolName, tool) {
|
|
|
136
136
|
return renderTextResult(result, options.expanded, theme);
|
|
137
137
|
}
|
|
138
138
|
};
|
|
139
|
-
case
|
|
139
|
+
case EXA_WEB_SEARCH:
|
|
140
140
|
return {
|
|
141
141
|
renderCall(args, options, theme) {
|
|
142
142
|
return renderWebSearchCall(args, options.expanded, theme);
|
package/dist/tool-names.d.ts
CHANGED
|
@@ -36,7 +36,7 @@ export declare const GET_SESSION_SETTINGS: "get_session_settings";
|
|
|
36
36
|
export declare const UPDATE_SESSION_SETTINGS: "update_session_settings";
|
|
37
37
|
export declare const LOOP: "loop";
|
|
38
38
|
export declare const TAKE_SCREENSHOT: "take_screenshot";
|
|
39
|
-
export declare const
|
|
39
|
+
export declare const EXA_WEB_SEARCH: "exa_web_search";
|
|
40
40
|
export declare const REQUEST_CREDENTIAL: "request_credential";
|
|
41
41
|
export declare const REQUEST_OAUTH: "request_oauth";
|
|
42
42
|
//# sourceMappingURL=tool-names.d.ts.map
|
package/dist/tool-names.js
CHANGED
|
@@ -38,7 +38,7 @@ export const GET_SESSION_SETTINGS = 'get_session_settings';
|
|
|
38
38
|
export const UPDATE_SESSION_SETTINGS = 'update_session_settings';
|
|
39
39
|
export const LOOP = 'loop';
|
|
40
40
|
export const TAKE_SCREENSHOT = 'take_screenshot';
|
|
41
|
-
export const
|
|
41
|
+
export const EXA_WEB_SEARCH = 'exa_web_search';
|
|
42
42
|
// Credential / OAuth / file access interrupt tools
|
|
43
43
|
export const REQUEST_CREDENTIAL = 'request_credential';
|
|
44
44
|
export const REQUEST_OAUTH = 'request_oauth';
|
package/package.json
CHANGED
|
Binary file
|