@harbinger-ai/harbinger 0.1.0

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 (317) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +406 -0
  3. package/agents/README.md +76 -0
  4. package/agents/_template/CONFIG.yaml +7 -0
  5. package/agents/_template/HEARTBEAT.md +59 -0
  6. package/agents/_template/IDENTITY.md +4 -0
  7. package/agents/_template/SKILLS.md +1 -0
  8. package/agents/_template/SOUL.md +25 -0
  9. package/agents/_template/TOOLS.md +3 -0
  10. package/agents/binary-reverser/CONFIG.yaml +21 -0
  11. package/agents/binary-reverser/HEARTBEAT.md +65 -0
  12. package/agents/binary-reverser/IDENTITY.md +1 -0
  13. package/agents/binary-reverser/SKILLS.md +1 -0
  14. package/agents/binary-reverser/SOUL.md +23 -0
  15. package/agents/binary-reverser/TOOLS.md +99 -0
  16. package/agents/browser-agent/CONFIG.yaml +20 -0
  17. package/agents/browser-agent/HEARTBEAT.md +79 -0
  18. package/agents/browser-agent/IDENTITY.md +5 -0
  19. package/agents/browser-agent/SKILLS.md +86 -0
  20. package/agents/browser-agent/SOUL.md +23 -0
  21. package/agents/browser-agent/TOOLS.md +186 -0
  22. package/agents/cloud-infiltrator/CONFIG.yaml +22 -0
  23. package/agents/cloud-infiltrator/HEARTBEAT.md +78 -0
  24. package/agents/cloud-infiltrator/IDENTITY.md +1 -0
  25. package/agents/cloud-infiltrator/SKILLS.md +1 -0
  26. package/agents/cloud-infiltrator/SOUL.md +23 -0
  27. package/agents/cloud-infiltrator/TOOLS.md +68 -0
  28. package/agents/coding-assistant/CONFIG.yaml +22 -0
  29. package/agents/coding-assistant/HEARTBEAT.md +57 -0
  30. package/agents/coding-assistant/IDENTITY.md +5 -0
  31. package/agents/coding-assistant/SKILLS.md +69 -0
  32. package/agents/coding-assistant/SOUL.md +60 -0
  33. package/agents/coding-assistant/TOOLS.md +168 -0
  34. package/agents/learning-agent/CONFIG.yaml +21 -0
  35. package/agents/learning-agent/HEARTBEAT.md +63 -0
  36. package/agents/learning-agent/IDENTITY.md +5 -0
  37. package/agents/learning-agent/SKILLS.md +86 -0
  38. package/agents/learning-agent/SOUL.md +77 -0
  39. package/agents/learning-agent/TOOLS.md +145 -0
  40. package/agents/maintainer/CONFIG.yaml +31 -0
  41. package/agents/maintainer/HEARTBEAT.md +28 -0
  42. package/agents/maintainer/IDENTITY.md +33 -0
  43. package/agents/maintainer/SKILLS.md +24 -0
  44. package/agents/maintainer/SOUL.md +61 -0
  45. package/agents/maintainer/TOOLS.md +29 -0
  46. package/agents/maintainer/lib/engine.js +279 -0
  47. package/agents/maintainer/lib/safe-fixer.js +183 -0
  48. package/agents/morning-brief/CONFIG.yaml +22 -0
  49. package/agents/morning-brief/HEARTBEAT.md +60 -0
  50. package/agents/morning-brief/IDENTITY.md +5 -0
  51. package/agents/morning-brief/SKILLS.md +56 -0
  52. package/agents/morning-brief/SOUL.md +64 -0
  53. package/agents/morning-brief/TOOLS.md +112 -0
  54. package/agents/osint-detective/CONFIG.yaml +24 -0
  55. package/agents/osint-detective/HEARTBEAT.md +66 -0
  56. package/agents/osint-detective/IDENTITY.md +1 -0
  57. package/agents/osint-detective/SKILLS.md +1 -0
  58. package/agents/osint-detective/SOUL.md +23 -0
  59. package/agents/osint-detective/TOOLS.md +81 -0
  60. package/agents/recon-scout/CONFIG.yaml +22 -0
  61. package/agents/recon-scout/HEARTBEAT.md +79 -0
  62. package/agents/recon-scout/IDENTITY.md +1 -0
  63. package/agents/recon-scout/SKILLS.md +1 -0
  64. package/agents/recon-scout/SOUL.md +23 -0
  65. package/agents/recon-scout/TOOLS.md +93 -0
  66. package/agents/report-writer/CONFIG.yaml +21 -0
  67. package/agents/report-writer/HEARTBEAT.md +63 -0
  68. package/agents/report-writer/IDENTITY.md +1 -0
  69. package/agents/report-writer/SKILLS.md +1 -0
  70. package/agents/report-writer/SOUL.md +23 -0
  71. package/agents/report-writer/TOOLS.md +69 -0
  72. package/agents/shared/README.md +13 -0
  73. package/agents/web-hacker/CONFIG.yaml +24 -0
  74. package/agents/web-hacker/HEARTBEAT.md +78 -0
  75. package/agents/web-hacker/IDENTITY.md +1 -0
  76. package/agents/web-hacker/SKILLS.md +1 -0
  77. package/agents/web-hacker/SOUL.md +23 -0
  78. package/agents/web-hacker/TOOLS.md +86 -0
  79. package/api/CLAUDE.md +19 -0
  80. package/api/index.js +274 -0
  81. package/bin/cli.js +620 -0
  82. package/bin/local.sh +31 -0
  83. package/bin/postinstall.js +63 -0
  84. package/config/index.js +24 -0
  85. package/config/instrumentation.js +93 -0
  86. package/drizzle/0000_initial.sql +52 -0
  87. package/drizzle/0001_bounty_and_registry.sql +82 -0
  88. package/drizzle/0002_sync_columns.sql +7 -0
  89. package/drizzle/0003_graceful_bloodscream.sql +86 -0
  90. package/drizzle/meta/0000_snapshot.json +321 -0
  91. package/drizzle/meta/0003_snapshot.json +878 -0
  92. package/drizzle/meta/_journal.json +34 -0
  93. package/drizzle/relations.ts +3 -0
  94. package/drizzle/schema.ts +145 -0
  95. package/lib/actions.js +47 -0
  96. package/lib/agents.js +166 -0
  97. package/lib/ai/agent.js +96 -0
  98. package/lib/ai/autonomous-engine.js +261 -0
  99. package/lib/ai/index.js +359 -0
  100. package/lib/ai/model-router.js +254 -0
  101. package/lib/ai/model.js +73 -0
  102. package/lib/ai/tools.js +84 -0
  103. package/lib/auth/actions.js +28 -0
  104. package/lib/auth/config.js +27 -0
  105. package/lib/auth/edge-config.js +27 -0
  106. package/lib/auth/index.js +27 -0
  107. package/lib/auth/middleware.js +53 -0
  108. package/lib/bounty/actions.js +119 -0
  109. package/lib/bounty/findings.js +64 -0
  110. package/lib/bounty/programs.js +34 -0
  111. package/lib/bounty/sync-targets.js +267 -0
  112. package/lib/bounty/targets.js +33 -0
  113. package/lib/channels/base.js +56 -0
  114. package/lib/channels/index.js +15 -0
  115. package/lib/channels/telegram.js +148 -0
  116. package/lib/chat/actions.js +288 -0
  117. package/lib/chat/api.js +135 -0
  118. package/lib/chat/components/app-sidebar.js +237 -0
  119. package/lib/chat/components/app-sidebar.jsx +289 -0
  120. package/lib/chat/components/chat-header.js +27 -0
  121. package/lib/chat/components/chat-header.jsx +37 -0
  122. package/lib/chat/components/chat-input.js +230 -0
  123. package/lib/chat/components/chat-input.jsx +228 -0
  124. package/lib/chat/components/chat-nav-context.js +11 -0
  125. package/lib/chat/components/chat-nav-context.jsx +11 -0
  126. package/lib/chat/components/chat-page.js +81 -0
  127. package/lib/chat/components/chat-page.jsx +100 -0
  128. package/lib/chat/components/chat.js +150 -0
  129. package/lib/chat/components/chat.jsx +182 -0
  130. package/lib/chat/components/chats-page.js +302 -0
  131. package/lib/chat/components/chats-page.jsx +330 -0
  132. package/lib/chat/components/crons-page.js +172 -0
  133. package/lib/chat/components/crons-page.jsx +244 -0
  134. package/lib/chat/components/enhanced-tool-call.js +103 -0
  135. package/lib/chat/components/enhanced-tool-call.jsx +139 -0
  136. package/lib/chat/components/findings-page.js +175 -0
  137. package/lib/chat/components/findings-page.jsx +214 -0
  138. package/lib/chat/components/greeting.js +22 -0
  139. package/lib/chat/components/greeting.jsx +26 -0
  140. package/lib/chat/components/icons.js +777 -0
  141. package/lib/chat/components/icons.jsx +741 -0
  142. package/lib/chat/components/index.js +26 -0
  143. package/lib/chat/components/mcp-page.js +260 -0
  144. package/lib/chat/components/mcp-page.jsx +355 -0
  145. package/lib/chat/components/message.js +289 -0
  146. package/lib/chat/components/message.jsx +315 -0
  147. package/lib/chat/components/messages.js +66 -0
  148. package/lib/chat/components/messages.jsx +77 -0
  149. package/lib/chat/components/notifications-page.js +56 -0
  150. package/lib/chat/components/notifications-page.jsx +87 -0
  151. package/lib/chat/components/page-layout.js +21 -0
  152. package/lib/chat/components/page-layout.jsx +28 -0
  153. package/lib/chat/components/registry-page.js +222 -0
  154. package/lib/chat/components/registry-page.jsx +255 -0
  155. package/lib/chat/components/settings-layout.js +40 -0
  156. package/lib/chat/components/settings-layout.jsx +54 -0
  157. package/lib/chat/components/settings-secrets-page.js +216 -0
  158. package/lib/chat/components/settings-secrets-page.jsx +264 -0
  159. package/lib/chat/components/sidebar-history-item.js +132 -0
  160. package/lib/chat/components/sidebar-history-item.jsx +113 -0
  161. package/lib/chat/components/sidebar-history.js +115 -0
  162. package/lib/chat/components/sidebar-history.jsx +157 -0
  163. package/lib/chat/components/sidebar-user-nav.js +63 -0
  164. package/lib/chat/components/sidebar-user-nav.jsx +73 -0
  165. package/lib/chat/components/status-bar.js +39 -0
  166. package/lib/chat/components/status-bar.jsx +51 -0
  167. package/lib/chat/components/swarm-page.js +157 -0
  168. package/lib/chat/components/swarm-page.jsx +210 -0
  169. package/lib/chat/components/targets-page.js +376 -0
  170. package/lib/chat/components/targets-page.jsx +389 -0
  171. package/lib/chat/components/tool-call.js +86 -0
  172. package/lib/chat/components/tool-call.jsx +104 -0
  173. package/lib/chat/components/tool-panel.js +107 -0
  174. package/lib/chat/components/tool-panel.jsx +145 -0
  175. package/lib/chat/components/triggers-page.js +153 -0
  176. package/lib/chat/components/triggers-page.jsx +221 -0
  177. package/lib/chat/components/ui/confirm-dialog.js +53 -0
  178. package/lib/chat/components/ui/confirm-dialog.jsx +57 -0
  179. package/lib/chat/components/ui/dropdown-menu.js +98 -0
  180. package/lib/chat/components/ui/dropdown-menu.jsx +116 -0
  181. package/lib/chat/components/ui/rename-dialog.js +74 -0
  182. package/lib/chat/components/ui/rename-dialog.jsx +72 -0
  183. package/lib/chat/components/ui/scroll-area.js +13 -0
  184. package/lib/chat/components/ui/scroll-area.jsx +17 -0
  185. package/lib/chat/components/ui/separator.js +21 -0
  186. package/lib/chat/components/ui/separator.jsx +18 -0
  187. package/lib/chat/components/ui/sheet.js +75 -0
  188. package/lib/chat/components/ui/sheet.jsx +95 -0
  189. package/lib/chat/components/ui/sidebar.js +227 -0
  190. package/lib/chat/components/ui/sidebar.jsx +245 -0
  191. package/lib/chat/components/ui/tooltip.js +56 -0
  192. package/lib/chat/components/ui/tooltip.jsx +66 -0
  193. package/lib/chat/components/upgrade-dialog.js +151 -0
  194. package/lib/chat/components/upgrade-dialog.jsx +170 -0
  195. package/lib/chat/utils.js +11 -0
  196. package/lib/cron.js +246 -0
  197. package/lib/db/api-keys.js +163 -0
  198. package/lib/db/chats.js +145 -0
  199. package/lib/db/index.js +52 -0
  200. package/lib/db/notifications.js +99 -0
  201. package/lib/db/schema.js +145 -0
  202. package/lib/db/update-check.js +96 -0
  203. package/lib/db/users.js +89 -0
  204. package/lib/mcp/actions.js +104 -0
  205. package/lib/mcp/client.js +79 -0
  206. package/lib/mcp/handler.js +57 -0
  207. package/lib/mcp/server.js +165 -0
  208. package/lib/paths.js +46 -0
  209. package/lib/registry/actions.js +164 -0
  210. package/lib/registry/catalog.js +137 -0
  211. package/lib/registry/tools.js +71 -0
  212. package/lib/tools/create-job.js +99 -0
  213. package/lib/tools/github.js +217 -0
  214. package/lib/tools/openai.js +35 -0
  215. package/lib/tools/telegram.js +292 -0
  216. package/lib/triggers.js +118 -0
  217. package/lib/utils/render-md.js +102 -0
  218. package/package.json +103 -0
  219. package/setup/lib/auth.mjs +81 -0
  220. package/setup/lib/env.mjs +21 -0
  221. package/setup/lib/fs-utils.mjs +20 -0
  222. package/setup/lib/github.mjs +149 -0
  223. package/setup/lib/prerequisites.mjs +155 -0
  224. package/setup/lib/prompts.mjs +267 -0
  225. package/setup/lib/providers.mjs +48 -0
  226. package/setup/lib/sync.mjs +125 -0
  227. package/setup/lib/targets.mjs +45 -0
  228. package/setup/lib/telegram-verify.mjs +63 -0
  229. package/setup/lib/telegram.mjs +76 -0
  230. package/setup/setup-telegram.mjs +264 -0
  231. package/setup/setup.mjs +842 -0
  232. package/templates/.dockerignore +5 -0
  233. package/templates/.env.example +63 -0
  234. package/templates/.github/workflows/auto-merge.yml +117 -0
  235. package/templates/.github/workflows/build-image.yml +36 -0
  236. package/templates/.github/workflows/notify-job-failed.yml +64 -0
  237. package/templates/.github/workflows/notify-pr-complete.yml +119 -0
  238. package/templates/.github/workflows/rebuild-event-handler.yml +121 -0
  239. package/templates/.github/workflows/run-job.yml +89 -0
  240. package/templates/.github/workflows/upgrade-event-handler.yml +62 -0
  241. package/templates/.gitignore.template +45 -0
  242. package/templates/.pi/extensions/env-sanitizer/index.ts +48 -0
  243. package/templates/.pi/extensions/env-sanitizer/package.json +5 -0
  244. package/templates/CLAUDE.md +29 -0
  245. package/templates/CLAUDE.md.template +307 -0
  246. package/templates/app/api/[...thepopebot]/route.js +1 -0
  247. package/templates/app/api/auth/[...nextauth]/route.js +1 -0
  248. package/templates/app/chat/[chatId]/page.js +8 -0
  249. package/templates/app/chats/page.js +7 -0
  250. package/templates/app/components/ascii-logo.jsx +10 -0
  251. package/templates/app/components/login-form.jsx +92 -0
  252. package/templates/app/components/setup-form.jsx +82 -0
  253. package/templates/app/components/theme-provider.jsx +11 -0
  254. package/templates/app/components/theme-toggle.jsx +38 -0
  255. package/templates/app/components/ui/button.jsx +21 -0
  256. package/templates/app/components/ui/card.jsx +23 -0
  257. package/templates/app/components/ui/input.jsx +10 -0
  258. package/templates/app/components/ui/label.jsx +10 -0
  259. package/templates/app/crons/page.js +5 -0
  260. package/templates/app/findings/page.js +7 -0
  261. package/templates/app/globals.css +90 -0
  262. package/templates/app/layout.js +19 -0
  263. package/templates/app/login/page.js +15 -0
  264. package/templates/app/notifications/page.js +7 -0
  265. package/templates/app/page.js +7 -0
  266. package/templates/app/settings/crons/page.js +5 -0
  267. package/templates/app/settings/layout.js +7 -0
  268. package/templates/app/settings/mcp/page.js +5 -0
  269. package/templates/app/settings/page.js +5 -0
  270. package/templates/app/settings/secrets/page.js +5 -0
  271. package/templates/app/settings/triggers/page.js +5 -0
  272. package/templates/app/stream/chat/route.js +1 -0
  273. package/templates/app/swarm/page.js +7 -0
  274. package/templates/app/targets/page.js +7 -0
  275. package/templates/app/toolbox/page.js +7 -0
  276. package/templates/app/triggers/page.js +5 -0
  277. package/templates/config/AGENT.md +34 -0
  278. package/templates/config/CRONS.json +56 -0
  279. package/templates/config/EVENT_HANDLER.md +224 -0
  280. package/templates/config/HEARTBEAT.md +3 -0
  281. package/templates/config/JOB_SUMMARY.md +130 -0
  282. package/templates/config/MCP_SERVERS.json +1 -0
  283. package/templates/config/SKILL_BUILDING_GUIDE.md +90 -0
  284. package/templates/config/SOUL.md +17 -0
  285. package/templates/config/TRIGGERS.json +58 -0
  286. package/templates/docker/event-handler/Dockerfile +20 -0
  287. package/templates/docker/event-handler/ecosystem.config.cjs +8 -0
  288. package/templates/docker/job-claude-code/Dockerfile +34 -0
  289. package/templates/docker/job-claude-code/entrypoint.sh +139 -0
  290. package/templates/docker/job-pi-coding-agent/Dockerfile +44 -0
  291. package/templates/docker/job-pi-coding-agent/entrypoint.sh +163 -0
  292. package/templates/docker-compose.yml +63 -0
  293. package/templates/instrumentation.js +6 -0
  294. package/templates/middleware.js +1 -0
  295. package/templates/next.config.mjs +3 -0
  296. package/templates/postcss.config.mjs +5 -0
  297. package/templates/skills/LICENSE +21 -0
  298. package/templates/skills/README.md +119 -0
  299. package/templates/skills/brave-search/SKILL.md +79 -0
  300. package/templates/skills/brave-search/content.js +86 -0
  301. package/templates/skills/brave-search/package-lock.json +621 -0
  302. package/templates/skills/brave-search/package.json +14 -0
  303. package/templates/skills/brave-search/search.js +199 -0
  304. package/templates/skills/browser-tools/SKILL.md +196 -0
  305. package/templates/skills/browser-tools/browser-content.js +103 -0
  306. package/templates/skills/browser-tools/browser-cookies.js +35 -0
  307. package/templates/skills/browser-tools/browser-eval.js +53 -0
  308. package/templates/skills/browser-tools/browser-hn-scraper.js +108 -0
  309. package/templates/skills/browser-tools/browser-nav.js +44 -0
  310. package/templates/skills/browser-tools/browser-pick.js +162 -0
  311. package/templates/skills/browser-tools/browser-screenshot.js +34 -0
  312. package/templates/skills/browser-tools/browser-start.js +87 -0
  313. package/templates/skills/browser-tools/package-lock.json +2556 -0
  314. package/templates/skills/browser-tools/package.json +19 -0
  315. package/templates/skills/llm-secrets/SKILL.md +34 -0
  316. package/templates/skills/llm-secrets/llm-secrets.js +33 -0
  317. package/templates/skills/modify-self/SKILL.md +12 -0
