@selfhost.dev/mcp-server 0.1.0 → 0.2.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 +64 -3
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/billing.d.ts +2 -0
- package/dist/tools/billing.js +248 -0
- package/dist/tools/billing.js.map +1 -0
- package/dist/tools/database-users.d.ts +2 -0
- package/dist/tools/database-users.js +181 -0
- package/dist/tools/database-users.js.map +1 -0
- package/dist/tools/instances.js +57 -67
- package/dist/tools/instances.js.map +1 -1
- package/dist/tools/pgbouncer.d.ts +2 -0
- package/dist/tools/pgbouncer.js +155 -0
- package/dist/tools/pgbouncer.js.map +1 -0
- package/dist/tools/pitr.d.ts +2 -0
- package/dist/tools/pitr.js +196 -0
- package/dist/tools/pitr.js.map +1 -0
- package/dist/tools/scaling.d.ts +2 -0
- package/dist/tools/scaling.js +290 -0
- package/dist/tools/scaling.js.map +1 -0
- package/dist/types/tiers.js +21 -0
- package/dist/types/tiers.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { apiRequest } from "../client.js";
|
|
3
|
+
/**
|
|
4
|
+
* Point-in-Time Recovery (PITR) — continuous WAL archiving to S3 + restore
|
|
5
|
+
* to any second within the retention window.
|
|
6
|
+
*
|
|
7
|
+
* Endpoints:
|
|
8
|
+
* - GET /aws/v1/instances/:id/pitr — current config + restore window
|
|
9
|
+
* - POST /aws/v1/instances/:id/pitr — enable
|
|
10
|
+
* - PUT /aws/v1/instances/:id/pitr/configure — toggle enabled/disabled
|
|
11
|
+
* - POST /aws/v1/instances/:id/pitr/retry — recover from error
|
|
12
|
+
* - POST /aws/v1/instances/:id/pitr/base_backup — trigger one-off backup
|
|
13
|
+
* - GET /aws/v1/instances/:id/pitr/base_backups — list base backups
|
|
14
|
+
* - POST /aws/v1/instances/:id/pitr/restore — restore to point-in-time
|
|
15
|
+
*
|
|
16
|
+
* Postgres-only, Pro+ plan only. Status: configuring | enabled | disabled |
|
|
17
|
+
* error. Restore creates a NEW instance — the source stays untouched.
|
|
18
|
+
*/
|
|
19
|
+
const PITR_TOGGLE = ["enabled", "disabled"];
|
|
20
|
+
export function registerPitrTools(server) {
|
|
21
|
+
server.tool("get_pitr", "Get PITR config + restore window for an instance. Returns null when PITR has never been configured. Response includes s3_bucket, retention_days, oldest_restore_point, latest_restore_point, last_base_backup_at, and error_message when status=error.", {
|
|
22
|
+
instance_id: z.string().min(1),
|
|
23
|
+
}, async ({ instance_id }) => {
|
|
24
|
+
const result = await apiRequest(`/aws/v1/instances/${instance_id}/pitr`, {
|
|
25
|
+
toolName: "get_pitr",
|
|
26
|
+
skipOrgInjection: true,
|
|
27
|
+
});
|
|
28
|
+
if (!result.success) {
|
|
29
|
+
return {
|
|
30
|
+
content: [{
|
|
31
|
+
type: "text",
|
|
32
|
+
text: `Failed to get PITR config (${result.statusCode}): ${result.message}`,
|
|
33
|
+
}],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return { content: [{ type: "text", text: JSON.stringify(result.data, null, 2) }] };
|
|
37
|
+
});
|
|
38
|
+
server.tool("enable_pitr", "Enable PITR on a Postgres instance — streams WAL to S3 continuously and takes nightly base backups. The S3 bucket must exist in the same region; the instance role needs s3:PutObject / GetObject / ListBucket. Status transitions: configuring → enabled (or error).", {
|
|
39
|
+
instance_id: z.string().min(1),
|
|
40
|
+
s3_bucket: z.string().min(3).max(63).regex(/^[a-z0-9.-]+$/, "lowercase letters, digits, dots, hyphens only")
|
|
41
|
+
.describe("S3 bucket name (must exist in same region)"),
|
|
42
|
+
retention_days: z.number().int().min(1).max(35).default(7)
|
|
43
|
+
.describe("Days of WAL to keep (default 7, range 1-35). Longer = larger S3 bill."),
|
|
44
|
+
}, async ({ instance_id, s3_bucket, retention_days }) => {
|
|
45
|
+
const result = await apiRequest(`/aws/v1/instances/${instance_id}/pitr`, {
|
|
46
|
+
method: "POST",
|
|
47
|
+
body: { s3_bucket, retention_days },
|
|
48
|
+
toolName: "enable_pitr",
|
|
49
|
+
skipOrgInjection: true,
|
|
50
|
+
});
|
|
51
|
+
if (!result.success) {
|
|
52
|
+
return {
|
|
53
|
+
content: [{
|
|
54
|
+
type: "text",
|
|
55
|
+
text: `Failed to enable PITR (${result.statusCode}): ${result.message}`,
|
|
56
|
+
}],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
content: [
|
|
61
|
+
{ type: "text", text: "PITR setup requested. WAL archiving will start once the agent finishes configuring (~few minutes). Poll `get_pitr` to track progress." },
|
|
62
|
+
{ type: "text", text: JSON.stringify(result.data, null, 2) },
|
|
63
|
+
],
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
server.tool("configure_pitr", "Toggle an existing PITR config between `enabled` (resume WAL archiving) and `disabled` (pause). The bucket and retention are preserved either way. Use `enable_pitr` for first-time setup, not this.", {
|
|
67
|
+
instance_id: z.string().min(1),
|
|
68
|
+
status: z.enum(PITR_TOGGLE).describe("Target state — enabled resumes WAL, disabled pauses it"),
|
|
69
|
+
}, async ({ instance_id, status }) => {
|
|
70
|
+
const result = await apiRequest(`/aws/v1/instances/${instance_id}/pitr/configure`, {
|
|
71
|
+
method: "PUT",
|
|
72
|
+
body: { status },
|
|
73
|
+
toolName: "configure_pitr",
|
|
74
|
+
skipOrgInjection: true,
|
|
75
|
+
});
|
|
76
|
+
if (!result.success) {
|
|
77
|
+
return {
|
|
78
|
+
content: [{
|
|
79
|
+
type: "text",
|
|
80
|
+
text: `Failed to ${status === "enabled" ? "resume" : "pause"} PITR (${result.statusCode}): ${result.message}`,
|
|
81
|
+
}],
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
content: [
|
|
86
|
+
{
|
|
87
|
+
type: "text",
|
|
88
|
+
text: status === "enabled"
|
|
89
|
+
? "PITR resumed — WAL archiving is back on."
|
|
90
|
+
: "PITR paused — no new WAL or base backups. Existing backups are preserved.",
|
|
91
|
+
},
|
|
92
|
+
{ type: "text", text: JSON.stringify(result.data, null, 2) },
|
|
93
|
+
],
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
server.tool("retry_pitr", "Retry PITR setup after an `error` state. Common error causes: missing IAM permissions on the bucket, wrong bucket region, or WAL-G install failure. Fix the underlying issue first, then retry.", {
|
|
97
|
+
instance_id: z.string().min(1),
|
|
98
|
+
}, async ({ instance_id }) => {
|
|
99
|
+
const result = await apiRequest(`/aws/v1/instances/${instance_id}/pitr/retry`, {
|
|
100
|
+
method: "POST",
|
|
101
|
+
toolName: "retry_pitr",
|
|
102
|
+
skipOrgInjection: true,
|
|
103
|
+
});
|
|
104
|
+
if (!result.success) {
|
|
105
|
+
return {
|
|
106
|
+
content: [{
|
|
107
|
+
type: "text",
|
|
108
|
+
text: `Failed to retry PITR (${result.statusCode}): ${result.message}`,
|
|
109
|
+
}],
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
content: [
|
|
114
|
+
{ type: "text", text: "PITR retry queued. Poll `get_pitr` to see if it transitions to `enabled` or back to `error`." },
|
|
115
|
+
{ type: "text", text: JSON.stringify(result.data, null, 2) },
|
|
116
|
+
],
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
server.tool("trigger_pitr_base_backup", "Trigger a one-off base backup now. The backup runs `wal-g backup-push` in the background — your instance keeps serving traffic. Useful before risky migrations or to seed the restore window after a fresh enable.", {
|
|
120
|
+
instance_id: z.string().min(1),
|
|
121
|
+
}, async ({ instance_id }) => {
|
|
122
|
+
const result = await apiRequest(`/aws/v1/instances/${instance_id}/pitr/base_backup`, {
|
|
123
|
+
method: "POST",
|
|
124
|
+
toolName: "trigger_pitr_base_backup",
|
|
125
|
+
skipOrgInjection: true,
|
|
126
|
+
});
|
|
127
|
+
if (!result.success) {
|
|
128
|
+
return {
|
|
129
|
+
content: [{
|
|
130
|
+
type: "text",
|
|
131
|
+
text: `Failed to trigger base backup (${result.statusCode}): ${result.message}`,
|
|
132
|
+
}],
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
content: [
|
|
137
|
+
{ type: "text", text: "Base backup triggered. Track it via `list_pitr_base_backups` — status moves pending → running → completed (or failed)." },
|
|
138
|
+
{ type: "text", text: JSON.stringify(result.data, null, 2) },
|
|
139
|
+
],
|
|
140
|
+
};
|
|
141
|
+
});
|
|
142
|
+
server.tool("list_pitr_base_backups", "List historical base backups for an instance. Each row carries status (pending | running | completed | failed), started_at, completed_at, and error_message when failed.", {
|
|
143
|
+
instance_id: z.string().min(1),
|
|
144
|
+
}, async ({ instance_id }) => {
|
|
145
|
+
const result = await apiRequest(`/aws/v1/instances/${instance_id}/pitr/base_backups`, {
|
|
146
|
+
toolName: "list_pitr_base_backups",
|
|
147
|
+
skipOrgInjection: true,
|
|
148
|
+
});
|
|
149
|
+
if (!result.success) {
|
|
150
|
+
return {
|
|
151
|
+
content: [{
|
|
152
|
+
type: "text",
|
|
153
|
+
text: `Failed to list base backups (${result.statusCode}): ${result.message}`,
|
|
154
|
+
}],
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
return { content: [{ type: "text", text: JSON.stringify(result.data, null, 2) }] };
|
|
158
|
+
});
|
|
159
|
+
server.tool("restore_pitr", "Restore an instance to a point in time. Creates a NEW Postgres instance recovered to `target_time` — the source instance is untouched. `target_time` must fall within the source instance's [oldest_restore_point, latest_restore_point] window (see `get_pitr`). `name` is the new instance name; must start with a letter and use letters/digits/hyphens only.", {
|
|
160
|
+
instance_id: z.string().min(1).describe("Source instance to restore FROM"),
|
|
161
|
+
target_time: z.string().regex(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z?$/, "ISO 8601 timestamp, ideally with Z suffix (UTC)").describe("Target moment, e.g. 2026-05-12T14:30:00Z"),
|
|
162
|
+
name: z.string().regex(/^[a-zA-Z][a-zA-Z0-9-]{0,62}$/, "1-63 chars, must start with a letter")
|
|
163
|
+
.describe("Name for the new restored instance"),
|
|
164
|
+
confirm: z.boolean().describe("Must be true to proceed. A new instance will be provisioned (provider charges apply)."),
|
|
165
|
+
}, async ({ instance_id, target_time, name, confirm }) => {
|
|
166
|
+
if (!confirm) {
|
|
167
|
+
return {
|
|
168
|
+
content: [{
|
|
169
|
+
type: "text",
|
|
170
|
+
text: `⚠️ About to RESTORE instance ${instance_id} to ${target_time}.\n\nThis creates a NEW Postgres instance named \`${name}\` and starts provider charges. The source instance is untouched.\n\nCall again with confirm=true to proceed.`,
|
|
171
|
+
}],
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
const result = await apiRequest(`/aws/v1/instances/${instance_id}/pitr/restore`, {
|
|
175
|
+
method: "POST",
|
|
176
|
+
body: { target_time, name },
|
|
177
|
+
toolName: "restore_pitr",
|
|
178
|
+
skipOrgInjection: true,
|
|
179
|
+
});
|
|
180
|
+
if (!result.success) {
|
|
181
|
+
return {
|
|
182
|
+
content: [{
|
|
183
|
+
type: "text",
|
|
184
|
+
text: `Failed to start PITR restore (${result.statusCode}): ${result.message}`,
|
|
185
|
+
}],
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
content: [
|
|
190
|
+
{ type: "text", text: `Restore started. The new instance \`${name}\` will appear on the dashboard once provisioning + WAL replay completes. Use \`list_instances\` to find it.` },
|
|
191
|
+
{ type: "text", text: JSON.stringify(result.data, null, 2) },
|
|
192
|
+
],
|
|
193
|
+
};
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=pitr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pitr.js","sourceRoot":"","sources":["../../src/tools/pitr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { apiRequest } from "../client.js";
|
|
3
|
+
import { session } from "../session.js";
|
|
4
|
+
/**
|
|
5
|
+
* Scaling — manual one-off resize + auto-scaling policies.
|
|
6
|
+
*
|
|
7
|
+
* Endpoints:
|
|
8
|
+
* - PUT /aws/v1/instances/:id/scale — manual scale
|
|
9
|
+
* - GET /scaling_policies — list (filterable by instance)
|
|
10
|
+
* - POST /scaling_policies — create
|
|
11
|
+
* - PATCH /scaling_policies/:id — update
|
|
12
|
+
* - DELETE /scaling_policies/:id — delete
|
|
13
|
+
*
|
|
14
|
+
* Scaling-policy actions: start_instance | stop_instance | resize_instance |
|
|
15
|
+
* expand_storage | add_replica | manual_scale.
|
|
16
|
+
* Trigger types: reactive (metric breach) | scheduled (cron / start-stop) |
|
|
17
|
+
* predictive (reserved, BE-only).
|
|
18
|
+
*
|
|
19
|
+
* The body of POST/PATCH must be wrapped: `{ scaling_policy: { ... } }`. The
|
|
20
|
+
* outer `organization_pid` is required by the backend.
|
|
21
|
+
*/
|
|
22
|
+
function resolveOrgId(organization_id) {
|
|
23
|
+
return organization_id || session.getActiveOrgId();
|
|
24
|
+
}
|
|
25
|
+
const noOrgMessage = "No organization selected. Call `select_organization` first or pass an organization_id.";
|
|
26
|
+
const VOLUME_TYPES = ["gp2", "gp3", "io1", "io2", "st1", "sc1", "standard"];
|
|
27
|
+
const SCALING_ACTIONS = [
|
|
28
|
+
"start_instance",
|
|
29
|
+
"stop_instance",
|
|
30
|
+
"resize_instance",
|
|
31
|
+
"expand_storage",
|
|
32
|
+
"add_replica",
|
|
33
|
+
"manual_scale",
|
|
34
|
+
];
|
|
35
|
+
const SCHEDULE_TYPES = ["reactive", "scheduled", "predictive"];
|
|
36
|
+
const METRIC_NAMES = [
|
|
37
|
+
"cpu_usage_percent",
|
|
38
|
+
"memory_usage_percent",
|
|
39
|
+
"disk_usage_percent",
|
|
40
|
+
"manual_trigger",
|
|
41
|
+
];
|
|
42
|
+
const COMPARISON_OPERATORS = [">", "<", ">=", "<="];
|
|
43
|
+
export function registerScalingTools(server) {
|
|
44
|
+
server.tool("scale_instance", "Manual one-off resize of an instance — change instance type, volume type, size, IOPS, throughput. Only fields you pass are sent (PATCH-style). Response includes `scaling_event_id` you can poll on the instance status (`resizing` / `modifying_storage` → terminal state). Storage must grow, not shrink.", {
|
|
45
|
+
instance_id: z.string().min(1),
|
|
46
|
+
target_instance_type: z.string().optional()
|
|
47
|
+
.describe("e.g. t3.medium, m6i.xlarge, r7g.4xlarge"),
|
|
48
|
+
new_size_gb: z.number().int().min(1).optional()
|
|
49
|
+
.describe("New EBS size; must be ≥ current"),
|
|
50
|
+
new_iops: z.number().int().min(0).optional()
|
|
51
|
+
.describe("Only valid for gp3/io1/io2 volume types"),
|
|
52
|
+
new_throughput: z.number().int().min(0).optional()
|
|
53
|
+
.describe("MB/s, only valid for gp3"),
|
|
54
|
+
new_volume_type: z.enum(VOLUME_TYPES).optional(),
|
|
55
|
+
}, async ({ instance_id, target_instance_type, new_size_gb, new_iops, new_throughput, new_volume_type }) => {
|
|
56
|
+
const body = {};
|
|
57
|
+
if (target_instance_type !== undefined)
|
|
58
|
+
body.target_instance_type = target_instance_type;
|
|
59
|
+
if (new_size_gb !== undefined)
|
|
60
|
+
body.new_size_gb = new_size_gb;
|
|
61
|
+
if (new_iops !== undefined)
|
|
62
|
+
body.new_iops = new_iops;
|
|
63
|
+
if (new_throughput !== undefined)
|
|
64
|
+
body.new_throughput = new_throughput;
|
|
65
|
+
if (new_volume_type !== undefined)
|
|
66
|
+
body.new_volume_type = new_volume_type;
|
|
67
|
+
if (Object.keys(body).length === 0) {
|
|
68
|
+
return {
|
|
69
|
+
content: [{
|
|
70
|
+
type: "text",
|
|
71
|
+
text: "Nothing to scale — pass at least one of target_instance_type / new_size_gb / new_iops / new_throughput / new_volume_type.",
|
|
72
|
+
}],
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
const result = await apiRequest(`/aws/v1/instances/${instance_id}/scale`, {
|
|
76
|
+
method: "PUT",
|
|
77
|
+
body,
|
|
78
|
+
toolName: "scale_instance",
|
|
79
|
+
skipOrgInjection: true,
|
|
80
|
+
});
|
|
81
|
+
if (!result.success) {
|
|
82
|
+
return {
|
|
83
|
+
content: [{
|
|
84
|
+
type: "text",
|
|
85
|
+
text: `Failed to scale instance (${result.statusCode}): ${result.message}`,
|
|
86
|
+
}],
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
content: [
|
|
91
|
+
{ type: "text", text: "Scale requested. Track via `get_instance` until `status` returns to `running`." },
|
|
92
|
+
{ type: "text", text: JSON.stringify(result.data, null, 2) },
|
|
93
|
+
],
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
server.tool("list_scaling_policies", "List scaling policies, optionally filtered to one instance. Covers both start/stop schedules and auto-scaling rules.", {
|
|
97
|
+
organization_id: z.string().optional()
|
|
98
|
+
.describe("Org PID; defaults to active org. Used as `organization_pid` on the wire."),
|
|
99
|
+
cloud_instance_pid: z.string().optional()
|
|
100
|
+
.describe("Filter to a single instance"),
|
|
101
|
+
}, async ({ organization_id, cloud_instance_pid }) => {
|
|
102
|
+
const orgId = resolveOrgId(organization_id);
|
|
103
|
+
if (!orgId) {
|
|
104
|
+
return { content: [{ type: "text", text: noOrgMessage }] };
|
|
105
|
+
}
|
|
106
|
+
const query = {
|
|
107
|
+
organization_pid: orgId,
|
|
108
|
+
};
|
|
109
|
+
if (cloud_instance_pid)
|
|
110
|
+
query.cloud_instance_pid = cloud_instance_pid;
|
|
111
|
+
const result = await apiRequest("/scaling_policies", {
|
|
112
|
+
toolName: "list_scaling_policies",
|
|
113
|
+
query,
|
|
114
|
+
skipOrgInjection: true,
|
|
115
|
+
});
|
|
116
|
+
if (!result.success) {
|
|
117
|
+
return {
|
|
118
|
+
content: [{
|
|
119
|
+
type: "text",
|
|
120
|
+
text: `Failed to list scaling policies (${result.statusCode}): ${result.message}`,
|
|
121
|
+
}],
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
return { content: [{ type: "text", text: JSON.stringify(result.data, null, 2) }] };
|
|
125
|
+
});
|
|
126
|
+
server.tool("create_scaling_policy", "Create a scaling policy. Use this for both auto-start/stop schedules and reactive/scheduled auto-scaling rules. Shape depends on action + trigger:\n\n• start/stop schedules → schedule_type=scheduled + scheduled_start_time OR scheduled_stop_time (HH:MM UTC) + days_of_week\n• reactive auto-scale → schedule_type=reactive + metric_name + comparison_operator + threshold + duration_minutes + cooldown_minutes\n• scheduled auto-scale → schedule_type=scheduled + cron_expression (5-field) + optional start_time/end_time (ISO 8601)\n\nAction-specific `details`:\n• resize_instance → { target_instance_type }\n• expand_storage → { new_size_gb }\n• add_replica → { max_replicas }", {
|
|
127
|
+
organization_id: z.string().optional()
|
|
128
|
+
.describe("Org PID; defaults to active org. Wire field: organization_pid"),
|
|
129
|
+
cloud_instance_pid: z.string().min(1)
|
|
130
|
+
.describe("Target instance PID"),
|
|
131
|
+
scaling_action: z.enum(SCALING_ACTIONS),
|
|
132
|
+
schedule_type: z.enum(SCHEDULE_TYPES),
|
|
133
|
+
enabled: z.boolean().default(true),
|
|
134
|
+
// Reactive trigger
|
|
135
|
+
metric_name: z.enum(METRIC_NAMES).optional(),
|
|
136
|
+
comparison_operator: z.enum(COMPARISON_OPERATORS).optional(),
|
|
137
|
+
threshold: z.number().optional()
|
|
138
|
+
.describe("0–100 for percentage metrics"),
|
|
139
|
+
duration_minutes: z.number().int().min(1).optional(),
|
|
140
|
+
cooldown_minutes: z.number().int().min(0).optional(),
|
|
141
|
+
// Scheduled / start-stop trigger
|
|
142
|
+
cron_expression: z.string().optional()
|
|
143
|
+
.describe("5-field cron, e.g. `0 2 * * *`"),
|
|
144
|
+
start_time: z.string().optional()
|
|
145
|
+
.describe("ISO 8601 window start"),
|
|
146
|
+
end_time: z.string().optional()
|
|
147
|
+
.describe("ISO 8601 window end"),
|
|
148
|
+
scheduled_start_time: z.string().optional()
|
|
149
|
+
.describe("HH:MM UTC — only for action=start_instance"),
|
|
150
|
+
scheduled_stop_time: z.string().optional()
|
|
151
|
+
.describe("HH:MM UTC — only for action=stop_instance"),
|
|
152
|
+
days_of_week: z.array(z.enum(["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"])).optional(),
|
|
153
|
+
timezone: z.string().optional().describe("Default UTC; BE supports UTC | EST | PST | GMT | CET"),
|
|
154
|
+
// Action-specific details
|
|
155
|
+
details: z.record(z.unknown()).optional()
|
|
156
|
+
.describe("Action-specific payload: { target_instance_type } | { new_size_gb } | { max_replicas }"),
|
|
157
|
+
}, async (params) => {
|
|
158
|
+
const orgId = resolveOrgId(params.organization_id);
|
|
159
|
+
if (!orgId) {
|
|
160
|
+
return { content: [{ type: "text", text: noOrgMessage }] };
|
|
161
|
+
}
|
|
162
|
+
const fields = {
|
|
163
|
+
organization_pid: orgId,
|
|
164
|
+
cloud_instance_pid: params.cloud_instance_pid,
|
|
165
|
+
scaling_action: params.scaling_action,
|
|
166
|
+
schedule_type: params.schedule_type,
|
|
167
|
+
enabled: params.enabled,
|
|
168
|
+
};
|
|
169
|
+
if (params.metric_name)
|
|
170
|
+
fields.metric_name = params.metric_name;
|
|
171
|
+
if (params.comparison_operator)
|
|
172
|
+
fields.comparison_operator = params.comparison_operator;
|
|
173
|
+
if (params.threshold !== undefined)
|
|
174
|
+
fields.threshold = params.threshold;
|
|
175
|
+
if (params.duration_minutes !== undefined)
|
|
176
|
+
fields.duration_minutes = params.duration_minutes;
|
|
177
|
+
if (params.cooldown_minutes !== undefined)
|
|
178
|
+
fields.cooldown_minutes = params.cooldown_minutes;
|
|
179
|
+
if (params.cron_expression)
|
|
180
|
+
fields.cron_expression = params.cron_expression;
|
|
181
|
+
if (params.start_time)
|
|
182
|
+
fields.start_time = params.start_time;
|
|
183
|
+
if (params.end_time)
|
|
184
|
+
fields.end_time = params.end_time;
|
|
185
|
+
if (params.scheduled_start_time)
|
|
186
|
+
fields.scheduled_start_time = params.scheduled_start_time;
|
|
187
|
+
if (params.scheduled_stop_time)
|
|
188
|
+
fields.scheduled_stop_time = params.scheduled_stop_time;
|
|
189
|
+
if (params.days_of_week)
|
|
190
|
+
fields.days_of_week = params.days_of_week;
|
|
191
|
+
if (params.timezone)
|
|
192
|
+
fields.timezone = params.timezone;
|
|
193
|
+
if (params.details)
|
|
194
|
+
fields.details = params.details;
|
|
195
|
+
const result = await apiRequest("/scaling_policies", {
|
|
196
|
+
method: "POST",
|
|
197
|
+
body: { scaling_policy: fields },
|
|
198
|
+
toolName: "create_scaling_policy",
|
|
199
|
+
skipOrgInjection: true,
|
|
200
|
+
});
|
|
201
|
+
if (!result.success) {
|
|
202
|
+
return {
|
|
203
|
+
content: [{
|
|
204
|
+
type: "text",
|
|
205
|
+
text: `Failed to create scaling policy (${result.statusCode}): ${result.message}`,
|
|
206
|
+
}],
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
return {
|
|
210
|
+
content: [
|
|
211
|
+
{ type: "text", text: "Scaling policy created." },
|
|
212
|
+
{ type: "text", text: JSON.stringify(result.data, null, 2) },
|
|
213
|
+
],
|
|
214
|
+
};
|
|
215
|
+
});
|
|
216
|
+
server.tool("update_scaling_policy", "Update an existing scaling policy. Only the fields you pass are changed.", {
|
|
217
|
+
policy_id: z.string().min(1).describe("Scaling policy PID"),
|
|
218
|
+
enabled: z.boolean().optional(),
|
|
219
|
+
metric_name: z.enum(METRIC_NAMES).optional(),
|
|
220
|
+
comparison_operator: z.enum(COMPARISON_OPERATORS).optional(),
|
|
221
|
+
threshold: z.number().optional(),
|
|
222
|
+
duration_minutes: z.number().int().min(1).optional(),
|
|
223
|
+
cooldown_minutes: z.number().int().min(0).optional(),
|
|
224
|
+
cron_expression: z.string().optional(),
|
|
225
|
+
start_time: z.string().optional(),
|
|
226
|
+
end_time: z.string().optional(),
|
|
227
|
+
scheduled_start_time: z.string().optional(),
|
|
228
|
+
scheduled_stop_time: z.string().optional(),
|
|
229
|
+
days_of_week: z.array(z.enum(["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"])).optional(),
|
|
230
|
+
timezone: z.string().optional(),
|
|
231
|
+
details: z.record(z.unknown()).optional(),
|
|
232
|
+
}, async ({ policy_id, ...rest }) => {
|
|
233
|
+
const fields = {};
|
|
234
|
+
for (const [k, v] of Object.entries(rest)) {
|
|
235
|
+
if (v !== undefined)
|
|
236
|
+
fields[k] = v;
|
|
237
|
+
}
|
|
238
|
+
if (Object.keys(fields).length === 0) {
|
|
239
|
+
return {
|
|
240
|
+
content: [{
|
|
241
|
+
type: "text",
|
|
242
|
+
text: "No changes to apply — pass at least one field to update.",
|
|
243
|
+
}],
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
const result = await apiRequest(`/scaling_policies/${policy_id}`, {
|
|
247
|
+
method: "PATCH",
|
|
248
|
+
body: { scaling_policy: fields },
|
|
249
|
+
toolName: "update_scaling_policy",
|
|
250
|
+
skipOrgInjection: true,
|
|
251
|
+
});
|
|
252
|
+
if (!result.success) {
|
|
253
|
+
return {
|
|
254
|
+
content: [{
|
|
255
|
+
type: "text",
|
|
256
|
+
text: `Failed to update scaling policy (${result.statusCode}): ${result.message}`,
|
|
257
|
+
}],
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
return { content: [{ type: "text", text: JSON.stringify(result.data, null, 2) }] };
|
|
261
|
+
});
|
|
262
|
+
server.tool("delete_scaling_policy", "Delete a scaling policy. The associated instance is unaffected — only the schedule / rule is removed.", {
|
|
263
|
+
policy_id: z.string().min(1),
|
|
264
|
+
confirm: z.boolean().describe("Must be true to proceed."),
|
|
265
|
+
}, async ({ policy_id, confirm }) => {
|
|
266
|
+
if (!confirm) {
|
|
267
|
+
return {
|
|
268
|
+
content: [{
|
|
269
|
+
type: "text",
|
|
270
|
+
text: `⚠️ About to DELETE scaling policy ${policy_id}. The schedule/rule will stop firing immediately.\n\nCall again with confirm=true to proceed.`,
|
|
271
|
+
}],
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
const result = await apiRequest(`/scaling_policies/${policy_id}`, {
|
|
275
|
+
method: "DELETE",
|
|
276
|
+
toolName: "delete_scaling_policy",
|
|
277
|
+
skipOrgInjection: true,
|
|
278
|
+
});
|
|
279
|
+
if (!result.success) {
|
|
280
|
+
return {
|
|
281
|
+
content: [{
|
|
282
|
+
type: "text",
|
|
283
|
+
text: `Failed to delete scaling policy (${result.statusCode}): ${result.message}`,
|
|
284
|
+
}],
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
return { content: [{ type: "text", text: "Scaling policy deleted." }] };
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=scaling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaling.js","sourceRoot":"","sources":["../../src/tools/scaling.ts"],"names":[],"mappings":"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"}
|
package/dist/types/tiers.js
CHANGED
|
@@ -72,6 +72,27 @@ export const WRITE_TOOLS = new Set([
|
|
|
72
72
|
"create_scaling_policy",
|
|
73
73
|
"update_scaling_policy",
|
|
74
74
|
"delete_scaling_policy",
|
|
75
|
+
// PgBouncer (Module 9)
|
|
76
|
+
"enable_pgbouncer",
|
|
77
|
+
"reconfigure_pgbouncer",
|
|
78
|
+
"disable_pgbouncer",
|
|
79
|
+
// Database users (Module 10)
|
|
80
|
+
"create_database_user",
|
|
81
|
+
"update_database_user",
|
|
82
|
+
"delete_database_user",
|
|
83
|
+
"rotate_database_user_password",
|
|
84
|
+
// PITR (Module 12)
|
|
85
|
+
"enable_pitr",
|
|
86
|
+
"configure_pitr",
|
|
87
|
+
"retry_pitr",
|
|
88
|
+
"trigger_pitr_base_backup",
|
|
89
|
+
"restore_pitr",
|
|
90
|
+
// Billing (Module 13)
|
|
91
|
+
"create_subscription",
|
|
92
|
+
"change_subscription",
|
|
93
|
+
"cancel_subscription",
|
|
94
|
+
"link_billing_payment_method",
|
|
95
|
+
"update_billing_contact",
|
|
75
96
|
"create_webhook",
|
|
76
97
|
"update_webhook",
|
|
77
98
|
"delete_webhook",
|
package/dist/types/tiers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiers.js","sourceRoot":"","sources":["../../src/types/tiers.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,YAAY,GAAmD;IAC1E,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;QAC3C,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;QAC/C,aAAa,EAAE,CAAC;KACjB;IACD,OAAO,EAAE;QACP,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE;QAC7C,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;QAC/C,aAAa,EAAE,CAAC;KACjB;IACD,GAAG,EAAE;QACH,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;QAC3C,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;QAC5C,aAAa,EAAE,EAAE;KAClB;IACD,UAAU,EAAE;QACV,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE;QAC7C,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;QAC5C,aAAa,EAAE,QAAQ;KACxB;CACF,CAAC;AAIF,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAClC,cAAc;IACd,+BAA+B;IAC/B,oBAAoB;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IACjC,sBAAsB;IACtB,sBAAsB;IACtB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,eAAe;IACf,eAAe;IACf,mBAAmB;IACnB,gBAAgB;IAChB,mBAAmB;IACnB,mBAAmB;IACnB,wBAAwB;IACxB,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,uBAAuB;IACvB,uBAAuB;IACvB,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;IACf,eAAe;IACf,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,iBAAiB;IACjB,iBAAiB;IACjB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,eAAe;IACf,6BAA6B;IAC7B,6BAA6B;IAC7B,6BAA6B;IAC7B,2BAA2B;IAC3B,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;IACvB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,oBAAoB;IACpB,oBAAoB;IACpB,wBAAwB;IACxB,yBAAyB;IACzB,qBAAqB;CACtB,CAAC,CAAC;AAEH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,IAAI,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChD,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAC;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"tiers.js","sourceRoot":"","sources":["../../src/types/tiers.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,YAAY,GAAmD;IAC1E,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;QAC3C,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;QAC/C,aAAa,EAAE,CAAC;KACjB;IACD,OAAO,EAAE;QACP,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE;QAC7C,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;QAC/C,aAAa,EAAE,CAAC;KACjB;IACD,GAAG,EAAE;QACH,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;QAC3C,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;QAC5C,aAAa,EAAE,EAAE;KAClB;IACD,UAAU,EAAE;QACV,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE;QAC7C,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;QAC5C,aAAa,EAAE,QAAQ;KACxB;CACF,CAAC;AAIF,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAClC,cAAc;IACd,+BAA+B;IAC/B,oBAAoB;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IACjC,sBAAsB;IACtB,sBAAsB;IACtB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,eAAe;IACf,eAAe;IACf,mBAAmB;IACnB,gBAAgB;IAChB,mBAAmB;IACnB,mBAAmB;IACnB,wBAAwB;IACxB,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,uBAAuB;IACvB,uBAAuB;IACvB,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;IACf,eAAe;IACf,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,iBAAiB;IACjB,iBAAiB;IACjB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,eAAe;IACf,6BAA6B;IAC7B,6BAA6B;IAC7B,6BAA6B;IAC7B,2BAA2B;IAC3B,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;IACvB,kBAAkB;IAClB,uBAAuB;IACvB,mBAAmB;IACnB,6BAA6B;IAC7B,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,+BAA+B;IAC/B,mBAAmB;IACnB,aAAa;IACb,gBAAgB;IAChB,YAAY;IACZ,0BAA0B;IAC1B,cAAc;IACd,sBAAsB;IACtB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,6BAA6B;IAC7B,wBAAwB;IACxB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,oBAAoB;IACpB,oBAAoB;IACpB,wBAAwB;IACxB,yBAAyB;IACzB,qBAAqB;CACtB,CAAC,CAAC;AAEH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,IAAI,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChD,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAC;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|