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
@@ -0,0 +1,253 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createClaudeCodeBuilder = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const transformPage_1 = require("../service/transformPage");
6
+ const anthropic_1 = require("./anthropic");
7
+ const types_1 = require("./types");
8
+ // ---------------------------------------------------------------------------
9
+ // Helpers
10
+ // ---------------------------------------------------------------------------
11
+ /** Strip ANSI escape codes from CLI output. */
12
+ function stripAnsi(text) {
13
+ // eslint-disable-next-line no-control-regex
14
+ return text.replace(/\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g, '');
15
+ }
16
+ /**
17
+ * Spawn the Claude CLI with a prompt on stdin and capture stdout.
18
+ * Returns the raw text output (ANSI-stripped).
19
+ */
20
+ function runClaude(prompt, options) {
21
+ const cmd = options.commandPath ?? 'claude';
22
+ const args = ['-p', '--output-format', 'text'];
23
+ if (options.model) {
24
+ args.push('--model', options.model);
25
+ }
26
+ if (options.extraFlags) {
27
+ args.push(...options.extraFlags);
28
+ }
29
+ const timeout = options.timeout ?? 120_000;
30
+ return new Promise((resolve, reject) => {
31
+ const child = (0, child_process_1.spawn)(cmd, args, {
32
+ stdio: ['pipe', 'pipe', 'pipe'],
33
+ env: {
34
+ ...process.env,
35
+ FORCE_COLOR: '0',
36
+ CLAUDECODE: undefined, // prevent recursive detection
37
+ },
38
+ });
39
+ let stdout = '';
40
+ let stderr = '';
41
+ child.stdout.on('data', (chunk) => { stdout += chunk.toString(); });
42
+ child.stderr.on('data', (chunk) => { stderr += chunk.toString(); });
43
+ // EOF protection — swallow EPIPE if the child closes stdin early
44
+ child.stdin.on('error', (err) => {
45
+ if (err.code !== 'EPIPE' && err.code !== 'EOF')
46
+ throw err;
47
+ });
48
+ // Timeout handling: SIGTERM → 5 s → SIGKILL
49
+ const timer = setTimeout(() => {
50
+ child.kill('SIGTERM');
51
+ setTimeout(() => {
52
+ if (!child.killed)
53
+ child.kill('SIGKILL');
54
+ }, 5_000);
55
+ }, timeout);
56
+ child.on('close', (code) => {
57
+ clearTimeout(timer);
58
+ resolve({
59
+ stdout: stripAnsi(stdout),
60
+ stderr: stripAnsi(stderr),
61
+ exitCode: code ?? 1,
62
+ });
63
+ });
64
+ child.on('error', (err) => {
65
+ clearTimeout(timer);
66
+ reject(err);
67
+ });
68
+ // Pipe the prompt via stdin
69
+ child.stdin.write(prompt, () => {
70
+ child.stdin.end();
71
+ });
72
+ });
73
+ }
74
+ // ---------------------------------------------------------------------------
75
+ // Spawn + retry wrapper
76
+ // ---------------------------------------------------------------------------
77
+ /**
78
+ * Execute the Claude CLI and return trimmed output.
79
+ * Retries once on empty output with a simplified prompt prefix.
80
+ */
81
+ async function executeWithRetry(prompt, options) {
82
+ const attempt = async (p) => {
83
+ const result = await runClaude(p, options);
84
+ // Handle process-level failures
85
+ if (result.exitCode !== 0 && !result.stdout.trim()) {
86
+ if (result.stderr.includes('ENOENT') || result.stderr.includes('not found') || result.stderr.includes('not recognized')) {
87
+ throw new Error('Claude CLI not found. Install it with: npm install -g @anthropic-ai/claude-code');
88
+ }
89
+ throw new Error(result.stderr || `Claude CLI exited with code ${result.exitCode}`);
90
+ }
91
+ return result.stdout.trim();
92
+ };
93
+ // First attempt
94
+ const output = await attempt(prompt);
95
+ if (output)
96
+ return output;
97
+ // Retry once with a nudge prepended to the prompt
98
+ console.warn('[ClaudeCode] Empty response — retrying once');
99
+ const retryOutput = await attempt('IMPORTANT: You must produce output. Do not return an empty response.\n\n' + prompt);
100
+ if (retryOutput)
101
+ return retryOutput;
102
+ throw new Error('Claude CLI returned empty output after retry');
103
+ }
104
+ // ---------------------------------------------------------------------------
105
+ // Change-op validation
106
+ // ---------------------------------------------------------------------------
107
+ const VALID_OPS = new Set(['update', 'replace', 'delete', 'insert', 'style-element', 'search-replace', 'search-insert']);
108
+ /**
109
+ * Validate a single change operation against the expected schema.
110
+ * Returns true if the op is structurally valid, false otherwise.
111
+ */
112
+ function isValidChangeOp(op) {
113
+ if (!op || typeof op !== 'object')
114
+ return false;
115
+ const o = op;
116
+ if (typeof o.op !== 'string' || !VALID_OPS.has(o.op))
117
+ return false;
118
+ switch (o.op) {
119
+ case 'update':
120
+ case 'replace':
121
+ return typeof o.nodeId === 'string' && typeof o.html === 'string';
122
+ case 'delete':
123
+ return typeof o.nodeId === 'string';
124
+ case 'insert':
125
+ return typeof o.parentId === 'string'
126
+ && typeof o.position === 'string'
127
+ && typeof o.html === 'string';
128
+ case 'style-element':
129
+ return typeof o.nodeId === 'string' && typeof o.style === 'string';
130
+ case 'search-replace':
131
+ return typeof o.nodeId === 'string'
132
+ && typeof o.search === 'string'
133
+ && typeof o.replace === 'string';
134
+ case 'search-insert':
135
+ return typeof o.nodeId === 'string'
136
+ && typeof o.after === 'string'
137
+ && typeof o.content === 'string';
138
+ default:
139
+ return false;
140
+ }
141
+ }
142
+ /**
143
+ * Filter a list of change ops, keeping only valid ones.
144
+ * Logs warnings for any skipped ops.
145
+ */
146
+ function filterValidOps(ops) {
147
+ const valid = [];
148
+ for (let i = 0; i < ops.length; i++) {
149
+ const op = ops[i];
150
+ if (isValidChangeOp(op)) {
151
+ valid.push(op);
152
+ }
153
+ else {
154
+ console.warn(`[ClaudeCode] Skipping invalid change op at index ${i}:`, JSON.stringify(ops[i]));
155
+ }
156
+ }
157
+ return valid;
158
+ }
159
+ // ---------------------------------------------------------------------------
160
+ // Chat mode heuristic
161
+ // ---------------------------------------------------------------------------
162
+ /**
163
+ * Simple heuristic to detect chat/question messages.
164
+ * Per spec: message ends with `?` and is under 100 characters.
165
+ */
166
+ function isChatQuestion(message) {
167
+ const trimmed = message.trim();
168
+ return trimmed.length < 100 && trimmed.endsWith('?');
169
+ }
170
+ // ---------------------------------------------------------------------------
171
+ // Builder factory
172
+ // ---------------------------------------------------------------------------
173
+ function createClaudeCodeBuilder(userInstructions, productName, options) {
174
+ const name = productName ?? 'SynthOS';
175
+ const opts = options ?? {};
176
+ return {
177
+ async run(currentPage, additionalSections, userMessage, newBuild, _attachments) {
178
+ try {
179
+ const chatMode = !newBuild && isChatQuestion(userMessage);
180
+ let prompt;
181
+ if (chatMode) {
182
+ // -- Chat prompt: no change-ops, no node annotations --
183
+ const contextParts = [
184
+ `<CURRENT_PAGE>\n${currentPage.content}\n</CURRENT_PAGE>`,
185
+ ];
186
+ for (const section of additionalSections) {
187
+ if (section.content) {
188
+ contextParts.push(`${section.title}\n${section.content}`);
189
+ }
190
+ }
191
+ prompt = `You are ${name}, a helpful assistant. Answer the user's question about their page.\n\n`
192
+ + contextParts.join('\n\n')
193
+ + `\n\n<USER_MESSAGE>\n${userMessage}\n</USER_MESSAGE>`;
194
+ }
195
+ else {
196
+ // -- Build/change prompt (same structure as before) --
197
+ const systemParts = [
198
+ `${currentPage.title}\n${currentPage.content}`,
199
+ ];
200
+ for (const section of additionalSections) {
201
+ if (section.content) {
202
+ systemParts.push(`${section.title}\n${section.content}`);
203
+ }
204
+ }
205
+ const systemContent = systemParts.join('\n\n');
206
+ const instructionParts = [];
207
+ if (userInstructions?.trim()) {
208
+ instructionParts.push(userInstructions);
209
+ }
210
+ for (const section of additionalSections) {
211
+ if (section.instructions?.trim()) {
212
+ instructionParts.push(section.instructions);
213
+ }
214
+ }
215
+ instructionParts.push((0, transformPage_1.getTransformInstr)(name));
216
+ instructionParts.push(types_1.CHANGE_OPS_FORMAT_INSTRUCTION);
217
+ const instructions = instructionParts.filter(s => s.trim() !== '').join('\n');
218
+ prompt = `${systemContent}\n\n<USER_MESSAGE>\n${userMessage}\n\n<INSTRUCTIONS>\n${instructions}`;
219
+ }
220
+ // -- Spawn claude CLI (with retry on empty output) --
221
+ const output = await executeWithRetry(prompt, opts);
222
+ // Chat mode always returns a reply — skip change-ops parsing
223
+ if (chatMode) {
224
+ return { kind: 'reply', text: output };
225
+ }
226
+ // Try to parse as builder response (JSON change ops or reply)
227
+ const parsed = (0, anthropic_1.parseBuilderResponse)(output);
228
+ // Validate individual change ops — skip invalid ones
229
+ if (parsed.kind === 'transforms') {
230
+ const validated = filterValidOps(parsed.changes);
231
+ if (validated.length === 0) {
232
+ // All ops were invalid — treat the raw output as a text reply
233
+ return { kind: 'reply', text: output };
234
+ }
235
+ return { kind: 'transforms', changes: validated };
236
+ }
237
+ return parsed;
238
+ }
239
+ catch (err) {
240
+ // Spawn failure (e.g. ENOENT when claude is not on PATH)
241
+ if (err instanceof Error && 'code' in err && err.code === 'ENOENT') {
242
+ return {
243
+ kind: 'error',
244
+ error: new Error('Claude CLI not found. Install it with: npm install -g @anthropic-ai/claude-code'),
245
+ };
246
+ }
247
+ return { kind: 'error', error: err instanceof Error ? err : new Error(String(err)) };
248
+ }
249
+ }
250
+ };
251
+ }
252
+ exports.createClaudeCodeBuilder = createClaudeCodeBuilder;
253
+ //# sourceMappingURL=claudecode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudecode.js","sourceRoot":"","sources":["../../src/builders/claudecode.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { ProviderName, completePrompt } from '../models';
2
2
  import { AnthropicBuilderOptions } from './anthropic';
