iosm-cli 0.2.8 → 0.2.9

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 (93) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +3 -3
  3. package/dist/cli/args.d.ts.map +1 -1
  4. package/dist/cli/args.js +7 -3
  5. package/dist/cli/args.js.map +1 -1
  6. package/dist/core/agent-profiles.d.ts.map +1 -1
  7. package/dist/core/agent-profiles.js +5 -1
  8. package/dist/core/agent-profiles.js.map +1 -1
  9. package/dist/core/agent-session.d.ts +3 -0
  10. package/dist/core/agent-session.d.ts.map +1 -1
  11. package/dist/core/agent-session.js +188 -2
  12. package/dist/core/agent-session.js.map +1 -1
  13. package/dist/core/sdk.d.ts +2 -2
  14. package/dist/core/sdk.d.ts.map +1 -1
  15. package/dist/core/sdk.js +7 -4
  16. package/dist/core/sdk.js.map +1 -1
  17. package/dist/core/settings-manager.d.ts +18 -0
  18. package/dist/core/settings-manager.d.ts.map +1 -1
  19. package/dist/core/settings-manager.js +29 -0
  20. package/dist/core/settings-manager.js.map +1 -1
  21. package/dist/core/shadow-guard.d.ts.map +1 -1
  22. package/dist/core/shadow-guard.js +12 -1
  23. package/dist/core/shadow-guard.js.map +1 -1
  24. package/dist/core/system-prompt.d.ts.map +1 -1
  25. package/dist/core/system-prompt.js +32 -1
  26. package/dist/core/system-prompt.js.map +1 -1
  27. package/dist/core/tools/db-run.d.ts +84 -0
  28. package/dist/core/tools/db-run.d.ts.map +1 -0
  29. package/dist/core/tools/db-run.js +690 -0
  30. package/dist/core/tools/db-run.js.map +1 -0
  31. package/dist/core/tools/index.d.ts +44 -0
  32. package/dist/core/tools/index.d.ts.map +1 -1
  33. package/dist/core/tools/index.js +16 -0
  34. package/dist/core/tools/index.js.map +1 -1
  35. package/dist/core/tools/lint-run.d.ts +42 -0
  36. package/dist/core/tools/lint-run.d.ts.map +1 -0
  37. package/dist/core/tools/lint-run.js +276 -0
  38. package/dist/core/tools/lint-run.js.map +1 -0
  39. package/dist/core/tools/test-run.d.ts +36 -0
  40. package/dist/core/tools/test-run.d.ts.map +1 -0
  41. package/dist/core/tools/test-run.js +255 -0
  42. package/dist/core/tools/test-run.js.map +1 -0
  43. package/dist/core/tools/typecheck-run.d.ts +44 -0
  44. package/dist/core/tools/typecheck-run.d.ts.map +1 -0
  45. package/dist/core/tools/typecheck-run.js +343 -0
  46. package/dist/core/tools/typecheck-run.js.map +1 -0
  47. package/dist/core/tools/verification-runner.d.ts +53 -0
  48. package/dist/core/tools/verification-runner.d.ts.map +1 -0
  49. package/dist/core/tools/verification-runner.js +235 -0
  50. package/dist/core/tools/verification-runner.js.map +1 -0
  51. package/dist/index.d.ts +2 -2
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +1 -1
  54. package/dist/index.js.map +1 -1
  55. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  56. package/dist/modes/interactive/components/branch-summary-message.js +2 -1
  57. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  58. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  59. package/dist/modes/interactive/components/compaction-summary-message.js +2 -1
  60. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  61. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  62. package/dist/modes/interactive/components/custom-message.js +2 -1
  63. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  64. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  65. package/dist/modes/interactive/components/skill-invocation-message.js +4 -2
  66. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  67. package/dist/modes/interactive/components/subagent-message.d.ts.map +1 -1
  68. package/dist/modes/interactive/components/subagent-message.js +3 -1
  69. package/dist/modes/interactive/components/subagent-message.js.map +1 -1
  70. package/dist/modes/interactive/components/task-plan-message.d.ts.map +1 -1
  71. package/dist/modes/interactive/components/task-plan-message.js +2 -1
  72. package/dist/modes/interactive/components/task-plan-message.js.map +1 -1
  73. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  74. package/dist/modes/interactive/components/tool-execution.js +25 -7
  75. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  76. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  77. package/dist/modes/interactive/components/user-message.js +2 -1
  78. package/dist/modes/interactive/components/user-message.js.map +1 -1
  79. package/dist/modes/interactive/interactive-mode.d.ts +4 -0
  80. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  81. package/dist/modes/interactive/interactive-mode.js +494 -9
  82. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  83. package/dist/modes/interactive/theme/dark.json +39 -38
  84. package/dist/modes/interactive/theme/light.json +29 -29
  85. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  86. package/dist/modes/interactive/theme/theme.js +16 -25
  87. package/dist/modes/interactive/theme/theme.js.map +1 -1
  88. package/dist/modes/interactive/theme/universal.json +85 -0
  89. package/docs/cli-reference.md +16 -1
  90. package/docs/configuration.md +76 -1
  91. package/docs/development-and-testing.md +1 -1
  92. package/docs/interactive-mode.md +7 -2
  93. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-run.js","sourceRoot":"","sources":["../../../src/core/tools/db-run.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { AgentTool } from \"@mariozechner/pi-agent-core\";\nimport { type Static, Type } from \"@sinclair/typebox\";\nimport { resolveToCwd } from \"./path-utils.js\";\nimport type { ToolPermissionGuard } from \"./permissions.js\";\nimport type { TruncationResult } from \"./truncate.js\";\nimport {\n\tcommandExists,\n\tdetectPackageManager,\n\tensureCommandOrThrow,\n\tformatVerificationOutput,\n\treadPackageJson,\n\tresolvePackageManagerRunInvocation,\n\trunVerificationCommand,\n\ttype RunVerificationCommandInput,\n\ttype VerificationCommandResult,\n} from \"./verification-runner.js\";\n\nconst dbRunSchema = Type.Object({\n\taction: Type.Optional(\n\t\tType.Union(\n\t\t\t[\n\t\t\t\tType.Literal(\"query\"),\n\t\t\t\tType.Literal(\"exec\"),\n\t\t\t\tType.Literal(\"schema\"),\n\t\t\t\tType.Literal(\"migrate\"),\n\t\t\t\tType.Literal(\"explain\"),\n\t\t\t],\n\t\t\t{ description: \"DB action: query | exec | schema | migrate | explain (default: query).\" },\n\t\t),\n\t),\n\tadapter: Type.Optional(\n\t\tType.Union(\n\t\t\t[\n\t\t\t\tType.Literal(\"auto\"),\n\t\t\t\tType.Literal(\"postgres\"),\n\t\t\t\tType.Literal(\"mysql\"),\n\t\t\t\tType.Literal(\"sqlite\"),\n\t\t\t\tType.Literal(\"mongodb\"),\n\t\t\t\tType.Literal(\"redis\"),\n\t\t\t],\n\t\t\t{ description: \"Database adapter: auto | postgres | mysql | sqlite | mongodb | redis\" },\n\t\t),\n\t),\n\tconnection: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"Named dbTools connection profile. Defaults to dbTools.defaultConnection.\",\n\t\t}),\n\t),\n\tstatement: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"Query/command statement for query/exec/explain (optional for schema with adapter defaults).\",\n\t\t}),\n\t),\n\tformat: Type.Optional(\n\t\tType.Union([Type.Literal(\"table\"), Type.Literal(\"json\"), Type.Literal(\"raw\")], {\n\t\t\tdescription: \"Output format hint: table | json | raw (default: table).\",\n\t\t}),\n\t),\n\tallow_write: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Allow write actions (required for exec/migrate). Defaults to false.\",\n\t\t}),\n\t),\n\tmigrate_runner: Type.Optional(\n\t\tType.Union([Type.Literal(\"auto\"), Type.Literal(\"script\")], {\n\t\t\tdescription: \"Migrate mode: auto | script (default: auto).\",\n\t\t}),\n\t),\n\tscript: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"Package script for migrate_runner=script/auto (default: db:migrate).\",\n\t\t}),\n\t),\n\targs: Type.Optional(\n\t\tType.Array(Type.String(), {\n\t\t\tdescription: \"Additional arguments forwarded to adapter CLI or migration script.\",\n\t\t}),\n\t),\n\tpath: Type.Optional(Type.String({ description: \"Working directory for db operations (default: current directory).\" })),\n\ttimeout: Type.Optional(Type.Number({ description: \"Timeout in seconds (default: 300).\" })),\n});\n\nexport type DbRunToolInput = Static<typeof dbRunSchema>;\nexport type DbRunAction = \"query\" | \"exec\" | \"schema\" | \"migrate\" | \"explain\";\nexport type DbRunAdapter = \"auto\" | \"postgres\" | \"mysql\" | \"sqlite\" | \"mongodb\" | \"redis\";\nexport type DbRunResolvedAdapter = Exclude<DbRunAdapter, \"auto\">;\nexport type DbRunFormat = \"table\" | \"json\" | \"raw\";\nexport type DbRunMigrateRunner = \"auto\" | \"script\";\nexport type DbRunStatus = \"passed\" | \"failed\" | \"error\";\n\nexport interface DbToolsMigrateConfig {\n\tscript?: string;\n\tcwd?: string;\n\targs?: string[];\n}\n\nexport interface DbToolsConnectionConfig {\n\tadapter?: DbRunResolvedAdapter;\n\tdsnEnv?: string;\n\tsqlitePath?: string;\n\tclientArgs?: string[];\n\tmigrate?: DbToolsMigrateConfig;\n}\n\nexport interface DbToolsRuntimeConfig {\n\tdefaultConnection?: string;\n\tconnections?: Record<string, DbToolsConnectionConfig>;\n}\n\nexport interface DbRunToolDetails {\n\taction: DbRunAction;\n\tadapter: DbRunResolvedAdapter;\n\tconnection: string;\n\tresolvedCommand: string;\n\tresolvedArgs: string[];\n\tcwd: string;\n\texitCode: number;\n\tstatus: DbRunStatus;\n\tdurationMs: number;\n\trowCount?: number;\n\taffectedCount?: number;\n\twriteRequested: boolean;\n\twriteAllowed: boolean;\n\tcaptureTruncated?: boolean;\n\ttruncation?: TruncationResult;\n}\n\ninterface ResolvedConnectionProfile {\n\tname: string;\n\tadapter: DbRunResolvedAdapter;\n\tdsnEnv?: string;\n\tsqlitePath?: string;\n\tclientArgs: string[];\n\tmigrate: {\n\t\tscript?: string;\n\t\tcwd?: string;\n\t\targs: string[];\n\t};\n}\n\ninterface ResolvedDbCommand {\n\tcommand: string;\n\targs: string[];\n\tenv?: NodeJS.ProcessEnv;\n\tstdin?: string;\n\tsecretValues: string[];\n}\n\ninterface DbRunOperations {\n\trunCommand: (input: RunVerificationCommandInput) => Promise<VerificationCommandResult>;\n\tcommandExists: (command: string) => boolean;\n}\n\nexport interface DbRunToolOptions {\n\tpermissionGuard?: ToolPermissionGuard;\n\tresolveRuntimeConfig?: () => Partial<DbToolsRuntimeConfig> | DbToolsRuntimeConfig;\n\toperations?: Partial<DbRunOperations>;\n}\n\nexport const DEFAULT_DB_RUN_TIMEOUT_SECONDS = 300;\n\nconst defaultOps: DbRunOperations = {\n\trunCommand: runVerificationCommand,\n\tcommandExists,\n};\n\nfunction normalizeTimeoutSeconds(raw: number | undefined): number {\n\tif (raw === undefined) return DEFAULT_DB_RUN_TIMEOUT_SECONDS;\n\tconst value = Math.floor(raw);\n\tif (!Number.isFinite(value) || value <= 0) {\n\t\tthrow new Error(\"timeout must be a positive number.\");\n\t}\n\treturn value;\n}\n\nfunction normalizeStringArray(raw: string[] | undefined): string[] {\n\treturn (raw ?? []).map((item) => String(item));\n}\n\nfunction normalizeAction(raw: DbRunAction | undefined): DbRunAction {\n\treturn raw ?? \"query\";\n}\n\nfunction normalizeFormat(raw: DbRunFormat | undefined): DbRunFormat {\n\treturn raw ?? \"table\";\n}\n\nfunction normalizeScriptName(raw: string | undefined): string | undefined {\n\tif (raw === undefined) return undefined;\n\tconst script = raw.trim();\n\tif (!script) {\n\t\tthrow new Error(\"script must not be empty.\");\n\t}\n\treturn script;\n}\n\nfunction normalizeConnectionName(raw: string | undefined): string | undefined {\n\tif (raw === undefined) return undefined;\n\tconst value = raw.trim();\n\tif (!value) {\n\t\tthrow new Error(\"connection must not be empty.\");\n\t}\n\treturn value;\n}\n\nfunction normalizeRuntimeConfig(raw: Partial<DbToolsRuntimeConfig> | DbToolsRuntimeConfig | undefined): {\n\tdefaultConnection?: string;\n\tconnections: Record<string, ResolvedConnectionProfile>;\n} {\n\tconst connections: Record<string, ResolvedConnectionProfile> = {};\n\tfor (const [name, connection] of Object.entries(raw?.connections ?? {})) {\n\t\tconst normalizedName = name.trim();\n\t\tif (!normalizedName) continue;\n\t\tconst adapter = connection?.adapter;\n\t\tif (\n\t\t\tadapter !== \"postgres\" &&\n\t\t\tadapter !== \"mysql\" &&\n\t\t\tadapter !== \"sqlite\" &&\n\t\t\tadapter !== \"mongodb\" &&\n\t\t\tadapter !== \"redis\"\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconnections[normalizedName] = {\n\t\t\tname: normalizedName,\n\t\t\tadapter,\n\t\t\tdsnEnv: connection?.dsnEnv?.trim() || undefined,\n\t\t\tsqlitePath: connection?.sqlitePath?.trim() || undefined,\n\t\t\tclientArgs: normalizeStringArray(connection?.clientArgs),\n\t\t\tmigrate: {\n\t\t\t\tscript: connection?.migrate?.script?.trim() || undefined,\n\t\t\t\tcwd: connection?.migrate?.cwd?.trim() || undefined,\n\t\t\t\targs: normalizeStringArray(connection?.migrate?.args),\n\t\t\t},\n\t\t};\n\t}\n\n\tconst defaultConnection = raw?.defaultConnection?.trim() || undefined;\n\treturn { defaultConnection, connections };\n}\n\nfunction isLikelyPathLikeConnection(value: string): boolean {\n\tconst normalized = value.trim();\n\tif (!normalized) return false;\n\tif (normalized.includes(\"/\") || normalized.includes(\"\\\\\") || normalized.startsWith(\".\") || normalized.startsWith(\"~\")) {\n\t\treturn true;\n\t}\n\treturn /\\.(sqlite|sqlite3|db)$/i.test(normalized) || normalized.includes(\":memory:\");\n}\n\nfunction buildDbToolsSetupHint(sqlitePathHint: string): string {\n\treturn [\n\t\t'Configure a named profile in \".iosm/settings.json\", for example:',\n\t\t\"{\",\n\t\t' \"dbTools\": {',\n\t\t' \"defaultConnection\": \"main\",',\n\t\t' \"connections\": {',\n\t\t` \"main\": { \"adapter\": \"sqlite\", \"sqlitePath\": \"${sqlitePathHint}\" }`,\n\t\t\" }\",\n\t\t\" }\",\n\t\t\"}\",\n\t\t'Then call db_run with connection=\"main\" (or omit connection when defaultConnection is set).',\n\t\t\"If you edited settings.json outside the current session, run /reload or restart the session before retrying.\",\n\t].join(\"\\n\");\n}\n\nfunction resolveConnectionProfile(input: {\n\truntimeConfig: { defaultConnection?: string; connections: Record<string, ResolvedConnectionProfile> };\n\tconnection?: string;\n\tadapter: DbRunAdapter;\n}): ResolvedConnectionProfile {\n\tconst effectiveConnection = normalizeConnectionName(input.connection) ?? input.runtimeConfig.defaultConnection;\n\tif (!effectiveConnection) {\n\t\tthrow new Error(\n\t\t\t[\n\t\t\t\t\"No db connection selected. Configure dbTools.defaultConnection or pass connection explicitly.\",\n\t\t\t\tbuildDbToolsSetupHint(\"./test_database.sqlite\"),\n\t\t\t].join(\"\\n\\n\"),\n\t\t);\n\t}\n\tconst profile = input.runtimeConfig.connections[effectiveConnection];\n\tif (!profile) {\n\t\tif (isLikelyPathLikeConnection(effectiveConnection)) {\n\t\t\tthrow new Error(\n\t\t\t\t[\n\t\t\t\t\t`Connection profile \"${effectiveConnection}\" is not defined in settings dbTools.connections.`,\n\t\t\t\t\t`The \"connection\" field expects a profile name, not a file path.`,\n\t\t\t\t\tbuildDbToolsSetupHint(effectiveConnection),\n\t\t\t\t].join(\"\\n\\n\"),\n\t\t\t);\n\t\t}\n\t\tthrow new Error(\n\t\t\t[\n\t\t\t\t`Connection profile \"${effectiveConnection}\" is not defined in settings dbTools.connections.`,\n\t\t\t\tbuildDbToolsSetupHint(\"./test_database.sqlite\"),\n\t\t\t].join(\"\\n\\n\"),\n\t\t);\n\t}\n\n\tif (input.adapter !== \"auto\" && input.adapter !== profile.adapter) {\n\t\tthrow new Error(\n\t\t\t`Adapter \"${input.adapter}\" does not match connection \"${effectiveConnection}\" adapter \"${profile.adapter}\".`,\n\t\t);\n\t}\n\n\tif (profile.adapter === \"sqlite\") {\n\t\tif (!profile.sqlitePath) {\n\t\t\tthrow new Error(`Connection \"${effectiveConnection}\" requires sqlitePath for sqlite adapter.`);\n\t\t}\n\t} else if (!profile.dsnEnv) {\n\t\tthrow new Error(`Connection \"${effectiveConnection}\" requires dsnEnv for ${profile.adapter} adapter.`);\n\t}\n\n\treturn profile;\n}\n\nfunction ensureWriteAllowed(action: DbRunAction, allowWrite: boolean): void {\n\tif ((action === \"exec\" || action === \"migrate\") && !allowWrite) {\n\t\tthrow new Error(`Action \"${action}\" requires allow_write=true.`);\n\t}\n}\n\nfunction normalizeStatement(statement: string | undefined): string | undefined {\n\tif (statement === undefined) return undefined;\n\tconst normalized = statement.trim();\n\tif (!normalized) {\n\t\tthrow new Error(\"statement must not be empty when provided.\");\n\t}\n\treturn normalized;\n}\n\nfunction isLikelyMutatingSql(statement: string): boolean {\n\treturn /\\b(insert|update|delete|drop|alter|create|truncate|replace|grant|revoke|merge|upsert)\\b/i.test(statement);\n}\n\nfunction isLikelyMutatingMongo(statement: string): boolean {\n\treturn /\\b(insert|update|delete|drop|create|rename|set|remove|replace|findOneAndUpdate|findAndModify)\\b/i.test(statement);\n}\n\nfunction isLikelyMutatingRedis(statement: string): boolean {\n\tconst firstToken = statement.trim().split(/\\s+/)[0]?.toUpperCase() ?? \"\";\n\tconst mutatingCommands = new Set([\n\t\t\"SET\",\n\t\t\"DEL\",\n\t\t\"HSET\",\n\t\t\"HDEL\",\n\t\t\"LPUSH\",\n\t\t\"RPUSH\",\n\t\t\"SADD\",\n\t\t\"SREM\",\n\t\t\"ZADD\",\n\t\t\"ZREM\",\n\t\t\"INCR\",\n\t\t\"DECR\",\n\t\t\"FLUSHDB\",\n\t\t\"FLUSHALL\",\n\t\t\"EXPIRE\",\n\t\t\"PERSIST\",\n\t]);\n\treturn mutatingCommands.has(firstToken);\n}\n\nfunction enforceReadFirstSafety(adapter: DbRunResolvedAdapter, action: DbRunAction, statement: string | undefined): void {\n\tif (action !== \"query\" || !statement) return;\n\tif (adapter === \"postgres\" || adapter === \"mysql\" || adapter === \"sqlite\") {\n\t\tif (isLikelyMutatingSql(statement)) {\n\t\t\tthrow new Error('Mutating statement detected for action=query. Use action=\"exec\" with allow_write=true.');\n\t\t}\n\t\treturn;\n\t}\n\tif (adapter === \"mongodb\" && isLikelyMutatingMongo(statement)) {\n\t\tthrow new Error('Mutating statement detected for action=query. Use action=\"exec\" with allow_write=true.');\n\t}\n\tif (adapter === \"redis\" && isLikelyMutatingRedis(statement)) {\n\t\tthrow new Error('Mutating statement detected for action=query. Use action=\"exec\" with allow_write=true.');\n\t}\n}\n\nfunction parseDsn(dsn: string, adapter: DbRunResolvedAdapter): URL {\n\ttry {\n\t\tconst parsed = new URL(dsn);\n\t\tconst protocol = parsed.protocol.replace(\":\", \"\");\n\t\tif (adapter === \"postgres\" && protocol !== \"postgres\" && protocol !== \"postgresql\") {\n\t\t\tthrow new Error(\"Expected postgres:// or postgresql:// DSN.\");\n\t\t}\n\t\tif (adapter === \"mysql\" && protocol !== \"mysql\" && protocol !== \"mariadb\") {\n\t\t\tthrow new Error(\"Expected mysql:// or mariadb:// DSN.\");\n\t\t}\n\t\tif (adapter === \"mongodb\" && protocol !== \"mongodb\" && protocol !== \"mongodb+srv\") {\n\t\t\tthrow new Error(\"Expected mongodb:// or mongodb+srv:// DSN.\");\n\t\t}\n\t\tif (adapter === \"redis\" && protocol !== \"redis\" && protocol !== \"rediss\") {\n\t\t\tthrow new Error(\"Expected redis:// or rediss:// DSN.\");\n\t\t}\n\t\treturn parsed;\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tthrow new Error(`Invalid DSN for ${adapter}: ${message}`);\n\t}\n}\n\nfunction resolveSqlStatement(adapter: \"postgres\" | \"mysql\" | \"sqlite\", action: DbRunAction, statement: string | undefined): string {\n\tconst schemaDefaults: Record<\"postgres\" | \"mysql\" | \"sqlite\", string> = {\n\t\tpostgres:\n\t\t\t\"SELECT table_schema, table_name FROM information_schema.tables WHERE table_schema NOT IN ('pg_catalog','information_schema') ORDER BY 1,2;\",\n\t\tmysql:\n\t\t\t\"SELECT table_schema, table_name FROM information_schema.tables WHERE table_schema = DATABASE() ORDER BY 1,2;\",\n\t\tsqlite: \"SELECT name, type FROM sqlite_master WHERE type IN ('table','view') ORDER BY name;\",\n\t};\n\n\tif (action === \"schema\") {\n\t\treturn statement ?? schemaDefaults[adapter];\n\t}\n\tif (!statement) {\n\t\tthrow new Error(`Action \"${action}\" requires statement.`);\n\t}\n\tif (action === \"explain\") {\n\t\treturn /^\\s*explain\\b/i.test(statement) ? statement : `EXPLAIN ${statement}`;\n\t}\n\treturn statement;\n}\n\nfunction resolveMongoStatement(action: DbRunAction, statement: string | undefined): string {\n\tif (action === \"schema\") {\n\t\treturn statement ?? \"db.getCollectionInfos()\";\n\t}\n\tif (!statement) {\n\t\tthrow new Error(`Action \"${action}\" requires statement.`);\n\t}\n\tif (action === \"explain\") {\n\t\treturn statement;\n\t}\n\treturn statement;\n}\n\nfunction resolveRedisStatement(action: DbRunAction, statement: string | undefined): string {\n\tif (action === \"schema\") {\n\t\treturn statement ?? \"INFO keyspace\";\n\t}\n\tif (!statement) {\n\t\tthrow new Error(`Action \"${action}\" requires statement.`);\n\t}\n\treturn statement;\n}\n\nfunction ensureAdapterCommandAvailable(ops: DbRunOperations, command: string, hint: string): void {\n\tif (ops.commandExists(command)) {\n\t\treturn;\n\t}\n\tthrow new Error(hint);\n}\n\nfunction resolveSqlCommand(input: {\n\tops: DbRunOperations;\n\tadapter: \"postgres\" | \"mysql\" | \"sqlite\";\n\taction: DbRunAction;\n\tstatement?: string;\n\tformat: DbRunFormat;\n\texecutionCwd: string;\n\tconnection: ResolvedConnectionProfile;\n}): ResolvedDbCommand {\n\tconst statement = resolveSqlStatement(input.adapter, input.action, input.statement);\n\tif (input.adapter === \"postgres\") {\n\t\tensureAdapterCommandAvailable(input.ops, \"psql\", 'Command \"psql\" is required for postgres adapter.');\n\t\tconst dsnValue = process.env[input.connection.dsnEnv!];\n\t\tif (!dsnValue) {\n\t\t\tthrow new Error(`Environment variable \"${input.connection.dsnEnv}\" is required for connection \"${input.connection.name}\".`);\n\t\t}\n\t\tconst parsed = parseDsn(dsnValue, \"postgres\");\n\t\tconst env: NodeJS.ProcessEnv = {};\n\t\tif (parsed.hostname) env.PGHOST = parsed.hostname;\n\t\tif (parsed.port) env.PGPORT = parsed.port;\n\t\tif (parsed.username) env.PGUSER = decodeURIComponent(parsed.username);\n\t\tif (parsed.password) env.PGPASSWORD = decodeURIComponent(parsed.password);\n\t\tconst dbName = parsed.pathname.replace(/^\\//, \"\");\n\t\tif (dbName) env.PGDATABASE = decodeURIComponent(dbName);\n\t\tconst sslMode = parsed.searchParams.get(\"sslmode\");\n\t\tif (sslMode) env.PGSSLMODE = sslMode;\n\n\t\tconst args = [...input.connection.clientArgs];\n\t\tif (input.format === \"raw\" || input.format === \"json\") {\n\t\t\targs.push(\"-A\", \"-t\");\n\t\t}\n\t\targs.push(\"-c\", statement);\n\t\treturn {\n\t\t\tcommand: \"psql\",\n\t\t\targs,\n\t\t\tenv,\n\t\t\tsecretValues: [dsnValue, decodeURIComponent(parsed.password || \"\")].filter(Boolean),\n\t\t};\n\t}\n\n\tif (input.adapter === \"mysql\") {\n\t\tensureAdapterCommandAvailable(input.ops, \"mysql\", 'Command \"mysql\" is required for mysql adapter.');\n\t\tconst dsnValue = process.env[input.connection.dsnEnv!];\n\t\tif (!dsnValue) {\n\t\t\tthrow new Error(`Environment variable \"${input.connection.dsnEnv}\" is required for connection \"${input.connection.name}\".`);\n\t\t}\n\t\tconst parsed = parseDsn(dsnValue, \"mysql\");\n\t\tconst args = [...input.connection.clientArgs];\n\t\tif (parsed.hostname) args.push(\"--host\", parsed.hostname);\n\t\tif (parsed.port) args.push(\"--port\", parsed.port);\n\t\tif (parsed.username) args.push(\"--user\", decodeURIComponent(parsed.username));\n\t\tif (input.format === \"raw\" || input.format === \"json\") {\n\t\t\targs.push(\"--batch\", \"--raw\", \"--skip-column-names\");\n\t\t}\n\t\tconst dbName = parsed.pathname.replace(/^\\//, \"\");\n\t\tif (dbName) args.push(decodeURIComponent(dbName));\n\t\targs.push(\"-e\", statement);\n\t\tconst env: NodeJS.ProcessEnv = {};\n\t\tif (parsed.password) {\n\t\t\tenv.MYSQL_PWD = decodeURIComponent(parsed.password);\n\t\t}\n\t\treturn {\n\t\t\tcommand: \"mysql\",\n\t\t\targs,\n\t\t\tenv,\n\t\t\tsecretValues: [dsnValue, decodeURIComponent(parsed.password || \"\")].filter(Boolean),\n\t\t};\n\t}\n\n\tensureAdapterCommandAvailable(input.ops, \"sqlite3\", 'Command \"sqlite3\" is required for sqlite adapter.');\n\tconst sqlitePath = resolveToCwd(input.connection.sqlitePath!, input.executionCwd);\n\tconst sqliteDir = join(sqlitePath, \"..\");\n\tif (!existsSync(sqliteDir)) {\n\t\tthrow new Error(`sqlitePath parent directory does not exist: ${sqliteDir}`);\n\t}\n\tconst args = [...input.connection.clientArgs];\n\tif (input.format === \"raw\") {\n\t\targs.push(\"-noheader\");\n\t}\n\tif (input.format === \"json\") {\n\t\targs.push(\"-json\");\n\t}\n\targs.push(sqlitePath, statement);\n\treturn {\n\t\tcommand: \"sqlite3\",\n\t\targs,\n\t\tsecretValues: [],\n\t};\n}\n\nfunction resolveMongoCommand(input: {\n\tops: DbRunOperations;\n\taction: DbRunAction;\n\tstatement?: string;\n\tconnection: ResolvedConnectionProfile;\n}): ResolvedDbCommand {\n\tensureAdapterCommandAvailable(input.ops, \"mongosh\", 'Command \"mongosh\" is required for mongodb adapter.');\n\tconst dsnValue = process.env[input.connection.dsnEnv!];\n\tif (!dsnValue) {\n\t\tthrow new Error(`Environment variable \"${input.connection.dsnEnv}\" is required for connection \"${input.connection.name}\".`);\n\t}\n\tparseDsn(dsnValue, \"mongodb\");\n\tconst statement = resolveMongoStatement(input.action, input.statement);\n\tconst args = [...input.connection.clientArgs, dsnValue, \"--quiet\", \"--eval\", statement];\n\treturn {\n\t\tcommand: \"mongosh\",\n\t\targs,\n\t\tsecretValues: [dsnValue],\n\t};\n}\n\nfunction resolveRedisCommand(input: {\n\tops: DbRunOperations;\n\taction: DbRunAction;\n\tstatement?: string;\n\tformat: DbRunFormat;\n\tconnection: ResolvedConnectionProfile;\n}): ResolvedDbCommand {\n\tensureAdapterCommandAvailable(input.ops, \"redis-cli\", 'Command \"redis-cli\" is required for redis adapter.');\n\tconst dsnValue = process.env[input.connection.dsnEnv!];\n\tif (!dsnValue) {\n\t\tthrow new Error(`Environment variable \"${input.connection.dsnEnv}\" is required for connection \"${input.connection.name}\".`);\n\t}\n\tconst parsed = parseDsn(dsnValue, \"redis\");\n\tconst statement = resolveRedisStatement(input.action, input.statement);\n\tconst args = [...input.connection.clientArgs];\n\tif (parsed.protocol === \"rediss:\") {\n\t\targs.push(\"--tls\");\n\t}\n\tif (parsed.hostname) args.push(\"-h\", parsed.hostname);\n\tif (parsed.port) args.push(\"-p\", parsed.port);\n\tif (parsed.username) args.push(\"--user\", decodeURIComponent(parsed.username));\n\tconst dbName = parsed.pathname.replace(/^\\//, \"\");\n\tif (dbName) args.push(\"-n\", decodeURIComponent(dbName));\n\tif (input.format === \"raw\" || input.format === \"json\") {\n\t\targs.push(\"--raw\");\n\t}\n\tconst env: NodeJS.ProcessEnv = {};\n\tif (parsed.password) {\n\t\tenv.REDISCLI_AUTH = decodeURIComponent(parsed.password);\n\t}\n\treturn {\n\t\tcommand: \"redis-cli\",\n\t\targs,\n\t\tstdin: `${statement}\\n`,\n\t\tenv,\n\t\tsecretValues: [dsnValue, decodeURIComponent(parsed.password || \"\")].filter(Boolean),\n\t};\n}\n\nfunction resolveMigrateCommand(input: {\n\taction: DbRunAction;\n\tallowWrite: boolean;\n\texecutionCwd: string;\n\tmigrateRunner: DbRunMigrateRunner;\n\tconnection: ResolvedConnectionProfile;\n\tscript?: string;\n\targs: string[];\n}): { command: ResolvedDbCommand; cwd: string } {\n\tif (input.action !== \"migrate\") {\n\t\tthrow new Error(\"Internal error: resolveMigrateCommand called for non-migrate action.\");\n\t}\n\tensureWriteAllowed(\"migrate\", input.allowWrite);\n\n\tconst migrateCwd = resolveToCwd(input.connection.migrate.cwd ?? \".\", input.executionCwd);\n\tconst packageJson = readPackageJson(migrateCwd);\n\tif (!packageJson) {\n\t\tthrow new Error(\"package.json is required for migrate action.\");\n\t}\n\n\tconst scriptCandidates: string[] = [];\n\tif (input.script) scriptCandidates.push(input.script);\n\tif (input.connection.migrate.script) scriptCandidates.push(input.connection.migrate.script);\n\tif (input.migrateRunner === \"auto\") {\n\t\tscriptCandidates.push(\"db:migrate\", \"migrate\");\n\t}\n\tif (input.migrateRunner === \"script\" && scriptCandidates.length === 0) {\n\t\tscriptCandidates.push(\"db:migrate\");\n\t}\n\n\tconst selectedScript = scriptCandidates.find((candidate) => packageJson.scripts[candidate]);\n\tif (!selectedScript) {\n\t\tthrow new Error(\n\t\t\t`No migration script found. Checked: ${scriptCandidates.join(\", \")} in ${packageJson.path}.`,\n\t\t);\n\t}\n\n\tconst packageManager = detectPackageManager(migrateCwd);\n\tensureCommandOrThrow(packageManager, `Command \"${packageManager}\" is required for migrate action.`);\n\tconst invocation = resolvePackageManagerRunInvocation(packageManager, selectedScript, [\n\t\t...input.connection.migrate.args,\n\t\t...input.args,\n\t]);\n\treturn {\n\t\tcwd: migrateCwd,\n\t\tcommand: {\n\t\t\tcommand: invocation.command,\n\t\t\targs: invocation.args,\n\t\t\tsecretValues: [],\n\t\t},\n\t};\n}\n\nfunction mapDbStatus(exitCode: number): DbRunStatus {\n\tif (exitCode === 0) return \"passed\";\n\tif (exitCode === 1) return \"failed\";\n\treturn \"error\";\n}\n\nfunction redactArgs(args: string[], secrets: string[]): string[] {\n\tconst normalizedSecrets = secrets\n\t\t.map((secret) => secret.trim())\n\t\t.filter((secret) => secret.length > 0)\n\t\t.sort((a, b) => b.length - a.length);\n\n\treturn args.map((arg) => {\n\t\tlet sanitized = arg;\n\t\tfor (const secret of normalizedSecrets) {\n\t\t\tif (sanitized.includes(secret)) {\n\t\t\t\tsanitized = sanitized.replaceAll(secret, \"[REDACTED]\");\n\t\t\t}\n\t\t}\n\t\tif (/\\b(password|passwd|pwd|token|secret)=/i.test(sanitized)) {\n\t\t\treturn sanitized.replace(/=(.+)$/i, \"=[REDACTED]\");\n\t\t}\n\t\treturn sanitized;\n\t});\n}\n\nfunction parseCounts(output: string): { rowCount?: number; affectedCount?: number } {\n\tconst selectMatch = output.match(/\\bSELECT\\s+(\\d+)\\b/i);\n\tconst updateMatch = output.match(/\\b(?:UPDATE|DELETE)\\s+(\\d+)\\b/i);\n\tconst insertMatch = output.match(/\\bINSERT\\s+\\d+\\s+(\\d+)\\b/i);\n\tconst rowsInSetMatch = output.match(/\\b(\\d+)\\s+rows?\\s+in set\\b/i);\n\tconst mysqlChangedMatch = output.match(/\\bRows matched:\\s*(\\d+)\\s+Changed:\\s*(\\d+)\\b/i);\n\n\tconst rowCount = selectMatch?.[1]\n\t\t? Number.parseInt(selectMatch[1], 10)\n\t\t: rowsInSetMatch?.[1]\n\t\t\t? Number.parseInt(rowsInSetMatch[1], 10)\n\t\t\t: undefined;\n\tconst affectedCount = updateMatch?.[1]\n\t\t? Number.parseInt(updateMatch[1], 10)\n\t\t: insertMatch?.[1]\n\t\t\t? Number.parseInt(insertMatch[1], 10)\n\t\t\t: mysqlChangedMatch?.[2]\n\t\t\t\t? Number.parseInt(mysqlChangedMatch[2], 10)\n\t\t\t\t: undefined;\n\n\treturn {\n\t\trowCount: Number.isFinite(rowCount as number) ? rowCount : undefined,\n\t\taffectedCount: Number.isFinite(affectedCount as number) ? affectedCount : undefined,\n\t};\n}\n\nfunction renderSummary(details: DbRunToolDetails, output: string): string {\n\tconst argsText = details.resolvedArgs.length > 0 ? ` ${details.resolvedArgs.join(\" \")}` : \"\";\n\tconst lines = [\n\t\t`db_run status: ${details.status}`,\n\t\t`action: ${details.action}`,\n\t\t`adapter: ${details.adapter}`,\n\t\t`connection: ${details.connection}`,\n\t\t`command: ${details.resolvedCommand}${argsText}`,\n\t\t`cwd: ${details.cwd}`,\n\t\t`write_requested: ${details.writeRequested ? \"true\" : \"false\"}`,\n\t\t`write_allowed: ${details.writeAllowed ? \"true\" : \"false\"}`,\n\t\t`exit_code: ${details.exitCode}`,\n\t\t`duration_ms: ${details.durationMs}`,\n\t];\n\tif (details.rowCount !== undefined) {\n\t\tlines.push(`row_count: ${details.rowCount}`);\n\t}\n\tif (details.affectedCount !== undefined) {\n\t\tlines.push(`affected_count: ${details.affectedCount}`);\n\t}\n\tlines.push(\"\", output);\n\treturn lines.join(\"\\n\");\n}\n\nexport function createDbRunTool(cwd: string, options?: DbRunToolOptions): AgentTool<typeof dbRunSchema> {\n\tconst permissionGuard = options?.permissionGuard;\n\tconst ops: DbRunOperations = {\n\t\t...defaultOps,\n\t\t...(options?.operations ?? {}),\n\t};\n\n\treturn {\n\t\tname: \"db_run\",\n\t\tlabel: \"db_run\",\n\t\tdescription:\n\t\t\t\"Structured database operations across postgres/mysql/sqlite/mongodb/redis using named settings profiles with read-first safety and normalized status reporting.\",\n\t\tparameters: dbRunSchema,\n\t\texecute: async (_toolCallId: string, input: DbRunToolInput, signal?: AbortSignal) => {\n\t\t\tconst action = normalizeAction(input.action);\n\t\t\tconst requestedAdapter = input.adapter ?? \"auto\";\n\t\t\tconst format = normalizeFormat(input.format);\n\t\t\tconst allowWrite = input.allow_write === true;\n\t\t\tconst timeoutSeconds = normalizeTimeoutSeconds(input.timeout);\n\t\t\tconst statement = normalizeStatement(input.statement);\n\t\t\tconst args = normalizeStringArray(input.args);\n\t\t\tconst executionCwd = resolveToCwd(input.path || \".\", cwd);\n\t\t\tconst migrateRunner: DbRunMigrateRunner = input.migrate_runner ?? \"auto\";\n\t\t\tconst script = normalizeScriptName(input.script);\n\n\t\t\tconst runtimeConfig = normalizeRuntimeConfig(options?.resolveRuntimeConfig?.());\n\t\t\tconst connection = resolveConnectionProfile({\n\t\t\t\truntimeConfig,\n\t\t\t\tconnection: input.connection,\n\t\t\t\tadapter: requestedAdapter,\n\t\t\t});\n\t\t\tconst resolvedAdapter = requestedAdapter === \"auto\" ? connection.adapter : requestedAdapter;\n\t\t\tconst writeRequested = action === \"exec\" || action === \"migrate\";\n\t\t\tensureWriteAllowed(action, allowWrite);\n\t\t\tenforceReadFirstSafety(resolvedAdapter, action, statement);\n\n\t\t\tif (permissionGuard) {\n\t\t\t\tconst allowed = await permissionGuard({\n\t\t\t\t\ttoolName: \"db_run\",\n\t\t\t\t\tcwd: executionCwd,\n\t\t\t\t\tinput: {\n\t\t\t\t\t\taction,\n\t\t\t\t\t\tadapter: resolvedAdapter,\n\t\t\t\t\t\tconnection: connection.name,\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tallowWrite,\n\t\t\t\t\t\targs,\n\t\t\t\t\t},\n\t\t\t\t\tsummary: `${action} on ${connection.name} (${resolvedAdapter})`,\n\t\t\t\t});\n\t\t\t\tif (!allowed) {\n\t\t\t\t\tthrow new Error(\"Permission denied for db_run operation.\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet commandCwd = executionCwd;\n\t\t\tlet resolvedCommand: ResolvedDbCommand;\n\t\t\tif (action === \"migrate\") {\n\t\t\t\tconst migrated = resolveMigrateCommand({\n\t\t\t\t\taction,\n\t\t\t\t\tallowWrite,\n\t\t\t\t\texecutionCwd,\n\t\t\t\t\tmigrateRunner,\n\t\t\t\t\tconnection,\n\t\t\t\t\tscript,\n\t\t\t\t\targs,\n\t\t\t\t});\n\t\t\t\tresolvedCommand = migrated.command;\n\t\t\t\tcommandCwd = migrated.cwd;\n\t\t\t} else if (resolvedAdapter === \"postgres\" || resolvedAdapter === \"mysql\" || resolvedAdapter === \"sqlite\") {\n\t\t\t\tresolvedCommand = resolveSqlCommand({\n\t\t\t\t\tops,\n\t\t\t\t\tadapter: resolvedAdapter,\n\t\t\t\t\taction,\n\t\t\t\t\tstatement,\n\t\t\t\t\tformat,\n\t\t\t\t\texecutionCwd,\n\t\t\t\t\tconnection,\n\t\t\t\t});\n\t\t\t\tif (args.length > 0) {\n\t\t\t\t\tresolvedCommand.args = [...resolvedCommand.args, ...args];\n\t\t\t\t}\n\t\t\t} else if (resolvedAdapter === \"mongodb\") {\n\t\t\t\tresolvedCommand = resolveMongoCommand({\n\t\t\t\t\tops,\n\t\t\t\t\taction,\n\t\t\t\t\tstatement,\n\t\t\t\t\tconnection,\n\t\t\t\t});\n\t\t\t\tif (args.length > 0) {\n\t\t\t\t\tresolvedCommand.args = [...resolvedCommand.args, ...args];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresolvedCommand = resolveRedisCommand({\n\t\t\t\t\tops,\n\t\t\t\t\taction,\n\t\t\t\t\tstatement,\n\t\t\t\t\tformat,\n\t\t\t\t\tconnection,\n\t\t\t\t});\n\t\t\t\tif (args.length > 0) {\n\t\t\t\t\tresolvedCommand.args = [...resolvedCommand.args, ...args];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst result = await ops.runCommand({\n\t\t\t\tcommand: resolvedCommand.command,\n\t\t\t\targs: resolvedCommand.args,\n\t\t\t\tcwd: commandCwd,\n\t\t\t\ttimeoutMs: timeoutSeconds * 1000,\n\t\t\t\tsignal,\n\t\t\t\tenv: resolvedCommand.env,\n\t\t\t\tstdin: resolvedCommand.stdin,\n\t\t\t});\n\n\t\t\tconst status = mapDbStatus(result.exitCode);\n\t\t\tconst formatted = formatVerificationOutput(\n\t\t\t\tresult.stdout,\n\t\t\t\tresult.stderr,\n\t\t\t\tresult.captureTruncated,\n\t\t\t\t\"No database output\",\n\t\t\t);\n\t\t\tconst counts = parseCounts(`${result.stdout}\\n${result.stderr}`);\n\t\t\tconst details: DbRunToolDetails = {\n\t\t\t\taction,\n\t\t\t\tadapter: resolvedAdapter,\n\t\t\t\tconnection: connection.name,\n\t\t\t\tresolvedCommand: resolvedCommand.command,\n\t\t\t\tresolvedArgs: redactArgs(resolvedCommand.args, resolvedCommand.secretValues),\n\t\t\t\tcwd: commandCwd,\n\t\t\t\texitCode: result.exitCode,\n\t\t\t\tstatus,\n\t\t\t\tdurationMs: result.durationMs,\n\t\t\t\trowCount: counts.rowCount,\n\t\t\t\taffectedCount: counts.affectedCount,\n\t\t\t\twriteRequested,\n\t\t\t\twriteAllowed: allowWrite,\n\t\t\t\tcaptureTruncated: result.captureTruncated || undefined,\n\t\t\t\ttruncation: formatted.truncation,\n\t\t\t};\n\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: renderSummary(details, formatted.text) }],\n\t\t\t\tdetails,\n\t\t\t};\n\t\t},\n\t};\n}\n\nexport const dbRunTool = createDbRunTool(process.cwd());\n"]}
