@positronic/spec 0.0.56 → 0.0.57
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/dist/{api.d.ts → api/brains.d.ts} +2 -160
- package/dist/api/brains.d.ts.map +1 -0
- package/dist/{api.js → api/brains.js} +18 -1234
- package/dist/api/brains.js.map +1 -0
- package/dist/api/bundle.d.ts +17 -0
- package/dist/api/bundle.d.ts.map +1 -0
- package/dist/api/bundle.js +56 -0
- package/dist/api/bundle.js.map +1 -0
- package/dist/api/index.d.ts +12 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +11 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/pages.d.ts +46 -0
- package/dist/api/pages.d.ts.map +1 -0
- package/dist/api/pages.js +338 -0
- package/dist/api/pages.js.map +1 -0
- package/dist/api/resources.d.ts +28 -0
- package/dist/api/resources.d.ts.map +1 -0
- package/dist/api/resources.js +272 -0
- package/dist/api/resources.js.map +1 -0
- package/dist/api/schedules.d.ts +20 -0
- package/dist/api/schedules.d.ts.map +1 -0
- package/dist/api/schedules.js +159 -0
- package/dist/api/schedules.js.map +1 -0
- package/dist/api/secrets.d.ts +27 -0
- package/dist/api/secrets.d.ts.map +1 -0
- package/dist/api/secrets.js +175 -0
- package/dist/api/secrets.js.map +1 -0
- package/dist/api/signals.d.ts +53 -0
- package/dist/api/signals.d.ts.map +1 -0
- package/dist/api/signals.js +276 -0
- package/dist/api/signals.js.map +1 -0
- package/dist/api/status.d.ts +3 -0
- package/dist/api/status.d.ts.map +1 -0
- package/dist/api/status.js +23 -0
- package/dist/api/status.js.map +1 -0
- package/dist/api/types.d.ts +2 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +2 -0
- package/dist/api/types.js.map +1 -0
- package/dist/api/users.d.ts +43 -0
- package/dist/api/users.d.ts.map +1 -0
- package/dist/api/users.js +221 -0
- package/dist/api/users.js.map +1 -0
- package/dist/api/webhooks.d.ts +30 -0
- package/dist/api/webhooks.d.ts.map +1 -0
- package/dist/api/webhooks.js +208 -0
- package/dist/api/webhooks.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/src/{api.js → api/brains.js} +1378 -4108
- package/dist/src/api/bundle.js +228 -0
- package/dist/src/api/index.js +10 -0
- package/dist/src/api/pages.js +840 -0
- package/dist/src/api/resources.js +707 -0
- package/dist/src/api/schedules.js +479 -0
- package/dist/src/api/secrets.js +518 -0
- package/dist/src/api/signals.js +778 -0
- package/dist/src/api/status.js +180 -0
- package/dist/src/api/types.js +1 -0
- package/dist/src/api/users.js +650 -0
- package/dist/src/api/webhooks.js +639 -0
- package/dist/src/index.js +1 -1
- package/package.json +1 -1
- package/dist/api.d.ts.map +0 -1
- package/dist/api.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/api/resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,eAAO,MAAM,SAAS;IACpB;;OAEG;gBACe,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAyE1C;;OAEG;kBACiB,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAwE5C;;OAEG;kBACiB,KAAK,OAAO,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBzD;;OAEG;qBACoB,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IA0C/C;;OAEG;mCACkC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAgG7D;;OAEG;iCACgC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;CA2E5D,CAAC"}
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
export const resources = {
|
|
2
|
+
/**
|
|
3
|
+
* Test GET /resources - List all resources
|
|
4
|
+
*/
|
|
5
|
+
async list(fetch) {
|
|
6
|
+
try {
|
|
7
|
+
const request = new Request('http://example.com/resources', {
|
|
8
|
+
method: 'GET',
|
|
9
|
+
});
|
|
10
|
+
const response = await fetch(request);
|
|
11
|
+
if (!response.ok) {
|
|
12
|
+
console.error(`GET /resources returned ${response.status}`);
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
const data = (await response.json());
|
|
16
|
+
// Validate response structure
|
|
17
|
+
if (!Array.isArray(data.resources)) {
|
|
18
|
+
console.error(`Expected resources to be an array, got ${typeof data.resources}`);
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
if (typeof data.truncated !== 'boolean') {
|
|
22
|
+
console.error(`Expected truncated to be boolean, got ${typeof data.truncated}`);
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
if (typeof data.count !== 'number') {
|
|
26
|
+
console.error(`Expected count to be number, got ${typeof data.count}`);
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
// Validate each resource has required fields
|
|
30
|
+
for (const resource of data.resources) {
|
|
31
|
+
if (!resource.key ||
|
|
32
|
+
!resource.type ||
|
|
33
|
+
typeof resource.size !== 'number' ||
|
|
34
|
+
!resource.lastModified ||
|
|
35
|
+
typeof resource.local !== 'boolean') {
|
|
36
|
+
console.error(`Resource missing required fields: ${JSON.stringify(resource)}`);
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
if (!['text', 'binary'].includes(resource.type)) {
|
|
40
|
+
console.error(`Invalid resource type: ${resource.type}`);
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
console.error(`Failed to test GET /resources:`, error);
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
/**
|
|
52
|
+
* Test POST /resources - Upload a resource
|
|
53
|
+
*/
|
|
54
|
+
async upload(fetch) {
|
|
55
|
+
try {
|
|
56
|
+
const formData = new FormData();
|
|
57
|
+
formData.append('file', new Blob(['test content'], { type: 'text/plain' }), 'test.txt');
|
|
58
|
+
formData.append('type', 'text');
|
|
59
|
+
formData.append('key', 'test-resource.txt');
|
|
60
|
+
formData.append('local', 'false');
|
|
61
|
+
const request = new Request('http://example.com/resources', {
|
|
62
|
+
method: 'POST',
|
|
63
|
+
body: formData,
|
|
64
|
+
});
|
|
65
|
+
const response = await fetch(request);
|
|
66
|
+
if (response.status !== 201) {
|
|
67
|
+
console.error(`POST /resources returned ${response.status}, expected 201`);
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
const data = (await response.json());
|
|
71
|
+
// Validate response has required fields
|
|
72
|
+
if (!data.key ||
|
|
73
|
+
!data.type ||
|
|
74
|
+
typeof data.size !== 'number' ||
|
|
75
|
+
!data.lastModified ||
|
|
76
|
+
typeof data.local !== 'boolean') {
|
|
77
|
+
console.error(`Response missing required fields: ${JSON.stringify(data)}`);
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
if (data.key !== 'test-resource.txt') {
|
|
81
|
+
console.error(`Expected key to be 'test-resource.txt', got ${data.key}`);
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
if (data.type !== 'text') {
|
|
85
|
+
console.error(`Expected type to be 'text', got ${data.type}`);
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
if (data.local !== false) {
|
|
89
|
+
console.error(`Expected local to be false, got ${data.local}`);
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
console.error(`Failed to test POST /resources:`, error);
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
/**
|
|
100
|
+
* Test DELETE /resources/:key - Delete a specific resource
|
|
101
|
+
*/
|
|
102
|
+
async delete(fetch, key) {
|
|
103
|
+
try {
|
|
104
|
+
const request = new Request(`http://example.com/resources/${encodeURIComponent(key)}`, {
|
|
105
|
+
method: 'DELETE',
|
|
106
|
+
});
|
|
107
|
+
const response = await fetch(request);
|
|
108
|
+
if (response.status !== 204) {
|
|
109
|
+
console.error(`DELETE /resources/${key} returned ${response.status}, expected 204`);
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
console.error(`Failed to test DELETE /resources/${key}:`, error);
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
/**
|
|
120
|
+
* Test DELETE /resources - Bulk delete all resources (dev mode only)
|
|
121
|
+
*/
|
|
122
|
+
async deleteAll(fetch) {
|
|
123
|
+
try {
|
|
124
|
+
const request = new Request('http://example.com/resources', {
|
|
125
|
+
method: 'DELETE',
|
|
126
|
+
});
|
|
127
|
+
const response = await fetch(request);
|
|
128
|
+
// In production mode, this should return 403
|
|
129
|
+
if (response.status === 403) {
|
|
130
|
+
const data = (await response.json());
|
|
131
|
+
if (data.error === 'Bulk delete is only available in development mode') {
|
|
132
|
+
// This is expected behavior in production
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (response.status !== 200) {
|
|
137
|
+
console.error(`DELETE /resources returned ${response.status}, expected 200 or 403`);
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
const data = (await response.json());
|
|
141
|
+
if (typeof data.deletedCount !== 'number') {
|
|
142
|
+
console.error(`Expected deletedCount to be number, got ${typeof data.deletedCount}`);
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
console.error(`Failed to test DELETE /resources:`, error);
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
/**
|
|
153
|
+
* Test DELETE /resources preserves pages - bulk delete should not delete pages
|
|
154
|
+
*/
|
|
155
|
+
async deleteAllPreservesPages(fetch) {
|
|
156
|
+
try {
|
|
157
|
+
// First create a page
|
|
158
|
+
const pageSlug = `spec-test-page-${Date.now()}`;
|
|
159
|
+
const pageHtml = '<html><body>Test page for spec</body></html>';
|
|
160
|
+
const brainRunId = 'spec-test-brain-run-id';
|
|
161
|
+
const createPageRequest = new Request('http://example.com/pages', {
|
|
162
|
+
method: 'POST',
|
|
163
|
+
headers: {
|
|
164
|
+
'Content-Type': 'application/json',
|
|
165
|
+
},
|
|
166
|
+
body: JSON.stringify({
|
|
167
|
+
slug: pageSlug,
|
|
168
|
+
html: pageHtml,
|
|
169
|
+
brainRunId,
|
|
170
|
+
}),
|
|
171
|
+
});
|
|
172
|
+
const createPageResponse = await fetch(createPageRequest);
|
|
173
|
+
if (createPageResponse.status !== 201) {
|
|
174
|
+
console.error(`Failed to create test page: ${createPageResponse.status}`);
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
// Now bulk delete all resources
|
|
178
|
+
const deleteRequest = new Request('http://example.com/resources', {
|
|
179
|
+
method: 'DELETE',
|
|
180
|
+
});
|
|
181
|
+
const deleteResponse = await fetch(deleteRequest);
|
|
182
|
+
// Skip test if in production mode (403)
|
|
183
|
+
if (deleteResponse.status === 403) {
|
|
184
|
+
// Clean up the page we created
|
|
185
|
+
await fetch(new Request(`http://example.com/pages/${encodeURIComponent(pageSlug)}`, { method: 'DELETE' }));
|
|
186
|
+
console.log('Skipping deleteAllPreservesPages test - bulk delete not available in production');
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
189
|
+
if (deleteResponse.status !== 200) {
|
|
190
|
+
console.error(`DELETE /resources returned ${deleteResponse.status}, expected 200`);
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
// Verify the page still exists
|
|
194
|
+
const getPageRequest = new Request(`http://example.com/pages/${encodeURIComponent(pageSlug)}`, { method: 'GET' });
|
|
195
|
+
const getPageResponse = await fetch(getPageRequest);
|
|
196
|
+
if (getPageResponse.status === 404) {
|
|
197
|
+
console.error('DELETE /resources incorrectly deleted pages - page not found after bulk delete');
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
if (!getPageResponse.ok) {
|
|
201
|
+
console.error(`GET /pages/${pageSlug} returned ${getPageResponse.status}`);
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
// Clean up: delete the test page
|
|
205
|
+
await fetch(new Request(`http://example.com/pages/${encodeURIComponent(pageSlug)}`, { method: 'DELETE' }));
|
|
206
|
+
return true;
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
console.error(`Failed to test DELETE /resources preserves pages:`, error);
|
|
210
|
+
return false;
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
/**
|
|
214
|
+
* Test POST /resources/presigned-link - Generate presigned URL for upload
|
|
215
|
+
*/
|
|
216
|
+
async generatePresignedLink(fetch) {
|
|
217
|
+
try {
|
|
218
|
+
const request = new Request('http://example.com/resources/presigned-link', {
|
|
219
|
+
method: 'POST',
|
|
220
|
+
headers: {
|
|
221
|
+
'Content-Type': 'application/json',
|
|
222
|
+
},
|
|
223
|
+
body: JSON.stringify({
|
|
224
|
+
key: 'test-files/large-video.mp4',
|
|
225
|
+
type: 'binary',
|
|
226
|
+
size: 150 * 1024 * 1024, // 150MB - larger than Worker limit
|
|
227
|
+
}),
|
|
228
|
+
});
|
|
229
|
+
const response = await fetch(request);
|
|
230
|
+
// If credentials are not configured, expect 400
|
|
231
|
+
if (response.status === 400) {
|
|
232
|
+
const data = (await response.json());
|
|
233
|
+
// This is acceptable - implementation may not have credentials configured
|
|
234
|
+
console.log('Presigned URL generation not available - this is acceptable');
|
|
235
|
+
return true;
|
|
236
|
+
}
|
|
237
|
+
if (response.status !== 200) {
|
|
238
|
+
console.error(`POST /resources/presigned-link returned ${response.status}, expected 200 or 400`);
|
|
239
|
+
return false;
|
|
240
|
+
}
|
|
241
|
+
const data = (await response.json());
|
|
242
|
+
// Validate response structure (backend-agnostic)
|
|
243
|
+
if (!data.url || typeof data.url !== 'string') {
|
|
244
|
+
console.error(`Expected url to be string, got ${typeof data.url}`);
|
|
245
|
+
return false;
|
|
246
|
+
}
|
|
247
|
+
if (!data.method || data.method !== 'PUT') {
|
|
248
|
+
console.error(`Expected method to be 'PUT', got ${data.method}`);
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
if (typeof data.expiresIn !== 'number' || data.expiresIn <= 0) {
|
|
252
|
+
console.error(`Expected expiresIn to be positive number, got ${data.expiresIn}`);
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
// Basic URL validation - just ensure it's a valid URL
|
|
256
|
+
try {
|
|
257
|
+
new URL(data.url);
|
|
258
|
+
console.log('Presigned URL structure validated successfully');
|
|
259
|
+
}
|
|
260
|
+
catch (error) {
|
|
261
|
+
console.error(`Invalid URL returned: ${data.url}`);
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
return true;
|
|
265
|
+
}
|
|
266
|
+
catch (error) {
|
|
267
|
+
console.error(`Failed to test POST /resources/presigned-link:`, error);
|
|
268
|
+
return false;
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
};
|
|
272
|
+
//# sourceMappingURL=resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/api/resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Fetch } from './types.js';
|
|
2
|
+
export declare const schedules: {
|
|
3
|
+
/**
|
|
4
|
+
* Test POST /brains/schedules - Create a new schedule
|
|
5
|
+
*/
|
|
6
|
+
create(fetch: Fetch, identifier: string, cronExpression: string): Promise<string | null>;
|
|
7
|
+
/**
|
|
8
|
+
* Test GET /brains/schedules - List all schedules
|
|
9
|
+
*/
|
|
10
|
+
list(fetch: Fetch): Promise<boolean>;
|
|
11
|
+
/**
|
|
12
|
+
* Test DELETE /brains/schedules/:scheduleId - Delete a schedule
|
|
13
|
+
*/
|
|
14
|
+
delete(fetch: Fetch, scheduleId: string): Promise<boolean>;
|
|
15
|
+
/**
|
|
16
|
+
* Test GET /brains/schedules/runs - Get history of scheduled runs
|
|
17
|
+
*/
|
|
18
|
+
runs(fetch: Fetch, scheduleId?: string, limit?: number): Promise<boolean>;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=schedules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedules.d.ts","sourceRoot":"","sources":["../../src/api/schedules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,eAAO,MAAM,SAAS;IACpB;;OAEG;kBAEM,KAAK,cACA,MAAM,kBACF,MAAM,GACrB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgEzB;;OAEG;gBACe,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IA4D1C;;OAEG;kBACiB,KAAK,cAAc,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BhE;;OAEG;gBAEM,KAAK,eACC,MAAM,UACX,MAAM,GACb,OAAO,CAAC,OAAO,CAAC;CAsEpB,CAAC"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
export const schedules = {
|
|
2
|
+
/**
|
|
3
|
+
* Test POST /brains/schedules - Create a new schedule
|
|
4
|
+
*/
|
|
5
|
+
async create(fetch, identifier, cronExpression) {
|
|
6
|
+
try {
|
|
7
|
+
const request = new Request('http://example.com/brains/schedules', {
|
|
8
|
+
method: 'POST',
|
|
9
|
+
headers: {
|
|
10
|
+
'Content-Type': 'application/json',
|
|
11
|
+
},
|
|
12
|
+
body: JSON.stringify({ identifier, cronExpression }),
|
|
13
|
+
});
|
|
14
|
+
const response = await fetch(request);
|
|
15
|
+
if (response.status !== 201) {
|
|
16
|
+
console.error(`POST /brains/schedules returned ${response.status}, expected 201`);
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
const data = (await response.json());
|
|
20
|
+
// Validate response structure
|
|
21
|
+
if (!data.id || typeof data.id !== 'string') {
|
|
22
|
+
console.error(`Expected id to be string, got ${typeof data.id}`);
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
// TODO: Once backend is updated, validate that the returned brain matches the identifier
|
|
26
|
+
// For now, we accept any valid response
|
|
27
|
+
if (data.cronExpression !== cronExpression) {
|
|
28
|
+
console.error(`Expected cronExpression to be '${cronExpression}', got ${data.cronExpression}`);
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
if (typeof data.enabled !== 'boolean') {
|
|
32
|
+
console.error(`Expected enabled to be boolean, got ${typeof data.enabled}`);
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
if (typeof data.createdAt !== 'number') {
|
|
36
|
+
console.error(`Expected createdAt to be number, got ${typeof data.createdAt}`);
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
return data.id;
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
console.error(`Failed to test POST /brains/schedules:`, error);
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
/**
|
|
47
|
+
* Test GET /brains/schedules - List all schedules
|
|
48
|
+
*/
|
|
49
|
+
async list(fetch) {
|
|
50
|
+
try {
|
|
51
|
+
const request = new Request('http://example.com/brains/schedules', {
|
|
52
|
+
method: 'GET',
|
|
53
|
+
});
|
|
54
|
+
const response = await fetch(request);
|
|
55
|
+
if (!response.ok) {
|
|
56
|
+
console.error(`GET /brains/schedules returned ${response.status}`);
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
const data = (await response.json());
|
|
60
|
+
// Validate response structure
|
|
61
|
+
if (!Array.isArray(data.schedules)) {
|
|
62
|
+
console.error(`Expected schedules to be an array, got ${typeof data.schedules}`);
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
if (typeof data.count !== 'number') {
|
|
66
|
+
console.error(`Expected count to be number, got ${typeof data.count}`);
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
// Validate each schedule has required fields
|
|
70
|
+
for (const schedule of data.schedules) {
|
|
71
|
+
if (!schedule.id ||
|
|
72
|
+
!schedule.brainTitle ||
|
|
73
|
+
!schedule.cronExpression ||
|
|
74
|
+
typeof schedule.enabled !== 'boolean' ||
|
|
75
|
+
typeof schedule.createdAt !== 'number') {
|
|
76
|
+
console.error(`Schedule missing required fields: ${JSON.stringify(schedule)}`);
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
console.error(`Failed to test GET /brains/schedules:`, error);
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
/**
|
|
88
|
+
* Test DELETE /brains/schedules/:scheduleId - Delete a schedule
|
|
89
|
+
*/
|
|
90
|
+
async delete(fetch, scheduleId) {
|
|
91
|
+
try {
|
|
92
|
+
const request = new Request(`http://example.com/brains/schedules/${scheduleId}`, {
|
|
93
|
+
method: 'DELETE',
|
|
94
|
+
});
|
|
95
|
+
const response = await fetch(request);
|
|
96
|
+
if (response.status !== 204) {
|
|
97
|
+
console.error(`DELETE /brains/schedules/${scheduleId} returned ${response.status}, expected 204`);
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
console.error(`Failed to test DELETE /brains/schedules/${scheduleId}:`, error);
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
/**
|
|
108
|
+
* Test GET /brains/schedules/runs - Get history of scheduled runs
|
|
109
|
+
*/
|
|
110
|
+
async runs(fetch, scheduleId, limit) {
|
|
111
|
+
try {
|
|
112
|
+
const url = new URL('http://example.com/brains/schedules/runs');
|
|
113
|
+
if (scheduleId !== undefined) {
|
|
114
|
+
url.searchParams.set('scheduleId', scheduleId);
|
|
115
|
+
}
|
|
116
|
+
if (limit !== undefined) {
|
|
117
|
+
url.searchParams.set('limit', limit.toString());
|
|
118
|
+
}
|
|
119
|
+
const request = new Request(url.toString(), {
|
|
120
|
+
method: 'GET',
|
|
121
|
+
});
|
|
122
|
+
const response = await fetch(request);
|
|
123
|
+
if (!response.ok) {
|
|
124
|
+
console.error(`GET /brains/schedules/runs returned ${response.status}`);
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
const data = (await response.json());
|
|
128
|
+
// Validate response structure
|
|
129
|
+
if (!Array.isArray(data.runs)) {
|
|
130
|
+
console.error(`Expected runs to be an array, got ${typeof data.runs}`);
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
if (typeof data.count !== 'number') {
|
|
134
|
+
console.error(`Expected count to be number, got ${typeof data.count}`);
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
// Validate each run has required fields
|
|
138
|
+
for (const run of data.runs) {
|
|
139
|
+
if (!run.id ||
|
|
140
|
+
!run.scheduleId ||
|
|
141
|
+
!run.status ||
|
|
142
|
+
typeof run.ranAt !== 'number') {
|
|
143
|
+
console.error(`Scheduled run missing required fields: ${JSON.stringify(run)}`);
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
if (!['triggered', 'failed'].includes(run.status)) {
|
|
147
|
+
console.error(`Invalid run status: ${run.status}`);
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
console.error(`Failed to test GET /brains/schedules/runs:`, error);
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
};
|
|
159
|
+
//# sourceMappingURL=schedules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedules.js","sourceRoot":"","sources":["../../src/api/schedules.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Fetch } from './types.js';
|
|
2
|
+
export declare const secrets: {
|
|
3
|
+
/**
|
|
4
|
+
* Test POST /secrets - Create or update a secret
|
|
5
|
+
*/
|
|
6
|
+
create(fetch: Fetch, name: string, value: string): Promise<boolean>;
|
|
7
|
+
/**
|
|
8
|
+
* Test GET /secrets - List all secrets (names only, not values)
|
|
9
|
+
*/
|
|
10
|
+
list(fetch: Fetch): Promise<boolean>;
|
|
11
|
+
/**
|
|
12
|
+
* Test DELETE /secrets/:name - Delete a specific secret
|
|
13
|
+
*/
|
|
14
|
+
delete(fetch: Fetch, name: string): Promise<boolean>;
|
|
15
|
+
/**
|
|
16
|
+
* Test GET /secrets/:name/exists - Check if a secret exists
|
|
17
|
+
*/
|
|
18
|
+
exists(fetch: Fetch, name: string): Promise<boolean>;
|
|
19
|
+
/**
|
|
20
|
+
* Test POST /secrets/bulk - Create multiple secrets
|
|
21
|
+
*/
|
|
22
|
+
bulk(fetch: Fetch, secrets: Array<{
|
|
23
|
+
name: string;
|
|
24
|
+
value: string;
|
|
25
|
+
}>): Promise<boolean>;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=secrets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/api/secrets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,eAAO,MAAM,OAAO;IAClB;;OAEG;kBACiB,KAAK,QAAQ,MAAM,SAAS,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyDzE;;OAEG;gBACe,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAiE1C;;OAEG;kBACiB,KAAK,QAAQ,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyB1D;;OAEG;kBACiB,KAAK,QAAQ,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmC1D;;OAEG;gBAEM,KAAK,WACH,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAC9C,OAAO,CAAC,OAAO,CAAC;CAuDpB,CAAC"}
|