patchwork-os 0.2.0-beta.0 → 0.2.0-beta.2

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.
Files changed (143) hide show
  1. package/README.md +4 -1
  2. package/deploy/deploy-dashboard.sh +25 -1
  3. package/deploy/macos/README.md +153 -0
  4. package/deploy/macos/com.patchwork.bridge.plist.template +54 -0
  5. package/deploy/macos/com.patchwork.tunnel.plist.template +76 -0
  6. package/deploy/macos/install-mac-bridge.sh +244 -0
  7. package/deploy/macos/uninstall-mac-bridge.sh +22 -0
  8. package/dist/analyticsAggregator.d.ts +5 -1
  9. package/dist/analyticsAggregator.js +15 -4
  10. package/dist/analyticsAggregator.js.map +1 -1
  11. package/dist/analyticsPrefs.d.ts +11 -0
  12. package/dist/analyticsPrefs.js +33 -0
  13. package/dist/analyticsPrefs.js.map +1 -1
  14. package/dist/approvalHttp.d.ts +14 -0
  15. package/dist/approvalHttp.js +172 -1
  16. package/dist/approvalHttp.js.map +1 -1
  17. package/dist/approvalQueue.d.ts +27 -2
  18. package/dist/approvalQueue.js +44 -7
  19. package/dist/approvalQueue.js.map +1 -1
  20. package/dist/automation.d.ts +34 -3
  21. package/dist/automation.js +85 -10
  22. package/dist/automation.js.map +1 -1
  23. package/dist/bridge.js +39 -27
  24. package/dist/bridge.js.map +1 -1
  25. package/dist/claudeDriver.d.ts +0 -16
  26. package/dist/claudeDriver.js +19 -20
  27. package/dist/claudeDriver.js.map +1 -1
  28. package/dist/claudeMdPatch.d.ts +9 -3
  29. package/dist/claudeMdPatch.js +79 -13
  30. package/dist/claudeMdPatch.js.map +1 -1
  31. package/dist/claudeOrchestrator.d.ts +12 -0
  32. package/dist/claudeOrchestrator.js +7 -2
  33. package/dist/claudeOrchestrator.js.map +1 -1
  34. package/dist/commands/marketplace.d.ts +15 -10
  35. package/dist/commands/marketplace.js +27 -115
  36. package/dist/commands/marketplace.js.map +1 -1
  37. package/dist/commands/recipe.js +10 -1
  38. package/dist/commands/recipe.js.map +1 -1
  39. package/dist/commitIssueLinkLog.d.ts +8 -0
  40. package/dist/commitIssueLinkLog.js +53 -1
  41. package/dist/commitIssueLinkLog.js.map +1 -1
  42. package/dist/config.d.ts +11 -3
  43. package/dist/config.js +32 -2
  44. package/dist/config.js.map +1 -1
  45. package/dist/connectorRoutes.js +63 -372
  46. package/dist/connectorRoutes.js.map +1 -1
  47. package/dist/connectors/baseConnector.js +25 -3
  48. package/dist/connectors/baseConnector.js.map +1 -1
  49. package/dist/connectors/jira.js +18 -1
  50. package/dist/connectors/jira.js.map +1 -1
  51. package/dist/drivers/claude/subprocess.d.ts +12 -2
  52. package/dist/drivers/claude/subprocess.js +79 -6
  53. package/dist/drivers/claude/subprocess.js.map +1 -1
  54. package/dist/drivers/gemini/api.d.ts +18 -0
  55. package/dist/drivers/gemini/api.js +29 -0
  56. package/dist/drivers/gemini/api.js.map +1 -0
  57. package/dist/drivers/gemini/index.d.ts +22 -0
  58. package/dist/drivers/gemini/index.js +240 -129
  59. package/dist/drivers/gemini/index.js.map +1 -1
  60. package/dist/drivers/index.d.ts +3 -1
  61. package/dist/drivers/index.js +9 -1
  62. package/dist/drivers/index.js.map +1 -1
  63. package/dist/drivers/local/index.d.ts +43 -0
  64. package/dist/drivers/local/index.js +140 -0
  65. package/dist/drivers/local/index.js.map +1 -0
  66. package/dist/drivers/openai/index.js +30 -2
  67. package/dist/drivers/openai/index.js.map +1 -1
  68. package/dist/extensionClient.d.ts +8 -0
  69. package/dist/extensionClient.js +24 -2
  70. package/dist/extensionClient.js.map +1 -1
  71. package/dist/fp/automationInterpreter.d.ts +9 -1
  72. package/dist/fp/automationInterpreter.js +151 -34
  73. package/dist/fp/automationInterpreter.js.map +1 -1
  74. package/dist/fp/automationProgram.d.ts +30 -0
  75. package/dist/fp/automationProgram.js.map +1 -1
  76. package/dist/fp/automationState.d.ts +23 -4
  77. package/dist/fp/automationState.js +28 -4
  78. package/dist/fp/automationState.js.map +1 -1
  79. package/dist/fp/interpreterContext.d.ts +66 -1
  80. package/dist/fp/interpreterContext.js +140 -1
  81. package/dist/fp/interpreterContext.js.map +1 -1
  82. package/dist/fp/policyParser.js +29 -1
  83. package/dist/fp/policyParser.js.map +1 -1
  84. package/dist/httpErrorResponse.d.ts +36 -0
  85. package/dist/httpErrorResponse.js +46 -0
  86. package/dist/httpErrorResponse.js.map +1 -0
  87. package/dist/inboxRoutes.js +90 -11
  88. package/dist/inboxRoutes.js.map +1 -1
  89. package/dist/index.d.ts +1 -1
  90. package/dist/index.js +3 -2
  91. package/dist/index.js.map +1 -1
  92. package/dist/oauth.d.ts +22 -0
  93. package/dist/oauth.js +46 -0
  94. package/dist/oauth.js.map +1 -1
  95. package/dist/oauthRoutes.js +3 -8
  96. package/dist/oauthRoutes.js.map +1 -1
  97. package/dist/patchworkConfig.d.ts +30 -1
  98. package/dist/patchworkConfig.js +99 -4
  99. package/dist/patchworkConfig.js.map +1 -1
  100. package/dist/preToolUseHook.js +7 -1
  101. package/dist/preToolUseHook.js.map +1 -1
  102. package/dist/prompts.js +4 -0
  103. package/dist/prompts.js.map +1 -1
  104. package/dist/recipeOrchestration.js +13 -3
  105. package/dist/recipeOrchestration.js.map +1 -1
  106. package/dist/recipeRoutes.d.ts +5 -0
  107. package/dist/recipeRoutes.js +57 -33
  108. package/dist/recipeRoutes.js.map +1 -1
  109. package/dist/recipes/agentExecutor.d.ts +10 -1
  110. package/dist/recipes/agentExecutor.js +5 -4
  111. package/dist/recipes/agentExecutor.js.map +1 -1
  112. package/dist/recipes/scheduler.d.ts +7 -0
  113. package/dist/recipes/scheduler.js +30 -13
  114. package/dist/recipes/scheduler.js.map +1 -1
  115. package/dist/recipes/schema.d.ts +6 -0
  116. package/dist/recipes/tools/file.js +5 -2
  117. package/dist/recipes/tools/file.js.map +1 -1
  118. package/dist/recipes/tools/gmail.js +18 -1
  119. package/dist/recipes/tools/gmail.js.map +1 -1
  120. package/dist/recipes/yamlRunner.d.ts +32 -2
  121. package/dist/recipes/yamlRunner.js +71 -6
  122. package/dist/recipes/yamlRunner.js.map +1 -1
  123. package/dist/recipesHttp.d.ts +17 -1
  124. package/dist/recipesHttp.js +68 -4
  125. package/dist/recipesHttp.js.map +1 -1
  126. package/dist/server.d.ts +52 -1
  127. package/dist/server.js +427 -248
  128. package/dist/server.js.map +1 -1
  129. package/dist/streamableHttp.d.ts +9 -4
  130. package/dist/streamableHttp.js +17 -9
  131. package/dist/streamableHttp.js.map +1 -1
  132. package/dist/tools/openInBrowser.js +6 -1
  133. package/dist/tools/openInBrowser.js.map +1 -1
  134. package/dist/tools/runCommand.js +5 -0
  135. package/dist/tools/runCommand.js.map +1 -1
  136. package/dist/tools/terminal.js +4 -0
  137. package/dist/tools/terminal.js.map +1 -1
  138. package/dist/tools/utils.d.ts +4 -0
  139. package/dist/tools/utils.js +62 -0
  140. package/dist/tools/utils.js.map +1 -1
  141. package/package.json +2 -2
  142. package/scripts/start-all.sh +4 -2
  143. package/templates/recipes/approval-queue-ui-test.yaml +205 -0
