patchwork-os 0.2.0-beta.10 → 0.2.0-beta.10.canary.96

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 (54) hide show
  1. package/dist/bridge.js +17 -10
  2. package/dist/bridge.js.map +1 -1
  3. package/dist/commands/task.d.ts +25 -0
  4. package/dist/commands/task.js +61 -41
  5. package/dist/commands/task.js.map +1 -1
  6. package/dist/commands/tracesExport.d.ts +15 -1
  7. package/dist/commands/tracesExport.js +39 -5
  8. package/dist/commands/tracesExport.js.map +1 -1
  9. package/dist/connectorRoutes.js +556 -0
  10. package/dist/connectorRoutes.js.map +1 -1
  11. package/dist/connectors/connectorRegistry.d.ts +0 -3
  12. package/dist/connectors/connectorRegistry.js +8 -8
  13. package/dist/connectors/connectorRegistry.js.map +1 -1
  14. package/dist/connectors/jira.js +7 -2
  15. package/dist/connectors/jira.js.map +1 -1
  16. package/dist/connectors/notion.js +10 -1
  17. package/dist/connectors/notion.js.map +1 -1
  18. package/dist/drivers/local/index.d.ts +2 -17
  19. package/dist/drivers/local/index.js +5 -92
  20. package/dist/drivers/local/index.js.map +1 -1
  21. package/dist/index.js +59 -70
  22. package/dist/index.js.map +1 -1
  23. package/dist/localEndpointGuard.d.ts +25 -0
  24. package/dist/localEndpointGuard.js +101 -0
  25. package/dist/localEndpointGuard.js.map +1 -0
  26. package/dist/orchestrator/childBridgeClient.d.ts +5 -0
  27. package/dist/orchestrator/childBridgeClient.js +15 -0
  28. package/dist/orchestrator/childBridgeClient.js.map +1 -1
  29. package/dist/orchestrator/orchestratorBridge.d.ts +20 -0
  30. package/dist/orchestrator/orchestratorBridge.js +36 -0
  31. package/dist/orchestrator/orchestratorBridge.js.map +1 -1
  32. package/dist/recipes/chainedRunner.js +14 -4
  33. package/dist/recipes/chainedRunner.js.map +1 -1
  34. package/dist/recipes/compiler.js +9 -5
  35. package/dist/recipes/compiler.js.map +1 -1
  36. package/dist/recipes/dependencyGraph.d.ts +9 -0
  37. package/dist/recipes/dependencyGraph.js +19 -2
  38. package/dist/recipes/dependencyGraph.js.map +1 -1
  39. package/dist/recipes/idempotencyKey.d.ts +23 -3
  40. package/dist/recipes/idempotencyKey.js +57 -4
  41. package/dist/recipes/idempotencyKey.js.map +1 -1
  42. package/dist/recipes/installer.js +10 -1
  43. package/dist/recipes/installer.js.map +1 -1
  44. package/dist/recipes/parser.js +22 -0
  45. package/dist/recipes/parser.js.map +1 -1
  46. package/dist/recipes/schema.d.ts +29 -2
  47. package/dist/recipes/validation.js +112 -0
  48. package/dist/recipes/validation.js.map +1 -1
  49. package/dist/recipes/yamlRunner.d.ts +1 -0
  50. package/dist/recipes/yamlRunner.js +14 -1
  51. package/dist/recipes/yamlRunner.js.map +1 -1
  52. package/dist/tools/index.js +14 -10
  53. package/dist/tools/index.js.map +1 -1
  54. package/package.json +1 -1
@@ -24,7 +24,7 @@
24
24
  * Without this, every claim about "years of personal AI memory" is
25
25
  * undercut by the existing 1 MB / 10 000-line silent rotation.
26
26
  */
27
- import { createReadStream, createWriteStream, existsSync, mkdirSync, readdirSync, statSync, } from "node:fs";
27
+ import { createReadStream, createWriteStream, existsSync, mkdirSync, readdirSync, readFileSync, statSync, unlinkSync, writeFileSync, } from "node:fs";
28
28
  import os from "node:os";
29
29
  import path from "node:path";
30
30
  import { createInterface } from "node:readline";
