synthos 0.10.1 → 0.11.1

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 (311) hide show
  1. package/README.md +5 -5
  2. package/default-pages/elevenlabs_effects_studio/chat-history.json +1 -0
  3. package/default-pages/elevenlabs_effects_studio/page.html +1345 -1363
  4. package/default-pages/elevenlabs_effects_studio/page.json +13 -11
  5. package/default-pages/elevenlabs_voice_studio/chat-history.json +1 -0
  6. package/default-pages/elevenlabs_voice_studio/page.html +782 -801
  7. package/default-pages/elevenlabs_voice_studio/page.json +13 -11
  8. package/default-pages/json_tools/chat-history.json +1 -0
  9. package/default-pages/json_tools/page.html +70 -90
  10. package/default-pages/json_tools/page.json +12 -10
  11. package/default-pages/my_notes/chat-history.json +1 -0
  12. package/default-pages/my_notes/page.html +115 -131
  13. package/default-pages/my_notes/page.json +14 -12
  14. package/default-pages/neon_asteroids/chat-history.json +1 -0
  15. package/default-pages/neon_asteroids/page.html +1777 -1803
  16. package/default-pages/neon_asteroids/page.json +14 -12
  17. package/default-pages/oregon_trail/chat-history.json +1 -0
  18. package/default-pages/oregon_trail/page.html +290 -307
  19. package/default-pages/oregon_trail/page.json +14 -12
  20. package/default-pages/solar_explorer/chat-history.json +1 -0
  21. package/default-pages/solar_explorer/page.html +1929 -1951
  22. package/default-pages/solar_explorer/page.json +14 -12
  23. package/default-pages/solar_tutorial/chat-history.json +1 -0
  24. package/default-pages/solar_tutorial/page.html +464 -478
  25. package/default-pages/solar_tutorial/page.json +12 -10
  26. package/default-pages/us_map/chat-history.json +1 -0
  27. package/default-pages/us_map/page.html +170 -193
  28. package/default-pages/us_map/page.json +14 -12
  29. package/default-pages/us_map/page.light.png +0 -0
  30. package/default-pages/us_map_1850/chat-history.json +1 -0
  31. package/default-pages/us_map_1850/page.html +302 -326
  32. package/default-pages/us_map_1850/page.json +14 -12
  33. package/default-pages/western_cities_1850/chat-history.json +1 -0
  34. package/default-pages/western_cities_1850/page.html +503 -527
  35. package/default-pages/western_cities_1850/page.json +14 -12
  36. package/default-themes/aurora-dawn.v3.css +15 -14
  37. package/default-themes/aurora-dusk.v3.css +26 -26
  38. package/default-themes/cosmos-dawn.v3.css +15 -14
  39. package/default-themes/cosmos-dusk.v3.css +26 -26
  40. package/default-themes/elemental-dawn.v3.css +200 -0
  41. package/default-themes/nebula-dawn.v3.css +15 -14
  42. package/default-themes/nebula-dusk.v3.css +24 -24
  43. package/default-themes/solar-flare-dawn.v3.css +15 -14
  44. package/default-themes/solar-flare-dusk.v3.css +26 -26
  45. package/dist/builders/anthropic.d.ts +26 -2
  46. package/dist/builders/anthropic.d.ts.map +1 -1
  47. package/dist/builders/anthropic.js +132 -31
  48. package/dist/builders/anthropic.js.map +1 -1
  49. package/dist/builders/claudecode.d.ts +13 -0
  50. package/dist/builders/claudecode.d.ts.map +1 -0
  51. package/dist/builders/claudecode.js +253 -0
  52. package/dist/builders/claudecode.js.map +1 -0
  53. package/dist/builders/index.d.ts +2 -1
  54. package/dist/builders/index.d.ts.map +1 -1
  55. package/dist/builders/index.js +8 -1
  56. package/dist/builders/index.js.map +1 -1
  57. package/dist/builders/openai.js +2 -1
  58. package/dist/builders/openai.js.map +1 -1
  59. package/dist/builders/types.d.ts +31 -7
  60. package/dist/builders/types.d.ts.map +1 -1
  61. package/dist/builders/types.js +60 -28
  62. package/dist/builders/types.js.map +1 -1
  63. package/dist/connectors/types.d.ts +8 -0
  64. package/dist/connectors/types.d.ts.map +1 -1
  65. package/dist/init.d.ts.map +1 -1
  66. package/dist/init.js +13 -6
  67. package/dist/init.js.map +1 -1
  68. package/dist/migrations.d.ts.map +1 -1
  69. package/dist/migrations.js +161 -14
  70. package/dist/migrations.js.map +1 -1
  71. package/dist/models/anthropic.d.ts +1 -0
  72. package/dist/models/anthropic.d.ts.map +1 -1
  73. package/dist/models/anthropic.js +129 -29
  74. package/dist/models/anthropic.js.map +1 -1
  75. package/dist/models/chainOfThought.d.ts.map +1 -1
  76. package/dist/models/chainOfThought.js +32 -19
  77. package/dist/models/chainOfThought.js.map +1 -1
  78. package/dist/models/index.d.ts +2 -2
  79. package/dist/models/index.d.ts.map +1 -1
  80. package/dist/models/index.js +2 -1
  81. package/dist/models/index.js.map +1 -1
  82. package/dist/models/providers.d.ts +1 -0
  83. package/dist/models/providers.d.ts.map +1 -1
  84. package/dist/models/providers.js +12 -4
  85. package/dist/models/providers.js.map +1 -1
  86. package/dist/models/types.d.ts +15 -1
  87. package/dist/models/types.d.ts.map +1 -1
  88. package/dist/models/types.js.map +1 -1
  89. package/dist/pages.d.ts +57 -8
  90. package/dist/pages.d.ts.map +1 -1
  91. package/dist/pages.js +258 -45
  92. package/dist/pages.js.map +1 -1
  93. package/dist/service/createCompletePrompt.d.ts.map +1 -1
  94. package/dist/service/createCompletePrompt.js +5 -0
  95. package/dist/service/createCompletePrompt.js.map +1 -1
  96. package/dist/service/mediaCache.d.ts +36 -0
  97. package/dist/service/mediaCache.d.ts.map +1 -0
  98. package/dist/service/mediaCache.js +182 -0
  99. package/dist/service/mediaCache.js.map +1 -0
  100. package/dist/service/pageValidator.d.ts +25 -0
  101. package/dist/service/pageValidator.d.ts.map +1 -0
  102. package/dist/service/pageValidator.js +315 -0
  103. package/dist/service/pageValidator.js.map +1 -0
  104. package/dist/service/server.d.ts.map +1 -1
  105. package/dist/service/server.js +4 -0
  106. package/dist/service/server.js.map +1 -1
  107. package/dist/service/sharedTableSchema.d.ts +73 -0
  108. package/dist/service/sharedTableSchema.d.ts.map +1 -0
  109. package/dist/service/sharedTableSchema.js +206 -0
  110. package/dist/service/sharedTableSchema.js.map +1 -0
  111. package/dist/service/transformPage.d.ts +49 -11
  112. package/dist/service/transformPage.d.ts.map +1 -1
  113. package/dist/service/transformPage.js +354 -241
  114. package/dist/service/transformPage.js.map +1 -1
  115. package/dist/service/useApiRoutes.d.ts.map +1 -1
  116. package/dist/service/useApiRoutes.js +285 -34
  117. package/dist/service/useApiRoutes.js.map +1 -1
  118. package/dist/service/useConnectorRoutes.d.ts.map +1 -1
  119. package/dist/service/useConnectorRoutes.js +170 -32
  120. package/dist/service/useConnectorRoutes.js.map +1 -1
  121. package/dist/service/useDataRoutes.d.ts.map +1 -1
  122. package/dist/service/useDataRoutes.js +59 -2
  123. package/dist/service/useDataRoutes.js.map +1 -1
  124. package/dist/service/useExtractRoutes.d.ts +4 -0
  125. package/dist/service/useExtractRoutes.d.ts.map +1 -0
  126. package/dist/service/useExtractRoutes.js +304 -0
  127. package/dist/service/useExtractRoutes.js.map +1 -0
  128. package/dist/service/usePageRoutes.d.ts +17 -0
  129. package/dist/service/usePageRoutes.d.ts.map +1 -1
  130. package/dist/service/usePageRoutes.js +1388 -483
  131. package/dist/service/usePageRoutes.js.map +1 -1
  132. package/dist/service/useSharedDataRoutes.d.ts.map +1 -1
  133. package/dist/service/useSharedDataRoutes.js +54 -2
  134. package/dist/service/useSharedDataRoutes.js.map +1 -1
  135. package/dist/settings.d.ts +27 -0
  136. package/dist/settings.d.ts.map +1 -1
  137. package/dist/settings.js +40 -1
  138. package/dist/settings.js.map +1 -1
  139. package/dist/themes.d.ts +0 -5
  140. package/dist/themes.d.ts.map +1 -1
  141. package/dist/themes.js +3 -95
  142. package/dist/themes.js.map +1 -1
  143. package/migration-rules/v2-to-v3.md +277 -119
  144. package/package.json +5 -1
  145. package/{default-pages/application → required-pages/_shell}/page.html +56 -42
  146. package/required-pages/_shell/page.json +14 -0
  147. package/required-pages/_starters/page.html +534 -0
  148. package/required-pages/_starters/page.json +12 -0
  149. package/required-pages/builder/page.html +353 -43
  150. package/required-pages/builder/page.json +12 -10
  151. package/required-pages/pages/page.html +697 -924
  152. package/required-pages/pages/page.json +12 -10
  153. package/required-pages/settings/page.html +1888 -1753
  154. package/required-pages/settings/page.json +12 -10
  155. package/required-pages/synthos_apis/page.html +834 -845
  156. package/required-pages/synthos_apis/page.json +12 -10
  157. package/required-pages/synthos_scripts/page.html +74 -88
  158. package/required-pages/synthos_scripts/page.json +12 -10
  159. package/scripts/append-instructions.py +90 -0
  160. package/scripts/audit-instructions.py +76 -0
  161. package/scripts/cleanup-shell-markup.mjs +112 -0
  162. package/service-connectors/buffer/connector.json +46 -0
  163. package/service-connectors/canva/connector.json +67 -0
  164. package/service-connectors/elevenlabs/connector.json +1 -1
  165. package/src/builders/anthropic.ts +150 -25
  166. package/src/builders/claudecode.ts +310 -0
  167. package/src/builders/index.ts +7 -1
  168. package/src/builders/openai.ts +2 -1
  169. package/src/builders/types.ts +93 -32
  170. package/src/connectors/types.ts +8 -0
  171. package/src/init.ts +13 -7
  172. package/src/migrations.ts +187 -16
  173. package/src/models/anthropic.ts +140 -30
  174. package/src/models/chainOfThought.ts +33 -18
  175. package/src/models/index.ts +2 -2
  176. package/src/models/providers.ts +10 -1
  177. package/src/models/types.ts +21 -1
  178. package/src/pages.ts +271 -35
  179. package/src/service/createCompletePrompt.ts +6 -0
  180. package/src/service/mediaCache.ts +206 -0
  181. package/src/service/pageValidator.ts +337 -0
  182. package/src/service/server.ts +4 -0
  183. package/src/service/sharedTableSchema.ts +236 -0
  184. package/src/service/transformPage.ts +370 -260
  185. package/src/service/useApiRoutes.ts +283 -32
  186. package/src/service/useConnectorRoutes.ts +189 -34
  187. package/src/service/useDataRoutes.ts +198 -116
  188. package/src/service/useExtractRoutes.ts +331 -0
  189. package/src/service/usePageRoutes.ts +1414 -394
  190. package/src/service/useSharedDataRoutes.ts +184 -109
  191. package/src/settings.ts +65 -0
  192. package/src/themes.ts +78 -180
  193. package/starters/blank_starter/chat-history.json +1 -0
  194. package/starters/blank_starter/page.dark.png +0 -0
  195. package/starters/blank_starter/page.html +47 -0
  196. package/starters/blank_starter/page.json +13 -0
  197. package/starters/blank_starter/page.light.png +0 -0
  198. package/starters/calculator_starter/chat-history.json +1 -0
  199. package/starters/calculator_starter/page.dark.png +0 -0
  200. package/starters/calculator_starter/page.html +232 -0
  201. package/starters/calculator_starter/page.json +13 -0
  202. package/starters/calculator_starter/page.light.png +0 -0
  203. package/starters/calendar_starter/chat-history.json +1 -0
  204. package/starters/calendar_starter/page.dark.png +0 -0
  205. package/starters/calendar_starter/page.html +495 -0
  206. package/starters/calendar_starter/page.json +13 -0
  207. package/starters/calendar_starter/page.light.png +0 -0
  208. package/starters/chat_starter/chat-history.json +1 -0
  209. package/starters/chat_starter/page.dark.png +0 -0
  210. package/starters/chat_starter/page.html +351 -0
  211. package/starters/chat_starter/page.json +13 -0
  212. package/starters/chat_starter/page.light.png +0 -0
  213. package/starters/checklist_starter/chat-history.json +1 -0
  214. package/starters/checklist_starter/page.dark.png +0 -0
  215. package/starters/checklist_starter/page.html +437 -0
  216. package/starters/checklist_starter/page.json +13 -0
  217. package/starters/checklist_starter/page.light.png +0 -0
  218. package/starters/dashboard_starter/chat-history.json +1 -0
  219. package/starters/dashboard_starter/page.dark.png +0 -0
  220. package/starters/dashboard_starter/page.html +195 -0
  221. package/starters/dashboard_starter/page.json +13 -0
  222. package/starters/dashboard_starter/page.light.png +0 -0
  223. package/starters/form_starter/chat-history.json +1 -0
  224. package/starters/form_starter/page.dark.png +0 -0
  225. package/starters/form_starter/page.html +313 -0
  226. package/starters/form_starter/page.json +13 -0
  227. package/starters/form_starter/page.light.png +0 -0
  228. package/starters/gallery_starter/chat-history.json +1 -0
  229. package/starters/gallery_starter/page.dark.png +0 -0
  230. package/starters/gallery_starter/page.html +418 -0
  231. package/starters/gallery_starter/page.json +13 -0
  232. package/starters/gallery_starter/page.light.png +0 -0
  233. package/starters/generator_starter/chat-history.json +1 -0
  234. package/starters/generator_starter/page.dark.png +0 -0
  235. package/starters/generator_starter/page.html +261 -0
  236. package/starters/generator_starter/page.json +13 -0
  237. package/starters/generator_starter/page.light.png +0 -0
  238. package/starters/index.html +538 -0
  239. package/starters/kanban_starter/chat-history.json +1 -0
  240. package/starters/kanban_starter/page.dark.png +0 -0
  241. package/starters/kanban_starter/page.html +432 -0
  242. package/starters/kanban_starter/page.json +13 -0
  243. package/starters/kanban_starter/page.light.png +0 -0
  244. package/starters/presentation_builder/chat-history.json +1 -0
  245. package/starters/presentation_builder/page.dark.png +0 -0
  246. package/starters/presentation_builder/page.html +970 -0
  247. package/starters/presentation_builder/page.json +15 -0
  248. package/starters/presentation_builder/page.light.png +0 -0
  249. package/starters/presentation_builder/presentation_voice/voice_config.json +9 -0
  250. package/starters/pulse_starter/chat-history.json +1 -0
  251. package/starters/pulse_starter/page.dark.png +0 -0
  252. package/starters/pulse_starter/page.html +698 -0
  253. package/starters/pulse_starter/page.json +13 -0
  254. package/starters/pulse_starter/page.light.png +0 -0
  255. package/starters/quiz_starter/chat-history.json +1 -0
  256. package/starters/quiz_starter/page.dark.png +0 -0
  257. package/starters/quiz_starter/page.html +292 -0
  258. package/starters/quiz_starter/page.json +13 -0
  259. package/starters/quiz_starter/page.light.png +0 -0
  260. package/starters/reference_starter/chat-history.json +1 -0
  261. package/starters/reference_starter/page.dark.png +0 -0
  262. package/starters/reference_starter/page.html +250 -0
  263. package/starters/reference_starter/page.json +13 -0
  264. package/starters/reference_starter/page.light.png +0 -0
  265. package/starters/retro_game_starter/chat-history.json +1 -0
  266. package/starters/retro_game_starter/page.dark.png +0 -0
  267. package/{default-pages → starters}/retro_game_starter/page.html +1281 -1308
  268. package/starters/retro_game_starter/page.json +15 -0
  269. package/starters/retro_game_starter/page.light.png +0 -0
  270. package/starters/roster_starter/chat-history.json +1 -0
  271. package/starters/roster_starter/page.dark.png +0 -0
  272. package/starters/roster_starter/page.html +600 -0
  273. package/starters/roster_starter/page.json +13 -0
  274. package/starters/roster_starter/page.light.png +0 -0
  275. package/starters/server.js +182 -0
  276. package/starters/start.cmd +1 -0
  277. package/starters/timeline_starter/chat-history.json +1 -0
  278. package/starters/timeline_starter/page.dark.png +0 -0
  279. package/starters/timeline_starter/page.html +446 -0
  280. package/starters/timeline_starter/page.json +13 -0
  281. package/starters/timeline_starter/page.light.png +0 -0
  282. package/starters/tutorial_starter/chat-history.json +1 -0
  283. package/starters/tutorial_starter/page.dark.png +0 -0
  284. package/starters/tutorial_starter/page.html +283 -0
  285. package/starters/tutorial_starter/page.json +13 -0
  286. package/starters/tutorial_starter/page.light.png +0 -0
  287. package/static-files/agent.v3.js +122 -0
  288. package/static-files/connector.v3.js +48 -0
  289. package/static-files/extract.v3.js +188 -0
  290. package/static-files/helpers.v3.js +50 -6
  291. package/static-files/page-bridge.js +114 -0
  292. package/static-files/page.v3.js +1292 -1290
  293. package/static-files/script.v3.js +32 -0
  294. package/static-files/server.v3.js +89 -0
  295. package/static-files/shell-bridge.v3.js +174 -0
  296. package/static-files/shell-modals.v3.js +521 -0
  297. package/static-files/{shell.css → shell.v3.css} +271 -22
  298. package/static-files/shell.v3.js +1865 -0
  299. package/static-files/storage.v3.js +176 -0
  300. package/tests/anthropic.spec.ts +42 -7
  301. package/tests/builders.spec.ts +70 -2
  302. package/tests/pageValidator.spec.ts +548 -0
  303. package/tests/profiles.spec.ts +122 -0
  304. package/tests/sharedTableSchema.spec.ts +242 -0
  305. package/tests/transformPage.spec.ts +62 -81
  306. package/default-pages/application/page.json +0 -10
  307. package/default-pages/retro_game_starter/page.json +0 -12
  308. package/default-pages/sidebar_page/page.html +0 -51
  309. package/default-pages/sidebar_page/page.json +0 -10
  310. package/default-pages/two-panel_page/page.html +0 -68
  311. package/default-pages/two-panel_page/page.json +0 -10