3
3
  import { Builder } from './types';
4
- export { ContextSection, BuilderResult, Builder, Attachment } from './types';
4
+ export { ContextSection, SectionMode, BuilderResult, Builder, Attachment } from './types';
5
5
  export { createAnthropicBuilder, AnthropicBuilderOptions } from './anthropic';
6
6
  export { createOpenAIBuilder } from './openai';
7
7
  export { createFireworksAIBuilder } from './fireworksai';
8
+ export { createClaudeCodeBuilder, ClaudeCodeBuilderOptions } from './claudecode';
8
9
  export { parseBuilderResponse } from './anthropic';
9
10
  /**
10
11
  * Factory that creates a provider-specific builder.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/builders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAA0B,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAG9E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD;;GAEG;AACH,wBAAgB,aAAa,CACzB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,cAAc,EACxB,gBAAgB,CAAC,EAAE,MAAM,EACzB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,uBAAuB,GAClC,OAAO,CAWT"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/builders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAA0B,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAI9E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD;;GAEG;AACH,wBAAgB,aAAa,CACzB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,cAAc,EACxB,gBAAgB,CAAC,EAAE,MAAM,EACzB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,uBAAuB,GAClC,OAAO,CAeT"}
@@ -1,15 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createBuilder = exports.parseBuilderResponse = exports.createFireworksAIBuilder = exports.createOpenAIBuilder = exports.createAnthropicBuilder = void 0;
3
+ exports.createBuilder = exports.parseBuilderResponse = exports.createClaudeCodeBuilder = exports.createFireworksAIBuilder = exports.createOpenAIBuilder = exports.createAnthropicBuilder = void 0;
4
4
  const anthropic_1 = require("./anthropic");
5
5
  const openai_1 = require("./openai");
6
6
  const fireworksai_1 = require("./fireworksai");
7
+ const claudecode_1 = require("./claudecode");
7
8
  var anthropic_2 = require("./anthropic");
8
9
  Object.defineProperty(exports, "createAnthropicBuilder", { enumerable: true, get: function () { return anthropic_2.createAnthropicBuilder; } });
9
10
  var openai_2 = require("./openai");
10
11
  Object.defineProperty(exports, "createOpenAIBuilder", { enumerable: true, get: function () { return openai_2.createOpenAIBuilder; } });
11
12
  var fireworksai_2 = require("./fireworksai");
12
13
  Object.defineProperty(exports, "createFireworksAIBuilder", { enumerable: true, get: function () { return fireworksai_2.createFireworksAIBuilder; } });
14
+ var claudecode_2 = require("./claudecode");
15
+ Object.defineProperty(exports, "createClaudeCodeBuilder", { enumerable: true, get: function () { return claudecode_2.createClaudeCodeBuilder; } });
13
16
  var anthropic_3 = require("./anthropic");
14
17
  Object.defineProperty(exports, "parseBuilderResponse", { enumerable: true, get: function () { return anthropic_3.parseBuilderResponse; } });
15
18
  /**
@@ -23,6 +26,10 @@ function createBuilder(provider, complete, userInstructions, productName, option
23
26
  return (0, openai_1.createOpenAIBuilder)(complete, userInstructions, productName);
24
27
  case 'FireworksAI':
25
28
  return (0, fireworksai_1.createFireworksAIBuilder)(complete, userInstructions, productName);
29
+ case 'ClaudeCode':
30
+ return (0, claudecode_1.createClaudeCodeBuilder)(userInstructions, productName, {
31
+ model: options?.model,
32
+ });
26
33
  default:
27
34
  throw new Error(`Unknown provider: ${provider}`);
28
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/builders/index.ts"],"names":[],"mappings":";;;AACA,2CAA8E;AAC9E,qCAA+C;AAC/C,+CAAyD;AAIzD,yCAA8E;AAArE,mHAAA,sBAAsB,OAAA;AAC/B,mCAA+C;AAAtC,6GAAA,mBAAmB,OAAA;AAC5B,6CAAyD;AAAhD,uHAAA,wBAAwB,OAAA;AACjC,yCAAmD;AAA1C,iHAAA,oBAAoB,OAAA;AAE7B;;GAEG;AACH,SAAgB,aAAa,CACzB,QAAsB,EACtB,QAAwB,EACxB,gBAAyB,EACzB,WAAoB,EACpB,OAAiC;IAEjC,QAAQ,QAAQ,EAAE;QACd,KAAK,WAAW;YACZ,OAAO,IAAA,kCAAsB,EAAC,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QACpF,KAAK,QAAQ;YACT,OAAO,IAAA,4BAAmB,EAAC,QAAQ,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;QACxE,KAAK,aAAa;YACd,OAAO,IAAA,sCAAwB,EAAC,QAAQ,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;QAC7E;YACI,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;KACxD;AACL,CAAC;AAjBD,sCAiBC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/builders/index.ts"],"names":[],"mappings":";;;AACA,2CAA8E;AAC9E,qCAA+C;AAC/C,+CAAyD;AACzD,6CAAuD;AAIvD,yCAA8E;AAArE,mHAAA,sBAAsB,OAAA;AAC/B,mCAA+C;AAAtC,6GAAA,mBAAmB,OAAA;AAC5B,6CAAyD;AAAhD,uHAAA,wBAAwB,OAAA;AACjC,2CAAiF;AAAxE,qHAAA,uBAAuB,OAAA;AAChC,yCAAmD;AAA1C,iHAAA,oBAAoB,OAAA;AAE7B;;GAEG;AACH,SAAgB,aAAa,CACzB,QAAsB,EACtB,QAAwB,EACxB,gBAAyB,EACzB,WAAoB,EACpB,OAAiC;IAEjC,QAAQ,QAAQ,EAAE;QACd,KAAK,WAAW;YACZ,OAAO,IAAA,kCAAsB,EAAC,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QACpF,KAAK,QAAQ;YACT,OAAO,IAAA,4BAAmB,EAAC,QAAQ,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;QACxE,KAAK,aAAa;YACd,OAAO,IAAA,sCAAwB,EAAC,QAAQ,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;QAC7E,KAAK,YAAY;YACb,OAAO,IAAA,oCAAuB,EAAC,gBAAgB,EAAE,WAAW,EAAE;gBAC1D,KAAK,EAAE,OAAO,EAAE,KAAK;aACxB,CAAC,CAAC;QACP;YACI,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;KACxD;AACL,CAAC;AArBD,sCAqBC"}
@@ -76,7 +76,8 @@ function parseOpenAIResponse(raw) {
76
76
  try {
77
77
  const parsed = JSON.parse(raw);
78
78
  if (parsed && typeof parsed === 'object' && !Array.isArray(parsed) && Array.isArray(parsed.changes)) {
79
- return { kind: 'transforms', changes: parsed.changes };
79
+ const message = typeof parsed.message === 'string' ? parsed.message : undefined;
80
+ return { kind: 'transforms', changes: parsed.changes, message };
80
81
  }
81
82
  }
82
83
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/builders/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/builders/openai.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,14 @@
1
1
  import { ChangeList } from '../service/transformPage';
2
+ import { ToolDefinition, ToolHandler } from '../models/types';
2
3
  /**
3
4
  * Text instruction that tells the model to return a JSON array of change operations.
4
5
  * Append this to <INSTRUCTIONS> for builders that don't support structured outputs.
5
6
  */
