zilmate 1.9.9 → 1.10.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 (287) hide show
  1. package/.agents/skills/ad-creative/SKILL.md +362 -0
  2. package/.agents/skills/ad-creative/evals/evals.json +90 -0
  3. package/.agents/skills/ad-creative/references/generative-tools.md +637 -0
  4. package/.agents/skills/ad-creative/references/platform-specs.md +213 -0
  5. package/.agents/skills/ai-seo/SKILL.md +489 -0
  6. package/.agents/skills/ai-seo/evals/evals.json +90 -0
  7. package/.agents/skills/ai-seo/references/content-patterns.md +285 -0
  8. package/.agents/skills/ai-seo/references/content-types.md +71 -0
  9. package/.agents/skills/ai-seo/references/okf.md +104 -0
  10. package/.agents/skills/ai-seo/references/platform-ranking-factors.md +154 -0
  11. package/.agents/skills/clerk-backend-api/SKILL.md +426 -0
  12. package/.agents/skills/clerk-backend-api/evals/evals.json +87 -0
  13. package/.agents/skills/clerk-backend-api/scripts/api-specs-context.sh +30 -0
  14. package/.agents/skills/clerk-backend-api/scripts/execute-request.sh +88 -0
  15. package/.agents/skills/clerk-backend-api/scripts/extract-endpoint-detail.sh +165 -0
  16. package/.agents/skills/clerk-backend-api/scripts/extract-tag-endpoints.sh +208 -0
  17. package/.agents/skills/clerk-backend-api/scripts/extract-tags.js +14 -0
  18. package/.agents/skills/copy-editing/SKILL.md +457 -0
  19. package/.agents/skills/copy-editing/evals/evals.json +89 -0
  20. package/.agents/skills/copy-editing/references/checklist.md +66 -0
  21. package/.agents/skills/copy-editing/references/content-refresh.md +38 -0
  22. package/.agents/skills/copy-editing/references/plain-english-alternatives.md +394 -0
  23. package/.agents/skills/hyperframes/SKILL.md +163 -0
  24. package/.agents/skills/hyperframes-cli/SKILL.md +109 -0
  25. package/.agents/skills/hyperframes-cli/references/doctor-browser.md +45 -0
  26. package/.agents/skills/hyperframes-cli/references/init-and-scaffold.md +51 -0
  27. package/.agents/skills/hyperframes-cli/references/lambda.md +132 -0
  28. package/.agents/skills/hyperframes-cli/references/lint-validate-inspect.md +121 -0
  29. package/.agents/skills/hyperframes-cli/references/preview-render.md +109 -0
  30. package/.agents/skills/hyperframes-cli/references/upgrade-info-misc.md +75 -0
  31. package/.agents/skills/hyperframes-media/SKILL.md +97 -0
  32. package/.agents/skills/hyperframes-media/assets/sfx/CREDITS.md +35 -0
  33. package/.agents/skills/hyperframes-media/assets/sfx/manifest.json +97 -0
  34. package/.agents/skills/hyperframes-media/references/bgm.md +72 -0
  35. package/.agents/skills/hyperframes-media/references/captions/authoring.md +159 -0
  36. package/.agents/skills/hyperframes-media/references/captions/motion.md +87 -0
  37. package/.agents/skills/hyperframes-media/references/captions/transcript-handling.md +97 -0
  38. package/.agents/skills/hyperframes-media/references/remove-background.md +143 -0
  39. package/.agents/skills/hyperframes-media/references/requirements.md +29 -0
  40. package/.agents/skills/hyperframes-media/references/sfx.md +42 -0
  41. package/.agents/skills/hyperframes-media/references/transcribe.md +52 -0
  42. package/.agents/skills/hyperframes-media/references/tts-to-captions.md +24 -0
  43. package/.agents/skills/hyperframes-media/references/tts.md +135 -0
  44. package/.agents/skills/hyperframes-media/scripts/audio.mjs +282 -0
  45. package/.agents/skills/hyperframes-media/scripts/heygen-tts.mjs +121 -0
  46. package/.agents/skills/hyperframes-media/scripts/lib/bgm.mjs +235 -0
  47. package/.agents/skills/hyperframes-media/scripts/lib/heygen.mjs +131 -0
  48. package/.agents/skills/hyperframes-media/scripts/lib/sfx.mjs +128 -0
  49. package/.agents/skills/hyperframes-media/scripts/lib/tts.mjs +220 -0
  50. package/.agents/skills/hyperframes-media/scripts/lyria-recipe.py +128 -0
  51. package/.agents/skills/hyperframes-media/scripts/wait-bgm.mjs +167 -0
  52. package/.agents/skills/hyperframes-registry/SKILL.md +101 -0
  53. package/.agents/skills/hyperframes-registry/examples/add-block.md +51 -0
  54. package/.agents/skills/hyperframes-registry/examples/add-component.md +73 -0
  55. package/.agents/skills/hyperframes-registry/references/contributing.md +166 -0
  56. package/.agents/skills/hyperframes-registry/references/demo-html-pattern.md +54 -0
  57. package/.agents/skills/hyperframes-registry/references/discovery.md +215 -0
  58. package/.agents/skills/hyperframes-registry/references/install-locations.md +45 -0
  59. package/.agents/skills/hyperframes-registry/references/templates.md +417 -0
  60. package/.agents/skills/hyperframes-registry/references/wiring-blocks.md +61 -0
  61. package/.agents/skills/hyperframes-registry/references/wiring-components.md +39 -0
  62. package/.agents/skills/marketing-psychology/SKILL.md +455 -0
  63. package/.agents/skills/marketing-psychology/evals/evals.json +88 -0
  64. package/.agents/skills/mintlify/SKILL.md +328 -0
  65. package/.agents/skills/product-launch-video/SKILL.md +206 -0
  66. package/.agents/skills/product-launch-video/references/cut-catalog.md +220 -0
  67. package/.agents/skills/product-launch-video/references/motion-language.md +156 -0
  68. package/.agents/skills/product-launch-video/references/story-design.md +373 -0
  69. package/.agents/skills/product-launch-video/references/visual-design.md +126 -0
  70. package/.agents/skills/product-launch-video/scripts/assemble-index.mjs +570 -0
  71. package/.agents/skills/product-launch-video/scripts/audio.mjs +253 -0
  72. package/.agents/skills/product-launch-video/scripts/build-frame.mjs +536 -0
  73. package/.agents/skills/product-launch-video/scripts/captions.mjs +508 -0
  74. package/.agents/skills/product-launch-video/scripts/lib/assets.mjs +55 -0
  75. package/.agents/skills/product-launch-video/scripts/lib/dimensions.mjs +45 -0
  76. package/.agents/skills/product-launch-video/scripts/lib/storyboard.mjs +249 -0
  77. package/.agents/skills/product-launch-video/scripts/lib/tokens.mjs +204 -0
  78. package/.agents/skills/product-launch-video/scripts/lib/transition-registry.mjs +38 -0
  79. package/.agents/skills/product-launch-video/scripts/lib/transitions.json +71 -0
  80. package/.agents/skills/product-launch-video/scripts/stage-assets.mjs +39 -0
  81. package/.agents/skills/product-launch-video/scripts/transitions.mjs +320 -0
  82. package/.agents/skills/product-launch-video/sub-agents/frame-worker.md +74 -0
  83. package/.agents/skills/prompt-engineering-patterns/SKILL.md +144 -0
  84. package/.agents/skills/prompt-engineering-patterns/assets/few-shot-examples.json +106 -0
  85. package/.agents/skills/prompt-engineering-patterns/assets/prompt-template-library.md +264 -0
  86. package/.agents/skills/prompt-engineering-patterns/references/chain-of-thought.md +412 -0
  87. package/.agents/skills/prompt-engineering-patterns/references/details.md +338 -0
  88. package/.agents/skills/prompt-engineering-patterns/references/few-shot-learning.md +386 -0
  89. package/.agents/skills/prompt-engineering-patterns/references/prompt-optimization.md +428 -0
  90. package/.agents/skills/prompt-engineering-patterns/references/prompt-templates.md +484 -0
  91. package/.agents/skills/prompt-engineering-patterns/references/system-prompts.md +195 -0
  92. package/.agents/skills/prompt-engineering-patterns/scripts/optimize-prompt.py +279 -0
  93. package/.agents/skills/remotion-to-hyperframes/SKILL.md +127 -0
  94. package/.agents/skills/remotion-to-hyperframes/assets/.gitkeep +0 -0
  95. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/run.sh +249 -0
  96. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/README.md +41 -0
  97. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/expected.json +26 -0
  98. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/hf-src/index.html +61 -0
  99. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/package.json +14 -0
  100. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/remotion.config.ts +13 -0
  101. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/src/Root.tsx +13 -0
  102. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/src/TitleCard.tsx +34 -0
  103. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/src/index.ts +4 -0
  104. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/tsconfig.json +15 -0
  105. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/README.md +54 -0
  106. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/expected.json +29 -0
  107. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/index.html +118 -0
  108. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/package.json +14 -0
  109. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/remotion.config.ts +13 -0
  110. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/src/MultiScene.tsx +105 -0
  111. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/src/Root.tsx +13 -0
  112. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/src/index.ts +4 -0
  113. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/tsconfig.json +15 -0
  114. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/setup.sh +34 -0
  115. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/README.md +85 -0
  116. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/expected.json +41 -0
  117. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/index.html +269 -0
  118. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/package.json +15 -0
  119. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/remotion.config.ts +13 -0
  120. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/Root.tsx +27 -0
  121. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/Stargazed.tsx +37 -0
  122. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/components/AnimatedNumber.tsx +23 -0
  123. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/components/StatCard.tsx +59 -0
  124. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/components/UnderlinedText.tsx +47 -0
  125. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/index.ts +4 -0
  126. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/OutroScene.tsx +18 -0
  127. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/StatsScene.tsx +34 -0
  128. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/TitleScene.tsx +55 -0
  129. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/tsconfig.json +15 -0
  130. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/README.md +51 -0
  131. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/01-use-state.tsx +29 -0
  132. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/02-use-effect-deps.tsx +29 -0
  133. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/03-async-metadata.tsx +39 -0
  134. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/04-third-party-react.tsx +30 -0
  135. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/05-lambda-config.tsx +38 -0
  136. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/06-warnings-only.tsx +36 -0
  137. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/07-custom-hook.tsx +28 -0
  138. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/08-mixed.tsx +41 -0
  139. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/expected.json +85 -0
  140. package/.agents/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/validate.sh +110 -0
  141. package/.agents/skills/remotion-to-hyperframes/references/api-map.md +142 -0
  142. package/.agents/skills/remotion-to-hyperframes/references/escape-hatch.md +115 -0
  143. package/.agents/skills/remotion-to-hyperframes/references/eval.md +140 -0
  144. package/.agents/skills/remotion-to-hyperframes/references/fonts.md +112 -0
  145. package/.agents/skills/remotion-to-hyperframes/references/limitations.md +136 -0
  146. package/.agents/skills/remotion-to-hyperframes/references/lottie.md +121 -0
  147. package/.agents/skills/remotion-to-hyperframes/references/media.md +149 -0
  148. package/.agents/skills/remotion-to-hyperframes/references/parameters.md +167 -0
  149. package/.agents/skills/remotion-to-hyperframes/references/sequencing.md +195 -0
  150. package/.agents/skills/remotion-to-hyperframes/references/timing.md +165 -0
  151. package/.agents/skills/remotion-to-hyperframes/references/transitions.md +114 -0
  152. package/.agents/skills/remotion-to-hyperframes/scripts/.gitkeep +0 -0
  153. package/.agents/skills/remotion-to-hyperframes/scripts/frame_strip.sh +107 -0
  154. package/.agents/skills/remotion-to-hyperframes/scripts/lint_source.py +358 -0
  155. package/.agents/skills/remotion-to-hyperframes/scripts/render_diff.sh +103 -0
  156. package/.agents/skills/remotion-to-hyperframes/scripts/tests/fixtures/blocker.tsx +50 -0
  157. package/.agents/skills/remotion-to-hyperframes/scripts/tests/fixtures/clean.tsx +46 -0
  158. package/.agents/skills/remotion-to-hyperframes/scripts/tests/smoke.sh +90 -0
  159. package/.agents/skills/seo-audit/SKILL.md +497 -0
  160. package/.agents/skills/seo-audit/evals/evals.json +136 -0
  161. package/.agents/skills/seo-audit/references/ai-writing-detection.md +200 -0
  162. package/.agents/skills/seo-audit/references/international-seo.md +230 -0
  163. package/README.md +4 -2
  164. package/SDK.md +64 -1
  165. package/dist/agents/coding.agent.d.ts +558 -0
  166. package/dist/agents/coding.agent.d.ts.map +1 -1
  167. package/dist/agents/coding.agent.js +8 -0
  168. package/dist/agents/coding.agent.js.map +1 -1
  169. package/dist/agents/developer-helper.agent.d.ts +712 -0
  170. package/dist/agents/developer-helper.agent.d.ts.map +1 -1
  171. package/dist/agents/developer-helper.agent.js +6 -0
  172. package/dist/agents/developer-helper.agent.js.map +1 -1
  173. package/dist/agents/docs-research.agent.d.ts +8 -0
  174. package/dist/agents/docs-research.agent.d.ts.map +1 -1
  175. package/dist/agents/finance.agent.d.ts +8 -0
  176. package/dist/agents/finance.agent.d.ts.map +1 -1
  177. package/dist/agents/manager.d.ts +837 -2
  178. package/dist/agents/manager.d.ts.map +1 -1
  179. package/dist/agents/manager.js +28 -0
  180. package/dist/agents/manager.js.map +1 -1
  181. package/dist/agents/security.agent.d.ts +165 -3
  182. package/dist/agents/security.agent.d.ts.map +1 -1
  183. package/dist/agents/security.agent.js +3 -0
  184. package/dist/agents/security.agent.js.map +1 -1
  185. package/dist/agents/swarm/main.js +1 -1
  186. package/dist/agents/swarm/main.js.map +1 -1
  187. package/dist/agents/swarm/registry.d.ts.map +1 -1
  188. package/dist/agents/swarm/registry.js +232 -26
  189. package/dist/agents/swarm/registry.js.map +1 -1
  190. package/dist/cli/doctor.d.ts +14 -0
  191. package/dist/cli/doctor.d.ts.map +1 -1
  192. package/dist/cli/doctor.js +91 -0
  193. package/dist/cli/doctor.js.map +1 -1
  194. package/dist/cli/menu.d.ts.map +1 -1
  195. package/dist/cli/menu.js +102 -0
  196. package/dist/cli/menu.js.map +1 -1
  197. package/dist/cli/setup.d.ts +10 -0
  198. package/dist/cli/setup.d.ts.map +1 -1
  199. package/dist/cli/setup.js +178 -0
  200. package/dist/cli/setup.js.map +1 -1
  201. package/dist/cli/swarm.d.ts +1 -0
  202. package/dist/cli/swarm.d.ts.map +1 -1
  203. package/dist/cli/swarm.js +47 -8
  204. package/dist/cli/swarm.js.map +1 -1
  205. package/dist/cli/theme.d.ts +0 -24
  206. package/dist/cli/theme.d.ts.map +1 -1
  207. package/dist/cli/theme.js +6 -2
  208. package/dist/cli/theme.js.map +1 -1
  209. package/dist/config/env.d.ts +10 -0
  210. package/dist/config/env.d.ts.map +1 -1
  211. package/dist/config/env.js +38 -17
  212. package/dist/config/env.js.map +1 -1
  213. package/dist/index.js +96 -5
  214. package/dist/index.js.map +1 -1
  215. package/dist/jobs/trigger-orchestrator.d.ts +5 -1
  216. package/dist/jobs/trigger-orchestrator.d.ts.map +1 -1
  217. package/dist/jobs/trigger-orchestrator.js +29 -9
  218. package/dist/jobs/trigger-orchestrator.js.map +1 -1
  219. package/dist/jobs/trigger-router.d.ts.map +1 -1
  220. package/dist/jobs/trigger-router.js +3 -2
  221. package/dist/jobs/trigger-router.js.map +1 -1
  222. package/dist/memory/corporate-wiki.d.ts +15 -0
  223. package/dist/memory/corporate-wiki.d.ts.map +1 -0
  224. package/dist/memory/corporate-wiki.js +152 -0
  225. package/dist/memory/corporate-wiki.js.map +1 -0
  226. package/dist/memory/scratchpad.d.ts +2 -0
  227. package/dist/memory/scratchpad.d.ts.map +1 -1
  228. package/dist/memory/scratchpad.js +27 -0
  229. package/dist/memory/scratchpad.js.map +1 -1
  230. package/dist/observability/doctor.d.ts.map +1 -1
  231. package/dist/observability/doctor.js +12 -4
  232. package/dist/observability/doctor.js.map +1 -1
  233. package/dist/observability/traces.d.ts +72 -0
  234. package/dist/observability/traces.d.ts.map +1 -0
  235. package/dist/observability/traces.js +1134 -0
  236. package/dist/observability/traces.js.map +1 -0
  237. package/dist/runtime/swarm.d.ts +1 -1
  238. package/dist/runtime/swarm.d.ts.map +1 -1
  239. package/dist/runtime/swarm.js +54 -25
  240. package/dist/runtime/swarm.js.map +1 -1
  241. package/dist/safety/approvals.d.ts +2 -2
  242. package/dist/safety/approvals.d.ts.map +1 -1
  243. package/dist/safety/approvals.js +47 -1
  244. package/dist/safety/approvals.js.map +1 -1
  245. package/dist/safety/redaction.d.ts.map +1 -1
  246. package/dist/safety/redaction.js +10 -0
  247. package/dist/safety/redaction.js.map +1 -1
  248. package/dist/tools/cloud.tool.d.ts +394 -0
  249. package/dist/tools/cloud.tool.d.ts.map +1 -0
  250. package/dist/tools/cloud.tool.js +784 -0
  251. package/dist/tools/cloud.tool.js.map +1 -0
  252. package/dist/tools/computer-use.tool.d.ts +2 -2
  253. package/dist/tools/corporate-wiki.tool.d.ts +22 -0
  254. package/dist/tools/corporate-wiki.tool.d.ts.map +1 -0
  255. package/dist/tools/corporate-wiki.tool.js +43 -0
  256. package/dist/tools/corporate-wiki.tool.js.map +1 -0
  257. package/dist/tools/devops.tool.d.ts +162 -0
  258. package/dist/tools/devops.tool.d.ts.map +1 -0
  259. package/dist/tools/devops.tool.js +377 -0
  260. package/dist/tools/devops.tool.js.map +1 -0
  261. package/dist/tools/multimedia.tool.d.ts +126 -0
  262. package/dist/tools/multimedia.tool.d.ts.map +1 -0
  263. package/dist/tools/multimedia.tool.js +533 -0
  264. package/dist/tools/multimedia.tool.js.map +1 -0
  265. package/dist/tools/osint.tool.d.ts +6 -6
  266. package/dist/tools/sandbox-dev.tool.d.ts +15 -0
  267. package/dist/tools/sandbox-dev.tool.d.ts.map +1 -0
  268. package/dist/tools/sandbox-dev.tool.js +146 -0
  269. package/dist/tools/sandbox-dev.tool.js.map +1 -0
  270. package/dist/tools/scratchpad.tool.d.ts +8 -0
  271. package/dist/tools/scratchpad.tool.d.ts.map +1 -1
  272. package/dist/tools/scratchpad.tool.js +40 -1
  273. package/dist/tools/scratchpad.tool.js.map +1 -1
  274. package/dist/tools/setup-assistant.tool.d.ts +1 -1
  275. package/dist/tools/swarm-ops.tool.d.ts +14 -0
  276. package/dist/tools/swarm-ops.tool.d.ts.map +1 -1
  277. package/dist/tools/swarm-ops.tool.js +47 -0
  278. package/dist/tools/swarm-ops.tool.js.map +1 -1
  279. package/dist/tools/sysops.tool.d.ts +157 -0
  280. package/dist/tools/sysops.tool.d.ts.map +1 -0
  281. package/dist/tools/sysops.tool.js +643 -0
  282. package/dist/tools/sysops.tool.js.map +1 -0
  283. package/dist/voice/deepgram.d.ts.map +1 -1
  284. package/dist/voice/deepgram.js +30 -2
  285. package/dist/voice/deepgram.js.map +1 -1
  286. package/package.json +8 -1
  287. package/scripts/release-github.mjs +23 -16