@@ -14,27 +14,27 @@
14
14
  --themeDarker: #7a4310;
15
15
  --themeSecondary: #eb9950;
16
16
  --themeTertiary: #f0b67e;
17
- --themeLight: #f7d6b3;
18
- --themeLighter: #fbe9d5;
19
- --themeLighterAlt: #fdf5ec;
17
+ --themeLight: #3a2510;
18
+ --themeLighter: #301e0c;
19
+ --themeLighterAlt: #261808;
20
20
 
21
21
  /* -----------------------------------------------------------------------
22
- PALETTE — Neutrals (inverted for dark mode, warm amber-tinted)
22
+ PALETTE — Neutrals (standardized grayscale, dark mode)
23
23
  ----------------------------------------------------------------------- */
24
24
  --black: #000000;
25
- --neutralDarker: #1a120a;
26
- --neutralDark: #241a10;
27
- --neutralPrimary: #2e1e0e;
28
- --neutralPrimaryAlt: #3c2a16;
29
- --neutralSecondary: #52381e;
30
- --neutralSecondaryAlt: #6a4a28;
31
- --neutralTertiary: #8a6840;
32
- --neutralTertiaryAlt: #f0b67e;
33
- --neutralQuaternary: #9d8a70;
34
- --neutralQuaternaryAlt: #b5a48e;
35
- --neutralLight: #c8b898;
36
- --neutralLighter: #e0d5c6;
37
- --neutralLighterAlt: #f0e6d8;
25
+ --neutralDarker: #0a0a0a;
26
+ --neutralDark: #141414;
27
+ --neutralPrimary: #1b1b1b;
28
+ --neutralPrimaryAlt: #242424;
29
+ --neutralSecondary: #2e2e2e;
30
+ --neutralSecondaryAlt: #3b3b3b;
31
+ --neutralTertiary: #595959;
32
+ --neutralTertiaryAlt: #7a7a7a;
33
+ --neutralQuaternary: #8a8a8a;
34
+ --neutralQuaternaryAlt: #9a9a9a;
35
+ --neutralLight: #afafaf;
36
+ --neutralLighter: #e0e0e0;
37
+ --neutralLighterAlt: #f0f0f0;
38
38
  --white: #ffffff;