6
- export declare const CHANGE_OPS_FORMAT_INSTRUCTION = "Return a JSON array of change operations to apply to the page. Do NOT return the full HTML page.\n\nEach operation must be one of:\n{ \"op\": \"update\", \"nodeId\": \"<data-node-id>\", \"html\": \"<new innerHTML>\" }\n \u2014 replaces the innerHTML of the target element\n\n{ \"op\": \"replace\", \"nodeId\": \"<data-node-id>\", \"html\": \"<new outerHTML>\" }\n \u2014 replaces the entire element (outerHTML) with new markup\n\n{ \"op\": \"delete\", \"nodeId\": \"<data-node-id>\" }\n \u2014 removes the element from the page\n\n{ \"op\": \"insert\", \"parentId\": \"<data-node-id>\", \"position\": \"prepend\"|\"append\"|\"before\"|\"after\", \"html\": \"<new element HTML>\" }\n \u2014 inserts new HTML relative to the parent element\n\n{ \"op\": \"style-element\", \"nodeId\": \"<data-node-id>\", \"style\": \"<css style string>\" }\n \u2014 sets the style attribute of the target element (must be unlocked)\n\n{ \"op\": \"search-replace\", \"nodeId\": \"<data-node-id>\", \"search\": \"<exact text to find>\", \"replace\": \"<replacement text>\" }\n \u2014 finds exact text within a script/style block and replaces it. Use empty string for replace to delete.\n\n{ \"op\": \"search-insert\", \"nodeId\": \"<data-node-id>\", \"after\": \"<exact text to find>\", \"content\": \"<new lines to insert>\" }\n \u2014 inserts new content immediately after the matched text in a script/style block.\n\nFor partial edits to large scripts/styles, use search-replace or search-insert instead of\nreplacing the entire block with update.\nCopy the search/after text exactly as it appears in the source.\nWhen making multiple edits to the same block, ensure each search string targets distinct text.\nTo delete code, use search-replace with an empty replace string.\n\nReturn ONLY the JSON array. Example:\n[\n { \"op\": \"update\", \"nodeId\": \"5\", \"html\": \"<p>Hello world</p>\" },\n { \"op\": \"insert\", \"parentId\": \"3\", \"position\": \"append\", \"html\": \"<div class=\\\"msg\\\">New message</div>\" }\n]";
7
+ export declare const CHANGE_OPS_FORMAT_INSTRUCTION = "Return a JSON object with two fields: \"message\" and \"changes\".\n\n\"message\" is a brief (1 sentence) message to the user explaining what you changed. It is shown in the chat feed as the assistant's reply \u2014 write it directly to the user, not a description of the JSON.\n\"changes\" is an array of change operations to apply to the page. Do NOT return the full HTML page.\n\nEach change operation must be one of:\n{ \"op\": \"update\", \"nodeId\": \"<data-nid>\", \"html\": \"<new innerHTML>\" }\n \u2014 replaces the innerHTML of the target element\n\n{ \"op\": \"replace\", \"nodeId\": \"<data-nid>\", \"html\": \"<new outerHTML>\" }\n \u2014 replaces the entire element (outerHTML) with new markup\n\n{ \"op\": \"delete\", \"nodeId\": \"<data-nid>\" }\n \u2014 removes the element from the page\n\n{ \"op\": \"insert\", \"parentId\": \"<data-nid>\", \"position\": \"prepend\"|\"append\"|\"before\"|\"after\", \"html\": \"<new element HTML>\" }\n \u2014 inserts new HTML relative to the parent element\n\n{ \"op\": \"style-element\", \"nodeId\": \"<data-nid>\", \"style\": \"<css style string>\" }\n \u2014 sets the style attribute of the target element (must be unlocked)\n\n{ \"op\": \"search-replace\", \"nodeId\": \"<data-nid>\", \"search\": \"<exact text to find>\", \"replace\": \"<replacement text>\" }\n \u2014 finds exact text within a script/style block and replaces it. Use empty string for replace to delete.\n\n{ \"op\": \"search-insert\", \"nodeId\": \"<data-nid>\", \"after\": \"<exact text to find>\", \"content\": \"<new lines to insert>\" }\n \u2014 inserts new content immediately after the matched text in a script/style block.\n\nFor partial edits to large scripts/styles, use search-replace or search-insert instead of\nreplacing the entire block with update.\nCopy the search/after text exactly as it appears in the source.\nWhen making multiple edits to the same block, ensure each search string targets distinct text.\nTo delete code, use search-replace with an empty replace string.\n\nReturn ONLY the JSON object. Example:\n{\n \"message\": \"Changed the heading and added a new notice.\",\n \"changes\": [\n { \"op\": \"update\", \"nodeId\": \"5\", \"html\": \"<p>Hello world</p>\" },\n { \"op\": \"insert\", \"parentId\": \"3\", \"position\": \"append\", \"html\": \"<div class=\\\"msg\\\">New message</div>\" }\n ]\n}";
7
8
  /**
8
- * JSON schema matching the ChangeOp union type for Anthropic structured outputs.
9
- * The top-level schema is an array of change operations.
9
+ * JSON schema for Anthropic structured outputs.
10
+ * Wraps the change-ops array in `{ message, changes }` so the model always
11
+ * emits a user-facing message alongside its page changes.
10
12
  */
