@aria-cli/tools 1.0.9 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/package.json +9 -5
  2. package/src/__tests__/web-fetch-download.test.ts +0 -433
  3. package/src/__tests__/web-tools.test.ts +0 -619
  4. package/src/ask-user-interaction.ts +0 -33
  5. package/src/cache/web-cache.ts +0 -110
  6. package/src/definitions/arion.ts +0 -118
  7. package/src/definitions/browser/browser.ts +0 -502
  8. package/src/definitions/browser/index.ts +0 -5
  9. package/src/definitions/browser/pw-downloads.ts +0 -142
  10. package/src/definitions/browser/pw-interactions.ts +0 -282
  11. package/src/definitions/browser/pw-responses.ts +0 -98
  12. package/src/definitions/browser/pw-session.ts +0 -405
  13. package/src/definitions/browser/pw-shared.ts +0 -85
  14. package/src/definitions/browser/pw-snapshot.ts +0 -383
  15. package/src/definitions/browser/pw-state.ts +0 -101
  16. package/src/definitions/browser/types.ts +0 -203
  17. package/src/definitions/code-intelligence.ts +0 -526
  18. package/src/definitions/core.ts +0 -118
  19. package/src/definitions/delegation.ts +0 -567
  20. package/src/definitions/deploy.ts +0 -73
  21. package/src/definitions/filesystem.ts +0 -217
  22. package/src/definitions/frg.ts +0 -67
  23. package/src/definitions/index.ts +0 -28
  24. package/src/definitions/memory.ts +0 -150
  25. package/src/definitions/messaging.ts +0 -734
  26. package/src/definitions/meta.ts +0 -392
  27. package/src/definitions/network.ts +0 -179
  28. package/src/definitions/outlook.ts +0 -318
  29. package/src/definitions/patch/apply-patch.ts +0 -235
  30. package/src/definitions/patch/fuzzy-match.ts +0 -217
  31. package/src/definitions/patch/index.ts +0 -1
  32. package/src/definitions/patch/patch-parser.ts +0 -297
  33. package/src/definitions/patch/sandbox-paths.ts +0 -129
  34. package/src/definitions/process/index.ts +0 -5
  35. package/src/definitions/process/process-registry.ts +0 -303
  36. package/src/definitions/process/process.ts +0 -456
  37. package/src/definitions/process/pty-keys.ts +0 -298
  38. package/src/definitions/process/session-slug.ts +0 -147
  39. package/src/definitions/quip.ts +0 -225
  40. package/src/definitions/search.ts +0 -67
  41. package/src/definitions/session-history.ts +0 -79
  42. package/src/definitions/shell.ts +0 -202
  43. package/src/definitions/slack.ts +0 -211
  44. package/src/definitions/web.ts +0 -119
  45. package/src/executors/apply-patch.ts +0 -1035
  46. package/src/executors/arion.ts +0 -199
  47. package/src/executors/code-intelligence.ts +0 -1179
  48. package/src/executors/deploy.ts +0 -1066
  49. package/src/executors/filesystem.ts +0 -1428
  50. package/src/executors/frg-freshness.ts +0 -743
  51. package/src/executors/frg.ts +0 -394
  52. package/src/executors/index.ts +0 -280
  53. package/src/executors/learning-meta.ts +0 -1367
  54. package/src/executors/lsp-client.ts +0 -355
  55. package/src/executors/memory.ts +0 -978
  56. package/src/executors/meta.ts +0 -293
  57. package/src/executors/process-registry.ts +0 -570
  58. package/src/executors/pty-session-store.ts +0 -43
  59. package/src/executors/pty.ts +0 -342
  60. package/src/executors/restart.ts +0 -133
  61. package/src/executors/search-freshness.ts +0 -249
  62. package/src/executors/search-types.ts +0 -98
  63. package/src/executors/search.ts +0 -89
  64. package/src/executors/self-diagnose.ts +0 -552
  65. package/src/executors/session-history.ts +0 -435
  66. package/src/executors/shell-safety.ts +0 -519
  67. package/src/executors/shell.ts +0 -1243
  68. package/src/executors/utils.ts +0 -40
  69. package/src/executors/web.ts +0 -786
  70. package/src/extraction/content-extraction.ts +0 -281
  71. package/src/extraction/index.ts +0 -5
  72. package/src/headless-control-contract.ts +0 -1149
  73. package/src/index.ts +0 -788
  74. package/src/local-control-http-auth.ts +0 -2
  75. package/src/mcp/client.ts +0 -218
  76. package/src/mcp/connection.ts +0 -568
  77. package/src/mcp/index.ts +0 -11
  78. package/src/mcp/jsonrpc.ts +0 -195
  79. package/src/mcp/types.ts +0 -199
  80. package/src/network-control-adapter.ts +0 -88
  81. package/src/network-runtime/address-types.ts +0 -218
  82. package/src/network-runtime/db-owner-fencing.ts +0 -91
  83. package/src/network-runtime/delivery-receipts.ts +0 -372
  84. package/src/network-runtime/direct-endpoint-authority.ts +0 -35
  85. package/src/network-runtime/index.ts +0 -316
  86. package/src/network-runtime/local-control-contract.ts +0 -784
  87. package/src/network-runtime/node-store-contract.ts +0 -46
  88. package/src/network-runtime/pair-route-contract.ts +0 -97
  89. package/src/network-runtime/peer-capabilities.ts +0 -48
  90. package/src/network-runtime/peer-principal-ref.ts +0 -20
  91. package/src/network-runtime/peer-state-machine.ts +0 -160
  92. package/src/network-runtime/protocol-schemas.ts +0 -265
  93. package/src/network-runtime/runtime-bootstrap-contract.ts +0 -83
  94. package/src/outlook/desktop-session.ts +0 -409
  95. package/src/policy.ts +0 -171
  96. package/src/providers/brave.ts +0 -80
  97. package/src/providers/duckduckgo.ts +0 -199
  98. package/src/providers/exa.ts +0 -85
  99. package/src/providers/firecrawl.ts +0 -77
  100. package/src/providers/index.ts +0 -8
  101. package/src/providers/jina.ts +0 -70
  102. package/src/providers/router.ts +0 -121
  103. package/src/providers/search-provider.ts +0 -74
  104. package/src/providers/tavily.ts +0 -74
  105. package/src/quip/desktop-session.ts +0 -435
  106. package/src/registry/index.ts +0 -1
  107. package/src/registry/registry.ts +0 -905
  108. package/src/runtime-socket-local-control-client.ts +0 -632
  109. package/src/security/dns-normalization.ts +0 -34
  110. package/src/security/dns-pinning.ts +0 -138
  111. package/src/security/external-content.ts +0 -129
  112. package/src/security/ssrf.ts +0 -207
  113. package/src/slack/desktop-session.ts +0 -493
  114. package/src/tool-factory.ts +0 -91
  115. package/src/types.ts +0 -1341
  116. package/src/utils/retry.ts +0 -163
  117. package/src/utils/safe-parse-json.ts +0 -176
  118. package/src/utils/url.ts +0 -20
  119. package/tests/benchmarks/registry.bench.ts +0 -57
  120. package/tests/cache/web-cache.test.ts +0 -147
  121. package/tests/critical-integration.test.ts +0 -1465
  122. package/tests/definitions/apply-patch.test.ts +0 -586
  123. package/tests/definitions/browser.test.ts +0 -495
  124. package/tests/definitions/delegation-pause-resume.test.ts +0 -758
  125. package/tests/definitions/execution.test.ts +0 -671
  126. package/tests/definitions/messaging-inbox-scope.test.ts +0 -229
  127. package/tests/definitions/messaging.test.ts +0 -1468
  128. package/tests/definitions/outlook.test.ts +0 -30
  129. package/tests/definitions/process.test.ts +0 -469
  130. package/tests/definitions/slack.test.ts +0 -28
  131. package/tests/definitions/tool-inventory.test.ts +0 -218
  132. package/tests/e2e/delegation-quest-orchestration.e2e.test.ts +0 -433
  133. package/tests/e2e/memory-tool-discovery-contract.e2e.test.ts +0 -81
  134. package/tests/executors/apply-patch.test.ts +0 -538
  135. package/tests/executors/arion.test.ts +0 -309
  136. package/tests/executors/conversation-primitives.test.ts +0 -250
  137. package/tests/executors/deploy.test.ts +0 -746
  138. package/tests/executors/filesystem-tools.test.ts +0 -357
  139. package/tests/executors/filesystem.test.ts +0 -959
  140. package/tests/executors/frg-freshness.test.ts +0 -136
  141. package/tests/executors/frg-merge.test.ts +0 -70
  142. package/tests/executors/frg-session-content.test.ts +0 -40
  143. package/tests/executors/frg.test.ts +0 -56
  144. package/tests/executors/memory-bugfixes.test.ts +0 -257
  145. package/tests/executors/memory-real-memoria.integration.test.ts +0 -316
  146. package/tests/executors/memory.test.ts +0 -853
  147. package/tests/executors/meta-tools.test.ts +0 -411
  148. package/tests/executors/meta.test.ts +0 -683
  149. package/tests/executors/path-containment.test.ts +0 -51
  150. package/tests/executors/process-registry.test.ts +0 -505
  151. package/tests/executors/pty.test.ts +0 -664
  152. package/tests/executors/quest-security.test.ts +0 -249
  153. package/tests/executors/read-file-media.test.ts +0 -230
  154. package/tests/executors/recall-knowledge-schema.test.ts +0 -209
  155. package/tests/executors/recall-tags.test.ts +0 -278
  156. package/tests/executors/remember-null-safety.contract.test.ts +0 -41
  157. package/tests/executors/restart.test.ts +0 -67
  158. package/tests/executors/search-unified.test.ts +0 -381
  159. package/tests/executors/session-history.test.ts +0 -340
  160. package/tests/executors/session-transcript.test.ts +0 -561
  161. package/tests/executors/shell-abort.test.ts +0 -416
  162. package/tests/executors/shell-env-blocklist.test.ts +0 -648
  163. package/tests/executors/shell-env-process.test.ts +0 -245
  164. package/tests/executors/shell-process-registry.test.ts +0 -334
  165. package/tests/executors/shell-tools.test.ts +0 -393
  166. package/tests/executors/shell.test.ts +0 -690
  167. package/tests/executors/web-abort-vs-timeout.test.ts +0 -213
  168. package/tests/executors/web-integration.test.ts +0 -633
  169. package/tests/executors/web-symlink.test.ts +0 -18
  170. package/tests/executors/web.test.ts +0 -1400
  171. package/tests/executors/write-stdin.test.ts +0 -145
  172. package/tests/extraction/content-extraction.test.ts +0 -153
  173. package/tests/guards/tools-default-test-lane.integration.test.ts +0 -21
  174. package/tests/guards/tools-package-test-commands.e2e.test.ts +0 -43
  175. package/tests/guards/tools-test-lane-manifest.contract.test.ts +0 -76
  176. package/tests/guards/tools-vitest-workspace-alias.contract.test.ts +0 -63
  177. package/tests/helpers/async-waits.ts +0 -53
  178. package/tests/integration/headless-control-contract.integration.test.ts +0 -153
  179. package/tests/integration/memory-tool-schema-parity.integration.test.ts +0 -67
  180. package/tests/integration/meta-tools-round-trip.integration.test.ts +0 -506
  181. package/tests/integration/quest-round-trip.test.ts +0 -303
  182. package/tests/integration/registry-executor-flow.test.ts +0 -85
  183. package/tests/integration.test.ts +0 -177
  184. package/tests/loading-tier.test.ts +0 -126
  185. package/tests/mcp/client-reconnect.test.ts +0 -267
  186. package/tests/mcp/connection.test.ts +0 -846
  187. package/tests/mcp/injectable-logger.test.ts +0 -83
  188. package/tests/mcp/jsonrpc.test.ts +0 -109
  189. package/tests/mcp/lifecycle.test.ts +0 -879
  190. package/tests/network-runtime/address-types.contract.test.ts +0 -143
  191. package/tests/network-runtime/continuity-bind-schema.contract.test.ts +0 -203
  192. package/tests/network-runtime/local-control-contract.test.ts +0 -869
  193. package/tests/network-runtime/local-control-invite-token.contract.test.ts +0 -146
  194. package/tests/network-runtime/node-store-contract.test.ts +0 -11
  195. package/tests/network-runtime/pair-protocol-nodeid.contract.test.ts +0 -15
  196. package/tests/network-runtime/peer-state-machine.contract.test.ts +0 -148
  197. package/tests/network-runtime/protocol-schemas.contract.test.ts +0 -512
  198. package/tests/network-runtime/relay-pending-nodeid.contract.test.ts +0 -62
  199. package/tests/network-runtime/runtime-bootstrap-contract.test.ts +0 -227
  200. package/tests/network-runtime/runtime-socket-local-control-client.test.ts +0 -621
  201. package/tests/network-runtime/wait-for-message-script.test.ts +0 -288
  202. package/tests/parallel.test.ts +0 -71
  203. package/tests/policy.test.ts +0 -184
  204. package/tests/print-default-test-lane.ts +0 -14
  205. package/tests/print-test-lane-manifest.ts +0 -22
  206. package/tests/providers/brave.test.ts +0 -159
  207. package/tests/providers/duckduckgo.test.ts +0 -207
  208. package/tests/providers/exa.test.ts +0 -175
  209. package/tests/providers/firecrawl.test.ts +0 -168
  210. package/tests/providers/jina.test.ts +0 -144
  211. package/tests/providers/router.test.ts +0 -328
  212. package/tests/providers/tavily.test.ts +0 -165
  213. package/tests/registry/discovery.test.ts +0 -154
  214. package/tests/registry/injectable-logger.test.ts +0 -230
  215. package/tests/registry/input-validation.test.ts +0 -361
  216. package/tests/registry/interface-completeness.test.ts +0 -85
  217. package/tests/registry/mcp-integration.test.ts +0 -103
  218. package/tests/registry/mcp-read-only-hint.test.ts +0 -60
  219. package/tests/registry/memoria-discovery.test.ts +0 -390
  220. package/tests/registry/nested-validation.test.ts +0 -283
  221. package/tests/registry/pseudo-tool-filtering.test.ts +0 -258
  222. package/tests/registry/registration-lifecycle.test.ts +0 -133
  223. package/tests/registry-validation.test.ts +0 -424
  224. package/tests/registry.test.ts +0 -460
  225. package/tests/security/dns-pinning.test.ts +0 -162
  226. package/tests/security/external-content.test.ts +0 -144
  227. package/tests/security/ssrf.test.ts +0 -118
  228. package/tests/shell-safety-integration.test.ts +0 -32
  229. package/tests/shell-safety.test.ts +0 -365
  230. package/tests/slack/desktop-session.test.ts +0 -50
  231. package/tests/test-lane-manifest.ts +0 -440
  232. package/tests/test-utils.ts +0 -27
  233. package/tests/tool-factory.test.ts +0 -188
  234. package/tests/utils/retry.test.ts +0 -231
  235. package/tests/utils/url.test.ts +0 -63
  236. package/tsconfig.cjs.json +0 -24
  237. package/tsconfig.json +0 -12
  238. package/vitest.config.ts +0 -55
  239. package/vitest.e2e.config.ts +0 -24
  240. package/vitest.integration.config.ts +0 -24
  241. package/vitest.native.config.ts +0 -24