39
39
 
40
40
  /* -----------------------------------------------------------------------
@@ -54,10 +54,10 @@
54
54
  --bodyText: var(--neutralLighter);
55
55
  --bodyTextChecked: var(--white);
56
56
  --bodySubtext: var(--neutralTertiaryAlt);
57
- --disabledText: var(--neutralSecondary);
58
- --disabledBodyText: var(--neutralSecondary);
59
- --disabledSubtext: var(--neutralSecondaryAlt);
60
- --disabledBodySubtext: var(--neutralSecondary);
57
+ --disabledText: var(--neutralTertiary);
58
+ --disabledBodyText: var(--neutralTertiary);
59
+ --disabledSubtext: var(--neutralTertiary);
60
+ --disabledBodySubtext: var(--neutralTertiary);
61
61
 
62
62
  /* -----------------------------------------------------------------------
63
63
  LINKS
@@ -75,15 +75,15 @@
75
75
  --buttonBackgroundChecked: var(--neutralSecondary);
76
76
  --buttonBackgroundCheckedHovered: var(--neutralSecondaryAlt);
77
77
  --buttonBackgroundPressed: var(--neutralSecondary);
78
- --buttonBackgroundDisabled: var(--neutralDark);
78
+ --buttonBackgroundDisabled: var(--neutralSecondaryAlt);
79
79
  --buttonBorder: var(--neutralSecondaryAlt);
80
- --buttonBorderDisabled: var(--neutralDark);
80
+ --buttonBorderDisabled: var(--neutralTertiary);
81
81
  --buttonText: var(--neutralLighter);
82
82
  --buttonTextHovered: var(--white);
83
83
  --buttonTextChecked: var(--white);
84
84
  --buttonTextCheckedHovered: var(--white);
85
85
  --buttonTextPressed: var(--white);
86
- --buttonTextDisabled: var(--neutralSecondary);
86
+ --buttonTextDisabled: var(--neutralQuaternary);
87
87
 
88
88
  /* -----------------------------------------------------------------------
89
89
  BUTTONS — Primary
@@ -91,12 +91,12 @@
91
91
  --primaryButtonBackground: var(--themePrimary);
92
92
  --primaryButtonBackgroundHovered: var(--themeDarkAlt);
93
93
  --primaryButtonBackgroundPressed: var(--themeDark);
94
- --primaryButtonBackgroundDisabled: var(--neutralDark);
94
+ --primaryButtonBackgroundDisabled: var(--neutralSecondaryAlt);
95
95
  --primaryButtonBorder: transparent;
96
96
  --primaryButtonText: var(--white);
97
97
  --primaryButtonTextHovered: var(--white);
98
98
  --primaryButtonTextPressed: var(--white);
99
- --primaryButtonTextDisabled: var(--neutralSecondary);
99
+ --primaryButtonTextDisabled: var(--neutralQuaternary);
100
100
 
101
101
  /* -----------------------------------------------------------------------
102
102
  BUTTONS — Accent
@@ -1,4 +1,5 @@
1
1
  import { completePrompt } from '../models';
2
+ import { ToolDefinition, ToolHandler } from '../models/types';
2
3
  import { Attachment, Builder, BuilderResult, ContextSection } from './types';
3
4
  export interface AnthropicBuilderOptions {
4
5
  apiKey?: string;
@@ -9,14 +10,32 @@ export interface AnthropicBuilderOptions {
9
10
  isFirstEdit?: boolean;
10
11
  /** When true, retry the last edit — forces Opus + no ranged writes, skips classification. */
