synthos 0.7.2 → 0.9.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 (380) hide show
  1. package/README.md +215 -65
  2. package/default-pages/application/page.html +42 -0
  3. package/default-pages/application/page.json +10 -0
  4. package/default-pages/elevenlabs_effects_studio/page.html +1363 -0
  5. package/default-pages/elevenlabs_effects_studio/page.json +11 -0
  6. package/default-pages/elevenlabs_voice_studio/page.html +801 -0
  7. package/default-pages/elevenlabs_voice_studio/page.json +11 -0
  8. package/default-pages/{json_tools.html → json_tools/page.html} +13 -11
  9. package/default-pages/json_tools/page.json +10 -0
  10. package/default-pages/my_notes/notes/a1b2c3d4-e5f6-7890-abcd-ef1234567890.json +5 -0
  11. package/default-pages/my_notes/page.html +132 -0
  12. package/default-pages/{my_notes.json → my_notes/page.json} +2 -2
  13. package/default-pages/neon_asteroids/files/Ambient_Space.mp3 +0 -0
  14. package/default-pages/neon_asteroids/files/Ambient_Space2.mp3 +0 -0
  15. package/default-pages/neon_asteroids/files/Ambient_Space3.mp3 +0 -0
  16. package/default-pages/neon_asteroids/files/Asteroid_Explosion.mp3 +0 -0
  17. package/default-pages/neon_asteroids/files/Hyperspace_Jump.mp3 +0 -0
  18. package/default-pages/neon_asteroids/files/Laser_Fire.mp3 +0 -0
  19. package/default-pages/neon_asteroids/files/Menu_Navigate.mp3 +0 -0
  20. package/default-pages/neon_asteroids/files/Power_Up_Collect.mp3 +0 -0
  21. package/default-pages/neon_asteroids/files/Saucer_Alert.mp3 +0 -0
  22. package/default-pages/neon_asteroids/files/Ship_Thrust.mp3 +0 -0
  23. package/default-pages/neon_asteroids/files/effects.json +74 -0
  24. package/default-pages/neon_asteroids/page.html +1822 -0
  25. package/default-pages/{neon_asteroids.json → neon_asteroids/page.json} +3 -3
  26. package/default-pages/oregon_trail/page.html +323 -0
  27. package/default-pages/oregon_trail/page.json +12 -0
  28. package/default-pages/retro_game_starter/page.html +1308 -0
  29. package/default-pages/retro_game_starter/page.json +12 -0
  30. package/default-pages/{sidebar_builder.html → sidebar_page/page.html} +12 -10
  31. package/default-pages/sidebar_page/page.json +10 -0
  32. package/default-pages/{solar_explorer.html → solar_explorer/page.html} +24 -29
  33. package/default-pages/{solar_explorer.json → solar_explorer/page.json} +4 -4
  34. package/default-pages/{solar_tutorial.html → solar_tutorial/page.html} +12 -10
  35. package/default-pages/solar_tutorial/page.json +10 -0
  36. package/default-pages/{two-panel_builder.html → two-panel_page/page.html} +13 -11
  37. package/default-pages/two-panel_page/page.json +10 -0
  38. package/default-pages/us_map/page.html +193 -0
  39. package/default-pages/us_map/page.json +12 -0
  40. package/default-pages/us_map_1850/page.html +326 -0
  41. package/default-pages/us_map_1850/page.json +12 -0
  42. package/default-pages/western_cities_1850/page.html +527 -0
  43. package/default-pages/western_cities_1850/page.json +12 -0
  44. package/default-themes/aurora-dawn.json +19 -0
  45. package/default-themes/aurora-dawn.v3.css +198 -0
  46. package/default-themes/aurora-dusk.json +19 -0
  47. package/default-themes/aurora-dusk.v3.css +200 -0
  48. package/default-themes/cosmos-dawn.json +19 -0
  49. package/default-themes/cosmos-dawn.v3.css +198 -0
  50. package/default-themes/cosmos-dusk.json +19 -0
  51. package/default-themes/cosmos-dusk.v3.css +200 -0
  52. package/default-themes/high-contrast-dark.json +19 -0
  53. package/default-themes/high-contrast-dark.v3.css +200 -0
  54. package/default-themes/high-contrast-light.json +19 -0
  55. package/default-themes/high-contrast-light.v3.css +198 -0
  56. package/default-themes/{nebula-dawn.css → nebula-dawn.v2.css} +134 -0
  57. package/default-themes/nebula-dawn.v3.css +199 -0
  58. package/default-themes/{nebula-dusk.css → nebula-dusk.v2.css} +128 -0
  59. package/default-themes/nebula-dusk.v3.css +201 -0
  60. package/default-themes/solar-flare-dawn.json +19 -0
  61. package/default-themes/solar-flare-dawn.v3.css +198 -0
  62. package/default-themes/solar-flare-dusk.json +19 -0
  63. package/default-themes/solar-flare-dusk.v3.css +200 -0
  64. package/dist/agents/a2a/a2aProvider.d.ts.map +1 -0
  65. package/dist/agents/a2a/a2aProvider.js +126 -0
  66. package/dist/agents/a2a/a2aProvider.js.map +1 -0
  67. package/dist/agents/discovery.d.ts.map +1 -0
  68. package/dist/agents/discovery.js +52 -0
  69. package/dist/agents/discovery.js.map +1 -0
  70. package/dist/agents/index.d.ts +7 -0
  71. package/dist/agents/index.d.ts.map +1 -0
  72. package/dist/agents/index.js +20 -0
  73. package/dist/agents/index.js.map +1 -0
  74. package/dist/agents/openclaw/gatewayManager.d.ts +117 -0
  75. package/dist/agents/openclaw/gatewayManager.d.ts.map +1 -0
  76. package/dist/agents/openclaw/gatewayManager.js +486 -0
  77. package/dist/agents/openclaw/gatewayManager.js.map +1 -0
  78. package/dist/agents/openclaw/openclawProvider.d.ts.map +1 -0
  79. package/dist/agents/openclaw/openclawProvider.js +237 -0
  80. package/dist/agents/openclaw/openclawProvider.js.map +1 -0
  81. package/dist/agents/openclaw/sshTunnelManager.d.ts +25 -0
  82. package/dist/agents/openclaw/sshTunnelManager.d.ts.map +1 -0
  83. package/dist/agents/openclaw/sshTunnelManager.js +359 -0
  84. package/dist/agents/openclaw/sshTunnelManager.js.map +1 -0
  85. package/dist/agents/types.d.ts.map +1 -0
  86. package/dist/agents/types.js +6 -0
  87. package/dist/agents/types.js.map +1 -0
  88. package/dist/builders/anthropic.d.ts +31 -0
  89. package/dist/builders/anthropic.d.ts.map +1 -0
  90. package/dist/builders/anthropic.js +227 -0
  91. package/dist/builders/anthropic.js.map +1 -0
  92. package/dist/builders/fireworksai.d.ts +9 -0
  93. package/dist/builders/fireworksai.d.ts.map +1 -0
  94. package/dist/builders/fireworksai.js +57 -0
  95. package/dist/builders/fireworksai.js.map +1 -0
  96. package/dist/builders/index.d.ts +13 -0
  97. package/dist/builders/index.d.ts.map +1 -0
  98. package/dist/builders/index.js +31 -0
  99. package/dist/builders/index.js.map +1 -0
  100. package/dist/builders/openai.d.ts +8 -0
  101. package/dist/builders/openai.d.ts.map +1 -0
  102. package/dist/builders/openai.js +87 -0
  103. package/dist/builders/openai.js.map +1 -0
  104. package/dist/builders/types.d.ts +54 -0
  105. package/dist/builders/types.d.ts.map +1 -0
  106. package/dist/builders/types.js +211 -0
  107. package/dist/builders/types.js.map +1 -0
  108. package/dist/connectors/index.d.ts.map +1 -1
  109. package/dist/connectors/index.js +3 -2
  110. package/dist/connectors/index.js.map +1 -1
  111. package/dist/connectors/registry.d.ts +2 -1
  112. package/dist/connectors/registry.d.ts.map +1 -1
  113. package/dist/connectors/registry.js +65 -96
  114. package/dist/connectors/registry.js.map +1 -1
  115. package/dist/connectors/types.d.ts.map +1 -1
  116. package/dist/customizer/Customizer.d.ts +57 -0
  117. package/dist/customizer/Customizer.d.ts.map +1 -0
  118. package/dist/customizer/Customizer.js +124 -0
  119. package/dist/customizer/Customizer.js.map +1 -0
  120. package/dist/customizer/index.d.ts.map +1 -0
  121. package/dist/customizer/index.js +9 -0
  122. package/dist/customizer/index.js.map +1 -0
  123. package/dist/files.d.ts +17 -0
  124. package/dist/files.d.ts.map +1 -1
  125. package/dist/files.js +75 -1
  126. package/dist/files.js.map +1 -1
  127. package/dist/index.d.ts.map +1 -1
  128. package/dist/index.js +1 -0
  129. package/dist/index.js.map +1 -1
  130. package/dist/init.d.ts +10 -6
  131. package/dist/init.d.ts.map +1 -1
  132. package/dist/init.js +97 -86
  133. package/dist/init.js.map +1 -1
  134. package/dist/migrations.d.ts.map +1 -1
  135. package/dist/migrations.js +142 -145
  136. package/dist/migrations.js.map +1 -1
  137. package/dist/models/anthropic.d.ts +24 -0
  138. package/dist/models/anthropic.d.ts.map +1 -0
  139. package/dist/models/anthropic.js +103 -0
  140. package/dist/models/anthropic.js.map +1 -0
  141. package/dist/models/chainOfThought.d.ts.map +1 -0
  142. package/dist/models/chainOfThought.js +45 -0
  143. package/dist/models/chainOfThought.js.map +1 -0
  144. package/dist/models/fireworksai.d.ts.map +1 -0
  145. package/dist/models/fireworksai.js +141 -0
  146. package/dist/models/fireworksai.js.map +1 -0
  147. package/dist/models/index.d.ts +7 -1
  148. package/dist/models/index.d.ts.map +1 -1
  149. package/dist/models/index.js +20 -1
  150. package/dist/models/index.js.map +1 -1
  151. package/dist/models/logCompletePrompt.d.ts.map +1 -0
  152. package/dist/models/logCompletePrompt.js +23 -0
  153. package/dist/models/logCompletePrompt.js.map +1 -0
  154. package/dist/models/openai.d.ts +24 -0
  155. package/dist/models/openai.d.ts.map +1 -0
  156. package/dist/models/openai.js +101 -0
  157. package/dist/models/openai.js.map +1 -0
  158. package/dist/models/providers.d.ts.map +1 -1
  159. package/dist/models/providers.js +12 -4
  160. package/dist/models/providers.js.map +1 -1
  161. package/dist/models/types.d.ts +53 -2
  162. package/dist/models/types.d.ts.map +1 -1
  163. package/dist/models/types.js +21 -0
  164. package/dist/models/types.js.map +1 -1
  165. package/dist/models/utils.d.ts.map +1 -0
  166. package/dist/models/utils.js +21 -0
  167. package/dist/models/utils.js.map +1 -0
  168. package/dist/pages.d.ts +30 -7
  169. package/dist/pages.d.ts.map +1 -1
  170. package/dist/pages.js +177 -55
  171. package/dist/pages.js.map +1 -1
  172. package/dist/scripts.d.ts.map +1 -1
  173. package/dist/scripts.js +4 -3
  174. package/dist/scripts.js.map +1 -1
  175. package/dist/service/createCompletePrompt.d.ts.map +1 -1
  176. package/dist/service/createCompletePrompt.js +9 -6
  177. package/dist/service/createCompletePrompt.js.map +1 -1
  178. package/dist/service/generateImage.d.ts.map +1 -1
  179. package/dist/service/generateImage.js +3 -3
  180. package/dist/service/generateImage.js.map +1 -1
  181. package/dist/service/server.d.ts.map +1 -1
  182. package/dist/service/server.js +39 -7
  183. package/dist/service/server.js.map +1 -1
  184. package/dist/service/transformPage.d.ts +47 -18
  185. package/dist/service/transformPage.d.ts.map +1 -1
  186. package/dist/service/transformPage.js +559 -270
  187. package/dist/service/transformPage.js.map +1 -1
  188. package/dist/service/useAgentRoutes.d.ts +5 -0
  189. package/dist/service/useAgentRoutes.d.ts.map +1 -0
  190. package/dist/service/useAgentRoutes.js +392 -0
  191. package/dist/service/useAgentRoutes.js.map +1 -0
  192. package/dist/service/useApiRoutes.d.ts.map +1 -1
  193. package/dist/service/useApiRoutes.js +380 -138
  194. package/dist/service/useApiRoutes.js.map +1 -1
  195. package/dist/service/useConnectorRoutes.d.ts.map +1 -1
  196. package/dist/service/useConnectorRoutes.js +20 -9
  197. package/dist/service/useConnectorRoutes.js.map +1 -1
  198. package/dist/service/useFileRoutes.d.ts +4 -0
  199. package/dist/service/useFileRoutes.d.ts.map +1 -0
  200. package/dist/service/useFileRoutes.js +122 -0
  201. package/dist/service/useFileRoutes.js.map +1 -0
  202. package/dist/service/usePageRoutes.d.ts.map +1 -1
  203. package/dist/service/usePageRoutes.js +660 -68
  204. package/dist/service/usePageRoutes.js.map +1 -1
  205. package/dist/service/useSharedDataRoutes.d.ts +4 -0
  206. package/dist/service/useSharedDataRoutes.d.ts.map +1 -0
  207. package/dist/service/useSharedDataRoutes.js +104 -0
  208. package/dist/service/useSharedDataRoutes.js.map +1 -0
  209. package/dist/service/useSharedFileRoutes.d.ts +4 -0
  210. package/dist/service/useSharedFileRoutes.d.ts.map +1 -0
  211. package/dist/service/useSharedFileRoutes.js +121 -0
  212. package/dist/service/useSharedFileRoutes.js.map +1 -0
  213. package/dist/settings.d.ts +3 -1
  214. package/dist/settings.d.ts.map +1 -1
  215. package/dist/settings.js +5 -8
  216. package/dist/settings.js.map +1 -1
  217. package/dist/synthos-cli.d.ts.map +1 -1
  218. package/dist/synthos-cli.js +4 -3
  219. package/dist/synthos-cli.js.map +1 -1
  220. package/dist/themes.d.ts +15 -0
  221. package/dist/themes.d.ts.map +1 -1
  222. package/dist/themes.js +106 -20
  223. package/dist/themes.js.map +1 -1
  224. package/migration-rules/v1-to-v2.md +193 -0
  225. package/migration-rules/v2-to-v3.md +481 -0
  226. package/package.json +15 -11
  227. package/required-pages/builder/page.html +43 -0
  228. package/required-pages/builder/page.json +10 -0
  229. package/required-pages/pages/page.html +924 -0
  230. package/required-pages/pages/page.json +10 -0
  231. package/required-pages/settings/page.html +1753 -0
  232. package/required-pages/settings/page.json +10 -0
  233. package/required-pages/synthos_apis/page.html +846 -0
  234. package/required-pages/synthos_apis/page.json +10 -0
  235. package/required-pages/{synthos_scripts.html → synthos_scripts/page.html} +13 -11
  236. package/required-pages/synthos_scripts/page.json +10 -0
  237. package/service-connectors/airtable/connector.json +27 -0
  238. package/service-connectors/alpha-vantage/connector.json +26 -0
  239. package/service-connectors/brave-search/connector.json +26 -0
  240. package/service-connectors/cloudinary/connector.json +27 -0
  241. package/service-connectors/deepl/connector.json +28 -0
  242. package/service-connectors/elevenlabs/connector.json +30 -0
  243. package/service-connectors/giphy/connector.json +27 -0
  244. package/service-connectors/github/connector.json +29 -0
  245. package/service-connectors/huggingface/connector.json +27 -0
  246. package/service-connectors/imgur/connector.json +29 -0
  247. package/service-connectors/instagram/connector.json +43 -0
  248. package/service-connectors/jira/connector.json +28 -0
  249. package/service-connectors/mapbox/connector.json +26 -0
  250. package/service-connectors/nasa/connector.json +27 -0
  251. package/service-connectors/newsapi/connector.json +27 -0
  252. package/service-connectors/notion/connector.json +28 -0
  253. package/service-connectors/open-exchange-rates/connector.json +27 -0
  254. package/service-connectors/openweathermap/connector.json +26 -0
  255. package/service-connectors/pexels/connector.json +27 -0
  256. package/service-connectors/resend/connector.json +29 -0
  257. package/service-connectors/rss2json/connector.json +27 -0
  258. package/service-connectors/sendgrid/connector.json +27 -0
  259. package/service-connectors/spoonacular/connector.json +28 -0
  260. package/service-connectors/stability-ai/connector.json +27 -0
  261. package/service-connectors/twilio/connector.json +28 -0
  262. package/service-connectors/unsplash/connector.json +27 -0
  263. package/service-connectors/wolfram-alpha/connector.json +26 -0
  264. package/service-connectors/youtube-data/connector.json +30 -0
  265. package/src/agents/a2a/a2aProvider.ts +110 -0
  266. package/src/agents/discovery.ts +74 -0
  267. package/src/agents/index.ts +6 -0
  268. package/src/agents/openclaw/gatewayManager.ts +570 -0
  269. package/src/agents/openclaw/openclawProvider.ts +259 -0
  270. package/src/agents/openclaw/sshTunnelManager.ts +393 -0
  271. package/src/agents/types.ts +82 -0
  272. package/src/builders/anthropic.ts +283 -0
  273. package/src/builders/fireworksai.ts +59 -0
  274. package/src/builders/index.ts +33 -0
  275. package/src/builders/openai.ts +89 -0
  276. package/src/builders/types.ts +261 -0
  277. package/src/connectors/index.ts +3 -1
  278. package/src/connectors/registry.ts +40 -96
  279. package/src/connectors/types.ts +25 -0
  280. package/src/customizer/Customizer.ts +151 -0
  281. package/src/customizer/index.ts +5 -0
  282. package/src/files.ts +71 -0
  283. package/src/index.ts +2 -1
  284. package/src/init.ts +138 -97
  285. package/src/migrations.ts +148 -145
  286. package/src/models/anthropic.ts +119 -0
  287. package/src/models/chainOfThought.ts +56 -0
  288. package/src/models/fireworksai.ts +143 -0
  289. package/src/models/index.ts +7 -1
  290. package/src/models/logCompletePrompt.ts +25 -0
  291. package/src/models/openai.ts +110 -0
  292. package/src/models/providers.ts +12 -3
  293. package/src/models/types.ts +97 -2
  294. package/src/models/utils.ts +16 -0
  295. package/src/pages.ts +176 -54
  296. package/src/scripts.ts +2 -2
  297. package/src/service/createCompletePrompt.ts +3 -1
  298. package/src/service/generateImage.ts +2 -2
  299. package/src/service/server.ts +39 -8
  300. package/src/service/transformPage.ts +605 -301
  301. package/src/service/useAgentRoutes.ts +428 -0
  302. package/src/service/useApiRoutes.ts +309 -45
  303. package/src/service/useConnectorRoutes.ts +21 -10
  304. package/src/service/useFileRoutes.ts +127 -0
  305. package/src/service/usePageRoutes.ts +736 -75
  306. package/src/service/useSharedDataRoutes.ts +106 -0
  307. package/src/service/useSharedFileRoutes.ts +126 -0
  308. package/src/settings.ts +8 -10
  309. package/src/synthos-cli.ts +4 -3
  310. package/src/themes.ts +103 -20
  311. package/static-files/favicon.svg +12 -0
  312. package/static-files/fluentlm-instructions.llmd +868 -0
  313. package/static-files/fluentlm-instructions.md +1595 -0
  314. package/static-files/fluentlm.css +4844 -0
  315. package/static-files/fluentlm.js +3602 -0
  316. package/static-files/fluentlm.min.css +1 -0
  317. package/static-files/fluentlm.min.js +1 -0
  318. package/static-files/helpers.v3.js +304 -0
  319. package/static-files/page.v3.js +1290 -0
  320. package/static-files/recommended-frameworks.llmd +81 -0
  321. package/static-files/recommended-frameworks.md +137 -0
  322. package/static-files/retro-game.js +877 -0
  323. package/static-files/shell.css +797 -0
  324. package/static-files/theme-dark.css +169 -0
  325. package/static-files/theme-light.css +169 -0
  326. package/tests/anthropic.spec.ts +84 -0
  327. package/tests/builders.spec.ts +139 -0
  328. package/tests/chainOfThought.spec.ts +108 -0
  329. package/tests/ensureScripts.spec.ts +82 -0
  330. package/tests/files.spec.ts +233 -0
  331. package/tests/fireworksai.spec.ts +92 -0
  332. package/tests/logCompletePrompt.spec.ts +74 -0
  333. package/tests/migrations.spec.ts +79 -1
  334. package/tests/openai.spec.ts +71 -0
  335. package/tests/pages.spec.ts +226 -1
  336. package/tests/providers.spec.ts +144 -0
  337. package/tests/scripts.spec.ts +209 -0
  338. package/tests/transformPage.spec.ts +456 -0
  339. package/tests/types.spec.ts +23 -0
  340. package/default-pages/app_builder.html +0 -40
  341. package/default-pages/app_builder.json +0 -1
  342. package/default-pages/json_tools.json +0 -1
  343. package/default-pages/my_notes.html +0 -33
  344. package/default-pages/neon_asteroids.html +0 -77
  345. package/default-pages/sidebar_builder.json +0 -1
  346. package/default-pages/solar_tutorial.json +0 -1
  347. package/default-pages/two-panel_builder.json +0 -1
  348. package/dist/connectors/index.d.ts +0 -3
  349. package/dist/connectors/types.d.ts +0 -61
  350. package/dist/index.d.ts +0 -7
  351. package/dist/migrations.d.ts +0 -11
  352. package/dist/models/providers.d.ts +0 -7
  353. package/dist/scripts.d.ts +0 -14
  354. package/dist/service/createCompletePrompt.d.ts +0 -5
  355. package/dist/service/debugLog.d.ts +0 -11
  356. package/dist/service/generateImage.d.ts +0 -32
  357. package/dist/service/index.d.ts +0 -8
  358. package/dist/service/modelInstructions.d.ts +0 -7
  359. package/dist/service/requiresSettings.d.ts +0 -3
  360. package/dist/service/server.d.ts +0 -4
  361. package/dist/service/useApiRoutes.d.ts +0 -4
  362. package/dist/service/useConnectorRoutes.d.ts +0 -4
  363. package/dist/service/useDataRoutes.d.ts +0 -4
  364. package/dist/service/usePageRoutes.d.ts +0 -5
  365. package/dist/synthos-cli.d.ts +0 -2
  366. package/images/home.png +0 -0
  367. package/images/page-management.png +0 -0
  368. package/images/settings.png +0 -0
  369. package/images/synthos-square.png +0 -0
  370. package/page-scripts/helpers-v2.js +0 -121
  371. package/page-scripts/page-v2.js +0 -615
  372. package/required-pages/builder.html +0 -74
  373. package/required-pages/builder.json +0 -1
  374. package/required-pages/pages.html +0 -196
  375. package/required-pages/pages.json +0 -1
  376. package/required-pages/settings.html +0 -841
  377. package/required-pages/settings.json +0 -1
  378. package/required-pages/synthos_apis.html +0 -272
  379. package/required-pages/synthos_apis.json +0 -1
  380. package/required-pages/synthos_scripts.json +0 -1