11
13
  export declare const CHANGE_OPS_SCHEMA: Record<string, unknown>;
12
14
  /**
@@ -22,20 +24,42 @@ export declare const CHANGE_OPS_SCHEMA_NO_RANGED: Record<string, unknown>;
22
24
  export declare const CHANGE_OPS_FORMAT_INSTRUCTION_NO_RANGED = "For script and style blocks, use \"update\" to replace the full innerHTML or \"replace\" to replace the full outerHTML. Do NOT use partial search-replace edits.";
23
25
  /**
24
26
  * OpenAI structured outputs require a root-level object.
25
- * This wraps CHANGE_OPS_SCHEMA in { changes: [...] }.
27
+ * Matches the Anthropic shape: { message, changes }.
26
28
  */
27
29
  export declare const OPENAI_CHANGE_OPS_SCHEMA: Record<string, unknown>;
30
+ export type SectionMode =
31
+ /** Always rendered in full. Never sketched. Used for small/universally relevant sections. */
32
+ 'always-full'
33
+ /** Sketched by default; rendered in full when the classifier expands it. */
34
+ | 'classifier-decides'
35
+ /** Skipped entirely when sketch === null; otherwise sketched/expanded like classifier-decides. */
36
+ | 'always-omit-when-empty';
28
37
  export interface ContextSection {
29
- /** Section title, e.g. "<CURRENT_PAGE>", "<SERVER_SCRIPTS>" */
38
+ /** Section title, e.g. "<CURRENT_PAGE>", "<SERVER_SCRIPTS>". Used as the classifier expand-set key. */
30
39
  title: string;
31
- /** The text body of this section */
40
+ /** Full render what the model sees when this section is expanded. */
32
41
  content: string;
42
+ /**
43
+ * Compact render — what the classifier sees, and what the model sees when this
44
+ * section is NOT expanded. `null` means "omit entirely from the prompt when not
45
+ * expanded" (used by always-omit-when-empty sections that have nothing to say,
46
+ * or by always-full sections where sketch is irrelevant).
47
+ */
48
+ sketch: string | null;
49
+ /** Default behavior for this section. Producer-declared. */
50
+ mode: SectionMode;
51
+ /**
52
+ * If true, this section is always rendered in full on the initial page build,
53
+ * regardless of classifier output. Defaults to false.
54
+ */
55
+ forceFullOnInitial?: boolean;
33
56
  /** How the model should work with this section (appended to instructions) */
34
57
  instructions: string;
35
58
  }