11
12
  tryAgain?: boolean;
13
+ /** Number of messages in the chat history (used for early-conversation bypass). */
14
+ historyLength?: number;
15
+ /** Pre-computed classification result — skips re-classifying in the builder. */
16
+ preClassified?: ClassifyResult;
12
17
  }
13
18
  export type Classification = 'question' | 'easy-change' | 'medium-change' | 'hard-change' | 're-write';
19
+ /** Sketches passed to the classifier so it can decide which sections to expand. */
20
+ export interface ClassifierSection {
21
+ /** Section title (e.g. "<CONFIGURED_AGENTS>"). */
22
+ title: string;
23
+ /** Compact one-line summary the classifier reads. */
24
+ sketch: string;
25
+ }
14
26
  export interface ClassifyResult {
15
27
  classification: Classification;
16
28
  /** When classification is "question", this contains the answer text. */
17
29
  answer?: string;
30
+ /** Section titles the classifier picked to render in full. Empty = render all sketches. */
31
+ expand: string[];
18
32
  }
19
- export declare function classifyRequest(apiKey: string, pageHtml: string, userMessage: string): Promise<ClassifyResult>;
33
+ export declare function classifyRequest(apiKey: string, pageHtml: string, userMessage: string, sections?: ClassifierSection[]): Promise<ClassifyResult>;
34
+ /**
35
+ * Returns true when the message is very likely a pure information question
36
+ * (no intent to modify the page). Used to bypass the full Sonnet classifier.
37
+ */
38
+ export declare function isLikelyQuestion(message: string): boolean;
20
39
  /**
21
40
  * Create an Anthropic-tuned builder.
22
41
  *
@@ -26,6 +45,11 @@ export declare function classifyRequest(apiKey: string, pageHtml: string, userMe
26
45
  * @param options Optional API key and model name for classifier routing.
27
46
  */
