@multiplayer-app/sandbox 0.0.31 → 0.0.33-beta.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 (336) hide show
  1. package/dist/agents/content-generator.agent.d.ts +8 -0
  2. package/dist/agents/content-generator.agent.d.ts.map +1 -1
  3. package/dist/agents/content-generator.agent.js +53 -6
  4. package/dist/agents/content-generator.agent.js.map +1 -1
  5. package/dist/agents/html-generator.agent.d.ts +3 -1
  6. package/dist/agents/html-generator.agent.d.ts.map +1 -1
  7. package/dist/agents/html-generator.agent.js +90 -4
  8. package/dist/agents/html-generator.agent.js.map +1 -1
  9. package/dist/agents/markdown-generator.agent.d.ts.map +1 -1
  10. package/dist/agents/markdown-generator.agent.js +5 -10
  11. package/dist/agents/markdown-generator.agent.js.map +1 -1
  12. package/dist/agents/notebook.agent.d.ts.map +1 -1
  13. package/dist/agents/notebook.agent.js +2 -1
  14. package/dist/agents/notebook.agent.js.map +1 -1
  15. package/dist/agents/shared/app-vm.tools.d.ts +4 -0
  16. package/dist/agents/shared/app-vm.tools.d.ts.map +1 -0
  17. package/dist/agents/shared/app-vm.tools.js +105 -0
  18. package/dist/agents/shared/app-vm.tools.js.map +1 -0
  19. package/dist/agents/shared/build-plan.tools.d.ts +5 -0
  20. package/dist/agents/shared/build-plan.tools.d.ts.map +1 -0
  21. package/dist/agents/shared/build-plan.tools.js +176 -0
  22. package/dist/agents/shared/build-plan.tools.js.map +1 -0
  23. package/dist/agents/shared/content-generator-system-prompt.d.ts +3 -2
  24. package/dist/agents/shared/content-generator-system-prompt.d.ts.map +1 -1
  25. package/dist/agents/shared/content-generator-system-prompt.js +41 -24
  26. package/dist/agents/shared/content-generator-system-prompt.js.map +1 -1
  27. package/dist/agents/shared/design-skills.d.ts +48 -0
  28. package/dist/agents/shared/design-skills.d.ts.map +1 -0
  29. package/dist/agents/shared/design-skills.js +230 -0
  30. package/dist/agents/shared/design-skills.js.map +1 -0
  31. package/dist/agents/shared/generate-session-images.tool.d.ts +15 -0
  32. package/dist/agents/shared/generate-session-images.tool.d.ts.map +1 -0
  33. package/dist/agents/shared/generate-session-images.tool.js +98 -0
  34. package/dist/agents/shared/generate-session-images.tool.js.map +1 -0
  35. package/dist/agents/shared/publish-session-artifacts.tool.d.ts +5 -0
  36. package/dist/agents/shared/publish-session-artifacts.tool.d.ts.map +1 -1
  37. package/dist/agents/shared/publish-session-artifacts.tool.js +154 -15
  38. package/dist/agents/shared/publish-session-artifacts.tool.js.map +1 -1
  39. package/dist/agents/shared/session-quality-report.tool.d.ts +7 -0
  40. package/dist/agents/shared/session-quality-report.tool.d.ts.map +1 -0
  41. package/dist/agents/shared/session-quality-report.tool.js +97 -0
  42. package/dist/agents/shared/session-quality-report.tool.js.map +1 -0
  43. package/dist/agents/shared/session-vm-bridge.d.ts +49 -0
  44. package/dist/agents/shared/session-vm-bridge.d.ts.map +1 -0
  45. package/dist/agents/shared/session-vm-bridge.js +9 -0
  46. package/dist/agents/shared/session-vm-bridge.js.map +1 -0
  47. package/dist/agents/shared/update-session-artifacts.tool.d.ts +5 -0
  48. package/dist/agents/shared/update-session-artifacts.tool.d.ts.map +1 -1
  49. package/dist/agents/shared/update-session-artifacts.tool.js +136 -26
  50. package/dist/agents/shared/update-session-artifacts.tool.js.map +1 -1
  51. package/dist/agents/shared/validate-artifact-content.tools.d.ts +4 -0
  52. package/dist/agents/shared/validate-artifact-content.tools.d.ts.map +1 -1
  53. package/dist/agents/shared/validate-artifact-content.tools.js +24 -1
  54. package/dist/agents/shared/validate-artifact-content.tools.js.map +1 -1
  55. package/dist/agents/skills/a11y.skill.d.ts +3 -0
  56. package/dist/agents/skills/a11y.skill.d.ts.map +1 -0
  57. package/dist/agents/skills/a11y.skill.js +23 -0
  58. package/dist/agents/skills/a11y.skill.js.map +1 -0
  59. package/dist/agents/skills/account-skill-loader.d.ts +13 -0
  60. package/dist/agents/skills/account-skill-loader.d.ts.map +1 -0
  61. package/dist/agents/skills/account-skill-loader.js +42 -0
  62. package/dist/agents/skills/account-skill-loader.js.map +1 -0
  63. package/dist/agents/skills/app-scaffold.skill.d.ts +3 -0
  64. package/dist/agents/skills/app-scaffold.skill.d.ts.map +1 -0
  65. package/dist/agents/skills/app-scaffold.skill.js +30 -0
  66. package/dist/agents/skills/app-scaffold.skill.js.map +1 -0
  67. package/dist/agents/skills/copywriting.skill.d.ts +3 -0
  68. package/dist/agents/skills/copywriting.skill.d.ts.map +1 -0
  69. package/dist/agents/skills/copywriting.skill.js +35 -0
  70. package/dist/agents/skills/copywriting.skill.js.map +1 -0
  71. package/dist/agents/skills/custom-skill-repository.d.ts +40 -0
  72. package/dist/agents/skills/custom-skill-repository.d.ts.map +1 -0
  73. package/dist/agents/skills/custom-skill-repository.js +3 -0
  74. package/dist/agents/skills/custom-skill-repository.js.map +1 -0
  75. package/dist/agents/skills/data-viz.skill.d.ts +3 -0
  76. package/dist/agents/skills/data-viz.skill.d.ts.map +1 -0
  77. package/dist/agents/skills/data-viz.skill.js +42 -0
  78. package/dist/agents/skills/data-viz.skill.js.map +1 -0
  79. package/dist/agents/skills/designer.skill.d.ts +3 -0
  80. package/dist/agents/skills/designer.skill.d.ts.map +1 -0
  81. package/dist/agents/skills/designer.skill.js +101 -0
  82. package/dist/agents/skills/designer.skill.js.map +1 -0
  83. package/dist/agents/skills/forms.skill.d.ts +3 -0
  84. package/dist/agents/skills/forms.skill.d.ts.map +1 -0
  85. package/dist/agents/skills/forms.skill.js +37 -0
  86. package/dist/agents/skills/forms.skill.js.map +1 -0
  87. package/dist/agents/skills/index.d.ts +6 -0
  88. package/dist/agents/skills/index.d.ts.map +1 -0
  89. package/dist/agents/skills/index.js +18 -0
  90. package/dist/agents/skills/index.js.map +1 -0
  91. package/dist/agents/skills/interactions.skill.d.ts +3 -0
  92. package/dist/agents/skills/interactions.skill.d.ts.map +1 -0
  93. package/dist/agents/skills/interactions.skill.js +31 -0
  94. package/dist/agents/skills/interactions.skill.js.map +1 -0
  95. package/dist/agents/skills/registry.d.ts +23 -0
  96. package/dist/agents/skills/registry.d.ts.map +1 -0
  97. package/dist/agents/skills/registry.js +75 -0
  98. package/dist/agents/skills/registry.js.map +1 -0
  99. package/dist/agents/skills/skill-injection.d.ts +52 -0
  100. package/dist/agents/skills/skill-injection.d.ts.map +1 -0
  101. package/dist/agents/skills/skill-injection.js +216 -0
  102. package/dist/agents/skills/skill-injection.js.map +1 -0
  103. package/dist/agents/skills/types.d.ts +12 -0
  104. package/dist/agents/skills/types.d.ts.map +1 -0
  105. package/dist/agents/skills/types.js +3 -0
  106. package/dist/agents/skills/types.js.map +1 -0
  107. package/dist/builder-api-config.d.ts +7 -0
  108. package/dist/builder-api-config.d.ts.map +1 -1
  109. package/dist/builder-api-config.js.map +1 -1
  110. package/dist/context.d.ts +11 -0
  111. package/dist/context.d.ts.map +1 -1
  112. package/dist/context.js +19 -0
  113. package/dist/context.js.map +1 -1
  114. package/dist/create-builder-api.d.ts +8 -3
  115. package/dist/create-builder-api.d.ts.map +1 -1
  116. package/dist/create-builder-api.js +20 -0
  117. package/dist/create-builder-api.js.map +1 -1
  118. package/dist/index.d.ts +6 -1
  119. package/dist/index.d.ts.map +1 -1
  120. package/dist/index.js +7 -1
  121. package/dist/index.js.map +1 -1
  122. package/dist/lib/library/list-library-items.d.ts +2 -2
  123. package/dist/lib/library/list-library-items.d.ts.map +1 -1
  124. package/dist/lib/library/list-library-items.js +49 -7
  125. package/dist/lib/library/list-library-items.js.map +1 -1
  126. package/dist/lib/object-storage/index.d.ts +3 -0
  127. package/dist/lib/object-storage/index.d.ts.map +1 -0
  128. package/dist/lib/object-storage/index.js +19 -0
  129. package/dist/lib/object-storage/index.js.map +1 -0
  130. package/dist/lib/object-storage/keys.d.ts +10 -0
  131. package/dist/lib/object-storage/keys.d.ts.map +1 -0
  132. package/dist/lib/object-storage/keys.js +51 -0
  133. package/dist/lib/object-storage/keys.js.map +1 -0
  134. package/dist/lib/object-storage/s3-object-store.d.ts +14 -0
  135. package/dist/lib/object-storage/s3-object-store.d.ts.map +1 -0
  136. package/dist/lib/object-storage/s3-object-store.js +64 -0
  137. package/dist/lib/object-storage/s3-object-store.js.map +1 -0
  138. package/dist/lib/session-artifacts/hashline-diff-guide.d.ts +1 -1
  139. package/dist/lib/session-artifacts/hashline-diff-guide.d.ts.map +1 -1
  140. package/dist/lib/session-artifacts/hashline-diff-guide.js +9 -5
  141. package/dist/lib/session-artifacts/hashline-diff-guide.js.map +1 -1
  142. package/dist/lib/session-artifacts/parse-hashline-diff.d.ts +13 -0
  143. package/dist/lib/session-artifacts/parse-hashline-diff.d.ts.map +1 -1
  144. package/dist/lib/session-artifacts/parse-hashline-diff.js +72 -0
  145. package/dist/lib/session-artifacts/parse-hashline-diff.js.map +1 -1
  146. package/dist/lib/session-pages/artifact-quality-audit.d.ts +16 -0
  147. package/dist/lib/session-pages/artifact-quality-audit.d.ts.map +1 -0
  148. package/dist/lib/session-pages/artifact-quality-audit.js +298 -0
  149. package/dist/lib/session-pages/artifact-quality-audit.js.map +1 -0
  150. package/dist/lib/session-pages/artifact-storage.d.ts +3 -0
  151. package/dist/lib/session-pages/artifact-storage.d.ts.map +1 -1
  152. package/dist/lib/session-pages/artifact-storage.js +94 -85
  153. package/dist/lib/session-pages/artifact-storage.js.map +1 -1
  154. package/dist/lib/session-pages/audit-session-html.d.ts +23 -0
  155. package/dist/lib/session-pages/audit-session-html.d.ts.map +1 -0
  156. package/dist/lib/session-pages/audit-session-html.js +82 -0
  157. package/dist/lib/session-pages/audit-session-html.js.map +1 -0
  158. package/dist/lib/session-pages/contrast-check.d.ts +25 -0
  159. package/dist/lib/session-pages/contrast-check.d.ts.map +1 -0
  160. package/dist/lib/session-pages/contrast-check.js +290 -0
  161. package/dist/lib/session-pages/contrast-check.js.map +1 -0
  162. package/dist/lib/session-pages/deferred-quality-rules.d.ts +7 -0
  163. package/dist/lib/session-pages/deferred-quality-rules.d.ts.map +1 -0
  164. package/dist/lib/session-pages/deferred-quality-rules.js +25 -0
  165. package/dist/lib/session-pages/deferred-quality-rules.js.map +1 -0
  166. package/dist/lib/session-pages/delete-session-artifact.d.ts.map +1 -1
  167. package/dist/lib/session-pages/delete-session-artifact.js +12 -41
  168. package/dist/lib/session-pages/delete-session-artifact.js.map +1 -1
  169. package/dist/lib/session-pages/delete-session-artifacts.d.ts +0 -6
  170. package/dist/lib/session-pages/delete-session-artifacts.d.ts.map +1 -1
  171. package/dist/lib/session-pages/delete-session-artifacts.js +51 -15
  172. package/dist/lib/session-pages/delete-session-artifacts.js.map +1 -1
  173. package/dist/lib/session-pages/html-artifact-template.d.ts +16 -0
  174. package/dist/lib/session-pages/html-artifact-template.d.ts.map +1 -1
  175. package/dist/lib/session-pages/html-artifact-template.js +166 -10
  176. package/dist/lib/session-pages/html-artifact-template.js.map +1 -1
  177. package/dist/lib/session-pages/index.d.ts +4 -0
  178. package/dist/lib/session-pages/index.d.ts.map +1 -1
  179. package/dist/lib/session-pages/index.js +11 -1
  180. package/dist/lib/session-pages/index.js.map +1 -1
  181. package/dist/lib/session-pages/list-session-artifacts.d.ts.map +1 -1
  182. package/dist/lib/session-pages/list-session-artifacts.js +48 -48
  183. package/dist/lib/session-pages/list-session-artifacts.js.map +1 -1
  184. package/dist/lib/session-pages/read-session-artifacts.d.ts.map +1 -1
  185. package/dist/lib/session-pages/read-session-artifacts.js +4 -26
  186. package/dist/lib/session-pages/read-session-artifacts.js.map +1 -1
  187. package/dist/lib/session-pages/resolve-session-account-id.d.ts +3 -0
  188. package/dist/lib/session-pages/resolve-session-account-id.d.ts.map +1 -0
  189. package/dist/lib/session-pages/resolve-session-account-id.js +31 -0
  190. package/dist/lib/session-pages/resolve-session-account-id.js.map +1 -0
  191. package/dist/lib/session-pages/write-binary-session-artifact.d.ts +12 -0
  192. package/dist/lib/session-pages/write-binary-session-artifact.d.ts.map +1 -0
  193. package/dist/lib/session-pages/write-binary-session-artifact.js +23 -0
  194. package/dist/lib/session-pages/write-binary-session-artifact.js.map +1 -0
  195. package/dist/lib/session-pages/write-session-artifacts.d.ts +1 -2
  196. package/dist/lib/session-pages/write-session-artifacts.d.ts.map +1 -1
  197. package/dist/lib/session-pages/write-session-artifacts.js +12 -1
  198. package/dist/lib/session-pages/write-session-artifacts.js.map +1 -1
  199. package/dist/lib/session-plans/build-plan.d.ts +74 -0
  200. package/dist/lib/session-plans/build-plan.d.ts.map +1 -0
  201. package/dist/lib/session-plans/build-plan.js +165 -0
  202. package/dist/lib/session-plans/build-plan.js.map +1 -0
  203. package/dist/lib/yjs-pending/flush-lock.d.ts +6 -0
  204. package/dist/lib/yjs-pending/flush-lock.d.ts.map +1 -0
  205. package/dist/lib/yjs-pending/flush-lock.js +43 -0
  206. package/dist/lib/yjs-pending/flush-lock.js.map +1 -0
  207. package/dist/lib/yjs-pending/flush-worker.d.ts +5 -0
  208. package/dist/lib/yjs-pending/flush-worker.d.ts.map +1 -0
  209. package/dist/lib/yjs-pending/flush-worker.js +75 -0
  210. package/dist/lib/yjs-pending/flush-worker.js.map +1 -0
  211. package/dist/lib/yjs-pending/yjs-pending-updates-repository.d.ts +22 -0
  212. package/dist/lib/yjs-pending/yjs-pending-updates-repository.d.ts.map +1 -0
  213. package/dist/lib/yjs-pending/yjs-pending-updates-repository.js +3 -0
  214. package/dist/lib/yjs-pending/yjs-pending-updates-repository.js.map +1 -0
  215. package/dist/lib/yjs-pending/yjs-persistence.d.ts +23 -0
  216. package/dist/lib/yjs-pending/yjs-persistence.d.ts.map +1 -0
  217. package/dist/lib/yjs-pending/yjs-persistence.js +222 -0
  218. package/dist/lib/yjs-pending/yjs-persistence.js.map +1 -0
  219. package/dist/realtime/reset-session-artifact-y-docs.d.ts.map +1 -1
  220. package/dist/realtime/reset-session-artifact-y-docs.js +1 -6
  221. package/dist/realtime/reset-session-artifact-y-docs.js.map +1 -1
  222. package/dist/realtime/session-artifact-y-socket-io.d.ts +0 -5
  223. package/dist/realtime/session-artifact-y-socket-io.d.ts.map +1 -1
  224. package/dist/realtime/session-artifact-y-socket-io.js +5 -69
  225. package/dist/realtime/session-artifact-y-socket-io.js.map +1 -1
  226. package/dist/realtime/session-artifact-yjs-store.d.ts +18 -32
  227. package/dist/realtime/session-artifact-yjs-store.d.ts.map +1 -1
  228. package/dist/realtime/session-artifact-yjs-store.js +135 -233
  229. package/dist/realtime/session-artifact-yjs-store.js.map +1 -1
  230. package/dist/routes/sessions.d.ts.map +1 -1
  231. package/dist/routes/sessions.js +26 -6
  232. package/dist/routes/sessions.js.map +1 -1
  233. package/dist/routes/skills.d.ts +2 -0
  234. package/dist/routes/skills.d.ts.map +1 -0
  235. package/dist/routes/skills.js +140 -0
  236. package/dist/routes/skills.js.map +1 -0
  237. package/dist/server.d.ts.map +1 -1
  238. package/dist/server.js +2 -0
  239. package/dist/server.js.map +1 -1
  240. package/package.json +9 -9
  241. package/dist/agents/blocknote.agent.d.ts +0 -6
  242. package/dist/agents/blocknote.agent.d.ts.map +0 -1
  243. package/dist/agents/blocknote.agent.js +0 -18
  244. package/dist/agents/blocknote.agent.js.map +0 -1
  245. package/dist/agents/filingramp-fetch.agent.d.ts +0 -4
  246. package/dist/agents/filingramp-fetch.agent.d.ts.map +0 -1
  247. package/dist/agents/filingramp-fetch.agent.js +0 -195
  248. package/dist/agents/filingramp-fetch.agent.js.map +0 -1
  249. package/dist/agents/knowledge/filingramp-endpoints.d.ts +0 -23
  250. package/dist/agents/knowledge/filingramp-endpoints.d.ts.map +0 -1
  251. package/dist/agents/knowledge/filingramp-endpoints.js +0 -116
  252. package/dist/agents/knowledge/filingramp-endpoints.js.map +0 -1
  253. package/dist/agents/shared/blocknote-system-prompt.d.ts +0 -2
  254. package/dist/agents/shared/blocknote-system-prompt.d.ts.map +0 -1
  255. package/dist/agents/shared/blocknote-system-prompt.js +0 -40
  256. package/dist/agents/shared/blocknote-system-prompt.js.map +0 -1
  257. package/dist/agents/shared/get-latest-session-artifact.tool.d.ts +0 -7
  258. package/dist/agents/shared/get-latest-session-artifact.tool.d.ts.map +0 -1
  259. package/dist/agents/shared/get-latest-session-artifact.tool.js +0 -43
  260. package/dist/agents/shared/get-latest-session-artifact.tool.js.map +0 -1
  261. package/dist/agents/shared/get-session-artifact-content.tool.d.ts +0 -7
  262. package/dist/agents/shared/get-session-artifact-content.tool.d.ts.map +0 -1
  263. package/dist/agents/shared/get-session-artifact-content.tool.js +0 -44
  264. package/dist/agents/shared/get-session-artifact-content.tool.js.map +0 -1
  265. package/dist/agents/shared/list-session-artifact-paths.tool.d.ts +0 -5
  266. package/dist/agents/shared/list-session-artifact-paths.tool.d.ts.map +0 -1
  267. package/dist/agents/shared/list-session-artifact-paths.tool.js +0 -37
  268. package/dist/agents/shared/list-session-artifact-paths.tool.js.map +0 -1
  269. package/dist/lib/ai/agent-ai-service.d.ts +0 -3
  270. package/dist/lib/ai/agent-ai-service.d.ts.map +0 -1
  271. package/dist/lib/ai/agent-ai-service.js +0 -15
  272. package/dist/lib/ai/agent-ai-service.js.map +0 -1
  273. package/dist/lib/ai/ai-error-details.d.ts +0 -13
  274. package/dist/lib/ai/ai-error-details.d.ts.map +0 -1
  275. package/dist/lib/ai/ai-error-details.js +0 -84
  276. package/dist/lib/ai/ai-error-details.js.map +0 -1
  277. package/dist/lib/ai/generate-ai-text.d.ts +0 -12
  278. package/dist/lib/ai/generate-ai-text.d.ts.map +0 -1
  279. package/dist/lib/ai/generate-ai-text.js +0 -105
  280. package/dist/lib/ai/generate-ai-text.js.map +0 -1
  281. package/dist/lib/ai/run-explicit-agent.d.ts +0 -15
  282. package/dist/lib/ai/run-explicit-agent.d.ts.map +0 -1
  283. package/dist/lib/ai/run-explicit-agent.js +0 -30
  284. package/dist/lib/ai/run-explicit-agent.js.map +0 -1
  285. package/dist/lib/notebooks/notebook-sql-client.d.ts +0 -5
  286. package/dist/lib/notebooks/notebook-sql-client.d.ts.map +0 -1
  287. package/dist/lib/notebooks/notebook-sql-client.js +0 -37
  288. package/dist/lib/notebooks/notebook-sql-client.js.map +0 -1
  289. package/dist/lib/notebooks/notebook-sql-schema.d.ts +0 -16
  290. package/dist/lib/notebooks/notebook-sql-schema.d.ts.map +0 -1
  291. package/dist/lib/notebooks/notebook-sql-schema.js +0 -117
  292. package/dist/lib/notebooks/notebook-sql-schema.js.map +0 -1
  293. package/dist/lib/notebooks/notebook-sql.d.ts +0 -9
  294. package/dist/lib/notebooks/notebook-sql.d.ts.map +0 -1
  295. package/dist/lib/notebooks/notebook-sql.js +0 -36
  296. package/dist/lib/notebooks/notebook-sql.js.map +0 -1
  297. package/dist/lib/session-artifacts/apply-hashline-edits.d.ts +0 -3
  298. package/dist/lib/session-artifacts/apply-hashline-edits.d.ts.map +0 -1
  299. package/dist/lib/session-artifacts/apply-hashline-edits.js +0 -25
  300. package/dist/lib/session-artifacts/apply-hashline-edits.js.map +0 -1
  301. package/dist/lib/session-artifacts/artifact-text-edit.d.ts +0 -8
  302. package/dist/lib/session-artifacts/artifact-text-edit.d.ts.map +0 -1
  303. package/dist/lib/session-artifacts/artifact-text-edit.js +0 -23
  304. package/dist/lib/session-artifacts/artifact-text-edit.js.map +0 -1
  305. package/dist/lib/session-artifacts/hashline-tag.d.ts +0 -33
  306. package/dist/lib/session-artifacts/hashline-tag.d.ts.map +0 -1
  307. package/dist/lib/session-artifacts/hashline-tag.js +0 -80
  308. package/dist/lib/session-artifacts/hashline-tag.js.map +0 -1
  309. package/dist/lib/session-pages/inject-preview-error-reporter.d.ts +0 -3
  310. package/dist/lib/session-pages/inject-preview-error-reporter.d.ts.map +0 -1
  311. package/dist/lib/session-pages/inject-preview-error-reporter.js +0 -30
  312. package/dist/lib/session-pages/inject-preview-error-reporter.js.map +0 -1
  313. package/dist/lib/session-pages/read-session-artifact.d.ts +0 -7
  314. package/dist/lib/session-pages/read-session-artifact.d.ts.map +0 -1
  315. package/dist/lib/session-pages/read-session-artifact.js +0 -60
  316. package/dist/lib/session-pages/read-session-artifact.js.map +0 -1
  317. package/dist/lib/session-pages/session-pico-css.d.ts +0 -5
  318. package/dist/lib/session-pages/session-pico-css.d.ts.map +0 -1
  319. package/dist/lib/session-pages/session-pico-css.js +0 -11
  320. package/dist/lib/session-pages/session-pico-css.js.map +0 -1
  321. package/dist/realtime/realtime-auth.d.ts +0 -12
  322. package/dist/realtime/realtime-auth.d.ts.map +0 -1
  323. package/dist/realtime/realtime-auth.js +0 -25
  324. package/dist/realtime/realtime-auth.js.map +0 -1
  325. package/dist/realtime/yjs-account-namespace.d.ts +0 -5
  326. package/dist/realtime/yjs-account-namespace.d.ts.map +0 -1
  327. package/dist/realtime/yjs-account-namespace.js +0 -21
  328. package/dist/realtime/yjs-account-namespace.js.map +0 -1
  329. package/dist/routes/notebooks/sql-execute.d.ts +0 -3
  330. package/dist/routes/notebooks/sql-execute.d.ts.map +0 -1
  331. package/dist/routes/notebooks/sql-execute.js +0 -45
  332. package/dist/routes/notebooks/sql-execute.js.map +0 -1
  333. package/dist/routes/sql.d.ts +0 -2
  334. package/dist/routes/sql.d.ts.map +0 -1
  335. package/dist/routes/sql.js +0 -50
  336. package/dist/routes/sql.js.map +0 -1
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.markChatHasArtifacts = markChatHasArtifacts;
4
+ exports.clearChatHasArtifacts = clearChatHasArtifacts;
3
5
  exports.listLibraryItems = listLibraryItems;
