patchwork-os 0.2.0-alpha.3 → 0.2.0-alpha.31

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 (301) hide show
  1. package/README.bridge.md +6 -0
  2. package/README.md +40 -15
  3. package/deploy/bootstrap-vps.sh +184 -0
  4. package/deploy/deploy-dashboard.sh +174 -0
  5. package/deploy/deploy-landing.sh +79 -0
  6. package/dist/activationMetrics.d.ts +67 -0
  7. package/dist/activationMetrics.js +255 -0
  8. package/dist/activationMetrics.js.map +1 -0
  9. package/dist/approvalHttp.d.ts +24 -2
  10. package/dist/approvalHttp.js +150 -10
  11. package/dist/approvalHttp.js.map +1 -1
  12. package/dist/approvalQueue.d.ts +16 -1
  13. package/dist/approvalQueue.js +44 -3
  14. package/dist/approvalQueue.js.map +1 -1
  15. package/dist/automation.d.ts +20 -0
  16. package/dist/automation.js +54 -1
  17. package/dist/automation.js.map +1 -1
  18. package/dist/bridge.d.ts +2 -0
  19. package/dist/bridge.js +55 -130
  20. package/dist/bridge.js.map +1 -1
  21. package/dist/bridgeToken.js +57 -19
  22. package/dist/bridgeToken.js.map +1 -1
  23. package/dist/ccPermissions.js +6 -4
  24. package/dist/ccPermissions.js.map +1 -1
  25. package/dist/claudeOrchestrator.d.ts +1 -1
  26. package/dist/claudeOrchestrator.js +14 -8
  27. package/dist/claudeOrchestrator.js.map +1 -1
  28. package/dist/commands/launchd.d.ts +2 -0
  29. package/dist/commands/launchd.js +94 -0
  30. package/dist/commands/launchd.js.map +1 -0
  31. package/dist/commands/recipe.d.ts +258 -0
  32. package/dist/commands/recipe.js +1130 -0
  33. package/dist/commands/recipe.js.map +1 -0
  34. package/dist/commands/recipeInstall.d.ts +72 -0
  35. package/dist/commands/recipeInstall.js +339 -0
  36. package/dist/commands/recipeInstall.js.map +1 -0
  37. package/dist/config.d.ts +14 -1
  38. package/dist/config.js +99 -8
  39. package/dist/config.js.map +1 -1
  40. package/dist/connectors/baseConnector.d.ts +117 -0
  41. package/dist/connectors/baseConnector.js +213 -0
  42. package/dist/connectors/baseConnector.js.map +1 -0
  43. package/dist/connectors/confluence.d.ts +111 -0
  44. package/dist/connectors/confluence.js +406 -0
  45. package/dist/connectors/confluence.js.map +1 -0
  46. package/dist/connectors/datadog.d.ts +116 -0
  47. package/dist/connectors/datadog.js +385 -0
  48. package/dist/connectors/datadog.js.map +1 -0
  49. package/dist/connectors/fixtureLibrary.d.ts +21 -0
  50. package/dist/connectors/fixtureLibrary.js +70 -0
  51. package/dist/connectors/fixtureLibrary.js.map +1 -0
  52. package/dist/connectors/fixtureRecorder.d.ts +1 -0
  53. package/dist/connectors/fixtureRecorder.js +35 -0
  54. package/dist/connectors/fixtureRecorder.js.map +1 -0
  55. package/dist/connectors/github.d.ts +58 -8
  56. package/dist/connectors/github.js +312 -84
  57. package/dist/connectors/github.js.map +1 -1
  58. package/dist/connectors/gmail.d.ts +4 -1
  59. package/dist/connectors/gmail.js +79 -16
  60. package/dist/connectors/gmail.js.map +1 -1
  61. package/dist/connectors/googleCalendar.d.ts +60 -0
  62. package/dist/connectors/googleCalendar.js +345 -0
  63. package/dist/connectors/googleCalendar.js.map +1 -0
  64. package/dist/connectors/hubspot.d.ts +112 -0
  65. package/dist/connectors/hubspot.js +408 -0
  66. package/dist/connectors/hubspot.js.map +1 -0
  67. package/dist/connectors/intercom.d.ts +102 -0
  68. package/dist/connectors/intercom.js +402 -0
  69. package/dist/connectors/intercom.js.map +1 -0
  70. package/dist/connectors/jira.d.ts +98 -0
  71. package/dist/connectors/jira.js +379 -0
  72. package/dist/connectors/jira.js.map +1 -0
  73. package/dist/connectors/linear.d.ts +69 -19
  74. package/dist/connectors/linear.js +170 -129
  75. package/dist/connectors/linear.js.map +1 -1
  76. package/dist/connectors/mcpClient.d.ts +56 -0
  77. package/dist/connectors/mcpClient.js +189 -0
  78. package/dist/connectors/mcpClient.js.map +1 -0
  79. package/dist/connectors/mcpOAuth.d.ts +84 -0
  80. package/dist/connectors/mcpOAuth.js +389 -0
  81. package/dist/connectors/mcpOAuth.js.map +1 -0
  82. package/dist/connectors/mockConnector.d.ts +28 -0
  83. package/dist/connectors/mockConnector.js +81 -0
  84. package/dist/connectors/mockConnector.js.map +1 -0
  85. package/dist/connectors/notion.d.ts +143 -0
  86. package/dist/connectors/notion.js +424 -0
  87. package/dist/connectors/notion.js.map +1 -0
  88. package/dist/connectors/sentry.d.ts +17 -21
  89. package/dist/connectors/sentry.js +115 -131
  90. package/dist/connectors/sentry.js.map +1 -1
  91. package/dist/connectors/slack.d.ts +50 -0
  92. package/dist/connectors/slack.js +324 -0
  93. package/dist/connectors/slack.js.map +1 -0
  94. package/dist/connectors/stripe.d.ts +116 -0
  95. package/dist/connectors/stripe.js +379 -0
  96. package/dist/connectors/stripe.js.map +1 -0
  97. package/dist/connectors/tokenStorage.d.ts +35 -0
  98. package/dist/connectors/tokenStorage.js +459 -0
  99. package/dist/connectors/tokenStorage.js.map +1 -0
  100. package/dist/connectors/zendesk.d.ts +104 -0
  101. package/dist/connectors/zendesk.js +424 -0
  102. package/dist/connectors/zendesk.js.map +1 -0
  103. package/dist/drivers/gemini/index.d.ts +5 -1
  104. package/dist/drivers/gemini/index.js +39 -5
  105. package/dist/drivers/gemini/index.js.map +1 -1
  106. package/dist/drivers/index.d.ts +5 -0
  107. package/dist/drivers/index.js +1 -1
  108. package/dist/drivers/index.js.map +1 -1
  109. package/dist/featureFlags.d.ts +73 -0
  110. package/dist/featureFlags.js +203 -0
  111. package/dist/featureFlags.js.map +1 -0
  112. package/dist/fp/automationInterpreter.js +1 -0
  113. package/dist/fp/automationInterpreter.js.map +1 -1
  114. package/dist/fp/automationProgram.d.ts +1 -1
  115. package/dist/fp/automationProgram.js.map +1 -1
  116. package/dist/fp/policyParser.js +17 -0
  117. package/dist/fp/policyParser.js.map +1 -1
  118. package/dist/index.js +621 -61
  119. package/dist/index.js.map +1 -1
  120. package/dist/installGuard.d.ts +25 -0
  121. package/dist/installGuard.js +48 -0
  122. package/dist/installGuard.js.map +1 -0
  123. package/dist/oauth.d.ts +4 -1
  124. package/dist/oauth.js +50 -14
  125. package/dist/oauth.js.map +1 -1
  126. package/dist/patchworkConfig.d.ts +9 -0
  127. package/dist/patchworkConfig.js.map +1 -1
  128. package/dist/recipeOrchestration.d.ts +53 -0
  129. package/dist/recipeOrchestration.js +272 -0
  130. package/dist/recipeOrchestration.js.map +1 -0
  131. package/dist/recipes/RecipeOrchestrator.d.ts +40 -0
  132. package/dist/recipes/RecipeOrchestrator.js +51 -0
  133. package/dist/recipes/RecipeOrchestrator.js.map +1 -0
  134. package/dist/recipes/agentExecutor.d.ts +28 -0
  135. package/dist/recipes/agentExecutor.js +42 -0
  136. package/dist/recipes/agentExecutor.js.map +1 -0
  137. package/dist/recipes/chainedRunner.d.ts +140 -0
  138. package/dist/recipes/chainedRunner.js +539 -0
  139. package/dist/recipes/chainedRunner.js.map +1 -0
  140. package/dist/recipes/dependencyGraph.d.ts +39 -0
  141. package/dist/recipes/dependencyGraph.js +199 -0
  142. package/dist/recipes/dependencyGraph.js.map +1 -0
  143. package/dist/recipes/legacyRecipeCompat.d.ts +2 -0
  144. package/dist/recipes/legacyRecipeCompat.js +112 -0
  145. package/dist/recipes/legacyRecipeCompat.js.map +1 -0
  146. package/dist/recipes/manifest.d.ts +47 -0
  147. package/dist/recipes/manifest.js +141 -0
  148. package/dist/recipes/manifest.js.map +1 -0
  149. package/dist/recipes/nestedRecipeStep.d.ts +58 -0
  150. package/dist/recipes/nestedRecipeStep.js +95 -0
  151. package/dist/recipes/nestedRecipeStep.js.map +1 -0
  152. package/dist/recipes/outputRegistry.d.ts +28 -0
  153. package/dist/recipes/outputRegistry.js +52 -0
  154. package/dist/recipes/outputRegistry.js.map +1 -0
  155. package/dist/recipes/scheduler.d.ts +23 -7
  156. package/dist/recipes/scheduler.js +131 -41
  157. package/dist/recipes/scheduler.js.map +1 -1
  158. package/dist/recipes/schema.d.ts +17 -2
  159. package/dist/recipes/schemaGenerator.d.ts +28 -0
  160. package/dist/recipes/schemaGenerator.js +565 -0
  161. package/dist/recipes/schemaGenerator.js.map +1 -0
  162. package/dist/recipes/templateEngine.d.ts +62 -0
  163. package/dist/recipes/templateEngine.js +182 -0
  164. package/dist/recipes/templateEngine.js.map +1 -0
  165. package/dist/recipes/toolRegistry.d.ts +181 -0
  166. package/dist/recipes/toolRegistry.js +300 -0
  167. package/dist/recipes/toolRegistry.js.map +1 -0
  168. package/dist/recipes/tools/calendar.d.ts +6 -0
  169. package/dist/recipes/tools/calendar.js +61 -0
  170. package/dist/recipes/tools/calendar.js.map +1 -0
  171. package/dist/recipes/tools/confluence.d.ts +6 -0
  172. package/dist/recipes/tools/confluence.js +254 -0
  173. package/dist/recipes/tools/confluence.js.map +1 -0
  174. package/dist/recipes/tools/datadog.d.ts +6 -0
  175. package/dist/recipes/tools/datadog.js +239 -0
  176. package/dist/recipes/tools/datadog.js.map +1 -0
  177. package/dist/recipes/tools/diagnostics.d.ts +6 -0
  178. package/dist/recipes/tools/diagnostics.js +36 -0
  179. package/dist/recipes/tools/diagnostics.js.map +1 -0
  180. package/dist/recipes/tools/file.d.ts +6 -0
  181. package/dist/recipes/tools/file.js +170 -0
  182. package/dist/recipes/tools/file.js.map +1 -0
  183. package/dist/recipes/tools/git.d.ts +6 -0
  184. package/dist/recipes/tools/git.js +63 -0
  185. package/dist/recipes/tools/git.js.map +1 -0
  186. package/dist/recipes/tools/github.d.ts +6 -0
  187. package/dist/recipes/tools/github.js +91 -0
  188. package/dist/recipes/tools/github.js.map +1 -0
  189. package/dist/recipes/tools/gmail.d.ts +6 -0
  190. package/dist/recipes/tools/gmail.js +210 -0
  191. package/dist/recipes/tools/gmail.js.map +1 -0
  192. package/dist/recipes/tools/hubspot.d.ts +6 -0
  193. package/dist/recipes/tools/hubspot.js +232 -0
  194. package/dist/recipes/tools/hubspot.js.map +1 -0
  195. package/dist/recipes/tools/index.d.ts +22 -0
  196. package/dist/recipes/tools/index.js +25 -0
  197. package/dist/recipes/tools/index.js.map +1 -0
  198. package/dist/recipes/tools/intercom.d.ts +6 -0
  199. package/dist/recipes/tools/intercom.js +226 -0
  200. package/dist/recipes/tools/intercom.js.map +1 -0
  201. package/dist/recipes/tools/linear.d.ts +6 -0
  202. package/dist/recipes/tools/linear.js +83 -0
  203. package/dist/recipes/tools/linear.js.map +1 -0
  204. package/dist/recipes/tools/notion.d.ts +6 -0
  205. package/dist/recipes/tools/notion.js +278 -0
  206. package/dist/recipes/tools/notion.js.map +1 -0
  207. package/dist/recipes/tools/slack.d.ts +6 -0
  208. package/dist/recipes/tools/slack.js +72 -0
  209. package/dist/recipes/tools/slack.js.map +1 -0
  210. package/dist/recipes/tools/stripe.d.ts +6 -0
  211. package/dist/recipes/tools/stripe.js +265 -0
  212. package/dist/recipes/tools/stripe.js.map +1 -0
  213. package/dist/recipes/tools/zendesk.d.ts +6 -0
  214. package/dist/recipes/tools/zendesk.js +245 -0
  215. package/dist/recipes/tools/zendesk.js.map +1 -0
  216. package/dist/recipes/validation.d.ts +13 -0
  217. package/dist/recipes/validation.js +433 -0
  218. package/dist/recipes/validation.js.map +1 -0
  219. package/dist/recipes/yamlRunner.d.ts +87 -0
  220. package/dist/recipes/yamlRunner.js +693 -409
  221. package/dist/recipes/yamlRunner.js.map +1 -1
  222. package/dist/recipesHttp.d.ts +34 -6
  223. package/dist/recipesHttp.js +285 -15
  224. package/dist/recipesHttp.js.map +1 -1
  225. package/dist/riskTier.js +1 -0
  226. package/dist/riskTier.js.map +1 -1
  227. package/dist/runLog.d.ts +23 -0
  228. package/dist/runLog.js +56 -1
  229. package/dist/runLog.js.map +1 -1
  230. package/dist/schemas/dry-run-plan.v1.json +139 -0
  231. package/dist/schemas/recipe.v1.json +684 -0
  232. package/dist/server.d.ts +32 -1
  233. package/dist/server.js +980 -97
  234. package/dist/server.js.map +1 -1
  235. package/dist/streamableHttp.js +2 -0
  236. package/dist/streamableHttp.js.map +1 -1
  237. package/dist/tools/addLinearComment.d.ts +55 -0
  238. package/dist/tools/addLinearComment.js +72 -0
  239. package/dist/tools/addLinearComment.js.map +1 -0
  240. package/dist/tools/bridgeDoctor.js +2 -2
  241. package/dist/tools/bridgeDoctor.js.map +1 -1
  242. package/dist/tools/createLinearIssue.d.ts +84 -0
  243. package/dist/tools/createLinearIssue.js +146 -0
  244. package/dist/tools/createLinearIssue.js.map +1 -0
  245. package/dist/tools/fetchCalendarEvents.d.ts +94 -0
  246. package/dist/tools/fetchCalendarEvents.js +97 -0
  247. package/dist/tools/fetchCalendarEvents.js.map +1 -0
  248. package/dist/tools/fetchGithubIssue.d.ts +80 -0
  249. package/dist/tools/fetchGithubIssue.js +84 -0
  250. package/dist/tools/fetchGithubIssue.js.map +1 -0
  251. package/dist/tools/fetchGithubPR.d.ts +89 -0
  252. package/dist/tools/fetchGithubPR.js +96 -0
  253. package/dist/tools/fetchGithubPR.js.map +1 -0
  254. package/dist/tools/fetchSlackProfile.d.ts +43 -0
  255. package/dist/tools/fetchSlackProfile.js +46 -0
  256. package/dist/tools/fetchSlackProfile.js.map +1 -0
  257. package/dist/tools/getConnectorStatus.d.ts +58 -0
  258. package/dist/tools/getConnectorStatus.js +56 -0
  259. package/dist/tools/getConnectorStatus.js.map +1 -0
  260. package/dist/tools/github/actions.js +4 -2
  261. package/dist/tools/github/actions.js.map +1 -1
  262. package/dist/tools/github/composite.d.ts +339 -0
  263. package/dist/tools/github/composite.js +343 -0
  264. package/dist/tools/github/composite.js.map +1 -0
  265. package/dist/tools/github/index.d.ts +2 -1
  266. package/dist/tools/github/index.js +2 -1
  267. package/dist/tools/github/index.js.map +1 -1
  268. package/dist/tools/github/issues.js +8 -4
  269. package/dist/tools/github/issues.js.map +1 -1
  270. package/dist/tools/github/pr.d.ts +122 -0
  271. package/dist/tools/github/pr.js +195 -5
  272. package/dist/tools/github/pr.js.map +1 -1
  273. package/dist/tools/index.js +32 -1
  274. package/dist/tools/index.js.map +1 -1
  275. package/dist/tools/searchTools.js +1 -1
  276. package/dist/tools/searchTools.js.map +1 -1
  277. package/dist/tools/slackListChannels.d.ts +65 -0
  278. package/dist/tools/slackListChannels.js +70 -0
  279. package/dist/tools/slackListChannels.js.map +1 -0
  280. package/dist/tools/slackPostMessage.d.ts +57 -0
  281. package/dist/tools/slackPostMessage.js +77 -0
  282. package/dist/tools/slackPostMessage.js.map +1 -0
  283. package/dist/tools/testTraceToSource.js +2 -2
  284. package/dist/tools/testTraceToSource.js.map +1 -1
  285. package/dist/tools/updateLinearIssue.d.ts +89 -0
  286. package/dist/tools/updateLinearIssue.js +117 -0
  287. package/dist/tools/updateLinearIssue.js.map +1 -0
  288. package/dist/transport.d.ts +7 -1
  289. package/dist/transport.js +85 -11
  290. package/dist/transport.js.map +1 -1
  291. package/package.json +5 -2
  292. package/scripts/start-all.sh +56 -19
  293. package/templates/automation-policies/recipe-authoring.json +25 -0
  294. package/templates/automation-policy.example.json +6 -0
  295. package/templates/co.patchwork-os.bridge.plist +34 -0
  296. package/templates/recipes/ctx-loop-test.yaml +75 -0
  297. package/templates/recipes/lint-on-save.yaml +1 -2
  298. package/templates/recipes/morning-brief-slack.yaml +57 -0
  299. package/templates/recipes/morning-brief.yaml +14 -6
  300. package/templates/recipes/project-health-check.yaml +50 -0
  301. package/templates/recipes/sentry-to-linear.yaml +77 -0
