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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # Changelog
2
2
 
3
- ## [0.3.64]
3
+ ## [0.3.65]
4
4
 
5
5
  - **Fable is back**
6
6
  - **/goal mode** — Set a goal for longer-running work and have the agent auto-continue toward it across turns.
@@ -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 { WEB_SEARCH_TOOL_SUMMARY, createWebSearchTool, type WebSearchOperations, type WebSearchToolDetails, type WebSearchToolInput, type WebSearchToolOptions } from './web-search.js';
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
@@ -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 { WEB_SEARCH_TOOL_SUMMARY, createWebSearchTool } from './web-search.js';
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 WEB_SEARCH_TOOL_SUMMARY = "Batch web search up to 1000 queries, returning structured answers with sources";
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 { WEB_SEARCH } from '../../tool-names.js';
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 WEB_SEARCH_TOOL_SUMMARY = 'Batch web search up to 1000 queries, returning structured answers with sources';
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: WEB_SEARCH,
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, WEB_SEARCH;
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
- WEB_SEARCH = "web_search";
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: WEB_SEARCH,
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 WEB_SEARCH:
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" | "create_website" | "exa_web_search"> | import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"sandbox_llm" | "goal" | "loop" | "create_website" | "exa_web_search">, ...import("@sinclair/typebox").TLiteral<"sandbox_llm" | "goal" | "loop" | "create_website" | "exa_web_search">[]]>;
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, WEB_SEARCH, WRITE } from '../../../tool-names.js';
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 WEB_SEARCH:
139
+ case EXA_WEB_SEARCH:
140
140
  return {
141
141
  renderCall(args, options, theme) {
142
142
  return renderWebSearchCall(args, options.expanded, theme);
@@ -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 WEB_SEARCH: "web_search";
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
@@ -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 WEB_SEARCH = 'web_search';
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shortcutxl",
3
- "version": "0.3.64",
3
+ "version": "0.3.65",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
Binary file