@agent-native/core 0.108.0 → 0.109.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 (302) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +18 -0
  3. package/corpus/core/package.json +1 -1
  4. package/corpus/core/src/a2a/client.ts +140 -17
  5. package/corpus/core/src/a2a/handlers.ts +60 -0
  6. package/corpus/core/src/a2a/index.ts +6 -1
  7. package/corpus/core/src/a2a/invoke.ts +68 -1
  8. package/corpus/core/src/a2a/server.ts +13 -1
  9. package/corpus/core/src/a2a/types.ts +16 -0
  10. package/corpus/core/src/action.ts +3 -2
  11. package/corpus/core/src/agent/production-agent.ts +10 -4
  12. package/corpus/core/src/client/AssistantChat.tsx +648 -603
  13. package/corpus/core/src/client/MultiTabAssistantChat.tsx +31 -4
  14. package/corpus/core/src/client/agent-chat-adapter.ts +23 -37
  15. package/corpus/core/src/client/agent-sidebar-state.ts +4 -0
  16. package/corpus/core/src/client/analytics.ts +84 -0
  17. package/corpus/core/src/client/chat/message-components.tsx +94 -22
  18. package/corpus/core/src/client/chat/tool-call-display.tsx +170 -47
  19. package/corpus/core/src/client/chat/use-agent-chat-lifecycle-tracking.ts +74 -0
  20. package/corpus/core/src/client/chat-thread-url.ts +11 -0
  21. package/corpus/core/src/client/error-capture.ts +12 -0
  22. package/corpus/core/src/client/extensions/ExtensionSlot.tsx +37 -1
  23. package/corpus/core/src/client/index.ts +2 -0
  24. package/corpus/core/src/client/route-chunk-recovery.ts +20 -8
  25. package/corpus/core/src/client/session-replay.ts +31 -0
  26. package/corpus/core/src/extensions/actions.ts +2 -14
  27. package/corpus/core/src/extensions/store.ts +1 -1
  28. package/corpus/core/src/localization/default-messages.ts +3 -0
  29. package/corpus/core/src/mcp/build-server.ts +2 -2
  30. package/corpus/core/src/progress/actions.ts +4 -2
  31. package/corpus/core/src/provider-api/index.ts +205 -105
  32. package/corpus/core/src/scripts/call-agent.ts +137 -17
  33. package/corpus/core/src/server/agent-chat/action-filters-a2a.ts +40 -0
  34. package/corpus/core/src/server/agent-chat-plugin.ts +31 -0
  35. package/corpus/core/src/styles/agent-conversation.css +7 -0
  36. package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +20 -0
  37. package/corpus/core/src/templates/default/app/i18n/de-DE.ts +20 -0
  38. package/corpus/core/src/templates/default/app/i18n/en-US.ts +20 -0
  39. package/corpus/core/src/templates/default/app/i18n/es-ES.ts +20 -0
  40. package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +21 -0
  41. package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +19 -0
  42. package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +20 -0
  43. package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +19 -0
  44. package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +20 -0
  45. package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +19 -0
  46. package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +19 -0
  47. package/corpus/core/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +28 -0
  48. package/corpus/core/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +5 -0
  49. package/corpus/core/src/templates/workspace-core/.agents/skills/performance/SKILL.md +13 -0
  50. package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +29 -10
  51. package/corpus/templates/analytics/.agents/skills/gong/SKILL.md +54 -23
  52. package/corpus/templates/analytics/.builder/skills/apollo/SKILL.md +19 -41
  53. package/corpus/templates/analytics/.builder/skills/commonroom/SKILL.md +20 -35
  54. package/corpus/templates/analytics/.builder/skills/github/SKILL.md +23 -67
  55. package/corpus/templates/analytics/.builder/skills/pylon/SKILL.md +25 -43
  56. package/corpus/templates/analytics/AGENTS.md +22 -13
  57. package/corpus/templates/analytics/actions/account-deep-dive.ts +1 -0
  58. package/corpus/templates/analytics/actions/configure-gong-native-insights.ts +29 -0
  59. package/corpus/templates/analytics/actions/content-calendar-schema.ts +8 -4
  60. package/corpus/templates/analytics/actions/content-calendar.ts +12 -4
  61. package/corpus/templates/analytics/actions/dashboard-mutation-api.ts +2 -1
  62. package/corpus/templates/analytics/actions/gong-calls.ts +113 -22
  63. package/corpus/templates/analytics/actions/gong-native-insights.ts +166 -0
  64. package/corpus/templates/analytics/actions/hubspot-deals.ts +190 -46
  65. package/corpus/templates/analytics/actions/pylon-issues.ts +123 -0
  66. package/corpus/templates/analytics/actions/slack-messages.ts +179 -27
  67. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +48 -152
  68. package/corpus/templates/analytics/app/components/ui/chart.tsx +1 -1
  69. package/corpus/templates/analytics/app/hooks/use-chart-tooltip-flip.ts +21 -6
  70. package/corpus/templates/analytics/app/i18n/zh-TW.ts +13 -0
  71. package/corpus/templates/analytics/app/i18n-data.ts +134 -0
  72. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +181 -30
  73. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +6 -0
  74. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +4 -3
  75. package/corpus/templates/analytics/changelog/2026-07-17-dashboard-editors-can-add-shared-extensions-or-opt-into-per-.md +6 -0
  76. package/corpus/templates/analytics/changelog/2026-07-17-dashboard-extensions-show-a-loading-skeleton.md +6 -0
  77. package/corpus/templates/analytics/changelog/2026-07-17-errors-now-group-repeat-failures-consistently-and-keep-priva.md +6 -0
  78. package/corpus/templates/analytics/changelog/2026-07-17-gong-transcript-reviews-now-batch-bounded-call-windows-for-f.md +6 -0
  79. package/corpus/templates/analytics/changelog/2026-07-17-hubspot-deal-filters-now-run-in-hubspot-before-paging-result.md +6 -0
  80. package/corpus/templates/analytics/changelog/2026-07-17-notion-content-calendars-now-discover-the-matching-database-.md +6 -0
  81. package/corpus/templates/analytics/changelog/2026-07-17-pylon-dashboard-reads-now-use-the-paginated-issue-search-api.md +6 -0
  82. package/corpus/templates/analytics/changelog/2026-07-17-slack-reads-no-longer-join-channels-and-report-pagination-coverage.md +6 -0
  83. package/corpus/templates/analytics/server/handlers/notion.ts +14 -3
  84. package/corpus/templates/analytics/server/handlers/slack.ts +182 -29
  85. package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +2 -6
  86. package/corpus/templates/analytics/server/lib/analytics-connector-catalog.ts +6 -2
  87. package/corpus/templates/analytics/server/lib/error-capture.ts +75 -8
  88. package/corpus/templates/analytics/server/lib/gong-native-policy.ts +72 -0
  89. package/corpus/templates/analytics/server/lib/gong.ts +54 -66
  90. package/corpus/templates/analytics/server/lib/hubspot.ts +40 -3
  91. package/corpus/templates/analytics/server/lib/notion.ts +83 -8
  92. package/corpus/templates/analytics/server/lib/real-data-actions.ts +4 -0
  93. package/corpus/templates/analytics/server/lib/slack.ts +242 -90
  94. package/corpus/templates/analytics/server/plugins/agent-chat.ts +3 -3
  95. package/corpus/templates/analytics/server/routes/api/pylon/accounts.get.ts +42 -1
  96. package/corpus/templates/analytics/server/routes/api/pylon/issues.get.ts +71 -1
  97. package/corpus/templates/analytics/server/routes/api/test-connection.post.ts +44 -4
  98. package/corpus/templates/clips/app/components/library/bulk-action-toolbar.tsx +19 -1
  99. package/corpus/templates/clips/app/components/library/create-folder-dialog.tsx +123 -0
  100. package/corpus/templates/clips/app/components/library/library-grid.tsx +42 -4
  101. package/corpus/templates/clips/app/components/library/recording-card.tsx +30 -0
  102. package/corpus/templates/clips/app/entry.client.tsx +6 -1
  103. package/corpus/templates/clips/app/i18n/ar-SA.ts +12 -1
  104. package/corpus/templates/clips/app/i18n/de-DE.ts +12 -1
  105. package/corpus/templates/clips/app/i18n/en-US.ts +12 -1
  106. package/corpus/templates/clips/app/i18n/es-ES.ts +11 -1
  107. package/corpus/templates/clips/app/i18n/fr-FR.ts +11 -1
  108. package/corpus/templates/clips/app/i18n/hi-IN.ts +10 -1
  109. package/corpus/templates/clips/app/i18n/ja-JP.ts +12 -1
  110. package/corpus/templates/clips/app/i18n/ko-KR.ts +11 -1
  111. package/corpus/templates/clips/app/i18n/pt-BR.ts +11 -1
  112. package/corpus/templates/clips/app/i18n/zh-CN.ts +11 -1
  113. package/corpus/templates/clips/app/i18n/zh-TW.ts +11 -1
  114. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +72 -1
  115. package/corpus/templates/clips/changelog/2026-07-17-choose-which-workspace-receives-new-clips-recordings-and-des.md +6 -0
  116. package/corpus/templates/clips/changelog/2026-07-17-create-folders-directly-from-the-move-menu.md +6 -0
  117. package/corpus/templates/clips/changelog/2026-07-17-failed-desktop-uploads-now-offer-a-direct-way-to-reopen-clip.md +6 -0
  118. package/corpus/templates/clips/desktop/src/app.tsx +1 -1
  119. package/corpus/templates/content/app/entry.client.tsx +6 -1
  120. package/corpus/templates/dispatch/AGENTS.md +5 -0
  121. package/corpus/templates/dispatch/changelog/2026-07-17-apps-page-links-to-other-available-apps.md +6 -0
  122. package/corpus/templates/dispatch/changelog/2026-07-17-curated-template-remixes.md +6 -0
  123. package/corpus/templates/mail/app/entry.client.tsx +6 -1
  124. package/corpus/templates/slides/.agents/skills/slide-images/SKILL.md +11 -7
  125. package/corpus/templates/slides/.env.example +0 -1
  126. package/corpus/templates/slides/AGENTS.md +4 -0
  127. package/corpus/templates/slides/DEVELOPING.md +2 -2
  128. package/corpus/templates/slides/actions/index-design-system-with-builder.ts +1 -1
  129. package/corpus/templates/slides/actions/logo-config.ts +6 -7
  130. package/corpus/templates/slides/actions/search-images.ts +11 -39
  131. package/corpus/templates/slides/actions/search-logos.ts +5 -52
  132. package/corpus/templates/slides/app/components/editor/ImageSearchPanel.tsx +1 -1
  133. package/corpus/templates/slides/app/components/editor/LogoSearchPanel.tsx +16 -26
  134. package/corpus/templates/slides/app/entry.client.tsx +6 -1
  135. package/corpus/templates/slides/server/lib/media-search-providers.ts +216 -0
  136. package/corpus/templates/slides/server/register-secrets.ts +30 -0
  137. package/dist/a2a/client.d.ts +38 -1
  138. package/dist/a2a/client.d.ts.map +1 -1
  139. package/dist/a2a/client.js +81 -12
  140. package/dist/a2a/client.js.map +1 -1
  141. package/dist/a2a/handlers.d.ts.map +1 -1
  142. package/dist/a2a/handlers.js +47 -0
  143. package/dist/a2a/handlers.js.map +1 -1
  144. package/dist/a2a/index.d.ts +4 -4
  145. package/dist/a2a/index.d.ts.map +1 -1
  146. package/dist/a2a/index.js +2 -2
  147. package/dist/a2a/index.js.map +1 -1
  148. package/dist/a2a/invoke.d.ts +26 -2
  149. package/dist/a2a/invoke.d.ts.map +1 -1
  150. package/dist/a2a/invoke.js +30 -1
  151. package/dist/a2a/invoke.js.map +1 -1
  152. package/dist/a2a/server.d.ts.map +1 -1
  153. package/dist/a2a/server.js +14 -1
  154. package/dist/a2a/server.js.map +1 -1
  155. package/dist/a2a/types.d.ts +12 -0
  156. package/dist/a2a/types.d.ts.map +1 -1
  157. package/dist/a2a/types.js.map +1 -1
  158. package/dist/action.d.ts +3 -2
  159. package/dist/action.d.ts.map +1 -1
  160. package/dist/action.js.map +1 -1
  161. package/dist/agent/production-agent.d.ts +5 -0
  162. package/dist/agent/production-agent.d.ts.map +1 -1
  163. package/dist/agent/production-agent.js +5 -3
  164. package/dist/agent/production-agent.js.map +1 -1
  165. package/dist/client/AssistantChat.d.ts +14 -1
  166. package/dist/client/AssistantChat.d.ts.map +1 -1
  167. package/dist/client/AssistantChat.js +158 -136
  168. package/dist/client/AssistantChat.js.map +1 -1
  169. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  170. package/dist/client/MultiTabAssistantChat.js +27 -4
  171. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  172. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  173. package/dist/client/agent-chat-adapter.js +21 -39
  174. package/dist/client/agent-chat-adapter.js.map +1 -1
  175. package/dist/client/agent-sidebar-state.d.ts +1 -0
  176. package/dist/client/agent-sidebar-state.d.ts.map +1 -1
  177. package/dist/client/agent-sidebar-state.js +4 -0
  178. package/dist/client/agent-sidebar-state.js.map +1 -1
  179. package/dist/client/analytics.d.ts +14 -0
  180. package/dist/client/analytics.d.ts.map +1 -1
  181. package/dist/client/analytics.js +67 -0
  182. package/dist/client/analytics.js.map +1 -1
  183. package/dist/client/chat/message-components.d.ts +8 -0
  184. package/dist/client/chat/message-components.d.ts.map +1 -1
  185. package/dist/client/chat/message-components.js +62 -19
  186. package/dist/client/chat/message-components.js.map +1 -1
  187. package/dist/client/chat/tool-call-display.d.ts +6 -0
  188. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  189. package/dist/client/chat/tool-call-display.js +83 -14
  190. package/dist/client/chat/tool-call-display.js.map +1 -1
  191. package/dist/client/chat/use-agent-chat-lifecycle-tracking.d.ts +8 -0
  192. package/dist/client/chat/use-agent-chat-lifecycle-tracking.d.ts.map +1 -0
  193. package/dist/client/chat/use-agent-chat-lifecycle-tracking.js +51 -0
  194. package/dist/client/chat/use-agent-chat-lifecycle-tracking.js.map +1 -0
  195. package/dist/client/chat-thread-url.d.ts +2 -0
  196. package/dist/client/chat-thread-url.d.ts.map +1 -0
  197. package/dist/client/chat-thread-url.js +12 -0
  198. package/dist/client/chat-thread-url.js.map +1 -0
  199. package/dist/client/error-capture.d.ts.map +1 -1
  200. package/dist/client/error-capture.js +7 -0
  201. package/dist/client/error-capture.js.map +1 -1
  202. package/dist/client/extensions/ExtensionSlot.d.ts +3 -1
  203. package/dist/client/extensions/ExtensionSlot.d.ts.map +1 -1
  204. package/dist/client/extensions/ExtensionSlot.js +28 -3
  205. package/dist/client/extensions/ExtensionSlot.js.map +1 -1
  206. package/dist/client/index.d.ts +1 -1
  207. package/dist/client/index.d.ts.map +1 -1
  208. package/dist/client/index.js +1 -1
  209. package/dist/client/index.js.map +1 -1
  210. package/dist/client/route-chunk-recovery.d.ts.map +1 -1
  211. package/dist/client/route-chunk-recovery.js +14 -9
  212. package/dist/client/route-chunk-recovery.js.map +1 -1
  213. package/dist/client/session-replay.d.ts +15 -0
  214. package/dist/client/session-replay.d.ts.map +1 -1
  215. package/dist/client/session-replay.js +20 -0
  216. package/dist/client/session-replay.js.map +1 -1
  217. package/dist/collab/routes.d.ts +1 -1
  218. package/dist/collab/struct-routes.d.ts +1 -1
  219. package/dist/extensions/actions.d.ts.map +1 -1
  220. package/dist/extensions/actions.js +2 -10
  221. package/dist/extensions/actions.js.map +1 -1
  222. package/dist/extensions/store.js +1 -1
  223. package/dist/extensions/store.js.map +1 -1
  224. package/dist/localization/default-messages.d.ts +3 -0
  225. package/dist/localization/default-messages.d.ts.map +1 -1
  226. package/dist/localization/default-messages.js +3 -0
  227. package/dist/localization/default-messages.js.map +1 -1
  228. package/dist/mcp/build-server.d.ts +2 -0
  229. package/dist/mcp/build-server.d.ts.map +1 -1
  230. package/dist/mcp/build-server.js +2 -2
  231. package/dist/mcp/build-server.js.map +1 -1
  232. package/dist/notifications/routes.d.ts +2 -2
  233. package/dist/observability/routes.d.ts +1 -1
  234. package/dist/progress/actions.d.ts.map +1 -1
  235. package/dist/progress/actions.js +3 -2
  236. package/dist/progress/actions.js.map +1 -1
  237. package/dist/progress/routes.d.ts +1 -1
  238. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  239. package/dist/provider-api/index.d.ts.map +1 -1
  240. package/dist/provider-api/index.js +91 -8
  241. package/dist/provider-api/index.js.map +1 -1
  242. package/dist/resources/handlers.d.ts +2 -2
  243. package/dist/scripts/call-agent.d.ts.map +1 -1
  244. package/dist/scripts/call-agent.js +107 -16
  245. package/dist/scripts/call-agent.js.map +1 -1
  246. package/dist/server/agent-chat/action-filters-a2a.d.ts +6 -0
  247. package/dist/server/agent-chat/action-filters-a2a.d.ts.map +1 -1
  248. package/dist/server/agent-chat/action-filters-a2a.js +27 -0
  249. package/dist/server/agent-chat/action-filters-a2a.js.map +1 -1
  250. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  251. package/dist/server/agent-chat-plugin.js +27 -1
  252. package/dist/server/agent-chat-plugin.js.map +1 -1
  253. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  254. package/dist/server/transcribe-voice.d.ts +1 -1
  255. package/dist/styles/agent-conversation.css +7 -0
  256. package/dist/templates/default/app/i18n/ar-SA.ts +20 -0
  257. package/dist/templates/default/app/i18n/de-DE.ts +20 -0
  258. package/dist/templates/default/app/i18n/en-US.ts +20 -0
  259. package/dist/templates/default/app/i18n/es-ES.ts +20 -0
  260. package/dist/templates/default/app/i18n/fr-FR.ts +21 -0
  261. package/dist/templates/default/app/i18n/hi-IN.ts +19 -0
  262. package/dist/templates/default/app/i18n/ja-JP.ts +20 -0
  263. package/dist/templates/default/app/i18n/ko-KR.ts +19 -0
  264. package/dist/templates/default/app/i18n/pt-BR.ts +20 -0
  265. package/dist/templates/default/app/i18n/zh-CN.ts +19 -0
  266. package/dist/templates/default/app/i18n/zh-TW.ts +19 -0
  267. package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +28 -0
  268. package/dist/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +5 -0
  269. package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +13 -0
  270. package/package.json +1 -1
  271. package/src/templates/default/app/i18n/ar-SA.ts +20 -0
  272. package/src/templates/default/app/i18n/de-DE.ts +20 -0
  273. package/src/templates/default/app/i18n/en-US.ts +20 -0
  274. package/src/templates/default/app/i18n/es-ES.ts +20 -0
  275. package/src/templates/default/app/i18n/fr-FR.ts +21 -0
  276. package/src/templates/default/app/i18n/hi-IN.ts +19 -0
  277. package/src/templates/default/app/i18n/ja-JP.ts +20 -0
  278. package/src/templates/default/app/i18n/ko-KR.ts +19 -0
  279. package/src/templates/default/app/i18n/pt-BR.ts +20 -0
  280. package/src/templates/default/app/i18n/zh-CN.ts +19 -0
  281. package/src/templates/default/app/i18n/zh-TW.ts +19 -0
  282. package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +28 -0
  283. package/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +5 -0
  284. package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +13 -0
  285. package/corpus/templates/analytics/server/handlers/github.ts +0 -200
  286. package/corpus/templates/analytics/server/handlers/pylon.ts +0 -43
  287. package/corpus/templates/analytics/server/lib/apollo.ts +0 -167
  288. package/corpus/templates/analytics/server/lib/commonroom.ts +0 -149
  289. package/corpus/templates/analytics/server/lib/github.ts +0 -660
  290. package/corpus/templates/analytics/server/lib/mixpanel.ts +0 -156
  291. package/corpus/templates/analytics/server/lib/posthog.ts +0 -194
  292. package/corpus/templates/analytics/server/lib/pylon.ts +0 -109
  293. package/corpus/templates/analytics/server/routes/api/github/graphql.post.ts +0 -1
  294. package/corpus/templates/analytics/server/routes/api/github/issue.get.ts +0 -1
  295. package/corpus/templates/analytics/server/routes/api/github/org-prs.get.ts +0 -1
  296. package/corpus/templates/analytics/server/routes/api/github/pr.get.ts +0 -1
  297. package/corpus/templates/analytics/server/routes/api/github/prs.get.ts +0 -1
  298. package/corpus/templates/analytics/server/routes/api/github/search.get.ts +0 -1
  299. package/corpus/templates/slides/actions/fetch-logos.ts +0 -90
  300. package/corpus/templates/slides/actions/image-search.ts +0 -64
  301. package/corpus/templates/slides/actions/import-github.ts +0 -182
  302. package/corpus/templates/slides/actions/logo-lookup.ts +0 -113
