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
@@ -1,10 +1,83 @@
1
1
  // ── VsCodeBackend ─────────────────────────────────────────────────────────────
2
+ /**
3
+ * SSRF guard for automation webhooks.
4
+ *
5
+ * Default policy (`allowPrivate=false`):
6
+ * - Loopback (127.0.0.0/8, ::1, localhost, *.localhost) → ALLOWED.
7
+ * Automation hooks fire INTO the same machine on the common path;
8
+ * the bridge itself listens on 127.0.0.1, and recipe-6 webhooks
9
+ * target `http://127.0.0.1:${BRIDGE_PORT}/...`.
10
+ * - Other RFC 1918 / link-local / ULA / CGNAT / 0.0.0.0/8 → BLOCKED.
11
+ * - Public hosts → ALLOWED.
12
+ *
13
+ * Opt-in (`allowPrivate=true`) drops the private-range check entirely.
14
+ *
15
+ * This is a deliberate divergence from `sendHttpRequest` which blocks ALL
16
+ * private addresses by default (loopback included). The reasoning: a
17
+ * MCP-tool-driven HTTP request is potentially attacker-controlled (a
18
+ * compromised LLM session could craft URLs); an automation webhook URL
19
+ * comes from a trusted policy file that the operator wrote. Loopback is
20
+ * the common case there, not the exceptional one.
21
+ */
22
+ function isLoopbackHost(hostname) {
23
+ const host = hostname.startsWith("[") && hostname.endsWith("]")
24
+ ? hostname.slice(1, -1).toLowerCase()
25
+ : hostname.toLowerCase();
26
+ if (host === "localhost" || host.endsWith(".localhost"))
27
+ return true;
28
+ if (host === "::1")
29
+ return true;
30
+ const ipv4 = host.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
31
+ if (ipv4 && Number(ipv4[1]) === 127)
32
+ return true;
33
+ return false;
34
+ }
35
+ function isPrivateNonLoopbackHost(hostname) {
36
+ if (isLoopbackHost(hostname))
37
+ return false;
38
+ const host = hostname.startsWith("[") && hostname.endsWith("]")
39
+ ? hostname.slice(1, -1).toLowerCase()
40
+ : hostname.toLowerCase();
41
+ if (host === "0.0.0.0")
42
+ return true;
43
+ if (/^0x[0-9a-f]+$/i.test(host) || /^0[0-7]{7,}$/.test(host))
44
+ return true;
45
+ const ipv4 = host.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
46
+ if (ipv4) {
47
+ const a = Number(ipv4[1]);
48
+ const b = Number(ipv4[2]);
49
+ if (a === 10)
50
+ return true;
51
+ if (a === 172 && b >= 16 && b <= 31)
52
+ return true;
53
+ if (a === 192 && b === 168)
54
+ return true;
55
+ if (a === 169 && b === 254)
56
+ return true;
57
+ if (a === 100 && b >= 64 && b <= 127)
58
+ return true;
59
+ if (a === 0)
60
+ return true;
61
+ }
62
+ if (host.startsWith("fe80:"))
63
+ return true;
64
+ if (host.startsWith("fc") || host.startsWith("fd"))
65
+ return true;
66
+ if (host.startsWith("::ffff:"))
67
+ return isPrivateNonLoopbackHost(host.slice(7));
68
+ if (host.startsWith("::ffff:0:"))
69
+ return isPrivateNonLoopbackHost(host.slice(9));
70
+ return false;
71
+ }
72
+ const WEBHOOK_TIMEOUT_MS = 10_000;
2
73
  export class VsCodeBackend {
3
74
  orchestrator;
4
75
  logger;
5
- constructor(orchestrator, logger) {
76
+ allowPrivateWebhooks;
77
+ constructor(orchestrator, logger, allowPrivateWebhooks = false) {
6
78
  this.orchestrator = orchestrator;
7
79
  this.logger = logger;
80
+ this.allowPrivateWebhooks = allowPrivateWebhooks;
8
81
  }
9
82
  async enqueueTask(opts) {
10
83
  const taskId = this.orchestrator.enqueue({
@@ -28,13 +101,73 @@ export class VsCodeBackend {
28
101
  notify(msg) {
29
102
  this.logger?.info(msg);
30
103
  }
104
+ async postWebhook(opts) {
105
+ let parsed;
106
+ try {
107
+ parsed = new URL(opts.url);
108
+ }
109
+ catch (e) {
110
+ const error = `invalid url: ${e instanceof Error ? e.message : String(e)}`;
111
+ this.logger?.info(`[automation-webhook] ${opts.hookKey} blocked: ${error}`);
112
+ return { ok: false, error };
113
+ }
114
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
115
+ const error = `unsupported protocol "${parsed.protocol}"`;
116
+ this.logger?.info(`[automation-webhook] ${opts.hookKey} blocked: ${error}`);
117
+ return { ok: false, error };
118
+ }
119
+ if (!this.allowPrivateWebhooks &&
120
+ isPrivateNonLoopbackHost(parsed.hostname)) {
121
+ const error = `private/non-loopback host "${parsed.hostname}" blocked (use --automation-allow-private-webhooks to enable)`;
122
+ this.logger?.info(`[automation-webhook] ${opts.hookKey} blocked: ${error}`);
123
+ return { ok: false, error };
124
+ }
125
+ const headers = { ...opts.headers };
126
+ const hasContentType = Object.keys(headers).some((k) => k.toLowerCase() === "content-type");
127
+ if (!hasContentType)
128
+ headers["Content-Type"] = "application/json";
129
+ const controller = new AbortController();
130
+ const timer = setTimeout(() => controller.abort(), WEBHOOK_TIMEOUT_MS);
131
+ try {
132
+ const res = await fetch(opts.url, {
133
+ method: opts.method,
134
+ headers,
135
+ body: JSON.stringify(opts.body),
136
+ signal: controller.signal,
137
+ });
138
+ clearTimeout(timer);
139
+ if (!res.ok) {
140
+ const error = `non-2xx response: ${res.status}`;
141
+ this.logger?.info(`[automation-webhook] ${opts.hookKey} ${opts.method} ${opts.url} → ${res.status}`);
142
+ return { ok: false, status: res.status, error };
143
+ }
144
+ this.logger?.info(`[automation-webhook] ${opts.hookKey} ${opts.method} ${opts.url} → ${res.status}`);
145
+ return { ok: true, status: res.status };
146
+ }
147
+ catch (e) {
148
+ clearTimeout(timer);
149
+ const error = e instanceof Error
150
+ ? e.name === "AbortError"
151
+ ? `timeout after ${WEBHOOK_TIMEOUT_MS}ms`
152
+ : e.message
153
+ : String(e);
154
+ this.logger?.info(`[automation-webhook] ${opts.hookKey} ${opts.method} ${opts.url} failed: ${error}`);
155
+ return { ok: false, error };
156
+ }
157
+ }
31
158
  }
32
159
  export class TestBackend {
33
160
  collector = {
34
161
  enqueuedTasks: [],
35
162
  scheduledRetries: [],
36
163
  notifications: [],
164
+ webhookCalls: [],
37
165
  };
166
+ /**
167
+ * Optional override for the webhook result a test wants to simulate.
168
+ * When unset, postWebhook returns `{ ok: true, status: 200 }`.
169
+ */
170
+ webhookResponse = { ok: true, status: 200 };
38
171
  async enqueueTask(opts) {
39
172
  this.collector.enqueuedTasks.push(opts);
40
173
  return `task-${this.collector.enqueuedTasks.length}`;
@@ -47,10 +180,16 @@ export class TestBackend {
47
180
  notify(msg) {
48
181
  this.collector.notifications.push(msg);
49
182
  }
183
+ async postWebhook(opts) {
184
+ this.collector.webhookCalls.push(opts);
185
+ return this.webhookResponse;
186
+ }
50
187
  reset() {
51
188
  this.collector.enqueuedTasks = [];
52
189
  this.collector.scheduledRetries = [];
53
190
  this.collector.notifications = [];
191
+ this.collector.webhookCalls = [];
192
+ this.webhookResponse = { ok: true, status: 200 };
54
193
  }
55
194
  }
56
195
  //# sourceMappingURL=interpreterContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interpreterContext.js","sourceRoot":"","sources":["../../src/fp/interpreterContext.ts"],"names":[],"mappings":"AAiDA,iFAAiF;AAEjF,MAAM,OAAO,aAAa;IAEL;IACA;IAFnB,YACmB,YAAgC,EAChC,MAAwC;QADxC,iBAAY,GAAZ,YAAY,CAAoB;QAChC,WAAM,GAAN,MAAM,CAAkC;IACxD,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,IAAwB;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;YACvC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,aAAa,CAAC,GAAW,EAAE,OAAe,EAAE,EAAc;QACxD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE;YAC7B,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;YAClD,EAAE,EAAE,CAAC;QACP,CAAC,EAAE,OAAO,CAAC,CAAC;QACZ,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;CACF;AAUD,MAAM,OAAO,WAAW;IACb,SAAS,GAAyB;QACzC,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,EAAE;QACpB,aAAa,EAAE,EAAE;KAClB,CAAC;IAEF,KAAK,CAAC,WAAW,CAAC,IAAwB;QACxC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,QAAQ,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;IACvD,CAAC;IAED,aAAa,CAAC,GAAW,EAAE,OAAe,EAAE,GAAe;QACzD,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,+CAA+C;QAC/C,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,EAAE,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,EAAE,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,EAAE,CAAC;IACpC,CAAC;CACF"}
1
+ {"version":3,"file":"interpreterContext.js","sourceRoot":"","sources":["../../src/fp/interpreterContext.ts"],"names":[],"mappings":"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"}
@@ -59,7 +59,13 @@ function buildPromptSource(src) {
59
59
  promptArgs: src.promptArgs,
60
60
  });
61
61
  }
62
- return err("invalid_arg", "Hook must specify either `prompt` or `promptName`");
62
+ // Webhook-only hook (e.g. recipe-6 compaction triggers): no inline prompt,
63
+ // no named prompt, just a webhook fan-out. Caller is responsible for
64
+ // ensuring `webhook` is configured — `validatePromptSource` enforces this.
65
+ if (src.webhook !== undefined) {
66
+ return ok({ kind: "none" });
67
+ }
68
+ return err("invalid_arg", "Hook must specify either `prompt`, `promptName`, or `webhook`");
63
69
  }
64
70
  // ── WhenCondition mapping ─────────────────────────────────────────────────────
65
71
  function buildWhen(src) {
@@ -78,10 +84,31 @@ function buildWhen(src) {
78
84
  : undefined;
79
85
  }
80
86
  // ── Hook builder ──────────────────────────────────────────────────────────────
87
+ /**
88
+ * Hook types that opt into webhook fan-out as of v1. Other types parse the
89
+ * `webhook` field successfully (per validatePromptSource) but the parser
90
+ * silently drops it — keeps the schema forward-compatible without enabling
91
+ * fan-out where it hasn't been thought through yet.
92
+ */
93
+ const WEBHOOK_ENABLED_HOOK_TYPES = new Set([
94
+ "onPreCompact",
95
+ "onPostCompact",
96
+ ]);
81
97
  function buildHook(hookType, src, enabled, cooldownMs, condition, patterns, extras, model, effort, systemPrompt) {
82
98
  const promptSourceResult = buildPromptSource(src);
83
99
  if (!promptSourceResult.ok)
84
100
  return promptSourceResult;
101
+ // Wire `webhook` into the HookNode only for opted-in hook types. This keeps
102
+ // the v1 surface area focused on `onCompaction` (recipe-6 unblock) while
103
+ // letting the schema parse the field everywhere — adding a new hook type
104
+ // later is a one-line change to WEBHOOK_ENABLED_HOOK_TYPES.
105
+ const webhook = src.webhook && WEBHOOK_ENABLED_HOOK_TYPES.has(hookType)
106
+ ? {
107
+ url: src.webhook.url,
108
+ method: src.webhook.method,
109
+ headers: src.webhook.headers,
110
+ }
111
+ : undefined;
85
112
  const hookNode = hook({
86
113
  hookType,
87
114
  enabled,
@@ -93,6 +120,7 @@ function buildHook(hookType, src, enabled, cooldownMs, condition, patterns, extr
93
120
  effort,
94
121
  systemPrompt,
95
122
  extras,
123
+ webhook,
96
124
  });
97
125
  const key = cooldownKey(hookType, condition);
98
126
  // When dedupeByContent is active, the content-based dedup provides its own
@@ -1 +1 @@
1
- {"version":3,"file":"policyParser.js","sourceRoot":"","sources":["../../src/fp/policyParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policyParser.js","sourceRoot":"","sources":["../../src/fp/policyParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Centralized HTTP error responder for the bridge's plain-`http` route
3
+ * handlers.
4
+ *
5
+ * Replaces the ~96 inline `res.end(JSON.stringify({error: err.message}))`
6
+ * blocks scattered across `server.ts`, `connectorRoutes.ts`,
7
+ * `recipeRoutes.ts`, `inboxRoutes.ts`, and `oauthRoutes.ts` — every one of
8
+ * which leaked the underlying error message (and sometimes a stack frame
9
+ * via `Error.toString`) to the network. CodeQL flagged each as
10
+ * `js/stack-trace-exposure` (89 open alerts at the time of writing).
11
+ *
12
+ * Contract:
13
+ * - Always returns a generic `{error: "Internal server error"}` body, never
14
+ * the underlying error.message — even for non-Error throws.
15
+ * - Logs the full detail (stack preferred, message fallback, String(err)
16
+ * last) to stderr with an optional context label so post-incident
17
+ * debugging is unaffected.
18
+ * - Idempotent on `headersSent` / `writableEnded` so callers nested inside
19
+ * other try/catch blocks can safely call this without re-throwing.
20
+ *
21
+ * Note: the dashboard's Next.js route handlers (`dashboard/src/app/api/**`)
22
+ * are a separate runtime — they use `NextResponse.json(...)` and have their
23
+ * own (smaller) leak surface; this helper is bridge-side only.
24
+ */
25
+ import type { ServerResponse } from "node:http";
26
+ /**
27
+ * Write a generic 500 response and log the underlying error detail
28
+ * server-side.
29
+ *
30
+ * @param res The Node http response to write to.
31
+ * @param err The thrown value caught by the route handler.
32
+ * @param context Optional short tag identifying the route ("recipes/lint",
33
+ * "connectors/jira/connect", etc.). Surfaces in the server
34
+ * log only — never sent to the client.
35
+ */
36
+ export declare function respond500(res: ServerResponse, err: unknown, context?: string): void;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Centralized HTTP error responder for the bridge's plain-`http` route
3
+ * handlers.
4
+ *
5
+ * Replaces the ~96 inline `res.end(JSON.stringify({error: err.message}))`
6
+ * blocks scattered across `server.ts`, `connectorRoutes.ts`,
7
+ * `recipeRoutes.ts`, `inboxRoutes.ts`, and `oauthRoutes.ts` — every one of
8
+ * which leaked the underlying error message (and sometimes a stack frame
9
+ * via `Error.toString`) to the network. CodeQL flagged each as
10
+ * `js/stack-trace-exposure` (89 open alerts at the time of writing).
11
+ *
12
+ * Contract:
13
+ * - Always returns a generic `{error: "Internal server error"}` body, never
14
+ * the underlying error.message — even for non-Error throws.
15
+ * - Logs the full detail (stack preferred, message fallback, String(err)
16
+ * last) to stderr with an optional context label so post-incident
17
+ * debugging is unaffected.
18
+ * - Idempotent on `headersSent` / `writableEnded` so callers nested inside
19
+ * other try/catch blocks can safely call this without re-throwing.
20
+ *
21
+ * Note: the dashboard's Next.js route handlers (`dashboard/src/app/api/**`)
22
+ * are a separate runtime — they use `NextResponse.json(...)` and have their
23
+ * own (smaller) leak surface; this helper is bridge-side only.
24
+ */
25
+ const GENERIC_BODY = JSON.stringify({ error: "Internal server error" });
26
+ /**
27
+ * Write a generic 500 response and log the underlying error detail
28
+ * server-side.
29
+ *
30
+ * @param res The Node http response to write to.
31
+ * @param err The thrown value caught by the route handler.
32
+ * @param context Optional short tag identifying the route ("recipes/lint",
33
+ * "connectors/jira/connect", etc.). Surfaces in the server
34
+ * log only — never sent to the client.
35
+ */
36
+ export function respond500(res, err, context) {
37
+ const detail = err instanceof Error ? (err.stack ?? err.message) : String(err);
38
+ console.error(`[http-500]${context ? ` ${context}` : ""}: ${detail}`);
39
+ if (!res.headersSent) {
40
+ res.writeHead(500, { "Content-Type": "application/json" });
41
+ }
42
+ if (!res.writableEnded) {
43
+ res.end(GENERIC_BODY);
44
+ }
45
+ }
46
+ //# sourceMappingURL=httpErrorResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpErrorResponse.js","sourceRoot":"","sources":["../src/httpErrorResponse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;AAExE;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CACxB,GAAmB,EACnB,GAAY,EACZ,OAAgB;IAEhB,MAAM,MAAM,GACV,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClE,OAAO,CAAC,KAAK,CAAC,aAAa,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC,CAAC;IACtE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACrB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACvB,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACxB,CAAC;AACH,CAAC"}
@@ -16,6 +16,24 @@
16
16
  import { existsSync } from "node:fs";
17
17
  import os from "node:os";
18
18
  import path from "node:path";
19
+ import { respond500 } from "./httpErrorResponse.js";
20
+ /**
21
+ * Filename guard shared by every inbox sub-route. Rejects directory
22
+ * separators and `..` segments so the request can never escape the inbox
23
+ * directory. Returns the joined absolute path on success, or null with the
24
+ * caller responsible for emitting a 400.
25
+ */
26
+ function safeInboxPath(filename) {
27
+ if (!filename)
28
+ return null;
29
+ if (filename.includes("/") || filename.includes("\\"))
30
+ return null;
31
+ if (filename === "." || filename === "..")
32
+ return null;
33
+ if (filename.startsWith("."))
34
+ return null; // no dotfiles, reserves `.archive/` namespace
35
+ return path.join(os.homedir(), ".patchwork", "inbox", filename);
36
+ }
19
37
  /**
20
38
  * Try to handle an `/inbox` or `/inbox/<filename>.md` route. Returns true
21
39
  * if the route was dispatched (caller should `return` from the request
@@ -61,10 +79,7 @@ export function tryHandleInboxRoute(req, res, parsedUrl) {
61
79
  res.end(JSON.stringify({ items }));
62
80
  }
63
81
  catch (err) {
64
- res.writeHead(500, { "Content-Type": "application/json" });
65
- res.end(JSON.stringify({
66
- error: err instanceof Error ? err.message : String(err),
67
- }));
82
+ respond500(res, err);
68
83
  }
69
84
  })();
70
85
  return true;
@@ -75,13 +90,12 @@ export function tryHandleInboxRoute(req, res, parsedUrl) {
75
90
  try {
76
91
  const { readFile, stat } = await import("node:fs/promises");
77
92
  const filename = decodeURIComponent(inboxFileMatch[1] ?? "");
78
- // Prevent path traversal — filename must not contain directory separators
79
- if (filename.includes("/") || filename.includes("\\")) {
93
+ const filePath = safeInboxPath(filename);
94
+ if (!filePath) {
80
95
  res.writeHead(400, { "Content-Type": "application/json" });
81
96
  res.end(JSON.stringify({ error: "Invalid filename" }));
82
97
  return;
83
98
  }
84
- const filePath = path.join(os.homedir(), ".patchwork", "inbox", filename);
85
99
  const [content, stats] = await Promise.all([
86
100
  readFile(filePath, "utf8"),
87
101
  stat(filePath),
@@ -100,10 +114,75 @@ export function tryHandleInboxRoute(req, res, parsedUrl) {
100
114
  res.end(JSON.stringify({ error: "Not found" }));
101
115
  }
102
116
  else {
103
- res.writeHead(500, { "Content-Type": "application/json" });
104
- res.end(JSON.stringify({
105
- error: err instanceof Error ? err.message : String(err),
106
- }));
117
+ respond500(res, err);
118
+ }
119
+ }
120
+ })();
121
+ return true;
122
+ }
123
+ if (inboxFileMatch && req.method === "DELETE") {
124
+ void (async () => {
125
+ try {
126
+ const { unlink } = await import("node:fs/promises");
127
+ const filename = decodeURIComponent(inboxFileMatch[1] ?? "");
128
+ const filePath = safeInboxPath(filename);
129
+ if (!filePath) {
130
+ res.writeHead(400, { "Content-Type": "application/json" });
131
+ res.end(JSON.stringify({ ok: false, error: "Invalid filename" }));
132
+ return;
133
+ }
134
+ await unlink(filePath);
135
+ res.writeHead(200, { "Content-Type": "application/json" });
136
+ res.end(JSON.stringify({ ok: true, path: filePath }));
137
+ }
138
+ catch (err) {
139
+ const code = err.code;
140
+ if (code === "ENOENT") {
141
+ res.writeHead(404, { "Content-Type": "application/json" });
142
+ res.end(JSON.stringify({ ok: false, error: "Not found" }));
143
+ }
144
+ else {
145
+ respond500(res, err);
146
+ }
147
+ }
148
+ })();
149
+ return true;
150
+ }
151
+ // POST /inbox/<filename>.md/archive — move to ~/.patchwork/inbox/.archive/
152
+ const inboxArchiveMatch = parsedUrl.pathname?.match(/^\/inbox\/([^/]+\.md)\/archive$/);
153
+ if (inboxArchiveMatch && req.method === "POST") {
154
+ void (async () => {
155
+ try {
156
+ const { mkdir, rename } = await import("node:fs/promises");
157
+ const filename = decodeURIComponent(inboxArchiveMatch[1] ?? "");
158
+ const filePath = safeInboxPath(filename);
159
+ if (!filePath) {
160
+ res.writeHead(400, { "Content-Type": "application/json" });
161
+ res.end(JSON.stringify({ ok: false, error: "Invalid filename" }));
162
+ return;
163
+ }
164
+ const archiveDir = path.join(os.homedir(), ".patchwork", "inbox", ".archive");
165
+ await mkdir(archiveDir, { recursive: true });
166
+ let dest = path.join(archiveDir, filename);
167
+ // Suffix with timestamp on collision so historical archives survive.
168
+ if (existsSync(dest)) {
169
+ const ext = path.extname(filename);
170
+ const stem = filename.slice(0, filename.length - ext.length);
171
+ const stamp = new Date().toISOString().replace(/[:.]/g, "-");
172
+ dest = path.join(archiveDir, `${stem}.${stamp}${ext}`);
173
+ }
174
+ await rename(filePath, dest);
175
+ res.writeHead(200, { "Content-Type": "application/json" });
176
+ res.end(JSON.stringify({ ok: true, path: dest }));
177
+ }
178
+ catch (err) {
179
+ const code = err.code;
180
+ if (code === "ENOENT") {
181
+ res.writeHead(404, { "Content-Type": "application/json" });
182
+ res.end(JSON.stringify({ ok: false, error: "Not found" }));
183
+ }
184
+ else {
185
+ respond500(res, err);
107
186
  }
108
187
  }
109
188
  })();
@@ -1 +1 @@
1
- {"version":3,"file":"inboxRoutes.js","sourceRoot":"","sources":["../src/inboxRoutes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inboxRoutes.js","sourceRoot":"","sources":["../src/inboxRoutes.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- export { BRIDGE_BLOCK_END, BRIDGE_BLOCK_RE, bridgeBlockStartMarker, extractClaudeMdBlockVersion, patchClaudeMdImport, } from "./claudeMdPatch.js";
2
+ export { BRIDGE_BLOCK_END, bridgeBlockStartMarker, extractClaudeMdBlockVersion, patchClaudeMdImport, replaceAllBridgeBlocks, } from "./claudeMdPatch.js";
package/dist/index.js CHANGED
@@ -63,7 +63,7 @@ const OPEN_VSX_NAME = "claude-ide-bridge-extension";
63
63
  // CLAUDE.md versioned-block patching moved to ./claudeMdPatch.ts so tests
64
64
  // can import the helpers without triggering the top-level CLI side effects
65
65
  // at the bottom of this file. Re-exported here for back-compat.
66
- export { BRIDGE_BLOCK_END, BRIDGE_BLOCK_RE, bridgeBlockStartMarker, extractClaudeMdBlockVersion, patchClaudeMdImport, } from "./claudeMdPatch.js";
66
+ export { BRIDGE_BLOCK_END, bridgeBlockStartMarker, extractClaudeMdBlockVersion, patchClaudeMdImport, replaceAllBridgeBlocks, } from "./claudeMdPatch.js";
67
67
  import { extractClaudeMdBlockVersion, patchClaudeMdImport, } from "./claudeMdPatch.js";
68
68
  /**
69
69
  * Downloads the latest VSIX from Open VSX Registry to a temp file.
@@ -368,7 +368,8 @@ if (process.argv[2] === "install") {
368
368
  await runInstall(process.argv.slice(3));
369
369
  process.exit(0);
370
370
  }
371
- // Handle marketplace subcommand — browse and install community skills
371
+ // Handle marketplace subcommand — DEPRECATED, prints migration message.
372
+ // See issue #279 and src/commands/marketplace.ts for the rationale.
372
373
  if (process.argv[2] === "marketplace") {
373
374
  const { runMarketplace } = await import("./commands/marketplace.js");
374
375
  await runMarketplace(process.argv.slice(3));