@@ -1,67 +0,0 @@
1
- /**
2
- * Native indexed regex search tool definition.
3
- *
4
- * Uses @aria-cli/search (Rust napi-rs addon) for sub-millisecond indexed search.
5
- * Registered alongside (not replacing) the existing grep tool.
6
- */
7
-
8
- import type { JSONSchema7 } from "json-schema";
9
- import type { Tool } from "../types.js";
10
- import { executeSearch } from "../executors/search.js";
11
-
12
- export const searchTool: Tool = {
13
- name: "grep",
14
- description:
15
- "Search for patterns in files using regular expressions. Indexed for sub-millisecond speed. Builds index automatically on first use. Supports regex, literal strings, file type filters, and glob patterns.",
16
- category: "filesystem",
17
- parameters: {
18
- type: "object",
19
- properties: {
20
- pattern: {
21
- type: "string",
22
- description: "Regex pattern to search for. Use literal: true for exact string matching.",
23
- },
24
- directory: {
25
- type: "string",
26
- description: "Directory to search in (default: current working directory)",
27
- default: ".",
28
- },
29
- fileGlob: {
30
- type: "string",
31
- description: "Glob pattern to filter files (e.g. '*.ts', 'src/**/*.rs')",
32
- },
33
- fileType: {
34
- type: "string",
35
- description:
36
- "File extension filter (e.g. 'ts', 'rs', 'py'). Simpler than glob for single types.",
37
- },
38
- caseSensitive: {
39
- type: "boolean",
40
- description: "Case-sensitive matching (default: true)",
41
- default: true,
42
- },
43
- literal: {
44
- type: "boolean",
45
- description: "Treat pattern as a literal string, not regex (default: false)",
46
- default: false,
47
- },
48
- maxResults: {
49
- type: "number",
50
- description: "Maximum number of matches to return (default: 1000)",
51
- default: 1000,
52
- },
53
- context: {
54
- type: "number",
55
- description: "Number of context lines before and after each match (default: 0)",
56
- default: 0,
57
- },
58
- },
59
- required: ["pattern"],
60
- } as JSONSchema7,
61
- riskLevel: "safe",
62
- isReadOnly: true,
63
- loadingTier: "always",
64
- execute: executeSearch,
65
- };
66
-
67
- export const SEARCH_TOOL_DEFINITIONS: Tool[] = [searchTool];
@@ -1,79 +0,0 @@
1
- /**
2
- * Session History tool definitions
3
- *
4
- * Tools: session_history (1 tool with multi-action pattern)
5
- *
6
- * Provides list, search, get, current, stats, delete, and set_title
7
- * actions against the SessionHistory SQLite database.
8
- */
9
-
10
- import type { JSONSchema7 } from "json-schema";
11
- import type { Tool, ToolContext, ToolResult } from "../types.js";
12
- import { executeSessionHistory } from "../executors/session-history.js";
13
-
14
- const sessionHistory: Tool = {
15
- name: "session_history",
16
- description:
17
- "List, search, and manage conversation session history. Actions: " +
18
- "'list' shows recent sessions, 'search' finds sessions by message content (full-text search), " +
19
- "'get' retrieves a full session transcript, 'current' shows current session info, " +
20
- "'stats' shows session statistics, 'delete' removes a session, " +
21
- "'set_title' renames a session.",
22
- category: "memory",
23
- parameters: {
24
- type: "object",
25
- properties: {
26
- action: {
27
- type: "string",
28
- enum: ["list", "search", "get", "current", "stats", "delete", "set_title"],
29
- description: "Action to perform",
30
- },
31
- query: {
32
- type: "string",
33
- description: "Search query (required for 'search' action)",
34
- },
35
- sessionId: {
36
- type: "string",
37
- description:
38
- "Session ID or prefix — 8+ chars for prefix match, full UUID for exact match (required for 'get', 'delete', 'set_title')",
39
- },
40
- title: {
41
- type: "string",
42
- description: "New title (required for 'set_title' action)",
43
- },
44
- limit: {
45
- type: "number",
46
- description: "Maximum number of results to return (default 20)",
47
- default: 20,
48
- },
49
- offset: {
50
- type: "number",
51
- description: "Pagination offset (default 0)",
52
- default: 0,
53
- },
54
- messageLimit: {
55
- type: "number",
56
- description: "Maximum messages to return per session for 'get' action (default 50)",
57
- default: 50,
58
- },
59
- },
60
- required: ["action"],
61
- } as JSONSchema7,
62
- riskLevel: "moderate",
63
- isReadOnly: false,
64
- loadingTier: "deferred",
65
- // Only 'delete' needs confirmation — all other actions are safe
66
- skipApprovalForInput: (input: unknown): boolean => {
67
- const i = input as { action?: string } | undefined;
68
- return i?.action !== "delete";
69
- },
70
- execute: (input: Record<string, unknown>, ctx: ToolContext): Promise<ToolResult> => {
71
- return executeSessionHistory(
72
- input as unknown as Parameters<typeof executeSessionHistory>[0],
73
- ctx,
74
- );
75
- },
76
- };
77
-
78
- /** Session History tool definitions (1) */
79
- export const SESSION_HISTORY_TOOL_DEFINITIONS: Tool[] = [sessionHistory];
@@ -1,202 +0,0 @@
1
- /**
2
- * Shell tool definitions
3
- *
4
- * Tools: bash, exec, spawn, kill, write_stdin, list_processes, wait_process (7 tools)
5
- */
6
-
7
- import type { JSONSchema7 } from "json-schema";
8
- import type { Tool } from "../types.js";
9
- import {
10
- executeBash,
11
- executeExec,
12
- executeSpawn,
13
- executeKill,
14
- executeWriteStdin,
15
- } from "../executors/index.js";
16
- import { executeListProcesses, executeWaitProcess } from "../executors/shell.js";
17
- import { classifyCommand } from "../executors/shell-safety.js";
18
-
19
- const bash: Tool = {
20
- name: "bash",
21
- description: "Execute a shell command in a bash environment. Returns stdout and stderr.",
22
- category: "shell",
23
- parameters: {
24
- type: "object",
25
- properties: {
26
- command: { type: "string", description: "Command to execute" },
27
- cwd: { type: "string", description: "Working directory" },
28
- env: { type: "object", description: "Environment variables" },
29
- timeout: { type: "number", description: "Timeout in milliseconds" },
30
- },
31
- required: ["command"],
32
- } as JSONSchema7,
33
- riskLevel: "dangerous",
34
- requiresConfirmation: true,
35
- isReadOnly: false,
36
- loadingTier: "always",
37
- skipApprovalForInput: (input: unknown) => {
38
- const cmd = (input as { command?: string })?.command;
39
- return typeof cmd === "string" && classifyCommand(cmd) === "safe";
40
- },
41
- execute: executeBash,
42
- };
43
-
44
- const exec: Tool = {
45
- name: "exec",
46
- description:
47
- "Execute a program directly without shell interpretation. Safer than bash for untrusted input.",
48
- category: "shell",
49
- parameters: {
50
- type: "object",
51
- properties: {
52
- program: { type: "string", description: "Program to execute" },
53
- args: {
54
- type: "array",
55
- items: { type: "string" },
56
- description: "Command arguments",
57
- },
58
- cwd: { type: "string", description: "Working directory" },
59
- env: { type: "object", description: "Environment variables" },
60
- timeout: { type: "number", description: "Timeout in milliseconds" },
61
- },
62
- required: ["program"],
63
- } as JSONSchema7,
64
- riskLevel: "dangerous",
65
- isReadOnly: false,
66
- loadingTier: "always",
67
- execute: executeExec,
68
- };
69
-
70
- const spawn: Tool = {
71
- name: "spawn",
72
- description:
73
- "Start a long-running process in the background. Returns a process ID for management.",
74
- category: "shell",
75
- parameters: {
76
- type: "object",
77
- properties: {
78
- program: { type: "string", description: "Program to spawn" },
79
- args: {
80
- type: "array",
81
- items: { type: "string" },
82
- description: "Command arguments",
83
- },
84
- cwd: { type: "string", description: "Working directory" },
85
- env: { type: "object", description: "Environment variables" },
86
- interactive: {
87
- type: "boolean",
88
- description: "Start as interactive PTY session (enables write_stdin). Default: false",
89
- default: false,
90
- },
91
- },
92
- required: ["program"],
93
- } as JSONSchema7,
94
- riskLevel: "dangerous",
95
- isReadOnly: false,
96
- loadingTier: "always",
97
- execute: executeSpawn,
98
- };
99
-
100
- const kill: Tool = {
101
- name: "kill",
102
- description: "Terminate a running process by its process ID.",
103
- category: "shell",
104
- parameters: {
105
- type: "object",
106
- properties: {
107
- pid: { type: "number", description: "Process ID to kill" },
108
- signal: {
109
- type: "string",
110
- description: "Signal to send",
111
- default: "SIGTERM",
112
- },
113
- },
114
- required: ["pid"],
115
- } as JSONSchema7,
116
- riskLevel: "dangerous",
117
- requiresConfirmation: true,
118
- isReadOnly: false,
119
- loadingTier: "always",
120
- execute: executeKill,
121
- };
122
-
123
- const write_stdin: Tool = {
124
- name: "write_stdin",
125
- description:
126
- "Send input to an interactive PTY session by PID. Use after spawning a process with interactive=true. Returns recent output from the session.",
127
- category: "shell",
128
- parameters: {
129
- type: "object",
130
- properties: {
131
- pid: { type: "number", description: "PID of the interactive process" },
132
- input: { type: "string", description: "Input string to send to the process" },
133
- timeout: {
134
- type: "number",
135
- description: "Milliseconds to wait for output after writing (max 30000)",
136
- },
137
- },
138
- required: ["pid", "input"],
139
- } as JSONSchema7,
140
- riskLevel: "moderate",
141
- isReadOnly: false,
142
- loadingTier: "always",
143
- execute: executeWriteStdin,
144
- };
145
-
146
- const list_processes: Tool = {
147
- name: "list_processes",
148
- description:
149
- "List tracked shell processes started in this session with metadata and runtime status.",
150
- category: "shell",
151
- parameters: {
152
- type: "object",
153
- properties: {
154
- includeExited: {
155
- type: "boolean",
156
- description: "Include recently exited processes from registry history (default: false).",
157
- default: false,
158
- },
159
- },
160
- required: [],
161
- } as JSONSchema7,
162
- riskLevel: "safe",
163
- isReadOnly: true,
164
- loadingTier: "always",
165
- execute: executeListProcesses,
166
- };
167
-
168
- const wait_process: Tool = {
169
- name: "wait_process",
170
- description: "Wait for a tracked process to exit and return exit metadata. Fails on timeout.",
171
- category: "shell",
172
- parameters: {
173
- type: "object",
174
- properties: {
175
- pid: { type: "number", description: "PID of the process to wait for" },
176
- timeoutMs: {
177
- type: "number",
178
- description: "Maximum milliseconds to wait (max 300000, default 30000).",
179
- },
180
- timeout: {
181
- type: "number",
182
- description: "Deprecated alias for timeoutMs.",
183
- },
184
- },
185
- required: ["pid"],
186
- } as JSONSchema7,
187
- riskLevel: "safe",
188
- isReadOnly: true,
189
- loadingTier: "always",
190
- execute: executeWaitProcess,
191
- };
192
-
193
- /** Shell tool definitions (7) */
194
- export const SHELL_TOOL_DEFINITIONS: Tool[] = [
195
- bash,
196
- exec,
197
- spawn,
198
- kill,
199
- write_stdin,
200
- list_processes,
201
- wait_process,
202
- ];
@@ -1,211 +0,0 @@
1
- import type { JSONSchema7 } from "json-schema";
2
- import type { Tool } from "../types.js";
3
- import { createSlackDesktopClient } from "../slack/desktop-session.js";
4
-
5
- type CheckSlackMessagesInput = {
6
- teamId?: string;
7
- channel?: string;
8
- limit?: number;
9
- threadTs?: string;
10
- };
11
-
12
- type SendSlackMessageInput = {
13
- teamId?: string;
14
- channel?: string;
15
- text?: string;
16
- threadTs?: string;
17
- };
18
-
19
- type ReactSlackMessageInput = {
20
- teamId?: string;
21
- channel?: string;
22
- timestamp?: string;
23
- name?: string;
24
- };
25
-
26
- const check_slack_messages: Tool = {
27
- name: "check_slack_messages",
28
- description:
29
- "Read recent Slack messages from a channel or DM using the local Slack Desktop session on this machine.",
30
- category: "messaging",
31
- parameters: {
32
- type: "object",
33
- properties: {
34
- teamId: {
35
- type: "string",
36
- description:
37
- "Optional Slack team id to target when the local Slack Desktop app is signed into multiple workspaces.",
38
- },
39
- channel: {
40
- type: "string",
41
- description: "Slack conversation id (C/G/D...) or channel name.",
42
- },
43
- limit: {
44
- type: "number",
45
- description: "Maximum number of messages to return (default 20, max 100).",
46
- default: 20,
47
- },
48
- threadTs: {
49
- type: "string",
50
- description:
51
- "Optional thread timestamp. When provided, reads thread replies instead of the root channel history.",
52
- },
53
- },
54
- required: ["channel"],
55
- } as JSONSchema7,
56
- riskLevel: "safe",
57
- isReadOnly: true,
58
- loadingTier: "always",
59
- execute: async (input: unknown) => {
60
- const typedInput = input as CheckSlackMessagesInput;
61
- const client = await createSlackDesktopClient({
62
- teamId: typeof typedInput.teamId === "string" ? typedInput.teamId : undefined,
63
- });
64
- try {
65
- const result = await client.listMessages({
66
- channel: String(typedInput.channel ?? ""),
67
- limit: typeof typedInput.limit === "number" ? typedInput.limit : 20,
68
- threadTs: typeof typedInput.threadTs === "string" ? typedInput.threadTs : undefined,
69
- });
70
-
71
- return {
72
- success: true,
73
- message: `Fetched ${result.messages.length} Slack messages from ${result.channelId}.`,
74
- data: result,
75
- };
76
- } catch (error) {
77
- return {
78
- success: false,
79
- message: error instanceof Error ? error.message : "Slack read failed.",
80
- };
81
- } finally {
82
- await client.close();
83
- }
84
- },
85
- };
86
-
87
- const send_slack_message: Tool = {
88
- name: "send_slack_message",
89
- description:
90
- "Send a Slack message through the local Slack Desktop session on this machine. Requires confirmation because it posts externally.",
91
- category: "messaging",
92
- parameters: {
93
- type: "object",
94
- properties: {
95
- teamId: {
96
- type: "string",
97
- description:
98
- "Optional Slack team id to target when the local Slack Desktop app is signed into multiple workspaces.",
99
- },
100
- channel: {
101
- type: "string",
102
- description: "Slack conversation id (C/G/D...) or channel name.",
103
- },
104
- text: {
105
- type: "string",
106
- description: "Message text to send.",
107
- },
108
- threadTs: {
109
- type: "string",
110
- description: "Optional thread timestamp to reply inside an existing thread.",
111
- },
112
- },
113
- required: ["channel", "text"],
114
- } as JSONSchema7,
115
- riskLevel: "dangerous",
116
- requiresConfirmation: true,
117
- isReadOnly: false,
118
- loadingTier: "always",
119
- execute: async (input: unknown) => {
120
- const typedInput = input as SendSlackMessageInput;
121
- const client = await createSlackDesktopClient({
122
- teamId: typeof typedInput.teamId === "string" ? typedInput.teamId : undefined,
123
- });
124
- try {
125
- const result = await client.sendMessage({
126
- channel: String(typedInput.channel ?? ""),
127
- text: String(typedInput.text ?? ""),
128
- threadTs: typeof typedInput.threadTs === "string" ? typedInput.threadTs : undefined,
129
- });
130
-
131
- return {
132
- success: true,
133
- message: `Sent Slack message to ${result.channelId}.`,
134
- data: result,
135
- };
136
- } catch (error) {
137
- return {
138
- success: false,
139
- message: error instanceof Error ? error.message : "Slack send failed.",
140
- };
141
- } finally {
142
- await client.close();
143
- }
144
- },
145
- };
146
-
147
- const react_slack_message: Tool = {
148
- name: "react_slack_message",
149
- description:
150
- "Add an emoji reaction to a Slack message using the local Slack Desktop session on this machine. Requires confirmation because it modifies external state.",
151
- category: "messaging",
152
- parameters: {
153
- type: "object",
154
- properties: {
155
- teamId: {
156
- type: "string",
157
- description:
158
- "Optional Slack team id to target when the local Slack Desktop app is signed into multiple workspaces.",
159
- },
160
- channel: {
161
- type: "string",
162
- description: "Slack conversation id (C/G/D...) or channel name.",
163
- },
164
- timestamp: {
165
- type: "string",
166
- description: "Message timestamp to react to.",
167
- },
168
- name: {
169
- type: "string",
170
- description: "Emoji name without colons (e.g., thumbsup, eyes, white_check_mark).",
171
- },
172
- },
173
- required: ["channel", "timestamp", "name"],
174
- } as JSONSchema7,
175
- riskLevel: "dangerous",
176
- requiresConfirmation: true,
177
- isReadOnly: false,
178
- loadingTier: "always",
179
- execute: async (input: unknown) => {
180
- const typedInput = input as ReactSlackMessageInput;
181
- const client = await createSlackDesktopClient({
182
- teamId: typeof typedInput.teamId === "string" ? typedInput.teamId : undefined,
183
- });
184
- try {
185
- const result = await client.addReaction({
186
- channel: String(typedInput.channel ?? ""),
187
- timestamp: String(typedInput.timestamp ?? ""),
188
- name: String(typedInput.name ?? ""),
189
- });
190
-
191
- return {
192
- success: true,
193
- message: `Added :${typedInput.name}: reaction in ${result.channelId}.`,
194
- data: result,
195
- };
196
- } catch (error) {
197
- return {
198
- success: false,
199
- message: error instanceof Error ? error.message : "Slack reaction failed.",
200
- };
201
- } finally {
202
- await client.close();
203
- }
204
- },
205
- };
206
-
207
- export const SLACK_TOOL_DEFINITIONS = [
208
- check_slack_messages,
209
- send_slack_message,
210
- react_slack_message,
211
- ];
@@ -1,119 +0,0 @@
1
- /**
2
- * Web tool definitions
3
- *
4
- * Tools: web_search, web_fetch, browse (3 tools)
5
- */
6
-
7
- import type { JSONSchema7 } from "json-schema";
8
- import type { Tool } from "../types.js";
9
- import { executeWebSearch, executeWebFetch, executeBrowse } from "../executors/index.js";
10
-
11
- // web_search uses SearchProviderRouter with automatic provider selection
12
- const web_search: Tool = {
13
- name: "web_search",
14
- description:
15
- "Search the web for information. Auto-selects the best available search provider (Brave, Firecrawl, Exa, Tavily, Jina, or DuckDuckGo). Works without any API key via Jina/DuckDuckGo fallback. Set ARIA_SEARCH_PROVIDER to override.",
16
- category: "web",
17
- parameters: {
18
- type: "object",
19
- properties: {
20
- query: { type: "string", description: "Search query" },
21
- limit: {
22
- type: "number",
23
- description: "Maximum number of results",
24
- default: 10,
25
- },
26
- domains: {
27
- type: "array",
28
- items: { type: "string" },
29
- description: "Only include results from these domains",
30
- },
31
- excludeDomains: {
32
- type: "array",
33
- items: { type: "string" },
34
- description: "Exclude results from these domains",
35
- },
36
- topic: {
37
- type: "string",
38
- enum: ["general", "news"],
39
- description: "Search topic classification",
40
- },
41
- timeRange: {
42
- type: "string",
43
- enum: ["day", "week", "month", "year"],
44
- description: "Restrict results to a recent time window",
45
- },
46
- },
47
- required: ["query"],
48
- } as JSONSchema7,
49
- riskLevel: "moderate",
50
- isReadOnly: true,
51
- loadingTier: "always",
52
- execute: executeWebSearch,
53
- };
54
-
55
- const web_fetch: Tool = {
56
- name: "web_fetch",
57
- description:
58
- "Fetch the content of a web page. Returns the page content as text or structured data.",
59
- category: "web",
60
- parameters: {
61
- type: "object",
62
- properties: {
63
- url: { type: "string", description: "URL to fetch" },
64
- format: {
65
- type: "string",
66
- enum: ["text", "html", "json"],
67
- description: "Output format",
68
- default: "text",
69
- },
70
- headers: {
71
- type: "object",
72
- description: "Custom request headers",
73
- additionalProperties: { type: "string" },
74
- },
75
- timeoutMs: {
76
- type: "number",
77
- description: "Request timeout in milliseconds",
78
- default: 30_000,
79
- },
80
- maxSizeBytes: {
81
- type: "number",
82
- description: "Maximum response body size in bytes",
83
- default: 1 * 1024 * 1024,
84
- },
85
- },
86
- required: ["url"],
87
- } as JSONSchema7,
88
- riskLevel: "safe",
89
- isReadOnly: true,
90
- loadingTier: "always",
91
- execute: executeWebFetch,
92
- };
93
-
94
- // browse uses Readability + Turndown for structured markdown extraction
95
- const browse: Tool = {
96
- name: "browse",
97
- description:
98
- "Browse a web page and extract structured markdown content using Readability + Turndown. Returns the page title and markdown (up to 50K chars). Handles GitHub URL normalization and retry with backoff.",
99
- category: "web",
100
- parameters: {
101
- type: "object",
102
- properties: {
103
- url: { type: "string", description: "URL to browse" },
104
- timeoutMs: {
105
- type: "number",
106
- description: "Request timeout in milliseconds",
107
- default: 30_000,
108
- },
109
- },
110
- required: ["url"],
111
- } as JSONSchema7,
112
- riskLevel: "safe",
113
- isReadOnly: true,
114
- loadingTier: "always",
115
- execute: executeBrowse,
116
- };
117
-
118
- /** Web tool definitions (3) */
119
- export const WEB_TOOL_DEFINITIONS: Tool[] = [web_search, web_fetch, browse];