@wrongstack/tools 0.2.0 → 0.3.1

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 (74) hide show
  1. package/README.md +1 -1
  2. package/dist/audit.js +1 -0
  3. package/dist/audit.js.map +1 -1
  4. package/dist/bash.js +1 -0
  5. package/dist/bash.js.map +1 -1
  6. package/dist/batch-tool-use.js +1 -0
  7. package/dist/batch-tool-use.js.map +1 -1
  8. package/dist/builtin.js +48 -1
  9. package/dist/builtin.js.map +1 -1
  10. package/dist/diff.js +1 -0
  11. package/dist/diff.js.map +1 -1
  12. package/dist/document.js +1 -0
  13. package/dist/document.js.map +1 -1
  14. package/dist/edit.js +1 -0
  15. package/dist/edit.js.map +1 -1
  16. package/dist/exec.js +1 -0
  17. package/dist/exec.js.map +1 -1
  18. package/dist/fetch.js +1 -0
  19. package/dist/fetch.js.map +1 -1
  20. package/dist/format.js +1 -0
  21. package/dist/format.js.map +1 -1
  22. package/dist/git.js +1 -0
  23. package/dist/git.js.map +1 -1
  24. package/dist/glob.js +1 -0
  25. package/dist/glob.js.map +1 -1
  26. package/dist/grep.js +18 -1
  27. package/dist/grep.js.map +1 -1
  28. package/dist/index.d.ts +1 -0
  29. package/dist/index.js +59 -2
  30. package/dist/index.js.map +1 -1
  31. package/dist/install.js +1 -0
  32. package/dist/install.js.map +1 -1
  33. package/dist/json.js +1 -0
  34. package/dist/json.js.map +1 -1
  35. package/dist/lint.js +1 -0
  36. package/dist/lint.js.map +1 -1
  37. package/dist/logs.js +1 -0
  38. package/dist/logs.js.map +1 -1
  39. package/dist/memory.js +2 -0
  40. package/dist/memory.js.map +1 -1
  41. package/dist/mode.js +1 -0
  42. package/dist/mode.js.map +1 -1
  43. package/dist/outdated.js +1 -0
  44. package/dist/outdated.js.map +1 -1
  45. package/dist/pack.d.ts +9 -0
  46. package/dist/pack.js +4216 -0
  47. package/dist/pack.js.map +1 -0
  48. package/dist/patch.js +1 -0
  49. package/dist/patch.js.map +1 -1
  50. package/dist/read.js +1 -0
  51. package/dist/read.js.map +1 -1
  52. package/dist/replace.js +1 -0
  53. package/dist/replace.js.map +1 -1
  54. package/dist/scaffold.js +1 -0
  55. package/dist/scaffold.js.map +1 -1
  56. package/dist/search.js +1 -0
  57. package/dist/search.js.map +1 -1
  58. package/dist/test.js +1 -0
  59. package/dist/test.js.map +1 -1
  60. package/dist/todo.js +1 -0
  61. package/dist/todo.js.map +1 -1
  62. package/dist/tool-help.js +1 -0
  63. package/dist/tool-help.js.map +1 -1
  64. package/dist/tool-search.js +1 -0
  65. package/dist/tool-search.js.map +1 -1
  66. package/dist/tool-use.js +1 -0
  67. package/dist/tool-use.js.map +1 -1
  68. package/dist/tree.js +1 -0
  69. package/dist/tree.js.map +1 -1
  70. package/dist/typecheck.js +1 -0
  71. package/dist/typecheck.js.map +1 -1
  72. package/dist/write.js +1 -0
  73. package/dist/write.js.map +1 -1
  74. package/package.json +6 -2