@@ -22,9 +22,14 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
25
28
  Object.defineProperty(exports, "__esModule", { value: true });
26
29
  exports.postProcessV2 = exports.migratePage = void 0;
27
30
  const cheerio = __importStar(require("cheerio"));
31
+ const fs = __importStar(require("fs/promises"));
32
+ const path_1 = __importDefault(require("path"));
28
33
  const transformPage_1 = require("./service/transformPage");
29
34
  /**
30
35
  * Registry of migration functions: fromVersion -> transform.
@@ -32,6 +37,7 @@ const transformPage_1 = require("./service/transformPage");
32
37
  */
33
38
  const migrations = {
34
39
  1: migrateV1toV2,
40
+ 2: migrateV2toV3,
35
41
  };
36
42
  /**
37
43
  * Migrate a page's HTML from one version to another by applying
@@ -49,161 +55,76 @@ async function migratePage(html, fromVersion, toVersion, completePrompt) {
49
55
  return current;
50
56
  }
51
57
  exports.migratePage = migratePage;
52
- /** CSS classes that belong to the shared theme and must NOT appear in page-specific <style> blocks. */
58
+ /** CSS selectors provided by the shared theme used by post-processing to strip leftovers. */
53
59
  const SHARED_CSS_SELECTORS = [
54
- '*',
55
- 'body',
56
- '.chat-panel',
57
- '.chat-header',
58
- '.chat-messages',
59
- '.chat-message',
60
- '.chat-message p',
61
- '.chat-message strong',
62
- '.chat-message pre',
63
- '.chat-message code',
64
- '.chat-message a',
65
- '.link-group',
66
- '.link-group a',
60
+ // Base
61
+ ':root', '*', 'body', 'html',
62
+ // Chat panel
63
+ '.chat-panel', '.chat-header', '.chat-messages',
64
+ '.chat-message', '.chat-message p', '.chat-message p strong', '.chat-message p code',
65
+ '.chat-message strong', '.chat-message pre', '.chat-message code', '.chat-message a',
67
66
  'form',
68
- '.chat-input',
69
- '.chat-submit',
70
- '.loading-overlay',
71
- '.spinner',
72
- '.viewer-panel',
73
- '#loadingOverlay',
74
- '.chat-submit:disabled',
75
- '.chat-input:disabled',
67
+ '.chat-input', '.chat-input:focus', '.chat-input::placeholder', '.chat-input:disabled',
68
+ '.chat-submit', '.chat-submit:hover', '.chat-submit:active', '.chat-submit:disabled',
69
+ '.chat-input-wrapper', '.chat-input-wrapper .chat-input',
70
+ // Viewer panel
71
+ '.viewer-panel', '.viewer-panel::before', '.viewer-panel.full-viewer',
72
+ // Loading
73
+ '.loading-overlay', '.spinner', '#loadingOverlay',
74
+ // Chat toggle
75
+ '.chat-toggle', '.chat-toggle:hover', '.chat-toggle-dots', '.chat-toggle-dot',
76
+ '.chat-toggle:hover .chat-toggle-dot',
77
+ 'body.chat-collapsed .chat-panel', 'body.chat-collapsed .chat-toggle',
78
+ // Modal system
79
+ '.modal-overlay', '.modal-overlay.show', '.modal-content', '.modal-header',
80
+ '.modal-body', '.modal-footer', '.modal-footer-right',
81
+ '.modal-btn', '.modal-btn-primary', '.modal-btn-primary:hover',
82
+ '.modal-btn-secondary', '.modal-btn-secondary:hover',
83
+ '.modal-btn-danger', '.modal-btn-danger:hover',
84
+ // Form elements
85
+ '.form-group', '.form-group:last-child', '.form-label',
86
+ '.form-input', '.form-input:focus', '.form-input:read-only', '.form-input::placeholder',
87
+ '.checkbox-label', '.checkbox-label input[type="checkbox"]', '.checkbox-label span',
88
+ // Brainstorm
89
+ '.brainstorm-icon-btn', '.brainstorm-icon-btn:hover',
90
+ '.brainstorm-modal .modal-content', '.brainstorm-modal .modal-header',
91
+ '.brainstorm-close-btn', '.brainstorm-close-btn:hover',
92
+ '.brainstorm-messages', '.brainstorm-message', '.brainstorm-user', '.brainstorm-assistant',
93
+ '.brainstorm-input-row', '.brainstorm-input', '.brainstorm-input:focus', '.brainstorm-input::placeholder',
94
+ '.brainstorm-send-btn', '.brainstorm-send-btn:hover', '.brainstorm-send-btn:disabled',
95
+ '.brainstorm-assistant p', '.brainstorm-assistant pre', '.brainstorm-assistant code',
96
+ '.brainstorm-build-row', '.brainstorm-build-btn', '.brainstorm-build-btn:hover',
97
+ '.brainstorm-suggestions', '.brainstorm-suggestion-chip',
98
+ '.brainstorm-suggestion-chip:hover', '.brainstorm-suggestion-chip:disabled',
99
+ '.brainstorm-thinking',
76
100
  ];