@@ -0,0 +1,621 @@
1
+ {
2
+ "name": "brave-search",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "brave-search",
9
+ "version": "1.0.0",
10
+ "license": "MIT",
11
+ "dependencies": {
12
+ "@mozilla/readability": "^0.6.0",
13
+ "jsdom": "^27.0.1",
14
+ "turndown": "^7.2.2",
15
+ "turndown-plugin-gfm": "^1.0.2"
16
+ }
17
+ },
18
+ "node_modules/@asamuzakjp/css-color": {
19
+ "version": "4.1.0",
20
+ "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.1.0.tgz",
21
+ "integrity": "sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==",
22
+ "license": "MIT",
23
+ "dependencies": {
24
+ "@csstools/css-calc": "^2.1.4",
25
+ "@csstools/css-color-parser": "^3.1.0",
26
+ "@csstools/css-parser-algorithms": "^3.0.5",
27
+ "@csstools/css-tokenizer": "^3.0.4",
28
+ "lru-cache": "^11.2.2"
29
+ }
30
+ },
31
+ "node_modules/@asamuzakjp/dom-selector": {
32
+ "version": "6.7.5",
33
+ "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.7.5.tgz",
34
+ "integrity": "sha512-Eks6dY8zau4m4wNRQjRVaKQRTalNcPcBvU1ZQ35w5kKRk1gUeNCkVLsRiATurjASTp3TKM4H10wsI50nx3NZdw==",
35
+ "license": "MIT",
36
+ "dependencies": {
37
+ "@asamuzakjp/nwsapi": "^2.3.9",
38
+ "bidi-js": "^1.0.3",
39
+ "css-tree": "^3.1.0",
40
+ "is-potential-custom-element-name": "^1.0.1",
41
+ "lru-cache": "^11.2.2"
42
+ }
43
+ },
44
+ "node_modules/@asamuzakjp/nwsapi": {
45
+ "version": "2.3.9",
46
+ "resolved": "https://registry.npmjs.org/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz",
47
+ "integrity": "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==",
48
+ "license": "MIT"
49
+ },
50
+ "node_modules/@csstools/color-helpers": {
51
+ "version": "5.1.0",
52
+ "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz",
53
+ "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==",
54
+ "funding": [
55
+ {
56
+ "type": "github",
57
+ "url": "https://github.com/sponsors/csstools"
58
+ },
59
+ {
60
+ "type": "opencollective",
61
+ "url": "https://opencollective.com/csstools"
62
+ }
63
+ ],
64
+ "license": "MIT-0",
65
+ "engines": {
66
+ "node": ">=18"
67
+ }
68
+ },
69
+ "node_modules/@csstools/css-calc": {
70
+ "version": "2.1.4",
71
+ "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz",
72
+ "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==",
73
+ "funding": [
74
+ {
75
+ "type": "github",
76
+ "url": "https://github.com/sponsors/csstools"
77
+ },
78
+ {
79
+ "type": "opencollective",
80
+ "url": "https://opencollective.com/csstools"
81
+ }
82
+ ],
83
+ "license": "MIT",
84
+ "engines": {
85
+ "node": ">=18"
86
+ },
87
+ "peerDependencies": {
88
+ "@csstools/css-parser-algorithms": "^3.0.5",
89
+ "@csstools/css-tokenizer": "^3.0.4"
90
+ }
91
+ },
92
+ "node_modules/@csstools/css-color-parser": {
93
+ "version": "3.1.0",
94
+ "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz",
95
+ "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==",
96
+ "funding": [
97
+ {
98
+ "type": "github",
99
+ "url": "https://github.com/sponsors/csstools"
100
+ },
101
+ {
102
+ "type": "opencollective",
103
+ "url": "https://opencollective.com/csstools"
104
+ }
105
+ ],
106
+ "license": "MIT",
107
+ "dependencies": {
108
+ "@csstools/color-helpers": "^5.1.0",
109
+ "@csstools/css-calc": "^2.1.4"
110
+ },
111
+ "engines": {
112
+ "node": ">=18"
113
+ },
114
+ "peerDependencies": {
115
+ "@csstools/css-parser-algorithms": "^3.0.5",
116
+ "@csstools/css-tokenizer": "^3.0.4"
117
+ }
118
+ },
119
+ "node_modules/@csstools/css-parser-algorithms": {
120
+ "version": "3.0.5",
121
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz",
122
+ "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==",
123
+ "funding": [
124
+ {
125
+ "type": "github",
126
+ "url": "https://github.com/sponsors/csstools"
127
+ },
128
+ {
129
+ "type": "opencollective",
130
+ "url": "https://opencollective.com/csstools"
131
+ }
132
+ ],
133
+ "license": "MIT",
134
+ "engines": {
135
+ "node": ">=18"
136
+ },
137
+ "peerDependencies": {
138
+ "@csstools/css-tokenizer": "^3.0.4"
139
+ }
140
+ },
141
+ "node_modules/@csstools/css-syntax-patches-for-csstree": {
142
+ "version": "1.0.20",
143
+ "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.20.tgz",
144
+ "integrity": "sha512-8BHsjXfSciZxjmHQOuVdW2b8WLUPts9a+mfL13/PzEviufUEW2xnvQuOlKs9dRBHgRqJ53SF/DUoK9+MZk72oQ==",
145
+ "funding": [
146
+ {
147
+ "type": "github",
148
+ "url": "https://github.com/sponsors/csstools"
149
+ },
150
+ {
151
+ "type": "opencollective",
152
+ "url": "https://opencollective.com/csstools"
153
+ }
154
+ ],
155
+ "license": "MIT-0",
156
+ "engines": {
157
+ "node": ">=18"
158
+ }
159
+ },
160
+ "node_modules/@csstools/css-tokenizer": {
161
+ "version": "3.0.4",
162
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz",
163
+ "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==",
164
+ "funding": [
165
+ {
166
+ "type": "github",
167
+ "url": "https://github.com/sponsors/csstools"
168
+ },
169
+ {
170
+ "type": "opencollective",
171
+ "url": "https://opencollective.com/csstools"
172
+ }
173
+ ],
174
+ "license": "MIT",
175
+ "engines": {
176
+ "node": ">=18"
177
+ }
178
+ },
179
+ "node_modules/@mixmark-io/domino": {
180
+ "version": "2.2.0",
181
+ "resolved": "https://registry.npmjs.org/@mixmark-io/domino/-/domino-2.2.0.tgz",
182
+ "integrity": "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==",
183
+ "license": "BSD-2-Clause"
184
+ },
185
+ "node_modules/@mozilla/readability": {
186
+ "version": "0.6.0",
187
+ "resolved": "https://registry.npmjs.org/@mozilla/readability/-/readability-0.6.0.tgz",
188
+ "integrity": "sha512-juG5VWh4qAivzTAeMzvY9xs9HY5rAcr2E4I7tiSSCokRFi7XIZCAu92ZkSTsIj1OPceCifL3cpfteP3pDT9/QQ==",
189
+ "license": "Apache-2.0",
190
+ "engines": {
191
+ "node": ">=14.0.0"
192
+ }
193
+ },
194
+ "node_modules/agent-base": {
195
+ "version": "7.1.4",
196
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
197
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
198
+ "license": "MIT",
199
+ "engines": {
200
+ "node": ">= 14"
201
+ }
202
+ },
203
+ "node_modules/bidi-js": {
204
+ "version": "1.0.3",
205
+ "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz",
206
+ "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==",
207
+ "license": "MIT",
208
+ "dependencies": {
209
+ "require-from-string": "^2.0.2"
210
+ }
211
+ },
212
+ "node_modules/css-tree": {
213
+ "version": "3.1.0",
214
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz",
215
+ "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==",
216
+ "license": "MIT",
217
+ "dependencies": {
218
+ "mdn-data": "2.12.2",
219
+ "source-map-js": "^1.0.1"
220
+ },
221
+ "engines": {
222
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
223
+ }
224
+ },
225
+ "node_modules/cssstyle": {
226
+ "version": "5.3.3",
227
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.3.tgz",
228
+ "integrity": "sha512-OytmFH+13/QXONJcC75QNdMtKpceNk3u8ThBjyyYjkEcy/ekBwR1mMAuNvi3gdBPW3N5TlCzQ0WZw8H0lN/bDw==",
229
+ "license": "MIT",
230
+ "dependencies": {
231
+ "@asamuzakjp/css-color": "^4.0.3",
232
+ "@csstools/css-syntax-patches-for-csstree": "^1.0.14",
233
+ "css-tree": "^3.1.0"
234
+ },
235
+ "engines": {
236
+ "node": ">=20"
237
+ }
238
+ },
239
+ "node_modules/data-urls": {
240
+ "version": "6.0.0",
241
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-6.0.0.tgz",
242
+ "integrity": "sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==",
243
+ "license": "MIT",
244
+ "dependencies": {
245
+ "whatwg-mimetype": "^4.0.0",
246
+ "whatwg-url": "^15.0.0"
247
+ },
248
+ "engines": {
249
+ "node": ">=20"
250
+ }
251
+ },
252
+ "node_modules/debug": {
253
+ "version": "4.4.3",
254
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
255
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
256
+ "license": "MIT",
257
+ "dependencies": {
258
+ "ms": "^2.1.3"
259
+ },
260
+ "engines": {
261
+ "node": ">=6.0"
262
+ },
263
+ "peerDependenciesMeta": {
264
+ "supports-color": {
265
+ "optional": true
266
+ }
267
+ }
268
+ },
269
+ "node_modules/decimal.js": {
270
+ "version": "10.6.0",
271
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz",
272
+ "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==",
273
+ "license": "MIT"
274
+ },
275
+ "node_modules/entities": {
276
+ "version": "6.0.1",
277
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
278
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
279
+ "license": "BSD-2-Clause",
280
+ "engines": {
281
+ "node": ">=0.12"
282
+ },
283
+ "funding": {
284
+ "url": "https://github.com/fb55/entities?sponsor=1"
285
+ }
286
+ },
287
+ "node_modules/html-encoding-sniffer": {
288
+ "version": "4.0.0",
289
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz",
290
+ "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==",
291
+ "license": "MIT",
292
+ "dependencies": {
293
+ "whatwg-encoding": "^3.1.1"
294
+ },
295
+ "engines": {
296
+ "node": ">=18"
297
+ }
298
+ },
299
+ "node_modules/http-proxy-agent": {
300
+ "version": "7.0.2",
301
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
302
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
303
+ "license": "MIT",
304
+ "dependencies": {
305
+ "agent-base": "^7.1.0",
306
+ "debug": "^4.3.4"
307
+ },
308
+ "engines": {
309
+ "node": ">= 14"
310
+ }
311
+ },
312
+ "node_modules/https-proxy-agent": {
313
+ "version": "7.0.6",
314
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
315
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
316
+ "license": "MIT",
317
+ "dependencies": {
318
+ "agent-base": "^7.1.2",
319
+ "debug": "4"
320
+ },
321
+ "engines": {
322
+ "node": ">= 14"
323
+ }
324
+ },
325
+ "node_modules/iconv-lite": {
326
+ "version": "0.6.3",
327
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
328
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
329
+ "license": "MIT",
330
+ "dependencies": {
331
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
332
+ },
333
+ "engines": {
334
+ "node": ">=0.10.0"
335
+ }
336
+ },
337
+ "node_modules/is-potential-custom-element-name": {
338
+ "version": "1.0.1",
339
+ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
340
+ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
341
+ "license": "MIT"
342
+ },
343
+ "node_modules/jsdom": {
344
+ "version": "27.0.1",
345
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.0.1.tgz",
346
+ "integrity": "sha512-SNSQteBL1IlV2zqhwwolaG9CwhIhTvVHWg3kTss/cLE7H/X4644mtPQqYvCfsSrGQWt9hSZcgOXX8bOZaMN+kA==",
347
+ "license": "MIT",
348
+ "dependencies": {
349
+ "@asamuzakjp/dom-selector": "^6.7.2",
350
+ "cssstyle": "^5.3.1",
351
+ "data-urls": "^6.0.0",
352
+ "decimal.js": "^10.6.0",
353
+ "html-encoding-sniffer": "^4.0.0",
354
+ "http-proxy-agent": "^7.0.2",
355
+ "https-proxy-agent": "^7.0.6",
356
+ "is-potential-custom-element-name": "^1.0.1",
357
+ "parse5": "^8.0.0",
358
+ "rrweb-cssom": "^0.8.0",
359
+ "saxes": "^6.0.0",
360
+ "symbol-tree": "^3.2.4",
361
+ "tough-cookie": "^6.0.0",
362
+ "w3c-xmlserializer": "^5.0.0",
363
+ "webidl-conversions": "^8.0.0",
364
+ "whatwg-encoding": "^3.1.1",
365
+ "whatwg-mimetype": "^4.0.0",
366
+ "whatwg-url": "^15.1.0",
367
+ "ws": "^8.18.3",
368
+ "xml-name-validator": "^5.0.0"
369
+ },
370
+ "engines": {
371
+ "node": ">=20"
372
+ },
373
+ "peerDependencies": {
374
+ "canvas": "^3.0.0"
375
+ },
376
+ "peerDependenciesMeta": {
377
+ "canvas": {
378
+ "optional": true
379
+ }
380
+ }
381
+ },
382
+ "node_modules/lru-cache": {
383
+ "version": "11.2.4",
384
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz",
385
+ "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==",
386
+ "license": "BlueOak-1.0.0",
387
+ "engines": {
388
+ "node": "20 || >=22"
389
+ }
390
+ },
391
+ "node_modules/mdn-data": {
392
+ "version": "2.12.2",
393
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz",
394
+ "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==",
395
+ "license": "CC0-1.0"
396
+ },
397
+ "node_modules/ms": {
398
+ "version": "2.1.3",
399
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
400
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
401
+ "license": "MIT"
402
+ },
403
+ "node_modules/parse5": {
404
+ "version": "8.0.0",
405
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.0.tgz",
406
+ "integrity": "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==",
407
+ "license": "MIT",
408
+ "dependencies": {
409
+ "entities": "^6.0.0"
410
+ },
411
+ "funding": {
412
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
413
+ }
414
+ },
415
+ "node_modules/punycode": {
416
+ "version": "2.3.1",
417
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
418
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
419
+ "license": "MIT",
420
+ "engines": {
421
+ "node": ">=6"
422
+ }
423
+ },
424
+ "node_modules/require-from-string": {
425
+ "version": "2.0.2",
426
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
427
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
428
+ "license": "MIT",
429
+ "engines": {
430
+ "node": ">=0.10.0"
431
+ }
432
+ },
433
+ "node_modules/rrweb-cssom": {
434
+ "version": "0.8.0",
435
+ "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz",
436
+ "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==",
437
+ "license": "MIT"
438
+ },
439
+ "node_modules/safer-buffer": {
440
+ "version": "2.1.2",
441
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
442
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
443
+ "license": "MIT"
444
+ },
445
+ "node_modules/saxes": {
446
+ "version": "6.0.0",
447
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
448
+ "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
449
+ "license": "ISC",
450
+ "dependencies": {
451
+ "xmlchars": "^2.2.0"
452
+ },
453
+ "engines": {
454
+ "node": ">=v12.22.7"
455
+ }
456
+ },
457
+ "node_modules/source-map-js": {
458
+ "version": "1.2.1",
459
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
460
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
461
+ "license": "BSD-3-Clause",
462
+ "engines": {
463
+ "node": ">=0.10.0"
464
+ }
465
+ },
466
+ "node_modules/symbol-tree": {
467
+ "version": "3.2.4",
468
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
469
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
470
+ "license": "MIT"
471
+ },
472
+ "node_modules/tldts": {
473
+ "version": "7.0.19",
474
+ "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.19.tgz",
475
+ "integrity": "sha512-8PWx8tvC4jDB39BQw1m4x8y5MH1BcQ5xHeL2n7UVFulMPH/3Q0uiamahFJ3lXA0zO2SUyRXuVVbWSDmstlt9YA==",
476
+ "license": "MIT",
477
+ "dependencies": {
478
+ "tldts-core": "^7.0.19"
479
+ },
480
+ "bin": {
481
+ "tldts": "bin/cli.js"
482
+ }
483
+ },
484
+ "node_modules/tldts-core": {
485
+ "version": "7.0.19",
486
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.19.tgz",
487
+ "integrity": "sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==",
488
+ "license": "MIT"
489
+ },
490
+ "node_modules/tough-cookie": {
491
+ "version": "6.0.0",
492
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.0.tgz",
493
+ "integrity": "sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==",
494
+ "license": "BSD-3-Clause",
495
+ "dependencies": {
496
+ "tldts": "^7.0.5"
497
+ },
498
+ "engines": {
499
+ "node": ">=16"
500
+ }
501
+ },
502
+ "node_modules/tr46": {
503
+ "version": "6.0.0",
504
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz",
505
+ "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==",
506
+ "license": "MIT",
507
+ "dependencies": {
508
+ "punycode": "^2.3.1"
509
+ },
510
+ "engines": {
511
+ "node": ">=20"
512
+ }
513
+ },
514
+ "node_modules/turndown": {
515
+ "version": "7.2.2",
516
+ "resolved": "https://registry.npmjs.org/turndown/-/turndown-7.2.2.tgz",
517
+ "integrity": "sha512-1F7db8BiExOKxjSMU2b7if62D/XOyQyZbPKq/nUwopfgnHlqXHqQ0lvfUTeUIr1lZJzOPFn43dODyMSIfvWRKQ==",
518
+ "license": "MIT",
519
+ "dependencies": {
520
+ "@mixmark-io/domino": "^2.2.0"
521
+ }
522
+ },
523
+ "node_modules/turndown-plugin-gfm": {
524
+ "version": "1.0.2",
525
+ "resolved": "https://registry.npmjs.org/turndown-plugin-gfm/-/turndown-plugin-gfm-1.0.2.tgz",
526
+ "integrity": "sha512-vwz9tfvF7XN/jE0dGoBei3FXWuvll78ohzCZQuOb+ZjWrs3a0XhQVomJEb2Qh4VHTPNRO4GPZh0V7VRbiWwkRg==",
527
+ "license": "MIT"
528
+ },
529
+ "node_modules/w3c-xmlserializer": {
530
+ "version": "5.0.0",
531
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz",
532
+ "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==",
533
+ "license": "MIT",
534
+ "dependencies": {
535
+ "xml-name-validator": "^5.0.0"
536
+ },
537
+ "engines": {
538
+ "node": ">=18"
539
+ }
540
+ },
541
+ "node_modules/webidl-conversions": {
542
+ "version": "8.0.0",
543
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.0.tgz",
544
+ "integrity": "sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==",
545
+ "license": "BSD-2-Clause",
546
+ "engines": {
547
+ "node": ">=20"
548
+ }
549
+ },
550
+ "node_modules/whatwg-encoding": {
551
+ "version": "3.1.1",
552
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
553
+ "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
554
+ "license": "MIT",
555
+ "dependencies": {
556
+ "iconv-lite": "0.6.3"
557
+ },
558
+ "engines": {
559
+ "node": ">=18"
560
+ }
561
+ },
562
+ "node_modules/whatwg-mimetype": {
563
+ "version": "4.0.0",
564
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
565
+ "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
566
+ "license": "MIT",
567
+ "engines": {
568
+ "node": ">=18"
569
+ }
570
+ },
571
+ "node_modules/whatwg-url": {
572
+ "version": "15.1.0",
573
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-15.1.0.tgz",
574
+ "integrity": "sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==",
575
+ "license": "MIT",
576
+ "dependencies": {
577
+ "tr46": "^6.0.0",
578
+ "webidl-conversions": "^8.0.0"
579
+ },
580
+ "engines": {
581
+ "node": ">=20"
582
+ }
583
+ },
584
+ "node_modules/ws": {
585
+ "version": "8.18.3",
586
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
587
+ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
588
+ "license": "MIT",
589
+ "engines": {
590
+ "node": ">=10.0.0"
591
+ },
592
+ "peerDependencies": {
593
+ "bufferutil": "^4.0.1",
594
+ "utf-8-validate": ">=5.0.2"
595
+ },
596
+ "peerDependenciesMeta": {
597
+ "bufferutil": {
598
+ "optional": true
599
+ },
600
+ "utf-8-validate": {
601
+ "optional": true
602
+ }
603
+ }
604
+ },
605
+ "node_modules/xml-name-validator": {
606
+ "version": "5.0.0",
607
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz",
608
+ "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==",
609
+ "license": "Apache-2.0",
610
+ "engines": {
611
+ "node": ">=18"
612
+ }
613
+ },
614
+ "node_modules/xmlchars": {
615
+ "version": "2.2.0",
616
+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
617
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
618
+ "license": "MIT"
619
+ }
620
+ }
621
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "brave-search",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "description": "Headless web search via Brave Search - no browser required",
6
+ "author": "Mario Zechner",
7
+ "license": "MIT",
8
+ "dependencies": {
9
+ "@mozilla/readability": "^0.6.0",
10
+ "jsdom": "^27.0.1",
11
+ "turndown": "^7.2.2",
12
+ "turndown-plugin-gfm": "^1.0.2"
13
+ }
14
+ }