4
6
  const context_1 = require("../../context");
5
7
  const chat_access_1 = require("../chat-access");
@@ -22,26 +24,66 @@ async function listNotebookItems(accountId) {
22
24
  async function listWebItems(userId) {
23
25
  const { data: chats } = await (0, list_user_chats_1.listUserChats)({ userId });
24
26
  const items = await Promise.all(chats.map(async (chat) => {
25
- var _a;
26
- const files = await (0, list_session_artifacts_1.listSessionArtifacts)(chat.id);
27
- if (files.length === 0) {
27
+ var _a, _b, _c;
28
+ if (((_a = chat.metadata) === null || _a === void 0 ? void 0 : _a.hasArtifacts) !== true) {
29
+ return null;
30
+ }
31
+ let files = [];
32
+ try {
33
+ files = await (0, list_session_artifacts_1.listSessionArtifacts)(chat.id);
34
+ }
35
+ catch (_d) {
36
+ files = [];
37
+ }
38
+ const previewPath = typeof ((_b = chat.metadata) === null || _b === void 0 ? void 0 : _b.previewPath) === 'string' ? chat.metadata.previewPath : undefined;
39
+ const hasIndex = previewPath === 'index.html' || files.some((file) => file.path === 'index.html');
40
+ const fileCount = typeof ((_c = chat.metadata) === null || _c === void 0 ? void 0 : _c.fileCount) === 'number' ? chat.metadata.fileCount : files.length;
41
+ if (fileCount === 0 && files.length === 0) {
28
42
  return null;
29
43
  }
30
- const hasIndex = files.some((file) => file.path === 'index.html');
31
44
  return {
32
45
  id: chat.id,
33
46
  kind: 'web',
34
- title: ((_a = chat.title) === null || _a === void 0 ? void 0 : _a.trim()) || 'Untitled app',
47
+ title: chat.title || 'Untitled app',
35
48
  createdAt: chat.createdAt,
36
49
  updatedAt: chat.updatedAt,
37
50
  status: hasIndex ? 'live' : 'draft',
38
- ...(hasIndex ? { url: `/sessions/${chat.id}/index.html` } : {}),
39
- fileCount: files.length,
51
+ ...(hasIndex ? { url: `/sessions/${chat.id}/${previewPath || 'index.html'}` } : {}),
52
+ fileCount: fileCount || files.length,
40
53
  owner: (0, chat_access_1.getChatOwnerId)(chat),
41
54
  };
42
55
  }));
43
56
  return items.filter((item) => item !== null);
44
57
  }
58
+ async function markChatHasArtifacts(sessionId, previewPath, fileCount) {
59
+ var _a;
60
+ const chatRepository = (0, context_1.getBuilderApiRepositories)().chatRepository;
61
+ const chat = await chatRepository.findById(sessionId);
62
+ if (!chat) {
63
+ return;
64
+ }
65
+ await chatRepository.update(sessionId, {
66
+ metadata: {
67
+ ...((_a = chat.metadata) !== null && _a !== void 0 ? _a : {}),
68
+ hasArtifacts: true,
69
+ previewPath,
70
+ fileCount,
71
+ },
72
+ });
73
+ }
74
+ async function clearChatHasArtifacts(sessionId) {
75
+ var _a;
76
+ const chatRepository = (0, context_1.getBuilderApiRepositories)().chatRepository;
77
+ const chat = await chatRepository.findById(sessionId);
78
+ if (!chat) {
79
+ return;
80
+ }
81
+ const metadata = { ...((_a = chat.metadata) !== null && _a !== void 0 ? _a : {}) };
82
+ delete metadata.hasArtifacts;
83
+ delete metadata.previewPath;
84
+ delete metadata.fileCount;
85
+ await chatRepository.update(sessionId, { metadata });
86
+ }
45
87
  async function listLibraryItems(params) {
46
88
  const [notebookItems, webItems] = await Promise.all([
47
89
  listNotebookItems(params.accountId),
@@ -1 +1 @@
1
- {"version":3,"file":"list-library-items.js","sourceRoot":"","sources":["../../../src/lib/library/list-library-items.ts"],"names":[],"mappings":";;AAmEA,4CAMC;AAzED,2CAAoD;AACpD,gDAA+C;AAC/C,wDAAkD;AAClD,oFAA8E;AAwB9E,KAAK,UAAU,iBAAiB,CAAC,SAAiB;IAChD,MAAM,UAAU,GAAG,IAAA,8BAAoB,GAAE,CAAC,kBAAkB,CAAA;IAC5D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;IAC3D,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClC,EAAE,EAAE,QAAQ,CAAC,UAAU;QACvB,IAAI,EAAE,UAAmB;QACzB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,SAAS,EAAE,QAAQ,CAAC,SAAS;KAC9B,CAAC,CAAC,CAAA;AACL,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,MAAc;IACxC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAA,+BAAa,EAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IACvD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAA+B,EAAE;;QACpD,MAAM,KAAK,GAAG,MAAM,IAAA,6CAAoB,EAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,CAAA;QACjE,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,IAAI,EAAE,KAAI,cAAc;YAC3C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;YACnC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,IAAI,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,SAAS,EAAE,KAAK,CAAC,MAAM;YACvB,KAAK,EAAE,IAAA,4BAAc,EAAC,IAAI,CAAC;SAC5B,CAAA;IACH,CAAC,CAAC,CACH,CAAA;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAuB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AACnE,CAAC;AAEM,KAAK,UAAU,gBAAgB,CAAC,MAA8B;IACnE,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAClD,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC;QACnC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;KAC5B,CAAC,CAAA;IACF,OAAO,CAAC,GAAG,aAAa,EAAE,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;AAC/F,CAAC"}
1
+ {"version":3,"file":"list-library-items.js","sourceRoot":"","sources":["../../../src/lib/library/list-library-items.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './keys';
2
+ export * from './s3-object-store';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/object-storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./keys"), exports);
18
+ __exportStar(require("./s3-object-store"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/object-storage/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAsB;AACtB,oDAAiC"}
@@ -0,0 +1,10 @@
1
+ export declare function sessionArtifactsPrefix(accountId: string, sessionId: string): string;
2
+ export declare function sessionArtifactContentKey(accountId: string, sessionId: string, artifactPath: string): string;
3
+ export declare function sessionArtifactLatestStateKey(accountId: string, sessionId: string, artifactPath: string): string;
4
+ export declare function sessionArtifactNamedSnapshotKey(accountId: string, sessionId: string, artifactPath: string, at?: Date): string;
5
+ export declare function notebookPrefix(accountId: string, notebookId: string): string;
6
+ export declare function notebookContentKey(accountId: string, notebookId: string): string;
7
+ export declare function notebookYjsStateKey(accountId: string, notebookId: string): string;
8
+ export declare function isSessionArtifactUserFacingKey(prefix: string, key: string): boolean;
9
+ export declare function relativeSessionArtifactPath(prefix: string, key: string): string;
10
+ //# sourceMappingURL=keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/lib/object-storage/keys.ts"],"names":[],"mappings":"AAcA,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnF;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,MAAM,CAER;AAED,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,MAAM,CAER;AAED,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,EAAE,GAAE,IAAiB,GACpB,MAAM,CAER;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAMnF;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/E"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sessionArtifactsPrefix = sessionArtifactsPrefix;
4
+ exports.sessionArtifactContentKey = sessionArtifactContentKey;
5
+ exports.sessionArtifactLatestStateKey = sessionArtifactLatestStateKey;
6
+ exports.sessionArtifactNamedSnapshotKey = sessionArtifactNamedSnapshotKey;
7
+ exports.notebookPrefix = notebookPrefix;
8
+ exports.notebookContentKey = notebookContentKey;
9
+ exports.notebookYjsStateKey = notebookYjsStateKey;
10
+ exports.isSessionArtifactUserFacingKey = isSessionArtifactUserFacingKey;
11
+ exports.relativeSessionArtifactPath = relativeSessionArtifactPath;
12
+ const paths_1 = require("../session-pages/paths");
13
+ const artifact_storage_paths_1 = require("../session-pages/artifact-storage-paths");
14
+ function assertSafeSegment(value, label) {
15
+ if (!value || value.includes('..') || value.includes('/') || value.includes('\\')) {
16
+ throw new Error(`Invalid ${label}`);
17
+ }
18
+ return value;
19
+ }
20
+ function sessionArtifactsPrefix(accountId, sessionId) {
21
+ return `${assertSafeSegment(accountId, 'accountId')}/sessions/${assertSafeSegment(sessionId, 'sessionId')}/`;
22
+ }
23
+ function sessionArtifactContentKey(accountId, sessionId, artifactPath) {
24
+ return `${sessionArtifactsPrefix(accountId, sessionId)}${(0, paths_1.normalizeArtifactPath)(artifactPath)}`;
25
+ }
26
+ function sessionArtifactLatestStateKey(accountId, sessionId, artifactPath) {
27
+ return sessionArtifactContentKey(accountId, sessionId, (0, artifact_storage_paths_1.artifactLatestStatePath)(artifactPath));
28
+ }
29
+ function sessionArtifactNamedSnapshotKey(accountId, sessionId, artifactPath, at = new Date()) {
30
+ return sessionArtifactContentKey(accountId, sessionId, (0, artifact_storage_paths_1.artifactSnapshotPath)(artifactPath, at));
31
+ }
32
+ function notebookPrefix(accountId, notebookId) {
33
+ return `${assertSafeSegment(accountId, 'accountId')}/notebooks/${assertSafeSegment(notebookId, 'notebookId')}/`;
34
+ }
35
+ function notebookContentKey(accountId, notebookId) {
36
+ return `${notebookPrefix(accountId, notebookId)}content.json`;
37
+ }
38
+ function notebookYjsStateKey(accountId, notebookId) {
39
+ return `${notebookPrefix(accountId, notebookId)}yjs.state`;
40
+ }
41
+ function isSessionArtifactUserFacingKey(prefix, key) {
42
+ if (!key.startsWith(prefix)) {
43
+ return false;
44
+ }
45
+ const relative = key.slice(prefix.length);
46
+ return relative.length > 0 && !(0, artifact_storage_paths_1.isArtifactStorageSidecar)(relative);
47
+ }
48
+ function relativeSessionArtifactPath(prefix, key) {
49
+ return (0, paths_1.normalizeArtifactPath)(key.slice(prefix.length));
50
+ }
51
+ //# sourceMappingURL=keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/lib/object-storage/keys.ts"],"names":[],"mappings":";;AAcA,wDAEC;AAED,8DAMC;AAED,sEAMC;AAED,0EAOC;AAED,wCAEC;AAED,gDAEC;AAED,kDAEC;AAED,wEAMC;AAED,kEAEC;AAjED,kDAA8D;AAC9D,oFAIgD;AAEhD,SAAS,iBAAiB,CAAC,KAAa,EAAE,KAAa;IACrD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,EAAE,CAAC,CAAA;IACrC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAgB,sBAAsB,CAAC,SAAiB,EAAE,SAAiB;IACzE,OAAO,GAAG,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,aAAa,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,CAAA;AAC9G,CAAC;AAED,SAAgB,yBAAyB,CACvC,SAAiB,EACjB,SAAiB,EACjB,YAAoB;IAEpB,OAAO,GAAG,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,IAAA,6BAAqB,EAAC,YAAY,CAAC,EAAE,CAAA;AAChG,CAAC;AAED,SAAgB,6BAA6B,CAC3C,SAAiB,EACjB,SAAiB,EACjB,YAAoB;IAEpB,OAAO,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAA,gDAAuB,EAAC,YAAY,CAAC,CAAC,CAAA;AAC/F,CAAC;AAED,SAAgB,+BAA+B,CAC7C,SAAiB,EACjB,SAAiB,EACjB,YAAoB,EACpB,KAAW,IAAI,IAAI,EAAE;IAErB,OAAO,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAA,6CAAoB,EAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAA;AAChG,CAAC;AAED,SAAgB,cAAc,CAAC,SAAiB,EAAE,UAAkB;IAClE,OAAO,GAAG,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,cAAc,iBAAiB,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,CAAA;AACjH,CAAC;AAED,SAAgB,kBAAkB,CAAC,SAAiB,EAAE,UAAkB;IACtE,OAAO,GAAG,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,cAAc,CAAA;AAC/D,CAAC;AAED,SAAgB,mBAAmB,CAAC,SAAiB,EAAE,UAAkB;IACvE,OAAO,GAAG,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,WAAW,CAAA;AAC5D,CAAC;AAED,SAAgB,8BAA8B,CAAC,MAAc,EAAE,GAAW;IACxE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACzC,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAA,iDAAwB,EAAC,QAAQ,CAAC,CAAA;AACnE,CAAC;AAED,SAAgB,2BAA2B,CAAC,MAAc,EAAE,GAAW;IACrE,OAAO,IAAA,6BAAqB,EAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;AACxD,CAAC"}
@@ -0,0 +1,14 @@
1
+ export declare function getContentBucket(): string;
2
+ export declare function putBytes(key: string, body: Uint8Array | Buffer): Promise<void>;
3
+ export declare function putString(key: string, body: string): Promise<void>;
4
+ export declare function getBytes(key: string): Promise<Uint8Array | null>;
5
+ export declare function getString(key: string): Promise<string | null>;
6
+ export declare function objectExists(key: string): Promise<boolean>;
7
+ export declare function deleteObject(key: string): Promise<void>;
8
+ export declare function deleteByPrefix(prefix: string): Promise<void>;
9
+ export declare function listKeysByPrefix(prefix: string): Promise<Array<{
10
+ key: string;
11
+ size: number;
12
+ }>>;
13
+ export declare function ensureContentBucketExists(): Promise<void>;
14
+ //# sourceMappingURL=s3-object-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3-object-store.d.ts","sourceRoot":"","sources":["../../../src/lib/object-storage/s3-object-store.ts"],"names":[],"mappings":"AAEA,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC;AAMD,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpF;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExE;AAED,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAEtE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAEnE;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOhE;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7D;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAKpG;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE/D"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getContentBucket = getContentBucket;
4
+ exports.putBytes = putBytes;
5
+ exports.putString = putString;
6
+ exports.getBytes = getBytes;
7
+ exports.getString = getString;
8
+ exports.objectExists = objectExists;
9
+ exports.deleteObject = deleteObject;
10
+ exports.deleteByPrefix = deleteByPrefix;
11
+ exports.listKeysByPrefix = listKeysByPrefix;
12
+ exports.ensureContentBucketExists = ensureContentBucketExists;
13
+ const context_1 = require("../../context");
14
+ function getContentBucket() {
15
+ var _a;
16
+ const bucket = (_a = (0, context_1.getBuilderApiContext)().config.contentStorage) === null || _a === void 0 ? void 0 : _a.s3.bucket;
17
+ if (!bucket) {
18
+ throw new Error('contentStorage.s3.bucket is not configured');
19
+ }
20
+ return bucket;
21
+ }
22
+ function getS3() {
23
+ return (0, context_1.getAgentService)().getS3();
24
+ }
25
+ async function putBytes(key, body) {
26
+ await getS3().uploadFile(key, getContentBucket(), Buffer.from(body));
27
+ }
28
+ async function putString(key, body) {
29
+ await getS3().uploadFile(key, getContentBucket(), body);
30
+ }
31
+ async function getBytes(key) {
32
+ var _a;
33
+ return (_a = (await getS3().downloadFileAsByteArray(key, getContentBucket()))) !== null && _a !== void 0 ? _a : null;
34
+ }
35
+ async function getString(key) {
36
+ var _a;
37
+ return (_a = (await getS3().downloadFileAsString(key, getContentBucket()))) !== null && _a !== void 0 ? _a : null;
38
+ }
39
+ async function objectExists(key) {
40
+ try {
41
+ await getS3().headObject(getContentBucket(), key);
42
+ return true;
43
+ }
44
+ catch (_a) {
45
+ return false;
46
+ }
47
+ }
48
+ async function deleteObject(key) {
49
+ await getS3().deleteObject(getContentBucket(), key);
50
+ }
51
+ async function deleteByPrefix(prefix) {
52
+ await getS3().deleteObjectsByPrefix(getContentBucket(), prefix);
53
+ }
54
+ async function listKeysByPrefix(prefix) {
55
+ var _a;
56
+ const contents = (_a = (await getS3().listObjectsByPrefix(getContentBucket(), prefix)).Contents) !== null && _a !== void 0 ? _a : [];
57
+ return contents
58
+ .filter((item) => Boolean(item.Key))
59
+ .map((item) => { var _a; return ({ key: item.Key, size: (_a = item.Size) !== null && _a !== void 0 ? _a : 0 }); });
60
+ }
61
+ async function ensureContentBucketExists() {
62
+ await getS3().ensureBucketExists(getContentBucket());
63
+ }
64
+ //# sourceMappingURL=s3-object-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3-object-store.js","sourceRoot":"","sources":["../../../src/lib/object-storage/s3-object-store.ts"],"names":[],"mappings":";;AAEA,4CAMC;AAMD,4BAEC;AAED,8BAEC;AAED,4BAEC;AAED,8BAEC;AAED,oCAOC;AAED,oCAEC;AAED,wCAEC;AAED,4CAKC;AAED,8DAEC;AAxDD,2CAAqE;AAErE,SAAgB,gBAAgB;;IAC9B,MAAM,MAAM,GAAG,MAAA,IAAA,8BAAoB,GAAE,CAAC,MAAM,CAAC,cAAc,0CAAE,EAAE,CAAC,MAAM,CAAA;IACtE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IAC/D,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,KAAK;IACZ,OAAO,IAAA,yBAAe,GAAE,CAAC,KAAK,EAAE,CAAA;AAClC,CAAC;AAEM,KAAK,UAAU,QAAQ,CAAC,GAAW,EAAE,IAAyB;IACnE,MAAM,KAAK,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,gBAAgB,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AACtE,CAAC;AAEM,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,IAAY;IACvD,MAAM,KAAK,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,gBAAgB,EAAE,EAAE,IAAI,CAAC,CAAA;AACzD,CAAC;AAEM,KAAK,UAAU,QAAQ,CAAC,GAAW;;IACxC,OAAO,MAAA,CAAC,MAAM,KAAK,EAAE,CAAC,uBAAuB,CAAC,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC,mCAAI,IAAI,CAAA;AACjF,CAAC;AAEM,KAAK,UAAU,SAAS,CAAC,GAAW;;IACzC,OAAO,MAAA,CAAC,MAAM,KAAK,EAAE,CAAC,oBAAoB,CAAC,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC,mCAAI,IAAI,CAAA;AAC9E,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,GAAW;IAC5C,IAAI,CAAC;QACH,MAAM,KAAK,EAAE,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE,GAAG,CAAC,CAAA;QACjD,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,GAAW;IAC5C,MAAM,KAAK,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,EAAE,GAAG,CAAC,CAAA;AACrD,CAAC;AAEM,KAAK,UAAU,cAAc,CAAC,MAAc;IACjD,MAAM,KAAK,EAAE,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,EAAE,MAAM,CAAC,CAAA;AACjE,CAAC;AAEM,KAAK,UAAU,gBAAgB,CAAC,MAAc;;IACnD,MAAM,QAAQ,GAAG,MAAA,CAAC,MAAM,KAAK,EAAE,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,mCAAI,EAAE,CAAA;IAC/F,OAAO,QAAQ;SACZ,MAAM,CAAC,CAAC,IAAI,EAA0C,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC3E,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,WAAC,OAAA,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAA,IAAI,CAAC,IAAI,mCAAI,CAAC,EAAE,CAAC,CAAA,EAAA,CAAC,CAAA;AAC7D,CAAC;AAEM,KAAK,UAAU,yBAAyB;IAC7C,MAAM,KAAK,EAAE,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,CAAA;AACtD,CAAC"}
@@ -1,3 +1,3 @@
1
1
  /** Injected into session-artefact-updater system prompt. */
2
- export declare const HASHLINE_DIFF_GUIDE = "Hashline diffs reference line tags from getSessionArtifactLatestContent (format lineNumber:hash, e.g. 45:d4). Use ONLY this format in applySessionArtifactDiff:\n\nSearch/replace blocks (tag range on the first line; optional search context until >>>REPLACE is ignored):\n<<<SEARCH 45:d4..52:a3\n old text\n>>>REPLACE\n new data goes here\n<<<END\n\nRules:\n- range start/end tags on the <<<SEARCH line must come from the latest content snapshot you just read.\n- you may include the old lines between <<<SEARCH and >>>REPLACE for clarity; edits are applied by tags only.\n- A single-tag range (e.g. 10:ab..10:ab) replaces one line.\n- Apply minimal SEARCH/REPLACE blocks; multiple SEARCH/REPLACE blocks are allowed.";
2
+ export declare const HASHLINE_DIFF_GUIDE = "Hashline diffs reference line tags from getSessionArtifactLatestContent (format lineNumber:hash, e.g. 45:d4).\n\n## Prefer wholesale rewrite for structural work\nIf the task fixes duplicates, broken <script>/<footer>, nested sections, consistency polish, or touches more than a small localized change: pass the COMPLETE new page (fragment or full document) as `diff` with NO <<<SEARCH markers. The server replaces the file atomically. Do NOT try to \"patch your way\" out of corrupted HTML.\n\n## Small localized edits \u2014 hashline format\n<<<SEARCH 45:d4..52:a3\n old text (optional; ignored)\n>>>REPLACE\n new data goes here\n<<<END\n\nRules:\n- range start/end tags on the <<<SEARCH line must come from the latest content snapshot you just read.\n- A single-tag range (e.g. 10:ab..10:ab) replaces one line.\n- Multiple SEARCH/REPLACE blocks are allowed; apply minimal ranges.\n- On hash mismatch: call getSessionArtifactLatestContent again \u2014 do not resend the stale diff.\n- Never invent <<<SEARCH markers around a full page; that fails classification. Either valid blocks OR a clean wholesale body.";
3
3
  //# sourceMappingURL=hashline-diff-guide.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hashline-diff-guide.d.ts","sourceRoot":"","sources":["../../../src/lib/session-artifacts/hashline-diff-guide.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,qtBAamD,CAAA"}
1
+ {"version":3,"file":"hashline-diff-guide.d.ts","sourceRoot":"","sources":["../../../src/lib/session-artifacts/hashline-diff-guide.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,imCAiB+F,CAAA"}
@@ -2,18 +2,22 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HASHLINE_DIFF_GUIDE = void 0;
4
4
  /** Injected into session-artefact-updater system prompt. */
5
- exports.HASHLINE_DIFF_GUIDE = `Hashline diffs reference line tags from getSessionArtifactLatestContent (format lineNumber:hash, e.g. 45:d4). Use ONLY this format in applySessionArtifactDiff:
5
+ exports.HASHLINE_DIFF_GUIDE = `Hashline diffs reference line tags from getSessionArtifactLatestContent (format lineNumber:hash, e.g. 45:d4).
6
6
 
7
- Search/replace blocks (tag range on the first line; optional search context until >>>REPLACE is ignored):
7
+ ## Prefer wholesale rewrite for structural work
8
+ If the task fixes duplicates, broken <script>/<footer>, nested sections, consistency polish, or touches more than a small localized change: pass the COMPLETE new page (fragment or full document) as \`diff\` with NO <<<SEARCH markers. The server replaces the file atomically. Do NOT try to "patch your way" out of corrupted HTML.
9
+
10
+ ## Small localized edits — hashline format
8
11
  <<<SEARCH 45:d4..52:a3
9
- old text
12
+ old text (optional; ignored)
10
13
  >>>REPLACE
11
14
  new data goes here
12
15
  <<<END
13
16
 
14
17
  Rules:
15
18
  - range start/end tags on the <<<SEARCH line must come from the latest content snapshot you just read.
16
- - you may include the old lines between <<<SEARCH and >>>REPLACE for clarity; edits are applied by tags only.
17
19
  - A single-tag range (e.g. 10:ab..10:ab) replaces one line.
18
- - Apply minimal SEARCH/REPLACE blocks; multiple SEARCH/REPLACE blocks are allowed.`;
20
+ - Multiple SEARCH/REPLACE blocks are allowed; apply minimal ranges.
21
+ - On hash mismatch: call getSessionArtifactLatestContent again — do not resend the stale diff.
22
+ - Never invent <<<SEARCH markers around a full page; that fails classification. Either valid blocks OR a clean wholesale body.`;
19
23
  //# sourceMappingURL=hashline-diff-guide.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hashline-diff-guide.js","sourceRoot":"","sources":["../../../src/lib/session-artifacts/hashline-diff-guide.ts"],"names":[],"mappings":";;;AAAA,4DAA4D;AAC/C,QAAA,mBAAmB,GAAG;;;;;;;;;;;;;mFAagD,CAAA"}
1
+ {"version":3,"file":"hashline-diff-guide.js","sourceRoot":"","sources":["../../../src/lib/session-artifacts/hashline-diff-guide.ts"],"names":[],"mappings":";;;AAAA,4DAA4D;AAC/C,QAAA,mBAAmB,GAAG;;;;;;;;;;;;;;;;;+HAiB4F,CAAA"}
@@ -7,5 +7,18 @@ interface Patch {
7
7
  export declare function parsePatches(input: string): Patch[];
8
8
  export declare function applyPatchToLines(lines: string[], patchText: string): string[];
9
9
  export declare function applyPatch(ytext: Y.Text, patchText: string): void;
10
+ export type ArtifactDiffClassification = {
11
+ kind: 'hashline';
12
+ patchCount: number;
13
+ } | {
14
+ kind: 'replace';
15
+ content: string;
16
+ } | {
17
+ kind: 'invalid';
18
+ reason: string;
19
+ };
20
+ export declare function classifyArtifactDiff(diff: string, options: {
21
+ isHtml: boolean;
22
+ }): ArtifactDiffClassification;
10
23
  export {};
11
24
  //# sourceMappingURL=parse-hashline-diff.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-hashline-diff.d.ts","sourceRoot":"","sources":["../../../src/lib/session-artifacts/parse-hashline-diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAQxB,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAKD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,CAmBnD;AAUD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAS9E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAcjE"}
1
+ {"version":3,"file":"parse-hashline-diff.d.ts","sourceRoot":"","sources":["../../../src/lib/session-artifacts/parse-hashline-diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAQxB,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAQD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,CAqBnD;AAUD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAY9E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAcjE;AAED,MAAM,MAAM,0BAA0B,GAClC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AA6BvC,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAC3B,0BAA0B,CA+C5B"}
@@ -3,11 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parsePatches = parsePatches;
4
4
  exports.applyPatchToLines = applyPatchToLines;
5
5
  exports.applyPatch = applyPatch;
6
+ exports.classifyArtifactDiff = classifyArtifactDiff;
6
7
  const hashline_tags_1 = require("./hashline-tags");
7
8
  const PATCH_PATTERN = /<<<SEARCH\s+([^\n]+)\n([\s\S]*?)>>>REPLACE\n([\s\S]*?)<<<END/g;
9
+ /** Loose marker detection — models invent spacing/casing variants. */
10
+ const SEARCH_MARKER = /<<<\s*SEARCH/i;
8
11
  function parsePatches(input) {
9
12
  const patches = [];
10
13
  let match;
14
+ // Reset lastIndex in case of prior exec on the shared regex.
15
+ PATCH_PATTERN.lastIndex = 0;
11
16
  while ((match = PATCH_PATTERN.exec(input)) !== null) {
12
17
  let replace = match[3];
13
18
  if (replace.endsWith('\n')) {
@@ -30,6 +35,9 @@ function sortPatchesForApplication(patches) {
30
35
  }
31
36
  function applyPatchToLines(lines, patchText) {
32
37
  const patches = sortPatchesForApplication(parsePatches(patchText));
38
+ if (patches.length === 0) {
39
+ throw new Error('No SEARCH/REPLACE blocks found in diff');
40
+ }
33
41
  let nextLines = lines;
34
42
  for (const patch of patches) {
35
43
  nextLines = (0, hashline_tags_1.applyTaggedLinePatch)(nextLines, patch.range, patch.replace);
@@ -51,4 +59,68 @@ function applyPatch(ytext, patchText) {
51
59
  }
52
60
  });
53
61
  }
62
+ /**
63
+ * Decide how to interpret applySessionArtifactDiff input.
64
+ *
65
+ * Models often send a full page when hashline is hard, or malformed <<<SEARCH
66
+ * markers that previously fell through to applyPatchText and threw — after
67
+ * partial retries that left duplicated sections / orphaned script bodies.
68
+ */
69
+ function looksLikeWholesaleHtml(html) {
70
+ var _a;
71
+ const looksLikeFullDocument = /<!DOCTYPE\s+html|<html[\s>]/i.test(html);
72
+ const sectionLikeCount = ((_a = html.match(/<(?:section|header|footer|main)[\s>]/gi)) !== null && _a !== void 0 ? _a : []).length;
73
+ const looksLikeFragmentPage = /<(?:header|main|footer)[\s>]/i.test(html) && html.length >= 600 && sectionLikeCount >= 2;
74
+ const looksLikeSubstantialBody = /<(?:main|body)[\s>]/i.test(html) && html.length >= 800;
75
+ return looksLikeFullDocument || looksLikeFragmentPage || looksLikeSubstantialBody;
76
+ }
77
+ /** Drop incomplete hashline marker lines so a botched patch can fall through
78
+ * to wholesale replace when the payload is actually a full page. */
79
+ function stripBrokenHashlineMarkers(diff) {
80
+ return diff
81
+ .replace(/^<<<\s*SEARCH[^\n]*\n?/gim, '')
82
+ .replace(/^>>>\s*REPLACE\s*\n?/gim, '')
83
+ .replace(/^<<<\s*END\s*$/gim, '')
84
+ .trim();
85
+ }
86
+ function classifyArtifactDiff(diff, options) {
87
+ const trimmed = diff.trim();
88
+ if (!trimmed) {
89
+ return {
90
+ kind: 'invalid',
91
+ reason: 'Empty diff — pass hashline SEARCH/REPLACE blocks or the complete new file contents.',
92
+ };
93
+ }
94
+ const patches = parsePatches(trimmed);
95
+ if (patches.length > 0) {
96
+ return { kind: 'hashline', patchCount: patches.length };
97
+ }
98
+ // Mentions SEARCH but nothing parsed — try recovering a wholesale page
99
+ // (models often wrap a full rewrite in a broken <<<SEARCH). Otherwise reject.
100
+ if (SEARCH_MARKER.test(trimmed)) {
101
+ const recovered = stripBrokenHashlineMarkers(trimmed);
102
+ if (recovered && !SEARCH_MARKER.test(recovered)) {
103
+ if (!options.isHtml) {
104
+ return { kind: 'replace', content: recovered };
105
+ }
106
+ if (looksLikeWholesaleHtml(recovered)) {
107
+ return { kind: 'replace', content: recovered };
108
+ }
109
+ }
110
+ return {
111
+ kind: 'invalid',
112
+ reason: 'Malformed hashline diff: found <<<SEARCH but no complete <<<SEARCH … >>>REPLACE … <<<END blocks. Do NOT retry hashline — send the COMPLETE file contents with no SEARCH markers for a wholesale rewrite.',
113
+ };
114
+ }
115
+ if (!options.isHtml) {
116
+ return { kind: 'replace', content: trimmed };
117
+ }
118
+ if (looksLikeWholesaleHtml(trimmed)) {
119
+ return { kind: 'replace', content: trimmed };
120
+ }
121
+ return {
122
+ kind: 'invalid',
123
+ reason: 'HTML diff is neither valid hashline SEARCH/REPLACE nor a complete page rewrite. For small edits use <<<SEARCH tag..tag >>>REPLACE … <<<END with fresh tags. For structural fixes (duplicates, broken script/footer, consistency polish) send the COMPLETE page body as diff with no SEARCH markers.',
124
+ };
125
+ }
54
126
  //# sourceMappingURL=parse-hashline-diff.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-hashline-diff.js","sourceRoot":"","sources":["../../../src/lib/session-artifacts/parse-hashline-diff.ts"],"names":[],"mappings":";;AAiBA,oCAmBC;AAUD,8CASC;AAED,gCAcC;AAtED,mDAKwB;AAQxB,MAAM,aAAa,GACjB,+DAA+D,CAAA;AAEjE,SAAgB,YAAY,CAAC,KAAa;IACxC,MAAM,OAAO,GAAY,EAAE,CAAA;IAE3B,IAAI,KAA6B,CAAA;IAEjC,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACpD,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACtB,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAChC,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACtB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YAChB,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAgB;IACjD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACvC,MAAM,SAAS,GAAG,IAAA,6BAAa,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAA;QACrD,MAAM,UAAU,GAAG,IAAA,6BAAa,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAA;QACvD,OAAO,UAAU,GAAG,SAAS,CAAA;IAC/B,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,KAAe,EAAE,SAAiB;IAClE,MAAM,OAAO,GAAG,yBAAyB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAA;IAElE,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,SAAS,GAAG,IAAA,oCAAoB,EAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IACzE,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAgB,UAAU,CAAC,KAAa,EAAE,SAAiB;;IACzD,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;IACvC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC3D,CAAC;IAED,MAAA,KAAK,CAAC,GAAG,0CAAE,QAAQ,CAAC,GAAG,EAAE;QACvB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;QAChC,MAAM,OAAO,GAAG,IAAA,gCAAgB,EAAC,iBAAiB,CAAC,IAAA,iCAAiB,EAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;QAC1F,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAC/B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"parse-hashline-diff.js","sourceRoot":"","sources":["../../../src/lib/session-artifacts/parse-hashline-diff.ts"],"names":[],"mappings":";;AAoBA,oCAqBC;AAUD,8CAYC;AAED,gCAcC;AAkCD,oDAkDC;AAlKD,mDAKwB;AAQxB,MAAM,aAAa,GACjB,+DAA+D,CAAA;AAEjE,sEAAsE;AACtE,MAAM,aAAa,GAAG,eAAe,CAAA;AAErC,SAAgB,YAAY,CAAC,KAAa;IACxC,MAAM,OAAO,GAAY,EAAE,CAAA;IAE3B,IAAI,KAA6B,CAAA;IACjC,6DAA6D;IAC7D,aAAa,CAAC,SAAS,GAAG,CAAC,CAAA;IAE3B,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACpD,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACtB,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAChC,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACtB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YAChB,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAgB;IACjD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACvC,MAAM,SAAS,GAAG,IAAA,6BAAa,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAA;QACrD,MAAM,UAAU,GAAG,IAAA,6BAAa,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAA;QACvD,OAAO,UAAU,GAAG,SAAS,CAAA;IAC/B,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,KAAe,EAAE,SAAiB;IAClE,MAAM,OAAO,GAAG,yBAAyB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAA;IAClE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC3D,CAAC;IAED,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,SAAS,GAAG,IAAA,oCAAoB,EAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IACzE,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAgB,UAAU,CAAC,KAAa,EAAE,SAAiB;;IACzD,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;IACvC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC3D,CAAC;IAED,MAAA,KAAK,CAAC,GAAG,0CAAE,QAAQ,CAAC,GAAG,EAAE;QACvB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;QAChC,MAAM,OAAO,GAAG,IAAA,gCAAgB,EAAC,iBAAiB,CAAC,IAAA,iCAAiB,EAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;QAC1F,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAC/B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAOD;;;;;;GAMG;AACH,SAAS,sBAAsB,CAAC,IAAY;;IAC1C,MAAM,qBAAqB,GAAG,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvE,MAAM,gBAAgB,GAAG,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,wCAAwC,CAAC,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAA;IAC5F,MAAM,qBAAqB,GACzB,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,gBAAgB,IAAI,CAAC,CAAA;IAC3F,MAAM,wBAAwB,GAC5B,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,CAAA;IACzD,OAAO,qBAAqB,IAAI,qBAAqB,IAAI,wBAAwB,CAAA;AACnF,CAAC;AAED;oEACoE;AACpE,SAAS,0BAA0B,CAAC,IAAY;IAC9C,OAAO,IAAI;SACR,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC;SACxC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC;SACtC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;SAChC,IAAI,EAAE,CAAA;AACX,CAAC;AAED,SAAgB,oBAAoB,CAClC,IAAY,EACZ,OAA4B;IAE5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,SAAS;YACf,MAAM,EACJ,qFAAqF;SACxF,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IACrC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,CAAA;IACzD,CAAC;IAED,uEAAuE;IACvE,8EAA8E;IAC9E,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAA;QACrD,IAAI,SAAS,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;YAChD,CAAC;YACD,IAAI,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;YAChD,CAAC;QACH,CAAC;QACD,OAAO;YACL,IAAI,EAAE,SAAS;YACf,MAAM,EACJ,0MAA0M;SAC7M,CAAA;IACH,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;IAC9C,CAAC;IAED,IAAI,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;IAC9C,CAAC;IAED,OAAO;QACL,IAAI,EAAE,SAAS;QACf,MAAM,EACJ,qSAAqS;KACxS,CAAA;AACH,CAAC"}
@@ -0,0 +1,16 @@
1
+ export interface QualityFinding {
2
+ rule: string;
3
+ severity: 'error' | 'warning';
4
+ message: string;
5
+ }
6
+ export interface QualityAuditResult {
7
+ clean: boolean;
8
+ findings: QualityFinding[];
9
+ }
10
+ /**
11
+ * Static quality audit for generated HTML pages. Deterministic counterpart to
12
+ * the generation skill guides: flags the failure modes they warn about so
13
+ * subagents can fix them before publishing.
14
+ */
15
+ export declare function auditHtmlArtifact(html: string): QualityAuditResult;
16
+ //# sourceMappingURL=artifact-quality-audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-quality-audit.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/artifact-quality-audit.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,cAAc,EAAE,CAAA;CAC3B;AA+BD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAoTlE"}