28
47
  export declare function createAnthropicBuilder(complete: completePrompt, userInstructions?: string, productName?: string, options?: AnthropicBuilderOptions): Builder;
29
- export declare function buildWithModel(model: completePrompt, currentPage: ContextSection, additionalSections: ContextSection[], userMessage: string, userInstructions: string | undefined, productName: string, attachments?: Attachment[], outputSchema?: Record<string, unknown>): Promise<BuilderResult>;
48
+ /**
49
+ * Appended to <INSTRUCTIONS> when tools are bound so the model knows it may
50
+ * fetch additional context on demand.
51
+ */
52
+ export declare const TOOLS_INSTRUCTION_HINT = "You may call the provided tools to load additional context only if you need it. You may call multiple tools in parallel in a single turn.";
53
+ export declare function buildWithModel(model: completePrompt, currentPage: ContextSection, additionalSections: ContextSection[], userMessage: string, userInstructions: string | undefined, productName: string, attachments?: Attachment[], outputSchema?: Record<string, unknown>, tools?: ToolDefinition[], toolHandlers?: Record<string, ToolHandler>, onToolCall?: (names: string[]) => void): Promise<BuilderResult>;
30
54
  export declare function parseBuilderResponse(raw: string): BuilderResult;
31
55
  //# sourceMappingURL=anthropic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/builders/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,cAAc,EAAgB,MAAM,WAAW,CAAC;AAE5F,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAkD,cAAc,EAAE,MAAM,SAAS,CAAC;AAM7H,MAAM,WAAW,uBAAuB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yFAAyF;IACzF,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,cAAc,CAAC;IACtD,kGAAkG;IAClG,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,aAAa,GAAG,eAAe,GAAG,aAAa,GAAG,UAAU,CAAC;AAEvG,MAAM,WAAW,cAAc;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAqBD,wBAAsB,eAAe,CACjC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,cAAc,CAAC,CAyBzB;AAMD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAClC,QAAQ,EAAE,cAAc,EACxB,gBAAgB,CAAC,EAAE,MAAM,EACzB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,uBAAuB,GAClC,OAAO,CAsET;AAMD,wBAAsB,cAAc,CAChC,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE,cAAc,EAC3B,kBAAkB,EAAE,cAAc,EAAE,EACpC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,UAAU,EAAE,EAC1B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvC,OAAO,CAAC,aAAa,CAAC,CAsDxB;AAkBD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CA2B/D"}
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/builders/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,cAAc,EAAgB,MAAM,WAAW,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAkD,cAAc,EAAE,MAAM,SAAS,CAAC;AAM7H,MAAM,WAAW,uBAAuB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yFAAyF;IACzF,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,cAAc,CAAC;IACtD,kGAAkG;IAClG,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mFAAmF;IACnF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,aAAa,CAAC,EAAE,cAAc,CAAC;CAClC;AAMD,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,aAAa,GAAG,eAAe,GAAG,aAAa,GAAG,UAAU,CAAC;AAEvG,mFAAmF;AACnF,MAAM,WAAW,iBAAiB;IAC9B,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AA4BD,wBAAsB,eAAe,CACjC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,iBAAiB,EAAE,GAC/B,OAAO,CAAC,cAAc,CAAC,CAkCzB;AAwBD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAMzD;AAMD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAClC,QAAQ,EAAE,cAAc,EACxB,gBAAgB,CAAC,EAAE,MAAM,EACzB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,uBAAuB,GAClC,OAAO,CAgHT;AAMD;;;GAGG;AACH,eAAO,MAAM,sBAAsB,8IAA8I,CAAC;AAElL,wBAAsB,cAAc,CAChC,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE,cAAc,EAC3B,kBAAkB,EAAE,cAAc,EAAE,EACpC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,UAAU,EAAE,EAC1B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,KAAK,CAAC,EAAE,cAAc,EAAE,EACxB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAC1C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,GACvC,OAAO,CAAC,aAAa,CAAC,CA0DxB;AAkBD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CA+B/D"}
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseBuilderResponse = exports.buildWithModel = exports.createAnthropicBuilder = exports.classifyRequest = void 0;
3
+ exports.parseBuilderResponse = exports.buildWithModel = exports.TOOLS_INSTRUCTION_HINT = exports.createAnthropicBuilder = exports.isLikelyQuestion = exports.classifyRequest = void 0;
4
4
  const models_1 = require("../models");
5
5
  const transformPage_1 = require("../service/transformPage");
6
6
  const types_1 = require("./types");
7
- const CLASSIFIER_SYSTEM_PROMPT = `You classify user messages for a web page builder. Default to a change request. Only classify as "question" when the user is purely asking for information with zero implication that anything should change.
7
+ const CLASSIFIER_SYSTEM_PROMPT = `You classify user messages for a web page builder and pick which context sections the builder needs. Default to a change request. Only classify as "question" when the user is purely asking for information with zero implication that anything should change.
8
8
 
9
9
  <DECISION_RULES>
10
10
  Step 1 — Is this a pure information question with zero change implication?
@@ -18,36 +18,86 @@ Step 2 — Classify complexity:
18
18
  "hard-change": Complex new features, significant new JS, games, animations, restructuring layout, forms with validation, multi-step work.
19
19
  "re-write": Complete page overhaul, fundamental restructure, "start over", "rebuild", "redo the whole page".
20
20
 