@@ -109,11 +109,20 @@ export async function runTracesExport(opts = {}) {
109
109
  const exportedAt = new Date().toISOString();
110
110
  const patchworkDir = opts.patchworkDir ?? defaultPatchworkDir();
111
111
  const activityDir = opts.activityDir ?? defaultActivityDir();
112
- // Default output: `<patchworkDir>/traces-export-<safeIso>.jsonl.gz`. ISO
113
- // colons are filename-hostile on Windows so swap them for hyphens.
112
+ const mode = opts.mode ?? "public";
113
+ // Reject keyed mode without a passphrase up-front before we touch the
114
+ // filesystem — so the caller gets a clear, actionable error and no
115
+ // half-written intermediate file is left behind.
116
+ if (mode === "keyed" && !opts.passphrase) {
117
+ throw new Error("traces export: --mode keyed requires a --passphrase (none provided)");
118
+ }
119
+ // Default output: `<patchworkDir>/traces-export-<safeIso>.jsonl.gz` (or
120
+ // `.enc` for keyed mode). ISO colons are filename-hostile on Windows so
121
+ // swap them for hyphens.
114
122
  const safeStamp = exportedAt.replace(/:/g, "-").replace(/\..+$/, "");
123
+ const defaultExt = mode === "keyed" ? "jsonl.gz.enc" : "jsonl.gz";
115
124
  const outputPath = opts.output ??
116
- path.join(patchworkDir, `traces-export-${safeStamp}.jsonl.gz`);
125
+ path.join(patchworkDir, `traces-export-${safeStamp}.${defaultExt}`);
117
126
  // Discover sources.
118
127
  const files = [];
119
128
  for (const { source, filename } of SINGLE_FILE_SOURCES) {
@@ -161,6 +170,12 @@ export async function runTracesExport(opts = {}) {
161
170
  // Use a Readable source so pipeline() owns backpressure end-to-end —
162
171
  // writing directly to gzip outside the pipeline ignores the drain signal
163
172
  // and silently buffers everything in memory on large exports.
173
+ //
174
+ // For keyed mode we first write the plain gzip to an intermediate path,
175
+ // then read it back, AES-256-GCM-wrap it, write the `.enc` to the real
176
+ // outputPath, and unlink the intermediate. The encryption helper operates
177
+ // on a whole Buffer, so the intermediate file is the streaming boundary.
178
+ const gzipTarget = mode === "keyed" ? `${outputPath}.plain.tmp` : outputPath;
164
179
  const { Readable } = await import("node:stream");
165
180
  const source = Readable.from((function* () {
166
181
  yield `${JSON.stringify(manifest)}\n`;
@@ -173,8 +188,27 @@ export async function runTracesExport(opts = {}) {
173
188
  }
174
189
  }
175
190
  })(), { objectMode: false });
176
- const sink = createWriteStream(outputPath, { mode: 0o600 });
191
+ const sink = createWriteStream(gzipTarget, { mode: 0o600 });
177
192
  await pipeline(source, createGzip(), sink);
193
+ if (mode === "keyed") {
194
+ // opts.passphrase is guaranteed non-empty by the early guard above.
195
+ const passphrase = opts.passphrase;
196
+ const { encryptTraceBundle } = await import("../traceEncryption.js");
197
+ try {
198
+ const plain = readFileSync(gzipTarget);
199
+ const encrypted = encryptTraceBundle(plain, passphrase);
200
+ writeFileSync(outputPath, encrypted, { mode: 0o600 });
201
+ }
202
+ finally {
203
+ // Always remove the plaintext intermediate, even if encryption threw.
204
+ try {
205
+ unlinkSync(gzipTarget);
206
+ }
207
+ catch {
208
+ // Intermediate already gone or never created — nothing to clean.
209
+ }
210
+ }
211
+ }
178
212
  return {
179
213
  outputPath,
180
214
  exportedAt,
@@ -1 +1 @@
1
- {"version":3,"file":"tracesExport.js","sourceRoot":"","sources":["../../src/commands/tracesExport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracesExport.js","sourceRoot":"","sources":["../../src/commands/tracesExport.ts"],"names":[],"mappings":"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"}
@@ -2104,6 +2104,562 @@ export function tryHandleConnectorRoute(req, res, parsedUrl) {
2104
2104
  })();
2105
2105
  return true;
2106
2106
  }
2107
+ // ── Resend routes ───────────────────────────────────────────────
2108
+ if (parsedUrl.pathname === "/connections/resend/connect" &&
2109
+ req.method === "POST") {
2110
+ void dispatchConnectorConnect(req, res, async () => {
2111
+ const m = await import("./connectors/resend.js");
2112
+ return m.handleResendConnect;
2113
+ });
2114
+ return true;
2115
+ }
2116
+ if (parsedUrl.pathname === "/connections/resend/test" &&
2117
+ req.method === "POST") {
2118
+ void (async () => {
2119
+ try {
2120
+ const { handleResendTest } = await import("./connectors/resend.js");
2121
+ const result = await handleResendTest();
2122
+ res.writeHead(result.status, {
2123
+ "Content-Type": result.contentType ?? "application/json",
2124
+ });
2125
+ res.end(result.body);
2126
+ }
2127
+ catch (err) {
2128
+ respond500(res, err);
2129
+ }
2130
+ })();
2131
+ return true;
2132
+ }
2133
+ if (parsedUrl.pathname === "/connections/resend" && req.method === "DELETE") {
2134
+ void (async () => {
2135
+ try {
2136
+ const { handleResendDisconnect } = await import("./connectors/resend.js");
2137
+ const result = handleResendDisconnect();
2138
+ res.writeHead(result.status, {
2139
+ "Content-Type": result.contentType ?? "application/json",
2140
+ });
2141
+ res.end(result.body);
2142
+ }
2143
+ catch (err) {
2144
+ respond500(res, err);
2145
+ }
2146
+ })();
2147
+ return true;
2148
+ }
2149
+ // ── Obsidian routes ─────────────────────────────────────────────
2150
+ if (parsedUrl.pathname === "/connections/obsidian/connect" &&
2151
+ req.method === "POST") {
2152
+ void dispatchConnectorConnect(req, res, async () => {
2153
+ const m = await import("./connectors/obsidian.js");
2154
+ return m.handleObsidianConnect;
2155
+ });
2156
+ return true;
2157
+ }
2158
+ if (parsedUrl.pathname === "/connections/obsidian/test" &&
2159
+ req.method === "POST") {
2160
+ void (async () => {
2161
+ try {
2162
+ const { handleObsidianTest } = await import("./connectors/obsidian.js");
2163
+ const result = await handleObsidianTest();
2164
+ res.writeHead(result.status, {
2165
+ "Content-Type": result.contentType ?? "application/json",
2166
+ });
2167
+ res.end(result.body);
2168
+ }
2169
+ catch (err) {
2170
+ respond500(res, err);
2171
+ }
2172
+ })();
2173
+ return true;
2174
+ }
2175
+ if (parsedUrl.pathname === "/connections/obsidian" &&
2176
+ req.method === "DELETE") {
2177
+ void (async () => {
2178
+ try {
2179
+ const { handleObsidianDisconnect } = await import("./connectors/obsidian.js");
2180
+ const result = handleObsidianDisconnect();
2181
+ res.writeHead(result.status, {
2182
+ "Content-Type": result.contentType ?? "application/json",
2183
+ });
2184
+ res.end(result.body);
2185
+ }
2186
+ catch (err) {
2187
+ respond500(res, err);
2188
+ }
2189
+ })();
2190
+ return true;
2191
+ }
2192
+ // ── Todoist routes ──────────────────────────────────────────────
2193
+ if (parsedUrl.pathname === "/connections/todoist/connect" &&
2194
+ req.method === "POST") {
2195
+ void dispatchConnectorConnect(req, res, async () => {
2196
+ const m = await import("./connectors/todoist.js");
2197
+ return m.handleTodoistConnect;
2198
+ });
2199
+ return true;
2200
+ }
2201
+ if (parsedUrl.pathname === "/connections/todoist/test" &&
2202
+ req.method === "POST") {
2203
+ void (async () => {
2204
+ try {
2205
+ const { handleTodoistTest } = await import("./connectors/todoist.js");
2206
+ const result = await handleTodoistTest();
2207
+ res.writeHead(result.status, {
2208
+ "Content-Type": result.contentType ?? "application/json",
2209
+ });
2210
+ res.end(result.body);
2211
+ }
2212
+ catch (err) {
2213
+ respond500(res, err);
2214
+ }
2215
+ })();
2216
+ return true;
2217
+ }
2218
+ if (parsedUrl.pathname === "/connections/todoist" &&
2219
+ req.method === "DELETE") {
2220
+ void (async () => {
2221
+ try {
2222
+ const { handleTodoistDisconnect } = await import("./connectors/todoist.js");
2223
+ const result = handleTodoistDisconnect();
2224
+ res.writeHead(result.status, {
2225
+ "Content-Type": result.contentType ?? "application/json",
2226
+ });
2227
+ res.end(result.body);
2228
+ }
2229
+ catch (err) {
2230
+ respond500(res, err);
2231
+ }
2232
+ })();
2233
+ return true;
2234
+ }
2235
+ // ── Vercel routes ───────────────────────────────────────────────
2236
+ if (parsedUrl.pathname === "/connections/vercel/connect" &&
2237
+ req.method === "POST") {
2238
+ void dispatchConnectorConnect(req, res, async () => {
2239
+ const m = await import("./connectors/vercel.js");
2240
+ return m.handleVercelConnect;
2241
+ });
2242
+ return true;
2243
+ }
2244
+ if (parsedUrl.pathname === "/connections/vercel/test" &&
2245
+ req.method === "POST") {
2246
+ void (async () => {
2247
+ try {
2248
+ const { handleVercelTest } = await import("./connectors/vercel.js");
2249
+ const result = await handleVercelTest();
2250
+ res.writeHead(result.status, {
2251
+ "Content-Type": result.contentType ?? "application/json",
2252
+ });
2253
+ res.end(result.body);
2254
+ }
2255
+ catch (err) {
2256
+ respond500(res, err);
2257
+ }
2258
+ })();
2259
+ return true;
2260
+ }
2261
+ if (parsedUrl.pathname === "/connections/vercel" && req.method === "DELETE") {
2262
+ void (async () => {
2263
+ try {
2264
+ const { handleVercelDisconnect } = await import("./connectors/vercel.js");
2265
+ const result = handleVercelDisconnect();
2266
+ res.writeHead(result.status, {
2267
+ "Content-Type": result.contentType ?? "application/json",
2268
+ });
2269
+ res.end(result.body);
2270
+ }
2271
+ catch (err) {
2272
+ respond500(res, err);
2273
+ }
2274
+ })();
2275
+ return true;
2276
+ }
2277
+ // ── Paystack routes ─────────────────────────────────────────────
2278
+ if (parsedUrl.pathname === "/connections/paystack/connect" &&
2279
+ req.method === "POST") {
2280
+ void dispatchConnectorConnect(req, res, async () => {
2281
+ const m = await import("./connectors/paystack.js");
2282
+ return m.handlePaystackConnect;
2283
+ });
2284
+ return true;
2285
+ }
2286
+ if (parsedUrl.pathname === "/connections/paystack/test" &&
2287
+ req.method === "POST") {
2288
+ void (async () => {
2289
+ try {
2290
+ const { handlePaystackTest } = await import("./connectors/paystack.js");
2291
+ const result = await handlePaystackTest();
2292
+ res.writeHead(result.status, {
2293
+ "Content-Type": result.contentType ?? "application/json",
2294
+ });
2295
+ res.end(result.body);
2296
+ }
2297
+ catch (err) {
2298
+ respond500(res, err);
2299
+ }
2300
+ })();
2301
+ return true;
2302
+ }
2303
+ if (parsedUrl.pathname === "/connections/paystack" &&
2304
+ req.method === "DELETE") {
2305
+ void (async () => {
2306
+ try {
2307
+ const { handlePaystackDisconnect } = await import("./connectors/paystack.js");
2308
+ const result = handlePaystackDisconnect();
2309
+ res.writeHead(result.status, {
2310
+ "Content-Type": result.contentType ?? "application/json",
2311
+ });
2312
+ res.end(result.body);
2313
+ }
2314
+ catch (err) {
2315
+ respond500(res, err);
2316
+ }
2317
+ })();
2318
+ return true;
2319
+ }
2320
+ // ── Pipedrive routes ────────────────────────────────────────────
2321
+ if (parsedUrl.pathname === "/connections/pipedrive/connect" &&
2322
+ req.method === "POST") {
2323
+ void dispatchConnectorConnect(req, res, async () => {
2324
+ const m = await import("./connectors/pipedrive.js");
2325
+ return m.handlePipedriveConnect;
2326
+ });
2327
+ return true;
2328
+ }
2329
+ if (parsedUrl.pathname === "/connections/pipedrive/test" &&
2330
+ req.method === "POST") {
2331
+ void (async () => {
2332
+ try {
2333
+ const { handlePipedriveTest } = await import("./connectors/pipedrive.js");
2334
+ const result = await handlePipedriveTest();
2335
+ res.writeHead(result.status, {
2336
+ "Content-Type": result.contentType ?? "application/json",
2337
+ });
2338
+ res.end(result.body);
2339
+ }
2340
+ catch (err) {
2341
+ respond500(res, err);
2342
+ }
2343
+ })();
2344
+ return true;
2345
+ }
2346
+ if (parsedUrl.pathname === "/connections/pipedrive" &&
2347
+ req.method === "DELETE") {
2348
+ void (async () => {
2349
+ try {
2350
+ const { handlePipedriveDisconnect } = await import("./connectors/pipedrive.js");
2351
+ const result = handlePipedriveDisconnect();
2352
+ res.writeHead(result.status, {
2353
+ "Content-Type": result.contentType ?? "application/json",
2354
+ });
2355
+ res.end(result.body);
2356
+ }
2357
+ catch (err) {
2358
+ respond500(res, err);
2359
+ }
2360
+ })();
2361
+ return true;
2362
+ }
2363
+ // ── Cal.diy routes ──────────────────────────────────────────────
2364
+ if (parsedUrl.pathname === "/connections/caldiy/connect" &&
2365
+ req.method === "POST") {
2366
+ void dispatchConnectorConnect(req, res, async () => {
2367
+ const m = await import("./connectors/caldiy.js");
2368
+ return m.handleCalDiyConnect;
2369
+ });
2370
+ return true;
2371
+ }
2372
+ if (parsedUrl.pathname === "/connections/caldiy/test" &&
2373
+ req.method === "POST") {
2374
+ void (async () => {
2375
+ try {
2376
+ const { handleCalDiyTest } = await import("./connectors/caldiy.js");
2377
+ const result = await handleCalDiyTest();
2378
+ res.writeHead(result.status, {
2379
+ "Content-Type": result.contentType ?? "application/json",
2380
+ });
2381
+ res.end(result.body);
2382
+ }
2383
+ catch (err) {
2384
+ respond500(res, err);
2385
+ }
2386
+ })();
2387
+ return true;
2388
+ }
2389
+ if (parsedUrl.pathname === "/connections/caldiy" && req.method === "DELETE") {
2390
+ void (async () => {
2391
+ try {
2392
+ const { handleCalDiyDisconnect } = await import("./connectors/caldiy.js");
2393
+ const result = handleCalDiyDisconnect();
2394
+ res.writeHead(result.status, {
2395
+ "Content-Type": result.contentType ?? "application/json",
2396
+ });
2397
+ res.end(result.body);
2398
+ }
2399
+ catch (err) {
2400
+ respond500(res, err);
2401
+ }
2402
+ })();
2403
+ return true;
2404
+ }
2405
+ // ── Grafana routes ──────────────────────────────────────────────
2406
+ if (parsedUrl.pathname === "/connections/grafana/connect" &&
2407
+ req.method === "POST") {
2408
+ void dispatchConnectorConnect(req, res, async () => {
2409
+ const m = await import("./connectors/grafana.js");
2410
+ return m.handleGrafanaConnect;
2411
+ });
2412
+ return true;
2413
+ }
2414
+ if (parsedUrl.pathname === "/connections/grafana/test" &&
2415
+ req.method === "POST") {
2416
+ void (async () => {
2417
+ try {
2418
+ const { handleGrafanaTest } = await import("./connectors/grafana.js");
2419
+ const result = await handleGrafanaTest();
2420
+ res.writeHead(result.status, {
2421
+ "Content-Type": result.contentType ?? "application/json",
2422
+ });
2423
+ res.end(result.body);
2424
+ }
2425
+ catch (err) {
2426
+ respond500(res, err);
2427
+ }
2428
+ })();
2429
+ return true;
2430
+ }
2431
+ if (parsedUrl.pathname === "/connections/grafana" &&
2432
+ req.method === "DELETE") {
2433
+ void (async () => {
2434
+ try {
2435
+ const { handleGrafanaDisconnect } = await import("./connectors/grafana.js");
2436
+ const result = handleGrafanaDisconnect();
2437
+ res.writeHead(result.status, {
2438
+ "Content-Type": result.contentType ?? "application/json",
2439
+ });
2440
+ res.end(result.body);
2441
+ }
2442
+ catch (err) {
2443
+ respond500(res, err);
2444
+ }
2445
+ })();
2446
+ return true;
2447
+ }
2448
+ // ── PostHog routes ──────────────────────────────────────────────
2449
+ if (parsedUrl.pathname === "/connections/posthog/connect" &&
2450
+ req.method === "POST") {
2451
+ void dispatchConnectorConnect(req, res, async () => {
2452
+ const m = await import("./connectors/posthog.js");
2453
+ return m.handlePostHogConnect;
2454
+ });
2455
+ return true;
2456
+ }
2457
+ if (parsedUrl.pathname === "/connections/posthog/test" &&
2458
+ req.method === "POST") {
2459
+ void (async () => {
2460
+ try {
2461
+ const { handlePostHogTest } = await import("./connectors/posthog.js");
2462
+ const result = await handlePostHogTest();
2463
+ res.writeHead(result.status, {
2464
+ "Content-Type": result.contentType ?? "application/json",
2465
+ });
2466
+ res.end(result.body);
2467
+ }
2468
+ catch (err) {
2469
+ respond500(res, err);
2470
+ }
2471
+ })();
2472
+ return true;
2473
+ }
2474
+ if (parsedUrl.pathname === "/connections/posthog" &&
2475
+ req.method === "DELETE") {
2476
+ void (async () => {
2477
+ try {
2478
+ const { handlePostHogDisconnect } = await import("./connectors/posthog.js");
2479
+ const result = handlePostHogDisconnect();
2480
+ res.writeHead(result.status, {
2481
+ "Content-Type": result.contentType ?? "application/json",
2482
+ });
2483
+ res.end(result.body);
2484
+ }
2485
+ catch (err) {
2486
+ respond500(res, err);
2487
+ }
2488
+ })();
2489
+ return true;
2490
+ }
2491
+ // ── Cloudflare routes ───────────────────────────────────────────
2492
+ if (parsedUrl.pathname === "/connections/cloudflare/connect" &&
2493
+ req.method === "POST") {
2494
+ void dispatchConnectorConnect(req, res, async () => {
2495
+ const m = await import("./connectors/cloudflare.js");
2496
+ return m.handleCloudflareConnect;
2497
+ });
2498
+ return true;
2499
+ }
2500
+ if (parsedUrl.pathname === "/connections/cloudflare/test" &&
2501
+ req.method === "POST") {
2502
+ void (async () => {
2503
+ try {
2504
+ const { handleCloudflareTest } = await import("./connectors/cloudflare.js");
2505
+ const result = await handleCloudflareTest();
2506
+ res.writeHead(result.status, {
2507
+ "Content-Type": result.contentType ?? "application/json",
2508
+ });
2509
+ res.end(result.body);
2510
+ }
2511
+ catch (err) {
2512
+ respond500(res, err);
2513
+ }
2514
+ })();
2515
+ return true;
2516
+ }
2517
+ if (parsedUrl.pathname === "/connections/cloudflare" &&
2518
+ req.method === "DELETE") {
2519
+ void (async () => {
2520
+ try {
2521
+ const { handleCloudflareDisconnect } = await import("./connectors/cloudflare.js");
2522
+ const result = handleCloudflareDisconnect();
2523
+ res.writeHead(result.status, {
2524
+ "Content-Type": result.contentType ?? "application/json",
2525
+ });
2526
+ res.end(result.body);
2527
+ }
2528
+ catch (err) {
2529
+ respond500(res, err);
2530
+ }
2531
+ })();
2532
+ return true;
2533
+ }
2534
+ // ── CircleCI routes ─────────────────────────────────────────────
2535
+ if (parsedUrl.pathname === "/connections/circleci/connect" &&
2536
+ req.method === "POST") {
2537
+ void dispatchConnectorConnect(req, res, async () => {
2538
+ const m = await import("./connectors/circleci.js");
2539
+ return m.handleCircleCIConnect;
2540
+ });
2541
+ return true;
2542
+ }
2543
+ if (parsedUrl.pathname === "/connections/circleci/test" &&
2544
+ req.method === "POST") {
2545
+ void (async () => {
2546
+ try {
2547
+ const { handleCircleCITest } = await import("./connectors/circleci.js");
2548
+ const result = await handleCircleCITest();
2549
+ res.writeHead(result.status, {
2550
+ "Content-Type": result.contentType ?? "application/json",
2551
+ });
2552
+ res.end(result.body);
2553
+ }
2554
+ catch (err) {
2555
+ respond500(res, err);
2556
+ }
2557
+ })();
2558
+ return true;
2559
+ }
2560
+ if (parsedUrl.pathname === "/connections/circleci" &&
2561
+ req.method === "DELETE") {
2562
+ void (async () => {
2563
+ try {
2564
+ const { handleCircleCIDisconnect } = await import("./connectors/circleci.js");
2565
+ const result = handleCircleCIDisconnect();
2566
+ res.writeHead(result.status, {
2567
+ "Content-Type": result.contentType ?? "application/json",
2568
+ });
2569
+ res.end(result.body);
2570
+ }
2571
+ catch (err) {
2572
+ respond500(res, err);
2573
+ }
2574
+ })();
2575
+ return true;
2576
+ }
2577
+ // ── WooCommerce routes ──────────────────────────────────────────
2578
+ if (parsedUrl.pathname === "/connections/woocommerce/connect" &&
2579
+ req.method === "POST") {
2580
+ void dispatchConnectorConnect(req, res, async () => {
2581
+ const m = await import("./connectors/woocommerce.js");
2582
+ return m.handleWooCommerceConnect;
2583
+ });
2584
+ return true;
2585
+ }
2586
+ if (parsedUrl.pathname === "/connections/woocommerce/test" &&
2587
+ req.method === "POST") {
2588
+ void (async () => {
2589
+ try {
2590
+ const { handleWooCommerceTest } = await import("./connectors/woocommerce.js");
2591
+ const result = await handleWooCommerceTest();
2592
+ res.writeHead(result.status, {
2593
+ "Content-Type": result.contentType ?? "application/json",
2594
+ });
2595
+ res.end(result.body);
2596
+ }
2597
+ catch (err) {
2598
+ respond500(res, err);
2599
+ }
2600
+ })();
2601
+ return true;
2602
+ }
2603
+ if (parsedUrl.pathname === "/connections/woocommerce" &&
2604
+ req.method === "DELETE") {
2605
+ void (async () => {
2606
+ try {
2607
+ const { handleWooCommerceDisconnect } = await import("./connectors/woocommerce.js");
2608
+ const result = handleWooCommerceDisconnect();
2609
+ res.writeHead(result.status, {
2610
+ "Content-Type": result.contentType ?? "application/json",
2611
+ });
2612
+ res.end(result.body);
2613
+ }
2614
+ catch (err) {
2615
+ respond500(res, err);
2616
+ }
2617
+ })();
2618
+ return true;
2619
+ }
2620
+ // ── Supabase routes ─────────────────────────────────────────────
2621
+ if (parsedUrl.pathname === "/connections/supabase/connect" &&
2622
+ req.method === "POST") {
2623
+ void dispatchConnectorConnect(req, res, async () => {
2624
+ const m = await import("./connectors/supabase.js");
2625
+ return m.handleSupabaseConnect;
2626
+ });
2627
+ return true;
2628
+ }
2629
+ if (parsedUrl.pathname === "/connections/supabase/test" &&
2630
+ req.method === "POST") {
2631
+ void (async () => {
2632
+ try {
2633
+ const { handleSupabaseTest } = await import("./connectors/supabase.js");
2634
+ const result = await handleSupabaseTest();
2635
+ res.writeHead(result.status, {
2636
+ "Content-Type": result.contentType ?? "application/json",
2637
+ });
2638
+ res.end(result.body);
2639
+ }
2640
+ catch (err) {
2641
+ respond500(res, err);
2642
+ }
2643
+ })();
2644
+ return true;
2645
+ }
2646
+ if (parsedUrl.pathname === "/connections/supabase" &&
2647
+ req.method === "DELETE") {
2648
+ void (async () => {
2649
+ try {
2650
+ const { handleSupabaseDisconnect } = await import("./connectors/supabase.js");
2651
+ const result = handleSupabaseDisconnect();
2652
+ res.writeHead(result.status, {
2653
+ "Content-Type": result.contentType ?? "application/json",
2654
+ });
2655
+ res.end(result.body);
2656
+ }
2657
+ catch (err) {
2658
+ respond500(res, err);
2659
+ }
2660
+ })();
2661
+ return true;
2662
+ }
2107
2663
  return false;
2108
2664
  }
2109
2665
  //# sourceMappingURL=connectorRoutes.js.map