@sashido/mcp-server 0.0.0-stage → 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/LICENSE +21 -0
- package/README.md +201 -2
- package/dist/access.d.ts +47 -0
- package/dist/access.d.ts.map +1 -0
- package/dist/access.js +156 -0
- package/dist/access.js.map +1 -0
- package/dist/advice/format.d.ts +22 -0
- package/dist/advice/format.d.ts.map +1 -0
- package/dist/advice/format.js +70 -0
- package/dist/advice/format.js.map +1 -0
- package/dist/advice/schemaChecks.d.ts +17 -0
- package/dist/advice/schemaChecks.d.ts.map +1 -0
- package/dist/advice/schemaChecks.js +64 -0
- package/dist/advice/schemaChecks.js.map +1 -0
- package/dist/audit.d.ts +32 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +41 -0
- package/dist/audit.js.map +1 -0
- package/dist/auth.d.ts +17 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +72 -0
- package/dist/auth.js.map +1 -0
- package/dist/bin/login.d.ts +3 -0
- package/dist/bin/login.d.ts.map +1 -0
- package/dist/bin/login.js +16 -0
- package/dist/bin/login.js.map +1 -0
- package/dist/bin/mcp-server.d.ts +3 -0
- package/dist/bin/mcp-server.d.ts.map +1 -0
- package/dist/bin/mcp-server.js +27 -0
- package/dist/bin/mcp-server.js.map +1 -0
- package/dist/client/parse.d.ts +219 -0
- package/dist/client/parse.d.ts.map +1 -0
- package/dist/client/parse.js +414 -0
- package/dist/client/parse.js.map +1 -0
- package/dist/client/sashido.d.ts +213 -0
- package/dist/client/sashido.d.ts.map +1 -0
- package/dist/client/sashido.js +289 -0
- package/dist/client/sashido.js.map +1 -0
- package/dist/config.d.ts +27 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +70 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +33 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +132 -0
- package/dist/context.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +13 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +60 -0
- package/dist/server.js.map +1 -0
- package/dist/session/redis-client.d.ts +23 -0
- package/dist/session/redis-client.d.ts.map +1 -0
- package/dist/session/redis-client.js +136 -0
- package/dist/session/redis-client.js.map +1 -0
- package/dist/session/session-manager.d.ts +6 -0
- package/dist/session/session-manager.d.ts.map +1 -0
- package/dist/session/session-manager.js +68 -0
- package/dist/session/session-manager.js.map +1 -0
- package/dist/session/sse-pubsub.d.ts +23 -0
- package/dist/session/sse-pubsub.d.ts.map +1 -0
- package/dist/session/sse-pubsub.js +121 -0
- package/dist/session/sse-pubsub.js.map +1 -0
- package/dist/session/types.d.ts +43 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +2 -0
- package/dist/session/types.js.map +1 -0
- package/dist/tools/advisor/index.d.ts +3 -0
- package/dist/tools/advisor/index.d.ts.map +1 -0
- package/dist/tools/advisor/index.js +149 -0
- package/dist/tools/advisor/index.js.map +1 -0
- package/dist/tools/apps/index.d.ts +3 -0
- package/dist/tools/apps/index.d.ts.map +1 -0
- package/dist/tools/apps/index.js +113 -0
- package/dist/tools/apps/index.js.map +1 -0
- package/dist/tools/audit/index.d.ts +6 -0
- package/dist/tools/audit/index.d.ts.map +1 -0
- package/dist/tools/audit/index.js +69 -0
- package/dist/tools/audit/index.js.map +1 -0
- package/dist/tools/builds/index.d.ts +3 -0
- package/dist/tools/builds/index.d.ts.map +1 -0
- package/dist/tools/builds/index.js +85 -0
- package/dist/tools/builds/index.js.map +1 -0
- package/dist/tools/classes/index.d.ts +3 -0
- package/dist/tools/classes/index.d.ts.map +1 -0
- package/dist/tools/classes/index.js +223 -0
- package/dist/tools/classes/index.js.map +1 -0
- package/dist/tools/cloud-functions/index.d.ts +3 -0
- package/dist/tools/cloud-functions/index.d.ts.map +1 -0
- package/dist/tools/cloud-functions/index.js +154 -0
- package/dist/tools/cloud-functions/index.js.map +1 -0
- package/dist/tools/deployments/index.d.ts +3 -0
- package/dist/tools/deployments/index.d.ts.map +1 -0
- package/dist/tools/deployments/index.js +124 -0
- package/dist/tools/deployments/index.js.map +1 -0
- package/dist/tools/engines/index.d.ts +3 -0
- package/dist/tools/engines/index.d.ts.map +1 -0
- package/dist/tools/engines/index.js +68 -0
- package/dist/tools/engines/index.js.map +1 -0
- package/dist/tools/env/index.d.ts +3 -0
- package/dist/tools/env/index.d.ts.map +1 -0
- package/dist/tools/env/index.js +116 -0
- package/dist/tools/env/index.js.map +1 -0
- package/dist/tools/files/index.d.ts +3 -0
- package/dist/tools/files/index.d.ts.map +1 -0
- package/dist/tools/files/index.js +132 -0
- package/dist/tools/files/index.js.map +1 -0
- package/dist/tools/health/index.d.ts +3 -0
- package/dist/tools/health/index.d.ts.map +1 -0
- package/dist/tools/health/index.js +47 -0
- package/dist/tools/health/index.js.map +1 -0
- package/dist/tools/infrastructure/deployments.d.ts +23 -0
- package/dist/tools/infrastructure/deployments.d.ts.map +1 -0
- package/dist/tools/infrastructure/deployments.js +76 -0
- package/dist/tools/infrastructure/deployments.js.map +1 -0
- package/dist/tools/infrastructure/index.d.ts +9 -0
- package/dist/tools/infrastructure/index.d.ts.map +1 -0
- package/dist/tools/infrastructure/index.js +164 -0
- package/dist/tools/infrastructure/index.js.map +1 -0
- package/dist/tools/jobs/index.d.ts +3 -0
- package/dist/tools/jobs/index.d.ts.map +1 -0
- package/dist/tools/jobs/index.js +338 -0
- package/dist/tools/jobs/index.js.map +1 -0
- package/dist/tools/logs/index.d.ts +3 -0
- package/dist/tools/logs/index.d.ts.map +1 -0
- package/dist/tools/logs/index.js +133 -0
- package/dist/tools/logs/index.js.map +1 -0
- package/dist/tools/objects/index.d.ts +3 -0
- package/dist/tools/objects/index.d.ts.map +1 -0
- package/dist/tools/objects/index.js +185 -0
- package/dist/tools/objects/index.js.map +1 -0
- package/dist/tools/push/index.d.ts +3 -0
- package/dist/tools/push/index.d.ts.map +1 -0
- package/dist/tools/push/index.js +434 -0
- package/dist/tools/push/index.js.map +1 -0
- package/dist/tools/types/index.d.ts +3 -0
- package/dist/tools/types/index.d.ts.map +1 -0
- package/dist/tools/types/index.js +45 -0
- package/dist/tools/types/index.js.map +1 -0
- package/dist/tools/webhooks/index.d.ts +3 -0
- package/dist/tools/webhooks/index.d.ts.map +1 -0
- package/dist/tools/webhooks/index.js +443 -0
- package/dist/tools/webhooks/index.js.map +1 -0
- package/dist/transports/http.d.ts +4 -0
- package/dist/transports/http.d.ts.map +1 -0
- package/dist/transports/http.js +241 -0
- package/dist/transports/http.js.map +1 -0
- package/dist/transports/stdio.d.ts +7 -0
- package/dist/transports/stdio.d.ts.map +1 -0
- package/dist/transports/stdio.js +29 -0
- package/dist/transports/stdio.js.map +1 -0
- package/dist/typegen/dart.d.ts +3 -0
- package/dist/typegen/dart.d.ts.map +1 -0
- package/dist/typegen/dart.js +84 -0
- package/dist/typegen/dart.js.map +1 -0
- package/dist/typegen/kotlin.d.ts +3 -0
- package/dist/typegen/kotlin.d.ts.map +1 -0
- package/dist/typegen/kotlin.js +84 -0
- package/dist/typegen/kotlin.js.map +1 -0
- package/dist/typegen/model.d.ts +37 -0
- package/dist/typegen/model.d.ts.map +1 -0
- package/dist/typegen/model.js +82 -0
- package/dist/typegen/model.js.map +1 -0
- package/dist/typegen/swift.d.ts +3 -0
- package/dist/typegen/swift.d.ts.map +1 -0
- package/dist/typegen/swift.js +105 -0
- package/dist/typegen/swift.js.map +1 -0
- package/dist/typegen/typescript.d.ts +3 -0
- package/dist/typegen/typescript.d.ts.map +1 -0
- package/dist/typegen/typescript.js +73 -0
- package/dist/typegen/typescript.js.map +1 -0
- package/dist/upgrade/rules.d.ts +27 -0
- package/dist/upgrade/rules.d.ts.map +1 -0
- package/dist/upgrade/rules.js +133 -0
- package/dist/upgrade/rules.js.map +1 -0
- package/dist/upgrade/scan.d.ts +18 -0
- package/dist/upgrade/scan.d.ts.map +1 -0
- package/dist/upgrade/scan.js +38 -0
- package/dist/upgrade/scan.js.map +1 -0
- package/dist/upgrade/versions.d.ts +8 -0
- package/dist/upgrade/versions.d.ts.map +1 -0
- package/dist/upgrade/versions.js +25 -0
- package/dist/upgrade/versions.js.map +1 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/package.json +67 -4
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export function registerObjectTools(server, ctx) {
|
|
3
|
+
const getParseClient = async (args, _extra) => ctx.parse(args.appObjectId);
|
|
4
|
+
// Query Objects
|
|
5
|
+
server.tool('query_objects', 'Query objects from a class with optional filters, sorting, and pagination', {
|
|
6
|
+
appObjectId: z.string().describe('The application object ID'),
|
|
7
|
+
className: z.string().describe('The class name to query'),
|
|
8
|
+
where: z
|
|
9
|
+
.string()
|
|
10
|
+
.optional()
|
|
11
|
+
.describe('JSON string of query constraints (e.g., {"score": {"$gt": 10}})'),
|
|
12
|
+
limit: z
|
|
13
|
+
.number()
|
|
14
|
+
.optional()
|
|
15
|
+
.describe('Maximum number of results to return (default 100, max 1000)'),
|
|
16
|
+
skip: z.number().optional().describe('Number of results to skip for pagination'),
|
|
17
|
+
order: z
|
|
18
|
+
.string()
|
|
19
|
+
.optional()
|
|
20
|
+
.describe('Field(s) to sort by. Prefix with - for descending (e.g., "-createdAt" or "name,-score")'),
|
|
21
|
+
keys: z
|
|
22
|
+
.string()
|
|
23
|
+
.optional()
|
|
24
|
+
.describe('Comma-separated list of fields to return (e.g., "name,email")'),
|
|
25
|
+
include: z
|
|
26
|
+
.string()
|
|
27
|
+
.optional()
|
|
28
|
+
.describe('Comma-separated list of pointer fields to include full objects for'),
|
|
29
|
+
count: z.boolean().optional().describe('If true, also return the total count of matching objects'),
|
|
30
|
+
}, async (args, extra) => {
|
|
31
|
+
const parseClient = await getParseClient(args, extra);
|
|
32
|
+
const options = {};
|
|
33
|
+
if (args.where) {
|
|
34
|
+
try {
|
|
35
|
+
options.where = JSON.parse(args.where);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return {
|
|
39
|
+
content: [
|
|
40
|
+
{
|
|
41
|
+
type: 'text',
|
|
42
|
+
text: 'Error: Invalid JSON in "where" parameter',
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (args.limit !== undefined)
|
|
49
|
+
options.limit = Math.min(args.limit, 1000);
|
|
50
|
+
if (args.skip !== undefined)
|
|
51
|
+
options.skip = args.skip;
|
|
52
|
+
if (args.order)
|
|
53
|
+
options.order = args.order;
|
|
54
|
+
if (args.keys)
|
|
55
|
+
options.keys = args.keys;
|
|
56
|
+
if (args.include)
|
|
57
|
+
options.include = args.include;
|
|
58
|
+
if (args.count)
|
|
59
|
+
options.count = args.count;
|
|
60
|
+
const result = await parseClient.queryObjects(args.className, options);
|
|
61
|
+
return {
|
|
62
|
+
content: [
|
|
63
|
+
{
|
|
64
|
+
type: 'text',
|
|
65
|
+
text: JSON.stringify({
|
|
66
|
+
results: result.results,
|
|
67
|
+
count: result.count,
|
|
68
|
+
returned: result.results.length,
|
|
69
|
+
}, null, 2),
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
};
|
|
73
|
+
});
|
|
74
|
+
// Get Single Object
|
|
75
|
+
server.tool('get_object', 'Get a single object by its objectId', {
|
|
76
|
+
appObjectId: z.string().describe('The application object ID'),
|
|
77
|
+
className: z.string().describe('The class name'),
|
|
78
|
+
objectId: z.string().describe('The object ID to retrieve'),
|
|
79
|
+
}, async (args, extra) => {
|
|
80
|
+
const parseClient = await getParseClient(args, extra);
|
|
81
|
+
const object = await parseClient.getObject(args.className, args.objectId);
|
|
82
|
+
return {
|
|
83
|
+
content: [
|
|
84
|
+
{
|
|
85
|
+
type: 'text',
|
|
86
|
+
text: JSON.stringify(object, null, 2),
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
// Create Object
|
|
92
|
+
server.tool('create_object', 'Create a new object in a class', {
|
|
93
|
+
appObjectId: z.string().describe('The application object ID'),
|
|
94
|
+
className: z.string().describe('The class name'),
|
|
95
|
+
data: z.string().describe('JSON string of the object data to create'),
|
|
96
|
+
}, async (args, extra) => {
|
|
97
|
+
let objectData;
|
|
98
|
+
try {
|
|
99
|
+
objectData = JSON.parse(args.data);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return {
|
|
103
|
+
content: [
|
|
104
|
+
{
|
|
105
|
+
type: 'text',
|
|
106
|
+
text: 'Error: Invalid JSON in "data" parameter',
|
|
107
|
+
},
|
|
108
|
+
],
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const parseClient = await getParseClient(args, extra);
|
|
112
|
+
const result = await parseClient.createObject(args.className, objectData);
|
|
113
|
+
return {
|
|
114
|
+
content: [
|
|
115
|
+
{
|
|
116
|
+
type: 'text',
|
|
117
|
+
text: `Object created successfully.\n\n${JSON.stringify(result, null, 2)}`,
|
|
118
|
+
},
|
|
119
|
+
],
|
|
120
|
+
};
|
|
121
|
+
});
|
|
122
|
+
// Update Object
|
|
123
|
+
server.tool('update_object', 'Update an existing object by its objectId', {
|
|
124
|
+
appObjectId: z.string().describe('The application object ID'),
|
|
125
|
+
className: z.string().describe('The class name'),
|
|
126
|
+
objectId: z.string().describe('The object ID to update'),
|
|
127
|
+
data: z.string().describe('JSON string of the fields to update'),
|
|
128
|
+
}, async (args, extra) => {
|
|
129
|
+
let updateData;
|
|
130
|
+
try {
|
|
131
|
+
updateData = JSON.parse(args.data);
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
return {
|
|
135
|
+
content: [
|
|
136
|
+
{
|
|
137
|
+
type: 'text',
|
|
138
|
+
text: 'Error: Invalid JSON in "data" parameter',
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
const parseClient = await getParseClient(args, extra);
|
|
144
|
+
const result = await parseClient.updateObject(args.className, args.objectId, updateData);
|
|
145
|
+
return {
|
|
146
|
+
content: [
|
|
147
|
+
{
|
|
148
|
+
type: 'text',
|
|
149
|
+
text: `Object updated successfully.\n\n${JSON.stringify(result, null, 2)}`,
|
|
150
|
+
},
|
|
151
|
+
],
|
|
152
|
+
};
|
|
153
|
+
});
|
|
154
|
+
// Delete Object
|
|
155
|
+
server.tool('delete_object', 'Delete an object by its objectId. WARNING: This action is irreversible!', {
|
|
156
|
+
appObjectId: z.string().describe('The application object ID'),
|
|
157
|
+
className: z.string().describe('The class name'),
|
|
158
|
+
objectId: z.string().describe('The object ID to delete'),
|
|
159
|
+
confirmDelete: z
|
|
160
|
+
.boolean()
|
|
161
|
+
.describe('Must be true to confirm deletion. This action is irreversible!'),
|
|
162
|
+
}, async (args, extra) => {
|
|
163
|
+
if (!args.confirmDelete) {
|
|
164
|
+
return {
|
|
165
|
+
content: [
|
|
166
|
+
{
|
|
167
|
+
type: 'text',
|
|
168
|
+
text: 'Deletion cancelled. Set confirmDelete to true to proceed.',
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
const parseClient = await getParseClient(args, extra);
|
|
174
|
+
await parseClient.deleteObject(args.className, args.objectId);
|
|
175
|
+
return {
|
|
176
|
+
content: [
|
|
177
|
+
{
|
|
178
|
+
type: 'text',
|
|
179
|
+
text: `Object ${args.objectId} deleted from class "${args.className}" successfully.`,
|
|
180
|
+
},
|
|
181
|
+
],
|
|
182
|
+
};
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/objects/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/push/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG3D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CA8e5E"}
|
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export function registerPushTools(server, ctx) {
|
|
3
|
+
const getParseClient = async (args, _extra) => ctx.parse(args.appObjectId);
|
|
4
|
+
// Send Push Notification
|
|
5
|
+
server.tool('send_push', 'Send a push notification to devices', {
|
|
6
|
+
appObjectId: z.string().describe('The application object ID'),
|
|
7
|
+
alert: z.string().describe('The notification message text'),
|
|
8
|
+
channels: z
|
|
9
|
+
.string()
|
|
10
|
+
.optional()
|
|
11
|
+
.describe('Comma-separated list of channels to send to (e.g., "news,sports")'),
|
|
12
|
+
where: z
|
|
13
|
+
.string()
|
|
14
|
+
.optional()
|
|
15
|
+
.describe('JSON string of query constraints for targeting specific installations'),
|
|
16
|
+
badge: z
|
|
17
|
+
.string()
|
|
18
|
+
.optional()
|
|
19
|
+
.describe('Badge number or "Increment" to increase by 1'),
|
|
20
|
+
sound: z.string().optional().describe('Sound file name to play'),
|
|
21
|
+
title: z.string().optional().describe('Notification title (Android)'),
|
|
22
|
+
data: z
|
|
23
|
+
.string()
|
|
24
|
+
.optional()
|
|
25
|
+
.describe('JSON string of additional custom data to include'),
|
|
26
|
+
pushTime: z
|
|
27
|
+
.string()
|
|
28
|
+
.optional()
|
|
29
|
+
.describe('ISO 8601 date/time to schedule the push (e.g., "2024-12-25T10:00:00Z")'),
|
|
30
|
+
expirationTime: z
|
|
31
|
+
.string()
|
|
32
|
+
.optional()
|
|
33
|
+
.describe('ISO 8601 date/time when the message expires'),
|
|
34
|
+
expirationInterval: z
|
|
35
|
+
.number()
|
|
36
|
+
.optional()
|
|
37
|
+
.describe('Number of seconds from now until the message expires'),
|
|
38
|
+
}, async (args, extra) => {
|
|
39
|
+
const parseClient = await getParseClient(args, extra);
|
|
40
|
+
// Build push data
|
|
41
|
+
const pushData = {
|
|
42
|
+
alert: args.alert,
|
|
43
|
+
};
|
|
44
|
+
if (args.badge) {
|
|
45
|
+
pushData.badge = args.badge === 'Increment' ? 'Increment' : parseInt(args.badge, 10);
|
|
46
|
+
}
|
|
47
|
+
if (args.sound)
|
|
48
|
+
pushData.sound = args.sound;
|
|
49
|
+
if (args.title)
|
|
50
|
+
pushData.title = args.title;
|
|
51
|
+
// Merge custom data
|
|
52
|
+
if (args.data) {
|
|
53
|
+
try {
|
|
54
|
+
const customData = JSON.parse(args.data);
|
|
55
|
+
Object.assign(pushData, customData);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return {
|
|
59
|
+
content: [
|
|
60
|
+
{
|
|
61
|
+
type: 'text',
|
|
62
|
+
text: 'Error: Invalid JSON in "data" parameter',
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Build push request
|
|
69
|
+
const pushRequest = {
|
|
70
|
+
data: pushData,
|
|
71
|
+
};
|
|
72
|
+
// Either channels or where must be specified
|
|
73
|
+
if (args.channels) {
|
|
74
|
+
pushRequest.channels = args.channels.split(',').map(c => c.trim());
|
|
75
|
+
}
|
|
76
|
+
else if (args.where) {
|
|
77
|
+
try {
|
|
78
|
+
pushRequest.where = JSON.parse(args.where);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return {
|
|
82
|
+
content: [
|
|
83
|
+
{
|
|
84
|
+
type: 'text',
|
|
85
|
+
text: 'Error: Invalid JSON in "where" parameter',
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
// Default to all installations if no targeting specified
|
|
93
|
+
pushRequest.where = {};
|
|
94
|
+
}
|
|
95
|
+
if (args.pushTime)
|
|
96
|
+
pushRequest.push_time = args.pushTime;
|
|
97
|
+
if (args.expirationTime)
|
|
98
|
+
pushRequest.expiration_time = args.expirationTime;
|
|
99
|
+
if (args.expirationInterval)
|
|
100
|
+
pushRequest.expiration_interval = args.expirationInterval;
|
|
101
|
+
try {
|
|
102
|
+
const result = await parseClient.sendPush(pushRequest);
|
|
103
|
+
return {
|
|
104
|
+
content: [
|
|
105
|
+
{
|
|
106
|
+
type: 'text',
|
|
107
|
+
text: `Push notification sent successfully.\n\nResult: ${JSON.stringify(result, null, 2)}`,
|
|
108
|
+
},
|
|
109
|
+
],
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
114
|
+
return {
|
|
115
|
+
content: [
|
|
116
|
+
{
|
|
117
|
+
type: 'text',
|
|
118
|
+
text: `Error sending push notification: ${message}`,
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
// Send Push to Channels (simplified version)
|
|
125
|
+
server.tool('send_push_to_channels', 'Send a simple push notification to specific channels', {
|
|
126
|
+
appObjectId: z.string().describe('The application object ID'),
|
|
127
|
+
channels: z.string().describe('Comma-separated list of channels (e.g., "news,sports,updates")'),
|
|
128
|
+
alert: z.string().describe('The notification message text'),
|
|
129
|
+
}, async (args, extra) => {
|
|
130
|
+
const parseClient = await getParseClient(args, extra);
|
|
131
|
+
const channelList = args.channels.split(',').map(c => c.trim());
|
|
132
|
+
try {
|
|
133
|
+
const result = await parseClient.sendPush({
|
|
134
|
+
channels: channelList,
|
|
135
|
+
data: {
|
|
136
|
+
alert: args.alert,
|
|
137
|
+
},
|
|
138
|
+
});
|
|
139
|
+
return {
|
|
140
|
+
content: [
|
|
141
|
+
{
|
|
142
|
+
type: 'text',
|
|
143
|
+
text: `Push notification sent to channels [${channelList.join(', ')}].\n\nResult: ${JSON.stringify(result, null, 2)}`,
|
|
144
|
+
},
|
|
145
|
+
],
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
150
|
+
return {
|
|
151
|
+
content: [
|
|
152
|
+
{
|
|
153
|
+
type: 'text',
|
|
154
|
+
text: `Error sending push notification: ${message}`,
|
|
155
|
+
},
|
|
156
|
+
],
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
// === PUSH AUDIENCES ===
|
|
161
|
+
// List Audiences
|
|
162
|
+
server.tool('list_audiences', 'List all push notification audiences (saved queries for targeting users)', {
|
|
163
|
+
appObjectId: z.string().describe('The application object ID'),
|
|
164
|
+
limit: z.number().optional().describe('Maximum number of audiences to return (default: 100)'),
|
|
165
|
+
}, async (args, extra) => {
|
|
166
|
+
try {
|
|
167
|
+
const parseClient = await getParseClient(args, extra);
|
|
168
|
+
const result = await parseClient.listAudiences(args.limit);
|
|
169
|
+
if (result.audiences.length === 0) {
|
|
170
|
+
return {
|
|
171
|
+
content: [
|
|
172
|
+
{
|
|
173
|
+
type: 'text',
|
|
174
|
+
text: 'No push audiences found.\n\nUse create_audience to create a new audience for targeting push notifications.',
|
|
175
|
+
},
|
|
176
|
+
],
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
const output = [
|
|
180
|
+
`👥 Push Audiences (${result.audiences.length}):`,
|
|
181
|
+
'',
|
|
182
|
+
];
|
|
183
|
+
for (const audience of result.audiences) {
|
|
184
|
+
output.push(`━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`);
|
|
185
|
+
output.push(`📌 ${audience.name}`);
|
|
186
|
+
output.push(` ID: ${audience.objectId}`);
|
|
187
|
+
output.push(` Query: ${JSON.stringify(audience.query)}`);
|
|
188
|
+
output.push(` Times Used: ${audience.timesUsed}`);
|
|
189
|
+
if (audience.lastUsed)
|
|
190
|
+
output.push(` Last Used: ${audience.lastUsed}`);
|
|
191
|
+
output.push(` Created: ${audience.createdAt}`);
|
|
192
|
+
}
|
|
193
|
+
return {
|
|
194
|
+
content: [
|
|
195
|
+
{
|
|
196
|
+
type: 'text',
|
|
197
|
+
text: output.join('\n'),
|
|
198
|
+
},
|
|
199
|
+
],
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
204
|
+
return {
|
|
205
|
+
content: [
|
|
206
|
+
{
|
|
207
|
+
type: 'text',
|
|
208
|
+
text: `❌ Failed to list audiences: ${message}`,
|
|
209
|
+
},
|
|
210
|
+
],
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
// Create Audience
|
|
215
|
+
server.tool('create_audience', 'Create a new push notification audience (saved query for targeting users)', {
|
|
216
|
+
appObjectId: z.string().describe('The application object ID'),
|
|
217
|
+
name: z.string().describe('Name for the audience (e.g., "iOS Users", "Premium Members")'),
|
|
218
|
+
query: z.string().describe('JSON query for targeting installations (e.g., {"deviceType": "ios"})'),
|
|
219
|
+
}, async (args, extra) => {
|
|
220
|
+
try {
|
|
221
|
+
let queryObj;
|
|
222
|
+
try {
|
|
223
|
+
queryObj = JSON.parse(args.query);
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
return {
|
|
227
|
+
content: [
|
|
228
|
+
{
|
|
229
|
+
type: 'text',
|
|
230
|
+
text: '❌ Invalid JSON in query parameter.\n\nExample: {"deviceType": "ios"} or {"channels": {"$in": ["news"]}}',
|
|
231
|
+
},
|
|
232
|
+
],
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
const parseClient = await getParseClient(args, extra);
|
|
236
|
+
const result = await parseClient.createAudience(args.name, queryObj);
|
|
237
|
+
return {
|
|
238
|
+
content: [
|
|
239
|
+
{
|
|
240
|
+
type: 'text',
|
|
241
|
+
text: [
|
|
242
|
+
`✅ Audience created successfully!`,
|
|
243
|
+
'',
|
|
244
|
+
`Name: ${args.name}`,
|
|
245
|
+
`ID: ${result.objectId}`,
|
|
246
|
+
`Query: ${args.query}`,
|
|
247
|
+
'',
|
|
248
|
+
`You can now use this audience when sending push notifications.`,
|
|
249
|
+
].join('\n'),
|
|
250
|
+
},
|
|
251
|
+
],
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
256
|
+
return {
|
|
257
|
+
content: [
|
|
258
|
+
{
|
|
259
|
+
type: 'text',
|
|
260
|
+
text: `❌ Failed to create audience: ${message}`,
|
|
261
|
+
},
|
|
262
|
+
],
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
// Delete Audience
|
|
267
|
+
server.tool('delete_audience', 'Delete a push notification audience', {
|
|
268
|
+
appObjectId: z.string().describe('The application object ID'),
|
|
269
|
+
audienceId: z.string().describe('The object ID of the audience to delete'),
|
|
270
|
+
}, async (args, extra) => {
|
|
271
|
+
try {
|
|
272
|
+
const parseClient = await getParseClient(args, extra);
|
|
273
|
+
// the app server answers success for any id: check it exists first
|
|
274
|
+
const { audiences } = await parseClient.listAudiences(1000);
|
|
275
|
+
const audience = audiences.find((a) => a.objectId === args.audienceId);
|
|
276
|
+
if (!audience) {
|
|
277
|
+
return {
|
|
278
|
+
content: [
|
|
279
|
+
{
|
|
280
|
+
type: 'text',
|
|
281
|
+
text: `❌ No audience ${args.audienceId}. Existing: ${audiences.map((a) => `${a.name} (${a.objectId})`).join(', ') || 'none'}.`,
|
|
282
|
+
},
|
|
283
|
+
],
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
await parseClient.deleteAudience(args.audienceId);
|
|
287
|
+
return {
|
|
288
|
+
content: [
|
|
289
|
+
{
|
|
290
|
+
type: 'text',
|
|
291
|
+
text: `✅ Audience "${audience.name}" deleted.\n\nAudience ID: ${args.audienceId}`,
|
|
292
|
+
},
|
|
293
|
+
],
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
298
|
+
return {
|
|
299
|
+
content: [
|
|
300
|
+
{
|
|
301
|
+
type: 'text',
|
|
302
|
+
text: `❌ Failed to delete audience: ${message}`,
|
|
303
|
+
},
|
|
304
|
+
],
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
// Get Push Status
|
|
309
|
+
server.tool('get_push_status', 'Get the status and delivery statistics of push notifications. Can retrieve a specific push by ID or list recent pushes.', {
|
|
310
|
+
appObjectId: z.string().describe('The application object ID'),
|
|
311
|
+
pushStatusId: z
|
|
312
|
+
.string()
|
|
313
|
+
.optional()
|
|
314
|
+
.describe('The objectId of a specific push notification to get status for'),
|
|
315
|
+
limit: z
|
|
316
|
+
.number()
|
|
317
|
+
.optional()
|
|
318
|
+
.describe('Maximum number of push statuses to return (default: 10, ignored if pushStatusId is provided)'),
|
|
319
|
+
}, async (args, extra) => {
|
|
320
|
+
try {
|
|
321
|
+
const parseClient = await getParseClient(args, extra);
|
|
322
|
+
const queryOptions = { order: '-createdAt' };
|
|
323
|
+
if (args.pushStatusId) {
|
|
324
|
+
queryOptions.where = { objectId: args.pushStatusId };
|
|
325
|
+
queryOptions.limit = 1;
|
|
326
|
+
}
|
|
327
|
+
else {
|
|
328
|
+
queryOptions.limit = args.limit || 10;
|
|
329
|
+
}
|
|
330
|
+
const result = await parseClient.queryObjects('_PushStatus', queryOptions);
|
|
331
|
+
if (result.results.length === 0) {
|
|
332
|
+
return {
|
|
333
|
+
content: [
|
|
334
|
+
{
|
|
335
|
+
type: 'text',
|
|
336
|
+
text: 'No push notification history found.',
|
|
337
|
+
},
|
|
338
|
+
],
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
const output = [`📊 Push Notification Status (${result.results.length}):`, ''];
|
|
342
|
+
for (const push of result.results) {
|
|
343
|
+
const status = push.status;
|
|
344
|
+
const statusEmoji = status === 'succeeded' ? '✅' : status === 'failed' ? '❌' : status === 'running' ? '🔄' : '⏳';
|
|
345
|
+
output.push(`━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`);
|
|
346
|
+
output.push(`${statusEmoji} Status: ${status}`);
|
|
347
|
+
output.push(` ID: ${push.objectId}`);
|
|
348
|
+
output.push(` Sent: ${push.createdAt}`);
|
|
349
|
+
if (push.numSent !== undefined)
|
|
350
|
+
output.push(` Delivered: ${push.numSent}`);
|
|
351
|
+
if (push.numFailed !== undefined)
|
|
352
|
+
output.push(` Failed: ${push.numFailed}`);
|
|
353
|
+
if (push.count !== undefined)
|
|
354
|
+
output.push(` Target Count: ${push.count}`);
|
|
355
|
+
if (push.pushTime)
|
|
356
|
+
output.push(` Push Time: ${push.pushTime}`);
|
|
357
|
+
if (push.query)
|
|
358
|
+
output.push(` Query: ${JSON.stringify(push.query)}`);
|
|
359
|
+
if (push.failedPerType)
|
|
360
|
+
output.push(` Failures by Type: ${JSON.stringify(push.failedPerType)}`);
|
|
361
|
+
}
|
|
362
|
+
return {
|
|
363
|
+
content: [
|
|
364
|
+
{
|
|
365
|
+
type: 'text',
|
|
366
|
+
text: output.join('\n'),
|
|
367
|
+
},
|
|
368
|
+
],
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
catch (error) {
|
|
372
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
373
|
+
return {
|
|
374
|
+
content: [
|
|
375
|
+
{
|
|
376
|
+
type: 'text',
|
|
377
|
+
text: `❌ Failed to get push status: ${message}`,
|
|
378
|
+
},
|
|
379
|
+
],
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
// List Available Devices
|
|
384
|
+
server.tool('list_available_devices', 'List the device types configured for push notifications (iOS, Android, etc.)', {
|
|
385
|
+
appObjectId: z.string().describe('The application object ID'),
|
|
386
|
+
}, async (args, extra) => {
|
|
387
|
+
try {
|
|
388
|
+
const parseClient = await getParseClient(args, extra);
|
|
389
|
+
const devices = await parseClient.listAvailableDevices();
|
|
390
|
+
if (devices.length === 0) {
|
|
391
|
+
return {
|
|
392
|
+
content: [
|
|
393
|
+
{
|
|
394
|
+
type: 'text',
|
|
395
|
+
text: [
|
|
396
|
+
'📱 No push notification providers configured.',
|
|
397
|
+
'',
|
|
398
|
+
'To enable push notifications, configure your push credentials in the SashiDo Dashboard:',
|
|
399
|
+
' • iOS: Upload your APNs certificate or key',
|
|
400
|
+
' • Android: Add your FCM server key',
|
|
401
|
+
].join('\n'),
|
|
402
|
+
},
|
|
403
|
+
],
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
return {
|
|
407
|
+
content: [
|
|
408
|
+
{
|
|
409
|
+
type: 'text',
|
|
410
|
+
text: [
|
|
411
|
+
`📱 Available Push Devices:`,
|
|
412
|
+
'',
|
|
413
|
+
...devices.map(d => ` • ${d}`),
|
|
414
|
+
'',
|
|
415
|
+
`These device types are configured and can receive push notifications.`,
|
|
416
|
+
].join('\n'),
|
|
417
|
+
},
|
|
418
|
+
],
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
catch (error) {
|
|
422
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
423
|
+
return {
|
|
424
|
+
content: [
|
|
425
|
+
{
|
|
426
|
+
type: 'text',
|
|
427
|
+
text: `❌ Failed to list devices: ${message}`,
|
|
428
|
+
},
|
|
429
|
+
],
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/push/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/types/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAe3D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAmC5E"}
|