21
+ Step 3 — Which context sections does the model need to fulfill this request?
22
+ Read the AVAILABLE_SECTIONS list in the user message — each line is "<SECTION_TITLE>: <one-line sketch>" describing what's in the section.
23
+ Return an "expand" array of section titles (matching exactly, including the angle brackets) the model needs in full.
24
+ Include a title only if the page currently uses that feature OR the user's request will likely require it.
25
+ Sections you don't expand will still be visible to the model as their sketch — so the model knows the section exists, just not the full content.
26
+ Omit sections that are clearly unrelated to this request.
27
+
21
28
  <OUTPUT_FORMAT>
22
29
  Return only JSON. No other text.
23
- - Change: { "classification": "easy-change" } or { "classification": "medium-change" } or { "classification": "hard-change" } or { "classification": "re-write" }
24
- - Question: { "classification": "question", "answer": "<brief answer>" }`;
25
- async function classifyRequest(apiKey, pageHtml, userMessage) {
30
+ - Change: { "classification": "easy-change", "expand": ["<FLUENTLM_COMPONENTS>"] }
31
+ - Question: { "classification": "question", "answer": "<brief answer>", "expand": [] }`;
32
+ async function classifyRequest(apiKey, pageHtml, userMessage, sections) {
26
33
  try {
27
- const sonnet = (0, models_1.anthropic)({ apiKey, model: 'claude-sonnet-4-5' });
34
+ const sonnet = (0, models_1.anthropic)({ apiKey, model: 'claude-sonnet-4-6' });
35
+ const sectionList = (sections ?? [])
36
+ .map(s => `${s.title}: ${s.sketch}`)
37
+ .join('\n');
38
+ const sectionsBlock = sectionList
39
+ ? `\n\n<AVAILABLE_SECTIONS>\n${sectionList}`
40
+ : '';
28
41
  const result = await sonnet({
29
42
  system: { role: 'system', content: CLASSIFIER_SYSTEM_PROMPT },
30
- prompt: { role: 'user', content: `<PAGE_HTML>\n${pageHtml}\n\n<USER_MESSAGE>\n${userMessage}` },
43
+ prompt: { role: 'user', content: `<PAGE_HTML>\n${pageHtml}\n\n<USER_MESSAGE>\n${userMessage}${sectionsBlock}` },
31
44
  jsonMode: true,
32
45
  });
33
46
  if (!result.completed || !result.value) {
34
- return { classification: 'hard-change' };
47
+ return { classification: 'hard-change', expand: [] };
35
48
  }
36
49
  const parsed = JSON.parse(result.value);
37
50
  const c = parsed.classification;
51
+ const allowed = new Set((sections ?? []).map(s => s.title));
52
+ const expand = parseExpand(parsed.expand, allowed);
38
53
  if (c === 'question') {
39
- return { classification: 'question', answer: typeof parsed.answer === 'string' ? parsed.answer : '' };
54
+ return { classification: 'question', answer: typeof parsed.answer === 'string' ? parsed.answer : '', expand };
40
55
  }
41
56
  if (c === 'easy-change' || c === 'medium-change' || c === 'hard-change' || c === 're-write') {
42
- return { classification: c };
57
+ return { classification: c, expand };
43
58
  }
44
- return { classification: 'hard-change' };
59
+ return { classification: 'hard-change', expand };
45
60
  }
46
61
  catch {
47
- return { classification: 'hard-change' };
62
+ return { classification: 'hard-change', expand: [] };
48
63
  }
49
64
  }
50
65
  exports.classifyRequest = classifyRequest;
66
+ /**
67
+ * Validate the classifier's expand[] against the set of titles it was offered.
68
+ * Unknown / non-string entries are dropped silently.
69
+ */
70
+ function parseExpand(raw, allowed) {
71
+ if (!Array.isArray(raw))
72
+ return [];
73
+ const out = [];
74
+ for (const item of raw) {
75
+ if (typeof item === 'string' && allowed.has(item)) {
76
+ out.push(item);
77
+ }
78
+ }
79
+ return out;
80
+ }
81
+ // ---------------------------------------------------------------------------
82
+ // Lightweight question heuristic — replaces Sonnet classifier for Q&A detection
83
+ // ---------------------------------------------------------------------------
84
+ const QUESTION_WORDS = /^(?:what|how|why|where|when|which|is|are|does|do|can|could|should|would|will)\b/i;
85
+ const ACTION_VERBS = /\b(?:add|change|make|create|build|fix|update|remove|delete|move|replace|resize|rewrite|redo|redesign)\b/i;
86
+ /**
87
+ * Returns true when the message is very likely a pure information question
88
+ * (no intent to modify the page). Used to bypass the full Sonnet classifier.
89
+ */
90
+ function isLikelyQuestion(message) {
91
+ const trimmed = message.trim();
92
+ if (!trimmed.endsWith('?'))
93
+ return false;
94
+ if (!QUESTION_WORDS.test(trimmed))
95
+ return false;
96
+ if (ACTION_VERBS.test(trimmed))
97
+ return false;
98
+ return true;
99
+ }
100
+ exports.isLikelyQuestion = isLikelyQuestion;
51
101
  // ---------------------------------------------------------------------------
52
102
  // Anthropic builder factory
53
103
  // ---------------------------------------------------------------------------
