@positronic/spec 0.0.55 → 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,221 @@
|
|
|
1
|
+
export const users = {
|
|
2
|
+
/**
|
|
3
|
+
* Test POST /users - Create a new user
|
|
4
|
+
*/
|
|
5
|
+
async create(fetch, name) {
|
|
6
|
+
try {
|
|
7
|
+
const request = new Request('http://example.com/users', {
|
|
8
|
+
method: 'POST',
|
|
9
|
+
headers: {
|
|
10
|
+
'Content-Type': 'application/json',
|
|
11
|
+
},
|
|
12
|
+
body: JSON.stringify({ name }),
|
|
13
|
+
});
|
|
14
|
+
const response = await fetch(request);
|
|
15
|
+
if (response.status !== 201) {
|
|
16
|
+
console.error(`POST /users returned ${response.status}, expected 201`);
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
const data = (await response.json());
|
|
20
|
+
if (!data.id || typeof data.id !== 'string') {
|
|
21
|
+
console.error(`Expected id to be string, got ${typeof data.id}`);
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
if (data.name !== name) {
|
|
25
|
+
console.error(`Expected name to be '${name}', got ${data.name}`);
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
if (typeof data.createdAt !== 'number') {
|
|
29
|
+
console.error(`Expected createdAt to be number, got ${typeof data.createdAt}`);
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
return data.id;
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
console.error(`Failed to test POST /users:`, error);
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
/**
|
|
40
|
+
* Test GET /users - List all users
|
|
41
|
+
*/
|
|
42
|
+
async list(fetch) {
|
|
43
|
+
try {
|
|
44
|
+
const request = new Request('http://example.com/users', {
|
|
45
|
+
method: 'GET',
|
|
46
|
+
});
|
|
47
|
+
const response = await fetch(request);
|
|
48
|
+
if (!response.ok) {
|
|
49
|
+
console.error(`GET /users returned ${response.status}`);
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
const data = (await response.json());
|
|
53
|
+
if (!Array.isArray(data.users)) {
|
|
54
|
+
console.error(`Expected users to be an array, got ${typeof data.users}`);
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
if (typeof data.count !== 'number') {
|
|
58
|
+
console.error(`Expected count to be number, got ${typeof data.count}`);
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
// Validate each user has required fields
|
|
62
|
+
for (const user of data.users) {
|
|
63
|
+
if (!user.id ||
|
|
64
|
+
!user.name ||
|
|
65
|
+
typeof user.createdAt !== 'number') {
|
|
66
|
+
console.error(`User missing required fields: ${JSON.stringify(user)}`);
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
console.error(`Failed to test GET /users:`, error);
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
/**
|
|
78
|
+
* Test GET /users/:id - Get a specific user
|
|
79
|
+
*/
|
|
80
|
+
async get(fetch, userId) {
|
|
81
|
+
try {
|
|
82
|
+
const request = new Request(`http://example.com/users/${userId}`, {
|
|
83
|
+
method: 'GET',
|
|
84
|
+
});
|
|
85
|
+
const response = await fetch(request);
|
|
86
|
+
if (response.status === 404) {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
if (!response.ok) {
|
|
90
|
+
console.error(`GET /users/${userId} returned ${response.status}`);
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
const data = (await response.json());
|
|
94
|
+
if (!data.id || !data.name || typeof data.createdAt !== 'number') {
|
|
95
|
+
console.error(`User missing required fields: ${JSON.stringify(data)}`);
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
return data;
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
console.error(`Failed to test GET /users/${userId}:`, error);
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
/**
|
|
106
|
+
* Test DELETE /users/:id - Delete a user
|
|
107
|
+
*/
|
|
108
|
+
async delete(fetch, userId) {
|
|
109
|
+
try {
|
|
110
|
+
const request = new Request(`http://example.com/users/${userId}`, {
|
|
111
|
+
method: 'DELETE',
|
|
112
|
+
});
|
|
113
|
+
const response = await fetch(request);
|
|
114
|
+
if (response.status !== 204) {
|
|
115
|
+
console.error(`DELETE /users/${userId} returned ${response.status}, expected 204`);
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
console.error(`Failed to test DELETE /users/${userId}:`, error);
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
/**
|
|
126
|
+
* Test POST /users/:id/keys - Add a key to a user
|
|
127
|
+
*/
|
|
128
|
+
async addKey(fetch, userId, jwk, fingerprint, label) {
|
|
129
|
+
try {
|
|
130
|
+
const request = new Request(`http://example.com/users/${userId}/keys`, {
|
|
131
|
+
method: 'POST',
|
|
132
|
+
headers: {
|
|
133
|
+
'Content-Type': 'application/json',
|
|
134
|
+
},
|
|
135
|
+
body: JSON.stringify({ jwk, fingerprint, label: label || '' }),
|
|
136
|
+
});
|
|
137
|
+
const response = await fetch(request);
|
|
138
|
+
if (response.status !== 201) {
|
|
139
|
+
console.error(`POST /users/${userId}/keys returned ${response.status}, expected 201`);
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
const data = (await response.json());
|
|
143
|
+
if (data.fingerprint !== fingerprint) {
|
|
144
|
+
console.error(`Expected fingerprint to be '${fingerprint}', got ${data.fingerprint}`);
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
if (data.userId !== userId) {
|
|
148
|
+
console.error(`Expected userId to be '${userId}', got ${data.userId}`);
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
if (typeof data.addedAt !== 'number') {
|
|
152
|
+
console.error(`Expected addedAt to be number, got ${typeof data.addedAt}`);
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
console.error(`Failed to test POST /users/${userId}/keys:`, error);
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
/**
|
|
163
|
+
* Test GET /users/:id/keys - List keys for a user
|
|
164
|
+
*/
|
|
165
|
+
async listKeys(fetch, userId) {
|
|
166
|
+
try {
|
|
167
|
+
const request = new Request(`http://example.com/users/${userId}/keys`, {
|
|
168
|
+
method: 'GET',
|
|
169
|
+
});
|
|
170
|
+
const response = await fetch(request);
|
|
171
|
+
if (!response.ok) {
|
|
172
|
+
console.error(`GET /users/${userId}/keys returned ${response.status}`);
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
const data = (await response.json());
|
|
176
|
+
if (!Array.isArray(data.keys)) {
|
|
177
|
+
console.error(`Expected keys to be an array, got ${typeof data.keys}`);
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
if (typeof data.count !== 'number') {
|
|
181
|
+
console.error(`Expected count to be number, got ${typeof data.count}`);
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
// Validate each key has required fields
|
|
185
|
+
for (const key of data.keys) {
|
|
186
|
+
if (!key.fingerprint ||
|
|
187
|
+
!key.userId ||
|
|
188
|
+
typeof key.addedAt !== 'number') {
|
|
189
|
+
console.error(`Key missing required fields: ${JSON.stringify(key)}`);
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
console.error(`Failed to test GET /users/${userId}/keys:`, error);
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
/**
|
|
201
|
+
* Test DELETE /users/:id/keys/:fingerprint - Remove a key from a user
|
|
202
|
+
*/
|
|
203
|
+
async removeKey(fetch, userId, fingerprint) {
|
|
204
|
+
try {
|
|
205
|
+
const request = new Request(`http://example.com/users/${userId}/keys/${encodeURIComponent(fingerprint)}`, {
|
|
206
|
+
method: 'DELETE',
|
|
207
|
+
});
|
|
208
|
+
const response = await fetch(request);
|
|
209
|
+
if (response.status !== 204) {
|
|
210
|
+
console.error(`DELETE /users/${userId}/keys/${fingerprint} returned ${response.status}, expected 204`);
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
return true;
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
console.error(`Failed to test DELETE /users/${userId}/keys/${fingerprint}:`, error);
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
};
|
|
221
|
+
//# sourceMappingURL=users.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/api/users.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Fetch } from './types.js';
|
|
2
|
+
export declare const webhooks: {
|
|
3
|
+
/**
|
|
4
|
+
* Test GET /webhooks - List all available webhook handlers
|
|
5
|
+
*/
|
|
6
|
+
list(fetch: Fetch): Promise<boolean>;
|
|
7
|
+
/**
|
|
8
|
+
* Test POST /webhooks/:slug - Receive an incoming webhook from an external service
|
|
9
|
+
*/
|
|
10
|
+
receive(fetch: Fetch, slug: string, payload: any): Promise<boolean>;
|
|
11
|
+
/**
|
|
12
|
+
* Test POST /webhooks/:slug with non-existent webhook - Should return 404
|
|
13
|
+
*/
|
|
14
|
+
notFound(fetch: Fetch, slug: string): Promise<boolean>;
|
|
15
|
+
/**
|
|
16
|
+
* Test POST /webhooks/system/ui-form - Built-in webhook for UI form submissions.
|
|
17
|
+
* This is used by pages generated via .ui() steps to submit form data.
|
|
18
|
+
*
|
|
19
|
+
* The endpoint:
|
|
20
|
+
* - Accepts form data (application/x-www-form-urlencoded or multipart/form-data)
|
|
21
|
+
* - Requires an `identifier` query parameter to match the waiting brain
|
|
22
|
+
* - Returns { received: true, action: 'resumed' | 'not_found', ... }
|
|
23
|
+
*/
|
|
24
|
+
uiForm(fetch: Fetch, identifier: string, formData: Record<string, string | string[]>): Promise<boolean>;
|
|
25
|
+
/**
|
|
26
|
+
* Test POST /webhooks/system/ui-form with missing identifier - Should return 400
|
|
27
|
+
*/
|
|
28
|
+
uiFormMissingIdentifier(fetch: Fetch): Promise<boolean>;
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=webhooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/api/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,eAAO,MAAM,QAAQ;IACnB;;OAEG;gBACe,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAgE1C;;OAEG;mBACkB,KAAK,QAAQ,MAAM,WAAW,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAoDzE;;OAEG;oBACmB,KAAK,QAAQ,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA+C5D;;;;;;;;OAQG;kBAEM,KAAK,cACA,MAAM,YACR,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,GAC1C,OAAO,CAAC,OAAO,CAAC;IAuEnB;;OAEG;mCACkC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;CA6C9D,CAAC"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
export const webhooks = {
|
|
2
|
+
/**
|
|
3
|
+
* Test GET /webhooks - List all available webhook handlers
|
|
4
|
+
*/
|
|
5
|
+
async list(fetch) {
|
|
6
|
+
try {
|
|
7
|
+
const request = new Request('http://example.com/webhooks', {
|
|
8
|
+
method: 'GET',
|
|
9
|
+
});
|
|
10
|
+
const response = await fetch(request);
|
|
11
|
+
if (!response.ok) {
|
|
12
|
+
console.error(`GET /webhooks returned ${response.status}`);
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
const data = (await response.json());
|
|
16
|
+
// Validate response structure
|
|
17
|
+
if (!Array.isArray(data.webhooks)) {
|
|
18
|
+
console.error(`Expected webhooks to be an array, got ${typeof data.webhooks}`);
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
if (typeof data.count !== 'number') {
|
|
22
|
+
console.error(`Expected count to be number, got ${typeof data.count}`);
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
// Validate each webhook has required fields
|
|
26
|
+
for (const webhook of data.webhooks) {
|
|
27
|
+
if (!webhook.slug || typeof webhook.slug !== 'string') {
|
|
28
|
+
console.error(`Webhook missing slug or has invalid type: ${JSON.stringify(webhook)}`);
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
// Description is optional
|
|
32
|
+
if (webhook.description !== undefined &&
|
|
33
|
+
typeof webhook.description !== 'string') {
|
|
34
|
+
console.error(`Webhook description has invalid type: ${JSON.stringify(webhook)}`);
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
console.error(`Failed to test GET /webhooks:`, error);
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
/**
|
|
46
|
+
* Test POST /webhooks/:slug - Receive an incoming webhook from an external service
|
|
47
|
+
*/
|
|
48
|
+
async receive(fetch, slug, payload) {
|
|
49
|
+
try {
|
|
50
|
+
const request = new Request(`http://example.com/webhooks/${encodeURIComponent(slug)}`, {
|
|
51
|
+
method: 'POST',
|
|
52
|
+
headers: {
|
|
53
|
+
'Content-Type': 'application/json',
|
|
54
|
+
},
|
|
55
|
+
body: JSON.stringify(payload),
|
|
56
|
+
});
|
|
57
|
+
const response = await fetch(request);
|
|
58
|
+
// Accept either 200 (OK) or 202 (Accepted)
|
|
59
|
+
if (response.status !== 200 && response.status !== 202) {
|
|
60
|
+
console.error(`POST /webhooks/${slug} returned ${response.status}, expected 200 or 202`);
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
const data = (await response.json());
|
|
64
|
+
// Validate response structure
|
|
65
|
+
if (typeof data.received !== 'boolean') {
|
|
66
|
+
console.error(`Expected received to be boolean, got ${typeof data.received}`);
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
// Action field is optional
|
|
70
|
+
if (data.action !== undefined &&
|
|
71
|
+
!['resumed', 'started', 'queued', 'no-match'].includes(data.action)) {
|
|
72
|
+
console.error(`Invalid action value: ${data.action}`);
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
console.error(`Failed to test POST /webhooks/${slug}:`, error);
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
/**
|
|
83
|
+
* Test POST /webhooks/:slug with non-existent webhook - Should return 404
|
|
84
|
+
*/
|
|
85
|
+
async notFound(fetch, slug) {
|
|
86
|
+
try {
|
|
87
|
+
const request = new Request(`http://example.com/webhooks/${encodeURIComponent(slug)}`, {
|
|
88
|
+
method: 'POST',
|
|
89
|
+
headers: {
|
|
90
|
+
'Content-Type': 'application/json',
|
|
91
|
+
},
|
|
92
|
+
body: JSON.stringify({}),
|
|
93
|
+
});
|
|
94
|
+
const response = await fetch(request);
|
|
95
|
+
if (response.status !== 404) {
|
|
96
|
+
console.error(`POST /webhooks/${slug} with non-existent webhook returned ${response.status}, expected 404`);
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
const data = (await response.json());
|
|
100
|
+
if (!data.error || typeof data.error !== 'string') {
|
|
101
|
+
console.error(`Expected error to be string, got ${typeof data.error}`);
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
// Verify error message mentions the webhook slug
|
|
105
|
+
if (!data.error.toLowerCase().includes('webhook')) {
|
|
106
|
+
console.error(`Expected error message to mention webhook, got: ${data.error}`);
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
console.error(`Failed to test POST /webhooks/${slug} with non-existent webhook:`, error);
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
/**
|
|
117
|
+
* Test POST /webhooks/system/ui-form - Built-in webhook for UI form submissions.
|
|
118
|
+
* This is used by pages generated via .ui() steps to submit form data.
|
|
119
|
+
*
|
|
120
|
+
* The endpoint:
|
|
121
|
+
* - Accepts form data (application/x-www-form-urlencoded or multipart/form-data)
|
|
122
|
+
* - Requires an `identifier` query parameter to match the waiting brain
|
|
123
|
+
* - Returns { received: true, action: 'resumed' | 'not_found', ... }
|
|
124
|
+
*/
|
|
125
|
+
async uiForm(fetch, identifier, formData) {
|
|
126
|
+
try {
|
|
127
|
+
// Build URLSearchParams from form data
|
|
128
|
+
const params = new URLSearchParams();
|
|
129
|
+
for (const [key, value] of Object.entries(formData)) {
|
|
130
|
+
if (Array.isArray(value)) {
|
|
131
|
+
for (const v of value) {
|
|
132
|
+
params.append(`${key}[]`, v);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
params.append(key, value);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
const request = new Request(`http://example.com/webhooks/system/ui-form?identifier=${encodeURIComponent(identifier)}`, {
|
|
140
|
+
method: 'POST',
|
|
141
|
+
headers: {
|
|
142
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
143
|
+
},
|
|
144
|
+
body: params.toString(),
|
|
145
|
+
});
|
|
146
|
+
const response = await fetch(request);
|
|
147
|
+
// Accept 200 (found and processed) or 404 (no brain waiting)
|
|
148
|
+
if (response.status !== 200 && response.status !== 404) {
|
|
149
|
+
console.error(`POST /webhooks/system/ui-form returned ${response.status}, expected 200 or 404`);
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
const data = (await response.json());
|
|
153
|
+
// Validate response structure
|
|
154
|
+
if (typeof data.received !== 'boolean') {
|
|
155
|
+
console.error(`Expected received to be boolean, got ${typeof data.received}`);
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
if (!data.action || typeof data.action !== 'string') {
|
|
159
|
+
console.error(`Expected action to be string, got ${typeof data.action}`);
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
// Action should be 'resumed' or 'not_found'
|
|
163
|
+
if (data.action !== 'resumed' && data.action !== 'not_found') {
|
|
164
|
+
console.error(`Expected action to be 'resumed' or 'not_found', got '${data.action}'`);
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
console.error('Failed to test POST /webhooks/system/ui-form:', error);
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
/**
|
|
175
|
+
* Test POST /webhooks/system/ui-form with missing identifier - Should return 400
|
|
176
|
+
*/
|
|
177
|
+
async uiFormMissingIdentifier(fetch) {
|
|
178
|
+
try {
|
|
179
|
+
const request = new Request('http://example.com/webhooks/system/ui-form', {
|
|
180
|
+
method: 'POST',
|
|
181
|
+
headers: {
|
|
182
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
183
|
+
},
|
|
184
|
+
body: 'test=data',
|
|
185
|
+
});
|
|
186
|
+
const response = await fetch(request);
|
|
187
|
+
if (response.status !== 400) {
|
|
188
|
+
console.error(`POST /webhooks/system/ui-form without identifier returned ${response.status}, expected 400`);
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
const data = (await response.json());
|
|
192
|
+
if (!data.error || typeof data.error !== 'string') {
|
|
193
|
+
console.error(`Expected error to be string, got ${typeof data.error}`);
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
if (!data.error.toLowerCase().includes('identifier')) {
|
|
197
|
+
console.error(`Expected error message to mention identifier, got: ${data.error}`);
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
console.error('Failed to test POST /webhooks/system/ui-form without identifier:', error);
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
//# sourceMappingURL=webhooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/api/webhooks.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,KAAY;QACrB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,6BAA6B,EAAE;gBACzD,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;YAEtC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC3D,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAMlC,CAAC;YAEF,8BAA8B;YAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClC,OAAO,CAAC,KAAK,CACX,yCAAyC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAChE,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACnC,OAAO,CAAC,KAAK,CAAC,oCAAoC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBACvE,OAAO,KAAK,CAAC;YACf,CAAC;YAED,4CAA4C;YAC5C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACtD,OAAO,CAAC,KAAK,CACX,6CAA6C,IAAI,CAAC,SAAS,CACzD,OAAO,CACR,EAAE,CACJ,CAAC;oBACF,OAAO,KAAK,CAAC;gBACf,CAAC;gBAED,0BAA0B;gBAC1B,IACE,OAAO,CAAC,WAAW,KAAK,SAAS;oBACjC,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,EACvC,CAAC;oBACD,OAAO,CAAC,KAAK,CACX,yCAAyC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CACnE,CAAC;oBACF,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACtD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,KAAY,EAAE,IAAY,EAAE,OAAY;QACpD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,OAAO,CACzB,+BAA+B,kBAAkB,CAAC,IAAI,CAAC,EAAE,EACzD;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;aAC9B,CACF,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;YAEtC,2CAA2C;YAC3C,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvD,OAAO,CAAC,KAAK,CACX,kBAAkB,IAAI,aAAa,QAAQ,CAAC,MAAM,uBAAuB,CAC1E,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAGlC,CAAC;YAEF,8BAA8B;YAC9B,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACvC,OAAO,CAAC,KAAK,CACX,wCAAwC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAC/D,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;YAED,2BAA2B;YAC3B,IACE,IAAI,CAAC,MAAM,KAAK,SAAS;gBACzB,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EACnE,CAAC;gBACD,OAAO,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBACtD,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;YAC/D,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,KAAY,EAAE,IAAY;QACvC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,OAAO,CACzB,+BAA+B,kBAAkB,CAAC,IAAI,CAAC,EAAE,EACzD;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;aACzB,CACF,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;YAEtC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,OAAO,CAAC,KAAK,CACX,kBAAkB,IAAI,uCAAuC,QAAQ,CAAC,MAAM,gBAAgB,CAC7F,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAsB,CAAC;YAE1D,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAClD,OAAO,CAAC,KAAK,CAAC,oCAAoC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBACvE,OAAO,KAAK,CAAC;YACf,CAAC;YAED,iDAAiD;YACjD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClD,OAAO,CAAC,KAAK,CACX,mDAAmD,IAAI,CAAC,KAAK,EAAE,CAChE,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,iCAAiC,IAAI,6BAA6B,EAClE,KAAK,CACN,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,MAAM,CACV,KAAY,EACZ,UAAkB,EAClB,QAA2C;QAE3C,IAAI,CAAC;YACH,uCAAuC;YACvC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YACrC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;wBACtB,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC/B,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,OAAO,CACzB,yDAAyD,kBAAkB,CAAC,UAAU,CAAC,EAAE,EACzF;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,mCAAmC;iBACpD;gBACD,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;aACxB,CACF,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;YAEtC,6DAA6D;YAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvD,OAAO,CAAC,KAAK,CACX,0CAA0C,QAAQ,CAAC,MAAM,uBAAuB,CACjF,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAIlC,CAAC;YAEF,8BAA8B;YAC9B,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACvC,OAAO,CAAC,KAAK,CACX,wCAAwC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAC/D,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACpD,OAAO,CAAC,KAAK,CACX,qCAAqC,OAAO,IAAI,CAAC,MAAM,EAAE,CAC1D,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;YAED,4CAA4C;YAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC7D,OAAO,CAAC,KAAK,CACX,wDAAwD,IAAI,CAAC,MAAM,GAAG,CACvE,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;YACtE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CAAC,KAAY;QACxC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,OAAO,CACzB,4CAA4C,EAC5C;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,mCAAmC;iBACpD;gBACD,IAAI,EAAE,WAAW;aAClB,CACF,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;YAEtC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,OAAO,CAAC,KAAK,CACX,6DAA6D,QAAQ,CAAC,MAAM,gBAAgB,CAC7F,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAsB,CAAC;YAE1D,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAClD,OAAO,CAAC,KAAK,CAAC,oCAAoC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBACvE,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACrD,OAAO,CAAC,KAAK,CACX,sDAAsD,IAAI,CAAC,KAAK,EAAE,CACnE,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,kEAAkE,EAClE,KAAK,CACN,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -119,5 +119,5 @@ export interface PositronicDevServer {
|
|
|
119
119
|
*/
|
|
120
120
|
bulkSecrets(filePath: string): Promise<void>;
|
|
121
121
|
}
|
|
122
|
-
export { testStatus, resources, brains, schedules, secrets, webhooks, pages, bundle } from './api.js';
|
|
122
|
+
export { testStatus, resources, brains, schedules, secrets, webhooks, signals, pages, bundle } from './api/index.js';
|
|
123
123
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IAExD;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IAEhD;;;;OAIG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB;;;;OAIG;IACH,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtD;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAE5C;;;;;OAKG;IACH,KAAK,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5E;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC;;;OAGG;IACH,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAEjD;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAEnD;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAErD;;;OAGG;IACH,WAAW,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC,CAAC;IAErF;;;;OAIG;IACH,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD;;;;OAIG;IACH,YAAY,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9C;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IAExD;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IAEhD;;;;OAIG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB;;;;OAIG;IACH,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtD;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAE5C;;;;;OAKG;IACH,KAAK,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5E;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC;;;OAGG;IACH,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAEjD;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAEnD;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAErD;;;OAGG;IACH,WAAW,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC,CAAC;IAErF;;;;OAIG;IACH,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD;;;;OAIG;IACH,YAAY,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9C;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
* Currently includes the PositronicDevServer interface.
|
|
10
10
|
* Future additions will include REST API specifications and tests.
|
|
11
11
|
*/
|
|
12
|
-
export { testStatus, resources, brains, schedules, secrets, webhooks, pages, bundle } from './api.js';
|
|
12
|
+
export { testStatus, resources, brains, schedules, secrets, webhooks, signals, pages, bundle } from './api/index.js';
|
|
13
13
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA6HH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA6HH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC"}
|