@@ -0,0 +1,533 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { existsSync } from 'node:fs';
3
+ import { readFile } from 'node:fs/promises';
4
+ import { promisify } from 'node:util';
5
+ import path from 'node:path';
6
+ import { tool } from 'ai';
7
+ import { z } from 'zod';
8
+ import { emitProgress } from '../runtime/progress.js';
9
+ import { resolveWorkspaceRoot } from '../workspace/paths.js';
10
+ import { env } from '../config/env.js';
11
+ const execFileAsync = promisify(execFile);
12
+ async function commandExists(command) {
13
+ const probe = process.platform === 'win32' ? 'where.exe' : 'which';
14
+ try {
15
+ await execFileAsync(probe, [command], { windowsHide: true, timeout: 5000 });
16
+ return true;
17
+ }
18
+ catch {
19
+ return false;
20
+ }
21
+ }
22
+ export const multimediaTools = {
23
+ transcodeVideo: tool({
24
+ description: 'Process and transcode local video files using FFmpeg (resize, adjust FPS, trim duration, change video codec). Works on Windows, macOS, and Linux.',
25
+ inputSchema: z.object({
26
+ inputPath: z.string().min(1).describe('Relative or absolute path to the input video file in the workspace.'),
27
+ outputPath: z.string().min(1).describe('Relative or absolute path to save the output processed video file in the workspace.'),
28
+ resolution: z.string().optional().describe('Output resolution (e.g., "1280x720", "640x480", "1920x1080").'),
29
+ fps: z.number().int().min(1).max(120).optional().describe('Frame rate for output video (e.g., 24, 30, 60).'),
30
+ durationSeconds: z.number().min(0.5).optional().describe('Duration to trim video to, in seconds.'),
31
+ codec: z.string().optional().describe('Video codec to use (e.g., "libx264", "libx265", "copy"). Default is libx264.'),
32
+ }),
33
+ execute: async ({ inputPath, outputPath, resolution, fps, durationSeconds, codec }) => {
34
+ emitProgress({ type: 'tool:start', label: 'Transcoding video', detail: inputPath });
35
+ const hasFfmpeg = await commandExists('ffmpeg');
36
+ if (!hasFfmpeg) {
37
+ emitProgress({ type: 'tool:error', label: 'Transcode failed', detail: 'FFmpeg not found' });
38
+ return { error: 'FFmpeg is not installed or available on your system PATH.' };
39
+ }
40
+ const root = resolveWorkspaceRoot();
41
+ const resolvedInput = path.isAbsolute(inputPath) ? inputPath : path.join(root, inputPath);
42
+ const resolvedOutput = path.isAbsolute(outputPath) ? outputPath : path.join(root, outputPath);
43
+ if (!existsSync(resolvedInput)) {
44
+ emitProgress({ type: 'tool:error', label: 'Transcode failed', detail: 'Input file not found' });
45
+ return { error: `Input video file not found at path: ${inputPath}` };
46
+ }
47
+ // Ensure directory of output exists
48
+ const outputDir = path.dirname(resolvedOutput);
49
+ if (!existsSync(outputDir)) {
50
+ const fs = await import('node:fs/promises');
51
+ await fs.mkdir(outputDir, { recursive: true });
52
+ }
53
+ try {
54
+ const args = ['-y', '-i', resolvedInput];
55
+ if (codec) {
56
+ args.push('-vcodec', codec);
57
+ }
58
+ else {
59
+ args.push('-vcodec', 'libx264');
60
+ }
61
+ if (resolution) {
62
+ args.push('-s', resolution);
63
+ }
64
+ if (fps) {
65
+ args.push('-r', String(fps));
66
+ }
67
+ if (durationSeconds) {
68
+ args.push('-t', String(durationSeconds));
69
+ }
70
+ args.push(resolvedOutput);
71
+ await execFileAsync('ffmpeg', args, { windowsHide: true, timeout: 120000 });
72
+ emitProgress({ type: 'tool:end', label: 'Transcode complete', detail: outputPath });
73
+ return {
74
+ success: true,
75
+ inputPath,
76
+ outputPath: resolvedOutput,
77
+ };
78
+ }
79
+ catch (error) {
80
+ emitProgress({ type: 'tool:error', label: 'Transcode failed', detail: error.message });
81
+ return {
82
+ success: false,
83
+ error: 'Video transcoding failed.',
84
+ rawError: error.message,
85
+ };
86
+ }
87
+ },
88
+ }),
89
+ extractAudio: tool({
90
+ description: 'Extract the audio track from a local video file as an MP3 audio file using FFmpeg. Works on Windows, macOS, and Linux.',
91
+ inputSchema: z.object({
92
+ videoPath: z.string().min(1).describe('Relative or absolute path to the input video file in the workspace.'),
93
+ audioOutputPath: z.string().min(1).describe('Relative or absolute path to save the extracted MP3 file in the workspace.'),
94
+ }),
95
+ execute: async ({ videoPath, audioOutputPath }) => {
96
+ emitProgress({ type: 'tool:start', label: 'Extracting audio', detail: videoPath });
97
+ const hasFfmpeg = await commandExists('ffmpeg');
98
+ if (!hasFfmpeg) {
99
+ emitProgress({ type: 'tool:error', label: 'Extraction failed', detail: 'FFmpeg not found' });
100
+ return { error: 'FFmpeg is not installed or available on your system PATH.' };
101
+ }
102
+ const root = resolveWorkspaceRoot();
103
+ const resolvedVideo = path.isAbsolute(videoPath) ? videoPath : path.join(root, videoPath);
104
+ const resolvedAudio = path.isAbsolute(audioOutputPath) ? audioOutputPath : path.join(root, audioOutputPath);
105
+ if (!existsSync(resolvedVideo)) {
106
+ emitProgress({ type: 'tool:error', label: 'Extraction failed', detail: 'Input file not found' });
107
+ return { error: `Input video file not found at path: ${videoPath}` };
108
+ }
109
+ // Ensure directory of output exists
110
+ const outputDir = path.dirname(resolvedAudio);
111
+ if (!existsSync(outputDir)) {
112
+ const fs = await import('node:fs/promises');
113
+ await fs.mkdir(outputDir, { recursive: true });
114
+ }
115
+ try {
116
+ // -vn disables video, -acodec libmp3lame encodes to mp3, -q:a 2 is high quality variable bitrate (around 190 kbps)
117
+ const args = ['-y', '-i', resolvedVideo, '-vn', '-acodec', 'libmp3lame', '-q:a', '2', resolvedAudio];
118
+ await execFileAsync('ffmpeg', args, { windowsHide: true, timeout: 60000 });
119
+ emitProgress({ type: 'tool:end', label: 'Audio extraction complete', detail: audioOutputPath });
120
+ return {
121
+ success: true,
122
+ videoPath,
123
+ audioOutputPath: resolvedAudio,
124
+ };
125
+ }
126
+ catch (error) {
127
+ emitProgress({ type: 'tool:error', label: 'Extraction failed', detail: error.message });
128
+ return {
129
+ success: false,
130
+ error: 'Audio extraction failed.',
131
+ rawError: error.message,
132
+ };
133
+ }
134
+ },
135
+ }),
136
+ speechToText: tool({
137
+ description: 'Transcribe a local audio file (WAV, MP3, M4A, etc.) to text using Deepgram or OpenAI Whisper APIs. Works on Windows, macOS, and Linux.',
138
+ inputSchema: z.object({
139
+ audioPath: z.string().min(1).describe('Relative or absolute path to the local audio file in the workspace.'),
140
+ language: z.string().optional().describe('Optional language tag (e.g., "en", "es", "fr").'),
141
+ }),
142
+ execute: async ({ audioPath, language }) => {
143
+ emitProgress({ type: 'fetch:start', label: 'Transcribing audio', detail: audioPath });
144
+ const root = resolveWorkspaceRoot();
145
+ const resolvedAudio = path.isAbsolute(audioPath) ? audioPath : path.join(root, audioPath);
146
+ if (!existsSync(resolvedAudio)) {
147
+ emitProgress({ type: 'fetch:end', label: 'Transcription failed', detail: 'File not found' });
148
+ return { error: `Audio file not found at path: ${audioPath}` };
149
+ }
150
+ let audioBuffer;
151
+ try {
152
+ audioBuffer = await readFile(resolvedAudio);
153
+ }
154
+ catch (error) {
155
+ return { error: `Failed to read audio file: ${error.message}` };
156
+ }
157
+ // Fallback strategy 1: Deepgram API
158
+ if (env.deepgramApiKey) {
159
+ try {
160
+ const model = env.zilmateVoiceListenModel || 'nova-2';
161
+ const queryParams = new URLSearchParams({
162
+ model,
163
+ smart_format: 'true',
164
+ ...(language ? { language } : {}),
165
+ });
166
+ const url = `https://api.deepgram.com/v1/listen?${queryParams.toString()}`;
167
+ const response = await fetch(url, {
168
+ method: 'POST',
169
+ headers: {
170
+ 'Authorization': `Token ${env.deepgramApiKey}`,
171
+ 'Content-Type': 'audio/wav',
172
+ },
173
+ body: audioBuffer,
174
+ });
175
+ if (response.ok) {
176
+ const data = (await response.json());
177
+ const transcript = data.results?.channels?.[0]?.alternatives?.[0]?.transcript || '';
178
+ const confidence = data.results?.channels?.[0]?.alternatives?.[0]?.confidence || 1.0;
179
+ emitProgress({ type: 'fetch:end', label: 'Transcription successful', detail: 'Deepgram' });
180
+ return {
181
+ audioPath,
182
+ provider: 'deepgram',
183
+ model,
184
+ confidence,
185
+ transcript,
186
+ };
187
+ }
188
+ else {
189
+ const errBody = await response.text().catch(() => '');
190
+ emitProgress({ type: 'tool:error', label: 'Deepgram transcribe failed', detail: `HTTP ${response.status}` });
191
+ }
192
+ }
193
+ catch (error) {
194
+ emitProgress({ type: 'tool:error', label: 'Deepgram transcribe failed', detail: error.message });
195
+ }
196
+ }
197
+ // Fallback strategy 2: OpenAI Whisper API if standard OPENAI_API_KEY is present
198
+ if (process.env.OPENAI_API_KEY) {
199
+ try {
200
+ // Build multipart form-data request manually to avoid extra dependencies
201
+ const boundary = `----ZilMateSTTBoundary${Date.now().toString(16)}`;
202
+ const filename = path.basename(resolvedAudio);
203
+ const extension = path.extname(resolvedAudio).toLowerCase().replace('.', '');
204
+ const mimeType = ['wav', 'mp3', 'm4a', 'webm', 'ogg'].includes(extension) ? `audio/${extension}` : 'application/octet-stream';
205
+ const header = [
206
+ `--${boundary}`,
207
+ `Content-Disposition: form-data; name="model"`,
208
+ '',
209
+ 'whisper-1',
210
+ `--${boundary}`,
211
+ `Content-Disposition: form-data; name="file"; filename="${filename}"`,
212
+ `Content-Type: ${mimeType}`,
213
+ '',
214
+ '',
215
+ ].join('\r\n');
216
+ const footer = `\r\n--${boundary}--\r\n`;
217
+ const postBody = Buffer.concat([
218
+ Buffer.from(header, 'utf-8'),
219
+ audioBuffer,
220
+ Buffer.from(footer, 'utf-8'),
221
+ ]);
222
+ const response = await fetch('https://api.openai.com/v1/audio/transcriptions', {
223
+ method: 'POST',
224
+ headers: {
225
+ 'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`,
226
+ 'Content-Type': `multipart/form-data; boundary=${boundary}`,
227
+ },
228
+ body: postBody,
229
+ });
230
+ if (response.ok) {
231
+ const data = (await response.json());
232
+ emitProgress({ type: 'fetch:end', label: 'Transcription successful', detail: 'OpenAI' });
233
+ return {
234
+ audioPath,
235
+ provider: 'openai',
236
+ model: 'whisper-1',
237
+ transcript: data.text || '',
238
+ };
239
+ }
240
+ else {
241
+ const errBody = await response.text().catch(() => '');
242
+ emitProgress({ type: 'tool:error', label: 'OpenAI transcribe failed', detail: `HTTP ${response.status}` });
243
+ }
244
+ }
245
+ catch (error) {
246
+ emitProgress({ type: 'tool:error', label: 'OpenAI transcribe failed', detail: error.message });
247
+ }
248
+ }
249
+ emitProgress({ type: 'tool:error', label: 'Transcription failed', detail: 'No active API keys found' });
250
+ return {
251
+ error: 'No active transcription providers available. Please configure DEEPGRAM_API_KEY or OPENAI_API_KEY in your env to enable audio transcription.',
252
+ };
253
+ },
254
+ }),
255
+ optimizeImage: tool({
256
+ description: 'Compress, resize, or convert local images (PNG, JPEG, WEBP, GIF) to follow web optimization and SEO guidelines with optional watermark overlays. Uses local FFmpeg for lightweight, native performance.',
257
+ inputSchema: z.object({
258
+ imagePath: z.string().min(1).describe('Relative or absolute path to the local input image file in the workspace.'),
259
+ outputPath: z.string().min(1).describe('Relative or absolute path to save the optimized output image file.'),
260
+ maxWidth: z.number().int().min(10).max(8000).optional().describe('Maximum width constraint (maintains aspect ratio).'),
261
+ maxHeight: z.number().int().min(10).max(8000).optional().describe('Maximum height constraint (maintains aspect ratio).'),
262
+ quality: z.number().int().min(1).max(100).optional().default(80).describe('Optimization quality (1-100). Default is 80.'),
263
+ format: z.enum(['webp', 'jpeg', 'png']).optional().describe('Target image format. If not specified, keeps the original format.'),
264
+ watermarkText: z.string().optional().describe('Optional custom text watermark to overlay on the bottom-right corner of the image.'),
265
+ }),
266
+ execute: async ({ imagePath, outputPath, maxWidth, maxHeight, quality, format, watermarkText }) => {
267
+ emitProgress({ type: 'tool:start', label: 'Optimizing image', detail: imagePath });
268
+ const hasFfmpeg = await commandExists('ffmpeg');
269
+ if (!hasFfmpeg) {
270
+ emitProgress({ type: 'tool:error', label: 'Optimize failed', detail: 'FFmpeg not found' });
271
+ return { error: 'FFmpeg is not installed or available on your system PATH.' };
272
+ }
273
+ const root = resolveWorkspaceRoot();
274
+ const resolvedInput = path.isAbsolute(imagePath) ? imagePath : path.join(root, imagePath);
275
+ const resolvedOutput = path.isAbsolute(outputPath) ? outputPath : path.join(root, outputPath);
276
+ if (!existsSync(resolvedInput)) {
277
+ emitProgress({ type: 'tool:error', label: 'Optimize failed', detail: 'Input file not found' });
278
+ return { error: `Input image file not found at path: ${imagePath}` };
279
+ }
280
+ const outputDir = path.dirname(resolvedOutput);
281
+ if (!existsSync(outputDir)) {
282
+ const fs = await import('node:fs/promises');
283
+ await fs.mkdir(outputDir, { recursive: true });
284
+ }
285
+ try {
286
+ const args = ['-y', '-i', resolvedInput];
287
+ let scaleFilter = '';
288
+ if (maxWidth && maxHeight) {
289
+ scaleFilter = `scale='min(${maxWidth},iw)':'min(${maxHeight},ih)':force_original_aspect_ratio=decrease`;
290
+ }
291
+ else if (maxWidth) {
292
+ scaleFilter = `scale='min(${maxWidth},iw)':-1`;
293
+ }
294
+ else if (maxHeight) {
295
+ scaleFilter = `scale=-1:'min(${maxHeight},ih)'`;
296
+ }
297
+ let filtergraph = '';
298
+ if (scaleFilter) {
299
+ filtergraph = scaleFilter;
300
+ }
301
+ if (watermarkText) {
302
+ // Escape single quotes, backslashes, colons, and percent signs for FFmpeg's drawtext filter
303
+ const escapedWatermark = watermarkText
304
+ .replace(/\\/g, '\\\\')
305
+ .replace(/'/g, "'\\''")
306
+ .replace(/:/g, '\\:')
307
+ .replace(/%/g, '\\%');
308
+ const drawtextFilter = `drawtext=text='${escapedWatermark}':x=w-tw-15:y=h-th-15:fontsize=h/25:fontcolor=white:box=1:boxcolor=black@0.4`;
309
+ filtergraph = filtergraph ? `${filtergraph},${drawtextFilter}` : drawtextFilter;
310
+ }
311
+ if (filtergraph) {
312
+ args.push('-vf', filtergraph);
313
+ }
314
+ const ext = format || path.extname(resolvedOutput).toLowerCase().replace('.', '') || 'webp';
315
+ if (ext === 'webp') {
316
+ args.push('-quality', String(quality));
317
+ }
318
+ else if (ext === 'jpeg' || ext === 'jpg') {
319
+ const qscale = Math.max(1, Math.min(31, Math.round(31 - (quality * 30 / 100))));
320
+ args.push('-qscale:v', String(qscale));
321
+ }
322
+ else if (ext === 'png') {
323
+ const compression = Math.max(0, Math.min(9, Math.round(9 - (quality * 9 / 100))));
324
+ args.push('-compression_level', String(compression));
325
+ }
326
+ args.push(resolvedOutput);
327
+ emitProgress({ type: 'step', label: `Executing: ffmpeg ${args.join(' ')}` });
328
+ await execFileAsync('ffmpeg', args, { windowsHide: true, timeout: 20000 });
329
+ emitProgress({ type: 'tool:end', label: 'Image optimization complete', detail: outputPath });
330
+ return {
331
+ success: true,
332
+ imagePath,
333
+ outputPath: resolvedOutput,
334
+ quality,
335
+ watermarked: !!watermarkText,
336
+ };
337
+ }
338
+ catch (error) {
339
+ emitProgress({ type: 'tool:error', label: 'Optimize failed', detail: error.message });
340
+ return {
341
+ success: false,
342
+ error: 'Image optimization failed.',
343
+ rawError: error.message,
344
+ };
345
+ }
346
+ },
347
+ }),
348
+ textToSpeech: tool({
349
+ description: 'Convert written text into high-quality spoken audio (MP3) using Deepgram, OpenAI, or local offline OS synthesizers. Works on Windows, macOS, and Linux.',
350
+ inputSchema: z.object({
351
+ text: z.string().min(1).describe('The text to convert to speech.'),
352
+ outputPath: z.string().min(1).describe('Relative or absolute path to save the generated MP3 file.'),
353
+ voice: z.string().optional().describe('Optional voice name (Deepgram: "aura-asteria-en", "aura-2-thalia-en"; OpenAI: "alloy", "echo", "fable", "onyx", "nova", "shimmer").'),
354
+ }),
355
+ execute: async ({ text, outputPath, voice }) => {
356
+ emitProgress({ type: 'tool:start', label: 'Generating speech', detail: outputPath });
357
+ const root = resolveWorkspaceRoot();
358
+ const resolvedOutput = path.isAbsolute(outputPath) ? outputPath : path.join(root, outputPath);
359
+ const outputDir = path.dirname(resolvedOutput);
360
+ if (!existsSync(outputDir)) {
361
+ const fs = await import('node:fs/promises');
362
+ await fs.mkdir(outputDir, { recursive: true });
363
+ }
364
+ const { createWriteStream } = await import('node:fs');
365
+ const { pipeline } = await import('node:stream/promises');
366
+ const { Readable } = await import('node:stream');
367
+ // TIER 1: Deepgram Text-to-Speech API
368
+ if (env.deepgramApiKey) {
369
+ try {
370
+ emitProgress({ type: 'step', label: 'Generating speech using Deepgram Aura-2' });
371
+ const dgVoice = voice || env.zilmateVoiceTtsModel || 'aura-2-thalia-en';
372
+ const response = await fetch(`https://api.deepgram.com/v1/speak?model=${dgVoice}`, {
373
+ method: 'POST',
374
+ headers: {
375
+ 'Authorization': `Token ${env.deepgramApiKey}`,
376
+ 'Content-Type': 'application/json',
377
+ },
378
+ body: JSON.stringify({ text }),
379
+ });
380
+ if (response.ok) {
381
+ if (!response.body)
382
+ throw new Error('Response body is empty.');
383
+ const fileStream = createWriteStream(resolvedOutput);
384
+ await pipeline(Readable.fromWeb(response.body), fileStream);
385
+ emitProgress({ type: 'tool:end', label: 'Speech generated successfully', detail: outputPath });
386
+ return { success: true, provider: 'deepgram', model: dgVoice, outputPath: resolvedOutput };
387
+ }
388
+ else {
389
+ const errBody = await response.text().catch(() => '');
390
+ emitProgress({ type: 'step', label: 'Deepgram TTS failed', detail: `HTTP ${response.status}: ${errBody}` });
391
+ }
392
+ }
393
+ catch (error) {
394
+ emitProgress({ type: 'step', label: 'Deepgram TTS execution failed', detail: error.message });
395
+ }
396
+ }
397
+ // TIER 2: OpenAI Text-to-Speech API
398
+ if (process.env.OPENAI_API_KEY) {
399
+ try {
400
+ emitProgress({ type: 'step', label: 'Generating speech using OpenAI TTS' });
401
+ const response = await fetch('https://api.openai.com/v1/audio/speech', {
402
+ method: 'POST',
403
+ headers: {
404
+ 'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`,
405
+ 'Content-Type': 'application/json',
406
+ },
407
+ body: JSON.stringify({
408
+ model: 'tts-1',
409
+ input: text,
410
+ voice: voice || 'alloy',
411
+ }),
412
+ });
413
+ if (response.ok) {
414
+ if (!response.body)
415
+ throw new Error('Response body is empty.');
416
+ const fileStream = createWriteStream(resolvedOutput);
417
+ await pipeline(Readable.fromWeb(response.body), fileStream);
418
+ emitProgress({ type: 'tool:end', label: 'Speech generated successfully', detail: outputPath });
419
+ return { success: true, provider: 'openai', model: 'tts-1', outputPath: resolvedOutput };
420
+ }
421
+ else {
422
+ const errBody = await response.text().catch(() => '');
423
+ emitProgress({ type: 'step', label: 'OpenAI TTS failed', detail: `HTTP ${response.status}: ${errBody}` });
424
+ }
425
+ }
426
+ catch (error) {
427
+ emitProgress({ type: 'step', label: 'OpenAI TTS execution failed', detail: error.message });
428
+ }
429
+ }
430
+ // TIER 3: Local Offline Speech Synthesis Fallback
431
+ emitProgress({ type: 'step', label: 'Pivoting to offline local speech synthesis fallback' });
432
+ const platform = process.platform;
433
+ const isWin = platform === 'win32';
434
+ const isMac = platform === 'darwin';
435
+ const hasFfmpeg = await commandExists('ffmpeg');
436
+ try {
437
+ const tempWav = path.join(path.dirname(resolvedOutput), `temp-speech-${Date.now()}.wav`);
438
+ const tempAiff = path.join(path.dirname(resolvedOutput), `temp-speech-${Date.now()}.aiff`);
439
+ if (isWin) {
440
+ emitProgress({ type: 'step', label: 'Executing PowerShell SAPI offline synth' });
441
+ const psCommand = `Add-Type -AssemblyName System.Speech; $synth = New-Object System.Speech.Synthesis.SpeechSynthesizer; $synth.SetOutputToWaveFile('${tempWav}'); $synth.Speak('${text.replace(/'/g, "''").replace(/\r?\n/g, ' ')}'); $synth.Dispose();`;
442
+ await execFileAsync('powershell.exe', ['-NoProfile', '-NonInteractive', '-Command', psCommand], { windowsHide: true, timeout: 30000 });
443
+ if (existsSync(tempWav)) {
444
+ if (hasFfmpeg) {
445
+ await execFileAsync('ffmpeg', ['-y', '-i', tempWav, '-acodec', 'libmp3lame', resolvedOutput], { windowsHide: true, timeout: 15000 });
446
+ const { unlink } = await import('node:fs/promises');
447
+ await unlink(tempWav).catch(() => { });
448
+ }
449
+ else {
450
+ const { rename } = await import('node:fs/promises');
451
+ await rename(tempWav, resolvedOutput);
452
+ emitProgress({ type: 'step', label: 'Offline speech generated without FFmpeg conversion' });
453
+ }
454
+ emitProgress({ type: 'tool:end', label: 'Offline speech generated successfully (Windows SAPI)', detail: outputPath });
455
+ return { success: true, provider: 'local-offline', model: 'windows-sapi', outputPath: resolvedOutput };
456
+ }
457
+ }
458
+ else if (isMac) {
459
+ emitProgress({ type: 'step', label: 'Executing macOS say offline synth' });
460
+ await execFileAsync('say', ['-o', tempAiff, text], { timeout: 30000 });
461
+ if (existsSync(tempAiff)) {
462
+ if (hasFfmpeg) {
463
+ await execFileAsync('ffmpeg', ['-y', '-i', tempAiff, '-acodec', 'libmp3lame', resolvedOutput], { windowsHide: true, timeout: 15000 });
464
+ const { unlink } = await import('node:fs/promises');
465
+ await unlink(tempAiff).catch(() => { });
466
+ }
467
+ else {
468
+ const { rename } = await import('node:fs/promises');
469
+ await rename(tempAiff, resolvedOutput);
470
+ emitProgress({ type: 'step', label: 'Offline speech generated without FFmpeg conversion' });
471
+ }
472
+ emitProgress({ type: 'tool:end', label: 'Offline speech generated successfully (macOS say)', detail: outputPath });
473
+ return { success: true, provider: 'local-offline', model: 'macos-say', outputPath: resolvedOutput };
474
+ }
475
+ }
476
+ else {
477
+ emitProgress({ type: 'step', label: 'Executing Linux espeak offline synth' });
478
+ const hasEspeak = await commandExists('espeak');
479
+ if (hasEspeak) {
480
+ await execFileAsync('espeak', ['-w', tempWav, text], { timeout: 30000 });
481
+ if (existsSync(tempWav)) {
482
+ if (hasFfmpeg) {
483
+ await execFileAsync('ffmpeg', ['-y', '-i', tempWav, '-acodec', 'libmp3lame', resolvedOutput], { windowsHide: true, timeout: 15000 });
484
+ const { unlink } = await import('node:fs/promises');
485
+ await unlink(tempWav).catch(() => { });
486
+ }
487
+ else {
488
+ const { rename } = await import('node:fs/promises');
489
+ await rename(tempWav, resolvedOutput);
490
+ }
491
+ emitProgress({ type: 'tool:end', label: 'Offline speech generated successfully (Linux espeak)', detail: outputPath });
492
+ return { success: true, provider: 'local-offline', model: 'linux-espeak', outputPath: resolvedOutput };
493
+ }
494
+ }
495
+ else {
496
+ const hasFestival = await commandExists('festival');
497
+ if (hasFestival) {
498
+ const hasText2wave = await commandExists('text2wave');
499
+ if (hasText2wave) {
500
+ const tempTxt = path.join(path.dirname(resolvedOutput), `temp-speech-${Date.now()}.txt`);
501
+ const { writeFile: writeTxtFile, unlink: deleteTxtFile } = await import('node:fs/promises');
502
+ await writeTxtFile(tempTxt, text, 'utf8');
503
+ await execFileAsync('text2wave', [tempTxt, '-o', tempWav], { timeout: 30000 });
504
+ await deleteTxtFile(tempTxt).catch(() => { });
505
+ if (existsSync(tempWav)) {
506
+ if (hasFfmpeg) {
507
+ await execFileAsync('ffmpeg', ['-y', '-i', tempWav, '-acodec', 'libmp3lame', resolvedOutput], { windowsHide: true, timeout: 15000 });
508
+ const { unlink } = await import('node:fs/promises');
509
+ await unlink(tempWav).catch(() => { });
510
+ }
511
+ else {
512
+ const { rename } = await import('node:fs/promises');
513
+ await rename(tempWav, resolvedOutput);
514
+ }
515
+ emitProgress({ type: 'tool:end', label: 'Offline speech generated successfully (Linux festival)', detail: outputPath });
516
+ return { success: true, provider: 'local-offline', model: 'linux-festival', outputPath: resolvedOutput };
517
+ }
518
+ }
519
+ }
520
+ }
521
+ }
522
+ }
523
+ catch (offlineError) {
524
+ emitProgress({ type: 'step', label: 'Offline synthesis failed', detail: offlineError.message });
525
+ }
526
+ emitProgress({ type: 'tool:error', label: 'Speech generation failed', detail: 'No providers or offline fallbacks succeeded' });
527
+ return {
528
+ error: 'No active speech providers available, and local offline speech synthesis failed or is not configured on this OS.',
529
+ };
530
+ },
531
+ }),
532
+ };
533
+ //# sourceMappingURL=multimedia.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multimedia.tool.js","sourceRoot":"","sources":["../../src/tools/multimedia.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,KAAK,UAAU,aAAa,CAAC,OAAe;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,cAAc,EAAE,IAAI,CAAC;QACnB,WAAW,EAAE,mJAAmJ;QAChK,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qEAAqE,CAAC;YAC5G,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qFAAqF,CAAC;YAC7H,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;YAC3G,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;YAC5G,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YAClG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8EAA8E,CAAC;SACtH,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,EAAE;YACpF,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAEpF,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC5F,OAAO,EAAE,KAAK,EAAE,2DAA2D,EAAE,CAAC;YAChF,CAAC;YAED,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;YACpC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC1F,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAE9F,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC/B,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;gBAChG,OAAO,EAAE,KAAK,EAAE,uCAAuC,SAAS,EAAE,EAAE,CAAC;YACvE,CAAC;YAED,oCAAoC;YACpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBAC5C,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;gBAEzC,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAClC,CAAC;gBAED,IAAI,UAAU,EAAE,CAAC;oBACf,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAC9B,CAAC;gBAED,IAAI,GAAG,EAAE,CAAC;oBACR,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/B,CAAC;gBAED,IAAI,eAAe,EAAE,CAAC;oBACpB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;gBAC3C,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAE1B,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;gBAE5E,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;gBACpF,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,SAAS;oBACT,UAAU,EAAE,cAAc;iBAC3B,CAAC;YACJ,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACvF,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,2BAA2B;oBAClC,QAAQ,EAAE,KAAK,CAAC,OAAO;iBACxB,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;IAEF,YAAY,EAAE,IAAI,CAAC;QACjB,WAAW,EAAE,wHAAwH;QACrI,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qEAAqE,CAAC;YAC5G,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4EAA4E,CAAC;SAC1H,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE;YAChD,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAEnF,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC7F,OAAO,EAAE,KAAK,EAAE,2DAA2D,EAAE,CAAC;YAChF,CAAC;YAED,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;YACpC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC1F,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;YAE5G,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC/B,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;gBACjG,OAAO,EAAE,KAAK,EAAE,uCAAuC,SAAS,EAAE,EAAE,CAAC;YACvE,CAAC;YAED,oCAAoC;YACpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC9C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBAC5C,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,CAAC;gBACH,mHAAmH;gBACnH,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;gBAErG,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAE3E,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;gBAChG,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,SAAS;oBACT,eAAe,EAAE,aAAa;iBAC/B,CAAC;YACJ,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACxF,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,0BAA0B;oBACjC,QAAQ,EAAE,KAAK,CAAC,OAAO;iBACxB,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;IAEF,YAAY,EAAE,IAAI,CAAC;QACjB,WAAW,EAAE,wIAAwI;QACrJ,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qEAAqE,CAAC;YAC5G,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;SAC5F,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;YACzC,YAAY,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAEtF,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;YACpC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAE1F,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC/B,YAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBAC7F,OAAO,EAAE,KAAK,EAAE,iCAAiC,SAAS,EAAE,EAAE,CAAC;YACjE,CAAC;YAED,IAAI,WAAmB,CAAC;YACxB,IAAI,CAAC;gBACH,WAAW,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC9C,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO,EAAE,KAAK,EAAE,8BAA8B,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAClE,CAAC;YAED,oCAAoC;YACpC,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,GAAG,CAAC,uBAAuB,IAAI,QAAQ,CAAC;oBACtD,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;wBACtC,KAAK;wBACL,YAAY,EAAE,MAAM;wBACpB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAClC,CAAC,CAAC;oBAEH,MAAM,GAAG,GAAG,sCAAsC,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;oBAC3E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;wBAChC,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE;4BACP,eAAe,EAAE,SAAS,GAAG,CAAC,cAAc,EAAE;4BAC9C,cAAc,EAAE,WAAW;yBAC5B;wBACD,IAAI,EAAE,WAAW;qBAClB,CAAC,CAAC;oBAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;wBAChB,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAQ,CAAC;wBAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,IAAI,EAAE,CAAC;wBACpF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,IAAI,GAAG,CAAC;wBAErF,YAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;wBAC3F,OAAO;4BACL,SAAS;4BACT,QAAQ,EAAE,UAAU;4BACpB,KAAK;4BACL,UAAU;4BACV,UAAU;yBACX,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;wBACtD,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,4BAA4B,EAAE,MAAM,EAAE,QAAQ,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBAC/G,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,4BAA4B,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACnG,CAAC;YACH,CAAC;YAED,gFAAgF;YAChF,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,yEAAyE;oBACzE,MAAM,QAAQ,GAAG,yBAAyB,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;oBACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;oBAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC7E,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC;oBAE9H,MAAM,MAAM,GAAG;wBACb,KAAK,QAAQ,EAAE;wBACf,8CAA8C;wBAC9C,EAAE;wBACF,WAAW;wBACX,KAAK,QAAQ,EAAE;wBACf,0DAA0D,QAAQ,GAAG;wBACrE,iBAAiB,QAAQ,EAAE;wBAC3B,EAAE;wBACF,EAAE;qBACH,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAEf,MAAM,MAAM,GAAG,SAAS,QAAQ,QAAQ,CAAC;oBAEzC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;wBAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;wBAC5B,WAAW;wBACX,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;qBAC7B,CAAC,CAAC;oBAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gDAAgD,EAAE;wBAC7E,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE;4BACP,eAAe,EAAE,UAAU,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE;4BACvD,cAAc,EAAE,iCAAiC,QAAQ,EAAE;yBAC5D;wBACD,IAAI,EAAE,QAAQ;qBACf,CAAC,CAAC;oBAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;wBAChB,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAQ,CAAC;wBAC5C,YAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;wBACzF,OAAO;4BACL,SAAS;4BACT,QAAQ,EAAE,QAAQ;4BAClB,KAAK,EAAE,WAAW;4BAClB,UAAU,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;yBAC5B,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;wBACtD,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,QAAQ,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBAC7G,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACjG,CAAC;YACH,CAAC;YAED,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC,CAAC;YACxG,OAAO;gBACL,KAAK,EAAE,6IAA6I;aACrJ,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,aAAa,EAAE,IAAI,CAAC;QAClB,WAAW,EAAE,yMAAyM;QACtN,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2EAA2E,CAAC;YAClH,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oEAAoE,CAAC;YAC5G,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;YACtH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;YACxH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YACzH,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;YAChI,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oFAAoF,CAAC;SACpI,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE;YAChG,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAEnF,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3F,OAAO,EAAE,KAAK,EAAE,2DAA2D,EAAE,CAAC;YAChF,CAAC;YAED,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;YACpC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC1F,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAE9F,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC/B,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;gBAC/F,OAAO,EAAE,KAAK,EAAE,uCAAuC,SAAS,EAAE,EAAE,CAAC;YACvE,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBAC5C,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;gBAEzC,IAAI,WAAW,GAAG,EAAE,CAAC;gBACrB,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;oBAC1B,WAAW,GAAG,cAAc,QAAQ,cAAc,SAAS,4CAA4C,CAAC;gBAC1G,CAAC;qBAAM,IAAI,QAAQ,EAAE,CAAC;oBACpB,WAAW,GAAG,cAAc,QAAQ,UAAU,CAAC;gBACjD,CAAC;qBAAM,IAAI,SAAS,EAAE,CAAC;oBACrB,WAAW,GAAG,iBAAiB,SAAS,OAAO,CAAC;gBAClD,CAAC;gBAED,IAAI,WAAW,GAAG,EAAE,CAAC;gBACrB,IAAI,WAAW,EAAE,CAAC;oBAChB,WAAW,GAAG,WAAW,CAAC;gBAC5B,CAAC;gBAED,IAAI,aAAa,EAAE,CAAC;oBAClB,4FAA4F;oBAC5F,MAAM,gBAAgB,GAAG,aAAa;yBACnC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;yBACtB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;yBACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;yBACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBAExB,MAAM,cAAc,GAAG,kBAAkB,gBAAgB,8EAA8E,CAAC;oBACxI,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;gBAClF,CAAC;gBAED,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBAChC,CAAC;gBAED,MAAM,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC;gBAE5F,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;oBACnB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBACzC,CAAC;qBAAM,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;oBAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBACzC,CAAC;qBAAM,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;oBACzB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClF,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;gBACvD,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAE1B,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;gBAE7E,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAE3E,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,6BAA6B,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC7F,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,SAAS;oBACT,UAAU,EAAE,cAAc;oBAC1B,OAAO;oBACP,WAAW,EAAE,CAAC,CAAC,aAAa;iBAC7B,CAAC;YACJ,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACtF,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,4BAA4B;oBACnC,QAAQ,EAAE,KAAK,CAAC,OAAO;iBACxB,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;IAEF,YAAY,EAAE,IAAI,CAAC;QACjB,WAAW,EAAE,yJAAyJ;QACtK,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YAClE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2DAA2D,CAAC;YACnG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qIAAqI,CAAC;SAC7K,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE;YAC7C,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;YAErF,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;YACpC,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAE9F,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBAC5C,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACtD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAC1D,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAEjD,sCAAsC;YACtC,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC;oBACH,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC,CAAC;oBACjF,MAAM,OAAO,GAAG,KAAK,IAAI,GAAG,CAAC,oBAAoB,IAAI,kBAAkB,CAAC;oBACxE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,2CAA2C,OAAO,EAAE,EAAE;wBACjF,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE;4BACP,eAAe,EAAE,SAAS,GAAG,CAAC,cAAc,EAAE;4BAC9C,cAAc,EAAE,kBAAkB;yBACnC;wBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;qBAC/B,CAAC,CAAC;oBAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;wBAChB,IAAI,CAAC,QAAQ,CAAC,IAAI;4BAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;wBAC/D,MAAM,UAAU,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;wBACrD,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAW,CAAC,EAAE,UAAU,CAAC,CAAC;wBAEnE,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,+BAA+B,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;wBAC/F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;oBAC7F,CAAC;yBAAM,CAAC;wBACN,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;wBACtD,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,QAAQ,QAAQ,CAAC,MAAM,KAAK,OAAO,EAAE,EAAE,CAAC,CAAC;oBAC9G,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,+BAA+B,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChG,CAAC;YACH,CAAC;YAED,oCAAoC;YACpC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC,CAAC;oBAC5E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,wCAAwC,EAAE;wBACrE,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE;4BACP,eAAe,EAAE,UAAU,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE;4BACvD,cAAc,EAAE,kBAAkB;yBACnC;wBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,OAAO;4BACd,KAAK,EAAE,IAAI;4BACX,KAAK,EAAE,KAAK,IAAI,OAAO;yBACxB,CAAC;qBACH,CAAC,CAAC;oBAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;wBAChB,IAAI,CAAC,QAAQ,CAAC,IAAI;4BAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;wBAC/D,MAAM,UAAU,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;wBACrD,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAW,CAAC,EAAE,UAAU,CAAC,CAAC;wBAEnE,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,+BAA+B,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;wBAC/F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;oBAC3F,CAAC;yBAAM,CAAC;wBACN,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;wBACtD,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,QAAQ,CAAC,MAAM,KAAK,OAAO,EAAE,EAAE,CAAC,CAAC;oBAC5G,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,6BAA6B,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9F,CAAC;YACH,CAAC;YAED,kDAAkD;YAClD,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,qDAAqD,EAAE,CAAC,CAAC;YAC7F,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAClC,MAAM,KAAK,GAAG,QAAQ,KAAK,OAAO,CAAC;YACnC,MAAM,KAAK,GAAG,QAAQ,KAAK,QAAQ,CAAC;YACpC,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;YAEhD,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACzF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAE3F,IAAI,KAAK,EAAE,CAAC;oBACV,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC,CAAC;oBACjF,MAAM,SAAS,GAAG,oIAAoI,OAAO,qBAAqB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,uBAAuB,CAAC;oBACzP,MAAM,aAAa,CAAC,gBAAgB,EAAE,CAAC,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;oBAEvI,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;wBACxB,IAAI,SAAS,EAAE,CAAC;4BACd,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;4BACrI,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;4BACpD,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;wBACxC,CAAC;6BAAM,CAAC;4BACN,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;4BACpD,MAAM,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;4BACtC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,oDAAoD,EAAE,CAAC,CAAC;wBAC9F,CAAC;wBACD,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,sDAAsD,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;wBACtH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;oBACzG,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,EAAE,CAAC;oBACjB,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC,CAAC;oBAC3E,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;oBAEvE,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACzB,IAAI,SAAS,EAAE,CAAC;4BACd,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;4BACtI,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;4BACpD,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;wBACzC,CAAC;6BAAM,CAAC;4BACN,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;4BACpD,MAAM,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;4BACvC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,oDAAoD,EAAE,CAAC,CAAC;wBAC9F,CAAC;wBACD,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,mDAAmD,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;wBACnH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;oBACtG,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC,CAAC;oBAC9E,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAChD,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;wBACzE,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;4BACxB,IAAI,SAAS,EAAE,CAAC;gCACd,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gCACrI,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gCACpD,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;4BACxC,CAAC;iCAAM,CAAC;gCACN,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gCACpD,MAAM,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;4BACxC,CAAC;4BACD,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,sDAAsD,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;4BACtH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;wBACzG,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,CAAC;wBACpD,IAAI,WAAW,EAAE,CAAC;4BAChB,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,CAAC;4BACtD,IAAI,YAAY,EAAE,CAAC;gCACjB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gCACzF,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gCAC5F,MAAM,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gCAC1C,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gCAC/E,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gCAC7C,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oCACxB,IAAI,SAAS,EAAE,CAAC;wCACd,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;wCACrI,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;wCACpD,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oCACxC,CAAC;yCAAM,CAAC;wCACN,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;wCACpD,MAAM,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;oCACxC,CAAC;oCACD,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,wDAAwD,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;oCACxH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;gCAC3G,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,YAAiB,EAAE,CAAC;gBAC3B,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;YAClG,CAAC;YAED,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,6CAA6C,EAAE,CAAC,CAAC;YAC/H,OAAO;gBACL,KAAK,EAAE,kHAAkH;aAC1H,CAAC;QACJ,CAAC;KACF,CAAC;CACH,CAAC"}
@@ -137,7 +137,7 @@ export declare const domainTools: {
137
137
  */
138
138
  runTheHarvester: import("ai").Tool<{
139
139
  domain: string;
140
- sources: ("google" | "baidu" | "bing" | "certspotter" | "crtsh" | "dnsdumpster" | "duckduckgo" | "github-code" | "hackertarget" | "hunter" | "linkedin" | "otx" | "securityTrails" | "shodan" | "urlscan" | "virustotal" | "yahoo" | "all")[];
140
+ sources: ("google" | "all" | "baidu" | "bing" | "certspotter" | "crtsh" | "dnsdumpster" | "duckduckgo" | "github-code" | "hackertarget" | "hunter" | "linkedin" | "otx" | "securityTrails" | "shodan" | "urlscan" | "virustotal" | "yahoo")[];
141
141
  limit: number;
142
142
  verifyDns: boolean;
143
143
  bruteForceDns: boolean;
@@ -210,7 +210,7 @@ export declare const orchestrationTools: {
210
210
  * deep → all standard + Maigret, Linkook, SpiderFoot (thorough, slow)
211
211
  */
212
212
  osintInvestigation: import("ai").Tool<{
213
- depth: "quick" | "standard" | "deep";
213
+ depth: "standard" | "quick" | "deep";
214
214
  username?: string | undefined;
215
215
  email?: string | undefined;
216
216
  phone?: string | undefined;
@@ -219,7 +219,7 @@ export declare const orchestrationTools: {
219
219
  profileUrl?: string | undefined;
220
220
  }, {
221
221
  identifiers: string[];
222
- depth: "quick" | "standard" | "deep";
222
+ depth: "standard" | "quick" | "deep";
223
223
  toolsRun: string[];
224
224
  outputFile: string;
225
225
  results: Record<string, unknown>;
@@ -235,7 +235,7 @@ export declare const osintTools: {
235
235
  * deep → all standard + Maigret, Linkook, SpiderFoot (thorough, slow)
236
236
  */
237
237
  osintInvestigation: import("ai").Tool<{
238
- depth: "quick" | "standard" | "deep";
238
+ depth: "standard" | "quick" | "deep";
239
239
  username?: string | undefined;
240
240
  email?: string | undefined;
241
241
  phone?: string | undefined;
@@ -244,7 +244,7 @@ export declare const osintTools: {
244
244
  profileUrl?: string | undefined;
245
245
  }, {
246
246
  identifiers: string[];
247
- depth: "quick" | "standard" | "deep";
247
+ depth: "standard" | "quick" | "deep";
248
248
  toolsRun: string[];
249
249
  outputFile: string;
250
250
  results: Record<string, unknown>;
@@ -290,7 +290,7 @@ export declare const osintTools: {
290
290
  */
291
291
  runTheHarvester: import("ai").Tool<{
292
292
  domain: string;
293
- sources: ("google" | "baidu" | "bing" | "certspotter" | "crtsh" | "dnsdumpster" | "duckduckgo" | "github-code" | "hackertarget" | "hunter" | "linkedin" | "otx" | "securityTrails" | "shodan" | "urlscan" | "virustotal" | "yahoo" | "all")[];
293
+ sources: ("google" | "all" | "baidu" | "bing" | "certspotter" | "crtsh" | "dnsdumpster" | "duckduckgo" | "github-code" | "hackertarget" | "hunter" | "linkedin" | "otx" | "securityTrails" | "shodan" | "urlscan" | "virustotal" | "yahoo")[];
294
294
  limit: number;
295
295
  verifyDns: boolean;
296
296
  bruteForceDns: boolean;