@@ -62,28 +112,28 @@ exports.classifyRequest = classifyRequest;
62
112
  function createAnthropicBuilder(complete, userInstructions, productName, options) {
63
113
  const name = productName ?? 'SynthOS';
64
114
  return {
65
- async run(currentPage, additionalSections, userMessage, newBuild, attachments) {
115
+ async run(currentPage, additionalSections, userMessage, newBuild, attachments, tools, toolHandlers, onToolCall) {
66
116
  try {
67
117
  const isOpus = options?.model?.startsWith('claude-opus-');
68
118
  const noRanged = types_1.CHANGE_OPS_SCHEMA_NO_RANGED;
69
119
  // Non-Opus models or missing apiKey: existing behavior
70
120
  if (!isOpus || !options?.apiKey) {
71
- return buildWithModel(complete, currentPage, additionalSections, userMessage, userInstructions, name, attachments);
121
+ return buildWithModel(complete, currentPage, additionalSections, userMessage, userInstructions, name, attachments, undefined, tools, toolHandlers, onToolCall);
72
122
  }
73
123
  // Console errors bypass classification — always route to Opus with no ranged writes
74
124
  if (userMessage.includes('CONSOLE_ERRORS:')) {
75
125
  console.log('classifyRequest: console errors detected → routing to ' + options.model + ' (no ranged)');
76
- return buildWithModel(complete, currentPage, additionalSections, userMessage, userInstructions, name, attachments, noRanged);
126
+ return buildWithModel(complete, currentPage, additionalSections, userMessage, userInstructions, name, attachments, noRanged, tools, toolHandlers, onToolCall);
77
127
  }
78
128
  // New builds always use Opus with no ranged writes
79
129
  if (newBuild) {
80
130
  console.log('classifyRequest: new build → routing to ' + options.model + ' (no ranged)');
81
- return buildWithModel(complete, currentPage, additionalSections, userMessage, userInstructions, name, attachments, noRanged);
131
+ return buildWithModel(complete, currentPage, additionalSections, userMessage, userInstructions, name, attachments, noRanged, tools, toolHandlers, onToolCall);
82
132
  }
83
133
  // First edit to a saved page (v0→v1) — force Opus with no ranged writes
84
134
  if (options?.isFirstEdit) {
85
135
  console.log('classifyRequest: first edit (v0→v1) → routing to ' + options.model + ' (no ranged)');
86
- return buildWithModel(complete, currentPage, additionalSections, userMessage, userInstructions, name, attachments, noRanged);
136
+ return buildWithModel(complete, currentPage, additionalSections, userMessage, userInstructions, name, attachments, noRanged, tools, toolHandlers, onToolCall);
87
137
  }
88
138
  // Try again — force Opus with no ranged writes, skip classification
89
139
  if (options?.tryAgain) {
@@ -91,31 +141,69 @@ function createAnthropicBuilder(complete, userInstructions, productName, options
91
141
  let opus = (0, models_1.anthropic)({ apiKey: options.apiKey, model: 'claude-opus-4-6' });
92
142
  if (options.wrapModel)
93
143
  opus = options.wrapModel(opus);
94
- return buildWithModel(opus, currentPage, additionalSections, userMessage, userInstructions, name, attachments, noRanged);
144
+ return buildWithModel(opus, currentPage, additionalSections, userMessage, userInstructions, name, attachments, noRanged, tools, toolHandlers, onToolCall);
145
+ }
146
+ // --- Opt-1: Smart classification bypass ---
147
+ // Small pages (<5KB) — Opus cost delta is negligible; classifier cost exceeds savings
148
+ if (currentPage.content.length < 5_000) {
149
+ console.log('classifyRequest: small page (<5KB) → routing to ' + options.model + ' (no ranged, bypass)');
150
+ return buildWithModel(complete, currentPage, additionalSections, userMessage, userInstructions, name, attachments, noRanged, tools, toolHandlers, onToolCall);
151
+ }
152
+ // Image attachments — always structural changes; classifier can't inspect images
153
+ if (attachments && attachments.length > 0) {
154
+ console.log('classifyRequest: image attachments → routing to ' + options.model + ' (no ranged, bypass)');
155
+ return buildWithModel(complete, currentPage, additionalSections, userMessage, userInstructions, name, attachments, noRanged, tools, toolHandlers, onToolCall);
156
+ }
157
+ // Early conversations (history <= 2) — almost always builds/edits
158
+ if (typeof options.historyLength === 'number' && options.historyLength <= 2) {
159
+ console.log('classifyRequest: early conversation (history <= 2) → routing to ' + options.model + ' (no ranged, bypass)');
160
+ return buildWithModel(complete, currentPage, additionalSections, userMessage, userInstructions, name, attachments, noRanged, tools, toolHandlers, onToolCall);
161
+ }
162
+ // Keyword-based Q&A detection — lightweight heuristic replaces full-page Sonnet call
163
+ if (isLikelyQuestion(userMessage)) {
164
+ console.log('classifyRequest: likely question (heuristic) → routing to claude-sonnet-4-6 (Q&A, no page HTML)');
165
+ let sonnet = (0, models_1.anthropic)({ apiKey: options.apiKey, model: 'claude-sonnet-4-6' });
166
+ if (options.wrapModel)
167
+ sonnet = options.wrapModel(sonnet);
168
+ // Lightweight Q&A call — send only user message + page summary, not full HTML
169
+ const pageTitle = currentPage.content.match(/<title[^>]*>([^<]*)<\/title>/i)?.[1] ?? 'untitled';
170
+ const elementCount = (currentPage.content.match(/<[a-z]/gi) ?? []).length;
171
+ const pageSummary = `Page: "${pageTitle}" (${elementCount} elements)`;
172
+ const qaResult = await sonnet({
173
+ system: { role: 'system', content: 'You are a helpful assistant for a web page builder. Answer the user\'s question briefly and accurately based on the page summary provided.' },
174
+ prompt: { role: 'user', content: `${pageSummary}\n\n${userMessage}` },
175
+ });
176
+ if (qaResult.completed && qaResult.value) {
177
+ return { kind: 'reply', text: qaResult.value };
178
+ }
179
+ // Fallback to classifier if Q&A call fails
180
+ }
181
+ // Classify the request — use pre-computed result if available, otherwise call Sonnet
182
+ const classifyResult = options.preClassified
183
+ ?? await classifyRequest(options.apiKey, currentPage.content, userMessage);
184
+ if (!options.preClassified) {
185
+ console.log(`classifyRequest: "${classifyResult.classification}" → routing to ${routeLabel(classifyResult.classification, options.model)}`);
95
186
  }
96
- // Classify the request using Sonnet
97
- const classifyResult = await classifyRequest(options.apiKey, currentPage.content, userMessage);
98
- console.log(`classifyRequest: "${classifyResult.classification}" → routing to ${routeLabel(classifyResult.classification, options.model)}`);
99
187
  // Questions — answer was already provided by the classifier
100
188
  if (classifyResult.classification === 'question') {
101
189
  return { kind: 'reply', text: classifyResult.answer ?? '' };
102
190
  }
103
191
  // Easy changes use Sonnet with default schema (ranged allowed)
104
192
  if (classifyResult.classification === 'easy-change') {
105
- let sonnet = (0, models_1.anthropic)({ apiKey: options.apiKey, model: 'claude-sonnet-4-5' });
193
+ let sonnet = (0, models_1.anthropic)({ apiKey: options.apiKey, model: 'claude-sonnet-4-6' });
106
194
  if (options.wrapModel)
107
195
  sonnet = options.wrapModel(sonnet);
108
- return buildWithModel(sonnet, currentPage, additionalSections, userMessage, userInstructions, name, attachments);
196
+ return buildWithModel(sonnet, currentPage, additionalSections, userMessage, userInstructions, name, attachments, undefined, tools, toolHandlers, onToolCall);
109
197
  }
110
198
  // Medium changes use Sonnet with no ranged writes
111
199
  if (classifyResult.classification === 'medium-change') {
112
- let sonnet = (0, models_1.anthropic)({ apiKey: options.apiKey, model: 'claude-sonnet-4-5' });
200
+ let sonnet = (0, models_1.anthropic)({ apiKey: options.apiKey, model: 'claude-sonnet-4-6' });
113
201
  if (options.wrapModel)
114
202
  sonnet = options.wrapModel(sonnet);
115
- return buildWithModel(sonnet, currentPage, additionalSections, userMessage, userInstructions, name, attachments, noRanged);
203
+ return buildWithModel(sonnet, currentPage, additionalSections, userMessage, userInstructions, name, attachments, noRanged, tools, toolHandlers, onToolCall);
116
204
  }
117
205
  // Hard changes and re-writes use Opus with no ranged writes
118
- return buildWithModel(complete, currentPage, additionalSections, userMessage, userInstructions, name, attachments, noRanged);
206
+ return buildWithModel(complete, currentPage, additionalSections, userMessage, userInstructions, name, attachments, noRanged, tools, toolHandlers, onToolCall);
119
207
  }
120
208
  catch (err) {
121
209
  return { kind: 'error', error: err instanceof Error ? err : new Error(String(err)) };
@@ -127,7 +215,12 @@ exports.createAnthropicBuilder = createAnthropicBuilder;
127
215
  // ---------------------------------------------------------------------------
128
216
  // Build flow — shared prompt construction + model call + parsing
129
217
  // ---------------------------------------------------------------------------
130
- async function buildWithModel(model, currentPage, additionalSections, userMessage, userInstructions, productName, attachments, outputSchema) {
218
+ /**
219
+ * Appended to <INSTRUCTIONS> when tools are bound so the model knows it may
220
+ * fetch additional context on demand.
221
+ */
222
+ exports.TOOLS_INSTRUCTION_HINT = 'You may call the provided tools to load additional context only if you need it. You may call multiple tools in parallel in a single turn.';
223
+ async function buildWithModel(model, currentPage, additionalSections, userMessage, userInstructions, productName, attachments, outputSchema, tools, toolHandlers, onToolCall) {
131
224
  // -- System message: all static content (cacheable) --
132
225
  const systemParts = [];
133
226
  for (const section of additionalSections) {
@@ -145,6 +238,9 @@ async function buildWithModel(model, currentPage, additionalSections, userMessag
145
238
  }
146
239
  }
147
240
  instructionParts.push((0, transformPage_1.getTransformInstr)(productName));
241
+ if (tools && tools.length > 0) {
242
+ instructionParts.push(exports.TOOLS_INSTRUCTION_HINT);
243
+ }
148
244
  const instructions = instructionParts.filter(s => s.trim() !== '').join('\n');
149
245
  systemParts.push(`<INSTRUCTIONS>\n${instructions}`);
150
246
  const systemContent = systemParts.join('\n\n');
@@ -169,6 +265,7 @@ async function buildWithModel(model, currentPage, additionalSections, userMessag
169
265
  prompt: { role: 'user', content: promptContent },
170
266
  cacheSystem: true,
171
267
  outputSchema: outputSchema ?? types_1.CHANGE_OPS_SCHEMA,
268
+ ...(tools && tools.length > 0 && { tools, toolHandlers: toolHandlers ?? {}, onToolCall }),
172
269
  });
173
270
  if (!result.completed) {
174
271
  return { kind: 'error', error: result.error ?? new Error('Model call failed') };
@@ -184,9 +281,9 @@ function routeLabel(classification, configuredModel) {
184
281
  if (classification === 'question')
185
282
  return 'classifier (answered inline)';
186
283
  if (classification === 'easy-change')
187
- return 'claude-sonnet-4-5';
284
+ return 'claude-sonnet-4-6';
188
285
  if (classification === 'medium-change')
189
- return 'claude-sonnet-4-5 (no ranged)';
286
+ return 'claude-sonnet-4-6 (no ranged)';
190
287
  if (classification === 're-write')
191
288
  return configuredModel + ' (re-write)';
192
289
  return configuredModel + ' (no ranged)';
@@ -195,10 +292,14 @@ function routeLabel(classification, configuredModel) {
195
292
  // Response parsing — shared across builders
196
293
  // ---------------------------------------------------------------------------
197
294
  function parseBuilderResponse(raw) {
198
- // Try parsing as a JSON object with a kind discriminator
295
+ // Try parsing as a JSON object with a changes array + optional message
199
296
  try {
200
297
  const parsed = JSON.parse(raw);
201
298
  if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
299
+ if (Array.isArray(parsed.changes)) {
300
+ const message = typeof parsed.message === 'string' ? parsed.message : undefined;
301
+ return { kind: 'transforms', changes: parsed.changes, message };
302
+ }
202
303
  if (parsed.kind === 'transforms' && Array.isArray(parsed.changes)) {
203
304
  return { kind: 'transforms', changes: parsed.changes };
204
305
  }
@@ -206,7 +307,7 @@ function parseBuilderResponse(raw) {
206
307
  return { kind: 'reply', text: parsed.text };
207
308
  }
208
309
  }
209
- // Bare array — backward compat
310
+ // Bare array — backward compat (no message field available)
210
311
  if (Array.isArray(parsed)) {
211
312
  return { kind: 'transforms', changes: parsed };
212
313
  }
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/builders/anthropic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/builders/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Builder } from './types';
2
+ export interface ClaudeCodeBuilderOptions {
3
+ /** Model to pass as --model to the CLI. */
4
+ model?: string;
5
+ /** Override path to the claude binary (defaults to 'claude' on PATH). */
6
+ commandPath?: string;
7
+ /** Request timeout in milliseconds (default 120 000). */
8
+ timeout?: number;
9
+ /** Additional CLI flags passed to every invocation. */
10
+ extraFlags?: string[];
11
+ }
12
+ export declare function createClaudeCodeBuilder(userInstructions?: string, productName?: string, options?: ClaudeCodeBuilderOptions): Builder;
13
+ //# sourceMappingURL=claudecode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudecode.d.ts","sourceRoot":"","sources":["../../src/builders/claudecode.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAgD,MAAM,SAAS,CAAC;AAMhF,MAAM,WAAW,wBAAwB;IACrC,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAqMD,wBAAgB,uBAAuB,CACnC,gBAAgB,CAAC,EAAE,MAAM,EACzB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,wBAAwB,GACnC,OAAO,CA0FT"}