@@ -12,6 +12,8 @@ export { createGrepTool, type GrepOperations, type GrepToolDetails, type GrepToo
12
12
  export { createGitReadTool, type GitReadToolDetails, type GitReadToolInput, type GitReadToolOptions, gitReadTool, } from "./git-read.js";
13
13
  export { createGitWriteTool, type GitWriteToolDetails, type GitWriteToolInput, type GitWriteToolOptions, gitWriteTool, } from "./git-write.js";
14
14
  export { createJqTool, type JqToolInput, jqTool, } from "./jq.js";
15
+ export { createDbRunTool, type DbRunAction, type DbRunAdapter, type DbRunMigrateRunner, type DbRunStatus, type DbRunToolDetails, type DbRunToolInput, type DbRunToolOptions, type DbToolsConnectionConfig, type DbToolsMigrateConfig, type DbToolsRuntimeConfig, dbRunTool, DEFAULT_DB_RUN_TIMEOUT_SECONDS, } from "./db-run.js";
16
+ export { createLintRunTool, type LintRunMode, type LintRunRunner, type LintRunStatus, type LintRunToolDetails, type LintRunToolInput, lintRunTool, DEFAULT_LINT_RUN_TIMEOUT_SECONDS, } from "./lint-run.js";
15
17
  export { createLsTool, type LsOperations, type LsToolDetails, type LsToolInput, type LsToolOptions, lsTool, } from "./ls.js";
16
18
  export { createReadTool, type ReadOperations, type ReadToolDetails, type ReadToolInput, type ReadToolOptions, readTool, } from "./read.js";
17
19
  export { createRgTool, type RgToolInput, rgTool, } from "./rg.js";
@@ -24,6 +26,8 @@ export { type ToolPermissionGuard, type ToolPermissionRequest } from "./permissi
24
26
  export { createTodoWriteTool, createTodoReadTool, todoWriteTool, todoReadTool, getTaskFilePath, type TodoTask, type TodoTaskStatus, type TodoWriteInput, type TodoReadInput, } from "./todo.js";
25
27
  export { createYqTool, type YqToolInput, yqTool, } from "./yq.js";
26
28
  export { createTaskTool, type SubagentRunner, type TaskToolProgress, type TaskToolProgressPhase, type TaskToolInput, type TaskToolDetails, } from "./task.js";
29
+ export { createTestRunTool, type TestRunRunner, type TestRunStatus, type TestRunToolDetails, type TestRunToolInput, testRunTool, DEFAULT_TEST_RUN_TIMEOUT_SECONDS, } from "./test-run.js";
30
+ export { createTypecheckRunTool, type TypecheckRunItemDetails, type TypecheckRunRunner, type TypecheckRunStatus, type TypecheckRunToolDetails, type TypecheckRunToolInput, typecheckRunTool, DEFAULT_TYPECHECK_RUN_TIMEOUT_SECONDS, } from "./typecheck-run.js";
27
31
  import type { AgentTool } from "@mariozechner/pi-agent-core";
28
32
  import { type BashToolOptions } from "./bash.js";
29
33
  import { type EditToolOptions } from "./edit.js";
@@ -31,6 +35,7 @@ import { type FetchToolOptions } from "./fetch.js";
31
35
  import { type WebSearchToolOptions } from "./web-search.js";
32
36
  import { type FsOpsToolOptions } from "./fs-ops.js";
33
37
  import { type GitWriteToolOptions } from "./git-write.js";
38
+ import { type DbRunToolOptions } from "./db-run.js";
34
39
  import { type ReadToolOptions } from "./read.js";
35
40
  import { type SemanticSearchToolOptions } from "./semantic-search.js";
36
41
  import { type WriteToolOptions } from "./write.js";
@@ -203,6 +208,43 @@ export declare const allTools: {
203
208
  recursive: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
204
209
  force: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
205
210
  }>, any>;
211
+ test_run: AgentTool<import("@sinclair/typebox").TObject<{
212
+ runner: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"auto">, import("@sinclair/typebox").TLiteral<"npm">, import("@sinclair/typebox").TLiteral<"pnpm">, import("@sinclair/typebox").TLiteral<"yarn">, import("@sinclair/typebox").TLiteral<"bun">, import("@sinclair/typebox").TLiteral<"vitest">, import("@sinclair/typebox").TLiteral<"jest">, import("@sinclair/typebox").TLiteral<"pytest">]>>;
213
+ script: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
214
+ args: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
215
+ path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
216
+ timeout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
217
+ }>, any>;
218
+ lint_run: AgentTool<import("@sinclair/typebox").TObject<{
219
+ runner: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"auto">, import("@sinclair/typebox").TLiteral<"npm">, import("@sinclair/typebox").TLiteral<"pnpm">, import("@sinclair/typebox").TLiteral<"yarn">, import("@sinclair/typebox").TLiteral<"bun">, import("@sinclair/typebox").TLiteral<"eslint">, import("@sinclair/typebox").TLiteral<"prettier">, import("@sinclair/typebox").TLiteral<"stylelint">]>>;
220
+ mode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"check">, import("@sinclair/typebox").TLiteral<"fix">]>>;
221
+ script: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
222
+ targets: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
223
+ args: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
224
+ path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
225
+ timeout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
226
+ }>, any>;
227
+ typecheck_run: AgentTool<import("@sinclair/typebox").TObject<{
228
+ runner: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"auto">, import("@sinclair/typebox").TLiteral<"npm">, import("@sinclair/typebox").TLiteral<"pnpm">, import("@sinclair/typebox").TLiteral<"yarn">, import("@sinclair/typebox").TLiteral<"bun">, import("@sinclair/typebox").TLiteral<"tsc">, import("@sinclair/typebox").TLiteral<"vue_tsc">, import("@sinclair/typebox").TLiteral<"pyright">, import("@sinclair/typebox").TLiteral<"mypy">]>>;
229
+ script: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
230
+ targets: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
231
+ args: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
232
+ path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
233
+ timeout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
234
+ }>, any>;
235
+ db_run: AgentTool<import("@sinclair/typebox").TObject<{
236
+ action: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"query">, import("@sinclair/typebox").TLiteral<"exec">, import("@sinclair/typebox").TLiteral<"schema">, import("@sinclair/typebox").TLiteral<"migrate">, import("@sinclair/typebox").TLiteral<"explain">]>>;
237
+ adapter: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"auto">, import("@sinclair/typebox").TLiteral<"postgres">, import("@sinclair/typebox").TLiteral<"mysql">, import("@sinclair/typebox").TLiteral<"sqlite">, import("@sinclair/typebox").TLiteral<"mongodb">, import("@sinclair/typebox").TLiteral<"redis">]>>;
238
+ connection: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
239
+ statement: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
240
+ format: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"table">, import("@sinclair/typebox").TLiteral<"json">, import("@sinclair/typebox").TLiteral<"raw">]>>;
241
+ allow_write: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
242
+ migrate_runner: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"auto">, import("@sinclair/typebox").TLiteral<"script">]>>;
243
+ script: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
244
+ args: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
245
+ path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
246
+ timeout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
247
+ }>, any>;
206
248
  todo_write: AgentTool<import("@sinclair/typebox").TObject<{
207
249
  tasks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
208
250
  id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
@@ -234,6 +276,8 @@ export interface ToolsOptions {
234
276
  gitWrite?: GitWriteToolOptions;
235
277
  /** Options for the fs_ops tool */
236
278
  fsOps?: FsOpsToolOptions;
279
+ /** Options for the db_run tool */
280
+ dbRun?: DbRunToolOptions;
237
281
  }
238
282
  /**
239
283
  * Create coding tools configured for a specific working directory.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/tools/index.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,8 @@ export { createGrepTool, grepTool, } from "./grep.js";
12
12
  export { createGitReadTool, gitReadTool, } from "./git-read.js";
13
13
  export { createGitWriteTool, gitWriteTool, } from "./git-write.js";
14
14
  export { createJqTool, jqTool, } from "./jq.js";
15
+ export { createDbRunTool, dbRunTool, DEFAULT_DB_RUN_TIMEOUT_SECONDS, } from "./db-run.js";
16
+ export { createLintRunTool, lintRunTool, DEFAULT_LINT_RUN_TIMEOUT_SECONDS, } from "./lint-run.js";
15
17
  export { createLsTool, lsTool, } from "./ls.js";
16
18
  export { createReadTool, readTool, } from "./read.js";
17
19
  export { createRgTool, rgTool, } from "./rg.js";
@@ -23,6 +25,8 @@ export { createWriteTool, writeTool, } from "./write.js";
23
25
  export { createTodoWriteTool, createTodoReadTool, todoWriteTool, todoReadTool, getTaskFilePath, } from "./todo.js";
24
26
  export { createYqTool, yqTool, } from "./yq.js";
25
27
  export { createTaskTool, } from "./task.js";
28
+ export { createTestRunTool, testRunTool, DEFAULT_TEST_RUN_TIMEOUT_SECONDS, } from "./test-run.js";
29
+ export { createTypecheckRunTool, typecheckRunTool, DEFAULT_TYPECHECK_RUN_TIMEOUT_SECONDS, } from "./typecheck-run.js";
26
30
  import { astGrepTool, createAstGrepTool } from "./ast-grep.js";
27
31
  import { bashTool, createBashTool } from "./bash.js";
28
32
  import { combyTool, createCombyTool } from "./comby.js";
@@ -36,6 +40,8 @@ import { createGrepTool, grepTool } from "./grep.js";
36
40
  import { createGitReadTool, gitReadTool } from "./git-read.js";
37
41
  import { createGitWriteTool, gitWriteTool } from "./git-write.js";
38
42
  import { createJqTool, jqTool } from "./jq.js";
43
+ import { createDbRunTool, dbRunTool } from "./db-run.js";
44
+ import { createLintRunTool, lintRunTool } from "./lint-run.js";
39
45
  import { createLsTool, lsTool } from "./ls.js";
40
46
  import { createReadTool, readTool } from "./read.js";
41
47
  import { createRgTool, rgTool } from "./rg.js";
@@ -45,6 +51,8 @@ import { createSemanticSearchTool, semanticSearchTool, } from "./semantic-search
45
51
  import { createWriteTool, writeTool } from "./write.js";
46
52
  import { createYqTool, yqTool } from "./yq.js";
47
53
  import { todoWriteTool, todoReadTool } from "./todo.js";
54
+ import { createTestRunTool, testRunTool } from "./test-run.js";
55
+ import { createTypecheckRunTool, typecheckRunTool } from "./typecheck-run.js";
48
56
  // Default tools for full access mode (using process.cwd())
49
57
  export const codingTools = [readTool, bashTool, editTool, writeTool];
50
58
  // Read-only tools for exploration without modification (using process.cwd())
@@ -91,6 +99,10 @@ export const allTools = {
91
99
  git_read: gitReadTool,
92
100
  git_write: gitWriteTool,
93
101
  fs_ops: fsOpsTool,
102
+ test_run: testRunTool,
103
+ lint_run: lintRunTool,
104
+ typecheck_run: typecheckRunTool,
105
+ db_run: dbRunTool,
94
106
  todo_write: todoWriteTool,
95
107
  todo_read: todoReadTool,
96
108
  };
@@ -158,6 +170,10 @@ export function createAllTools(cwd, options) {
158
170
  git_read: createGitReadTool(cwd),
159
171
  git_write: createGitWriteTool(cwd, options?.gitWrite),
160
172
  fs_ops: createFsOpsTool(cwd, options?.fsOps),
173
+ test_run: createTestRunTool(cwd),
174
+ lint_run: createLintRunTool(cwd),
175
+ typecheck_run: createTypecheckRunTool(cwd),
176
+ db_run: createDbRunTool(cwd, options?.dbRun),
161
177
  todo_write: todoWriteTool,
162
178
  todo_read: todoReadTool,
163
179
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/tools/index.ts"],"names":[],"mappings":"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","sourcesContent":["export {\n\tcreateAstGrepTool,\n\ttype AstGrepToolInput,\n\tastGrepTool,\n} from \"./ast-grep.js\";\nexport {\n\ttype BashOperations,\n\ttype BashSpawnContext,\n\ttype BashSpawnHook,\n\ttype BashToolDetails,\n\ttype BashToolInput,\n\ttype BashToolOptions,\n\tbashTool,\n\tcreateBashTool,\n} from \"./bash.js\";\nexport {\n\ttype CombyToolInput,\n\tcombyTool,\n\tcreateCombyTool,\n} from \"./comby.js\";\nexport {\n\tcreateEditTool,\n\ttype EditOperations,\n\ttype EditToolDetails,\n\ttype EditToolInput,\n\ttype EditToolOptions,\n\teditTool,\n} from \"./edit.js\";\nexport {\n\tcreateFetchTool,\n\ttype FetchToolDetails,\n\ttype FetchToolInput,\n\ttype FetchToolOptions,\n\ttype FetchMethod,\n\ttype FetchResponseFormat,\n\tDEFAULT_FETCH_TIMEOUT_SECONDS,\n\tDEFAULT_FETCH_MAX_BYTES,\n\tDEFAULT_FETCH_MAX_REDIRECTS,\n\tgetAllowedFetchMethodsForProfile,\n\tfetchTool,\n} from \"./fetch.js\";\nexport {\n\tcreateWebSearchTool,\n\ttype WebSearchAttemptDetail,\n\ttype WebSearchAttemptStatus,\n\ttype WebSearchFallbackMode,\n\ttype WebSearchProvider,\n\ttype WebSearchProviderMode,\n\ttype WebSearchRuntimeConfig,\n\ttype WebSearchSafeSearch,\n\ttype WebSearchSearchDepth,\n\ttype WebSearchToolDetails,\n\ttype WebSearchToolInput,\n\ttype WebSearchToolOptions,\n\tDEFAULT_WEB_SEARCH_MAX_RESULTS,\n\tDEFAULT_WEB_SEARCH_TIMEOUT_SECONDS,\n\twebSearchTool,\n} from \"./web-search.js\";\nexport {\n\ttype ExternalCliToolDetails,\n\ttype ExternalCliToolInput,\n\ttype ExternalCliToolOptions,\n\tcreateExternalCliTool,\n} from \"./external-cli.js\";\nexport {\n\tcreateFdTool,\n\ttype FdToolInput,\n\tfdTool,\n} from \"./fd.js\";\nexport {\n\tcreateFindTool,\n\ttype FindOperations,\n\ttype FindToolDetails,\n\ttype FindToolInput,\n\ttype FindToolOptions,\n\tfindTool,\n} from \"./find.js\";\nexport {\n\tcreateFsOpsTool,\n\ttype FsOpsToolDetails,\n\ttype FsOpsToolInput,\n\ttype FsOpsToolOptions,\n\tfsOpsTool,\n} from \"./fs-ops.js\";\nexport {\n\tcreateGrepTool,\n\ttype GrepOperations,\n\ttype GrepToolDetails,\n\ttype GrepToolInput,\n\ttype GrepToolOptions,\n\tgrepTool,\n} from \"./grep.js\";\nexport {\n\tcreateGitReadTool,\n\ttype GitReadToolDetails,\n\ttype GitReadToolInput,\n\ttype GitReadToolOptions,\n\tgitReadTool,\n} from \"./git-read.js\";\nexport {\n\tcreateGitWriteTool,\n\ttype GitWriteToolDetails,\n\ttype GitWriteToolInput,\n\ttype GitWriteToolOptions,\n\tgitWriteTool,\n} from \"./git-write.js\";\nexport {\n\tcreateJqTool,\n\ttype JqToolInput,\n\tjqTool,\n} from \"./jq.js\";\nexport {\n\tcreateLsTool,\n\ttype LsOperations,\n\ttype LsToolDetails,\n\ttype LsToolInput,\n\ttype LsToolOptions,\n\tlsTool,\n} from \"./ls.js\";\nexport {\n\tcreateReadTool,\n\ttype ReadOperations,\n\ttype ReadToolDetails,\n\ttype ReadToolInput,\n\ttype ReadToolOptions,\n\treadTool,\n} from \"./read.js\";\nexport {\n\tcreateRgTool,\n\ttype RgToolInput,\n\trgTool,\n} from \"./rg.js\";\nexport {\n\tcreateSedTool,\n\ttype SedToolInput,\n\tsedTool,\n} from \"./sed.js\";\nexport {\n\tcreateSemgrepTool,\n\ttype SemgrepToolInput,\n\tsemgrepTool,\n} from \"./semgrep.js\";\nexport {\n\tcreateSemanticSearchTool,\n\ttype SemanticSearchToolInput,\n\ttype SemanticSearchToolOptions,\n\tsemanticSearchTool,\n} from \"./semantic-search.js\";\nexport {\n\tDEFAULT_MAX_BYTES,\n\tDEFAULT_MAX_LINES,\n\tformatSize,\n\ttype TruncationOptions,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n\ttruncateTail,\n} from \"./truncate.js\";\nexport {\n\tcreateWriteTool,\n\ttype WriteOperations,\n\ttype WriteToolInput,\n\ttype WriteToolOptions,\n\twriteTool,\n} from \"./write.js\";\nexport { type ToolPermissionGuard, type ToolPermissionRequest } from \"./permissions.js\";\nexport {\n\tcreateTodoWriteTool,\n\tcreateTodoReadTool,\n\ttodoWriteTool,\n\ttodoReadTool,\n\tgetTaskFilePath,\n\ttype TodoTask,\n\ttype TodoTaskStatus,\n\ttype TodoWriteInput,\n\ttype TodoReadInput,\n} from \"./todo.js\";\nexport {\n\tcreateYqTool,\n\ttype YqToolInput,\n\tyqTool,\n} from \"./yq.js\";\nexport {\n\tcreateTaskTool,\n\ttype SubagentRunner,\n\ttype TaskToolProgress,\n\ttype TaskToolProgressPhase,\n\ttype TaskToolInput,\n\ttype TaskToolDetails,\n} from \"./task.js\";\n\nimport type { AgentTool } from \"@mariozechner/pi-agent-core\";\nimport { astGrepTool, createAstGrepTool } from \"./ast-grep.js\";\nimport { type BashToolOptions, bashTool, createBashTool } from \"./bash.js\";\nimport { combyTool, createCombyTool } from \"./comby.js\";\nimport { createEditTool, type EditToolOptions, editTool } from \"./edit.js\";\nimport {\n\tcreateFetchTool,\n\ttype FetchToolOptions,\n\tfetchTool,\n\tgetAllowedFetchMethodsForProfile,\n} from \"./fetch.js\";\nimport { createWebSearchTool, type WebSearchToolOptions, webSearchTool } from \"./web-search.js\";\nimport { createFdTool, fdTool } from \"./fd.js\";\nimport { createFindTool, findTool } from \"./find.js\";\nimport { createFsOpsTool, type FsOpsToolOptions, fsOpsTool } from \"./fs-ops.js\";\nimport { createGrepTool, grepTool } from \"./grep.js\";\nimport { createGitReadTool, gitReadTool } from \"./git-read.js\";\nimport { createGitWriteTool, type GitWriteToolOptions, gitWriteTool } from \"./git-write.js\";\nimport { createJqTool, jqTool } from \"./jq.js\";\nimport { createLsTool, lsTool } from \"./ls.js\";\nimport { createReadTool, type ReadToolOptions, readTool } from \"./read.js\";\nimport { createRgTool, rgTool } from \"./rg.js\";\nimport { createSedTool, sedTool } from \"./sed.js\";\nimport { createSemgrepTool, semgrepTool } from \"./semgrep.js\";\nimport {\n\tcreateSemanticSearchTool,\n\ttype SemanticSearchToolOptions,\n\tsemanticSearchTool,\n} from \"./semantic-search.js\";\nimport { createWriteTool, type WriteToolOptions, writeTool } from \"./write.js\";\nimport { createYqTool, yqTool } from \"./yq.js\";\nimport { todoWriteTool, todoReadTool } from \"./todo.js\";\n\n/** Tool type (AgentTool from pi-ai) */\nexport type Tool = AgentTool<any>;\n\n// Default tools for full access mode (using process.cwd())\nexport const codingTools: Tool[] = [readTool, bashTool, editTool, writeTool];\n\n// Read-only tools for exploration without modification (using process.cwd())\nexport const readOnlyTools: Tool[] = [\n\treadTool,\n\tgrepTool,\n\tfindTool,\n\tlsTool,\n\trgTool,\n\tfdTool,\n\tastGrepTool,\n\tcombyTool,\n\tjqTool,\n\tyqTool,\n\tsemgrepTool,\n\tsedTool,\n\tsemanticSearchTool,\n\tcreateFetchTool(process.cwd(), {\n\t\tresolveAllowedMethods: () => getAllowedFetchMethodsForProfile(\"plan\"),\n\t}),\n\twebSearchTool,\n\tgitReadTool,\n];\n\n// All available tools (using process.cwd())\nexport const allTools = {\n\tread: readTool,\n\tbash: bashTool,\n\tedit: editTool,\n\twrite: writeTool,\n\tgrep: grepTool,\n\tfind: findTool,\n\tls: lsTool,\n\trg: rgTool,\n\tfd: fdTool,\n\tast_grep: astGrepTool,\n\tcomby: combyTool,\n\tjq: jqTool,\n\tyq: yqTool,\n\tsemgrep: semgrepTool,\n\tsed: sedTool,\n\tsemantic_search: semanticSearchTool,\n\tfetch: fetchTool,\n\tweb_search: webSearchTool,\n\tgit_read: gitReadTool,\n\tgit_write: gitWriteTool,\n\tfs_ops: fsOpsTool,\n\ttodo_write: todoWriteTool,\n\ttodo_read: todoReadTool,\n};\n\nexport type ToolName = keyof typeof allTools;\n\nexport interface ToolsOptions {\n\t/** Options for the read tool */\n\tread?: ReadToolOptions;\n\t/** Options for the bash tool */\n\tbash?: BashToolOptions;\n\t/** Options for the edit tool */\n\tedit?: EditToolOptions;\n\t/** Options for the write tool */\n\twrite?: WriteToolOptions;\n\t/** Options for the semantic_search tool */\n\tsemantic?: SemanticSearchToolOptions;\n\t/** Options for the fetch tool */\n\tfetch?: FetchToolOptions;\n\t/** Options for the web_search tool */\n\twebSearch?: WebSearchToolOptions;\n\t/** Options for the git_write tool */\n\tgitWrite?: GitWriteToolOptions;\n\t/** Options for the fs_ops tool */\n\tfsOps?: FsOpsToolOptions;\n}\n\n/**\n * Create coding tools configured for a specific working directory.\n */\nexport function createCodingTools(cwd: string, options?: ToolsOptions): Tool[] {\n\treturn [\n\t\tcreateReadTool(cwd, options?.read),\n\t\tcreateBashTool(cwd, options?.bash),\n\t\tcreateEditTool(cwd, options?.edit),\n\t\tcreateWriteTool(cwd, options?.write),\n\t];\n}\n\n/**\n * Create read-only tools configured for a specific working directory.\n */\nexport function createReadOnlyTools(cwd: string, options?: ToolsOptions): Tool[] {\n\tconst fetchOptions: FetchToolOptions = {\n\t\t...(options?.fetch ?? {}),\n\t\tresolveAllowedMethods:\n\t\t\toptions?.fetch?.resolveAllowedMethods ?? (() => getAllowedFetchMethodsForProfile(\"plan\")),\n\t};\n\n\treturn [\n\t\tcreateReadTool(cwd, options?.read),\n\t\tcreateGrepTool(cwd),\n\t\tcreateFindTool(cwd),\n\t\tcreateLsTool(cwd),\n\t\tcreateRgTool(cwd),\n\t\tcreateFdTool(cwd),\n\t\tcreateAstGrepTool(cwd),\n\t\tcreateCombyTool(cwd),\n\t\tcreateJqTool(cwd),\n\t\tcreateYqTool(cwd),\n\t\tcreateSemgrepTool(cwd),\n\t\tcreateSedTool(cwd),\n\t\tcreateSemanticSearchTool(cwd, options?.semantic),\n\t\tcreateFetchTool(cwd, fetchOptions),\n\t\tcreateWebSearchTool(cwd, options?.webSearch),\n\t\tcreateGitReadTool(cwd),\n\t];\n}\n\n/**\n * Create all tools configured for a specific working directory.\n */\nexport function createAllTools(cwd: string, options?: ToolsOptions): Record<ToolName, Tool> {\n\treturn {\n\t\tread: createReadTool(cwd, options?.read),\n\t\tbash: createBashTool(cwd, options?.bash),\n\t\tedit: createEditTool(cwd, options?.edit),\n\t\twrite: createWriteTool(cwd, options?.write),\n\t\tgrep: createGrepTool(cwd),\n\t\tfind: createFindTool(cwd),\n\t\tls: createLsTool(cwd),\n\t\trg: createRgTool(cwd),\n\t\tfd: createFdTool(cwd),\n\t\tast_grep: createAstGrepTool(cwd),\n\t\tcomby: createCombyTool(cwd),\n\t\tjq: createJqTool(cwd),\n\t\tyq: createYqTool(cwd),\n\t\tsemgrep: createSemgrepTool(cwd),\n\t\tsed: createSedTool(cwd),\n\t\tsemantic_search: createSemanticSearchTool(cwd, options?.semantic),\n\t\tfetch: createFetchTool(cwd, options?.fetch),\n\t\tweb_search: createWebSearchTool(cwd, options?.webSearch),\n\t\tgit_read: createGitReadTool(cwd),\n\t\tgit_write: createGitWriteTool(cwd, options?.gitWrite),\n\t\tfs_ops: createFsOpsTool(cwd, options?.fsOps),\n\t\ttodo_write: todoWriteTool,\n\t\ttodo_read: todoReadTool,\n\t};\n}\n\n/**\n * Create a filtered set of tools from a list of tool names.\n * Used by agent profiles and the Task tool to configure subagent capabilities.\n */\nexport function createToolsFromNames(cwd: string, names: string[], options?: ToolsOptions): Tool[] {\n\tconst all = createAllTools(cwd, options);\n\treturn names\n\t\t.filter((n): n is ToolName => n in all)\n\t\t.map((n) => all[n]);\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EAEjB,WAAW,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAON,QAAQ,EACR,cAAc,GACd,MAAM,WAAW,CAAC;AACnB,OAAO,EAEN,SAAS,EACT,eAAe,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,cAAc,EAKd,QAAQ,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EACN,eAAe,EAMf,6BAA6B,EAC7B,uBAAuB,EACvB,2BAA2B,EAC3B,gCAAgC,EAChC,SAAS,GACT,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,mBAAmB,EAYnB,8BAA8B,EAC9B,kCAAkC,EAClC,aAAa,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAIN,qBAAqB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,YAAY,EAEZ,MAAM,GACN,MAAM,SAAS,CAAC;AACjB,OAAO,EACN,cAAc,EAKd,QAAQ,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EACN,eAAe,EAIf,SAAS,GACT,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,cAAc,EAKd,QAAQ,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EACN,iBAAiB,EAIjB,WAAW,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,kBAAkB,EAIlB,YAAY,GACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,YAAY,EAEZ,MAAM,GACN,MAAM,SAAS,CAAC;AACjB,OAAO,EACN,eAAe,EAWf,SAAS,EACT,8BAA8B,GAC9B,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,iBAAiB,EAMjB,WAAW,EACX,gCAAgC,GAChC,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,YAAY,EAKZ,MAAM,GACN,MAAM,SAAS,CAAC;AACjB,OAAO,EACN,cAAc,EAKd,QAAQ,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EACN,YAAY,EAEZ,MAAM,GACN,MAAM,SAAS,CAAC;AACjB,OAAO,EACN,aAAa,EAEb,OAAO,GACP,MAAM,UAAU,CAAC;AAClB,OAAO,EACN,iBAAiB,EAEjB,WAAW,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,wBAAwB,EAGxB,kBAAkB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EAGV,YAAY,EACZ,YAAY,EACZ,YAAY,GACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,eAAe,EAIf,SAAS,GACT,MAAM,YAAY,CAAC;AAEpB,OAAO,EACN,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,eAAe,GAKf,MAAM,WAAW,CAAC;AACnB,OAAO,EACN,YAAY,EAEZ,MAAM,GACN,MAAM,SAAS,CAAC;AACjB,OAAO,EACN,cAAc,GAMd,MAAM,WAAW,CAAC;AACnB,OAAO,EACN,iBAAiB,EAKjB,WAAW,EACX,gCAAgC,GAChC,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,sBAAsB,EAMtB,gBAAgB,EAChB,qCAAqC,GACrC,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAwB,QAAQ,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,cAAc,EAAwB,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EACN,eAAe,EAEf,SAAS,EACT,gCAAgC,GAChC,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAA6B,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,eAAe,EAAyB,SAAS,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAA4B,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAyB,SAAS,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAwB,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EACN,wBAAwB,EAExB,kBAAkB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAyB,SAAS,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAK9E,2DAA2D;AAC3D,MAAM,CAAC,MAAM,WAAW,GAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAE7E,6EAA6E;AAC7E,MAAM,CAAC,MAAM,aAAa,GAAW;IACpC,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,WAAW;IACX,SAAS;IACT,MAAM;IACN,MAAM;IACN,WAAW;IACX,OAAO;IACP,kBAAkB;IAClB,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE;QAC9B,qBAAqB,EAAE,GAAG,EAAE,CAAC,gCAAgC,CAAC,MAAM,CAAC;KACrE,CAAC;IACF,aAAa;IACb,WAAW;CACX,CAAC;AAEF,4CAA4C;AAC5C,MAAM,CAAC,MAAM,QAAQ,GAAG;IACvB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,QAAQ,EAAE,WAAW;IACrB,KAAK,EAAE,SAAS;IAChB,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,OAAO,EAAE,WAAW;IACpB,GAAG,EAAE,OAAO;IACZ,eAAe,EAAE,kBAAkB;IACnC,KAAK,EAAE,SAAS;IAChB,UAAU,EAAE,aAAa;IACzB,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,YAAY;IACvB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,WAAW;IACrB,aAAa,EAAE,gBAAgB;IAC/B,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE,aAAa;IACzB,SAAS,EAAE,YAAY;CACvB,CAAC;AA2BF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,OAAsB;IACpE,OAAO;QACN,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;QAClC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;QAClC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;QAClC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC;KACpC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,OAAsB;IACtE,MAAM,YAAY,GAAqB;QACtC,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;QACzB,qBAAqB,EACpB,OAAO,EAAE,KAAK,EAAE,qBAAqB,IAAI,CAAC,GAAG,EAAE,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAAC;KAC1F,CAAC;IAEF,OAAO;QACN,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;QAClC,cAAc,CAAC,GAAG,CAAC;QACnB,cAAc,CAAC,GAAG,CAAC;QACnB,YAAY,CAAC,GAAG,CAAC;QACjB,YAAY,CAAC,GAAG,CAAC;QACjB,YAAY,CAAC,GAAG,CAAC;QACjB,iBAAiB,CAAC,GAAG,CAAC;QACtB,eAAe,CAAC,GAAG,CAAC;QACpB,YAAY,CAAC,GAAG,CAAC;QACjB,YAAY,CAAC,GAAG,CAAC;QACjB,iBAAiB,CAAC,GAAG,CAAC;QACtB,aAAa,CAAC,GAAG,CAAC;QAClB,wBAAwB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC;QAChD,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC;QAClC,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC;QAC5C,iBAAiB,CAAC,GAAG,CAAC;KACtB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,OAAsB;IACjE,OAAO;QACN,IAAI,EAAE,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;QACxC,IAAI,EAAE,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;QACxC,IAAI,EAAE,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;QACxC,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC;QAC3C,IAAI,EAAE,cAAc,CAAC,GAAG,CAAC;QACzB,IAAI,EAAE,cAAc,CAAC,GAAG,CAAC;QACzB,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC;QACrB,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC;QACrB,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC;QACrB,QAAQ,EAAE,iBAAiB,CAAC,GAAG,CAAC;QAChC,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC;QAC3B,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC;QACrB,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC;QACrB,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC;QAC/B,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC;QACvB,eAAe,EAAE,wBAAwB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC;QACjE,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC;QAC3C,UAAU,EAAE,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC;QACxD,QAAQ,EAAE,iBAAiB,CAAC,GAAG,CAAC;QAChC,SAAS,EAAE,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC;QACrD,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC;QAC5C,QAAQ,EAAE,iBAAiB,CAAC,GAAG,CAAC;QAChC,QAAQ,EAAE,iBAAiB,CAAC,GAAG,CAAC;QAChC,aAAa,EAAE,sBAAsB,CAAC,GAAG,CAAC;QAC1C,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC;QAC5C,UAAU,EAAE,aAAa;QACzB,SAAS,EAAE,YAAY;KACvB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,KAAe,EAAE,OAAsB;IACxF,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACzC,OAAO,KAAK;SACV,MAAM,CAAC,CAAC,CAAC,EAAiB,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC","sourcesContent":["export {\n\tcreateAstGrepTool,\n\ttype AstGrepToolInput,\n\tastGrepTool,\n} from \"./ast-grep.js\";\nexport {\n\ttype BashOperations,\n\ttype BashSpawnContext,\n\ttype BashSpawnHook,\n\ttype BashToolDetails,\n\ttype BashToolInput,\n\ttype BashToolOptions,\n\tbashTool,\n\tcreateBashTool,\n} from \"./bash.js\";\nexport {\n\ttype CombyToolInput,\n\tcombyTool,\n\tcreateCombyTool,\n} from \"./comby.js\";\nexport {\n\tcreateEditTool,\n\ttype EditOperations,\n\ttype EditToolDetails,\n\ttype EditToolInput,\n\ttype EditToolOptions,\n\teditTool,\n} from \"./edit.js\";\nexport {\n\tcreateFetchTool,\n\ttype FetchToolDetails,\n\ttype FetchToolInput,\n\ttype FetchToolOptions,\n\ttype FetchMethod,\n\ttype FetchResponseFormat,\n\tDEFAULT_FETCH_TIMEOUT_SECONDS,\n\tDEFAULT_FETCH_MAX_BYTES,\n\tDEFAULT_FETCH_MAX_REDIRECTS,\n\tgetAllowedFetchMethodsForProfile,\n\tfetchTool,\n} from \"./fetch.js\";\nexport {\n\tcreateWebSearchTool,\n\ttype WebSearchAttemptDetail,\n\ttype WebSearchAttemptStatus,\n\ttype WebSearchFallbackMode,\n\ttype WebSearchProvider,\n\ttype WebSearchProviderMode,\n\ttype WebSearchRuntimeConfig,\n\ttype WebSearchSafeSearch,\n\ttype WebSearchSearchDepth,\n\ttype WebSearchToolDetails,\n\ttype WebSearchToolInput,\n\ttype WebSearchToolOptions,\n\tDEFAULT_WEB_SEARCH_MAX_RESULTS,\n\tDEFAULT_WEB_SEARCH_TIMEOUT_SECONDS,\n\twebSearchTool,\n} from \"./web-search.js\";\nexport {\n\ttype ExternalCliToolDetails,\n\ttype ExternalCliToolInput,\n\ttype ExternalCliToolOptions,\n\tcreateExternalCliTool,\n} from \"./external-cli.js\";\nexport {\n\tcreateFdTool,\n\ttype FdToolInput,\n\tfdTool,\n} from \"./fd.js\";\nexport {\n\tcreateFindTool,\n\ttype FindOperations,\n\ttype FindToolDetails,\n\ttype FindToolInput,\n\ttype FindToolOptions,\n\tfindTool,\n} from \"./find.js\";\nexport {\n\tcreateFsOpsTool,\n\ttype FsOpsToolDetails,\n\ttype FsOpsToolInput,\n\ttype FsOpsToolOptions,\n\tfsOpsTool,\n} from \"./fs-ops.js\";\nexport {\n\tcreateGrepTool,\n\ttype GrepOperations,\n\ttype GrepToolDetails,\n\ttype GrepToolInput,\n\ttype GrepToolOptions,\n\tgrepTool,\n} from \"./grep.js\";\nexport {\n\tcreateGitReadTool,\n\ttype GitReadToolDetails,\n\ttype GitReadToolInput,\n\ttype GitReadToolOptions,\n\tgitReadTool,\n} from \"./git-read.js\";\nexport {\n\tcreateGitWriteTool,\n\ttype GitWriteToolDetails,\n\ttype GitWriteToolInput,\n\ttype GitWriteToolOptions,\n\tgitWriteTool,\n} from \"./git-write.js\";\nexport {\n\tcreateJqTool,\n\ttype JqToolInput,\n\tjqTool,\n} from \"./jq.js\";\nexport {\n\tcreateDbRunTool,\n\ttype DbRunAction,\n\ttype DbRunAdapter,\n\ttype DbRunMigrateRunner,\n\ttype DbRunStatus,\n\ttype DbRunToolDetails,\n\ttype DbRunToolInput,\n\ttype DbRunToolOptions,\n\ttype DbToolsConnectionConfig,\n\ttype DbToolsMigrateConfig,\n\ttype DbToolsRuntimeConfig,\n\tdbRunTool,\n\tDEFAULT_DB_RUN_TIMEOUT_SECONDS,\n} from \"./db-run.js\";\nexport {\n\tcreateLintRunTool,\n\ttype LintRunMode,\n\ttype LintRunRunner,\n\ttype LintRunStatus,\n\ttype LintRunToolDetails,\n\ttype LintRunToolInput,\n\tlintRunTool,\n\tDEFAULT_LINT_RUN_TIMEOUT_SECONDS,\n} from \"./lint-run.js\";\nexport {\n\tcreateLsTool,\n\ttype LsOperations,\n\ttype LsToolDetails,\n\ttype LsToolInput,\n\ttype LsToolOptions,\n\tlsTool,\n} from \"./ls.js\";\nexport {\n\tcreateReadTool,\n\ttype ReadOperations,\n\ttype ReadToolDetails,\n\ttype ReadToolInput,\n\ttype ReadToolOptions,\n\treadTool,\n} from \"./read.js\";\nexport {\n\tcreateRgTool,\n\ttype RgToolInput,\n\trgTool,\n} from \"./rg.js\";\nexport {\n\tcreateSedTool,\n\ttype SedToolInput,\n\tsedTool,\n} from \"./sed.js\";\nexport {\n\tcreateSemgrepTool,\n\ttype SemgrepToolInput,\n\tsemgrepTool,\n} from \"./semgrep.js\";\nexport {\n\tcreateSemanticSearchTool,\n\ttype SemanticSearchToolInput,\n\ttype SemanticSearchToolOptions,\n\tsemanticSearchTool,\n} from \"./semantic-search.js\";\nexport {\n\tDEFAULT_MAX_BYTES,\n\tDEFAULT_MAX_LINES,\n\tformatSize,\n\ttype TruncationOptions,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n\ttruncateTail,\n} from \"./truncate.js\";\nexport {\n\tcreateWriteTool,\n\ttype WriteOperations,\n\ttype WriteToolInput,\n\ttype WriteToolOptions,\n\twriteTool,\n} from \"./write.js\";\nexport { type ToolPermissionGuard, type ToolPermissionRequest } from \"./permissions.js\";\nexport {\n\tcreateTodoWriteTool,\n\tcreateTodoReadTool,\n\ttodoWriteTool,\n\ttodoReadTool,\n\tgetTaskFilePath,\n\ttype TodoTask,\n\ttype TodoTaskStatus,\n\ttype TodoWriteInput,\n\ttype TodoReadInput,\n} from \"./todo.js\";\nexport {\n\tcreateYqTool,\n\ttype YqToolInput,\n\tyqTool,\n} from \"./yq.js\";\nexport {\n\tcreateTaskTool,\n\ttype SubagentRunner,\n\ttype TaskToolProgress,\n\ttype TaskToolProgressPhase,\n\ttype TaskToolInput,\n\ttype TaskToolDetails,\n} from \"./task.js\";\nexport {\n\tcreateTestRunTool,\n\ttype TestRunRunner,\n\ttype TestRunStatus,\n\ttype TestRunToolDetails,\n\ttype TestRunToolInput,\n\ttestRunTool,\n\tDEFAULT_TEST_RUN_TIMEOUT_SECONDS,\n} from \"./test-run.js\";\nexport {\n\tcreateTypecheckRunTool,\n\ttype TypecheckRunItemDetails,\n\ttype TypecheckRunRunner,\n\ttype TypecheckRunStatus,\n\ttype TypecheckRunToolDetails,\n\ttype TypecheckRunToolInput,\n\ttypecheckRunTool,\n\tDEFAULT_TYPECHECK_RUN_TIMEOUT_SECONDS,\n} from \"./typecheck-run.js\";\n\nimport type { AgentTool } from \"@mariozechner/pi-agent-core\";\nimport { astGrepTool, createAstGrepTool } from \"./ast-grep.js\";\nimport { type BashToolOptions, bashTool, createBashTool } from \"./bash.js\";\nimport { combyTool, createCombyTool } from \"./comby.js\";\nimport { createEditTool, type EditToolOptions, editTool } from \"./edit.js\";\nimport {\n\tcreateFetchTool,\n\ttype FetchToolOptions,\n\tfetchTool,\n\tgetAllowedFetchMethodsForProfile,\n} from \"./fetch.js\";\nimport { createWebSearchTool, type WebSearchToolOptions, webSearchTool } from \"./web-search.js\";\nimport { createFdTool, fdTool } from \"./fd.js\";\nimport { createFindTool, findTool } from \"./find.js\";\nimport { createFsOpsTool, type FsOpsToolOptions, fsOpsTool } from \"./fs-ops.js\";\nimport { createGrepTool, grepTool } from \"./grep.js\";\nimport { createGitReadTool, gitReadTool } from \"./git-read.js\";\nimport { createGitWriteTool, type GitWriteToolOptions, gitWriteTool } from \"./git-write.js\";\nimport { createJqTool, jqTool } from \"./jq.js\";\nimport { createDbRunTool, type DbRunToolOptions, dbRunTool } from \"./db-run.js\";\nimport { createLintRunTool, lintRunTool } from \"./lint-run.js\";\nimport { createLsTool, lsTool } from \"./ls.js\";\nimport { createReadTool, type ReadToolOptions, readTool } from \"./read.js\";\nimport { createRgTool, rgTool } from \"./rg.js\";\nimport { createSedTool, sedTool } from \"./sed.js\";\nimport { createSemgrepTool, semgrepTool } from \"./semgrep.js\";\nimport {\n\tcreateSemanticSearchTool,\n\ttype SemanticSearchToolOptions,\n\tsemanticSearchTool,\n} from \"./semantic-search.js\";\nimport { createWriteTool, type WriteToolOptions, writeTool } from \"./write.js\";\nimport { createYqTool, yqTool } from \"./yq.js\";\nimport { todoWriteTool, todoReadTool } from \"./todo.js\";\nimport { createTestRunTool, testRunTool } from \"./test-run.js\";\nimport { createTypecheckRunTool, typecheckRunTool } from \"./typecheck-run.js\";\n\n/** Tool type (AgentTool from pi-ai) */\nexport type Tool = AgentTool<any>;\n\n// Default tools for full access mode (using process.cwd())\nexport const codingTools: Tool[] = [readTool, bashTool, editTool, writeTool];\n\n// Read-only tools for exploration without modification (using process.cwd())\nexport const readOnlyTools: Tool[] = [\n\treadTool,\n\tgrepTool,\n\tfindTool,\n\tlsTool,\n\trgTool,\n\tfdTool,\n\tastGrepTool,\n\tcombyTool,\n\tjqTool,\n\tyqTool,\n\tsemgrepTool,\n\tsedTool,\n\tsemanticSearchTool,\n\tcreateFetchTool(process.cwd(), {\n\t\tresolveAllowedMethods: () => getAllowedFetchMethodsForProfile(\"plan\"),\n\t}),\n\twebSearchTool,\n\tgitReadTool,\n];\n\n// All available tools (using process.cwd())\nexport const allTools = {\n\tread: readTool,\n\tbash: bashTool,\n\tedit: editTool,\n\twrite: writeTool,\n\tgrep: grepTool,\n\tfind: findTool,\n\tls: lsTool,\n\trg: rgTool,\n\tfd: fdTool,\n\tast_grep: astGrepTool,\n\tcomby: combyTool,\n\tjq: jqTool,\n\tyq: yqTool,\n\tsemgrep: semgrepTool,\n\tsed: sedTool,\n\tsemantic_search: semanticSearchTool,\n\tfetch: fetchTool,\n\tweb_search: webSearchTool,\n\tgit_read: gitReadTool,\n\tgit_write: gitWriteTool,\n\tfs_ops: fsOpsTool,\n\ttest_run: testRunTool,\n\tlint_run: lintRunTool,\n\ttypecheck_run: typecheckRunTool,\n\tdb_run: dbRunTool,\n\ttodo_write: todoWriteTool,\n\ttodo_read: todoReadTool,\n};\n\nexport type ToolName = keyof typeof allTools;\n\nexport interface ToolsOptions {\n\t/** Options for the read tool */\n\tread?: ReadToolOptions;\n\t/** Options for the bash tool */\n\tbash?: BashToolOptions;\n\t/** Options for the edit tool */\n\tedit?: EditToolOptions;\n\t/** Options for the write tool */\n\twrite?: WriteToolOptions;\n\t/** Options for the semantic_search tool */\n\tsemantic?: SemanticSearchToolOptions;\n\t/** Options for the fetch tool */\n\tfetch?: FetchToolOptions;\n\t/** Options for the web_search tool */\n\twebSearch?: WebSearchToolOptions;\n\t/** Options for the git_write tool */\n\tgitWrite?: GitWriteToolOptions;\n\t/** Options for the fs_ops tool */\n\tfsOps?: FsOpsToolOptions;\n\t/** Options for the db_run tool */\n\tdbRun?: DbRunToolOptions;\n}\n\n/**\n * Create coding tools configured for a specific working directory.\n */\nexport function createCodingTools(cwd: string, options?: ToolsOptions): Tool[] {\n\treturn [\n\t\tcreateReadTool(cwd, options?.read),\n\t\tcreateBashTool(cwd, options?.bash),\n\t\tcreateEditTool(cwd, options?.edit),\n\t\tcreateWriteTool(cwd, options?.write),\n\t];\n}\n\n/**\n * Create read-only tools configured for a specific working directory.\n */\nexport function createReadOnlyTools(cwd: string, options?: ToolsOptions): Tool[] {\n\tconst fetchOptions: FetchToolOptions = {\n\t\t...(options?.fetch ?? {}),\n\t\tresolveAllowedMethods:\n\t\t\toptions?.fetch?.resolveAllowedMethods ?? (() => getAllowedFetchMethodsForProfile(\"plan\")),\n\t};\n\n\treturn [\n\t\tcreateReadTool(cwd, options?.read),\n\t\tcreateGrepTool(cwd),\n\t\tcreateFindTool(cwd),\n\t\tcreateLsTool(cwd),\n\t\tcreateRgTool(cwd),\n\t\tcreateFdTool(cwd),\n\t\tcreateAstGrepTool(cwd),\n\t\tcreateCombyTool(cwd),\n\t\tcreateJqTool(cwd),\n\t\tcreateYqTool(cwd),\n\t\tcreateSemgrepTool(cwd),\n\t\tcreateSedTool(cwd),\n\t\tcreateSemanticSearchTool(cwd, options?.semantic),\n\t\tcreateFetchTool(cwd, fetchOptions),\n\t\tcreateWebSearchTool(cwd, options?.webSearch),\n\t\tcreateGitReadTool(cwd),\n\t];\n}\n\n/**\n * Create all tools configured for a specific working directory.\n */\nexport function createAllTools(cwd: string, options?: ToolsOptions): Record<ToolName, Tool> {\n\treturn {\n\t\tread: createReadTool(cwd, options?.read),\n\t\tbash: createBashTool(cwd, options?.bash),\n\t\tedit: createEditTool(cwd, options?.edit),\n\t\twrite: createWriteTool(cwd, options?.write),\n\t\tgrep: createGrepTool(cwd),\n\t\tfind: createFindTool(cwd),\n\t\tls: createLsTool(cwd),\n\t\trg: createRgTool(cwd),\n\t\tfd: createFdTool(cwd),\n\t\tast_grep: createAstGrepTool(cwd),\n\t\tcomby: createCombyTool(cwd),\n\t\tjq: createJqTool(cwd),\n\t\tyq: createYqTool(cwd),\n\t\tsemgrep: createSemgrepTool(cwd),\n\t\tsed: createSedTool(cwd),\n\t\tsemantic_search: createSemanticSearchTool(cwd, options?.semantic),\n\t\tfetch: createFetchTool(cwd, options?.fetch),\n\t\tweb_search: createWebSearchTool(cwd, options?.webSearch),\n\t\tgit_read: createGitReadTool(cwd),\n\t\tgit_write: createGitWriteTool(cwd, options?.gitWrite),\n\t\tfs_ops: createFsOpsTool(cwd, options?.fsOps),\n\t\ttest_run: createTestRunTool(cwd),\n\t\tlint_run: createLintRunTool(cwd),\n\t\ttypecheck_run: createTypecheckRunTool(cwd),\n\t\tdb_run: createDbRunTool(cwd, options?.dbRun),\n\t\ttodo_write: todoWriteTool,\n\t\ttodo_read: todoReadTool,\n\t};\n}\n\n/**\n * Create a filtered set of tools from a list of tool names.\n * Used by agent profiles and the Task tool to configure subagent capabilities.\n */\nexport function createToolsFromNames(cwd: string, names: string[], options?: ToolsOptions): Tool[] {\n\tconst all = createAllTools(cwd, options);\n\treturn names\n\t\t.filter((n): n is ToolName => n in all)\n\t\t.map((n) => all[n]);\n}\n"]}
@@ -0,0 +1,42 @@
1
+ import type { AgentTool } from "@mariozechner/pi-agent-core";
2
+ import { type Static } from "@sinclair/typebox";
3
+ import type { TruncationResult } from "./truncate.js";
4
+ declare const lintRunSchema: import("@sinclair/typebox").TObject<{
5
+ runner: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"auto">, import("@sinclair/typebox").TLiteral<"npm">, import("@sinclair/typebox").TLiteral<"pnpm">, import("@sinclair/typebox").TLiteral<"yarn">, import("@sinclair/typebox").TLiteral<"bun">, import("@sinclair/typebox").TLiteral<"eslint">, import("@sinclair/typebox").TLiteral<"prettier">, import("@sinclair/typebox").TLiteral<"stylelint">]>>;
6
+ mode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"check">, import("@sinclair/typebox").TLiteral<"fix">]>>;
7
+ script: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
8
+ targets: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
9
+ args: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
10
+ path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
11
+ timeout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
12
+ }>;
13
+ export type LintRunToolInput = Static<typeof lintRunSchema>;
14
+ export type LintRunRunner = "auto" | "npm" | "pnpm" | "yarn" | "bun" | "eslint" | "prettier" | "stylelint";
15
+ export type LintRunMode = "check" | "fix";
16
+ export type LintRunStatus = "passed" | "failed" | "no_tests" | "error";
17
+ type ResolvedLintRunner = Exclude<LintRunRunner, "auto">;
18
+ export interface LintRunToolDetails {
19
+ resolvedRunner: ResolvedLintRunner;
20
+ resolvedCommand: string;
21
+ resolvedArgs: string[];
22
+ cwd: string;
23
+ mode: LintRunMode;
24
+ exitCode: number;
25
+ status: LintRunStatus;
26
+ durationMs: number;
27
+ captureTruncated?: boolean;
28
+ truncation?: TruncationResult;
29
+ }
30
+ export declare const DEFAULT_LINT_RUN_TIMEOUT_SECONDS = 300;
31
+ export declare function createLintRunTool(cwd: string): AgentTool<typeof lintRunSchema>;
32
+ export declare const lintRunTool: AgentTool<import("@sinclair/typebox").TObject<{
33
+ runner: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"auto">, import("@sinclair/typebox").TLiteral<"npm">, import("@sinclair/typebox").TLiteral<"pnpm">, import("@sinclair/typebox").TLiteral<"yarn">, import("@sinclair/typebox").TLiteral<"bun">, import("@sinclair/typebox").TLiteral<"eslint">, import("@sinclair/typebox").TLiteral<"prettier">, import("@sinclair/typebox").TLiteral<"stylelint">]>>;
34
+ mode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"check">, import("@sinclair/typebox").TLiteral<"fix">]>>;
35
+ script: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
36
+ targets: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
37
+ args: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
38
+ path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
39
+ timeout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
40
+ }>, any>;
41
+ export {};
42
+ //# sourceMappingURL=lint-run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lint-run.d.ts","sourceRoot":"","sources":["../../../src/core/tools/lint-run.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,mBAAmB,CAAC;AAEtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAYtD,QAAA,MAAM,aAAa;;;;;;;;EAwCjB,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;AAC3G,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,KAAK,CAAC;AAC1C,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAEvE,KAAK,kBAAkB,GAAG,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAQzD,MAAM,WAAW,kBAAkB;IAClC,cAAc,EAAE,kBAAkB,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC9B;AAED,eAAO,MAAM,gCAAgC,MAAM,CAAC;AA+NpD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,aAAa,CAAC,CAmE9E;AAED,eAAO,MAAM,WAAW;;;;;;;;QAAmC,CAAC"}