package/dist/index.js CHANGED
@@ -48,6 +48,7 @@ function isBinaryBuffer(buf) {
48
48
  var MAX_BYTES = 5 * 1024 * 1024;
49
49
  var readTool = {
50
50
  name: "read",
51
+ category: "Filesystem",
51
52
  description: "Read the contents of a file. Lines are 1-indexed and prefixed with line numbers.",
52
53
  usageHint: "Read a file before editing it. Returns lines numbered like ` 1\u2192content`. Use `offset` and `limit` for large files (default reads up to 2000 lines).",
53
54
  permission: "auto",
@@ -99,6 +100,7 @@ var readTool = {
99
100
  };
100
101
  var writeTool = {
101
102
  name: "write",
103
+ category: "Filesystem",
102
104
  description: "Write or overwrite a file. For existing files, prefer `edit` over `write`.",
103
105
  usageHint: "Use `write` for new files or full replacements. For partial edits use `edit`. Existing files must have been `read` first in this session.",
104
106
  permission: "confirm",
@@ -149,6 +151,7 @@ var writeTool = {
149
151
  };
150
152
  var editTool = {
151
153
  name: "edit",
154
+ category: "Filesystem",
152
155
  description: "Make a surgical edit by replacing exact text. Fails if `old_string` is not unique unless `replace_all` is true.",
153
156
  usageHint: "Always `read` the file first. `old_string` must be an EXACT match (whitespace included). If multiple matches exist, either narrow `old_string` with more context or set `replace_all: true`.",
154
157
  permission: "confirm",
@@ -302,6 +305,7 @@ function capSubject(line) {
302
305
  var DEFAULT_IGNORE = ["node_modules", ".git", "dist", "build", ".next", "coverage"];
303
306
  var replaceTool = {
304
307
  name: "replace",
308
+ category: "Transform",
305
309
  description: "Batch replace a pattern across multiple files matched by glob. Returns diff for each modified file.",
306
310
  usageHint: 'Use `glob` for broad patterns (e.g. "**/*.ts"). Set `dry_run: true` to preview without modifying. `files` can be a single path, comma-separated list, or glob pattern.',
307
311
  permission: "confirm",
@@ -491,6 +495,7 @@ async function globNative(pattern, base, extraGlob) {
491
495
  var DEFAULT_IGNORE2 = ["node_modules", ".git", "dist", "build", ".next", "coverage", ".turbo"];
492
496
  var globTool = {
493
497
  name: "glob",
498
+ category: "Filesystem",
494
499
  description: "Find files matching a glob pattern. Returns paths sorted by mtime (newest first).",
495
500
  usageHint: "Examples: `**/*.ts`, `src/**/*.test.ts`, `*.json`. Common dirs (node_modules, .git, dist) are ignored by default. Returns up to 1000 paths.",
496
501
  permission: "auto",
@@ -565,6 +570,7 @@ async function readGitignore(dir) {
565
570
  var DEFAULT_IGNORE3 = ["node_modules", ".git", "dist", "build", ".next", "coverage"];
566
571
  var grepTool = {
567
572
  name: "grep",
573
+ category: "Search",
568
574
  description: "Search file contents with a regex. Uses ripgrep when available.",
569
575
  usageHint: 'Pattern is regex. Use `output_mode: "content"` for matched lines, `"files_with_matches"` for paths, `"count"` for tallies. `glob` filters files (e.g. `*.ts`).',
570
576
  permission: "auto",
@@ -597,6 +603,10 @@ var grepTool = {
597
603
  const base = input.path ? safeResolve(input.path, ctx) : ctx.cwd;
598
604
  const mode = input.output_mode ?? "content";
599
605
  const limit = Math.max(1, Math.min(input.limit ?? 200, 2e3));
606
+ const validation = compileUserRegex(input.pattern, input.case_insensitive ? "i" : "");
607
+ if (!validation.ok) {
608
+ throw new Error(`grep: ${validation.reason}`);
609
+ }
600
610
  const rgAvailable = await detectRg(opts.signal);
601
611
  if (rgAvailable) {
602
612
  try {
@@ -630,11 +640,15 @@ async function* runRgStream(input, base, mode, limit, signal) {
630
640
  args.push("-n");
631
641
  if (input.context_lines) args.push("-C", String(input.context_lines));
632
642
  }
643
+ for (const ignored of DEFAULT_IGNORE3) {
644
+ args.push("--glob", `!${ignored}/**`, "--glob", `!**/${ignored}/**`);
645
+ }
633
646
  if (input.glob) args.push("--glob", input.glob);
634
647
  args.push("--", input.pattern, base);
635
648
  const matches = [];
636
649
  let buf = "";
637
650
  let totalLines = 0;
651
+ let totalCount = 0;
638
652
  let batchSinceFlush = 0;
639
653
  const FLUSH_AT = 16;
640
654
  const MAX_BUF_BYTES = 1e6;
@@ -691,6 +705,7 @@ async function* runRgStream(input, base, mode, limit, signal) {
691
705
  for (const line of ready.split("\n")) {
692
706
  if (!line) continue;
693
707
  totalLines++;
708
+ if (mode === "count") totalCount += parseRgCountLine(line);
694
709
  if (matches.length < limit) {
695
710
  matches.push(line);
696
711
  pendingBatch.push(line);
@@ -711,6 +726,7 @@ async function* runRgStream(input, base, mode, limit, signal) {
711
726
  for (const line of buf.split("\n")) {
712
727
  if (!line) continue;
713
728
  totalLines++;
729
+ if (mode === "count") totalCount += parseRgCountLine(line);
714
730
  if (matches.length < limit) {
715
731
  matches.push(line);
716
732
  pendingBatch.push(line);
@@ -729,12 +745,18 @@ async function* runRgStream(input, base, mode, limit, signal) {
729
745
  type: "final",
730
746
  output: {
731
747
  matches,
732
- count: totalLines,
748
+ count: mode === "count" ? totalCount : totalLines,
733
749
  truncated: totalLines > limit || bufOverflow,
734
750
  used: "rg"
735
751
  }
736
752
  };
737
753
  }
754
+ function parseRgCountLine(line) {
755
+ const idx = line.lastIndexOf(":");
756
+ if (idx === -1) return 0;
757
+ const n = Number.parseInt(line.slice(idx + 1), 10);
758
+ return Number.isFinite(n) ? n : 0;
759
+ }
738
760
  async function runNative(input, base, mode, limit, signal) {
739
761
  const flags = input.case_insensitive ? "i" : "";
740
762
  const compiled = compileUserRegex(input.pattern, flags);
@@ -815,6 +837,7 @@ var STREAM_FLUSH_INTERVAL_MS = 200;
815
837
  var STREAM_FLUSH_BYTES = 4 * 1024;
816
838
  var bashTool = {
817
839
  name: "bash",
840
+ category: "Shell",
818
841
  description: "Run a shell command. stdout and stderr are merged.",
819
842
  usageHint: "Runs via `bash -c` (or `cmd /c` on Windows). Cwd is the project root. Default timeout 30s. Output truncated from the middle if oversized. Use for git, npm, builds, tests.",
820
843
  permission: "confirm",
@@ -1038,6 +1061,7 @@ var MAX_OUTPUT2 = 2e5;
1038
1061
  var TIMEOUT_MS = 3e4;
1039
1062
  var execTool = {
1040
1063
  name: "exec",
1064
+ category: "Shell",
1041
1065
  description: "Restricted shell that only runs pre-approved commands with constrained arguments. Safer alternative to `bash`.",
1042
1066
  usageHint: "Set `command` (must be in allowlist). `args` passed through. For arbitrary shell access use the `bash` tool instead.",
1043
1067
  permission: "confirm",
@@ -1183,6 +1207,7 @@ async function fetchWithRedirectLimit(url, maxRedirects, signal) {
1183
1207
  }
1184
1208
  var fetchTool = {
1185
1209
  name: "fetch",
1210
+ category: "Network",
1186
1211
  description: "Fetch the contents of a URL. HTML is converted to markdown by default.",
1187
1212
  usageHint: "HTTPS only by default. Localhost and RFC1918 ranges blocked unless WRONGSTACK_FETCH_ALLOW_PRIVATE=1. Max 5 redirects, 20s timeout, 128KB cap.",
1188
1213
  permission: "confirm",
@@ -1434,6 +1459,7 @@ var MAX_RESULTS = 50;
1434
1459
  var TIMEOUT_MS3 = 15e3;
1435
1460
  var searchTool = {
1436
1461
  name: "search",
1462
+ category: "Search",
1437
1463
  description: "Search the web for information. Returns title, URL, and snippet for each result.",
1438
1464
  usageHint: "Set `num_results` (1-50, default 10). Use `source` to pick engine: duckduckgo (default), google, bing.",
1439
1465
  permission: "confirm",
@@ -1644,6 +1670,7 @@ function stripTags2(html) {
1644
1670
  // src/todo.ts
1645
1671
  var todoTool = {
1646
1672
  name: "todo",
1673
+ category: "Session",
1647
1674
  description: "Replace the current todo list with a new set of items.",
1648
1675
  usageHint: "Use for multi-step tasks. Replace the full list on each call. At most ONE task may be in_progress at a time. Items have id, content, status (pending|in_progress|completed), and optional activeForm.",
1649
1676
  permission: "auto",
@@ -1692,6 +1719,7 @@ var todoTool = {
1692
1719
  };
1693
1720
  var planTool = {
1694
1721
  name: "plan",
1722
+ category: "Session",
1695
1723
  description: "Inspect or edit the strategic plan board for this session. Plans persist across resume (unlike todos). Use this to lay out the multi-step approach before diving in, then mark steps in_progress/done as the work proceeds.",
1696
1724
  usageHint: "Set action to one of: show | add | start | done | remove | clear. Pass `title` for add. Pass `target` (item id, 1-based index, or title substring) for start/done/remove. Always returns the formatted plan plus open/total counts.",
1697
1725
  permission: "auto",
@@ -1791,6 +1819,7 @@ var TIMEOUT_MS4 = 3e4;
1791
1819
  var MAX_OUTPUT3 = 1e5;
1792
1820
  var gitTool = {
1793
1821
  name: "git",
1822
+ category: "Git",
1794
1823
  description: "Run git commands. Wraps common operations: status, log, diff, commit, branch, checkout, stash, push, pull, fetch, reset.",
1795
1824
  usageHint: "Prefer built-in subcommands over raw args. `command` is required. `message` for commits. `branch` for checkout/branch. `files` for status/diff. `format` for log.",
1796
1825
  permission: "confirm",
@@ -1954,6 +1983,7 @@ function runGit(args, cwd, signal) {
1954
1983
  }
1955
1984
  var patchTool = {
1956
1985
  name: "patch",
1986
+ category: "Filesystem",
1957
1987
  description: "Apply a unified diff patch to files. Writes .orig and .rej files on failure.",
1958
1988
  usageHint: "Set `patch` (the diff text). `directory` defaults to cwd. `strip` removes leading path components. `dry_run` previews.",
1959
1989
  permission: "confirm",
@@ -2062,6 +2092,7 @@ function extractPatchedFiles(output) {
2062
2092
  }
2063
2093
  var jsonTool = {
2064
2094
  name: "json",
2095
+ category: "Data",
2065
2096
  description: "Parse, query, and validate JSON/JSON5/YAML. Use `query` with JMESPath-like paths to extract values.",
2066
2097
  usageHint: 'Provide `file` path or `data` string. `query` supports dot notation (e.g. "results[0].name"). `format` outputs in specified format.',
2067
2098
  permission: "auto",
@@ -2182,6 +2213,7 @@ function toYaml(data, indent = 0) {
2182
2213
  }
2183
2214
  var diffTool = {
2184
2215
  name: "diff",
2216
+ category: "Filesystem",
2185
2217
  description: "Show differences between files, commits, or branches. Supports staged vs working tree.",
2186
2218
  usageHint: "Use `files` for file paths, `a`/`b` for commit refs, `staged` for git index. `mode`: unified (default), stat, side-by-side.",
2187
2219
  permission: "auto",
@@ -2307,6 +2339,7 @@ var DEFAULT_IGNORE4 = [
2307
2339
  ];
2308
2340
  var treeTool = {
2309
2341
  name: "tree",
2342
+ category: "Filesystem",
2310
2343
  description: "Display directory structure as an ASCII tree. Shows files and folders with indentation.",
2311
2344
  usageHint: "Set `path` (default: cwd). `depth` limits nesting (default: 3). `glob` filters files. `exclude` ignores dirs. `show_files` toggles file listing (default: true).",
2312
2345
  permission: "auto",
@@ -2541,6 +2574,7 @@ async function* spawnStream(opts) {
2541
2574
  // src/lint.ts
2542
2575
  var lintTool = {
2543
2576
  name: "lint",
2577
+ category: "Code Quality",
2544
2578
  description: "Run a linter on files. Auto-detects biome, eslint, or tslint. Use `fix` to auto-fix issues.",
2545
2579
  usageHint: "Set `files` (glob or comma-separated). `fix` applies corrections. `linter` forces specific tool.",
2546
2580
  permission: "confirm",
@@ -2632,6 +2666,7 @@ async function detectLinter(cwd) {
2632
2666
  // src/format.ts
2633
2667
  var formatTool = {
2634
2668
  name: "format",
2669
+ category: "Code Quality",
2635
2670
  description: "Format files with biome or prettier. Use `check` to verify without modifying.",
2636
2671
  usageHint: "Set `files` (glob or comma-separated). `check` only validates. `fixer` forces tool.",
2637
2672
  permission: "confirm",
@@ -2728,6 +2763,7 @@ async function detectFixer(cwd) {
2728
2763
  }
2729
2764
  var typecheckTool = {
2730
2765
  name: "typecheck",
2766
+ category: "Code Quality",
2731
2767
  description: "Run TypeScript type checking with `tsc --noEmit`. Checks for type errors without compiling.",
2732
2768
  usageHint: "Set `project` for tsconfig path (default: nearest). `strict` enables strictest flags. `all` checks all projects in workspace.",
2733
2769
  permission: "confirm",
@@ -2807,6 +2843,7 @@ async function findTsConfig(cwd) {
2807
2843
  }
2808
2844
  var testTool = {
2809
2845
  name: "test",
2846
+ category: "Code Quality",
2810
2847
  description: "Run tests with vitest, jest, or mocha. Returns pass/fail counts and output.",
2811
2848
  usageHint: "Set `files` for specific tests. `watch` enables watch mode. `coverage` generates coverage report. `grep` filters by name.",
2812
2849
  permission: "confirm",
@@ -2954,6 +2991,7 @@ function parseResult(runner, result, duration) {
2954
2991
  // src/install.ts
2955
2992
  var installTool = {
2956
2993
  name: "install",
2994
+ category: "Package Management",
2957
2995
  description: "Install npm packages. Detects pnpm/npm/yarn and uses the right package manager.",
2958
2996
  usageHint: "Set `packages` to install. `save` as dependency type. `global` for global install. `dry_run` to preview.",
2959
2997
  permission: "confirm",
@@ -3049,6 +3087,7 @@ async function detectPackageManager(cwd) {
3049
3087
  // src/audit.ts
3050
3088
  var auditTool = {
3051
3089
  name: "audit",
3090
+ category: "Package Management",
3052
3091
  description: "Run npm/pnpm security audit. Returns vulnerabilities sorted by severity.",
3053
3092
  usageHint: "Set `level` to filter minimum severity. `fix` attempts auto-fix. `packages` checks specific packages.",
3054
3093
  permission: "confirm",
@@ -3156,6 +3195,7 @@ function parseAuditOutput(json, exitCode) {
3156
3195
  }
3157
3196
  var outdatedTool = {
3158
3197
  name: "outdated",
3198
+ category: "Package Management",
3159
3199
  description: "Check for outdated npm packages. Shows current, wanted, and latest versions.",
3160
3200
  usageHint: "Set `check` to filter specific packages. `format` as list or table. `include_deprecated` shows deprecated packages.",
3161
3201
  permission: "auto",
@@ -3267,6 +3307,7 @@ function parseOutdatedOutput(json, exitCode) {
3267
3307
  }
3268
3308
  var logsTool = {
3269
3309
  name: "logs",
3310
+ category: "Logs",
3270
3311
  description: "Stream or fetch logs from a service or file. Supports Docker, systemd, or plain log files.",
3271
3312
  usageHint: "Set `service` for Docker/systemd, `path` for file. `lines` limits output. `stream` for tail -f behavior. `filter` regex filters lines.",
3272
3313
  permission: "confirm",
@@ -3444,6 +3485,7 @@ function parseLine(line) {
3444
3485
  }
3445
3486
  var documentTool = {
3446
3487
  name: "document",
3488
+ category: "Project",
3447
3489
  description: "Generate or update documentation comments for functions, classes, and types. Supports JSDoc, TSDoc, and block comments.",
3448
3490
  usageHint: "Set `target` for what to document. `files` for paths. `style` for comment format. `overwrite` replaces existing docs.",
3449
3491
  permission: "confirm",
@@ -3683,6 +3725,7 @@ describe('{{Name}}', () => {
3683
3725
  };
3684
3726
  var scaffoldTool = {
3685
3727
  name: "scaffold",
3728
+ category: "Project",
3686
3729
  description: "Generate boilerplate code from built-in templates or paths. Creates package.json, source files, tests.",
3687
3730
  usageHint: "Set `template` (npm-package, cli-tool, react-component) and `name`. `vars` for template variables. `dry_run` preview.",
3688
3731
  permission: "confirm",
@@ -3768,6 +3811,7 @@ function substituteVars(content, name, vars) {
3768
3811
  // src/tool-search.ts
3769
3812
  var toolSearchTool = {
3770
3813
  name: "tool_search",
3814
+ category: "Meta",
3771
3815
  description: "Search available tools by name, description, tags, permission level, or mutating flag.",
3772
3816
  usageHint: "Set `query` for keyword search. `tags` to filter by category. `permission` to filter by required permission. `mutating` to filter by mutating flag.",
3773
3817
  permission: "auto",
@@ -3835,6 +3879,7 @@ var toolSearchTool = {
3835
3879
  // src/tool-use.ts
3836
3880
  var toolUseTool = {
3837
3881
  name: "tool_use",
3882
+ category: "Meta",
3838
3883
  description: "Execute a specific tool by name with given input. Useful when the agent knows exactly which tool to call.",
3839
3884
  usageHint: "Set `tool` with exact tool name and `input` with the tool parameters. Returns result or error.",
3840
3885
  permission: "confirm",
@@ -3903,6 +3948,7 @@ var toolUseTool = {
3903
3948
  // src/batch-tool-use.ts
3904
3949
  var batchToolUseTool = {
3905
3950
  name: "batch_tool_use",
3951
+ category: "Meta",
3906
3952
  description: "Execute multiple tool calls in sequence or parallel. Returns all results.",
3907
3953
  usageHint: "Set `calls` array with tool names and inputs. `stop_on_error` halts on first failure. `parallel` runs concurrently (default: true).",
3908
3954
  permission: "confirm",
@@ -4006,6 +4052,7 @@ async function executeSingle(call, ctx, opts) {
4006
4052
  // src/tool-help.ts
4007
4053
  var toolHelpTool = {
4008
4054
  name: "tool_help",
4055
+ category: "Meta",
4009
4056
  description: "Get help and usage information for a specific tool or list all available tools.",
4010
4057
  usageHint: "Set `tool` for specific help. Omit to list all tools. `format`: short (one-liner), full (schema), markdown (formatted).",
4011
4058
  permission: "auto",
@@ -4128,6 +4175,7 @@ function formatAllToolsMarkdown(tools) {
4128
4175
  function rememberTool(memory) {
4129
4176
  return {
4130
4177
  name: "remember",
4178
+ category: "Session",
4131
4179
  description: "Persist a short note to project or user memory.",
4132
4180
  usageHint: "Use sparingly. Only for facts that should outlive the session (project conventions, user preferences). Transient state belongs in `todo`. Scope defaults to project-memory.",
4133
4181
  permission: "auto",
@@ -4152,6 +4200,7 @@ function rememberTool(memory) {
4152
4200
  function forgetTool(memory) {
4153
4201
  return {
4154
4202
  name: "forget",
4203
+ category: "Session",
4155
4204
  description: "Remove memory entries matching a substring (case-insensitive).",
4156
4205
  usageHint: "Removes ALL matching bullet lines in the given scope. Use a unique substring.",
4157
4206
  permission: "confirm",
@@ -4178,6 +4227,7 @@ function forgetTool(memory) {
4178
4227
  function createModeTool(modeStore) {
4179
4228
  return {
4180
4229
  name: "mode",
4230
+ category: "Session",
4181
4231
  description: "Get, list, or switch the agent mode. Modes inject role-specific prompts into the system prompt.",
4182
4232
  usageHint: "Set `action`: `get` (current mode), `list` (all modes), `set <modeId>` (switch), `clear` (reset to default).",
4183
4233
  permission: "confirm",
@@ -4291,6 +4341,13 @@ var builtinTools = [
4291
4341
  toolHelpTool
4292
4342
  ];
4293
4343
 
4294
- export { auditTool, bashTool, batchToolUseTool, builtinTools, createModeTool, diffTool, documentTool, editTool, execTool, fetchTool, forgetTool, formatTool, gitTool, globTool, grepTool, installTool, jsonTool, lintTool, logsTool, outdatedTool, patchTool, planTool, readTool, rememberTool, replaceTool, scaffoldTool, searchTool, testTool, todoTool, toolHelpTool, toolSearchTool, toolUseTool, treeTool, typecheckTool, writeTool };
4344
+ // src/pack.ts
4345
+ var builtinToolsPack = {
4346
+ name: "builtin-tools",
4347
+ description: "WrongStack built-in filesystem, execution, network, lifecycle, and agent-control tools.",
4348
+ tools: builtinTools
4349
+ };
4350
+
4351
+ export { auditTool, bashTool, batchToolUseTool, builtinTools, builtinToolsPack, createModeTool, diffTool, documentTool, editTool, execTool, fetchTool, forgetTool, formatTool, gitTool, globTool, grepTool, installTool, jsonTool, lintTool, logsTool, outdatedTool, patchTool, planTool, readTool, rememberTool, replaceTool, scaffoldTool, searchTool, testTool, todoTool, toolHelpTool, toolSearchTool, toolUseTool, treeTool, typecheckTool, writeTool };
4295
4352
  //# sourceMappingURL=index.js.map
4296
4353
  //# sourceMappingURL=index.js.map