@1agh/maude 0.42.0 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. package/apps/studio/.ai/cache/_stats.json +7 -0
  2. package/apps/studio/acp/bootstrap-brief.ts +12 -2
  3. package/apps/studio/acp/bridge.ts +44 -10
  4. package/apps/studio/acp/env.ts +23 -0
  5. package/apps/studio/acp/login-state.ts +263 -0
  6. package/apps/studio/acp/plugin-bootstrap.ts +31 -25
  7. package/apps/studio/acp/probe.ts +152 -1
  8. package/apps/studio/annotations-layer.tsx +1451 -324
  9. package/apps/studio/annotations-model.ts +58 -0
  10. package/apps/studio/api.ts +568 -24
  11. package/apps/studio/bin/_audio-search.mjs +140 -0
  12. package/apps/studio/bin/_import-asset-pdf-worker.mjs +34 -0
  13. package/apps/studio/bin/_import-asset.mjs +815 -0
  14. package/apps/studio/bin/_import-brand.mjs +635 -0
  15. package/apps/studio/bin/_import-tokens-alias-resolver.mjs +95 -0
  16. package/apps/studio/bin/_import-tokens.mjs +1201 -0
  17. package/apps/studio/bin/_ingest-footage.mjs +386 -0
  18. package/apps/studio/bin/_probe-footage-playwright.mjs +269 -0
  19. package/apps/studio/bin/_transcribe.mjs +419 -0
  20. package/apps/studio/bin/_transcribe.test.mjs +80 -0
  21. package/apps/studio/bin/_video-playwright.mjs +141 -71
  22. package/apps/studio/bin/audio-search.sh +28 -0
  23. package/apps/studio/bin/generate.sh +154 -0
  24. package/apps/studio/bin/import-asset.sh +34 -0
  25. package/apps/studio/bin/import-brand.sh +29 -0
  26. package/apps/studio/bin/import-tokens.sh +33 -0
  27. package/apps/studio/bin/ingest-footage.sh +27 -0
  28. package/apps/studio/bin/photo-adjust.sh +163 -0
  29. package/apps/studio/bin/photo-bg-remove.sh +258 -0
  30. package/apps/studio/bin/probe-footage.sh +28 -0
  31. package/apps/studio/bin/read-annotations.mjs +125 -2
  32. package/apps/studio/bin/transcribe.sh +39 -0
  33. package/apps/studio/canvas-edit.ts +656 -12
  34. package/apps/studio/canvas-lib.tsx +637 -10
  35. package/apps/studio/canvas-pipeline.ts +65 -7
  36. package/apps/studio/canvas-shell.tsx +156 -16
  37. package/apps/studio/client/app.jsx +2385 -699
  38. package/apps/studio/client/export-center.jsx +35 -1
  39. package/apps/studio/client/generate-dialog.jsx +352 -0
  40. package/apps/studio/client/github.js +18 -0
  41. package/apps/studio/client/inspector-controls.jsx +781 -0
  42. package/apps/studio/client/panels/BrandUploadPanel.jsx +233 -0
  43. package/apps/studio/client/panels/ChatPanel.jsx +15 -33
  44. package/apps/studio/client/panels/GitPanel.jsx +8 -0
  45. package/apps/studio/client/panels/IntroVideoDialog.jsx +44 -0
  46. package/apps/studio/client/panels/OnboardingWizard.jsx +12 -0
  47. package/apps/studio/client/panels/ReadinessList.jsx +227 -7
  48. package/apps/studio/client/panels/RepoBranchSwitcher.jsx +133 -21
  49. package/apps/studio/client/panels/SettingsPanel.jsx +828 -0
  50. package/apps/studio/client/panels/SetupChecklist.jsx +223 -0
  51. package/apps/studio/client/panels/StickerPicker.jsx +160 -0
  52. package/apps/studio/client/panels/TimelinePanel.jsx +15 -2
  53. package/apps/studio/client/photo-knobs.jsx +432 -0
  54. package/apps/studio/client/styles/3-shell-maude.css +376 -28
  55. package/apps/studio/client/styles/4-components.css +223 -0
  56. package/apps/studio/client/styles/6-acp-chat.css +86 -0
  57. package/apps/studio/client/tour/quick-setup-tour.js +39 -0
  58. package/apps/studio/commands/annotation-strokes-command.ts +13 -3
  59. package/apps/studio/commands/edit-source-command.ts +31 -4
  60. package/apps/studio/config.schema.json +70 -0
  61. package/apps/studio/context-menu.tsx +42 -8
  62. package/apps/studio/context.ts +16 -0
  63. package/apps/studio/design-setup-readiness.ts +115 -0
  64. package/apps/studio/dist/client.bundle.js +5572 -21
  65. package/apps/studio/dist/comment-mount.js +2 -2
  66. package/apps/studio/dist/runtime/.min-sizes.json +1 -0
  67. package/apps/studio/dist/runtime/@imgly_background-removal.js +5543 -0
  68. package/apps/studio/dist/runtime/pixi-js.js +519 -519
  69. package/apps/studio/dist/styles.css +1 -1
  70. package/apps/studio/dom-selection.ts +25 -0
  71. package/apps/studio/draw/palette.ts +34 -0
  72. package/apps/studio/exporters/jobs.ts +47 -5
  73. package/apps/studio/exporters/video.ts +24 -4
  74. package/apps/studio/footage/schema.test.ts +287 -0
  75. package/apps/studio/footage/schema.ts +662 -0
  76. package/apps/studio/footage-store.ts +235 -0
  77. package/apps/studio/fs-watch.ts +10 -0
  78. package/apps/studio/generation/adapters/elevenlabs.ts +370 -0
  79. package/apps/studio/generation/adapters/gemini.ts +542 -0
  80. package/apps/studio/generation/adapters/groq.test.ts +80 -0
  81. package/apps/studio/generation/adapters/groq.ts +247 -0
  82. package/apps/studio/generation/audio-library.test.ts +95 -0
  83. package/apps/studio/generation/audio-library.ts +156 -0
  84. package/apps/studio/generation/captions.test.ts +78 -0
  85. package/apps/studio/generation/captions.ts +132 -0
  86. package/apps/studio/generation/download.ts +76 -0
  87. package/apps/studio/generation/elevenlabs.test.ts +223 -0
  88. package/apps/studio/generation/gemini.test.ts +350 -0
  89. package/apps/studio/generation/jobs.test.ts +128 -0
  90. package/apps/studio/generation/jobs.ts +243 -0
  91. package/apps/studio/generation/keys.test.ts +75 -0
  92. package/apps/studio/generation/keys.ts +162 -0
  93. package/apps/studio/generation/prefs.test.ts +95 -0
  94. package/apps/studio/generation/prefs.ts +82 -0
  95. package/apps/studio/generation/registry.ts +88 -0
  96. package/apps/studio/generation/types.test.ts +123 -0
  97. package/apps/studio/generation/types.ts +266 -0
  98. package/apps/studio/generation/whisper-models.test.ts +152 -0
  99. package/apps/studio/generation/whisper-models.ts +257 -0
  100. package/apps/studio/generation/whisper-spike-results.md +61 -0
  101. package/apps/studio/git/endpoints.ts +68 -7
  102. package/apps/studio/git/service.ts +199 -21
  103. package/apps/studio/github/service.ts +67 -0
  104. package/apps/studio/handoff.ts +3 -2
  105. package/apps/studio/http.ts +1039 -22
  106. package/apps/studio/input-router.tsx +10 -0
  107. package/apps/studio/inspect.ts +53 -1
  108. package/apps/studio/media/intro.mp4 +0 -0
  109. package/apps/studio/media-commit-chain.ts +119 -0
  110. package/apps/studio/paths.ts +20 -0
  111. package/apps/studio/photo/filters.ts +285 -0
  112. package/apps/studio/photo/pipeline.ts +607 -0
  113. package/apps/studio/photo/schema.ts +367 -0
  114. package/apps/studio/photo-store.ts +154 -0
  115. package/apps/studio/readiness.ts +108 -20
  116. package/apps/studio/runtime-bundle.ts +29 -6
  117. package/apps/studio/scaffold-design.ts +1145 -0
  118. package/apps/studio/server.ts +18 -2
  119. package/apps/studio/stickers/figjam-doodle/manifest.json +104 -0
  120. package/apps/studio/stickers/figjam-doodle/slice1.png +0 -0
  121. package/apps/studio/stickers/figjam-doodle/slice10.png +0 -0
  122. package/apps/studio/stickers/figjam-doodle/slice11.png +0 -0
  123. package/apps/studio/stickers/figjam-doodle/slice12.png +0 -0
  124. package/apps/studio/stickers/figjam-doodle/slice13.png +0 -0
  125. package/apps/studio/stickers/figjam-doodle/slice14.png +0 -0
  126. package/apps/studio/stickers/figjam-doodle/slice15.png +0 -0
  127. package/apps/studio/stickers/figjam-doodle/slice16.png +0 -0
  128. package/apps/studio/stickers/figjam-doodle/slice17.png +0 -0
  129. package/apps/studio/stickers/figjam-doodle/slice18.png +0 -0
  130. package/apps/studio/stickers/figjam-doodle/slice19.png +0 -0
  131. package/apps/studio/stickers/figjam-doodle/slice2.png +0 -0
  132. package/apps/studio/stickers/figjam-doodle/slice20.png +0 -0
  133. package/apps/studio/stickers/figjam-doodle/slice21.png +0 -0
  134. package/apps/studio/stickers/figjam-doodle/slice22.png +0 -0
  135. package/apps/studio/stickers/figjam-doodle/slice23.png +0 -0
  136. package/apps/studio/stickers/figjam-doodle/slice24.png +0 -0
  137. package/apps/studio/stickers/figjam-doodle/slice3.png +0 -0
  138. package/apps/studio/stickers/figjam-doodle/slice4.png +0 -0
  139. package/apps/studio/stickers/figjam-doodle/slice5.png +0 -0
  140. package/apps/studio/stickers/figjam-doodle/slice6.png +0 -0
  141. package/apps/studio/stickers/figjam-doodle/slice7.png +0 -0
  142. package/apps/studio/stickers/figjam-doodle/slice8.png +0 -0
  143. package/apps/studio/stickers/figjam-doodle/slice9.png +0 -0
  144. package/apps/studio/stickers/life-style/best.png +0 -0
  145. package/apps/studio/stickers/life-style/come-on.png +0 -0
  146. package/apps/studio/stickers/life-style/cut.png +0 -0
  147. package/apps/studio/stickers/life-style/detox.png +0 -0
  148. package/apps/studio/stickers/life-style/just.png +0 -0
  149. package/apps/studio/stickers/life-style/manifest.json +68 -0
  150. package/apps/studio/stickers/life-style/mirror.png +0 -0
  151. package/apps/studio/stickers/life-style/nice.png +0 -0
  152. package/apps/studio/stickers/life-style/objects.png +0 -0
  153. package/apps/studio/stickers/life-style/ok.png +0 -0
  154. package/apps/studio/stickers/life-style/queen.png +0 -0
  155. package/apps/studio/stickers/life-style/star.png +0 -0
  156. package/apps/studio/stickers/life-style/sun.png +0 -0
  157. package/apps/studio/stickers/life-style/water.png +0 -0
  158. package/apps/studio/stickers/life-style/yeah.png +0 -0
  159. package/apps/studio/stickers/life-style/you-can.png +0 -0
  160. package/apps/studio/stickers/opposing-thoughts/check-the-deets.png +0 -0
  161. package/apps/studio/stickers/opposing-thoughts/cut-it.png +0 -0
  162. package/apps/studio/stickers/opposing-thoughts/dope.png +0 -0
  163. package/apps/studio/stickers/opposing-thoughts/fresh.png +0 -0
  164. package/apps/studio/stickers/opposing-thoughts/hot.png +0 -0
  165. package/apps/studio/stickers/opposing-thoughts/idea.png +0 -0
  166. package/apps/studio/stickers/opposing-thoughts/keep-exploring.png +0 -0
  167. package/apps/studio/stickers/opposing-thoughts/killed-it.png +0 -0
  168. package/apps/studio/stickers/opposing-thoughts/love-it.png +0 -0
  169. package/apps/studio/stickers/opposing-thoughts/manifest.json +88 -0
  170. package/apps/studio/stickers/opposing-thoughts/not-sure.png +0 -0
  171. package/apps/studio/stickers/opposing-thoughts/ok.png +0 -0
  172. package/apps/studio/stickers/opposing-thoughts/pure-gold.png +0 -0
  173. package/apps/studio/stickers/opposing-thoughts/save-for-later.png +0 -0
  174. package/apps/studio/stickers/opposing-thoughts/steal-this.png +0 -0
  175. package/apps/studio/stickers/opposing-thoughts/take-a-peek.png +0 -0
  176. package/apps/studio/stickers/opposing-thoughts/this-or-that.png +0 -0
  177. package/apps/studio/stickers/opposing-thoughts/thoughts.png +0 -0
  178. package/apps/studio/stickers/opposing-thoughts/vibes.png +0 -0
  179. package/apps/studio/stickers/opposing-thoughts/winner.png +0 -0
  180. package/apps/studio/stickers/opposing-thoughts/wip.png +0 -0
  181. package/apps/studio/stickers/project-status/group-100.png +0 -0
  182. package/apps/studio/stickers/project-status/group-101.png +0 -0
  183. package/apps/studio/stickers/project-status/group-102.png +0 -0
  184. package/apps/studio/stickers/project-status/group-103.png +0 -0
  185. package/apps/studio/stickers/project-status/group-104.png +0 -0
  186. package/apps/studio/stickers/project-status/group-105.png +0 -0
  187. package/apps/studio/stickers/project-status/group-106.png +0 -0
  188. package/apps/studio/stickers/project-status/group-107.png +0 -0
  189. package/apps/studio/stickers/project-status/group-108.png +0 -0
  190. package/apps/studio/stickers/project-status/group-109.png +0 -0
  191. package/apps/studio/stickers/project-status/group-110.png +0 -0
  192. package/apps/studio/stickers/project-status/group-111.png +0 -0
  193. package/apps/studio/stickers/project-status/group-112.png +0 -0
  194. package/apps/studio/stickers/project-status/group-113.png +0 -0
  195. package/apps/studio/stickers/project-status/group-114.png +0 -0
  196. package/apps/studio/stickers/project-status/group-115.png +0 -0
  197. package/apps/studio/stickers/project-status/group-117.png +0 -0
  198. package/apps/studio/stickers/project-status/group-118.png +0 -0
  199. package/apps/studio/stickers/project-status/group-119.png +0 -0
  200. package/apps/studio/stickers/project-status/group-120.png +0 -0
  201. package/apps/studio/stickers/project-status/group-121.png +0 -0
  202. package/apps/studio/stickers/project-status/group-122.png +0 -0
  203. package/apps/studio/stickers/project-status/group-41.png +0 -0
  204. package/apps/studio/stickers/project-status/group-42.png +0 -0
  205. package/apps/studio/stickers/project-status/group-43.png +0 -0
  206. package/apps/studio/stickers/project-status/group-44.png +0 -0
  207. package/apps/studio/stickers/project-status/group-45.png +0 -0
  208. package/apps/studio/stickers/project-status/group-46.png +0 -0
  209. package/apps/studio/stickers/project-status/group-47.png +0 -0
  210. package/apps/studio/stickers/project-status/group-48.png +0 -0
  211. package/apps/studio/stickers/project-status/group-49.png +0 -0
  212. package/apps/studio/stickers/project-status/group-50.png +0 -0
  213. package/apps/studio/stickers/project-status/group-51.png +0 -0
  214. package/apps/studio/stickers/project-status/group-52.png +0 -0
  215. package/apps/studio/stickers/project-status/group-53.png +0 -0
  216. package/apps/studio/stickers/project-status/group-54.png +0 -0
  217. package/apps/studio/stickers/project-status/group-55.png +0 -0
  218. package/apps/studio/stickers/project-status/group-56.png +0 -0
  219. package/apps/studio/stickers/project-status/group-57.png +0 -0
  220. package/apps/studio/stickers/project-status/group-58.png +0 -0
  221. package/apps/studio/stickers/project-status/group-59.png +0 -0
  222. package/apps/studio/stickers/project-status/group-60.png +0 -0
  223. package/apps/studio/stickers/project-status/group-61.png +0 -0
  224. package/apps/studio/stickers/project-status/group-62.png +0 -0
  225. package/apps/studio/stickers/project-status/group-63.png +0 -0
  226. package/apps/studio/stickers/project-status/group-64.png +0 -0
  227. package/apps/studio/stickers/project-status/group-65.png +0 -0
  228. package/apps/studio/stickers/project-status/group-66.png +0 -0
  229. package/apps/studio/stickers/project-status/group-67.png +0 -0
  230. package/apps/studio/stickers/project-status/group-68.png +0 -0
  231. package/apps/studio/stickers/project-status/group-69.png +0 -0
  232. package/apps/studio/stickers/project-status/group-70.png +0 -0
  233. package/apps/studio/stickers/project-status/group-71.png +0 -0
  234. package/apps/studio/stickers/project-status/group-72.png +0 -0
  235. package/apps/studio/stickers/project-status/group-73.png +0 -0
  236. package/apps/studio/stickers/project-status/group-74.png +0 -0
  237. package/apps/studio/stickers/project-status/group-75.png +0 -0
  238. package/apps/studio/stickers/project-status/group-76.png +0 -0
  239. package/apps/studio/stickers/project-status/group-77.png +0 -0
  240. package/apps/studio/stickers/project-status/group-78.png +0 -0
  241. package/apps/studio/stickers/project-status/group-79.png +0 -0
  242. package/apps/studio/stickers/project-status/group-80.png +0 -0
  243. package/apps/studio/stickers/project-status/group-81.png +0 -0
  244. package/apps/studio/stickers/project-status/group-82.png +0 -0
  245. package/apps/studio/stickers/project-status/group-83.png +0 -0
  246. package/apps/studio/stickers/project-status/group-84.png +0 -0
  247. package/apps/studio/stickers/project-status/group-85.png +0 -0
  248. package/apps/studio/stickers/project-status/group-86.png +0 -0
  249. package/apps/studio/stickers/project-status/group-87.png +0 -0
  250. package/apps/studio/stickers/project-status/group-88.png +0 -0
  251. package/apps/studio/stickers/project-status/group-89.png +0 -0
  252. package/apps/studio/stickers/project-status/group-90.png +0 -0
  253. package/apps/studio/stickers/project-status/group-91.png +0 -0
  254. package/apps/studio/stickers/project-status/group-92.png +0 -0
  255. package/apps/studio/stickers/project-status/group-93.png +0 -0
  256. package/apps/studio/stickers/project-status/group-94.png +0 -0
  257. package/apps/studio/stickers/project-status/group-96.png +0 -0
  258. package/apps/studio/stickers/project-status/group-97.png +0 -0
  259. package/apps/studio/stickers/project-status/group-98.png +0 -0
  260. package/apps/studio/stickers/project-status/group-99.png +0 -0
  261. package/apps/studio/stickers/project-status/manifest.json +328 -0
  262. package/apps/studio/test/_helpers.ts +15 -2
  263. package/apps/studio/test/acp-bootstrap-brief.test.ts +11 -0
  264. package/apps/studio/test/acp-bridge.test.ts +34 -1
  265. package/apps/studio/test/acp-commands.test.ts +2 -1
  266. package/apps/studio/test/acp-env.test.ts +30 -0
  267. package/apps/studio/test/acp-plugin-bootstrap.test.ts +23 -57
  268. package/apps/studio/test/acp-session-plugins.test.ts +72 -1
  269. package/apps/studio/test/annotation-strokes-command.test.ts +17 -0
  270. package/apps/studio/test/annotations-layer.test.ts +174 -0
  271. package/apps/studio/test/asset-api.test.ts +3 -3
  272. package/apps/studio/test/canvas-edit.test.ts +17 -6
  273. package/apps/studio/test/canvas-origin-gate.test.ts +50 -0
  274. package/apps/studio/test/csp-canvas-shell.test.ts +11 -0
  275. package/apps/studio/test/csrf-write-guard.test.ts +23 -1
  276. package/apps/studio/test/design-setup-readiness.test.ts +155 -0
  277. package/apps/studio/test/dynamic-text-edit.test.ts +162 -0
  278. package/apps/studio/test/edit-source-command.test.ts +23 -0
  279. package/apps/studio/test/element-structural-edit.test.ts +154 -0
  280. package/apps/studio/test/fixtures/fake-claude-auth.mjs +13 -0
  281. package/apps/studio/test/footage-store.test.ts +100 -0
  282. package/apps/studio/test/generate-route.test.ts +106 -0
  283. package/apps/studio/test/git-branches.test.ts +97 -0
  284. package/apps/studio/test/github-api.test.ts +56 -1
  285. package/apps/studio/test/import-asset-browser.test.ts +64 -0
  286. package/apps/studio/test/import-asset-route.test.ts +71 -0
  287. package/apps/studio/test/import-asset.test.ts +399 -0
  288. package/apps/studio/test/import-brand-browser.test.ts +88 -0
  289. package/apps/studio/test/import-brand-route.test.ts +120 -0
  290. package/apps/studio/test/import-brand.test.ts +206 -0
  291. package/apps/studio/test/import-tokens.test.ts +722 -0
  292. package/apps/studio/test/input-router.test.ts +33 -0
  293. package/apps/studio/test/inspect-script-syntax.test.ts +53 -0
  294. package/apps/studio/test/media-commit-chain.test.ts +210 -0
  295. package/apps/studio/test/photo-bg-remove-validation.test.ts +71 -0
  296. package/apps/studio/test/photo-canvas-bundle.test.ts +61 -0
  297. package/apps/studio/test/photo-edit-api.test.ts +201 -0
  298. package/apps/studio/test/photo-filters.test.ts +149 -0
  299. package/apps/studio/test/photo-pipeline.test.ts +106 -0
  300. package/apps/studio/test/photo-taxonomy.test.ts +96 -0
  301. package/apps/studio/test/read-annotations.test.ts +164 -0
  302. package/apps/studio/test/readiness.test.ts +13 -11
  303. package/apps/studio/test/scaffold-design.test.ts +122 -0
  304. package/apps/studio/test/shell-importmap.test.ts +49 -0
  305. package/apps/studio/test/text-editability-stamp.test.ts +131 -0
  306. package/apps/studio/test/timeline-parse.test.ts +57 -0
  307. package/apps/studio/test/tool-palette-insert-anchor.test.ts +5 -3
  308. package/apps/studio/test/tour-overlay.test.tsx +16 -0
  309. package/apps/studio/test/undo-stack.test.ts +33 -0
  310. package/apps/studio/test/video-asset.test.ts +5 -5
  311. package/apps/studio/test/video-render-bridge.test.ts +23 -1
  312. package/apps/studio/text-caret.ts +239 -0
  313. package/apps/studio/tool-palette.tsx +49 -21
  314. package/apps/studio/ui-prefs.ts +130 -0
  315. package/apps/studio/undo-stack.ts +94 -2
  316. package/apps/studio/use-annotation-resize.tsx +4 -4
  317. package/apps/studio/use-canvas-media-drop.tsx +40 -1
  318. package/apps/studio/use-chrome-visibility.tsx +8 -2
  319. package/apps/studio/use-selection-set.tsx +21 -0
  320. package/apps/studio/video-comp.tsx +48 -7
  321. package/apps/studio/whats-new.json +149 -0
  322. package/apps/studio/ws.ts +5 -0
  323. package/cli/bin/maude.mjs +6 -6
  324. package/cli/commands/design.mjs +67 -3
  325. package/cli/lib/gitignore-block.mjs +2 -0
  326. package/cli/lib/pkg-root.mjs +107 -0
  327. package/cli/lib/pkg-root.test.mjs +79 -0
  328. package/cli/lib/reconstruct-toolset.test.mjs +194 -0
  329. package/cli/lib/update-check.mjs +8 -0
  330. package/package.json +13 -11
  331. package/plugins/design/dependencies.json +18 -0
  332. package/plugins/design/templates/_shell.html +1 -0