package/dist/config.js CHANGED
@@ -116,7 +116,8 @@ const KNOWN_CONFIG_FILE_KEYS = new Set([
116
116
  "editorCommand",
117
117
  "ideName",
118
118
  "autoTmux",
119
- "claudeDriver",
119
+ "driver",
120
+ "claudeDriver", // deprecated alias — still accepted for backward compat
120
121
  "claudeBinary",
121
122
  "antBinary",
122
123
  "automationEnabled",
@@ -192,6 +193,39 @@ export function loadConfigFile(configPath) {
192
193
  }
193
194
  return {};
194
195
  }
196
+ export function resolveBridgeConfigFilePath(configPath) {
197
+ if (configPath)
198
+ return configPath;
199
+ if (process.env.CLAUDE_IDE_BRIDGE_CONFIG) {
200
+ return process.env.CLAUDE_IDE_BRIDGE_CONFIG;
201
+ }
202
+ const cwdConfigPath = path.join(process.cwd(), "claude-ide-bridge.config.json");
203
+ if (fs.existsSync(cwdConfigPath))
204
+ return cwdConfigPath;
205
+ const claudeDir = process.env.CLAUDE_CONFIG_DIR ?? path.join(os.homedir(), ".claude");
206
+ return path.join(claudeDir, "ide", "config.json");
207
+ }
208
+ export function saveBridgeConfigDriver(driver, configPath) {
209
+ const targetPath = resolveBridgeConfigFilePath(configPath);
210
+ let parsed = {};
211
+ if (fs.existsSync(targetPath)) {
212
+ const raw = fs.readFileSync(targetPath, "utf-8");
213
+ const candidate = JSON.parse(raw);
214
+ if (typeof candidate !== "object" ||
215
+ candidate === null ||
216
+ Array.isArray(candidate)) {
217
+ throw new Error(`Bridge config file ${targetPath} is not a JSON object`);
218
+ }
219
+ parsed = candidate;
220
+ }
221
+ delete parsed.claudeDriver;
222
+ parsed.driver = driver;
223
+ fs.mkdirSync(path.dirname(targetPath), { recursive: true });
224
+ fs.writeFileSync(targetPath, JSON.stringify(parsed, null, 2), {
225
+ mode: 0o600,
226
+ });
227
+ return targetPath;
228
+ }
195
229
  function requireArg(args, i, flag) {
196
230
  const value = args[i];
197
231
  if (value === undefined || value.startsWith("--")) {
@@ -253,7 +287,24 @@ export function parseConfig(argv) {
253
287
  ? Math.min(Math.max(rawTtlDays, 1), 90) * 24 * 60 * 60 * 1_000
254
288
  : 24 * 60 * 60 * 1_000; // default 24h
255
289
  let corsOrigins = fileConfig.corsOrigins ?? [];
256
- let claudeDriver = fileConfig.claudeDriver ?? "none";
290
+ // "driver" is the canonical field; "claudeDriver" is the deprecated alias.
291
+ if (fileConfig.claudeDriver && !fileConfig.driver) {
292
+ console.warn('[patchwork-os] Warning: "claudeDriver" in config is deprecated — rename to "driver".');
293
+ }
294
+ const VALID_DRIVER_MODES = [
295
+ "subprocess",
296
+ "api",
297
+ "openai",
298
+ "grok",
299
+ "gemini",
300
+ "none",
301
+ ];
302
+ const rawFileDriver = fileConfig.driver;
303
+ if (rawFileDriver !== undefined &&
304
+ !VALID_DRIVER_MODES.includes(rawFileDriver)) {
305
+ console.warn(`[patchwork-os] Warning: Unknown driver value "${rawFileDriver}" in config file — falling back to "none". Valid values: ${VALID_DRIVER_MODES.join(", ")}.`);
306
+ }
307
+ let driver = fileConfig.driver ?? fileConfig.claudeDriver ?? "none";
257
308
  let claudeBinary = fileConfig.claudeBinary ?? "claude";
258
309
  let antBinary = fileConfig.antBinary ?? "ant";
259
310
  let automationEnabled = fileConfig.automationEnabled ?? false;
@@ -261,7 +312,8 @@ export function parseConfig(argv) {
261
312
  let approvalGate = fileConfig.approvalGate ??
262
313
  "off";
263
314
  let managedSettingsPath = null;
264
- // Read approvalWebhookUrl and approvalGate from patchwork config (non-fatal, CLI flag takes precedence)
315
+ // Read approvalWebhookUrl, approvalGate, driver, and apiKeys from patchwork config
316
+ // (non-fatal; CLI flags and bridge config file take precedence over patchwork config)
265
317
  const approvalWebhookUrl = (() => {
266
318
  try {
267
319
  const pw = loadPatchworkConfig(patchworkConfigPath());
@@ -269,6 +321,21 @@ export function parseConfig(argv) {
269
321
  !fileConfig.approvalGate) {
270
322
  approvalGate = pw.approvalGate;
271
323
  }
324
+ // Seed driver from patchwork config if not already set by fileConfig or CLI
325
+ if (pw.driver && driver === "none") {
326
+ driver = pw.driver;
327
+ }
328
+ // Seed API keys as env vars if not already set (non-destructive)
329
+ if (pw.apiKeys) {
330
+ if (pw.apiKeys.openai && !process.env.OPENAI_API_KEY)
331
+ process.env.OPENAI_API_KEY = pw.apiKeys.openai;
332
+ if (pw.apiKeys.xai && !process.env.XAI_API_KEY)
333
+ process.env.XAI_API_KEY = pw.apiKeys.xai;
334
+ if (pw.apiKeys.google && !process.env.GEMINI_API_KEY)
335
+ process.env.GEMINI_API_KEY = pw.apiKeys.google;
336
+ if (pw.apiKeys.anthropic && !process.env.ANTHROPIC_API_KEY)
337
+ process.env.ANTHROPIC_API_KEY = pw.apiKeys.anthropic;
338
+ }
272
339
  return pw.dashboard?.webhookUrl ?? null;
273
340
  }
274
341
  catch {
@@ -279,6 +346,7 @@ export function parseConfig(argv) {
279
346
  const plugins = [...(fileConfig.plugins ?? [])];
280
347
  let auditLogPath = null;
281
348
  let fullMode = fileConfig.fullMode ?? true;
349
+ let lazyTools = false;
282
350
  let maxSessions = fileConfig.maxSessions ?? 5;
283
351
  if (fileConfig.maxSessions !== undefined &&
284
352
  (typeof fileConfig.maxSessions !== "number" ||
@@ -378,17 +446,22 @@ export function parseConfig(argv) {
378
446
  case "--auto-tmux":
379
447
  autoTmux = true;
380
448
  break;
449
+ case "--driver":
381
450
  case "--claude-driver": {
382
- const driverVal = requireArg(args, ++i, "--claude-driver");
451
+ const flagName = args[i];
452
+ if (flagName === "--claude-driver") {
453
+ console.warn("[patchwork-os] Warning: --claude-driver is deprecated — use --driver instead.");
454
+ }
455
+ const driverVal = requireArg(args, ++i, flagName);
383
456
  if (driverVal !== "subprocess" &&
384
457
  driverVal !== "api" &&
385
458
  driverVal !== "openai" &&
386
459
  driverVal !== "grok" &&
387
460
  driverVal !== "gemini" &&
388
461
  driverVal !== "none") {
389
- throw new Error(`Invalid --claude-driver value: "${driverVal}". Must be "subprocess", "api", "openai", "grok", "gemini", or "none".`);
462
+ throw new Error(`Invalid ${flagName} value: "${driverVal}". Must be "subprocess", "api", "openai", "grok", "gemini", or "none".`);
390
463
  }
391
- claudeDriver = driverVal;
464
+ driver = driverVal;
392
465
  break;
393
466
  }
394
467
  case "--claude-binary":
@@ -453,6 +526,9 @@ export function parseConfig(argv) {
453
526
  case "--slim":
454
527
  fullMode = false;
455
528
  break;
529
+ case "--lazy-tools":
530
+ lazyTools = true;
531
+ break;
456
532
  case "--max-sessions": {
457
533
  const msStr = requireArg(args, ++i, "--max-sessions");
458
534
  const ms = Number.parseInt(msStr, 10);
@@ -541,6 +617,7 @@ Options:
541
617
  --lsp-verbosity <level> Hover/LSP output verbosity: "minimal" (type sig only, ~60% smaller),
542
618
  "normal" (default), "verbose" (all fields)
543
619
  --slim Register only the ~60 IDE-exclusive tools (LSP, debugger, editor state).
620
+ --lazy-tools Strip inputSchema from tools/list responses. Clients call tools/schema before tools/call. Reduces token usage ~85% in tool-heavy workflows. Default: off.
544
621
  Default is full mode (~140 tools: adds git, terminal, file ops, HTTP, GitHub).
545
622
  --full (default — flag retained for backward compatibility) Explicitly request full tool set.
546
623
  --vps VPS/headless mode: expands allowlist with curl, systemctl, docker, tar, dig, openssl, etc.
@@ -559,7 +636,8 @@ Patchwork:
559
636
  --managed-settings <path> Admin-controlled settings file (highest rule precedence, cannot be overridden by users)
560
637
 
561
638
  Automation:
562
- --claude-driver <mode> Driver mode: "subprocess" | "api" | "openai" | "grok" | "gemini" | "none" (default: "none")
639
+ --driver <mode> AI driver: "subprocess" | "api" | "openai" | "grok" | "gemini" | "none" (default: "none")
640
+ --claude-driver <mode> Deprecated alias for --driver
563
641
  --claude-binary <path> Path to claude binary (default: "claude")
564
642
  --automation Enable event-driven automation hooks (requires --claude-driver != none and --automation-policy)
565
643
  --automation-policy <path> Path to JSON automation policy file
@@ -607,6 +685,14 @@ Environment Variables:
607
685
  CLAUDE_IDE_BRIDGE_CONFIG Path to config file (overrides auto-discovery)`);
608
686
  return process.exit(0);
609
687
  }
688
+ // Subcommand-only flags (recipe run, etc.) — ignored at bridge startup
689
+ case "--local":
690
+ case "--dry-run":
691
+ break;
692
+ case "--step":
693
+ case "--var":
694
+ ++i; // consume the value
695
+ break;
610
696
  default: {
611
697
  const arg = args[i];
612
698
  if (arg?.startsWith("--")) {
@@ -689,10 +775,11 @@ Environment Variables:
689
775
  commandTimeout,
690
776
  maxResultSize,
691
777
  vscodeCommandAllowlist,
778
+ configFilePath: configFilePath ?? null,
692
779
  activeWorkspaceFolder: workspace,
693
780
  gracePeriodMs,
694
781
  autoTmux,
695
- claudeDriver,
782
+ driver,
696
783
  claudeBinary,
697
784
  antBinary,
698
785
  automationEnabled,
@@ -718,6 +805,10 @@ Environment Variables:
718
805
  githubDefaultRepo,
719
806
  wsPingIntervalMs: 10_000,
720
807
  lspVerbosity,
808
+ recipeMaxConcurrency: 4,
809
+ recipeMaxDepth: 3,
810
+ recipeDryRun: false,
811
+ lazyTools,
721
812
  };
722
813
  }
723
814
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * BaseConnector — shared foundation for all Patchwork OS connectors.
3
+ *
4
+ * Provides:
5
+ * - Unified authentication flow (token refresh, expiry handling)
6
+ * - Secure token storage via OS keychain/DPAPI/Secret Service
7
+ * - OAuth 2.0 refresh token flow
8
+ * - Rate limiting with exponential backoff
9
+ * - Error normalization to ConnectorError type
10
+ * - Health check endpoint
11
+ *
12
+ * All new connectors (Jira, Notion, PagerDuty, Drive, etc.) extend this base.
13
+ * Extracted to prevent "each connector reinvents auth" anti-pattern.
14
+ */
15
+ export interface ConnectorStatus {
16
+ id: string;
17
+ status: "connected" | "disconnected";
18
+ lastSync?: string;
19
+ workspace?: string;
20
+ }
21
+ export interface AuthContext {
22
+ token: string;
23
+ refreshToken?: string;
24
+ expiresAt?: Date;
25
+ scopes?: string[];
26
+ }
27
+ export interface ConnectorError {
28
+ code: "auth_expired" | "rate_limited" | "not_found" | "permission_denied" | "validation_error" | "provider_error" | "network_error";
29
+ message: string;
30
+ providerDetail?: unknown;
31
+ retryable: boolean;
32
+ suggestedAction?: string;
33
+ }
34
+ export interface RateLimitState {
35
+ remaining: number;
36
+ resetAt: Date;
37
+ backoffMs: number;
38
+ }
39
+ export interface OAuthConfig {
40
+ clientId: string;
41
+ clientSecret?: string;
42
+ tokenEndpoint: string;
43
+ scopes?: string[];
44
+ }
45
+ export declare abstract class BaseConnector {
46
+ protected auth: AuthContext | null;
47
+ protected rateLimit: RateLimitState;
48
+ protected oauthConfig: OAuthConfig | null;
49
+ abstract readonly providerName: string;
50
+ /**
51
+ * OAuth configuration for token refresh.
52
+ * Subclasses should set this in their constructor for refresh to work.
53
+ */
54
+ protected abstract getOAuthConfig(): OAuthConfig | null;
55
+ /**
56
+ * Authenticate with the provider. Implemented by subclass.
57
+ * Base class handles token refresh on expiry and secure storage.
58
+ */
59
+ abstract authenticate(): Promise<AuthContext>;
60
+ /**
61
+ * Load stored tokens from secure storage.
62
+ * Call this in subclass constructor or connect method.
63
+ */
64
+ loadStoredTokens(): Promise<boolean>;
65
+ /**
66
+ * Save current tokens to secure storage.
67
+ */
68
+ saveTokens(): Promise<void>;
69
+ /**
70
+ * Clear stored tokens (logout/disconnect).
71
+ */
72
+ clearTokens(): Promise<void>;
73
+ /**
74
+ * Perform OAuth 2.0 token refresh.
75
+ * Subclasses can override for provider-specific refresh flows.
76
+ */
77
+ protected refreshToken(): Promise<AuthContext | null>;
78
+ /**
79
+ * Health check — validates token is valid without side effects.
80
+ * Default implementation: make lightweight API call (e.g., /me or /user).
81
+ */
82
+ abstract healthCheck(): Promise<{
83
+ ok: boolean;
84
+ error?: ConnectorError;
85
+ }>;
86
+ /**
87
+ * Normalize provider-specific errors to ConnectorError.
88
+ * Each subclass implements provider-specific error mapping.
89
+ */
90
+ abstract normalizeError(error: unknown): ConnectorError;
91
+ /**
92
+ * Get current connection status for dashboard.
93
+ */
94
+ abstract getStatus(): ConnectorStatus;
95
+ /**
96
+ * Execute an authenticated API call with automatic token refresh
97
+ * and rate limit backoff.
98
+ */
99
+ protected apiCall<T>(fn: (token: string) => Promise<T>, options?: {
100
+ retries?: number;
101
+ retryDelayMs?: number;
102
+ }): Promise<{
103
+ data: T;
104
+ } | {
105
+ error: ConnectorError;
106
+ }>;
107
+ /**
108
+ * Update rate limit state from HTTP response headers.
109
+ * Subclass should call this after each API response.
110
+ */
111
+ protected updateRateLimitFromHeaders(headers: {
112
+ "x-ratelimit-remaining"?: string;
113
+ "x-ratelimit-reset"?: string;
114
+ "retry-after"?: string;
115
+ }): void;
116
+ private isTokenExpired;
117
+ }
@@ -0,0 +1,213 @@
1
+ /**
2
+ * BaseConnector — shared foundation for all Patchwork OS connectors.
3
+ *
4
+ * Provides:
5
+ * - Unified authentication flow (token refresh, expiry handling)
6
+ * - Secure token storage via OS keychain/DPAPI/Secret Service
7
+ * - OAuth 2.0 refresh token flow
8
+ * - Rate limiting with exponential backoff
9
+ * - Error normalization to ConnectorError type
10
+ * - Health check endpoint
11
+ *
12
+ * All new connectors (Jira, Notion, PagerDuty, Drive, etc.) extend this base.
13
+ * Extracted to prevent "each connector reinvents auth" anti-pattern.
14
+ */
15
+ export class BaseConnector {
16
+ auth = null;
17
+ rateLimit = {
18
+ remaining: 100,
19
+ resetAt: new Date(Date.now() + 60000),
20
+ backoffMs: 0,
21
+ };
22
+ oauthConfig = null;
23
+ /**
24
+ * Load stored tokens from secure storage.
25
+ * Call this in subclass constructor or connect method.
26
+ */
27
+ async loadStoredTokens() {
28
+ const { getTokens } = await import("./tokenStorage.js");
29
+ const stored = await getTokens(this.providerName);
30
+ if (stored) {
31
+ this.auth = {
32
+ token: stored.accessToken,
33
+ refreshToken: stored.refreshToken,
34
+ expiresAt: stored.expiresAt ? new Date(stored.expiresAt) : undefined,
35
+ scopes: stored.scopes,
36
+ };
37
+ return true;
38
+ }
39
+ return false;
40
+ }
41
+ /**
42
+ * Save current tokens to secure storage.
43
+ */
44
+ async saveTokens() {
45
+ if (!this.auth)
46
+ return;
47
+ const { storeTokens } = await import("./tokenStorage.js");
48
+ await storeTokens(this.providerName, {
49
+ accessToken: this.auth.token,
50
+ refreshToken: this.auth.refreshToken,
51
+ expiresAt: this.auth.expiresAt?.toISOString(),
52
+ scopes: this.auth.scopes,
53
+ });
54
+ }
55
+ /**
56
+ * Clear stored tokens (logout/disconnect).
57
+ */
58
+ async clearTokens() {
59
+ const { deleteTokens } = await import("./tokenStorage.js");
60
+ await deleteTokens(this.providerName);
61
+ this.auth = null;
62
+ }
63
+ /**
64
+ * Perform OAuth 2.0 token refresh.
65
+ * Subclasses can override for provider-specific refresh flows.
66
+ */
67
+ async refreshToken() {
68
+ if (!this.auth?.refreshToken)
69
+ return null;
70
+ const config = this.getOAuthConfig();
71
+ if (!config)
72
+ return null;
73
+ try {
74
+ const params = new URLSearchParams({
75
+ grant_type: "refresh_token",
76
+ refresh_token: this.auth.refreshToken,
77
+ client_id: config.clientId,
78
+ ...(config.clientSecret ? { client_secret: config.clientSecret } : {}),
79
+ });
80
+ const response = await fetch(config.tokenEndpoint, {
81
+ method: "POST",
82
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
83
+ body: params.toString(),
84
+ });
85
+ if (!response.ok) {
86
+ throw new Error(`Token refresh failed: ${response.status}`);
87
+ }
88
+ const data = (await response.json());
89
+ const newAuth = {
90
+ token: data.access_token,
91
+ refreshToken: data.refresh_token ?? this.auth.refreshToken,
92
+ expiresAt: data.expires_in
93
+ ? new Date(Date.now() + data.expires_in * 1000)
94
+ : undefined,
95
+ scopes: data.scope?.split(" ") ?? this.auth.scopes,
96
+ };
97
+ this.auth = newAuth;
98
+ await this.saveTokens();
99
+ return newAuth;
100
+ }
101
+ catch (err) {
102
+ // Refresh failed - clear tokens to force re-auth
103
+ await this.clearTokens();
104
+ return null;
105
+ }
106
+ }
107
+ /**
108
+ * Execute an authenticated API call with automatic token refresh
109
+ * and rate limit backoff.
110
+ */
111
+ async apiCall(fn, options = {}) {
112
+ const { retries = 2, retryDelayMs = 1000 } = options;
113
+ // Ensure auth - try refresh first, then fall back to full auth
114
+ if (!this.auth || this.isTokenExpired()) {
115
+ // Try OAuth refresh if we have a refresh token
116
+ if (this.auth?.refreshToken) {
117
+ const refreshed = await this.refreshToken();
118
+ if (refreshed) {
119
+ this.auth = refreshed;
120
+ }
121
+ else {
122
+ // Refresh failed, fall back to full auth
123
+ try {
124
+ this.auth = await this.authenticate();
125
+ }
126
+ catch (err) {
127
+ return { error: this.normalizeError(err) };
128
+ }
129
+ }
130
+ }
131
+ else {
132
+ // No refresh token, do full auth
133
+ try {
134
+ this.auth = await this.authenticate();
135
+ }
136
+ catch (err) {
137
+ return { error: this.normalizeError(err) };
138
+ }
139
+ }
140
+ }
141
+ // Apply rate limit backoff
142
+ if (this.rateLimit.backoffMs > 0) {
143
+ await sleep(this.rateLimit.backoffMs);
144
+ }
145
+ // Execute with retry
146
+ for (let attempt = 0; attempt <= retries; attempt++) {
147
+ try {
148
+ const result = await fn(this.auth?.token);
149
+ return { data: result };
150
+ }
151
+ catch (err) {
152
+ const normalized = this.normalizeError(err);
153
+ // Don't retry non-retryable errors
154
+ if (!normalized.retryable || attempt === retries) {
155
+ return { error: normalized };
156
+ }
157
+ // Exponential backoff with jitter
158
+ const delay = retryDelayMs * 2 ** attempt + Math.random() * 500;
159
+ await sleep(delay);
160
+ // Token might have expired mid-call - try refresh first
161
+ if (normalized.code === "auth_expired") {
162
+ if (this.auth?.refreshToken) {
163
+ const refreshed = await this.refreshToken();
164
+ if (refreshed) {
165
+ this.auth = refreshed;
166
+ continue; // Retry with new token
167
+ }
168
+ }
169
+ // Refresh failed or no refresh token, try full auth
170
+ try {
171
+ this.auth = await this.authenticate();
172
+ }
173
+ catch {
174
+ return { error: normalized };
175
+ }
176
+ }
177
+ }
178
+ }
179
+ // Should not reach here, but TypeScript needs it
180
+ return {
181
+ error: {
182
+ code: "provider_error",
183
+ message: "Unexpected end of retry loop",
184
+ retryable: false,
185
+ },
186
+ };
187
+ }
188
+ /**
189
+ * Update rate limit state from HTTP response headers.
190
+ * Subclass should call this after each API response.
191
+ */
192
+ updateRateLimitFromHeaders(headers) {
193
+ if (headers["x-ratelimit-remaining"]) {
194
+ this.rateLimit.remaining = parseInt(headers["x-ratelimit-remaining"], 10);
195
+ }
196
+ if (headers["x-ratelimit-reset"]) {
197
+ this.rateLimit.resetAt = new Date(parseInt(headers["x-ratelimit-reset"], 10) * 1000);
198
+ }
199
+ if (headers["retry-after"]) {
200
+ this.rateLimit.backoffMs = parseInt(headers["retry-after"], 10) * 1000;
201
+ }
202
+ }
203
+ isTokenExpired() {
204
+ if (!this.auth?.expiresAt)
205
+ return false;
206
+ // Refresh 5 minutes before actual expiry
207
+ return new Date(Date.now() + 5 * 60000) >= this.auth.expiresAt;
208
+ }
209
+ }
210
+ function sleep(ms) {
211
+ return new Promise((resolve) => setTimeout(resolve, ms));
212
+ }
213
+ //# sourceMappingURL=baseConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseConnector.js","sourceRoot":"","sources":["../../src/connectors/baseConnector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA4CH,MAAM,OAAgB,aAAa;IACvB,IAAI,GAAuB,IAAI,CAAC;IAChC,SAAS,GAAmB;QACpC,SAAS,EAAE,GAAG;QACd,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACrC,SAAS,EAAE,CAAC;KACb,CAAC;IACQ,WAAW,GAAuB,IAAI,CAAC;IAgBjD;;;OAGG;IACH,KAAK,CAAC,gBAAgB;QACpB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,GAAG;gBACV,KAAK,EAAE,MAAM,CAAC,WAAW;gBACzB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;gBACpE,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QACvB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC1D,MAAM,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE;YACnC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YAC5B,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;YACpC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE;YAC7C,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;SACzB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC3D,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,YAAY;QAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY;YAAE,OAAO,IAAI,CAAC;QAE1C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;gBACjC,UAAU,EAAE,eAAe;gBAC3B,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;gBACrC,SAAS,EAAE,MAAM,CAAC,QAAQ;gBAC1B,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvE,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE;gBACjD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;gBAChE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;aACxB,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9D,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAKlC,CAAC;YAEF,MAAM,OAAO,GAAgB;gBAC3B,KAAK,EAAE,IAAI,CAAC,YAAY;gBACxB,YAAY,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY;gBAC1D,SAAS,EAAE,IAAI,CAAC,UAAU;oBACxB,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;oBAC/C,CAAC,CAAC,SAAS;gBACb,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM;aACnD,CAAC;YAEF,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;YACpB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,iDAAiD;YACjD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAmBD;;;OAGG;IACO,KAAK,CAAC,OAAO,CACrB,EAAiC,EACjC,UAAuD,EAAE;QAEzD,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,YAAY,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAErD,+DAA+D;QAC/D,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YACxC,+CAA+C;YAC/C,IAAI,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;gBAC5B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC5C,IAAI,SAAS,EAAE,CAAC;oBACd,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACN,yCAAyC;oBACzC,IAAI,CAAC;wBACH,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;oBACxC,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC7C,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,iCAAiC;gBACjC,IAAI,CAAC;oBACH,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBACxC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7C,CAAC;YACH,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QAED,qBAAqB;QACrB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;YACpD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC1B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAE5C,mCAAmC;gBACnC,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;oBACjD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;gBAC/B,CAAC;gBAED,kCAAkC;gBAClC,MAAM,KAAK,GAAG,YAAY,GAAG,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;gBAChE,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;gBAEnB,wDAAwD;gBACxD,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBACvC,IAAI,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;wBAC5B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;wBAC5C,IAAI,SAAS,EAAE,CAAC;4BACd,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;4BACtB,SAAS,CAAC,uBAAuB;wBACnC,CAAC;oBACH,CAAC;oBACD,oDAAoD;oBACpD,IAAI,CAAC;wBACH,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;oBACxC,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;oBAC/B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,OAAO;YACL,KAAK,EAAE;gBACL,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,8BAA8B;gBACvC,SAAS,EAAE,KAAK;aACjB;SACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACO,0BAA0B,CAAC,OAIpC;QACC,IAAI,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,IAAI,CAC/B,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAClD,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;QACzE,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS;YAAE,OAAO,KAAK,CAAC;QACxC,yCAAyC;QACzC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IACjE,CAAC;CACF;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}