@@ -1,182 +0,0 @@
1
- import { defineAction } from "@agent-native/core";
2
- import {
3
- validateUrl,
4
- parseOwnerRepo,
5
- fetchGitHubJson,
6
- fetchGitHubRaw,
7
- parseTailwindConfig,
8
- parseCss,
9
- detectStylingFramework,
10
- MAX_FILES,
11
- MAX_FILE_SIZE,
12
- ROOT_PATTERNS,
13
- SECONDARY_PATHS,
14
- COLOR_VAR_PATTERN,
15
- } from "@agent-native/core/server/design-token-utils";
16
- import { z } from "zod";
17
-
18
- export default defineAction({
19
- description:
20
- "Import design tokens from a public GitHub repository. " +
21
- "Reads Tailwind configs, CSS files, theme/token files, and package.json " +
22
- "to extract colors, fonts, spacing, and CSS custom properties.",
23
- schema: z.object({
24
- repoUrl: z
25
- .string()
26
- .describe(
27
- 'GitHub repository URL (e.g. "https://github.com/org/repo" or "org/repo")',
28
- ),
29
- }),
30
- readOnly: true,
31
- http: { method: "GET" },
32
- run: async ({ repoUrl }) => {
33
- const { owner, repo } = parseOwnerRepo(repoUrl.trim());
34
-
35
- validateUrl(`https://api.github.com/repos/${owner}/${repo}`);
36
-
37
- const rawFiles: Record<string, string> = {};
38
- let fetchedCount = 0;
39
-
40
- async function collectFile(path: string): Promise<void> {
41
- if (fetchedCount >= MAX_FILES) return;
42
- const content = await fetchGitHubRaw(owner, repo, path);
43
- if (content) {
44
- rawFiles[path] = content;
45
- fetchedCount++;
46
- }
47
- }
48
-
49
- // 1. List repository root
50
- const rootListing = (await fetchGitHubJson(owner, repo, "")) as Array<{
51
- name: string;
52
- type: string;
53
- size?: number;
54
- }> | null;
55
-
56
- if (!rootListing || !Array.isArray(rootListing)) {
57
- throw new Error(
58
- `Could not list repository contents for ${owner}/${repo}. ` +
59
- "Ensure the repository is public and the URL is correct.",
60
- );
61
- }
62
-
63
- // 2. Fetch root-level files matching patterns
64
- const rootFilePromises: Promise<void>[] = [];
65
- for (const entry of rootListing) {
66
- if (entry.type !== "file") continue;
67
- if (entry.size && entry.size > MAX_FILE_SIZE) continue;
68
- const matches = ROOT_PATTERNS.some((p) => p.test(entry.name));
69
- if (matches && fetchedCount < MAX_FILES) {
70
- rootFilePromises.push(collectFile(entry.name));
71
- }
72
- }
73
- await Promise.all(rootFilePromises);
74
-
75
- // 3. Fetch secondary paths (files and directories)
76
- const secondaryPromises: Promise<void>[] = [];
77
- for (const path of SECONDARY_PATHS) {
78
- if (fetchedCount >= MAX_FILES) break;
79
-
80
- if (/\.\w+$/.test(path)) {
81
- secondaryPromises.push(collectFile(path));
82
- } else {
83
- secondaryPromises.push(
84
- (async () => {
85
- const listing = (await fetchGitHubJson(
86
- owner,
87
- repo,
88
- path,
89
- )) as Array<{
90
- name: string;
91
- type: string;
92
- path: string;
93
- size?: number;
94
- }> | null;
95
- if (!listing || !Array.isArray(listing)) return;
96
- const innerPromises: Promise<void>[] = [];
97
- for (const entry of listing) {
98
- if (fetchedCount >= MAX_FILES) break;
99
- if (entry.type !== "file") continue;
100
- if (entry.size && entry.size > MAX_FILE_SIZE) continue;
101
- if (
102
- /\.(css|scss|less)$/.test(entry.name) ||
103
- /theme/i.test(entry.name) ||
104
- /tokens?/i.test(entry.name)
105
- ) {
106
- innerPromises.push(collectFile(entry.path));
107
- }
108
- }
109
- await Promise.all(innerPromises);
110
- })(),
111
- );
112
- }
113
- }
114
- await Promise.all(secondaryPromises);
115
-
116
- // 4. Parse collected files
117
- let colors: Record<string, unknown> = {};
118
- let fonts: string[] = [];
119
- let spacing: Record<string, string> = {};
120
- let borderRadius: Record<string, string> = {};
121
- let cssCustomProperties: Record<string, string> = {};
122
- let stylingFramework: string | undefined;
123
-
124
- for (const [filename, content] of Object.entries(rawFiles)) {
125
- if (/tailwind\.config\.\w+$/.test(filename)) {
126
- const tw = parseTailwindConfig(content);
127
- if (tw.colors)
128
- colors = { ...colors, ...(tw.colors as Record<string, unknown>) };
129
- if (tw.fontFamily) {
130
- fonts.push(...Object.values(tw.fontFamily as Record<string, string>));
131
- }
132
- if (tw.spacing)
133
- spacing = { ...spacing, ...(tw.spacing as Record<string, string>) };
134
- if (tw.borderRadius) {
135
- borderRadius = {
136
- ...borderRadius,
137
- ...(tw.borderRadius as Record<string, string>),
138
- };
139
- }
140
- }
141
-
142
- if (/\.(css|scss|less)$/.test(filename)) {
143
- const parsed = parseCss(content);
144
- if (parsed.cssCustomProperties) {
145
- cssCustomProperties = {
146
- ...cssCustomProperties,
147
- ...parsed.cssCustomProperties,
148
- };
149
- }
150
- if (parsed.fonts) fonts.push(...parsed.fonts);
151
- }
152
-
153
- if (filename === "package.json") {
154
- stylingFramework = detectStylingFramework(content);
155
- }
156
- }
157
-
158
- fonts = [...new Set(fonts)];
159
-
160
- for (const [key, value] of Object.entries(cssCustomProperties)) {
161
- if (COLOR_VAR_PATTERN.test(value.trim()) && !colors[key]) {
162
- colors[key] = value.trim();
163
- }
164
- }
165
-
166
- return {
167
- source: "github" as const,
168
- repoUrl: `https://github.com/${owner}/${repo}`,
169
- colors: Object.keys(colors).length > 0 ? colors : undefined,
170
- fonts: fonts.length > 0 ? fonts : undefined,
171
- spacing: Object.keys(spacing).length > 0 ? spacing : undefined,
172
- borderRadius:
173
- Object.keys(borderRadius).length > 0 ? borderRadius : undefined,
174
- cssCustomProperties:
175
- Object.keys(cssCustomProperties).length > 0
176
- ? cssCustomProperties
177
- : undefined,
178
- stylingFramework,
179
- rawFiles,
180
- };
181
- },
182
- });
@@ -1,113 +0,0 @@
1
- /**
2
- * Logo lookup using Logo.dev API (replacement for deprecated Clearbit Logo API)
3
- * Usage: pnpm action logo-lookup --domain acme.com [--size 128]
4
- *
5
- * Logo.dev API: https://img.logo.dev/{domain}?token={key}
6
- * - Free tier with generous monthly requests (sign up at https://logo.dev/signup)
7
- * - Returns company logo as PNG/JPG/WebP
8
- * - Supports ?size=N, ?format=png, ?greyscale=true, ?retina=true
9
- * - Set LOGO_DEV_TOKEN env var for API access
10
- * - Without a token, the script outputs the URL pattern for manual use
11
- */
12
-
13
- function parseArgs(args: string[]): {
14
- domain?: string;
15
- size?: number;
16
- format?: string;
17
- greyscale?: boolean;
18
- } {
19
- const result: {
20
- domain?: string;
21
- size?: number;
22
- format?: string;
23
- greyscale?: boolean;
24
- } = {};
25
- for (let i = 0; i < args.length; i++) {
26
- if (args[i] === "--domain" && args[i + 1]) {
27
- result.domain = args[++i];
28
- } else if (args[i] === "--size" && args[i + 1]) {
29
- result.size = parseInt(args[++i], 10);
30
- } else if (args[i] === "--format" && args[i + 1]) {
31
- result.format = args[++i];
32
- } else if (args[i] === "--greyscale") {
33
- result.greyscale = true;
34
- } else if (!args[i].startsWith("--")) {
35
- result.domain = args[i];
36
- }
37
- }
38
- return result;
39
- }
40
-
41
- export default async function main(args: string[]) {
42
- const { domain, size = 128, format, greyscale } = parseArgs(args);
43
-
44
- if (!domain) {
45
- console.error(
46
- "Usage: pnpm action logo-lookup --domain acme.com [--size 128] [--greyscale]",
47
- );
48
- console.error(" pnpm action logo-lookup acme.com");
49
- console.error(
50
- "\nRequires LOGO_DEV_TOKEN env var. Sign up free at https://logo.dev/signup",
51
- );
52
- throw new Error("Script failed");
53
- }
54
-
55
- const token = process.env.LOGO_DEV_TOKEN;
56
-
57
- // Clean up domain
58
- const cleanDomain = domain
59
- .replace(/^https?:\/\//, "")
60
- .replace(/^www\./, "")
61
- .split("/")[0];
62
-
63
- // Build URL params
64
- const params = new URLSearchParams();
65
- if (token) params.set("token", token);
66
- if (size) params.set("size", String(size));
67
- if (format) params.set("format", format);
68
- if (greyscale) params.set("greyscale", "true");
69
-
70
- const paramStr = params.toString();
71
- const logoUrl = `https://img.logo.dev/${cleanDomain}${paramStr ? `?${paramStr}` : ""}`;
72
-
73
- if (!token) {
74
- console.log(
75
- "\n⚠️ No LOGO_DEV_TOKEN set. Sign up free at https://logo.dev/signup",
76
- );
77
- console.log(" Then set: LOGO_DEV_TOKEN=pk_your_token_here");
78
- console.log(`\nURL pattern (add your token):`);
79
- console.log(
80
- ` https://img.logo.dev/${cleanDomain}?token=YOUR_TOKEN&size=${size}`,
81
- );
82
- } else {
83
- console.log(`\nLogo.dev URL for "${cleanDomain}":`);
84
- console.log(` ${logoUrl}`);
85
- }
86
-
87
- console.log(`\nHTML for slides:`);
88
- console.log(
89
- ` <img src="${logoUrl}" alt="${cleanDomain.split(".")[0]}" style="height: 40px; width: auto; object-fit: contain;" />`,
90
- );
91
-
92
- if (format === "json" || args.includes("--json")) {
93
- console.log(`\n---JSON---`);
94
- const baseUrl = `https://img.logo.dev/${cleanDomain}`;
95
- const tokenParam = token ? `token=${token}` : "token=YOUR_TOKEN";
96
- console.log(
97
- JSON.stringify(
98
- {
99
- domain: cleanDomain,
100
- url: logoUrl,
101
- hasToken: !!token,
102
- sizes: {
103
- small: `${baseUrl}?${tokenParam}&size=64`,
104
- medium: `${baseUrl}?${tokenParam}&size=128`,
105
- large: `${baseUrl}?${tokenParam}&size=256`,
106
- },
107
- },
108
- null,
109
- 2,
110
- ),
111
- );
112
- }
113
- }