@@ -17,6 +17,7 @@
17
17
  import { spawn } from 'node:child_process';
18
18
 
19
19
  import { createAcp } from './acp/index.ts';
20
+ import { cancelInstall, cancelSignin } from './acp/login-state.ts';
20
21
  import { createActivity } from './activity.ts';
21
22
  import { ASSET_MAX_VIDEO_BYTES, createApi } from './api.ts';
22
23
  import { bootSelfHeal } from './boot-self-heal.ts';
@@ -27,6 +28,7 @@ import { createCollab } from './collab/index.ts';
27
28
  import { createContext, reloadConfig } from './context.ts';
28
29
  import { createExportJobQueue } from './exporters/jobs.ts';
29
30
  import { createFsWatch } from './fs-watch.ts';
31
+ import { createGenerationJobQueue } from './generation/jobs.ts';
30
32
  import { createGitWatch } from './git/watch.ts';
31
33
  import { createHttp } from './http.ts';
32
34
  import { createInspect } from './inspect.ts';
@@ -107,7 +109,9 @@ const activity = createActivity(ctx);
107
109
  const acp = createAcp(ctx, aiActivity);
108
110
  const ws = createWs(ctx, api, inspect, collab, activity, acp);
109
111
  const exportJobs = createExportJobQueue(ctx.bus, ctx.paths.designRoot);