@@ -24,6 +24,7 @@
24
24
  * - Pre-extraction grep confirmed zero `this.` references in either
25
25
  * block, so no dependency injection was needed.
26
26
  */
27
+ import { respond500 } from "./httpErrorResponse.js";
27
28
  import { readBodyWithCap, respond413 } from "./recipeRoutes.js";
28
29
  /**
29
30
  * Token-paste connector body cap. The legitimate payload is a small JSON
@@ -58,12 +59,7 @@ async function dispatchConnectorConnect(req, res, loadHandler) {
58
59
  res.end(result.body);
59
60
  }
60
61
  catch (err) {
61
- if (!res.headersSent) {
62
- res.writeHead(500, { "Content-Type": "application/json" });
63
- res.end(JSON.stringify({
64
- error: err instanceof Error ? err.message : String(err),
65
- }));
66
- }
62
+ respond500(res, err);
67
63
  }
68
64
  }
69
65
  /**
@@ -87,12 +83,7 @@ export function tryHandlePublicConnectorRoute(req, res, parsedUrl) {
87
83
  res.end(result.body);
88
84
  }
89
85
  catch (err) {
90
- if (!res.headersSent) {
91
- res.writeHead(500, { "Content-Type": "application/json" });
92
- res.end(JSON.stringify({
93
- error: err instanceof Error ? err.message : String(err),
94
- }));
95
- }
86
+ respond500(res, err);
96
87
  }
97
88
  })();
98
89
  return true;
@@ -112,12 +103,7 @@ export function tryHandlePublicConnectorRoute(req, res, parsedUrl) {
112
103
  res.end(result.body);
113
104
  }
114
105
  catch (err) {
115
- if (!res.headersSent) {
116
- res.writeHead(500, { "Content-Type": "application/json" });
117
- res.end(JSON.stringify({
118
- error: err instanceof Error ? err.message : String(err),
119
- }));
120
- }
106
+ respond500(res, err);
121
107
  }
122
108
  })();
123
109
  return true;
@@ -137,12 +123,7 @@ export function tryHandlePublicConnectorRoute(req, res, parsedUrl) {
137
123
  res.end(result.body);
138
124
  }
139
125
  catch (err) {
140
- if (!res.headersSent) {
141
- res.writeHead(500, { "Content-Type": "application/json" });
142
- res.end(JSON.stringify({
143
- error: err instanceof Error ? err.message : String(err),
144
- }));
145
- }
126
+ respond500(res, err);
146
127
  }
147
128
  })();
148
129
  return true;
@@ -162,12 +143,7 @@ export function tryHandlePublicConnectorRoute(req, res, parsedUrl) {
162
143
  res.end(result.body);
163
144
  }
164
145
  catch (err) {
165
- if (!res.headersSent) {
166
- res.writeHead(500, { "Content-Type": "application/json" });
167
- res.end(JSON.stringify({
168
- error: err instanceof Error ? err.message : String(err),
169
- }));
170
- }
146
+ respond500(res, err);
171
147
  }
172
148
  })();
173
149
  return true;
@@ -187,12 +163,7 @@ export function tryHandlePublicConnectorRoute(req, res, parsedUrl) {
187
163
  res.end(result.body);
188
164
  }
189
165
  catch (err) {
190
- if (!res.headersSent) {
191
- res.writeHead(500, { "Content-Type": "application/json" });
192
- res.end(JSON.stringify({
193
- error: err instanceof Error ? err.message : String(err),
194
- }));
195
- }
166
+ respond500(res, err);
196
167
  }
197
168
  })();
198
169
  return true;
@@ -212,12 +183,7 @@ export function tryHandlePublicConnectorRoute(req, res, parsedUrl) {
212
183
  res.end(result.body);
213
184
  }
214
185
  catch (err) {
215
- if (!res.headersSent) {
216
- res.writeHead(500, { "Content-Type": "application/json" });
217
- res.end(JSON.stringify({
218
- error: err instanceof Error ? err.message : String(err),
219
- }));
220
- }
186
+ respond500(res, err);
221
187
  }
222
188
  })();
223
189
  return true;
@@ -237,12 +203,7 @@ export function tryHandlePublicConnectorRoute(req, res, parsedUrl) {
237
203
  res.end(result.body);
238
204
  }
239
205
  catch (err) {
240
- if (!res.headersSent) {
241
- res.writeHead(500, { "Content-Type": "application/json" });
242
- res.end(JSON.stringify({
243
- error: err instanceof Error ? err.message : String(err),
244
- }));
245
- }
206
+ respond500(res, err);
246
207
  }
247
208
  })();
248
209
  return true;
@@ -271,12 +232,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
271
232
  res.end(result.body);
272
233
  }
273
234
  catch (err) {
274
- if (!res.headersSent) {
275
- res.writeHead(500, { "Content-Type": "application/json" });
276
- res.end(JSON.stringify({
277
- error: err instanceof Error ? err.message : String(err),
278
- }));
279
- }
235
+ respond500(res, err);
280
236
  }
281
237
  })();
282
238
  return true;
@@ -299,12 +255,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
299
255
  }
300
256
  }
301
257
  catch (err) {
302
- if (!res.headersSent) {
303
- res.writeHead(500, { "Content-Type": "application/json" });
304
- res.end(JSON.stringify({
305
- error: err instanceof Error ? err.message : String(err),
306
- }));
307
- }
258
+ respond500(res, err);
308
259
  }
309
260
  })();
310
261
  return true;
@@ -320,12 +271,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
320
271
  res.end(result.body);
321
272
  }
322
273
  catch (err) {
323
- if (!res.headersSent) {
324
- res.writeHead(500, { "Content-Type": "application/json" });
325
- res.end(JSON.stringify({
326
- error: err instanceof Error ? err.message : String(err),
327
- }));
328
- }
274
+ respond500(res, err);
329
275
  }
330
276
  })();
331
277
  return true;
@@ -342,12 +288,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
342
288
  res.end(result.body);
343
289
  }
344
290
  catch (err) {
345
- if (!res.headersSent) {
346
- res.writeHead(500, { "Content-Type": "application/json" });
347
- res.end(JSON.stringify({
348
- error: err instanceof Error ? err.message : String(err),
349
- }));
350
- }
291
+ respond500(res, err);
351
292
  }
352
293
  })();
353
294
  return true;
@@ -371,12 +312,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
371
312
  }
372
313
  }
373
314
  catch (err) {
374
- if (!res.headersSent) {
375
- res.writeHead(500, { "Content-Type": "application/json" });
376
- res.end(JSON.stringify({
377
- error: err instanceof Error ? err.message : String(err),
378
- }));
379
- }
315
+ respond500(res, err);
380
316
  }
381
317
  })();
382
318
  return true;
@@ -393,12 +329,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
393
329
  res.end(result.body);
394
330
  }
395
331
  catch (err) {
396
- if (!res.headersSent) {
397
- res.writeHead(500, { "Content-Type": "application/json" });
398
- res.end(JSON.stringify({
399
- error: err instanceof Error ? err.message : String(err),
400
- }));
401
- }
332
+ respond500(res, err);
402
333
  }
403
334
  })();
404
335
  return true;
@@ -414,12 +345,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
414
345
  res.end(result.body);
415
346
  }
416
347
  catch (err) {
417
- if (!res.headersSent) {
418
- res.writeHead(500, { "Content-Type": "application/json" });
419
- res.end(JSON.stringify({
420
- error: err instanceof Error ? err.message : String(err),
421
- }));
422
- }
348
+ respond500(res, err);
423
349
  }
424
350
  })();
425
351
  return true;
@@ -443,12 +369,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
443
369
  }
444
370
  }
445
371
  catch (err) {
446
- if (!res.headersSent) {
447
- res.writeHead(500, { "Content-Type": "application/json" });
448
- res.end(JSON.stringify({
449
- error: err instanceof Error ? err.message : String(err),
450
- }));
451
- }
372
+ respond500(res, err);
452
373
  }
453
374
  })();
454
375
  return true;
@@ -468,12 +389,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
468
389
  res.end(result.body);
469
390
  }
470
391
  catch (err) {
471
- if (!res.headersSent) {
472
- res.writeHead(500, { "Content-Type": "application/json" });
473
- res.end(JSON.stringify({
474
- error: err instanceof Error ? err.message : String(err),
475
- }));
476
- }
392
+ respond500(res, err);
477
393
  }
478
394
  })();
479
395
  return true;
@@ -490,12 +406,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
490
406
  res.end(result.body);
491
407
  }
492
408
  catch (err) {
493
- if (!res.headersSent) {
494
- res.writeHead(500, { "Content-Type": "application/json" });
495
- res.end(JSON.stringify({
496
- error: err instanceof Error ? err.message : String(err),
497
- }));
498
- }
409
+ respond500(res, err);
499
410
  }
500
411
  })();
501
412
  return true;
@@ -511,12 +422,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
511
422
  res.end(result.body);
512
423
  }
513
424
  catch (err) {
514
- if (!res.headersSent) {
515
- res.writeHead(500, { "Content-Type": "application/json" });
516
- res.end(JSON.stringify({
517
- error: err instanceof Error ? err.message : String(err),
518
- }));
519
- }
425
+ respond500(res, err);
520
426
  }
521
427
  })();
522
428
  return true;
@@ -540,12 +446,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
540
446
  }
541
447
  }
542
448
  catch (err) {
543
- if (!res.headersSent) {
544
- res.writeHead(500, { "Content-Type": "application/json" });
545
- res.end(JSON.stringify({
546
- error: err instanceof Error ? err.message : String(err),
547
- }));
548
- }
449
+ respond500(res, err);
549
450
  }
550
451
  })();
551
452
  return true;
@@ -565,12 +466,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
565
466
  res.end(result.body);
566
467
  }
567
468
  catch (err) {
568
- if (!res.headersSent) {
569
- res.writeHead(500, { "Content-Type": "application/json" });
570
- res.end(JSON.stringify({
571
- error: err instanceof Error ? err.message : String(err),
572
- }));
573
- }
469
+ respond500(res, err);
574
470
  }
575
471
  })();
576
472
  return true;
@@ -587,12 +483,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
587
483
  res.end(result.body);
588
484
  }
589
485
  catch (err) {
590
- if (!res.headersSent) {
591
- res.writeHead(500, { "Content-Type": "application/json" });
592
- res.end(JSON.stringify({
593
- error: err instanceof Error ? err.message : String(err),
594
- }));
595
- }
486
+ respond500(res, err);
596
487
  }
597
488
  })();
598
489
  return true;
@@ -608,12 +499,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
608
499
  res.end(result.body);
609
500
  }
610
501
  catch (err) {
611
- if (!res.headersSent) {
612
- res.writeHead(500, { "Content-Type": "application/json" });
613
- res.end(JSON.stringify({
614
- error: err instanceof Error ? err.message : String(err),
615
- }));
616
- }
502
+ respond500(res, err);
617
503
  }
618
504
  })();
619
505
  return true;
@@ -638,12 +524,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
638
524
  }
639
525
  }
640
526
  catch (err) {
641
- if (!res.headersSent) {
642
- res.writeHead(500, { "Content-Type": "application/json" });
643
- res.end(JSON.stringify({
644
- error: err instanceof Error ? err.message : String(err),
645
- }));
646
- }
527
+ respond500(res, err);
647
528
  }
648
529
  })();
649
530
  return true;
@@ -660,12 +541,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
660
541
  res.end(result.body);
661
542
  }
662
543
  catch (err) {
663
- if (!res.headersSent) {
664
- res.writeHead(500, { "Content-Type": "application/json" });
665
- res.end(JSON.stringify({
666
- error: err instanceof Error ? err.message : String(err),
667
- }));
668
- }
544
+ respond500(res, err);
669
545
  }
670
546
  })();
671
547
  return true;
@@ -681,12 +557,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
681
557
  res.end(result.body);
682
558
  }
683
559
  catch (err) {
684
- if (!res.headersSent) {
685
- res.writeHead(500, { "Content-Type": "application/json" });
686
- res.end(JSON.stringify({
687
- error: err instanceof Error ? err.message : String(err),
688
- }));
689
- }
560
+ respond500(res, err);
690
561
  }
691
562
  })();
692
563
  return true;
@@ -711,12 +582,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
711
582
  }
712
583
  }
713
584
  catch (err) {
714
- if (!res.headersSent) {
715
- res.writeHead(500, { "Content-Type": "application/json" });
716
- res.end(JSON.stringify({
717
- error: err instanceof Error ? err.message : String(err),
718
- }));
719
- }
585
+ respond500(res, err);
720
586
  }
721
587
  })();
722
588
  return true;
@@ -736,12 +602,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
736
602
  res.end(result.body);
737
603
  }
738
604
  catch (err) {
739
- if (!res.headersSent) {
740
- res.writeHead(500, { "Content-Type": "application/json" });
741
- res.end(JSON.stringify({
742
- error: err instanceof Error ? err.message : String(err),
743
- }));
744
- }
605
+ respond500(res, err);
745
606
  }
746
607
  })();
747
608
  return true;
@@ -758,12 +619,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
758
619
  res.end(result.body);
759
620
  }
760
621
  catch (err) {
761
- if (!res.headersSent) {
762
- res.writeHead(500, { "Content-Type": "application/json" });
763
- res.end(JSON.stringify({
764
- error: err instanceof Error ? err.message : String(err),
765
- }));
766
- }
622
+ respond500(res, err);
767
623
  }
768
624
  })();
769
625
  return true;
@@ -780,12 +636,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
780
636
  res.end(result.body);
781
637
  }
782
638
  catch (err) {
783
- if (!res.headersSent) {
784
- res.writeHead(500, { "Content-Type": "application/json" });
785
- res.end(JSON.stringify({
786
- error: err instanceof Error ? err.message : String(err),
787
- }));
788
- }
639
+ respond500(res, err);
789
640
  }
790
641
  })();
791
642
  return true;
@@ -810,12 +661,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
810
661
  }
811
662
  }
812
663
  catch (err) {
813
- if (!res.headersSent) {
814
- res.writeHead(500, { "Content-Type": "application/json" });
815
- res.end(JSON.stringify({
816
- error: err instanceof Error ? err.message : String(err),
817
- }));
818
- }
664
+ respond500(res, err);
819
665
  }
820
666
  })();
821
667
  return true;
@@ -835,12 +681,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
835
681
  res.end(result.body);
836
682
  }
837
683
  catch (err) {
838
- if (!res.headersSent) {
839
- res.writeHead(500, { "Content-Type": "application/json" });
840
- res.end(JSON.stringify({
841
- error: err instanceof Error ? err.message : String(err),
842
- }));
843
- }
684
+ respond500(res, err);
844
685
  }
845
686
  })();
846
687
  return true;
@@ -857,12 +698,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
857
698
  res.end(result.body);
858
699
  }
859
700
  catch (err) {
860
- if (!res.headersSent) {
861
- res.writeHead(500, { "Content-Type": "application/json" });
862
- res.end(JSON.stringify({
863
- error: err instanceof Error ? err.message : String(err),
864
- }));
865
- }
701
+ respond500(res, err);
866
702
  }
867
703
  })();
868
704
  return true;
@@ -878,12 +714,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
878
714
  res.end(result.body);
879
715
  }
880
716
  catch (err) {
881
- if (!res.headersSent) {
882
- res.writeHead(500, { "Content-Type": "application/json" });
883
- res.end(JSON.stringify({
884
- error: err instanceof Error ? err.message : String(err),
885
- }));
886
- }
717
+ respond500(res, err);
887
718
  }
888
719
  })();
889
720
  return true;
@@ -908,12 +739,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
908
739
  }
909
740
  }
910
741
  catch (err) {
911
- if (!res.headersSent) {
912
- res.writeHead(500, { "Content-Type": "application/json" });
913
- res.end(JSON.stringify({
914
- error: err instanceof Error ? err.message : String(err),
915
- }));
916
- }
742
+ respond500(res, err);
917
743
  }
918
744
  })();
919
745
  return true;
@@ -933,12 +759,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
933
759
  res.end(result.body);
934
760
  }
935
761
  catch (err) {
936
- if (!res.headersSent) {
937
- res.writeHead(500, { "Content-Type": "application/json" });
938
- res.end(JSON.stringify({
939
- error: err instanceof Error ? err.message : String(err),
940
- }));
941
- }
762
+ respond500(res, err);
942
763
  }
943
764
  })();
944
765
  return true;
@@ -955,12 +776,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
955
776
  res.end(result.body);
956
777
  }
957
778
  catch (err) {
958
- if (!res.headersSent) {
959
- res.writeHead(500, { "Content-Type": "application/json" });
960
- res.end(JSON.stringify({
961
- error: err instanceof Error ? err.message : String(err),
962
- }));
963
- }
779
+ respond500(res, err);
964
780
  }
965
781
  })();
966
782
  return true;
@@ -976,12 +792,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
976
792
  res.end(result.body);
977
793
  }
978
794
  catch (err) {
979
- if (!res.headersSent) {
980
- res.writeHead(500, { "Content-Type": "application/json" });
981
- res.end(JSON.stringify({
982
- error: err instanceof Error ? err.message : String(err),
983
- }));
984
- }
795
+ respond500(res, err);
985
796
  }
986
797
  })();
987
798
  return true;
@@ -1007,12 +818,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1007
818
  res.end(result.body);
1008
819
  }
1009
820
  catch (err) {
1010
- if (!res.headersSent) {
1011
- res.writeHead(500, { "Content-Type": "application/json" });
1012
- res.end(JSON.stringify({
1013
- error: err instanceof Error ? err.message : String(err),
1014
- }));
1015
- }
821
+ respond500(res, err);
1016
822
  }
1017
823
  })();
1018
824
  return true;
@@ -1028,12 +834,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1028
834
  res.end(result.body);
1029
835
  }
1030
836
  catch (err) {
1031
- if (!res.headersSent) {
1032
- res.writeHead(500, { "Content-Type": "application/json" });
1033
- res.end(JSON.stringify({
1034
- error: err instanceof Error ? err.message : String(err),
1035
- }));
1036
- }
837
+ respond500(res, err);
1037
838
  }
1038
839
  })();
1039
840
  return true;
@@ -1059,12 +860,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1059
860
  res.end(result.body);
1060
861
  }
1061
862
  catch (err) {
1062
- if (!res.headersSent) {
1063
- res.writeHead(500, { "Content-Type": "application/json" });
1064
- res.end(JSON.stringify({
1065
- error: err instanceof Error ? err.message : String(err),
1066
- }));
1067
- }
863
+ respond500(res, err);
1068
864
  }
1069
865
  })();
1070
866
  return true;
@@ -1081,12 +877,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1081
877
  res.end(result.body);
1082
878
  }
1083
879
  catch (err) {
1084
- if (!res.headersSent) {
1085
- res.writeHead(500, { "Content-Type": "application/json" });
1086
- res.end(JSON.stringify({
1087
- error: err instanceof Error ? err.message : String(err),
1088
- }));
1089
- }
880
+ respond500(res, err);
1090
881
  }
1091
882
  })();
1092
883
  return true;
@@ -1112,12 +903,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1112
903
  res.end(result.body);
1113
904
  }
1114
905
  catch (err) {
1115
- if (!res.headersSent) {
1116
- res.writeHead(500, { "Content-Type": "application/json" });
1117
- res.end(JSON.stringify({
1118
- error: err instanceof Error ? err.message : String(err),
1119
- }));
1120
- }
906
+ respond500(res, err);
1121
907
  }
1122
908
  })();
1123
909
  return true;
@@ -1134,12 +920,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1134
920
  res.end(result.body);
1135
921
  }
1136
922
  catch (err) {
1137
- if (!res.headersSent) {
1138
- res.writeHead(500, { "Content-Type": "application/json" });
1139
- res.end(JSON.stringify({
1140
- error: err instanceof Error ? err.message : String(err),
1141
- }));
1142
- }
923
+ respond500(res, err);
1143
924
  }
1144
925
  })();
1145
926
  return true;
@@ -1165,12 +946,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1165
946
  res.end(result.body);
1166
947
  }
1167
948
  catch (err) {
1168
- if (!res.headersSent) {
1169
- res.writeHead(500, { "Content-Type": "application/json" });
1170
- res.end(JSON.stringify({
1171
- error: err instanceof Error ? err.message : String(err),
1172
- }));
1173
- }
949
+ respond500(res, err);
1174
950
  }
1175
951
  })();
1176
952
  return true;
@@ -1187,12 +963,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1187
963
  res.end(result.body);
1188
964
  }
1189
965
  catch (err) {
1190
- if (!res.headersSent) {
1191
- res.writeHead(500, { "Content-Type": "application/json" });
1192
- res.end(JSON.stringify({
1193
- error: err instanceof Error ? err.message : String(err),
1194
- }));
1195
- }
966
+ respond500(res, err);
1196
967
  }
1197
968
  })();
1198
969
  return true;
@@ -1218,12 +989,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1218
989
  res.end(result.body);
1219
990
  }
1220
991
  catch (err) {
1221
- if (!res.headersSent) {
1222
- res.writeHead(500, { "Content-Type": "application/json" });
1223
- res.end(JSON.stringify({
1224
- error: err instanceof Error ? err.message : String(err),
1225
- }));
1226
- }
992
+ respond500(res, err);
1227
993
  }
1228
994
  })();
1229
995
  return true;
@@ -1240,12 +1006,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1240
1006
  res.end(result.body);
1241
1007
  }
1242
1008
  catch (err) {
1243
- if (!res.headersSent) {
1244
- res.writeHead(500, { "Content-Type": "application/json" });
1245
- res.end(JSON.stringify({
1246
- error: err instanceof Error ? err.message : String(err),
1247
- }));
1248
- }
1009
+ respond500(res, err);
1249
1010
  }
1250
1011
  })();
1251
1012
  return true;
@@ -1271,12 +1032,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1271
1032
  res.end(result.body);
1272
1033
  }
1273
1034
  catch (err) {
1274
- if (!res.headersSent) {
1275
- res.writeHead(500, { "Content-Type": "application/json" });
1276
- res.end(JSON.stringify({
1277
- error: err instanceof Error ? err.message : String(err),
1278
- }));
1279
- }
1035
+ respond500(res, err);
1280
1036
  }
1281
1037
  })();
1282
1038
  return true;
@@ -1293,12 +1049,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1293
1049
  res.end(result.body);
1294
1050
  }
1295
1051
  catch (err) {
1296
- if (!res.headersSent) {
1297
- res.writeHead(500, { "Content-Type": "application/json" });
1298
- res.end(JSON.stringify({
1299
- error: err instanceof Error ? err.message : String(err),
1300
- }));
1301
- }
1052
+ respond500(res, err);
1302
1053
  }
1303
1054
  })();
1304
1055
  return true;
@@ -1324,12 +1075,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1324
1075
  res.end(result.body);
1325
1076
  }
1326
1077
  catch (err) {
1327
- if (!res.headersSent) {
1328
- res.writeHead(500, { "Content-Type": "application/json" });
1329
- res.end(JSON.stringify({
1330
- error: err instanceof Error ? err.message : String(err),
1331
- }));
1332
- }
1078
+ respond500(res, err);
1333
1079
  }
1334
1080
  })();
1335
1081
  return true;
@@ -1346,12 +1092,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1346
1092
  res.end(result.body);
1347
1093
  }
1348
1094
  catch (err) {
1349
- if (!res.headersSent) {
1350
- res.writeHead(500, { "Content-Type": "application/json" });
1351
- res.end(JSON.stringify({
1352
- error: err instanceof Error ? err.message : String(err),
1353
- }));
1354
- }
1095
+ respond500(res, err);
1355
1096
  }
1356
1097
  })();
1357
1098
  return true;
@@ -1377,12 +1118,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1377
1118
  res.end(result.body);
1378
1119
  }
1379
1120
  catch (err) {
1380
- if (!res.headersSent) {
1381
- res.writeHead(500, { "Content-Type": "application/json" });
1382
- res.end(JSON.stringify({
1383
- error: err instanceof Error ? err.message : String(err),
1384
- }));
1385
- }
1121
+ respond500(res, err);
1386
1122
  }
1387
1123
  })();
1388
1124
  return true;
@@ -1398,12 +1134,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1398
1134
  res.end(result.body);
1399
1135
  }
1400
1136
  catch (err) {
1401
- if (!res.headersSent) {
1402
- res.writeHead(500, { "Content-Type": "application/json" });
1403
- res.end(JSON.stringify({
1404
- error: err instanceof Error ? err.message : String(err),
1405
- }));
1406
- }
1137
+ respond500(res, err);
1407
1138
  }
1408
1139
  })();
1409
1140
  return true;
@@ -1427,12 +1158,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1427
1158
  }
1428
1159
  }
1429
1160
  catch (err) {
1430
- if (!res.headersSent) {
1431
- res.writeHead(500, { "Content-Type": "application/json" });
1432
- res.end(JSON.stringify({
1433
- error: err instanceof Error ? err.message : String(err),
1434
- }));
1435
- }
1161
+ respond500(res, err);
1436
1162
  }
1437
1163
  })();
1438
1164
  return true;
@@ -1452,12 +1178,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1452
1178
  res.end(result.body);
1453
1179
  }
1454
1180
  catch (err) {
1455
- if (!res.headersSent) {
1456
- res.writeHead(500, { "Content-Type": "application/json" });
1457
- res.end(JSON.stringify({
1458
- error: err instanceof Error ? err.message : String(err),
1459
- }));
1460
- }
1181
+ respond500(res, err);
1461
1182
  }
1462
1183
  })();
1463
1184
  return true;
@@ -1474,12 +1195,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1474
1195
  res.end(result.body);
1475
1196
  }
1476
1197
  catch (err) {
1477
- if (!res.headersSent) {
1478
- res.writeHead(500, { "Content-Type": "application/json" });
1479
- res.end(JSON.stringify({
1480
- error: err instanceof Error ? err.message : String(err),
1481
- }));
1482
- }
1198
+ respond500(res, err);
1483
1199
  }
1484
1200
  })();
1485
1201
  return true;
@@ -1496,12 +1212,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1496
1212
  res.end(result.body);
1497
1213
  }
1498
1214
  catch (err) {
1499
- if (!res.headersSent) {
1500
- res.writeHead(500, { "Content-Type": "application/json" });
1501
- res.end(JSON.stringify({
1502
- error: err instanceof Error ? err.message : String(err),
1503
- }));
1504
- }
1215
+ respond500(res, err);
1505
1216
  }
1506
1217
  })();
1507
1218
  return true;
@@ -1525,12 +1236,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1525
1236
  }
1526
1237
  }
1527
1238
  catch (err) {
1528
- if (!res.headersSent) {
1529
- res.writeHead(500, { "Content-Type": "application/json" });
1530
- res.end(JSON.stringify({
1531
- error: err instanceof Error ? err.message : String(err),
1532
- }));
1533
- }
1239
+ respond500(res, err);
1534
1240
  }
1535
1241
  })();
1536
1242
  return true;
@@ -1550,12 +1256,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1550
1256
  res.end(result.body);
1551
1257
  }
1552
1258
  catch (err) {
1553
- if (!res.headersSent) {
1554
- res.writeHead(500, { "Content-Type": "application/json" });
1555
- res.end(JSON.stringify({
1556
- error: err instanceof Error ? err.message : String(err),
1557
- }));
1558
- }
1259
+ respond500(res, err);
1559
1260
  }
1560
1261
  })();
1561
1262
  return true;
@@ -1572,12 +1273,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1572
1273
  res.end(result.body);
1573
1274
  }
1574
1275
  catch (err) {
1575
- if (!res.headersSent) {
1576
- res.writeHead(500, { "Content-Type": "application/json" });
1577
- res.end(JSON.stringify({
1578
- error: err instanceof Error ? err.message : String(err),
1579
- }));
1580
- }
1276
+ respond500(res, err);
1581
1277
  }
1582
1278
  })();
1583
1279
  return true;
@@ -1594,12 +1290,7 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
1594
1290
  res.end(result.body);
1595
1291
  }
1596
1292
  catch (err) {
1597
- if (!res.headersSent) {
1598
- res.writeHead(500, { "Content-Type": "application/json" });
1599
- res.end(JSON.stringify({
1600
- error: err instanceof Error ? err.message : String(err),
1601
- }));
1602
- }
1293
+ respond500(res, err);
1603
1294
  }
1604
1295
  })();
1605
1296
  return true;