77
- const V1_TO_V2_SYSTEM_PROMPT = `You are a code migration tool. You convert SynthOS v1 pages to v2 format.
78
-
79
- ## Rules — What to REMOVE
80
-
81
- 1. **Shared CSS rules** — Remove CSS rules that match these selectors **exactly** (they are now in theme.css):
82
- \`*\`, \`body\`, \`.chat-panel\`, \`.chat-header\`, \`.chat-messages\`, \`.chat-message\` (and descendants like \`.chat-message p\`, \`.chat-message strong\`, \`.chat-message pre\`, \`.chat-message code\`, \`.chat-message a\`), \`.link-group\`, \`.link-group a\`, \`form\`, \`.chat-input\`, \`.chat-submit\`, \`.loading-overlay\`, \`.spinner\`, \`.viewer-panel\`, \`#loadingOverlay\`, \`.chat-submit:disabled\`, \`.chat-input:disabled\`
83
- Also remove any \`@keyframes spin\` and scrollbar pseudo-element rules (\`::-webkit-scrollbar\`, \`::-webkit-scrollbar-track\`, \`::-webkit-scrollbar-thumb\`).
84
- **Important:** Only remove rules matching these selectors exactly. Do NOT remove pseudo-element variants (\`.viewer-panel::before\`, \`.viewer-panel::after\`), pseudo-class variants (\`.chat-input:focus\`, \`.chat-submit:hover\`), or any other compound selectors that extend the shared selectors — those are page-specific styles and must be preserved. Also preserve any \`@keyframes\` referenced by page-specific rules (e.g. if a page has \`.viewer-panel::before\` using a custom animation, keep that \`@keyframes\`).
85
-
86
- 2. **Shared inline JS** — Remove these specific code blocks from \`<script>\` tags:
87
- - \`document.getElementById('chatInput').focus()\` line
88
- - \`chatForm\` submit event listener (the one with setTimeout and loading overlay)
89
- - \`saveLink\` click handler
90
- - \`resetLink\` click handler
91
- - \`window.onload\` that ONLY scrolls chatMessages (keep other onload logic!)
92
- - Chat panel toggle IIFE (references \`synthos-chat-collapsed\`)
93
- - Focus management IIFE (references \`stopImmediatePropagation\`)
94
- - \`// Basic chat functionality\` comment
95
-
96
- 3. **Empty \`<script>\` tags** — If a script block becomes empty after stripping, remove it entirely.
97
-
98
- ## Rules — What to ADD
99
-
100
- 1. In \`<head>\`, add these two lines right after the \`<title>\` tag (if not already present):
101
- \`\`\`
102
- <script src="/api/theme-info.js"></script>
103
- <link rel="stylesheet" href="/api/theme.css">
104
- \`\`\`
105
-
106
- ## Rules — What to TRANSFORM
107
-
108
- ### Data/Table API migration
109
- The data API changed from global tables to **page-scoped** tables:
110
- - Old: \`/api/data/:table\` → New: \`/api/data/:page/:table\`
111
- - Old: \`/api/data/:table/:id\` → New: \`/api/data/:page/:table/:id\`
112
- - Tables are now stored as sub-folders of each page's folder.
113
- - **Raw fetch() calls** must be updated: e.g. \`fetch('/api/data/notes')\` → \`fetch('/api/data/' + pageName + '/notes')\`
114
- - **synthos.data.\* helpers** handle this automatically — they read the current page name from \`window.pageInfo.name\`. Prefer converting raw fetch data calls to use the helpers instead:
115
- - \`fetch('/api/data/notes')\` → \`synthos.data.list('notes')\`
116
- - \`fetch('/api/data/notes/' + id)\` → \`synthos.data.get('notes', id)\`
117
- - \`fetch('/api/data/notes', { method: 'POST', ... })\` → \`synthos.data.save('notes', row)\`
118
- - \`fetch('/api/data/notes/' + id, { method: 'DELETE' })\` → \`synthos.data.remove('notes', id)\`
119
-
120
- ### Color variables
121
- Replace hardcoded Nebula Dusk colors with CSS variables in **page-specific** CSS only:
122
- | Hardcoded | CSS Variable |
123
- |-----------|-------------|
124
- | \`#667eea\` | \`var(--accent-primary)\` |
125
- | \`#764ba2\` | \`var(--accent-secondary)\` |
126
- | \`#f093fb\` | \`var(--accent-tertiary)\` |
127
- | \`#b794f6\` | \`var(--text-secondary)\` |
128
- | \`#e0e0e0\` | \`var(--text-primary)\` |
129
- | \`rgba(138, 43, 226, 0.3)\` or similar purple rgba | \`var(--border-color)\` or \`var(--accent-glow)\` (use border-color for borders, accent-glow for shadows) |
130
- | \`#1a1a2e\` | \`var(--bg-primary)\` |
131
- | \`#16213e\` | \`var(--bg-secondary)\` |
132
- | \`#0f0f23\` | \`var(--bg-tertiary)\` |
133
-
134
- For gradients using these colors (e.g. \`linear-gradient(135deg, #667eea, #764ba2)\`), replace with \`linear-gradient(135deg, var(--accent-primary), var(--accent-secondary))\`.
135
-
136
- ## Rules — What to PRESERVE (do NOT modify)
137
-
138
- - ALL viewer-panel HTML content (games, presentations, tools, etc.)
139
- - ALL page-specific JavaScript (game logic, presentation logic, keyboard handlers, etc.)
140
- - ALL page-specific CSS (game styles, presentation styles, layout rules for non-shared classes)
141
- - Chat message history in \`.chat-messages\`
142
- - \`<div id="thoughts">\` content
143
- - External CDN script tags (\`<script src="...">\`)
144
- - The two-panel layout structure (chat-panel + viewer-panel)
145
- - The \`<div id="loadingOverlay" class="loading-overlay"><div class="spinner"></div></div>\` element
146
- - The chat form, link-group, chat-header elements (structure only, their CSS is handled by theme)
147
-
148
- ## V2 page structure example
149
-
150
- \`\`\`html
151
- <!DOCTYPE html>
152
- <html lang="en">
153
- <head>
154
- <meta charset="UTF-8">
155
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
156
- <title>SynthOS - Page Title</title>
157
- <script src="/api/theme-info.js"></script>
158
- <link rel="stylesheet" href="/api/theme.css">
159
- <style>
160
- /* Only page-specific styles here — no shared chat/layout CSS */
161
- .my-custom-element {
162
- color: var(--text-primary);
163
- background: var(--bg-secondary);
164
- }
165
- </style>
166
- <!-- external CDN scripts if needed -->
167
- </head>
168
- <body>
101
+ /** Default chat panel HTML restored by post-processing if the LLM removes it. */
102
+ const DEFAULT_CHAT_PANEL = `
169
103
  <div class="chat-panel">