36
59
  export type BuilderResult = {
37
60
  kind: 'transforms';
38
61
  changes: ChangeList;
62
+ message?: string;
39
63
  } | {
40
64
  kind: 'reply';
41
65
  text: string;
@@ -49,6 +73,6 @@ export interface Attachment {
49
73
  name?: string;
50
74
  }
51
75
  export interface Builder {
52
- run(currentPage: ContextSection, additionalSections: ContextSection[], userMessage: string, newBuild: boolean, attachments?: Attachment[]): Promise<BuilderResult>;
76
+ run(currentPage: ContextSection, additionalSections: ContextSection[], userMessage: string, newBuild: boolean, attachments?: Attachment[], tools?: ToolDefinition[], toolHandlers?: Record<string, ToolHandler>, onToolCall?: (names: string[]) => void): Promise<BuilderResult>;
53
77
  }
54
78
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/builders/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAMtD;;;GAGG;AACH,eAAO,MAAM,6BAA6B,u+DAkCxC,CAAC;AAMH;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CA8ErD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAwD/D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uCAAuC,qKAAiK,CAAC;AAEtN;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAO5D,CAAC;AAMF,MAAM,WAAW,cAAc;IAC3B,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAC;CACxB;AAMD,MAAM,MAAM,aAAa,GACnB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAMtC,MAAM,WAAW,UAAU;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD,MAAM,WAAW,OAAO;IACpB,GAAG,CACC,WAAW,EAAE,cAAc,EAC3B,kBAAkB,EAAE,cAAc,EAAE,EACpC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,OAAO,EACjB,WAAW,CAAC,EAAE,UAAU,EAAE,GAC3B,OAAO,CAAC,aAAa,CAAC,CAAC;CAC7B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/builders/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAM9D;;;GAGG;AACH,eAAO,MAAM,6BAA6B,00EAwCxC,CAAC;AAuJH;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAQrD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAQ/D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uCAAuC,qKAAiK,CAAC;AAEtN;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAQ5D,CAAC;AAMF,MAAM,MAAM,WAAW;AACnB,6FAA6F;AAC3F,aAAa;AACf,4EAA4E;GAC1E,oBAAoB;AACtB,kGAAkG;GAChG,wBAAwB,CAAC;AAE/B,MAAM,WAAW,cAAc;IAC3B,uGAAuG;IACvG,KAAK,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,4DAA4D;IAC5D,IAAI,EAAE,WAAW,CAAC;IAClB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAC;CACxB;AAMD,MAAM,MAAM,aAAa,GACnB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,UAAU,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAMtC,MAAM,WAAW,UAAU;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD,MAAM,WAAW,OAAO;IACpB,GAAG,CACC,WAAW,EAAE,cAAc,EAC3B,kBAAkB,EAAE,cAAc,EAAE,EACpC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,OAAO,EACjB,WAAW,CAAC,EAAE,UAAU,EAAE,EAC1B,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,CAAC;CAC7B"}
@@ -8,28 +8,31 @@ exports.OPENAI_CHANGE_OPS_SCHEMA = exports.CHANGE_OPS_FORMAT_INSTRUCTION_NO_RANG
8
8
  * Text instruction that tells the model to return a JSON array of change operations.
9
9
  * Append this to <INSTRUCTIONS> for builders that don't support structured outputs.
10
10
  */
11
- exports.CHANGE_OPS_FORMAT_INSTRUCTION = `Return a JSON array of change operations to apply to the page. Do NOT return the full HTML page.
11
+ exports.CHANGE_OPS_FORMAT_INSTRUCTION = `Return a JSON object with two fields: "message" and "changes".
12
12
 
13
- Each operation must be one of:
14
- { "op": "update", "nodeId": "<data-node-id>", "html": "<new innerHTML>" }
13
+ "message" is a brief (1 sentence) message to the user explaining what you changed. It is shown in the chat feed as the assistant's reply — write it directly to the user, not a description of the JSON.
14
+ "changes" is an array of change operations to apply to the page. Do NOT return the full HTML page.
15
+
16
+ Each change operation must be one of:
17
+ { "op": "update", "nodeId": "<data-nid>", "html": "<new innerHTML>" }
15
18
  — replaces the innerHTML of the target element
16
19
 
17
- { "op": "replace", "nodeId": "<data-node-id>", "html": "<new outerHTML>" }
20
+ { "op": "replace", "nodeId": "<data-nid>", "html": "<new outerHTML>" }
18
21
  — replaces the entire element (outerHTML) with new markup
19
22
 
20
- { "op": "delete", "nodeId": "<data-node-id>" }
23
+ { "op": "delete", "nodeId": "<data-nid>" }
21
24
  — removes the element from the page
22
25
 
23
- { "op": "insert", "parentId": "<data-node-id>", "position": "prepend"|"append"|"before"|"after", "html": "<new element HTML>" }
26
+ { "op": "insert", "parentId": "<data-nid>", "position": "prepend"|"append"|"before"|"after", "html": "<new element HTML>" }
24
27
  — inserts new HTML relative to the parent element
25
28
 
26
- { "op": "style-element", "nodeId": "<data-node-id>", "style": "<css style string>" }
29
+ { "op": "style-element", "nodeId": "<data-nid>", "style": "<css style string>" }
27
30
  — sets the style attribute of the target element (must be unlocked)
28
31
 
29
- { "op": "search-replace", "nodeId": "<data-node-id>", "search": "<exact text to find>", "replace": "<replacement text>" }
32
+ { "op": "search-replace", "nodeId": "<data-nid>", "search": "<exact text to find>", "replace": "<replacement text>" }
30
33
  — finds exact text within a script/style block and replaces it. Use empty string for replace to delete.
31
34
 
32
- { "op": "search-insert", "nodeId": "<data-node-id>", "after": "<exact text to find>", "content": "<new lines to insert>" }
35
+ { "op": "search-insert", "nodeId": "<data-nid>", "after": "<exact text to find>", "content": "<new lines to insert>" }
33
36
  — inserts new content immediately after the matched text in a script/style block.
34
37
 
35
38
  For partial edits to large scripts/styles, use search-replace or search-insert instead of
@@ -38,19 +41,23 @@ Copy the search/after text exactly as it appears in the source.
38
41
  When making multiple edits to the same block, ensure each search string targets distinct text.
39
42
  To delete code, use search-replace with an empty replace string.
40
43
 
41
- Return ONLY the JSON array. Example:
42
- [
43
- { "op": "update", "nodeId": "5", "html": "<p>Hello world</p>" },
44
- { "op": "insert", "parentId": "3", "position": "append", "html": "<div class=\\"msg\\">New message</div>" }
45
- ]`;
44
+ Return ONLY the JSON object. Example:
45
+ {
46
+ "message": "Changed the heading and added a new notice.",
47
+ "changes": [
48
+ { "op": "update", "nodeId": "5", "html": "<p>Hello world</p>" },
49
+ { "op": "insert", "parentId": "3", "position": "append", "html": "<div class=\\"msg\\">New message</div>" }
50
+ ]
51
+ }`;
46
52
  // ---------------------------------------------------------------------------
47
53
  // Change operations JSON schema — for structured output (constrained decoding)
48
54
  // ---------------------------------------------------------------------------
49
- /**
50
- * JSON schema matching the ChangeOp union type for Anthropic structured outputs.
51
- * The top-level schema is an array of change operations.
52
- */
53
- exports.CHANGE_OPS_SCHEMA = {
55
+ const CHANGE_OP_MESSAGE_SCHEMA = {
56
+ type: 'string',
57
+ description: 'Brief (1 sentence) message to the user explaining the change. Written directly to the user; shown in the chat feed as the assistant reply.',
58
+ };
59
+ /** Array schema for the full change-op union (ranged writes allowed). */
60
+ const CHANGE_OPS_ARRAY_SCHEMA = {
54
61
  type: 'array',
55
62
  items: {
56
63
  anyOf: [
@@ -129,12 +136,8 @@ exports.CHANGE_OPS_SCHEMA = {
129
136
  ],
130
137
  },
131
138
  };
132
- /**
133
- * Variant of CHANGE_OPS_SCHEMA that omits ranged write operations (search-replace, search-insert).
134
- * Used for medium/hard/re-write changes where the model should replace full blocks instead of
135
- * attempting partial edits.
136
- */
137
- exports.CHANGE_OPS_SCHEMA_NO_RANGED = {
139
+ /** Array schema with ranged write ops omitted. */
140
+ const CHANGE_OPS_ARRAY_SCHEMA_NO_RANGED = {
138
141
  type: 'array',
139
142
  items: {
140
143
  anyOf: [
@@ -191,6 +194,34 @@ exports.CHANGE_OPS_SCHEMA_NO_RANGED = {
191
194
  ],
192
195
  },
193
196
  };
197
+ /**
198
+ * JSON schema for Anthropic structured outputs.
199
+ * Wraps the change-ops array in `{ message, changes }` so the model always
200
+ * emits a user-facing message alongside its page changes.
201
+ */
202
+ exports.CHANGE_OPS_SCHEMA = {
203
+ type: 'object',
204
+ properties: {
205
+ message: CHANGE_OP_MESSAGE_SCHEMA,
206
+ changes: CHANGE_OPS_ARRAY_SCHEMA,
207
+ },
208
+ required: ['message', 'changes'],
209
+ additionalProperties: false,
210
+ };
211
+ /**
212
+ * Variant of CHANGE_OPS_SCHEMA that omits ranged write operations (search-replace, search-insert).
213
+ * Used for medium/hard/re-write changes where the model should replace full blocks instead of
214
+ * attempting partial edits.
215
+ */
216
+ exports.CHANGE_OPS_SCHEMA_NO_RANGED = {
217
+ type: 'object',
218
+ properties: {
219
+ message: CHANGE_OP_MESSAGE_SCHEMA,
220
+ changes: CHANGE_OPS_ARRAY_SCHEMA_NO_RANGED,
221
+ },
222
+ required: ['message', 'changes'],
223
+ additionalProperties: false,
224
+ };
194
225
  /**
195
226
  * Text instruction variant for no-ranged-writes mode.
196
227
  * Tells the model to use `update` for full innerHTML replacement instead of partial edits.
@@ -198,14 +229,15 @@ exports.CHANGE_OPS_SCHEMA_NO_RANGED = {
198
229
  exports.CHANGE_OPS_FORMAT_INSTRUCTION_NO_RANGED = `For script and style blocks, use "update" to replace the full innerHTML or "replace" to replace the full outerHTML. Do NOT use partial search-replace edits.`;
199
230
  /**
200
231
  * OpenAI structured outputs require a root-level object.
201
- * This wraps CHANGE_OPS_SCHEMA in { changes: [...] }.
232
+ * Matches the Anthropic shape: { message, changes }.
202
233
  */
203
234
  exports.OPENAI_CHANGE_OPS_SCHEMA = {
204
235
  type: 'object',
205
236
  properties: {
206
- changes: exports.CHANGE_OPS_SCHEMA,
237
+ message: CHANGE_OP_MESSAGE_SCHEMA,
238
+ changes: CHANGE_OPS_ARRAY_SCHEMA,
207
239
  },
208
- required: ['changes'],
240
+ required: ['message', 'changes'],
209
241
  additionalProperties: false,
210
242
  };
211
243
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/builders/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/builders/types.ts"],"names":[],"mappings":"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"}