@neverinfamous/postgres-mcp 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +68 -62
- package/dist/adapters/postgresql/PostgresAdapter.d.ts.map +1 -1
- package/dist/adapters/postgresql/PostgresAdapter.js +53 -3
- package/dist/adapters/postgresql/PostgresAdapter.js.map +1 -1
- package/dist/adapters/postgresql/prompts/ltree.js +2 -2
- package/dist/adapters/postgresql/prompts/ltree.js.map +1 -1
- package/dist/adapters/postgresql/schemas/admin.d.ts +10 -5
- package/dist/adapters/postgresql/schemas/admin.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/admin.js +10 -5
- package/dist/adapters/postgresql/schemas/admin.js.map +1 -1
- package/dist/adapters/postgresql/schemas/backup.d.ts +8 -4
- package/dist/adapters/postgresql/schemas/backup.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/backup.js +11 -4
- package/dist/adapters/postgresql/schemas/backup.js.map +1 -1
- package/dist/adapters/postgresql/schemas/core.d.ts +53 -19
- package/dist/adapters/postgresql/schemas/core.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/core.js +61 -17
- package/dist/adapters/postgresql/schemas/core.js.map +1 -1
- package/dist/adapters/postgresql/schemas/cron.d.ts +51 -32
- package/dist/adapters/postgresql/schemas/cron.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/cron.js +64 -44
- package/dist/adapters/postgresql/schemas/cron.js.map +1 -1
- package/dist/adapters/postgresql/schemas/extensions.d.ts +168 -73
- package/dist/adapters/postgresql/schemas/extensions.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/extensions.js +177 -60
- package/dist/adapters/postgresql/schemas/extensions.js.map +1 -1
- package/dist/adapters/postgresql/schemas/index.d.ts +5 -5
- package/dist/adapters/postgresql/schemas/index.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/index.js +9 -7
- package/dist/adapters/postgresql/schemas/index.js.map +1 -1
- package/dist/adapters/postgresql/schemas/jsonb.d.ts +94 -42
- package/dist/adapters/postgresql/schemas/jsonb.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/jsonb.js +101 -30
- package/dist/adapters/postgresql/schemas/jsonb.js.map +1 -1
- package/dist/adapters/postgresql/schemas/monitoring.d.ts +28 -11
- package/dist/adapters/postgresql/schemas/monitoring.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/monitoring.js +49 -24
- package/dist/adapters/postgresql/schemas/monitoring.js.map +1 -1
- package/dist/adapters/postgresql/schemas/partitioning.d.ts +5 -4
- package/dist/adapters/postgresql/schemas/partitioning.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/partitioning.js +5 -4
- package/dist/adapters/postgresql/schemas/partitioning.js.map +1 -1
- package/dist/adapters/postgresql/schemas/performance.d.ts +60 -30
- package/dist/adapters/postgresql/schemas/performance.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/performance.js +85 -22
- package/dist/adapters/postgresql/schemas/performance.js.map +1 -1
- package/dist/adapters/postgresql/schemas/postgis.d.ts +20 -0
- package/dist/adapters/postgresql/schemas/postgis.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/postgis.js +20 -0
- package/dist/adapters/postgresql/schemas/postgis.js.map +1 -1
- package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts +35 -23
- package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/schema-mgmt.js +69 -26
- package/dist/adapters/postgresql/schemas/schema-mgmt.js.map +1 -1
- package/dist/adapters/postgresql/schemas/stats.d.ts +33 -20
- package/dist/adapters/postgresql/schemas/stats.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/stats.js +36 -20
- package/dist/adapters/postgresql/schemas/stats.js.map +1 -1
- package/dist/adapters/postgresql/schemas/text-search.d.ts +8 -5
- package/dist/adapters/postgresql/schemas/text-search.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/text-search.js +11 -4
- package/dist/adapters/postgresql/schemas/text-search.js.map +1 -1
- package/dist/adapters/postgresql/tools/admin.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/admin.js +211 -140
- package/dist/adapters/postgresql/tools/admin.js.map +1 -1
- package/dist/adapters/postgresql/tools/backup/dump.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/backup/dump.js +360 -337
- package/dist/adapters/postgresql/tools/backup/dump.js.map +1 -1
- package/dist/adapters/postgresql/tools/citext.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/citext.js +221 -163
- package/dist/adapters/postgresql/tools/citext.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/convenience.d.ts +9 -1
- package/dist/adapters/postgresql/tools/core/convenience.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/convenience.js +78 -11
- package/dist/adapters/postgresql/tools/core/convenience.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/error-helpers.d.ts +48 -0
- package/dist/adapters/postgresql/tools/core/error-helpers.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/core/error-helpers.js +256 -0
- package/dist/adapters/postgresql/tools/core/error-helpers.js.map +1 -0
- package/dist/adapters/postgresql/tools/core/health.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/health.js +18 -4
- package/dist/adapters/postgresql/tools/core/health.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/indexes.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/indexes.js +45 -4
- package/dist/adapters/postgresql/tools/core/indexes.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/objects.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/objects.js +104 -85
- package/dist/adapters/postgresql/tools/core/objects.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/query.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/query.js +100 -42
- package/dist/adapters/postgresql/tools/core/query.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/schemas.d.ts +51 -25
- package/dist/adapters/postgresql/tools/core/schemas.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/schemas.js +51 -25
- package/dist/adapters/postgresql/tools/core/schemas.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/tables.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/tables.js +68 -28
- package/dist/adapters/postgresql/tools/core/tables.js.map +1 -1
- package/dist/adapters/postgresql/tools/cron.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/cron.js +274 -179
- package/dist/adapters/postgresql/tools/cron.js.map +1 -1
- package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/jsonb/advanced.js +372 -284
- package/dist/adapters/postgresql/tools/jsonb/advanced.js.map +1 -1
- package/dist/adapters/postgresql/tools/jsonb/basic.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/jsonb/basic.js +617 -398
- package/dist/adapters/postgresql/tools/jsonb/basic.js.map +1 -1
- package/dist/adapters/postgresql/tools/kcache.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/kcache.js +278 -246
- package/dist/adapters/postgresql/tools/kcache.js.map +1 -1
- package/dist/adapters/postgresql/tools/ltree.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/ltree.js +121 -35
- package/dist/adapters/postgresql/tools/ltree.js.map +1 -1
- package/dist/adapters/postgresql/tools/monitoring.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/monitoring.js +54 -34
- package/dist/adapters/postgresql/tools/monitoring.js.map +1 -1
- package/dist/adapters/postgresql/tools/partitioning.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/partitioning.js +79 -15
- package/dist/adapters/postgresql/tools/partitioning.js.map +1 -1
- package/dist/adapters/postgresql/tools/partman/management.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/partman/management.js +11 -4
- package/dist/adapters/postgresql/tools/partman/management.js.map +1 -1
- package/dist/adapters/postgresql/tools/partman/operations.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/partman/operations.js +132 -19
- package/dist/adapters/postgresql/tools/partman/operations.js.map +1 -1
- package/dist/adapters/postgresql/tools/performance/analysis.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/performance/analysis.js +264 -160
- package/dist/adapters/postgresql/tools/performance/analysis.js.map +1 -1
- package/dist/adapters/postgresql/tools/performance/explain.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/performance/explain.js +61 -21
- package/dist/adapters/postgresql/tools/performance/explain.js.map +1 -1
- package/dist/adapters/postgresql/tools/performance/monitoring.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/performance/monitoring.js +44 -7
- package/dist/adapters/postgresql/tools/performance/monitoring.js.map +1 -1
- package/dist/adapters/postgresql/tools/performance/optimization.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/performance/optimization.js +92 -81
- package/dist/adapters/postgresql/tools/performance/optimization.js.map +1 -1
- package/dist/adapters/postgresql/tools/performance/stats.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/performance/stats.js +124 -36
- package/dist/adapters/postgresql/tools/performance/stats.js.map +1 -1
- package/dist/adapters/postgresql/tools/pgcrypto.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/pgcrypto.js +244 -89
- package/dist/adapters/postgresql/tools/pgcrypto.js.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/advanced.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/advanced.js +285 -222
- package/dist/adapters/postgresql/tools/postgis/advanced.js.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/basic.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/basic.js +359 -249
- package/dist/adapters/postgresql/tools/postgis/basic.js.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/standalone.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/standalone.js +135 -51
- package/dist/adapters/postgresql/tools/postgis/standalone.js.map +1 -1
- package/dist/adapters/postgresql/tools/schema.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/schema.js +504 -231
- package/dist/adapters/postgresql/tools/schema.js.map +1 -1
- package/dist/adapters/postgresql/tools/stats/advanced.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/stats/advanced.js +515 -476
- package/dist/adapters/postgresql/tools/stats/advanced.js.map +1 -1
- package/dist/adapters/postgresql/tools/stats/basic.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/stats/basic.js +302 -293
- package/dist/adapters/postgresql/tools/stats/basic.js.map +1 -1
- package/dist/adapters/postgresql/tools/text.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/text.js +392 -218
- package/dist/adapters/postgresql/tools/text.js.map +1 -1
- package/dist/adapters/postgresql/tools/transactions.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/transactions.js +157 -50
- package/dist/adapters/postgresql/tools/transactions.js.map +1 -1
- package/dist/adapters/postgresql/tools/vector/advanced.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/vector/advanced.js +18 -0
- package/dist/adapters/postgresql/tools/vector/advanced.js.map +1 -1
- package/dist/adapters/postgresql/tools/vector/basic.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/vector/basic.js +100 -53
- package/dist/adapters/postgresql/tools/vector/basic.js.map +1 -1
- package/dist/codemode/api.js +1 -1
- package/dist/codemode/api.js.map +1 -1
- package/dist/constants/ServerInstructions.d.ts +1 -1
- package/dist/constants/ServerInstructions.d.ts.map +1 -1
- package/dist/constants/ServerInstructions.js +45 -7
- package/dist/constants/ServerInstructions.js.map +1 -1
- package/package.json +9 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/core/tables.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AAEtB;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAwB;IAC3D,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,8FAA8F;QAChG,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/core/tables.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../../../src/adapters/postgresql/tools/cron.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../../../src/adapters/postgresql/tools/cron.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,yBAAyB,CAAC;AA6B9E;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,EAAE,CAWvE"}
|
|
@@ -7,10 +7,11 @@
|
|
|
7
7
|
* pg_cron enables scheduling of SQL commands using familiar cron syntax.
|
|
8
8
|
* Supports standard cron (minute granularity) and interval scheduling.
|
|
9
9
|
*/
|
|
10
|
-
import { z } from "zod";
|
|
10
|
+
import { z, ZodError } from "zod";
|
|
11
11
|
import { readOnly, write, destructive } from "../../../utils/annotations.js";
|
|
12
12
|
import { getToolIcons } from "../../../utils/icons.js";
|
|
13
|
-
import {
|
|
13
|
+
import { formatPostgresError } from "./core/error-helpers.js";
|
|
14
|
+
import { CronScheduleSchema, CronScheduleSchemaBase, CronScheduleInDatabaseSchema, CronScheduleInDatabaseSchemaBase, CronAlterJobSchemaBase, CronAlterJobSchema, CronUnscheduleSchemaBase, CronUnscheduleSchema, CronJobRunDetailsSchemaBase, CronJobRunDetailsSchema, CronCleanupHistorySchema, CronCleanupHistorySchemaBase,
|
|
14
15
|
// Output schemas
|
|
15
16
|
CronCreateExtensionOutputSchema, CronScheduleOutputSchema, CronScheduleInDatabaseOutputSchema, CronUnscheduleOutputSchema, CronAlterJobOutputSchema, CronListJobsOutputSchema, CronJobRunDetailsOutputSchema, CronCleanupHistoryOutputSchema, } from "../schemas/index.js";
|
|
16
17
|
/**
|
|
@@ -61,31 +62,45 @@ or interval syntax (e.g., "30 seconds"). Note: pg_cron allows duplicate job name
|
|
|
61
62
|
annotations: write("Schedule Cron Job"),
|
|
62
63
|
icons: getToolIcons("cron", write("Schedule Cron Job")),
|
|
63
64
|
handler: async (params, _context) => {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
65
|
+
try {
|
|
66
|
+
// Use transformed schema with alias resolution for validation
|
|
67
|
+
const { schedule, command, jobName } = CronScheduleSchema.parse(params);
|
|
68
|
+
let sql;
|
|
69
|
+
let queryParams;
|
|
70
|
+
if (jobName !== undefined) {
|
|
71
|
+
sql = "SELECT cron.schedule($1, $2, $3) as jobid";
|
|
72
|
+
queryParams = [jobName, schedule, command];
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
sql = "SELECT cron.schedule($1, $2) as jobid";
|
|
76
|
+
queryParams = [schedule, command];
|
|
77
|
+
}
|
|
78
|
+
const result = await adapter.executeQuery(sql, queryParams);
|
|
79
|
+
const jobId = result.rows?.[0]?.["jobid"];
|
|
80
|
+
return {
|
|
81
|
+
success: true,
|
|
82
|
+
jobId,
|
|
83
|
+
jobName: jobName ?? null,
|
|
84
|
+
schedule,
|
|
85
|
+
command,
|
|
86
|
+
message: `Job scheduled with ID ${String(jobId)}`,
|
|
87
|
+
hint: jobName
|
|
88
|
+
? "Use pg_cron_list_jobs to verify job was created with expected name"
|
|
89
|
+
: undefined,
|
|
90
|
+
};
|
|
71
91
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
92
|
+
catch (error) {
|
|
93
|
+
if (error instanceof ZodError) {
|
|
94
|
+
return {
|
|
95
|
+
success: false,
|
|
96
|
+
error: error.issues.map((e) => e.message).join("; "),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
success: false,
|
|
101
|
+
error: formatPostgresError(error, { tool: "pg_cron_schedule" }),
|
|
102
|
+
};
|
|
75
103
|
}
|
|
76
|
-
const result = await adapter.executeQuery(sql, queryParams);
|
|
77
|
-
const jobId = result.rows?.[0]?.["jobid"];
|
|
78
|
-
return {
|
|
79
|
-
success: true,
|
|
80
|
-
jobId,
|
|
81
|
-
jobName: jobName ?? null,
|
|
82
|
-
schedule,
|
|
83
|
-
command,
|
|
84
|
-
message: `Job scheduled with ID ${String(jobId)}`,
|
|
85
|
-
hint: jobName
|
|
86
|
-
? "Use pg_cron_list_jobs to verify job was created with expected name"
|
|
87
|
-
: undefined,
|
|
88
|
-
};
|
|
89
104
|
},
|
|
90
105
|
};
|
|
91
106
|
}
|
|
@@ -104,31 +119,47 @@ maintenance tasks. Returns the job ID.`,
|
|
|
104
119
|
annotations: write("Schedule Cron in Database"),
|
|
105
120
|
icons: getToolIcons("cron", write("Schedule Cron in Database")),
|
|
106
121
|
handler: async (params, _context) => {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
122
|
+
try {
|
|
123
|
+
// Use transformed schema with alias resolution for validation
|
|
124
|
+
const { jobName, schedule, command, database, username, active } = CronScheduleInDatabaseSchema.parse(params);
|
|
125
|
+
const activeVal = active ?? true;
|
|
126
|
+
const sql = `SELECT cron.schedule_in_database($1, $2, $3, $4, $5, $6) as jobid`;
|
|
127
|
+
const queryParams = [
|
|
128
|
+
jobName,
|
|
129
|
+
schedule,
|
|
130
|
+
command,
|
|
131
|
+
database,
|
|
132
|
+
username ?? null,
|
|
133
|
+
activeVal,
|
|
134
|
+
];
|
|
135
|
+
const result = await adapter.executeQuery(sql, queryParams);
|
|
136
|
+
const jobId = result.rows?.[0]?.["jobid"];
|
|
137
|
+
return {
|
|
138
|
+
success: true,
|
|
139
|
+
jobId,
|
|
140
|
+
jobName,
|
|
141
|
+
schedule,
|
|
142
|
+
command,
|
|
143
|
+
database,
|
|
144
|
+
username: username ?? null,
|
|
145
|
+
active: activeVal,
|
|
146
|
+
message: `Job scheduled in database '${database}' with ID ${String(jobId)}`,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
if (error instanceof ZodError) {
|
|
151
|
+
return {
|
|
152
|
+
success: false,
|
|
153
|
+
error: error.issues.map((e) => e.message).join("; "),
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
success: false,
|
|
158
|
+
error: formatPostgresError(error, {
|
|
159
|
+
tool: "pg_cron_schedule_in_database",
|
|
160
|
+
}),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
132
163
|
},
|
|
133
164
|
};
|
|
134
165
|
}
|
|
@@ -140,65 +171,79 @@ function createCronUnscheduleTool(adapter) {
|
|
|
140
171
|
name: "pg_cron_unschedule",
|
|
141
172
|
description: "Remove a scheduled cron job by its ID or name. If both are provided, jobName takes precedence. Job ID accepts numbers or numeric strings. Works for both active and inactive jobs.",
|
|
142
173
|
group: "cron",
|
|
143
|
-
inputSchema:
|
|
174
|
+
inputSchema: CronUnscheduleSchemaBase,
|
|
144
175
|
outputSchema: CronUnscheduleOutputSchema,
|
|
145
176
|
annotations: destructive("Unschedule Cron Job"),
|
|
146
177
|
icons: getToolIcons("cron", destructive("Unschedule Cron Job")),
|
|
147
178
|
handler: async (params, _context) => {
|
|
148
|
-
const parsed = CronUnscheduleSchema.parse(params);
|
|
149
|
-
// Prefer jobName over jobId when both provided
|
|
150
|
-
const useJobName = parsed.jobName !== undefined;
|
|
151
|
-
const warning = parsed.jobId !== undefined && parsed.jobName !== undefined
|
|
152
|
-
? "Both jobId and jobName provided; using jobName"
|
|
153
|
-
: undefined;
|
|
154
|
-
// Look up job info before deletion to return complete response
|
|
155
|
-
let jobInfo = null;
|
|
156
179
|
try {
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
jobname
|
|
168
|
-
|
|
180
|
+
const parsed = CronUnscheduleSchema.parse(params);
|
|
181
|
+
// Prefer jobName over jobId when both provided
|
|
182
|
+
const useJobName = parsed.jobName !== undefined;
|
|
183
|
+
const warning = parsed.jobId !== undefined && parsed.jobName !== undefined
|
|
184
|
+
? "Both jobId and jobName provided; using jobName"
|
|
185
|
+
: undefined;
|
|
186
|
+
// Look up job info before deletion to return complete response
|
|
187
|
+
let jobInfo = null;
|
|
188
|
+
try {
|
|
189
|
+
const lookupSql = useJobName
|
|
190
|
+
? "SELECT jobid, jobname FROM cron.job WHERE jobname = $1"
|
|
191
|
+
: "SELECT jobid, jobname FROM cron.job WHERE jobid = $1::bigint";
|
|
192
|
+
const lookupResult = await adapter.executeQuery(lookupSql, [
|
|
193
|
+
useJobName ? parsed.jobName : parsed.jobId,
|
|
194
|
+
]);
|
|
195
|
+
if (lookupResult.rows && lookupResult.rows.length > 0) {
|
|
196
|
+
const row = lookupResult.rows[0];
|
|
197
|
+
jobInfo = {
|
|
198
|
+
jobid: Number(row.jobid),
|
|
199
|
+
jobname: row.jobname,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
169
202
|
}
|
|
203
|
+
catch {
|
|
204
|
+
// Lookup failed, continue with unschedule attempt
|
|
205
|
+
}
|
|
206
|
+
// Use explicit type casting to ensure correct pg_cron function overload:
|
|
207
|
+
// - cron.unschedule(bigint) works for both active and inactive jobs
|
|
208
|
+
// - cron.unschedule(text) only finds active jobs by name
|
|
209
|
+
let sql;
|
|
210
|
+
let queryParams;
|
|
211
|
+
if (useJobName) {
|
|
212
|
+
sql = "SELECT cron.unschedule($1::text) as removed";
|
|
213
|
+
queryParams = [parsed.jobName];
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
sql = "SELECT cron.unschedule($1::bigint) as removed";
|
|
217
|
+
queryParams = [parsed.jobId];
|
|
218
|
+
}
|
|
219
|
+
const result = await adapter.executeQuery(sql, queryParams);
|
|
220
|
+
const removed = result.rows?.[0]?.["removed"];
|
|
221
|
+
// Return complete job info from lookup
|
|
222
|
+
const resolvedJobId = jobInfo?.jobid ?? parsed.jobId ?? null;
|
|
223
|
+
const resolvedJobName = jobInfo?.jobname ?? parsed.jobName ?? null;
|
|
224
|
+
return {
|
|
225
|
+
success: removed,
|
|
226
|
+
jobId: resolvedJobId,
|
|
227
|
+
jobName: resolvedJobName,
|
|
228
|
+
usedIdentifier: useJobName ? "jobName" : "jobId",
|
|
229
|
+
warning,
|
|
230
|
+
message: removed
|
|
231
|
+
? `Job ${resolvedJobId !== null ? `ID ${String(resolvedJobId)}` : `"${String(resolvedJobName)}"`} removed successfully`
|
|
232
|
+
: "Job not found",
|
|
233
|
+
};
|
|
170
234
|
}
|
|
171
|
-
catch {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
sql = "SELECT cron.unschedule($1::bigint) as removed";
|
|
185
|
-
queryParams = [parsed.jobId];
|
|
235
|
+
catch (error) {
|
|
236
|
+
if (error instanceof ZodError) {
|
|
237
|
+
return {
|
|
238
|
+
success: false,
|
|
239
|
+
error: error.issues.map((e) => e.message).join("; "),
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
return {
|
|
243
|
+
success: false,
|
|
244
|
+
error: formatPostgresError(error, { tool: "pg_cron_unschedule" }),
|
|
245
|
+
};
|
|
186
246
|
}
|
|
187
|
-
const result = await adapter.executeQuery(sql, queryParams);
|
|
188
|
-
const removed = result.rows?.[0]?.["removed"];
|
|
189
|
-
// Return complete job info from lookup
|
|
190
|
-
const resolvedJobId = jobInfo?.jobid ?? parsed.jobId ?? null;
|
|
191
|
-
const resolvedJobName = jobInfo?.jobname ?? parsed.jobName ?? null;
|
|
192
|
-
return {
|
|
193
|
-
success: removed,
|
|
194
|
-
jobId: resolvedJobId,
|
|
195
|
-
jobName: resolvedJobName,
|
|
196
|
-
usedIdentifier: useJobName ? "jobName" : "jobId",
|
|
197
|
-
warning,
|
|
198
|
-
message: removed
|
|
199
|
-
? `Job ${resolvedJobId !== null ? `ID ${String(resolvedJobId)}` : `"${String(resolvedJobName)}"`} removed successfully`
|
|
200
|
-
: "Job not found",
|
|
201
|
-
};
|
|
202
247
|
},
|
|
203
248
|
};
|
|
204
249
|
}
|
|
@@ -211,34 +256,55 @@ function createCronAlterJobTool(adapter) {
|
|
|
211
256
|
description: `Modify an existing cron job. Can change schedule, command, database, username,
|
|
212
257
|
or active status. Only specify the parameters you want to change.`,
|
|
213
258
|
group: "cron",
|
|
214
|
-
inputSchema:
|
|
259
|
+
inputSchema: CronAlterJobSchemaBase,
|
|
215
260
|
outputSchema: CronAlterJobOutputSchema,
|
|
216
261
|
annotations: write("Alter Cron Job"),
|
|
217
262
|
icons: getToolIcons("cron", write("Alter Cron Job")),
|
|
218
263
|
handler: async (params, _context) => {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
jobId
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
264
|
+
let parsedJobId;
|
|
265
|
+
try {
|
|
266
|
+
const { jobId, schedule, command, database, username, active } = CronAlterJobSchema.parse(params);
|
|
267
|
+
parsedJobId = jobId;
|
|
268
|
+
const sql = `SELECT cron.alter_job($1, $2, $3, $4, $5, $6)`;
|
|
269
|
+
const queryParams = [
|
|
270
|
+
jobId,
|
|
271
|
+
schedule ?? null,
|
|
272
|
+
command ?? null,
|
|
273
|
+
database ?? null,
|
|
274
|
+
username ?? null,
|
|
275
|
+
active ?? null,
|
|
276
|
+
];
|
|
277
|
+
await adapter.executeQuery(sql, queryParams);
|
|
278
|
+
return {
|
|
279
|
+
success: true,
|
|
280
|
+
jobId,
|
|
281
|
+
changes: {
|
|
282
|
+
schedule: schedule ?? undefined,
|
|
283
|
+
command: command ?? undefined,
|
|
284
|
+
database: database ?? undefined,
|
|
285
|
+
username: username ?? undefined,
|
|
286
|
+
active: active ?? undefined,
|
|
287
|
+
},
|
|
288
|
+
message: `Job ${String(jobId)} updated successfully`,
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
catch (error) {
|
|
292
|
+
if (error instanceof ZodError) {
|
|
293
|
+
return {
|
|
294
|
+
success: false,
|
|
295
|
+
error: error.issues.map((e) => e.message).join("; "),
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
return {
|
|
299
|
+
success: false,
|
|
300
|
+
error: formatPostgresError(error, {
|
|
301
|
+
tool: "pg_cron_alter_job",
|
|
302
|
+
...(parsedJobId !== undefined && {
|
|
303
|
+
target: String(parsedJobId),
|
|
304
|
+
}),
|
|
305
|
+
}),
|
|
306
|
+
};
|
|
307
|
+
}
|
|
242
308
|
},
|
|
243
309
|
};
|
|
244
310
|
}
|
|
@@ -329,36 +395,46 @@ function createCronJobRunDetailsTool(adapter) {
|
|
|
329
395
|
description: `View execution history for cron jobs. Shows start/end times, status, and return messages.
|
|
330
396
|
Useful for monitoring and debugging scheduled jobs.`,
|
|
331
397
|
group: "cron",
|
|
332
|
-
inputSchema:
|
|
398
|
+
inputSchema: CronJobRunDetailsSchemaBase,
|
|
333
399
|
outputSchema: CronJobRunDetailsOutputSchema,
|
|
334
400
|
annotations: readOnly("Cron Job Run Details"),
|
|
335
401
|
icons: getToolIcons("cron", readOnly("Cron Job Run Details")),
|
|
336
402
|
handler: async (params, _context) => {
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
403
|
+
try {
|
|
404
|
+
const { jobId, status, limit } = CronJobRunDetailsSchema.parse(params);
|
|
405
|
+
// Handler-level validation for status (relaxed from z.enum to z.string for structured errors)
|
|
406
|
+
const VALID_STATUSES = ["running", "succeeded", "failed"];
|
|
407
|
+
if (status !== undefined && !VALID_STATUSES.includes(status)) {
|
|
408
|
+
return {
|
|
409
|
+
success: false,
|
|
410
|
+
error: `Invalid status "${status}". Valid statuses: ${VALID_STATUSES.join(", ")}`,
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
const conditions = [];
|
|
414
|
+
const queryParams = [];
|
|
415
|
+
let paramIndex = 1;
|
|
416
|
+
if (jobId !== undefined) {
|
|
417
|
+
conditions.push(`jobid = $${String(paramIndex++)}`);
|
|
418
|
+
queryParams.push(jobId);
|
|
419
|
+
}
|
|
420
|
+
if (status !== undefined) {
|
|
421
|
+
conditions.push(`status = $${String(paramIndex)}`);
|
|
422
|
+
queryParams.push(status);
|
|
423
|
+
}
|
|
424
|
+
const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(" AND ")}` : "";
|
|
425
|
+
// Handle limit: 0 as "no limit" (return all rows), consistent with other AI-optimized tools
|
|
426
|
+
const limitVal = limit === 0 ? null : (limit ?? 50);
|
|
427
|
+
// Get total count for truncation indicator (only needed when limiting)
|
|
428
|
+
let totalCount;
|
|
429
|
+
if (limitVal !== null) {
|
|
430
|
+
const countSql = `SELECT COUNT(*)::int as total FROM cron.job_run_details ${whereClause}`;
|
|
431
|
+
const countResult = await adapter.executeQuery(countSql, queryParams);
|
|
432
|
+
totalCount =
|
|
433
|
+
countResult.rows?.[0]?.total ??
|
|
434
|
+
0;
|
|
435
|
+
}
|
|
436
|
+
const limitClause = limitVal !== null ? `LIMIT ${String(limitVal)}` : "";
|
|
437
|
+
const sql = `
|
|
362
438
|
SELECT
|
|
363
439
|
runid,
|
|
364
440
|
jobid,
|
|
@@ -375,34 +451,53 @@ Useful for monitoring and debugging scheduled jobs.`,
|
|
|
375
451
|
ORDER BY start_time DESC
|
|
376
452
|
${limitClause}
|
|
377
453
|
`;
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
454
|
+
const result = await adapter.executeQuery(sql, queryParams);
|
|
455
|
+
// Normalize runid and jobid to numbers (PostgreSQL BIGINT may return as strings)
|
|
456
|
+
const rows = (result.rows ?? []).map((r) => ({
|
|
457
|
+
...r,
|
|
458
|
+
runid: r["runid"] !== null && r["runid"] !== undefined
|
|
459
|
+
? Number(r["runid"])
|
|
460
|
+
: null,
|
|
461
|
+
jobid: r["jobid"] !== null && r["jobid"] !== undefined
|
|
462
|
+
? Number(r["jobid"])
|
|
463
|
+
: null,
|
|
464
|
+
}));
|
|
465
|
+
const succeeded = rows.filter((r) => r["status"] === "succeeded").length;
|
|
466
|
+
const failed = rows.filter((r) => r["status"] === "failed").length;
|
|
467
|
+
const running = rows.filter((r) => r["status"] === "running").length;
|
|
468
|
+
// Determine if results were truncated (only when limiting)
|
|
469
|
+
const truncated = limitVal !== null &&
|
|
470
|
+
totalCount !== undefined &&
|
|
471
|
+
rows.length < totalCount;
|
|
472
|
+
return {
|
|
473
|
+
runs: rows,
|
|
474
|
+
count: rows.length,
|
|
475
|
+
...(truncated ? { truncated: true, totalCount } : {}),
|
|
476
|
+
summary: {
|
|
477
|
+
succeeded,
|
|
478
|
+
failed,
|
|
479
|
+
running,
|
|
480
|
+
},
|
|
481
|
+
};
|
|
482
|
+
}
|
|
483
|
+
catch (error) {
|
|
484
|
+
if (error instanceof ZodError) {
|
|
485
|
+
return {
|
|
486
|
+
runs: [],
|
|
487
|
+
count: 0,
|
|
488
|
+
summary: { succeeded: 0, failed: 0, running: 0 },
|
|
489
|
+
error: error.issues.map((e) => e.message).join("; "),
|
|
490
|
+
};
|
|
491
|
+
}
|
|
492
|
+
return {
|
|
493
|
+
runs: [],
|
|
494
|
+
count: 0,
|
|
495
|
+
summary: { succeeded: 0, failed: 0, running: 0 },
|
|
496
|
+
error: formatPostgresError(error, {
|
|
497
|
+
tool: "pg_cron_job_run_details",
|
|
498
|
+
}),
|
|
499
|
+
};
|
|
500
|
+
}
|
|
406
501
|
},
|
|
407
502
|
};
|
|
408
503
|
}
|