170
104
  <div class="chat-header">SynthOS</div>
171
105
  <div class="chat-messages" id="chatMessages">
172
- <!-- chat messages preserved -->
173
- </div>
174
- <div class="link-group">
175
- <a href="#" id="saveLink">Save</a>
176
- <a href="/pages" id="pagesLink">Pages</a>
177
- <a href="#" id="resetLink">Reset</a>
106
+ <div class="chat-message"><p>Welcome! How can I help you?</p></div>
178
107
  </div>
179
108
  <form action="/" method="POST" id="chatForm">
180
- <input type="text" class="chat-input" id="chatInput" name="message" placeholder="Type a message...">
181
- <button type="submit" class="chat-submit">Send</button>
109
+ <textarea class="chat-input" id="chatInput" name="message" rows="2" placeholder="Type a message..."></textarea>
182
110
  </form>
183
- </div>
184
- <div class="viewer-panel" id="viewerPanel">
185
- <!-- page content preserved -->
186
- <div id="loadingOverlay" class="loading-overlay"><div class="spinner"></div></div>
187
- </div>
188
- <div id="thoughts" style="display: none;">...</div>
189
- <script>
190
- // Only page-specific JS here — no shared chat handlers
191
- </script>
192
- </body>
193
- </html>
194
- \`\`\`
195
-
196
- ## Output format
197
-
198
- Return ONLY the complete migrated HTML. No markdown fences, no explanation, no commentary. Just the raw HTML starting with \`<!DOCTYPE html>\`.`;
111
+ </div>`;
112
+ /**
113
+ * Load migration rules from the migration-rules/ folder.
114
+ */
115
+ async function loadMigrationRules(filename) {
116
+ const rulesPath = path_1.default.join(__dirname, '..', 'migration-rules', filename);
117
+ return await fs.readFile(rulesPath, 'utf8');
118
+ }
199
119
  /**
200
120
  * v1 -> v2: LLM-based migration that strips shared code and adds theme support.
201
121
  * Post-processes with cheerio to verify critical elements are present.
202
122
  */
203
123
  async function migrateV1toV2(html, completePrompt) {
204
- const system = { role: 'system', content: V1_TO_V2_SYSTEM_PROMPT };
124
+ const rules = await loadMigrationRules('v1-to-v2.md');
125
+ const system = { role: 'system', content: rules };
205
126
  const prompt = { role: 'user', content: `Convert this v1 page to v2 format:\n\n${html}` };
206
- const result = await completePrompt({ prompt, system, maxTokens: 16000 });
127
+ const result = await completePrompt({ prompt, system });
207
128
  if (!result.completed || !result.value) {
208
129
  throw new Error('LLM migration failed: ' + (result.error?.message ?? 'no response'));
209
130
  }
@@ -213,14 +134,89 @@ async function migrateV1toV2(html, completePrompt) {
213
134
  migrated = migrated.replace(/^```(?:html)?\s*\n?/, '').replace(/\n?```\s*$/, '');
214
135
  }
215
136
  // Post-process with cheerio to verify and fix critical elements
216
- migrated = postProcessV2(migrated);
137
+ migrated = postProcessV2(migrated, html);
217
138
  return migrated;
218
139
  }
140
+ /**
141
+ * v2 -> v3: Cheerio-based migration (no LLM).
142
+ * - Removes .link-group div
143
+ * - Converts chat <input> to <textarea>
144
+ * - Removes .chat-submit button (v3 creates it dynamically)
145
+ */
146
+ async function migrateV2toV3(html, _completePrompt) {
147
+ const $ = cheerio.load(html, { decodeEntities: false });
148
+ // 1. Remove .link-group div and its children
149
+ $('.link-group').remove();
150
+ // 2. Replace <input type="text" id="chatInput" ...> with <textarea>
151
+ const chatInput = $('input#chatInput, input.chat-input');
152
+ if (chatInput.length > 0) {
153
+ chatInput.replaceWith('<textarea class="chat-input" id="chatInput" name="message" rows="2" placeholder="Type a message..."></textarea>');
154
+ }
155
+ // 3. Remove .chat-submit button inside #chatForm (or anywhere)
156
+ $('button.chat-submit').remove();
157
+ // Run through postProcessV2 to ensure structural integrity
158
+ return postProcessV2($.html());
159
+ }
219
160
  /**
220
161
  * Cheerio-based post-processing to verify the LLM output meets v2 requirements.
162
+ * Uses the original HTML as a fallback source for critical elements.
221
163
  */
222
- function postProcessV2(html) {
164
+ function postProcessV2(html, originalHtml) {
223
165
  const $ = cheerio.load(html, { decodeEntities: false });
166
+ const $original = originalHtml ? cheerio.load(originalHtml, { decodeEntities: false }) : null;
167
+ // --- Critical structural checks ---
168
+ // Ensure chat-panel exists with chatForm
169
+ if ($('#chatForm').length === 0) {
170
+ if ($('.chat-panel').length > 0) {
171
+ // Chat panel exists but form is missing — restore form from original or default
172
+ const originalForm = $original?.('#chatForm').parent('.chat-panel');
173
+ if (originalForm && originalForm.length > 0) {
174
+ $('.chat-panel').replaceWith(originalForm.html());
175
+ }
176
+ else {
177
+ // Append default form
178
+ $('.chat-panel').append(`
179
+ <form action="/" method="POST" id="chatForm">
180
+ <textarea class="chat-input" id="chatInput" name="message" rows="2" placeholder="Type a message..."></textarea>
181
+ </form>`);
182
+ }
183
+ }
184
+ else {
185
+ // Entire chat panel is missing — restore from original or use default
186
+ const originalPanel = $original?.('.chat-panel');
187
+ if (originalPanel && originalPanel.length > 0) {
188
+ $('body').prepend($.html(originalPanel));
189
+ }
190
+ else {
191
+ $('body').prepend(DEFAULT_CHAT_PANEL);
192
+ }
193
+ }
194
+ }
195
+ // Ensure thoughts div exists
196
+ if ($('#thoughts').length === 0) {
197
+ const originalThoughts = $original?.('#thoughts');
198
+ if (originalThoughts && originalThoughts.length > 0) {
199
+ $('body').append($.html(originalThoughts));
200
+ }
201
+ else {
202
+ $('body').append('<div id="thoughts" style="display: none;"></div>');
203
+ }
204
+ }
205
+ // Ensure loadingOverlay exists inside viewer-panel
206
+ const overlay = $('#loadingOverlay');
207
+ const viewerPanel = $('.viewer-panel');
208
+ if (overlay.length === 0 && viewerPanel.length > 0) {
209
+ viewerPanel.append('<div id="loadingOverlay" class="loading-overlay"><div class="spinner"></div></div>');
210
+ }
211
+ else if (overlay.length > 0 && viewerPanel.length > 0) {
212
+ // Move inside viewer-panel if it's outside
213
+ if (overlay.closest('.viewer-panel').length === 0) {
214
+ const overlayHtml = $.html(overlay);
215
+ overlay.remove();
216
+ viewerPanel.append(overlayHtml);
217
+ }
218
+ }
219
+ // --- Theme refs ---
224
220
  // Ensure theme-info.js is in <head>
225
221
  if ($('script[src="/api/theme-info.js"]').length === 0) {
226
222
  const titleEl = $('title');
@@ -241,7 +237,7 @@ function postProcessV2(html) {
241
237
  $('head').append('<link rel="stylesheet" href="/api/theme.css">\n');
242
238
  }
243
239
  }
244
- // Remove leftover shared CSS selectors from <style> blocks
240
+ // --- Strip leftover shared CSS ---
245
241
  $('style').each(function (_, el) {
246
242
  let css = $(el).html() ?? '';
247
243
  for (const selector of SHARED_CSS_SELECTORS) {
@@ -251,10 +247,11 @@ function postProcessV2(html) {
251
247
  const pattern = new RegExp(`(?:^|\\n)\\s*${escaped}\\s*\\{[^}]*\\}`, 'g');
252
248
  css = css.replace(pattern, '');
253
249
  }
254
- // Remove @keyframes spin
250
+ // Remove @keyframes spin and nebula-pulse
255
251
  css = css.replace(/@keyframes\s+spin\s*\{[^}]*(?:\{[^}]*\}[^}]*)*\}/g, '');
252
+ css = css.replace(/@keyframes\s+nebula-pulse\s*\{[^}]*(?:\{[^}]*\}[^}]*)*\}/g, '');
256
253
  // Remove scrollbar pseudo-element rules
257
- css = css.replace(/(?:^|\n)\s*(?:\*|body|)::-webkit-scrollbar(?:-(?:track|thumb))?\s*\{[^}]*\}/g, '');
254
+ css = css.replace(/(?:^|\n)\s*(?:\*|body|)::-webkit-scrollbar(?:-(?:track|thumb|corner))?(?::hover)?\s*\{[^}]*\}/g, '');
258
255
  $(el).html(css);
259
256
  });
260
257
  // Remove empty <style> blocks
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmC;AAEnC,2DAAmE;AAEnE;;;GAGG;AACH,MAAM,UAAU,GAAsF;IAClG,CAAC,EAAE,aAAa;CACnB,CAAC;AAEF;;;GAGG;AACI,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,WAAmB,EAAE,SAAiB,EAAE,cAA8B;IAClH,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;QAC1C,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACxE;QACD,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;KACpD;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAVD,kCAUC;AAED,uGAAuG;AACvG,MAAM,oBAAoB,GAAG;IACzB,GAAG;IACH,MAAM;IACN,aAAa;IACb,cAAc;IACd,gBAAgB;IAChB,eAAe;IACf,iBAAiB;IACjB,sBAAsB;IACtB,mBAAmB;IACnB,oBAAoB;IACpB,iBAAiB;IACjB,aAAa;IACb,eAAe;IACf,MAAM;IACN,aAAa;IACb,cAAc;IACd,kBAAkB;IAClB,UAAU;IACV,eAAe;IACf,iBAAiB;IACjB,uBAAuB;IACvB,sBAAsB;CACzB,CAAC;AAEF,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gJAyHiH,CAAC;AAEjJ;;;GAGG;AACH,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,cAA8B;IACrE,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,QAAiB,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAC5E,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,yCAAyC,IAAI,EAAE,EAAE,CAAC;IAEnG,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;QACpC,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC;KACxF;IAED,oCAAoC;IACpC,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QAC5B,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;KACpF;IAED,gEAAgE;IAChE,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAEnC,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,IAAY;IACtC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IAExD,oCAAoC;IACpC,IAAI,CAAC,CAAC,kCAAkC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QACpD,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;SACjE;aAAM;YACH,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;SACrE;KACJ;IAED,gCAAgC;IAChC,IAAI,CAAC,CAAC,6BAA6B,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QAC/C,MAAM,WAAW,GAAG,CAAC,CAAC,kCAAkC,CAAC,CAAC;QAC1D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,WAAW,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;SACxE;aAAM;YACH,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;SACvE;KACJ;IAED,2DAA2D;IAC3D,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE;QAC3B,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;QAC7B,KAAK,MAAM,QAAQ,IAAI,oBAAoB,EAAE;YACzC,yCAAyC;YACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;YACjE,8CAA8C;YAC9C,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,gBAAgB,OAAO,iBAAiB,EAAE,GAAG,CAAC,CAAC;YAC1E,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;SAClC;QACD,yBAAyB;QACzB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,mDAAmD,EAAE,EAAE,CAAC,CAAC;QAC3E,wCAAwC;QACxC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,8EAA8E,EAAE,EAAE,CAAC,CAAC;QACtG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,8BAA8B;IAC9B,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,OAAO,KAAK,EAAE,EAAE;YAChB,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;SAClB;IACL,CAAC,CAAC,CAAC;IAEH,wCAAwC;IACxC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE;QAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,GAAG;YAAE,OAAO;QAChB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,IAAI,KAAK,EAAE,EAAE;YACb,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;SAClB;IACL,CAAC,CAAC,CAAC;IAEH,sEAAsE;IACtE,OAAO,IAAA,wCAAwB,EAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC;AA5DD,sCA4DC"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import Anthropic from '@anthropic-ai/sdk';
2
+ import { completePrompt, PromptCompletionArgs } from './types';
3
+ export interface AnthropicArgs {
4
+ apiKey: string;
5
+ model: string;
6
+ baseURL?: string;
7
+ temperature?: number;
8
+ maxRetries?: number;
9
+ }
10
+ /**
11
+ * Build the messages array and system content for an Anthropic API request.
12
+ * Pure function — no SDK dependency.
13
+ */
14
+ export declare function buildAnthropicRequest(args: PromptCompletionArgs, defaultTemp: number): {
15
+ messages: {
16
+ role: string;
17
+ content: string | Anthropic.ContentBlockParam[];
18
+ }[];
19
+ system: string | Anthropic.TextBlockParam[] | undefined;
20
+ temperature: number;
21
+ outputConfig?: Anthropic.OutputConfig;
22
+ };
23
+ export declare function anthropic(args: AnthropicArgs): completePrompt;
24
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/models/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAmB,cAAc,EAAE,oBAAoB,EAAqC,MAAM,SAAS,CAAC;AAEnH,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,GAAG;IACpF,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAA;KAAE,EAAE,CAAC;IAC9E,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC;CACzC,CAqDA;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,cAAc,CA2C7D"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.anthropic = exports.buildAnthropicRequest = void 0;
7
+ const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
8
+ const types_1 = require("./types");
9
+ /**
10
+ * Build the messages array and system content for an Anthropic API request.
11
+ * Pure function — no SDK dependency.
12
+ */
13
+ function buildAnthropicRequest(args, defaultTemp) {
14
+ const reqTemp = args.temperature ?? defaultTemp;
15
+ const messages = [];
16
+ if (args.history) {
17
+ for (const msg of args.history) {
18
+ messages.push({ role: msg.role, content: msg.content });
19
+ }
20
+ }
21
+ // Build user content — multimodal when ContentBlock[] is provided
22
+ const promptContent = args.prompt.content;
23
+ let userContent;
24
+ if ((0, types_1.isMultimodalContent)(promptContent)) {
25
+ userContent = promptContent.map(block => {
26
+ if (block.type === 'text') {
27
+ return { type: 'text', text: block.text };
28
+ }
29
+ return {
30
+ type: 'image',
31
+ source: { type: 'base64', media_type: block.mediaType, data: block.data },
32
+ };
33
+ });
34
+ }
35
+ else {
36
+ userContent = promptContent;
37
+ }
38
+ // Structured output via output_config is incompatible with prefilling
39
+ const useJsonPrefill = !args.outputSchema && (args.jsonMode || args.jsonSchema);
40
+ if (useJsonPrefill) {
41
+ messages.push({ role: 'user', content: userContent });
42
+ messages.push({ role: 'assistant', content: '{' });
43
+ }
44
+ else {
45
+ messages.push({ role: 'user', content: userContent });
46
+ }
47
+ let system = args.system?.content;
48
+ if (args.jsonSchema) {
49
+ const schemaInstruction = `\n\nYou must return valid JSON conforming to this schema:\n${JSON.stringify(args.jsonSchema)}`;
50
+ system = system ? system + schemaInstruction : schemaInstruction;
51
+ }
52
+ // Wrap system content with cache_control for prompt caching
53
+ const finalSystem = (system && args.cacheSystem)
54
+ ? [{ type: 'text', text: system, cache_control: { type: 'ephemeral' } }]
55
+ : system;
56
+ // Structured output config for constrained decoding
57
+ const outputConfig = args.outputSchema
58
+ ? { format: { type: 'json_schema', schema: args.outputSchema } }
59
+ : undefined;
60
+ return { messages, system: finalSystem, temperature: reqTemp, outputConfig };
61
+ }
62
+ exports.buildAnthropicRequest = buildAnthropicRequest;
63
+ function anthropic(args) {
64
+ const { apiKey, model, baseURL, temperature = 0.0, maxRetries } = args;
65
+ const client = new sdk_1.default({ apiKey, baseURL, maxRetries });
66
+ return async (completionArgs) => {
67
+ const { messages, system: systemContent, temperature: reqTemp, outputConfig } = buildAnthropicRequest(completionArgs, temperature);
68
+ const useJsonPrefill = !completionArgs.outputSchema && (completionArgs.jsonMode || completionArgs.jsonSchema);
69
+ try {
70
+ const stream = await client.messages.create({
71
+ model,
72
+ max_tokens: 32768,
73
+ temperature: reqTemp,
74
+ system: systemContent,
75
+ messages: messages,
76
+ stream: true,
77
+ ...(outputConfig && { output_config: outputConfig }),
78
+ });
79
+ let text = '';
80
+ for await (const event of stream) {
81
+ if (event.type === 'content_block_delta' && event.delta.type === 'text_delta') {
82
+ text += event.delta.text;
83
+ }
84
+ }
85
+ if (useJsonPrefill) {
86
+ text = '{' + text;
87
+ }
88
+ return { completed: true, value: text };
89
+ }
90
+ catch (err) {
91
+ let error;
92
+ if (err instanceof sdk_1.default.APIError && err.status !== undefined) {
93
+ error = new types_1.RequestError(err.message, err.status, err.name);
94
+ }
95
+ else {
96
+ error = err;
97
+ }
98
+ return { completed: false, error };
99
+ }
100
+ };
101
+ }
102
+ exports.anthropic = anthropic;
103
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/models/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chainOfThought.d.ts","sourceRoot":"","sources":["../../src/models/chainOfThought.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAA8B,MAAM,SAAS,CAAC;AAEjF,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CA0CxG"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.chainOfThought = void 0;
4
+ async function chainOfThought(args) {
5
+ const { completePrompt, question, temperature, instructions } = args;
6
+ const systemContent = instructions
7
+ ? `${instructions}\n\nYou must return your response as a JSON object with "explanation" and "answer" fields.`
8
+ : 'You must return your response as a JSON object with "explanation" and "answer" fields.';
9
+ const system = { role: 'system', content: systemContent };
10
+ const prompt = { role: 'user', content: question };
11
+ const result = await completePrompt({ prompt, system, temperature, jsonMode: true });
12
+ if (!result.completed || !result.value) {
13
+ return { completed: false, error: result.error };
14
+ }
15
+ try {
16
+ let parsed;
17
+ if (typeof result.value === 'object') {
18
+ parsed = result.value;
19
+ }
20
+ else {
21
+ let text = result.value;
22
+ // Strip markdown code fences if present
23
+ text = text.replace(/^```(?:json)?\s*/i, '').replace(/\s*```\s*$/, '');
24
+ // Extract the first JSON object from the text
25
+ const start = text.indexOf('{');
26
+ const end = text.lastIndexOf('}');
27
+ if (start !== -1 && end > start) {
28
+ text = text.substring(start, end + 1);
29
+ }
30
+ parsed = JSON.parse(text);
31
+ }
32
+ return {
33
+ completed: true,
34
+ value: {
35
+ explanation: parsed.explanation ?? '',
36
+ answer: parsed.answer ?? '',
37
+ },
38
+ };
39
+ }
40
+ catch {
41
+ return { completed: false, error: new Error('Failed to parse chain-of-thought response') };
42
+ }
43
+ }
44
+ exports.chainOfThought = chainOfThought;
45
+ //# sourceMappingURL=chainOfThought.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chainOfThought.js","sourceRoot":"","sources":["../../src/models/chainOfThought.ts"],"names":[],"mappings":";;;AAaO,KAAK,UAAU,cAAc,CAAC,IAAwB;IACzD,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAErE,MAAM,aAAa,GAAG,YAAY;QAC9B,CAAC,CAAC,GAAG,YAAY,4FAA4F;QAC7G,CAAC,CAAC,wFAAwF,CAAC;IAE/F,MAAM,MAAM,GAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IACzE,MAAM,MAAM,GAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEhE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAErF,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;QACpC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;KACpD;IAED,IAAI;QACA,IAAI,MAAW,CAAC;QAChB,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;YAClC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;SACzB;aAAM;YACH,IAAI,IAAI,GAAG,MAAM,CAAC,KAAe,CAAC;YAClC,wCAAwC;YACxC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YACvE,8CAA8C;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK,EAAE;gBAC7B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;aACzC;YACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC7B;QACD,OAAO;YACH,SAAS,EAAE,IAAI;YACf,KAAK,EAAE;gBACH,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;gBACrC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;aAC9B;SACJ,CAAC;KACL;IAAC,MAAM;QACJ,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,2CAA2C,CAAC,EAAE,CAAC;KAC9F;AACL,CAAC;AA1CD,wCA0CC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fireworksai.d.ts","sourceRoot":"","sources":["../../src/models/fireworksai.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,cAAc,EAAE,oBAAoB,EAAqC,MAAM,SAAS,CAAC;AAEnH,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAWD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA+BhD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,GAAG;IACpF,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CACpB,CA4BA;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,cAAc,CAyCjE"}