bunderstack 0.17.0-beta.7 → 0.17.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/dist/api/builder.d.ts +245 -147
- package/dist/api/builder.d.ts.map +1 -1
- package/dist/api/crud-router.d.ts +175 -105
- package/dist/api/crud-router.d.ts.map +1 -1
- package/dist/api/realtime-router.d.ts +35 -21
- package/dist/api/realtime-router.d.ts.map +1 -1
- package/dist/api/storage-router.d.ts +175 -105
- package/dist/api/storage-router.d.ts.map +1 -1
- package/dist/cli-skills.d.ts +16 -0
- package/dist/cli-skills.d.ts.map +1 -0
- package/dist/cli-skills.js +116 -0
- package/dist/cli-skills.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +36 -4
- package/dist/cli.js.map +1 -1
- package/dist/errors.d.ts +70 -42
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +10 -3
- package/dist/errors.js.map +1 -1
- package/llms.txt +360 -0
- package/package.json +3 -1
- package/skills/creating-bunderstack-apps/SKILL.md +46 -0
- package/skills/creating-bunderstack-apps/agents/openai.yaml +4 -0
- package/skills/creating-bunderstack-apps/references/application-structure.md +197 -0
- package/skills/creating-bunderstack-apps/references/runtime-integrations.md +68 -0
- package/skills/creating-bunderstack-apps/references/verification.md +25 -0
- package/skills/migrating-to-bunderstack/SKILL.md +84 -0
- package/skills/migrating-to-bunderstack/agents/openai.yaml +4 -0
- package/skills/migrating-to-bunderstack/references/audit-checklist.md +57 -0
- package/skills/migrating-to-bunderstack/references/runtime-replacements.md +286 -0
|
@@ -20,46 +20,60 @@ export declare function buildStorageApiRouter(registry: BucketStorageRegistry, o
|
|
|
20
20
|
readonly confirmUrl: v.StringSchema<undefined>;
|
|
21
21
|
}, undefined>], undefined>, {
|
|
22
22
|
readonly BAD_REQUEST: {
|
|
23
|
-
readonly data: v.StrictObjectSchema<{
|
|
24
|
-
readonly code: v.LiteralSchema<"BAD_REQUEST", undefined>;
|
|
23
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
24
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
|
|
25
25
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
26
|
-
}, undefined
|
|
26
|
+
}, undefined>, {
|
|
27
|
+
readonly code: "BAD_REQUEST";
|
|
28
|
+
}>;
|
|
27
29
|
};
|
|
28
30
|
readonly UNAUTHORIZED: {
|
|
29
|
-
readonly data: v.StrictObjectSchema<{
|
|
30
|
-
readonly code: v.LiteralSchema<"UNAUTHORIZED", undefined>;
|
|
31
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
32
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
|
|
31
33
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
32
|
-
}, undefined
|
|
34
|
+
}, undefined>, {
|
|
35
|
+
readonly code: "UNAUTHORIZED";
|
|
36
|
+
}>;
|
|
33
37
|
};
|
|
34
38
|
readonly FORBIDDEN: {
|
|
35
|
-
readonly data: v.StrictObjectSchema<{
|
|
36
|
-
readonly code: v.LiteralSchema<"FORBIDDEN", undefined>;
|
|
39
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
40
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
|
|
37
41
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
38
|
-
}, undefined
|
|
42
|
+
}, undefined>, {
|
|
43
|
+
readonly code: "FORBIDDEN";
|
|
44
|
+
}>;
|
|
39
45
|
};
|
|
40
46
|
readonly NOT_FOUND: {
|
|
41
|
-
readonly data: v.StrictObjectSchema<{
|
|
42
|
-
readonly code: v.LiteralSchema<"NOT_FOUND", undefined>;
|
|
47
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
48
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
|
|
43
49
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
44
|
-
}, undefined
|
|
50
|
+
}, undefined>, {
|
|
51
|
+
readonly code: "NOT_FOUND";
|
|
52
|
+
}>;
|
|
45
53
|
};
|
|
46
54
|
readonly CONFLICT: {
|
|
47
|
-
readonly data: v.StrictObjectSchema<{
|
|
48
|
-
readonly code: v.LiteralSchema<"CONFLICT", undefined>;
|
|
55
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
56
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
|
|
49
57
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
50
|
-
}, undefined
|
|
58
|
+
}, undefined>, {
|
|
59
|
+
readonly code: "CONFLICT";
|
|
60
|
+
}>;
|
|
51
61
|
};
|
|
52
62
|
readonly PAYLOAD_TOO_LARGE: {
|
|
53
|
-
readonly data: v.StrictObjectSchema<{
|
|
54
|
-
readonly code: v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>;
|
|
63
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
64
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
|
|
55
65
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
56
|
-
}, undefined
|
|
66
|
+
}, undefined>, {
|
|
67
|
+
readonly code: "PAYLOAD_TOO_LARGE";
|
|
68
|
+
}>;
|
|
57
69
|
};
|
|
58
70
|
readonly TOO_MANY_REQUESTS: {
|
|
59
|
-
readonly data: v.StrictObjectSchema<{
|
|
60
|
-
readonly code: v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>;
|
|
71
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
72
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
|
|
61
73
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
62
|
-
}, undefined
|
|
74
|
+
}, undefined>, {
|
|
75
|
+
readonly code: "TOO_MANY_REQUESTS";
|
|
76
|
+
}>;
|
|
63
77
|
};
|
|
64
78
|
}, never>;
|
|
65
79
|
upload: import("@orpc/server").DecoratedProcedure<ApiContext<Record<string, unknown>, Record<string, unknown>> & object, object, v.StrictObjectSchema<{
|
|
@@ -77,46 +91,60 @@ export declare function buildStorageApiRouter(registry: BucketStorageRegistry, o
|
|
|
77
91
|
}, undefined>;
|
|
78
92
|
}, undefined>, {
|
|
79
93
|
readonly BAD_REQUEST: {
|
|
80
|
-
readonly data: v.StrictObjectSchema<{
|
|
81
|
-
readonly code: v.LiteralSchema<"BAD_REQUEST", undefined>;
|
|
94
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
95
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
|
|
82
96
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
83
|
-
}, undefined
|
|
97
|
+
}, undefined>, {
|
|
98
|
+
readonly code: "BAD_REQUEST";
|
|
99
|
+
}>;
|
|
84
100
|
};
|
|
85
101
|
readonly UNAUTHORIZED: {
|
|
86
|
-
readonly data: v.StrictObjectSchema<{
|
|
87
|
-
readonly code: v.LiteralSchema<"UNAUTHORIZED", undefined>;
|
|
102
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
103
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
|
|
88
104
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
89
|
-
}, undefined
|
|
105
|
+
}, undefined>, {
|
|
106
|
+
readonly code: "UNAUTHORIZED";
|
|
107
|
+
}>;
|
|
90
108
|
};
|
|
91
109
|
readonly FORBIDDEN: {
|
|
92
|
-
readonly data: v.StrictObjectSchema<{
|
|
93
|
-
readonly code: v.LiteralSchema<"FORBIDDEN", undefined>;
|
|
110
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
111
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
|
|
94
112
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
95
|
-
}, undefined
|
|
113
|
+
}, undefined>, {
|
|
114
|
+
readonly code: "FORBIDDEN";
|
|
115
|
+
}>;
|
|
96
116
|
};
|
|
97
117
|
readonly NOT_FOUND: {
|
|
98
|
-
readonly data: v.StrictObjectSchema<{
|
|
99
|
-
readonly code: v.LiteralSchema<"NOT_FOUND", undefined>;
|
|
118
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
119
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
|
|
100
120
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
101
|
-
}, undefined
|
|
121
|
+
}, undefined>, {
|
|
122
|
+
readonly code: "NOT_FOUND";
|
|
123
|
+
}>;
|
|
102
124
|
};
|
|
103
125
|
readonly CONFLICT: {
|
|
104
|
-
readonly data: v.StrictObjectSchema<{
|
|
105
|
-
readonly code: v.LiteralSchema<"CONFLICT", undefined>;
|
|
126
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
127
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
|
|
106
128
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
107
|
-
}, undefined
|
|
129
|
+
}, undefined>, {
|
|
130
|
+
readonly code: "CONFLICT";
|
|
131
|
+
}>;
|
|
108
132
|
};
|
|
109
133
|
readonly PAYLOAD_TOO_LARGE: {
|
|
110
|
-
readonly data: v.StrictObjectSchema<{
|
|
111
|
-
readonly code: v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>;
|
|
134
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
135
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
|
|
112
136
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
113
|
-
}, undefined
|
|
137
|
+
}, undefined>, {
|
|
138
|
+
readonly code: "PAYLOAD_TOO_LARGE";
|
|
139
|
+
}>;
|
|
114
140
|
};
|
|
115
141
|
readonly TOO_MANY_REQUESTS: {
|
|
116
|
-
readonly data: v.StrictObjectSchema<{
|
|
117
|
-
readonly code: v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>;
|
|
142
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
143
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
|
|
118
144
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
119
|
-
}, undefined
|
|
145
|
+
}, undefined>, {
|
|
146
|
+
readonly code: "TOO_MANY_REQUESTS";
|
|
147
|
+
}>;
|
|
120
148
|
};
|
|
121
149
|
}, never>;
|
|
122
150
|
confirmUpload: import("@orpc/server").DecoratedProcedure<ApiContext<Record<string, unknown>, Record<string, unknown>> & object, object, v.StrictObjectSchema<{
|
|
@@ -126,46 +154,60 @@ export declare function buildStorageApiRouter(registry: BucketStorageRegistry, o
|
|
|
126
154
|
readonly url: v.StringSchema<undefined>;
|
|
127
155
|
}, undefined>, {
|
|
128
156
|
readonly BAD_REQUEST: {
|
|
129
|
-
readonly data: v.StrictObjectSchema<{
|
|
130
|
-
readonly code: v.LiteralSchema<"BAD_REQUEST", undefined>;
|
|
157
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
158
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
|
|
131
159
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
132
|
-
}, undefined
|
|
160
|
+
}, undefined>, {
|
|
161
|
+
readonly code: "BAD_REQUEST";
|
|
162
|
+
}>;
|
|
133
163
|
};
|
|
134
164
|
readonly UNAUTHORIZED: {
|
|
135
|
-
readonly data: v.StrictObjectSchema<{
|
|
136
|
-
readonly code: v.LiteralSchema<"UNAUTHORIZED", undefined>;
|
|
165
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
166
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
|
|
137
167
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
138
|
-
}, undefined
|
|
168
|
+
}, undefined>, {
|
|
169
|
+
readonly code: "UNAUTHORIZED";
|
|
170
|
+
}>;
|
|
139
171
|
};
|
|
140
172
|
readonly FORBIDDEN: {
|
|
141
|
-
readonly data: v.StrictObjectSchema<{
|
|
142
|
-
readonly code: v.LiteralSchema<"FORBIDDEN", undefined>;
|
|
173
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
174
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
|
|
143
175
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
144
|
-
}, undefined
|
|
176
|
+
}, undefined>, {
|
|
177
|
+
readonly code: "FORBIDDEN";
|
|
178
|
+
}>;
|
|
145
179
|
};
|
|
146
180
|
readonly NOT_FOUND: {
|
|
147
|
-
readonly data: v.StrictObjectSchema<{
|
|
148
|
-
readonly code: v.LiteralSchema<"NOT_FOUND", undefined>;
|
|
181
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
182
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
|
|
149
183
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
150
|
-
}, undefined
|
|
184
|
+
}, undefined>, {
|
|
185
|
+
readonly code: "NOT_FOUND";
|
|
186
|
+
}>;
|
|
151
187
|
};
|
|
152
188
|
readonly CONFLICT: {
|
|
153
|
-
readonly data: v.StrictObjectSchema<{
|
|
154
|
-
readonly code: v.LiteralSchema<"CONFLICT", undefined>;
|
|
189
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
190
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
|
|
155
191
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
156
|
-
}, undefined
|
|
192
|
+
}, undefined>, {
|
|
193
|
+
readonly code: "CONFLICT";
|
|
194
|
+
}>;
|
|
157
195
|
};
|
|
158
196
|
readonly PAYLOAD_TOO_LARGE: {
|
|
159
|
-
readonly data: v.StrictObjectSchema<{
|
|
160
|
-
readonly code: v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>;
|
|
197
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
198
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
|
|
161
199
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
162
|
-
}, undefined
|
|
200
|
+
}, undefined>, {
|
|
201
|
+
readonly code: "PAYLOAD_TOO_LARGE";
|
|
202
|
+
}>;
|
|
163
203
|
};
|
|
164
204
|
readonly TOO_MANY_REQUESTS: {
|
|
165
|
-
readonly data: v.StrictObjectSchema<{
|
|
166
|
-
readonly code: v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>;
|
|
205
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
206
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
|
|
167
207
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
168
|
-
}, undefined
|
|
208
|
+
}, undefined>, {
|
|
209
|
+
readonly code: "TOO_MANY_REQUESTS";
|
|
210
|
+
}>;
|
|
169
211
|
};
|
|
170
212
|
}, never>;
|
|
171
213
|
download: import("@orpc/server").DecoratedProcedure<ApiContext<Record<string, unknown>, Record<string, unknown>> & object, object, v.StrictObjectSchema<{
|
|
@@ -185,92 +227,120 @@ export declare function buildStorageApiRouter(registry: BucketStorageRegistry, o
|
|
|
185
227
|
readonly body: v.OptionalSchema<v.UndefinedSchema<undefined>, undefined>;
|
|
186
228
|
}, undefined>], undefined>, {
|
|
187
229
|
readonly BAD_REQUEST: {
|
|
188
|
-
readonly data: v.StrictObjectSchema<{
|
|
189
|
-
readonly code: v.LiteralSchema<"BAD_REQUEST", undefined>;
|
|
230
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
231
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
|
|
190
232
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
191
|
-
}, undefined
|
|
233
|
+
}, undefined>, {
|
|
234
|
+
readonly code: "BAD_REQUEST";
|
|
235
|
+
}>;
|
|
192
236
|
};
|
|
193
237
|
readonly UNAUTHORIZED: {
|
|
194
|
-
readonly data: v.StrictObjectSchema<{
|
|
195
|
-
readonly code: v.LiteralSchema<"UNAUTHORIZED", undefined>;
|
|
238
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
239
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
|
|
196
240
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
197
|
-
}, undefined
|
|
241
|
+
}, undefined>, {
|
|
242
|
+
readonly code: "UNAUTHORIZED";
|
|
243
|
+
}>;
|
|
198
244
|
};
|
|
199
245
|
readonly FORBIDDEN: {
|
|
200
|
-
readonly data: v.StrictObjectSchema<{
|
|
201
|
-
readonly code: v.LiteralSchema<"FORBIDDEN", undefined>;
|
|
246
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
247
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
|
|
202
248
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
203
|
-
}, undefined
|
|
249
|
+
}, undefined>, {
|
|
250
|
+
readonly code: "FORBIDDEN";
|
|
251
|
+
}>;
|
|
204
252
|
};
|
|
205
253
|
readonly NOT_FOUND: {
|
|
206
|
-
readonly data: v.StrictObjectSchema<{
|
|
207
|
-
readonly code: v.LiteralSchema<"NOT_FOUND", undefined>;
|
|
254
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
255
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
|
|
208
256
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
209
|
-
}, undefined
|
|
257
|
+
}, undefined>, {
|
|
258
|
+
readonly code: "NOT_FOUND";
|
|
259
|
+
}>;
|
|
210
260
|
};
|
|
211
261
|
readonly CONFLICT: {
|
|
212
|
-
readonly data: v.StrictObjectSchema<{
|
|
213
|
-
readonly code: v.LiteralSchema<"CONFLICT", undefined>;
|
|
262
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
263
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
|
|
214
264
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
215
|
-
}, undefined
|
|
265
|
+
}, undefined>, {
|
|
266
|
+
readonly code: "CONFLICT";
|
|
267
|
+
}>;
|
|
216
268
|
};
|
|
217
269
|
readonly PAYLOAD_TOO_LARGE: {
|
|
218
|
-
readonly data: v.StrictObjectSchema<{
|
|
219
|
-
readonly code: v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>;
|
|
270
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
271
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
|
|
220
272
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
221
|
-
}, undefined
|
|
273
|
+
}, undefined>, {
|
|
274
|
+
readonly code: "PAYLOAD_TOO_LARGE";
|
|
275
|
+
}>;
|
|
222
276
|
};
|
|
223
277
|
readonly TOO_MANY_REQUESTS: {
|
|
224
|
-
readonly data: v.StrictObjectSchema<{
|
|
225
|
-
readonly code: v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>;
|
|
278
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
279
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
|
|
226
280
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
227
|
-
}, undefined
|
|
281
|
+
}, undefined>, {
|
|
282
|
+
readonly code: "TOO_MANY_REQUESTS";
|
|
283
|
+
}>;
|
|
228
284
|
};
|
|
229
285
|
}, never>;
|
|
230
286
|
delete: import("@orpc/server").DecoratedProcedure<ApiContext<Record<string, unknown>, Record<string, unknown>> & object, object, v.StrictObjectSchema<{
|
|
231
287
|
readonly path: v.StringSchema<undefined>;
|
|
232
288
|
}, undefined>, v.UndefinedSchema<undefined>, {
|
|
233
289
|
readonly BAD_REQUEST: {
|
|
234
|
-
readonly data: v.StrictObjectSchema<{
|
|
235
|
-
readonly code: v.LiteralSchema<"BAD_REQUEST", undefined>;
|
|
290
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
291
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
|
|
236
292
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
237
|
-
}, undefined
|
|
293
|
+
}, undefined>, {
|
|
294
|
+
readonly code: "BAD_REQUEST";
|
|
295
|
+
}>;
|
|
238
296
|
};
|
|
239
297
|
readonly UNAUTHORIZED: {
|
|
240
|
-
readonly data: v.StrictObjectSchema<{
|
|
241
|
-
readonly code: v.LiteralSchema<"UNAUTHORIZED", undefined>;
|
|
298
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
299
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
|
|
242
300
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
243
|
-
}, undefined
|
|
301
|
+
}, undefined>, {
|
|
302
|
+
readonly code: "UNAUTHORIZED";
|
|
303
|
+
}>;
|
|
244
304
|
};
|
|
245
305
|
readonly FORBIDDEN: {
|
|
246
|
-
readonly data: v.StrictObjectSchema<{
|
|
247
|
-
readonly code: v.LiteralSchema<"FORBIDDEN", undefined>;
|
|
306
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
307
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
|
|
248
308
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
249
|
-
}, undefined
|
|
309
|
+
}, undefined>, {
|
|
310
|
+
readonly code: "FORBIDDEN";
|
|
311
|
+
}>;
|
|
250
312
|
};
|
|
251
313
|
readonly NOT_FOUND: {
|
|
252
|
-
readonly data: v.StrictObjectSchema<{
|
|
253
|
-
readonly code: v.LiteralSchema<"NOT_FOUND", undefined>;
|
|
314
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
315
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
|
|
254
316
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
255
|
-
}, undefined
|
|
317
|
+
}, undefined>, {
|
|
318
|
+
readonly code: "NOT_FOUND";
|
|
319
|
+
}>;
|
|
256
320
|
};
|
|
257
321
|
readonly CONFLICT: {
|
|
258
|
-
readonly data: v.StrictObjectSchema<{
|
|
259
|
-
readonly code: v.LiteralSchema<"CONFLICT", undefined>;
|
|
322
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
323
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
|
|
260
324
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
261
|
-
}, undefined
|
|
325
|
+
}, undefined>, {
|
|
326
|
+
readonly code: "CONFLICT";
|
|
327
|
+
}>;
|
|
262
328
|
};
|
|
263
329
|
readonly PAYLOAD_TOO_LARGE: {
|
|
264
|
-
readonly data: v.StrictObjectSchema<{
|
|
265
|
-
readonly code: v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>;
|
|
330
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
331
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
|
|
266
332
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
267
|
-
}, undefined
|
|
333
|
+
}, undefined>, {
|
|
334
|
+
readonly code: "PAYLOAD_TOO_LARGE";
|
|
335
|
+
}>;
|
|
268
336
|
};
|
|
269
337
|
readonly TOO_MANY_REQUESTS: {
|
|
270
|
-
readonly data: v.StrictObjectSchema<{
|
|
271
|
-
readonly code: v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>;
|
|
338
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
339
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
|
|
272
340
|
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
273
|
-
}, undefined
|
|
341
|
+
}, undefined>, {
|
|
342
|
+
readonly code: "TOO_MANY_REQUESTS";
|
|
343
|
+
}>;
|
|
274
344
|
};
|
|
275
345
|
}, never>;
|
|
276
346
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-router.d.ts","sourceRoot":"","sources":["../../src/api/storage-router.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAA;AACvC,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAuM3C,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,qBAAqB,EAC/B,UAAU,EAAE,iBAAiB
|
|
1
|
+
{"version":3,"file":"storage-router.d.ts","sourceRoot":"","sources":["../../src/api/storage-router.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAA;AACvC,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAuM3C,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,qBAAqB,EAC/B,UAAU,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc9B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** The skills this package ships, copied from `.agents/skills` at build time. */
|
|
2
|
+
export declare const SHIPPED_SKILLS: readonly ["creating-bunderstack-apps", "migrating-to-bunderstack"];
|
|
3
|
+
export type SkillsOptions = {
|
|
4
|
+
/** Project root the skills are installed into. */
|
|
5
|
+
cwd: string;
|
|
6
|
+
/** Destination, relative to `cwd`. */
|
|
7
|
+
directory?: string;
|
|
8
|
+
/** Report drift instead of writing. Exits non-zero when anything differs. */
|
|
9
|
+
check?: boolean;
|
|
10
|
+
};
|
|
11
|
+
export type SkillsIo = {
|
|
12
|
+
stdout(message: string): void;
|
|
13
|
+
stderr(message: string): void;
|
|
14
|
+
};
|
|
15
|
+
export declare function installSkills(options: SkillsOptions, io: SkillsIo): Promise<number>;
|
|
16
|
+
//# sourceMappingURL=cli-skills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-skills.d.ts","sourceRoot":"","sources":["../src/cli-skills.ts"],"names":[],"mappings":"AAIA,iFAAiF;AACjF,eAAO,MAAM,cAAc,oEAGjB,CAAA;AAwBV,MAAM,MAAM,aAAa,GAAG;IAC1B,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAA;IACX,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B,CAAA;AAuDD,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,EACtB,EAAE,EAAE,QAAQ,GACX,OAAO,CAAC,MAAM,CAAC,CAiDjB"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { cp, mkdir, readFile, readdir, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
/** The skills this package ships, copied from `.agents/skills` at build time. */
|
|
5
|
+
export const SHIPPED_SKILLS = [
|
|
6
|
+
'creating-bunderstack-apps',
|
|
7
|
+
'migrating-to-bunderstack',
|
|
8
|
+
];
|
|
9
|
+
const MARKER_START = '<!-- bunderstack:skills -->';
|
|
10
|
+
const MARKER_END = '<!-- /bunderstack:skills -->';
|
|
11
|
+
/**
|
|
12
|
+
* Agents read AGENTS.md before they search for anything, so the pointer is
|
|
13
|
+
* what actually gets the skills into context. The markers let a later
|
|
14
|
+
* `bunderstack skills` run replace the block without touching the rest.
|
|
15
|
+
*/
|
|
16
|
+
function agentsBlock(directory) {
|
|
17
|
+
return `${MARKER_START}
|
|
18
|
+
## Bunderstack
|
|
19
|
+
|
|
20
|
+
This project uses Bunderstack. Before changing the server API, access rules,
|
|
21
|
+
jobs, storage, or realtime, read \`${directory}/creating-bunderstack-apps/SKILL.md\`.
|
|
22
|
+
When replacing existing infrastructure, read
|
|
23
|
+
\`${directory}/migrating-to-bunderstack/SKILL.md\` instead.
|
|
24
|
+
|
|
25
|
+
\`node_modules/bunderstack/llms.txt\` is a dense plain-text reference for the
|
|
26
|
+
whole framework.
|
|
27
|
+
${MARKER_END}`;
|
|
28
|
+
}
|
|
29
|
+
/** Where this build keeps its copy of the skills. */
|
|
30
|
+
function packagedSkillsDir() {
|
|
31
|
+
return join(new URL('..', import.meta.url).pathname, 'skills');
|
|
32
|
+
}
|
|
33
|
+
async function filesUnder(dir) {
|
|
34
|
+
const entries = await readdir(dir, { withFileTypes: true, recursive: true });
|
|
35
|
+
return entries
|
|
36
|
+
.filter((entry) => entry.isFile())
|
|
37
|
+
.map((entry) => join(entry.parentPath, entry.name));
|
|
38
|
+
}
|
|
39
|
+
async function differs(from, to) {
|
|
40
|
+
if (!existsSync(to))
|
|
41
|
+
return true;
|
|
42
|
+
const sources = await filesUnder(from);
|
|
43
|
+
for (const source of sources) {
|
|
44
|
+
const target = join(to, source.slice(from.length + 1));
|
|
45
|
+
if (!existsSync(target))
|
|
46
|
+
return true;
|
|
47
|
+
if ((await readFile(source, 'utf8')) !== (await readFile(target, 'utf8'))) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
async function writeAgentsPointer(cwd, directory) {
|
|
54
|
+
const path = join(cwd, 'AGENTS.md');
|
|
55
|
+
const block = agentsBlock(directory);
|
|
56
|
+
if (!existsSync(path)) {
|
|
57
|
+
await writeFile(path, `# Agent guide\n\n${block}\n`);
|
|
58
|
+
return 'created';
|
|
59
|
+
}
|
|
60
|
+
const current = await readFile(path, 'utf8');
|
|
61
|
+
const start = current.indexOf(MARKER_START);
|
|
62
|
+
const end = current.indexOf(MARKER_END);
|
|
63
|
+
if (start !== -1 && end !== -1) {
|
|
64
|
+
const replaced = current.slice(0, start) + block + current.slice(end + MARKER_END.length);
|
|
65
|
+
if (replaced === current)
|
|
66
|
+
return 'current';
|
|
67
|
+
await writeFile(path, replaced);
|
|
68
|
+
return 'updated';
|
|
69
|
+
}
|
|
70
|
+
await writeFile(path, `${current.trimEnd()}\n\n${block}\n`);
|
|
71
|
+
return 'updated';
|
|
72
|
+
}
|
|
73
|
+
export async function installSkills(options, io) {
|
|
74
|
+
const source = packagedSkillsDir();
|
|
75
|
+
if (!existsSync(source)) {
|
|
76
|
+
io.stderr('[bunderstack] this build ships no skills; reinstall the package or run bun run build');
|
|
77
|
+
return 1;
|
|
78
|
+
}
|
|
79
|
+
const directory = options.directory ?? '.agents/skills';
|
|
80
|
+
const destination = join(options.cwd, directory);
|
|
81
|
+
const stale = [];
|
|
82
|
+
for (const skill of SHIPPED_SKILLS) {
|
|
83
|
+
const from = join(source, skill);
|
|
84
|
+
const to = join(destination, skill);
|
|
85
|
+
if (!(await differs(from, to)))
|
|
86
|
+
continue;
|
|
87
|
+
stale.push(skill);
|
|
88
|
+
if (options.check)
|
|
89
|
+
continue;
|
|
90
|
+
await mkdir(destination, { recursive: true });
|
|
91
|
+
await cp(from, to, { recursive: true });
|
|
92
|
+
}
|
|
93
|
+
if (options.check) {
|
|
94
|
+
const pointer = await readFile(join(options.cwd, 'AGENTS.md'), 'utf8').catch(() => '');
|
|
95
|
+
const pointerStale = !pointer.includes(MARKER_START);
|
|
96
|
+
if (stale.length === 0 && !pointerStale) {
|
|
97
|
+
io.stdout(`${directory} is current`);
|
|
98
|
+
return 0;
|
|
99
|
+
}
|
|
100
|
+
for (const skill of stale) {
|
|
101
|
+
io.stderr(`[bunderstack] ${directory}/${skill} is missing or outdated`);
|
|
102
|
+
}
|
|
103
|
+
if (pointerStale)
|
|
104
|
+
io.stderr('[bunderstack] AGENTS.md has no Bunderstack block');
|
|
105
|
+
io.stderr('[bunderstack] run: bunx bunderstack skills');
|
|
106
|
+
return 1;
|
|
107
|
+
}
|
|
108
|
+
const pointer = await writeAgentsPointer(options.cwd, directory);
|
|
109
|
+
io.stdout(stale.length === 0
|
|
110
|
+
? `${directory} is current`
|
|
111
|
+
: `Installed ${stale.length} skill(s) into ${directory}: ${stale.join(', ')}`);
|
|
112
|
+
if (pointer !== 'current')
|
|
113
|
+
io.stdout(`AGENTS.md ${pointer}`);
|
|
114
|
+
return 0;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=cli-skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-skills.js","sourceRoot":"","sources":["../src/cli-skills.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAEL,iBAAiB,EAElB,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAEL,iBAAiB,EAElB,MAAM,uBAAuB,CAAA;AAG9B,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B,CAAA;AAcD,wBAAsB,MAAM,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,EAAE,EAAE,KAAK,EACT,QAAQ,GAAE,OAAO,iBAAqC,GACrD,OAAO,CAAC,MAAM,CAAC,CAmFjB"}
|
package/dist/cli.js
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
import { BlueprintCheckError, generateBlueprint, } from './blueprint-generator.js';
|
|
3
|
-
|
|
3
|
+
import { installSkills } from './cli-skills.js';
|
|
4
|
+
const help = `Usage:
|
|
5
|
+
bunderstack blueprint [directory] [--entry <path>] [--output <path>] [--check]
|
|
6
|
+
bunderstack skills [--dir <path>] [--check]
|
|
4
7
|
|
|
5
|
-
Generate a committed deployment declaration for a TanStack Start
|
|
6
|
-
Entry precedence: --entry,
|
|
8
|
+
blueprint Generate a committed deployment declaration for a TanStack Start
|
|
9
|
+
application. Entry precedence: --entry,
|
|
10
|
+
package.json#bunderstack.entry, src/bunderstack.ts.
|
|
11
|
+
|
|
12
|
+
skills Install the Bunderstack agent skills that match this version into
|
|
13
|
+
.agents/skills, and point AGENTS.md at them so an agent loads them
|
|
14
|
+
before touching the API. --check reports drift without writing.`;
|
|
7
15
|
export async function runCli(args, io, generate = generateBlueprint) {
|
|
8
16
|
if (args[0] === '--help' || args[0] === '-h') {
|
|
9
17
|
io.stdout(help);
|
|
@@ -13,8 +21,32 @@ export async function runCli(args, io, generate = generateBlueprint) {
|
|
|
13
21
|
io.stdout((await Bun.file(new URL('../package.json', import.meta.url)).json()).version);
|
|
14
22
|
return 0;
|
|
15
23
|
}
|
|
24
|
+
if (args[0] === 'skills') {
|
|
25
|
+
const options = {
|
|
26
|
+
cwd: process.cwd(),
|
|
27
|
+
};
|
|
28
|
+
for (let index = 1; index < args.length; index++) {
|
|
29
|
+
const argument = args[index];
|
|
30
|
+
if (argument === '--check') {
|
|
31
|
+
options.check = true;
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
if (argument === '--dir') {
|
|
35
|
+
const value = args[++index];
|
|
36
|
+
if (!value || value.startsWith('--')) {
|
|
37
|
+
io.stderr('[bunderstack] missing value for --dir');
|
|
38
|
+
return 2;
|
|
39
|
+
}
|
|
40
|
+
options.directory = value;
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
io.stderr(`[bunderstack] unknown option: ${argument}`);
|
|
44
|
+
return 2;
|
|
45
|
+
}
|
|
46
|
+
return installSkills(options, io);
|
|
47
|
+
}
|
|
16
48
|
if (args[0] !== 'blueprint') {
|
|
17
|
-
io.stderr(
|
|
49
|
+
io.stderr(help);
|
|
18
50
|
return 2;
|
|
19
51
|
}
|
|
20
52
|
const options = { directory: process.cwd() };
|