110
- const http = createHttp(ctx, api, inspect, aiActivity, exportJobs);
112
+ // feature-ai-media-generation (DDR-16x) background AI-media generation queue.
113
+ const generateJobs = createGenerationJobQueue(ctx.bus, ctx.paths.designRoot);
114
+ const http = createHttp(ctx, api, inspect, aiActivity, exportJobs, generateJobs);
111
115
  const fsWatch = createFsWatch(ctx);
112
116
 
113
117
  // Port: --port arg > $PORT > $MDCC_DEV_PORT > 4399.
@@ -242,12 +246,16 @@ function startCanvasServer(port: number): BunServer {
242
246
  '/_api/git-user': http.routes['/_api/git-user'],
243
247
  '/_api/canvas-meta': http.routes['/_api/canvas-meta'],
244
248
  '/_api/annotations': http.routes['/_api/annotations'],
245
- // Phase 23 — capped binary image upload (magic-byte sniff + 10 MB +
249
+ // Phase 23 — capped binary image upload (magic-byte sniff + category cap +
246
250
  // content-addressed name + traversal guard + no-SVG, in api.saveAsset).
247
251
  // Bun matches `routes` BEFORE `fetch`, so the route must be listed here
248
252
  // explicitly — the CANVAS_SAFE_API entry alone only opens the fetch
249
253
  // fall-through (which serves files, not route handlers). See DDR (Task 9).
250
254
  '/_api/asset': http.routes['/_api/asset'],
255
+ // feature-photo-editor — PhotoEdit sidecar GET/PUT. MUST be here AND in
256
+ // CANVAS_SAFE_API (http.ts): Bun matches `routes` before `fetch`, so a
257
+ // one-list entry 404s from the canvas iframe (the DDR-088 rollout bug).
258
+ '/_api/photo-edit': http.routes['/_api/photo-edit'],
251
259
  '/_api/git-committers': http.routes['/_api/git-committers'],
252
260
  '/_api/ai': http.routes['/_api/ai'],
253
261
  '/_comments': http.routes['/_comments'],
@@ -459,6 +467,14 @@ if (!process.env.NO_OPEN) {
459
467
 
460
468
  async function shutdown() {
461
469
  console.log('\n Stopping…');
470
+ // DDR-166 — reap in-flight claude-provisioning grandchildren before this
471
+ // process exits. Security-review finding: neither the SIGTERM/SIGINT path
472
+ // here nor sidecar.rs's child.kill() on the Tauri side propagate to a
473
+ // spawned `claude auth login`/installer child by default, so quitting
474
+ // mid-signin or mid-install orphaned it — exactly the DDR's own named-but-
475
+ // previously-unanswered "how does app-quit reach the grandchild" question.
476
+ cancelSignin();
477
+ cancelInstall();
462
478
  fsWatch.stop();
463
479
  try {
464
480
  gitWatch.stop();
@@ -0,0 +1,104 @@
1
+ {
2
+ "name": "FigJam Doodle Stickers",
3
+ "author": "CJ Xue",
4
+ "attributionUrl": "https://www.figma.com/community/file/1301623299668462371",
5
+ "license": "Figma Community (see attributionUrl for terms)",
6
+ "stickers": [
7
+ {
8
+ "file": "slice1.png",
9
+ "keywords": ["yes", "agree", "happy"]
10
+ },
11
+ {
12
+ "file": "slice10.png",
13
+ "keywords": ["bad", "thumbs-down"]
14
+ },
15
+ {
16
+ "file": "slice11.png",
17
+ "keywords": ["lovely", "sweet"]
18
+ },
19
+ {
20
+ "file": "slice12.png",
21
+ "keywords": ["good", "thumbs-up"]
22
+ },
23
+ {
24
+ "file": "slice13.png",
25
+ "keywords": ["deadline", "due-date", "urgent"]
26
+ },
27
+ {
28
+ "file": "slice14.png",
29
+ "keywords": ["confused", "thinking", "hmm"]
30
+ },
31
+ {
32
+ "file": "slice15.png",
33
+ "keywords": ["love", "crush", "admire"]
34
+ },
35
+ {
36
+ "file": "slice16.png",
37
+ "keywords": ["no-idea", "stuck", "blank"]
38
+ },
39
+ {
40
+ "file": "slice17.png",
41
+ "keywords": ["discuss", "talk", "meeting"]
42
+ },
43
+ {
44
+ "file": "slice18.png",
45
+ "keywords": ["group", "team", "together"]
46
+ },
47
+ {
48
+ "file": "slice19.png",
49
+ "keywords": ["hi-fi", "high-fidelity", "mockup"]
50
+ },
51
+ {
52
+ "file": "slice2.png",
53
+ "keywords": ["no", "disagree", "refuse"]
54
+ },
55
+ {
56
+ "file": "slice20.png",
57
+ "keywords": ["wireframe", "lo-fi", "sketch"]
58
+ },
59
+ {
60
+ "file": "slice21.png",
61
+ "keywords": ["questions", "ask", "confused"]
62
+ },
63
+ {
64
+ "file": "slice22.png",
65
+ "keywords": ["merge", "combine"]
66
+ },
67
+ {
68
+ "file": "slice23.png",
69
+ "keywords": ["new", "baby", "fresh-start"]
70
+ },
71
+ {
72
+ "file": "slice24.png",
73
+ "keywords": ["old", "legacy"]
74
+ },
75
+ {
76
+ "file": "slice3.png",
77
+ "keywords": ["fair", "ok", "neutral"]
78
+ },
79
+ {
80
+ "file": "slice4.png",
81
+ "keywords": ["love", "crush", "admire", "hearts"]
82
+ },
83
+ {
84
+ "file": "slice5.png",
85
+ "keywords": ["good-call", "nice-one", "agree"]
86
+ },
87
+ {
88
+ "file": "slice6.png",
89
+ "keywords": ["music", "listening", "headphones", "focus"]
90
+ },
91
+ {
92
+ "file": "slice7.png",
93
+ "keywords": ["research", "investigate"]
94
+ },
95
+ {
96
+ "file": "slice8.png",
97
+ "keywords": ["error", "bug", "broken", "robot"]
98
+ },
99
+ {
100
+ "file": "slice9.png",
101
+ "keywords": ["better", "improved"]
102
+ }
103
+ ]
104
+ }
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "Life Style Stickers",
3
+ "author": "Pelin ŞENOĞLU",
4
+ "attributionUrl": "https://www.figma.com/community/file/1228731654126072640",
5
+ "license": "Figma Community (see attributionUrl for terms)",
6
+ "stickers": [
7
+ {
8
+ "file": "best.png",
9
+ "keywords": ["best"]
10
+ },
11
+ {
12
+ "file": "come-on.png",
13
+ "keywords": ["come-on", "come", "on"]
14
+ },
15
+ {
16
+ "file": "cut.png",
17
+ "keywords": ["cut"]
18
+ },
19
+ {
20
+ "file": "detox.png",
21
+ "keywords": ["detox"]
22
+ },
23
+ {
24
+ "file": "just.png",
25
+ "keywords": ["just"]
26
+ },
27
+ {
28
+ "file": "mirror.png",
29
+ "keywords": ["mirror"]
30
+ },
31
+ {
32
+ "file": "nice.png",
33
+ "keywords": ["nice"]
34
+ },
35
+ {
36
+ "file": "objects.png",
37
+ "keywords": ["objects"]
38
+ },
39
+ {
40
+ "file": "ok.png",
41
+ "keywords": ["ok"]
42
+ },
43
+ {
44
+ "file": "queen.png",
45
+ "keywords": ["queen"]
46
+ },
47
+ {
48
+ "file": "star.png",
49
+ "keywords": ["star"]
50
+ },
51
+ {
52
+ "file": "sun.png",
53
+ "keywords": ["sun"]
54
+ },
55
+ {
56
+ "file": "water.png",
57
+ "keywords": ["water"]
58
+ },
59
+ {
60
+ "file": "yeah.png",
61
+ "keywords": ["yeah"]
62
+ },
63
+ {
64
+ "file": "you-can.png",
65
+ "keywords": ["you-can", "you", "can"]
66
+ }
67
+ ]
68
+ }
@@ -0,0 +1,88 @@
1
+ {
2
+ "name": "Opposing Thoughts Stickers",
3
+ "author": "Erik Leib",
4
+ "attributionUrl": "https://www.figma.com/community/file/1130195021486928915",
5
+ "license": "Figma Community (see attributionUrl for terms)",
6
+ "stickers": [
7
+ {
8
+ "file": "check-the-deets.png",
9
+ "keywords": ["check-the-deets", "check", "the", "deets"]
10
+ },
11
+ {
12
+ "file": "cut-it.png",
13
+ "keywords": ["cut-it", "cut", "it"]
14
+ },
15
+ {
16
+ "file": "dope.png",
17
+ "keywords": ["dope"]
18
+ },
19
+ {
20
+ "file": "fresh.png",
21
+ "keywords": ["fresh"]
22
+ },
23
+ {
24
+ "file": "hot.png",
25
+ "keywords": ["hot"]
26
+ },
27
+ {
28
+ "file": "idea.png",
29
+ "keywords": ["idea"]
30
+ },
31
+ {
32
+ "file": "keep-exploring.png",
33
+ "keywords": ["keep-exploring", "keep", "exploring"]
34
+ },
35
+ {
36
+ "file": "killed-it.png",
37
+ "keywords": ["killed-it", "killed", "it"]
38
+ },
39
+ {
40
+ "file": "love-it.png",
41
+ "keywords": ["love-it", "love", "it"]
42
+ },
43
+ {
44
+ "file": "not-sure.png",
45
+ "keywords": ["not-sure", "not", "sure"]
46
+ },
47
+ {
48
+ "file": "ok.png",
49
+ "keywords": ["ok"]
50
+ },
51
+ {
52
+ "file": "pure-gold.png",
53
+ "keywords": ["pure-gold", "pure", "gold"]
54
+ },
55
+ {
56
+ "file": "save-for-later.png",
57
+ "keywords": ["save-for-later", "save", "for", "later"]
58
+ },
59
+ {
60
+ "file": "steal-this.png",
61
+ "keywords": ["steal-this", "steal", "this"]
62
+ },
63
+ {
64
+ "file": "take-a-peek.png",
65
+ "keywords": ["take-a-peek", "take", "a", "peek"]
66
+ },
67
+ {
68
+ "file": "this-or-that.png",
69
+ "keywords": ["this-or-that", "this", "or", "that"]
70
+ },
71
+ {
72
+ "file": "thoughts.png",
73
+ "keywords": ["thoughts"]
74
+ },
75
+ {
76
+ "file": "vibes.png",
77
+ "keywords": ["vibes"]
78
+ },
79
+ {
80
+ "file": "winner.png",
81
+ "keywords": ["winner"]
82
+ },
83
+ {
84
+ "file": "wip.png",
85
+ "keywords": ["wip"]
86
+ }
87
+ ]
88
+ }