freecodego 0.1.7-alpha.2.2 → 0.1.7-rc.2.2

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 (593) hide show
  1. package/README.i18n.yaml +45 -5
  2. package/README.md +4 -4
  3. package/README.zh.md +4 -4
  4. package/cordis.patch.yml +230 -126
  5. package/dist/assets/design/craft/FUTURE_SECTIONS.md +9 -0
  6. package/dist/assets/design/craft/LICENSE +201 -0
  7. package/dist/assets/design/craft/PROVENANCE.md +77 -0
  8. package/dist/assets/design/craft/README.md +106 -0
  9. package/dist/assets/design/craft/accessibility-baseline.md +201 -0
  10. package/dist/assets/design/craft/animation-discipline.md +154 -0
  11. package/dist/assets/design/craft/anti-ai-slop.md +84 -0
  12. package/dist/assets/design/craft/color.md +88 -0
  13. package/dist/assets/design/craft/form-validation.md +221 -0
  14. package/dist/assets/design/craft/laws-of-ux.md +296 -0
  15. package/dist/assets/design/craft/rtl-and-bidi.md +186 -0
  16. package/dist/assets/design/craft/state-coverage.md +134 -0
  17. package/dist/assets/design/craft/typography-hierarchy-editorial.md +182 -0
  18. package/dist/assets/design/craft/typography-hierarchy.md +165 -0
  19. package/dist/assets/design/craft/typography.md +122 -0
  20. package/dist/assets/design/react-bits/SKILL.md +130 -0
  21. package/dist/assets/design/skills/embedded-captions/CATALOG.md +91 -0
  22. package/dist/assets/design/skills/embedded-captions/SKILL.md +260 -0
  23. package/dist/assets/design/skills/embedded-captions/assets/fonts/char-widths.json +2211 -0
  24. package/dist/assets/design/skills/embedded-captions/assets/strokefonts/HersheyScript1.svg +242 -0
  25. package/dist/assets/design/skills/embedded-captions/assets/strokefonts/HersheyScriptMed.svg +242 -0
  26. package/dist/assets/design/skills/embedded-captions/dna/README.md +148 -0
  27. package/dist/assets/design/skills/embedded-captions/dna/chrome.json +68 -0
  28. package/dist/assets/design/skills/embedded-captions/dna/cream.json +69 -0
  29. package/dist/assets/design/skills/embedded-captions/dna/documentary.json +62 -0
  30. package/dist/assets/design/skills/embedded-captions/dna/editorial.json +70 -0
  31. package/dist/assets/design/skills/embedded-captions/dna/glitch.json +82 -0
  32. package/dist/assets/design/skills/embedded-captions/dna/ink.json +65 -0
  33. package/dist/assets/design/skills/embedded-captions/dna/keynote.json +62 -0
  34. package/dist/assets/design/skills/embedded-captions/dna/loud.json +75 -0
  35. package/dist/assets/design/skills/embedded-captions/dna/neon.json +58 -0
  36. package/dist/assets/design/skills/embedded-captions/dna/velocity.json +89 -0
  37. package/dist/assets/design/skills/embedded-captions/modes/cinematic/README.md +48 -0
  38. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/champion/spec.md +98 -0
  39. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/champion/template.html +188 -0
  40. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/memory-wall/spec.md +134 -0
  41. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/memory-wall/template.html +179 -0
  42. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/portrait-header/spec.md +81 -0
  43. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/portrait-header/template.html +170 -0
  44. package/dist/assets/design/skills/embedded-captions/modes/cinematic/cinematic-cream/spec.md +16 -0
  45. package/dist/assets/design/skills/embedded-captions/modes/cinematic/cinematic-cream/template.html +226 -0
  46. package/dist/assets/design/skills/embedded-captions/modes/cinematic/engine.html +355 -0
  47. package/dist/assets/design/skills/embedded-captions/modes/standard/_anatomy.md +232 -0
  48. package/dist/assets/design/skills/embedded-captions/modes/standard/_motion.md +192 -0
  49. package/dist/assets/design/skills/embedded-captions/references/aesthetic-principles.md +167 -0
  50. package/dist/assets/design/skills/embedded-captions/references/anti-patterns.md +188 -0
  51. package/dist/assets/design/skills/embedded-captions/references/bespoke-vs-presets.md +178 -0
  52. package/dist/assets/design/skills/embedded-captions/references/caption-grouping.md +130 -0
  53. package/dist/assets/design/skills/embedded-captions/references/composition-craft.md +522 -0
  54. package/dist/assets/design/skills/embedded-captions/references/direction-catalog.md +138 -0
  55. package/dist/assets/design/skills/embedded-captions/references/example-renders/champion.html +371 -0
  56. package/dist/assets/design/skills/embedded-captions/references/example-renders/memory-wall.html +334 -0
  57. package/dist/assets/design/skills/embedded-captions/references/failure-modes.md +145 -0
  58. package/dist/assets/design/skills/embedded-captions/references/layout-heuristics.md +238 -0
  59. package/dist/assets/design/skills/embedded-captions/references/motion-vocabulary.md +148 -0
  60. package/dist/assets/design/skills/embedded-captions/references/rail.md +68 -0
  61. package/dist/assets/design/skills/embedded-captions/references/reference-bar.md +47 -0
  62. package/dist/assets/design/skills/embedded-captions/references/scene-types.md +94 -0
  63. package/dist/assets/design/skills/embedded-captions/references/typographic-moves.md +266 -0
  64. package/dist/assets/design/skills/embedded-captions/references/typography-presets.md +63 -0
  65. package/dist/assets/design/skills/embedded-captions/scripts/fixtures/heroless/theme.json +11 -0
  66. package/dist/assets/design/skills/embedded-captions/scripts/fixtures/heroless/transcript.json +10 -0
  67. package/dist/assets/design/skills/embedded-captions/themes/README.md +243 -0
  68. package/dist/assets/design/skills/embedded-captions/themes/anchor.json +27 -0
  69. package/dist/assets/design/skills/embedded-captions/themes/arcade.json +51 -0
  70. package/dist/assets/design/skills/embedded-captions/themes/aurora.json +41 -0
  71. package/dist/assets/design/skills/embedded-captions/themes/biolume.json +35 -0
  72. package/dist/assets/design/skills/embedded-captions/themes/brush.json +74 -0
  73. package/dist/assets/design/skills/embedded-captions/themes/chalkboard.json +52 -0
  74. package/dist/assets/design/skills/embedded-captions/themes/dossier.json +56 -0
  75. package/dist/assets/design/skills/embedded-captions/themes/graffiti.json +62 -0
  76. package/dist/assets/design/skills/embedded-captions/themes/hologram.json +41 -0
  77. package/dist/assets/design/skills/embedded-captions/themes/inkwater.json +43 -0
  78. package/dist/assets/design/skills/embedded-captions/themes/laser.json +46 -0
  79. package/dist/assets/design/skills/embedded-captions/themes/lastpage.json +33 -0
  80. package/dist/assets/design/skills/embedded-captions/themes/neonsign.json +53 -0
  81. package/dist/assets/design/skills/embedded-captions/themes/ordnance.json +54 -0
  82. package/dist/assets/design/skills/embedded-captions/themes/papercut.json +37 -0
  83. package/dist/assets/design/skills/embedded-captions/themes/popup.json +46 -0
  84. package/dist/assets/design/skills/embedded-captions/themes/ransom.json +62 -0
  85. package/dist/assets/design/skills/embedded-captions/themes/scoreboard.json +54 -0
  86. package/dist/assets/design/skills/embedded-captions/themes/spectrum.json +46 -0
  87. package/dist/assets/design/skills/embedded-captions/themes/stardust.json +29 -0
  88. package/dist/assets/design/skills/embedded-captions/themes/stomp.json +43 -0
  89. package/dist/assets/design/skills/embedded-captions/themes/terminal.json +49 -0
  90. package/dist/assets/design/skills/embedded-captions/themes/thunder.json +44 -0
  91. package/dist/assets/design/skills/embedded-captions/themes/transit.json +44 -0
  92. package/dist/assets/design/skills/embedded-captions/themes/vhs.json +47 -0
  93. package/dist/assets/design/skills/faceless-explainer/SKILL.md +235 -0
  94. package/dist/assets/design/skills/faceless-explainer/references/cut-catalog.md +215 -0
  95. package/dist/assets/design/skills/faceless-explainer/references/motion-language.md +156 -0
  96. package/dist/assets/design/skills/faceless-explainer/references/story-design.md +255 -0
  97. package/dist/assets/design/skills/faceless-explainer/references/visual-design.md +146 -0
  98. package/dist/assets/design/skills/faceless-explainer/sub-agents/frame-worker.md +12 -0
  99. package/dist/assets/design/skills/general-video/SKILL.md +164 -0
  100. package/dist/assets/design/skills/general-video/sub-agents/frame-worker.md +34 -0
  101. package/dist/assets/design/skills/hyperframes/SKILL.md +134 -0
  102. package/dist/assets/design/skills/hyperframes/references/brief-contract.md +108 -0
  103. package/dist/assets/design/skills/hyperframes/references/brief-format.md +72 -0
  104. package/dist/assets/design/skills/hyperframes/references/capability-menu.md +47 -0
  105. package/dist/assets/design/skills/hyperframes/references/frame-worker-core.md +80 -0
  106. package/dist/assets/design/skills/hyperframes/references/intent-interview.md +71 -0
  107. package/dist/assets/design/skills/hyperframes/references/pitch-round.md +40 -0
  108. package/dist/assets/design/skills/hyperframes/references/production-loop.md +26 -0
  109. package/dist/assets/design/skills/hyperframes/references/review-loop.md +37 -0
  110. package/dist/assets/design/skills/hyperframes/references/route-briefs.md +11 -0
  111. package/dist/assets/design/skills/hyperframes/references/routes/embedded-captions.md +11 -0
  112. package/dist/assets/design/skills/hyperframes/references/routes/faceless-explainer.md +12 -0
  113. package/dist/assets/design/skills/hyperframes/references/routes/general-video.md +12 -0
  114. package/dist/assets/design/skills/hyperframes/references/routes/motion-graphics.md +11 -0
  115. package/dist/assets/design/skills/hyperframes/references/routes/music-to-video.md +12 -0
  116. package/dist/assets/design/skills/hyperframes/references/routes/pr-to-video.md +28 -0
  117. package/dist/assets/design/skills/hyperframes/references/routes/product-launch-video.md +13 -0
  118. package/dist/assets/design/skills/hyperframes/references/routes/remotion-to-hyperframes.md +9 -0
  119. package/dist/assets/design/skills/hyperframes/references/routes/slideshow.md +11 -0
  120. package/dist/assets/design/skills/hyperframes/references/routes/talking-head-recut.md +11 -0
  121. package/dist/assets/design/skills/hyperframes/references/script-format.md +52 -0
  122. package/dist/assets/design/skills/hyperframes/references/skill-lifecycle.md +30 -0
  123. package/dist/assets/design/skills/hyperframes/references/storyboard-format.md +99 -0
  124. package/dist/assets/design/skills/hyperframes/references/subagent-dispatch.md +35 -0
  125. package/dist/assets/design/skills/hyperframes/references/workflow-catalog.md +10 -0
  126. package/dist/assets/design/skills/hyperframes-animation/SKILL.md +86 -0
  127. package/dist/assets/design/skills/hyperframes-animation/adapters/animate-text.md +64 -0
  128. package/dist/assets/design/skills/hyperframes-animation/adapters/animejs.md +130 -0
  129. package/dist/assets/design/skills/hyperframes-animation/adapters/css-animations.md +143 -0
  130. package/dist/assets/design/skills/hyperframes-animation/adapters/gsap-easing-and-stagger.md +199 -0
  131. package/dist/assets/design/skills/hyperframes-animation/adapters/gsap-timeline-and-labels.md +96 -0
  132. package/dist/assets/design/skills/hyperframes-animation/adapters/gsap-transforms-and-perf.md +129 -0
  133. package/dist/assets/design/skills/hyperframes-animation/adapters/gsap.md +105 -0
  134. package/dist/assets/design/skills/hyperframes-animation/adapters/html-in-canvas-patterns.md +507 -0
  135. package/dist/assets/design/skills/hyperframes-animation/adapters/lottie.md +130 -0
  136. package/dist/assets/design/skills/hyperframes-animation/adapters/three.md +145 -0
  137. package/dist/assets/design/skills/hyperframes-animation/adapters/typegpu.md +182 -0
  138. package/dist/assets/design/skills/hyperframes-animation/adapters/waapi.md +101 -0
  139. package/dist/assets/design/skills/hyperframes-animation/blueprints/agent-progress-theater.md +76 -0
  140. package/dist/assets/design/skills/hyperframes-animation/blueprints/camera-journey.md +61 -0
  141. package/dist/assets/design/skills/hyperframes-animation/blueprints/comparison-split.md +27 -0
  142. package/dist/assets/design/skills/hyperframes-animation/blueprints/constellation-hub.md +63 -0
  143. package/dist/assets/design/skills/hyperframes-animation/blueprints/cta-morph-press.md +63 -0
  144. package/dist/assets/design/skills/hyperframes-animation/blueprints/cursor-ui-demo.md +89 -0
  145. package/dist/assets/design/skills/hyperframes-animation/blueprints/dataviz-countup.md +59 -0
  146. package/dist/assets/design/skills/hyperframes-animation/blueprints/device-surface-showcase.md +68 -0
  147. package/dist/assets/design/skills/hyperframes-animation/blueprints/fixed-anchor-cycle.md +46 -0
  148. package/dist/assets/design/skills/hyperframes-animation/blueprints/grid-card-assemble.md +81 -0
  149. package/dist/assets/design/skills/hyperframes-animation/blueprints/kinetic-type-beats.md +133 -0
  150. package/dist/assets/design/skills/hyperframes-animation/blueprints/logo-assemble-lockup.md +121 -0
  151. package/dist/assets/design/skills/hyperframes-animation/blueprints/overwhelm-surround.md +58 -0
  152. package/dist/assets/design/skills/hyperframes-animation/blueprints/panel-edit-live-sync.md +73 -0
  153. package/dist/assets/design/skills/hyperframes-animation/blueprints/prompt-type-submit-generate.md +85 -0
  154. package/dist/assets/design/skills/hyperframes-animation/blueprints/spatial-pan-stations.md +37 -0
  155. package/dist/assets/design/skills/hyperframes-animation/blueprints/ticker-takeover.md +29 -0
  156. package/dist/assets/design/skills/hyperframes-animation/blueprints/titlecard-reveal.md +80 -0
  157. package/dist/assets/design/skills/hyperframes-animation/blueprints/transcript-scroll-artifact-reveal.md +45 -0
  158. package/dist/assets/design/skills/hyperframes-animation/blueprints/typewriter-reveal.md +51 -0
  159. package/dist/assets/design/skills/hyperframes-animation/blueprints/video-text-pivot.md +30 -0
  160. package/dist/assets/design/skills/hyperframes-animation/blueprints/zoom-out-workspace-reveal.md +68 -0
  161. package/dist/assets/design/skills/hyperframes-animation/blueprints-index.md +202 -0
  162. package/dist/assets/design/skills/hyperframes-animation/examples/brand-reveal-assemble-zoom.html +382 -0
  163. package/dist/assets/design/skills/hyperframes-animation/examples/comparison-split-cards.html +649 -0
  164. package/dist/assets/design/skills/hyperframes-animation/examples/concept-demo-decode-pan.html +520 -0
  165. package/dist/assets/design/skills/hyperframes-animation/examples/cta-morph-press.html +468 -0
  166. package/dist/assets/design/skills/hyperframes-animation/examples/cta-orbit-collapse.html +1298 -0
  167. package/dist/assets/design/skills/hyperframes-animation/examples/demo-page-scroll-spotlight.html +759 -0
  168. package/dist/assets/design/skills/hyperframes-animation/examples/hook-counter-burst.html +729 -0
  169. package/dist/assets/design/skills/hyperframes-animation/examples/messaging-multi-phrase.html +352 -0
  170. package/dist/assets/design/skills/hyperframes-animation/examples/metric-video-text-pivot.html +779 -0
  171. package/dist/assets/design/skills/hyperframes-animation/examples/problem-mockup-overwhelm.html +1374 -0
  172. package/dist/assets/design/skills/hyperframes-animation/examples/proof-logo-chain.html +861 -0
  173. package/dist/assets/design/skills/hyperframes-animation/examples/takeover-ticker-displace.html +347 -0
  174. package/dist/assets/design/skills/hyperframes-animation/examples/workflow-approve-press.html +606 -0
  175. package/dist/assets/design/skills/hyperframes-animation/references/motion-blur.md +133 -0
  176. package/dist/assets/design/skills/hyperframes-animation/rules/3d-camera-flight.md +180 -0
  177. package/dist/assets/design/skills/hyperframes-animation/rules/3d-page-scroll.md +135 -0
  178. package/dist/assets/design/skills/hyperframes-animation/rules/3d-text-depth-layers.md +128 -0
  179. package/dist/assets/design/skills/hyperframes-animation/rules/ai-tracking-box.md +139 -0
  180. package/dist/assets/design/skills/hyperframes-animation/rules/ambient-glow-bloom.md +133 -0
  181. package/dist/assets/design/skills/hyperframes-animation/rules/anchored-layout-expand.md +148 -0
  182. package/dist/assets/design/skills/hyperframes-animation/rules/asr-keyword-glow.md +128 -0
  183. package/dist/assets/design/skills/hyperframes-animation/rules/avatar-cloud-network.md +145 -0
  184. package/dist/assets/design/skills/hyperframes-animation/rules/camera-cursor-tracking.md +133 -0
  185. package/dist/assets/design/skills/hyperframes-animation/rules/card-morph-anchor.md +134 -0
  186. package/dist/assets/design/skills/hyperframes-animation/rules/center-outward-expansion.md +88 -0
  187. package/dist/assets/design/skills/hyperframes-animation/rules/chart-scrub-readout.md +151 -0
  188. package/dist/assets/design/skills/hyperframes-animation/rules/chromatic-glitch.md +150 -0
  189. package/dist/assets/design/skills/hyperframes-animation/rules/context-sensitive-cursor.md +140 -0
  190. package/dist/assets/design/skills/hyperframes-animation/rules/control-target-sync.md +131 -0
  191. package/dist/assets/design/skills/hyperframes-animation/rules/coordinate-target-zoom.md +138 -0
  192. package/dist/assets/design/skills/hyperframes-animation/rules/counting-dynamic-scale.md +115 -0
  193. package/dist/assets/design/skills/hyperframes-animation/rules/css-marker-patterns.md +208 -0
  194. package/dist/assets/design/skills/hyperframes-animation/rules/cursor-click-ripple.md +104 -0
  195. package/dist/assets/design/skills/hyperframes-animation/rules/cursor-drag.md +141 -0
  196. package/dist/assets/design/skills/hyperframes-animation/rules/depth-of-field-blur.md +112 -0
  197. package/dist/assets/design/skills/hyperframes-animation/rules/depth-scatter-assemble.md +139 -0
  198. package/dist/assets/design/skills/hyperframes-animation/rules/discrete-text-sequence.md +146 -0
  199. package/dist/assets/design/skills/hyperframes-animation/rules/dynamic-content-sequencing.md +149 -0
  200. package/dist/assets/design/skills/hyperframes-animation/rules/gradient-text-sweep.md +136 -0
  201. package/dist/assets/design/skills/hyperframes-animation/rules/gsap-effects.md +196 -0
  202. package/dist/assets/design/skills/hyperframes-animation/rules/hacker-flip-3d.md +123 -0
  203. package/dist/assets/design/skills/hyperframes-animation/rules/kinetic-beat-slam.md +137 -0
  204. package/dist/assets/design/skills/hyperframes-animation/rules/motion-blur-streak.md +130 -0
  205. package/dist/assets/design/skills/hyperframes-animation/rules/multi-cursor-choreography.md +133 -0
  206. package/dist/assets/design/skills/hyperframes-animation/rules/multi-phase-camera.md +129 -0
  207. package/dist/assets/design/skills/hyperframes-animation/rules/nudge-curve.md +47 -0
  208. package/dist/assets/design/skills/hyperframes-animation/rules/orbit-3d-entry.md +148 -0
  209. package/dist/assets/design/skills/hyperframes-animation/rules/particle-burst.md +149 -0
  210. package/dist/assets/design/skills/hyperframes-animation/rules/physics-press-reaction.md +101 -0
  211. package/dist/assets/design/skills/hyperframes-animation/rules/press-release-spring.md +108 -0
  212. package/dist/assets/design/skills/hyperframes-animation/rules/reactive-displacement.md +92 -0
  213. package/dist/assets/design/skills/hyperframes-animation/rules/scale-swap-transition.md +88 -0
  214. package/dist/assets/design/skills/hyperframes-animation/rules/sine-wave-loop.md +85 -0
  215. package/dist/assets/design/skills/hyperframes-animation/rules/split-tilt-cards.md +123 -0
  216. package/dist/assets/design/skills/hyperframes-animation/rules/spring-pop-entrance.md +107 -0
  217. package/dist/assets/design/skills/hyperframes-animation/rules/stat-bars-and-fills.md +145 -0
  218. package/dist/assets/design/skills/hyperframes-animation/rules/svg-icon-enrichment.md +141 -0
  219. package/dist/assets/design/skills/hyperframes-animation/rules/svg-path-draw.md +122 -0
  220. package/dist/assets/design/skills/hyperframes-animation/rules/theme-crossfade-morph.md +126 -0
  221. package/dist/assets/design/skills/hyperframes-animation/rules/vertical-spring-ticker.md +104 -0
  222. package/dist/assets/design/skills/hyperframes-animation/rules/viewport-change.md +148 -0
  223. package/dist/assets/design/skills/hyperframes-animation/rules/waterfall-entry.md +81 -0
  224. package/dist/assets/design/skills/hyperframes-animation/rules-index.md +113 -0
  225. package/dist/assets/design/skills/hyperframes-animation/techniques.md +507 -0
  226. package/dist/assets/design/skills/hyperframes-animation/transitions/TRANSITION-REGISTRY.md +168 -0
  227. package/dist/assets/design/skills/hyperframes-animation/transitions/catalog.md +127 -0
  228. package/dist/assets/design/skills/hyperframes-animation/transitions/css-3d.md +12 -0
  229. package/dist/assets/design/skills/hyperframes-animation/transitions/css-blur.md +51 -0
  230. package/dist/assets/design/skills/hyperframes-animation/transitions/css-cover.md +43 -0
  231. package/dist/assets/design/skills/hyperframes-animation/transitions/css-destruction.md +95 -0
  232. package/dist/assets/design/skills/hyperframes-animation/transitions/css-dissolve.md +66 -0
  233. package/dist/assets/design/skills/hyperframes-animation/transitions/css-distortion.md +45 -0
  234. package/dist/assets/design/skills/hyperframes-animation/transitions/css-grid.md +10 -0
  235. package/dist/assets/design/skills/hyperframes-animation/transitions/css-light.md +49 -0
  236. package/dist/assets/design/skills/hyperframes-animation/transitions/css-mechanical.md +30 -0
  237. package/dist/assets/design/skills/hyperframes-animation/transitions/css-other.md +25 -0
  238. package/dist/assets/design/skills/hyperframes-animation/transitions/css-push.md +41 -0
  239. package/dist/assets/design/skills/hyperframes-animation/transitions/css-radial.md +37 -0
  240. package/dist/assets/design/skills/hyperframes-animation/transitions/css-scale.md +24 -0
  241. package/dist/assets/design/skills/hyperframes-animation/transitions/overview.md +153 -0
  242. package/dist/assets/design/skills/hyperframes-audio/SKILL.md +476 -0
  243. package/dist/assets/design/skills/hyperframes-audio/references/attributes.md +138 -0
  244. package/dist/assets/design/skills/hyperframes-audio/references/diagnosis.md +274 -0
  245. package/dist/assets/design/skills/hyperframes-audio/references/fx-registry.md +84 -0
  246. package/dist/assets/design/skills/hyperframes-audio/references/presets.md +216 -0
  247. package/dist/assets/design/skills/hyperframes-core/SKILL.md +97 -0
  248. package/dist/assets/design/skills/hyperframes-core/references/composition-patterns.md +224 -0
  249. package/dist/assets/design/skills/hyperframes-core/references/creator-editing-recipes.md +491 -0
  250. package/dist/assets/design/skills/hyperframes-core/references/data-attributes.md +78 -0
  251. package/dist/assets/design/skills/hyperframes-core/references/determinism-rules.md +53 -0
  252. package/dist/assets/design/skills/hyperframes-core/references/full-screen-motion.md +67 -0
  253. package/dist/assets/design/skills/hyperframes-core/references/minimal-composition.md +69 -0
  254. package/dist/assets/design/skills/hyperframes-core/references/sub-compositions.md +176 -0
  255. package/dist/assets/design/skills/hyperframes-core/references/tailwind.md +104 -0
  256. package/dist/assets/design/skills/hyperframes-core/references/tracks-and-clips.md +87 -0
  257. package/dist/assets/design/skills/hyperframes-core/references/variables-and-media.md +107 -0
  258. package/dist/assets/design/skills/hyperframes-creative/SKILL.md +71 -0
  259. package/dist/assets/design/skills/hyperframes-creative/frame-presets/biennale-yellow/FRAME.md +289 -0
  260. package/dist/assets/design/skills/hyperframes-creative/frame-presets/biennale-yellow/caption-skin.html +221 -0
  261. package/dist/assets/design/skills/hyperframes-creative/frame-presets/biennale-yellow/frame-showcase.html +1214 -0
  262. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blockframe/FRAME.md +275 -0
  263. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blockframe/caption-skin.html +224 -0
  264. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blockframe/frame-showcase.html +1347 -0
  265. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blue-professional/FRAME.md +307 -0
  266. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blue-professional/caption-skin.html +223 -0
  267. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blue-professional/frame-showcase.html +1372 -0
  268. package/dist/assets/design/skills/hyperframes-creative/frame-presets/bold-poster/FRAME.md +275 -0
  269. package/dist/assets/design/skills/hyperframes-creative/frame-presets/bold-poster/caption-skin.html +230 -0
  270. package/dist/assets/design/skills/hyperframes-creative/frame-presets/bold-poster/frame-showcase.html +1140 -0
  271. package/dist/assets/design/skills/hyperframes-creative/frame-presets/broadside/FRAME.md +284 -0
  272. package/dist/assets/design/skills/hyperframes-creative/frame-presets/broadside/caption-skin.html +225 -0
  273. package/dist/assets/design/skills/hyperframes-creative/frame-presets/broadside/frame-showcase.html +1166 -0
  274. package/dist/assets/design/skills/hyperframes-creative/frame-presets/capsule/FRAME.md +284 -0
  275. package/dist/assets/design/skills/hyperframes-creative/frame-presets/capsule/caption-skin.html +224 -0
  276. package/dist/assets/design/skills/hyperframes-creative/frame-presets/capsule/frame-showcase.html +1465 -0
  277. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cartesian/FRAME.md +278 -0
  278. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cartesian/caption-skin.html +222 -0
  279. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cartesian/frame-showcase.html +1263 -0
  280. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cobalt-grid/FRAME.md +265 -0
  281. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cobalt-grid/caption-skin.html +238 -0
  282. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cobalt-grid/frame-showcase.html +1468 -0
  283. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/FRAME.md +277 -0
  284. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/caption-skin.html +224 -0
  285. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-eb-garamond.txt +93 -0
  286. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-inter.txt +93 -0
  287. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-jetbrains-mono.txt +93 -0
  288. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/frame-showcase.html +1438 -0
  289. package/dist/assets/design/skills/hyperframes-creative/frame-presets/coral/FRAME.md +314 -0
  290. package/dist/assets/design/skills/hyperframes-creative/frame-presets/coral/caption-skin.html +226 -0
  291. package/dist/assets/design/skills/hyperframes-creative/frame-presets/coral/frame-showcase.html +1268 -0
  292. package/dist/assets/design/skills/hyperframes-creative/frame-presets/creative-mode/FRAME.md +333 -0
  293. package/dist/assets/design/skills/hyperframes-creative/frame-presets/creative-mode/caption-skin.html +227 -0
  294. package/dist/assets/design/skills/hyperframes-creative/frame-presets/creative-mode/frame-showcase.html +1330 -0
  295. package/dist/assets/design/skills/hyperframes-creative/frame-presets/daisy-days/FRAME.md +274 -0
  296. package/dist/assets/design/skills/hyperframes-creative/frame-presets/daisy-days/caption-skin.html +230 -0
  297. package/dist/assets/design/skills/hyperframes-creative/frame-presets/daisy-days/frame-showcase.html +1444 -0
  298. package/dist/assets/design/skills/hyperframes-creative/frame-presets/editorial-forest/FRAME.md +265 -0
  299. package/dist/assets/design/skills/hyperframes-creative/frame-presets/editorial-forest/caption-skin.html +223 -0
  300. package/dist/assets/design/skills/hyperframes-creative/frame-presets/editorial-forest/frame-showcase.html +1273 -0
  301. package/dist/assets/design/skills/hyperframes-creative/palettes/bold-energetic.md +14 -0
  302. package/dist/assets/design/skills/hyperframes-creative/palettes/clean-corporate.md +14 -0
  303. package/dist/assets/design/skills/hyperframes-creative/palettes/dark-premium.md +14 -0
  304. package/dist/assets/design/skills/hyperframes-creative/palettes/jewel-rich.md +14 -0
  305. package/dist/assets/design/skills/hyperframes-creative/palettes/monochrome.md +14 -0
  306. package/dist/assets/design/skills/hyperframes-creative/palettes/nature-earth.md +14 -0
  307. package/dist/assets/design/skills/hyperframes-creative/palettes/neon-electric.md +14 -0
  308. package/dist/assets/design/skills/hyperframes-creative/palettes/pastel-soft.md +14 -0
  309. package/dist/assets/design/skills/hyperframes-creative/palettes/warm-editorial.md +14 -0
  310. package/dist/assets/design/skills/hyperframes-creative/references/audio-reactive.md +76 -0
  311. package/dist/assets/design/skills/hyperframes-creative/references/beat-direction.md +164 -0
  312. package/dist/assets/design/skills/hyperframes-creative/references/composition-patterns.md +199 -0
  313. package/dist/assets/design/skills/hyperframes-creative/references/data-in-motion.md +19 -0
  314. package/dist/assets/design/skills/hyperframes-creative/references/design-adherence.md +19 -0
  315. package/dist/assets/design/skills/hyperframes-creative/references/design-picker.md +123 -0
  316. package/dist/assets/design/skills/hyperframes-creative/references/design-spec.md +55 -0
  317. package/dist/assets/design/skills/hyperframes-creative/references/house-style.md +73 -0
  318. package/dist/assets/design/skills/hyperframes-creative/references/motion-principles.md +151 -0
  319. package/dist/assets/design/skills/hyperframes-creative/references/narration.md +92 -0
  320. package/dist/assets/design/skills/hyperframes-creative/references/prompt-expansion.md +68 -0
  321. package/dist/assets/design/skills/hyperframes-creative/references/story-spine.md +45 -0
  322. package/dist/assets/design/skills/hyperframes-creative/references/storyboard-recipe.md +57 -0
  323. package/dist/assets/design/skills/hyperframes-creative/references/typography.md +218 -0
  324. package/dist/assets/design/skills/hyperframes-creative/references/video-composition.md +63 -0
  325. package/dist/assets/design/skills/hyperframes-creative/references/visual-styles.md +457 -0
  326. package/dist/assets/design/skills/hyperframes-creative/templates/design-picker.html +1432 -0
  327. package/dist/assets/design/skills/hyperframes-keyframes/SKILL.md +262 -0
  328. package/dist/assets/design/skills/hyperframes-keyframes/agents/openai.yaml +4 -0
  329. package/dist/assets/design/skills/hyperframes-keyframes/references/keyframe-patterns.md +108 -0
  330. package/dist/assets/design/skills/hyperframes-studio/SKILL.md +75 -0
  331. package/dist/assets/design/skills/motion-graphics/SKILL.md +175 -0
  332. package/dist/assets/design/skills/motion-graphics/agents/builder.md +41 -0
  333. package/dist/assets/design/skills/motion-graphics/agents/director.md +54 -0
  334. package/dist/assets/design/skills/motion-graphics/agents/finalize.md +17 -0
  335. package/dist/assets/design/skills/motion-graphics/catalog-map.md +52 -0
  336. package/dist/assets/design/skills/motion-graphics/categories/asset-fusion/module.md +37 -0
  337. package/dist/assets/design/skills/motion-graphics/categories/charts/module.md +22 -0
  338. package/dist/assets/design/skills/motion-graphics/categories/kinetic-type/module.md +19 -0
  339. package/dist/assets/design/skills/motion-graphics/categories/logo-reveal/module.md +17 -0
  340. package/dist/assets/design/skills/motion-graphics/categories/lower-thirds/module.md +20 -0
  341. package/dist/assets/design/skills/motion-graphics/categories/maps/module.md +61 -0
  342. package/dist/assets/design/skills/motion-graphics/categories/news/module.md +56 -0
  343. package/dist/assets/design/skills/motion-graphics/categories/stat/module.md +21 -0
  344. package/dist/assets/design/skills/motion-graphics/categories/tweet/module.md +16 -0
  345. package/dist/assets/design/skills/motion-graphics/categories/webpage/module.md +30 -0
  346. package/dist/assets/design/skills/motion-graphics/grounding/PROTOCOL.md +64 -0
  347. package/dist/assets/design/skills/motion-graphics/phases/source/guide.md +21 -0
  348. package/dist/assets/design/skills/motion-graphics/references/builder-contract.md +38 -0
  349. package/dist/assets/design/skills/motion-graphics/references/motion-vocabulary.md +47 -0
  350. package/dist/assets/design/skills/motion-graphics/references/shot-plan-ir.md +54 -0
  351. package/dist/assets/design/skills/motion-graphics/samples/asset-fusion/_ref-circle-highlight.html +306 -0
  352. package/dist/assets/design/skills/music-to-video/SKILL.md +207 -0
  353. package/dist/assets/design/skills/music-to-video/references/frame-skeleton.md +100 -0
  354. package/dist/assets/design/skills/music-to-video/references/montage.md +55 -0
  355. package/dist/assets/design/skills/music-to-video/references/motion-primitive-catalog.md +75 -0
  356. package/dist/assets/design/skills/music-to-video/references/motion-primitives/3d-card-flip/index.html +53 -0
  357. package/dist/assets/design/skills/music-to-video/references/motion-primitives/3d-card-flip/scene.html +119 -0
  358. package/dist/assets/design/skills/music-to-video/references/motion-primitives/bg-flow-field/index.html +53 -0
  359. package/dist/assets/design/skills/music-to-video/references/motion-primitives/bg-flow-field/scene.html +294 -0
  360. package/dist/assets/design/skills/music-to-video/references/motion-primitives/binary-decrypt/index.html +54 -0
  361. package/dist/assets/design/skills/music-to-video/references/motion-primitives/binary-decrypt/scene.html +85 -0
  362. package/dist/assets/design/skills/music-to-video/references/motion-primitives/blur-resolve/index.html +53 -0
  363. package/dist/assets/design/skills/music-to-video/references/motion-primitives/blur-resolve/scene.html +60 -0
  364. package/dist/assets/design/skills/music-to-video/references/motion-primitives/braam-punch/index.html +53 -0
  365. package/dist/assets/design/skills/music-to-video/references/motion-primitives/braam-punch/scene.html +100 -0
  366. package/dist/assets/design/skills/music-to-video/references/motion-primitives/chromatic-split/index.html +53 -0
  367. package/dist/assets/design/skills/music-to-video/references/motion-primitives/chromatic-split/scene.html +111 -0
  368. package/dist/assets/design/skills/music-to-video/references/motion-primitives/chrome-sweep/index.html +53 -0
  369. package/dist/assets/design/skills/music-to-video/references/motion-primitives/chrome-sweep/scene.html +68 -0
  370. package/dist/assets/design/skills/music-to-video/references/motion-primitives/counting-punch/index.html +54 -0
  371. package/dist/assets/design/skills/music-to-video/references/motion-primitives/counting-punch/scene.html +119 -0
  372. package/dist/assets/design/skills/music-to-video/references/motion-primitives/crash-zoom-in/index.html +53 -0
  373. package/dist/assets/design/skills/music-to-video/references/motion-primitives/crash-zoom-in/scene.html +120 -0
  374. package/dist/assets/design/skills/music-to-video/references/motion-primitives/datamosh-smear/index.html +55 -0
  375. package/dist/assets/design/skills/music-to-video/references/motion-primitives/datamosh-smear/scene.html +131 -0
  376. package/dist/assets/design/skills/music-to-video/references/motion-primitives/directional-fill/index.html +53 -0
  377. package/dist/assets/design/skills/music-to-video/references/motion-primitives/directional-fill/scene.html +103 -0
  378. package/dist/assets/design/skills/music-to-video/references/motion-primitives/dolly-zoom/index.html +53 -0
  379. package/dist/assets/design/skills/music-to-video/references/motion-primitives/dolly-zoom/scene.html +102 -0
  380. package/dist/assets/design/skills/music-to-video/references/motion-primitives/electric-arc/index.html +54 -0
  381. package/dist/assets/design/skills/music-to-video/references/motion-primitives/electric-arc/scene.html +105 -0
  382. package/dist/assets/design/skills/music-to-video/references/motion-primitives/flash-cut/index.html +53 -0
  383. package/dist/assets/design/skills/music-to-video/references/motion-primitives/flash-cut/scene.html +97 -0
  384. package/dist/assets/design/skills/music-to-video/references/motion-primitives/gooey-metaball/index.html +54 -0
  385. package/dist/assets/design/skills/music-to-video/references/motion-primitives/gooey-metaball/scene.html +206 -0
  386. package/dist/assets/design/skills/music-to-video/references/motion-primitives/hard-cut/index.html +53 -0
  387. package/dist/assets/design/skills/music-to-video/references/motion-primitives/hard-cut/scene.html +82 -0
  388. package/dist/assets/design/skills/music-to-video/references/motion-primitives/hypercut-whip/index.html +53 -0
  389. package/dist/assets/design/skills/music-to-video/references/motion-primitives/hypercut-whip/scene.html +44 -0
  390. package/dist/assets/design/skills/music-to-video/references/motion-primitives/iris-open/index.html +53 -0
  391. package/dist/assets/design/skills/music-to-video/references/motion-primitives/iris-open/scene.html +69 -0
  392. package/dist/assets/design/skills/music-to-video/references/motion-primitives/kinetic-letter-in/index.html +53 -0
  393. package/dist/assets/design/skills/music-to-video/references/motion-primitives/kinetic-letter-in/scene.html +64 -0
  394. package/dist/assets/design/skills/music-to-video/references/motion-primitives/liquid-morph/index.html +53 -0
  395. package/dist/assets/design/skills/music-to-video/references/motion-primitives/liquid-morph/scene.html +96 -0
  396. package/dist/assets/design/skills/music-to-video/references/motion-primitives/mask-reveal/index.html +53 -0
  397. package/dist/assets/design/skills/music-to-video/references/motion-primitives/mask-reveal/scene.html +74 -0
  398. package/dist/assets/design/skills/music-to-video/references/motion-primitives/mosaic-pack/index.html +53 -0
  399. package/dist/assets/design/skills/music-to-video/references/motion-primitives/mosaic-pack/scene.html +89 -0
  400. package/dist/assets/design/skills/music-to-video/references/motion-primitives/neon-flicker/index.html +53 -0
  401. package/dist/assets/design/skills/music-to-video/references/motion-primitives/neon-flicker/scene.html +73 -0
  402. package/dist/assets/design/skills/music-to-video/references/motion-primitives/outline-to-fill/index.html +53 -0
  403. package/dist/assets/design/skills/music-to-video/references/motion-primitives/outline-to-fill/scene.html +82 -0
  404. package/dist/assets/design/skills/music-to-video/references/motion-primitives/palette-flip/index.html +53 -0
  405. package/dist/assets/design/skills/music-to-video/references/motion-primitives/palette-flip/scene.html +97 -0
  406. package/dist/assets/design/skills/music-to-video/references/motion-primitives/particle-burst/index.html +53 -0
  407. package/dist/assets/design/skills/music-to-video/references/motion-primitives/particle-burst/scene.html +106 -0
  408. package/dist/assets/design/skills/music-to-video/references/motion-primitives/pixel-dissolve/index.html +53 -0
  409. package/dist/assets/design/skills/music-to-video/references/motion-primitives/pixel-dissolve/scene.html +86 -0
  410. package/dist/assets/design/skills/music-to-video/references/motion-primitives/radial-burst-lines/index.html +53 -0
  411. package/dist/assets/design/skills/music-to-video/references/motion-primitives/radial-burst-lines/scene.html +130 -0
  412. package/dist/assets/design/skills/music-to-video/references/motion-primitives/screen-shake/index.html +53 -0
  413. package/dist/assets/design/skills/music-to-video/references/motion-primitives/screen-shake/scene.html +78 -0
  414. package/dist/assets/design/skills/music-to-video/references/motion-primitives/slot-machine-reveal/index.html +53 -0
  415. package/dist/assets/design/skills/music-to-video/references/motion-primitives/slot-machine-reveal/scene.html +100 -0
  416. package/dist/assets/design/skills/music-to-video/references/motion-primitives/spotlight-sweep/index.html +53 -0
  417. package/dist/assets/design/skills/music-to-video/references/motion-primitives/spotlight-sweep/scene.html +102 -0
  418. package/dist/assets/design/skills/music-to-video/references/motion-primitives/staggered-exit/index.html +53 -0
  419. package/dist/assets/design/skills/music-to-video/references/motion-primitives/staggered-exit/scene.html +82 -0
  420. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-spectral-rays/USAGE.md +42 -0
  421. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-spectral-rays/index.html +53 -0
  422. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-spectral-rays/scene.html +280 -0
  423. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-wave-distort/index.html +54 -0
  424. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-wave-distort/scene.html +106 -0
  425. package/dist/assets/design/skills/music-to-video/references/motion-primitives/tile-mosaic/index.html +53 -0
  426. package/dist/assets/design/skills/music-to-video/references/motion-primitives/tile-mosaic/scene.html +109 -0
  427. package/dist/assets/design/skills/music-to-video/references/motion-primitives/typewriter-reveal/index.html +53 -0
  428. package/dist/assets/design/skills/music-to-video/references/motion-primitives/typewriter-reveal/scene.html +91 -0
  429. package/dist/assets/design/skills/music-to-video/references/motion-primitives/word-grid-burst/index.html +53 -0
  430. package/dist/assets/design/skills/music-to-video/references/motion-primitives/word-grid-burst/scene.html +96 -0
  431. package/dist/assets/design/skills/music-to-video/references/planning.md +104 -0
  432. package/dist/assets/design/skills/music-to-video/references/storyboard-format.md +94 -0
  433. package/dist/assets/design/skills/music-to-video/references/template-catalog.md +106 -0
  434. package/dist/assets/design/skills/music-to-video/references/templates/card-flyby/index.html +527 -0
  435. package/dist/assets/design/skills/music-to-video/references/templates/card-flyby/program.json +13 -0
  436. package/dist/assets/design/skills/music-to-video/references/templates/held-message-living-field/index.html +485 -0
  437. package/dist/assets/design/skills/music-to-video/references/templates/held-text-strobe-burst/index.html +302 -0
  438. package/dist/assets/design/skills/music-to-video/references/templates/intro-kinetic-cascade/index.html +610 -0
  439. package/dist/assets/design/skills/music-to-video/references/templates/intro-kinetic-cascade/program.json +41 -0
  440. package/dist/assets/design/skills/music-to-video/references/templates/logo-split-lockup-pulse/index.html +596 -0
  441. package/dist/assets/design/skills/music-to-video/references/templates/poster-tile-mosaic/index.html +589 -0
  442. package/dist/assets/design/skills/music-to-video/references/templates/poster-tile-mosaic/program.json +25 -0
  443. package/dist/assets/design/skills/music-to-video/references/templates/roll-flipbook-word-cycle/index.html +267 -0
  444. package/dist/assets/design/skills/music-to-video/references/templates/split-anchor-word-slot/index.html +594 -0
  445. package/dist/assets/design/skills/music-to-video/references/templates/split-anchor-word-slot/program.json +39 -0
  446. package/dist/assets/design/skills/music-to-video/references/templates/typewriter-phrase-keyword-shuffle/index.html +238 -0
  447. package/dist/assets/design/skills/music-to-video/sub-agents/frame-worker.md +49 -0
  448. package/dist/assets/design/skills/pr-to-video/SKILL.md +271 -0
  449. package/dist/assets/design/skills/pr-to-video/references/code-vocabulary.md +112 -0
  450. package/dist/assets/design/skills/pr-to-video/references/cut-catalog.md +215 -0
  451. package/dist/assets/design/skills/pr-to-video/references/motion-language.md +156 -0
  452. package/dist/assets/design/skills/pr-to-video/references/story-design.md +230 -0
  453. package/dist/assets/design/skills/pr-to-video/references/visual-design.md +164 -0
  454. package/dist/assets/design/skills/pr-to-video/sub-agents/frame-worker.md +38 -0
  455. package/dist/assets/design/skills/product-launch-video/SKILL.md +262 -0
  456. package/dist/assets/design/skills/product-launch-video/references/cut-catalog.md +220 -0
  457. package/dist/assets/design/skills/product-launch-video/references/motion-language.md +156 -0
  458. package/dist/assets/design/skills/product-launch-video/references/story-design.md +508 -0
  459. package/dist/assets/design/skills/product-launch-video/references/visual-design.md +126 -0
  460. package/dist/assets/design/skills/product-launch-video/sub-agents/frame-worker.md +21 -0
  461. package/dist/assets/design/skills/remotion-to-hyperframes/SKILL.md +130 -0
  462. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/README.md +41 -0
  463. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/expected.json +26 -0
  464. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/hf-src/compositions/title.html +31 -0
  465. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/hf-src/index.html +46 -0
  466. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/package.json +14 -0
  467. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/tsconfig.json +15 -0
  468. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/README.md +54 -0
  469. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/expected.json +29 -0
  470. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/compositions/scene-1.html +35 -0
  471. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/compositions/scene-2.html +35 -0
  472. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/compositions/scene-3.html +36 -0
  473. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/index.html +75 -0
  474. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/package.json +14 -0
  475. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/tsconfig.json +15 -0
  476. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/README.md +85 -0
  477. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/expected.json +41 -0
  478. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-1.html +52 -0
  479. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-2.html +99 -0
  480. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-3.html +55 -0
  481. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/index.html +70 -0
  482. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/package.json +15 -0
  483. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/tsconfig.json +15 -0
  484. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/README.md +51 -0
  485. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/expected.json +85 -0
  486. package/dist/assets/design/skills/remotion-to-hyperframes/references/api-map.md +142 -0
  487. package/dist/assets/design/skills/remotion-to-hyperframes/references/escape-hatch.md +115 -0
  488. package/dist/assets/design/skills/remotion-to-hyperframes/references/eval.md +140 -0
  489. package/dist/assets/design/skills/remotion-to-hyperframes/references/fonts.md +112 -0
  490. package/dist/assets/design/skills/remotion-to-hyperframes/references/limitations.md +136 -0
  491. package/dist/assets/design/skills/remotion-to-hyperframes/references/lottie.md +119 -0
  492. package/dist/assets/design/skills/remotion-to-hyperframes/references/media.md +149 -0
  493. package/dist/assets/design/skills/remotion-to-hyperframes/references/parameters.md +172 -0
  494. package/dist/assets/design/skills/remotion-to-hyperframes/references/sequencing.md +251 -0
  495. package/dist/assets/design/skills/remotion-to-hyperframes/references/timing.md +165 -0
  496. package/dist/assets/design/skills/remotion-to-hyperframes/references/transitions.md +113 -0
  497. package/dist/assets/design/skills/slideshow/SKILL.md +530 -0
  498. package/dist/assets/design/skills/slideshow/references/standalone-harness.md +1017 -0
  499. package/dist/assets/design/skills/talking-head-recut/NOTICE.md +39 -0
  500. package/dist/assets/design/skills/talking-head-recut/SKILL.md +1007 -0
  501. package/dist/assets/design/skills/talking-head-recut/references/DESIGN_INDEX.md +145 -0
  502. package/dist/assets/design/skills/talking-head-recut/references/confirm-visual-direction-with-user-do-this-first.md +211 -0
  503. package/dist/assets/design/skills/talking-head-recut/references/frames/clean.html +92 -0
  504. package/dist/assets/design/skills/talking-head-recut/references/frames/hairline.html +171 -0
  505. package/dist/assets/design/skills/talking-head-recut/references/frames/polaroid.html +131 -0
  506. package/dist/assets/design/skills/talking-head-recut/references/layouts/overlay.html +164 -0
  507. package/dist/assets/design/skills/talking-head-recut/references/layouts/pip.html +143 -0
  508. package/dist/assets/design/skills/talking-head-recut/references/layouts/split.html +121 -0
  509. package/dist/assets/design/skills/talking-head-recut/references/layouts/stack.html +109 -0
  510. package/dist/assets/design/skills/talking-head-recut/references/styles/academic.html +172 -0
  511. package/dist/assets/design/skills/talking-head-recut/references/styles/audit.html +170 -0
  512. package/dist/assets/design/skills/talking-head-recut/references/styles/editorial.html +189 -0
  513. package/dist/assets/design/skills/talking-head-recut/references/styles/geom.html +181 -0
  514. package/dist/assets/design/skills/talking-head-recut/references/styles/minimal.html +130 -0
  515. package/dist/assets/design/skills/talking-head-recut/references/styles/spotlight.html +142 -0
  516. package/dist/assets/design/skills/talking-head-recut/references/styles/swiss.html +188 -0
  517. package/dist/assets/design/skills/talking-head-recut/references/styles/terminal.html +196 -0
  518. package/dist/assets/design/skills/talking-head-recut/references/styles/whiteboard.html +170 -0
  519. package/dist/assets/design/skills/talking-head-recut/references/styles/xhs.html +206 -0
  520. package/dist/assets/design/taste/LICENSE +21 -0
  521. package/dist/assets/design/taste/PROVENANCE.md +70 -0
  522. package/dist/assets/design/taste/brandkit/SKILL.md +798 -0
  523. package/dist/assets/design/taste/brutalist-skill/SKILL.md +92 -0
  524. package/dist/assets/design/taste/gpt-tasteskill/SKILL.md +74 -0
  525. package/dist/assets/design/taste/image-to-code-skill/SKILL.md +1228 -0
  526. package/dist/assets/design/taste/imagegen-frontend-mobile/SKILL.md +1465 -0
  527. package/dist/assets/design/taste/imagegen-frontend-web/SKILL.md +987 -0
  528. package/dist/assets/design/taste/minimalist-skill/SKILL.md +85 -0
  529. package/dist/assets/design/taste/output-skill/SKILL.md +49 -0
  530. package/dist/assets/design/taste/redesign-skill/SKILL.md +178 -0
  531. package/dist/assets/design/taste/soft-skill/SKILL.md +98 -0
  532. package/dist/assets/design/taste/stitch-skill/DESIGN.md +121 -0
  533. package/dist/assets/design/taste/stitch-skill/SKILL.md +184 -0
  534. package/dist/assets/design/taste/taste-skill/SKILL.md +1043 -0
  535. package/dist/assets/design/taste/taste-skill/references/4-2-color-calibration.md +24 -0
  536. package/dist/assets/design/taste/taste-skill/references/4-7-layout-discipline-hard-rules-failing-any-of-.md +27 -0
  537. package/dist/assets/design/taste/taste-skill/references/4-8-image-visual-asset-strategy.md +35 -0
  538. package/dist/assets/design/taste/taste-skill/references/4-9-content-density.md +34 -0
  539. package/dist/assets/design/taste/taste-skill/references/9-f-production-test-tells-banned-outright.md +54 -0
  540. package/dist/assets/design/taste/taste-skill-v1/SKILL.md +226 -0
  541. package/dist/assets/engineering/skills-starter/engineering-ui-design/SKILL.md +84 -0
  542. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/SKILL.md +68 -459
  543. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/dispatch-and-review-rules.md +74 -0
  544. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/example-workflow.md +70 -0
  545. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/model-selection.md +40 -0
  546. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/process-diagrams.md +92 -0
  547. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/setup-and-ledger.md +75 -0
  548. package/dist/assets/uiux/LICENSE +21 -0
  549. package/dist/assets/uiux/PROVENANCE.md +110 -0
  550. package/dist/assets/uiux/data/app-interface.csv +33 -0
  551. package/dist/assets/uiux/data/charts.csv +26 -0
  552. package/dist/assets/uiux/data/colors.csv +193 -0
  553. package/dist/assets/uiux/data/icons.csv +106 -0
  554. package/dist/assets/uiux/data/landing.csv +35 -0
  555. package/dist/assets/uiux/data/motion.csv +18 -0
  556. package/dist/assets/uiux/data/products.csv +193 -0
  557. package/dist/assets/uiux/data/react-performance.csv +45 -0
  558. package/dist/assets/uiux/data/stacks/angular.csv +51 -0
  559. package/dist/assets/uiux/data/stacks/astro.csv +54 -0
  560. package/dist/assets/uiux/data/stacks/avalonia.csv +57 -0
  561. package/dist/assets/uiux/data/stacks/flutter.csv +53 -0
  562. package/dist/assets/uiux/data/stacks/html-tailwind.csv +60 -0
  563. package/dist/assets/uiux/data/stacks/javafx.csv +76 -0
  564. package/dist/assets/uiux/data/stacks/jetpack-compose.csv +53 -0
  565. package/dist/assets/uiux/data/stacks/laravel.csv +51 -0
  566. package/dist/assets/uiux/data/stacks/nextjs.csv +62 -0
  567. package/dist/assets/uiux/data/stacks/nuxt-ui.csv +77 -0
  568. package/dist/assets/uiux/data/stacks/nuxtjs.csv +68 -0
  569. package/dist/assets/uiux/data/stacks/react-native.csv +52 -0
  570. package/dist/assets/uiux/data/stacks/react.csv +67 -0
  571. package/dist/assets/uiux/data/stacks/shadcn.csv +69 -0
  572. package/dist/assets/uiux/data/stacks/svelte.csv +56 -0
  573. package/dist/assets/uiux/data/stacks/swiftui.csv +51 -0
  574. package/dist/assets/uiux/data/stacks/threejs.csv +54 -0
  575. package/dist/assets/uiux/data/stacks/uno.csv +60 -0
  576. package/dist/assets/uiux/data/stacks/uwp.csv +56 -0
  577. package/dist/assets/uiux/data/stacks/vue.csv +50 -0
  578. package/dist/assets/uiux/data/stacks/winui.csv +60 -0
  579. package/dist/assets/uiux/data/stacks/wpf.csv +57 -0
  580. package/dist/assets/uiux/data/styles.csv +89 -0
  581. package/dist/assets/uiux/data/typography.csv +75 -0
  582. package/dist/assets/uiux/data/ui-reasoning.csv +193 -0
  583. package/dist/assets/uiux/data/ux-guidelines.csv +120 -0
  584. package/dist/auto-review.js +38 -4
  585. package/dist/bootstrap.js +65061 -56810
  586. package/dist/client.cjs +4668 -3598
  587. package/dist/subagent-claude-code.js +493 -0
  588. package/dist/subagent-codex.js +1068 -0
  589. package/dist/tool-session-query.js +993 -0
  590. package/package.json +81 -74
  591. package/dist/agent-team.js +0 -16235
  592. package/dist/schedule.js +0 -15898
  593. package/dist/tool-agent-team.js +0 -16766
@@ -0,0 +1,993 @@
1
+ // packages/session-query/tool-session-query/lib/index.js
2
+ import z from "@deepseek-ai/schemastery";
3
+
4
+ // packages/util/timeout/lib/index.js
5
+ var MAX_TIMER_DELAY_MS = 2147483647;
6
+
7
+ // packages/session-query/tool-session-query/lib/index.js
8
+ import { defineTool } from "@deepseek-ai/dsh-tools";
9
+ import { brandString } from "@deepseek-ai/dsh-brand";
10
+ import { SessionQueryError, extractSessionEventText } from "@deepseek-ai/dsh-session-query";
11
+ import { HarnessError } from "@deepseek-ai/dsh-llm";
12
+ import { SessionSeq } from "@deepseek-ai/dsh-session";
13
+ var sessionSearchParameters = {
14
+ query: {
15
+ type: "string",
16
+ required: true,
17
+ description: "Literal full-text query over prior session history."
18
+ },
19
+ session_ids: {
20
+ type: "array",
21
+ items: { type: "string" },
22
+ description: "Optional session ids to include."
23
+ },
24
+ created_at_from: {
25
+ type: "string",
26
+ description: "Inclusive timezone-qualified ISO 8601 creation-time lower bound."
27
+ },
28
+ created_at_to: {
29
+ type: "string",
30
+ description: "Inclusive timezone-qualified ISO 8601 creation-time upper bound."
31
+ },
32
+ parent_session_ids: {
33
+ type: "array",
34
+ items: { type: "string" },
35
+ description: "Optional direct parent session ids."
36
+ },
37
+ include_root_sessions: {
38
+ type: "boolean",
39
+ description: "Include sessions with no parent in the parent filter."
40
+ },
41
+ availability: {
42
+ type: "array",
43
+ items: {
44
+ type: "string",
45
+ enum: ["live", "persisted"]
46
+ },
47
+ description: "Require at least one selected source availability."
48
+ },
49
+ event_seq_from: {
50
+ type: "integer",
51
+ description: "Inclusive event sequence lower bound."
52
+ },
53
+ event_seq_to: {
54
+ type: "integer",
55
+ description: "Inclusive event sequence upper bound."
56
+ },
57
+ event_time_from: {
58
+ type: "string",
59
+ description: "Inclusive timezone-qualified ISO 8601 event-time lower bound."
60
+ },
61
+ event_time_to: {
62
+ type: "string",
63
+ description: "Inclusive timezone-qualified ISO 8601 event-time upper bound."
64
+ },
65
+ event_types: {
66
+ type: "array",
67
+ items: { type: "string" },
68
+ description: "Event types to include."
69
+ },
70
+ event_surfaces: {
71
+ type: "array",
72
+ items: {
73
+ type: "string",
74
+ enum: [
75
+ "current",
76
+ "shadowed",
77
+ "log-only"
78
+ ]
79
+ },
80
+ description: "Event surfaces to include."
81
+ }
82
+ };
83
+ var eventSearchParameters = {
84
+ session_id: {
85
+ type: "string",
86
+ description: "Target session id. Omit for the current session."
87
+ },
88
+ query: {
89
+ type: "string",
90
+ required: true,
91
+ description: "Literal full-text query over the target session."
92
+ },
93
+ seq_from: {
94
+ type: "integer",
95
+ description: "Inclusive event sequence lower bound."
96
+ },
97
+ seq_to: {
98
+ type: "integer",
99
+ description: "Inclusive event sequence upper bound."
100
+ },
101
+ time_from: {
102
+ type: "string",
103
+ description: "Inclusive timezone-qualified ISO 8601 event-time lower bound."
104
+ },
105
+ time_to: {
106
+ type: "string",
107
+ description: "Inclusive timezone-qualified ISO 8601 event-time upper bound."
108
+ },
109
+ event_types: {
110
+ type: "array",
111
+ items: { type: "string" },
112
+ description: "Event types to include."
113
+ },
114
+ surfaces: {
115
+ type: "array",
116
+ items: {
117
+ type: "string",
118
+ enum: [
119
+ "current",
120
+ "shadowed",
121
+ "log-only"
122
+ ]
123
+ },
124
+ description: "Event surfaces to include."
125
+ }
126
+ };
127
+ var targetSessionParameter = { session_id: {
128
+ type: "string",
129
+ description: "Target session id. Omit for the current session."
130
+ } };
131
+ function buildSessionFilters(args) {
132
+ const filters = [];
133
+ if (args.session_ids !== void 0) {
134
+ assertNonEmptyArray("session_ids", args.session_ids);
135
+ filters.push({
136
+ kind: "id",
137
+ values: args.session_ids.map((value) => brandString(value))
138
+ });
139
+ }
140
+ const created = timestampRange("created_at", args.created_at_from, args.created_at_to);
141
+ if (created !== void 0) filters.push({
142
+ kind: "created-at",
143
+ ...created
144
+ });
145
+ if (args.availability !== void 0) {
146
+ assertNonEmptyArray("availability", args.availability);
147
+ filters.push({
148
+ kind: "availability",
149
+ values: args.availability
150
+ });
151
+ }
152
+ return filters;
153
+ }
154
+ function materializeParentSessionIds(values) {
155
+ if (values === void 0) return void 0;
156
+ assertNonEmptyArray("parent_session_ids", values);
157
+ return [...new Set(values.map((value) => brandString(value)))];
158
+ }
159
+ function buildEventFilters(input) {
160
+ const filters = [];
161
+ const seq = sequenceRange(input.seqFrom, input.seqTo);
162
+ if (seq.from !== void 0 || seq.to !== void 0) filters.push({
163
+ kind: "seq",
164
+ ...seq
165
+ });
166
+ const time = timestampRange("time", input.timeFrom, input.timeTo);
167
+ if (time !== void 0) filters.push({
168
+ kind: "time",
169
+ ...time
170
+ });
171
+ if (input.eventTypes !== void 0) {
172
+ assertNonEmptyArray("event_types", input.eventTypes);
173
+ filters.push({
174
+ kind: "type",
175
+ values: input.eventTypes
176
+ });
177
+ }
178
+ if (input.surfaces !== void 0) {
179
+ assertNonEmptyArray("surfaces", input.surfaces);
180
+ filters.push({
181
+ kind: "surface",
182
+ values: input.surfaces
183
+ });
184
+ }
185
+ return filters;
186
+ }
187
+ function normalizeQuery(value) {
188
+ const query = value.trim().replace(/\s+/gu, " ");
189
+ if (query.length === 0) throw new SessionQueryError("session-search query must contain non-whitespace text", "SESSION_QUERY_INVALID_QUERY");
190
+ if (query.includes("\0")) throw new SessionQueryError("session-search query must not contain NUL", "SESSION_QUERY_INVALID_QUERY");
191
+ return query;
192
+ }
193
+ function sequenceRange(from, to) {
194
+ if (from !== void 0) assertNonNegativeSafeInteger("sequence lower bound", from);
195
+ if (to !== void 0) assertNonNegativeSafeInteger("sequence upper bound", to);
196
+ if (from !== void 0 && to !== void 0 && from > to) throw invalidRange("sequence", "from must be less than or equal to to");
197
+ return {
198
+ ...from === void 0 ? {} : { from },
199
+ ...to === void 0 ? {} : { to }
200
+ };
201
+ }
202
+ function timestampRange(name2, from, to) {
203
+ if (from === void 0 && to === void 0) return void 0;
204
+ const fromTimestamp = from === void 0 ? void 0 : parseIsoTimestamp(`${name2}_from`, from);
205
+ const toTimestamp = to === void 0 ? void 0 : parseIsoTimestamp(`${name2}_to`, to);
206
+ if (fromTimestamp !== void 0 && toTimestamp !== void 0 && compareTimestamps(fromTimestamp, toTimestamp) > 0) throw invalidRange(name2, "from must be less than or equal to to");
207
+ return {
208
+ ...fromTimestamp === void 0 ? {} : { from: timestampLowerBound(fromTimestamp) },
209
+ ...toTimestamp === void 0 ? {} : { to: timestampUpperBound(toTimestamp) }
210
+ };
211
+ }
212
+ var ISO_TIMESTAMP = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d+))?)?(Z|([+-])(\d{2}):(\d{2}))$/;
213
+ function parseIsoTimestamp(name2, value) {
214
+ const match = ISO_TIMESTAMP.exec(value);
215
+ if (match === null) throw invalidRange(name2, "must be an ISO 8601 timestamp with Z or a numeric offset");
216
+ const year = Number(match[1]);
217
+ const month = Number(match[2]);
218
+ const day = Number(match[3]);
219
+ const hour = Number(match[4]);
220
+ const minute = Number(match[5]);
221
+ const second = Number(match[6] ?? 0);
222
+ const offsetHour = Number(match[10] ?? 0);
223
+ const offsetMinute = Number(match[11] ?? 0);
224
+ if (month < 1 || month > 12 || day < 1 || day > daysInMonth(year, month) || hour > 23 || minute > 59 || second > 59 || offsetHour > 23 || offsetMinute > 59) throw invalidRange(name2, "must be a valid ISO 8601 timestamp");
225
+ const fraction = match[7] ?? "";
226
+ const millisecondDigits = fraction.slice(0, 3).padEnd(3, "0");
227
+ const normalized = `${match[1]}-${match[2]}-${match[3]}T${match[4]}:${match[5]}:${match[6] ?? "00"}.${millisecondDigits}${match[8]}`;
228
+ const timestamp = Date.parse(normalized);
229
+ if (!Number.isSafeInteger(timestamp)) throw invalidRange(name2, "must be a valid ISO 8601 timestamp");
230
+ return {
231
+ millisecond: timestamp,
232
+ remainder: fraction.slice(3).replace(/0+$/u, "")
233
+ };
234
+ }
235
+ function compareTimestamps(left, right) {
236
+ if (left.millisecond !== right.millisecond) return left.millisecond < right.millisecond ? -1 : 1;
237
+ const length = Math.max(left.remainder.length, right.remainder.length);
238
+ for (let index = 0; index < length; index += 1) {
239
+ const leftDigit = left.remainder[index] ?? "0";
240
+ const rightDigit = right.remainder[index] ?? "0";
241
+ if (leftDigit !== rightDigit) return leftDigit < rightDigit ? -1 : 1;
242
+ }
243
+ return 0;
244
+ }
245
+ function timestampLowerBound(timestamp) {
246
+ return timestamp.remainder.length === 0 ? timestamp.millisecond : nextUpFinite(timestamp.millisecond);
247
+ }
248
+ function timestampUpperBound(timestamp) {
249
+ return timestamp.remainder.length === 0 ? timestamp.millisecond : nextDownFinite(timestamp.millisecond + 1);
250
+ }
251
+ function nextUpFinite(value) {
252
+ if (value === 0) return Number.MIN_VALUE;
253
+ const view = /* @__PURE__ */ new DataView(/* @__PURE__ */ new ArrayBuffer(8));
254
+ view.setFloat64(0, value);
255
+ const bits = view.getBigUint64(0);
256
+ view.setBigUint64(0, value > 0 ? bits + 1n : bits - 1n);
257
+ return view.getFloat64(0);
258
+ }
259
+ function nextDownFinite(value) {
260
+ if (value === 0) return -Number.MIN_VALUE;
261
+ const view = /* @__PURE__ */ new DataView(/* @__PURE__ */ new ArrayBuffer(8));
262
+ view.setFloat64(0, value);
263
+ const bits = view.getBigUint64(0);
264
+ view.setBigUint64(0, value > 0 ? bits - 1n : bits + 1n);
265
+ return view.getFloat64(0);
266
+ }
267
+ function daysInMonth(year, month) {
268
+ if (month === 2) return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) ? 29 : 28;
269
+ return [
270
+ 4,
271
+ 6,
272
+ 9,
273
+ 11
274
+ ].includes(month) ? 30 : 31;
275
+ }
276
+ function invalidRange(name2, detail) {
277
+ return new SessionQueryError(`session ${name2} range ${detail}`, "SESSION_QUERY_INVALID_FILTER");
278
+ }
279
+ function assertNonNegativeSafeInteger(name2, value) {
280
+ if (!Number.isSafeInteger(value) || value < 0) throw new SessionQueryError(`${name2} must be a non-negative safe integer`, "SESSION_QUERY_INVALID_FILTER");
281
+ }
282
+ function assertNonEmptyArray(name2, values) {
283
+ if (values.length === 0) throw new SessionQueryError(`${name2} must contain at least one value when supplied`, "SESSION_QUERY_INVALID_FILTER");
284
+ }
285
+ var toolInput = {
286
+ sessionSearchParameters,
287
+ eventSearchParameters,
288
+ targetSessionParameter,
289
+ buildSessionFilters,
290
+ materializeParentSessionIds,
291
+ buildEventFilters,
292
+ normalizeQuery,
293
+ sequenceRange,
294
+ assertNonNegativeSafeInteger
295
+ };
296
+ var UNPRINTABLE_SERVICE_ERROR = "[unprintable session query failure]";
297
+ var SAFE_SESSION_QUERY_FAILURES = {
298
+ SESSION_QUERY_ABORTED: {
299
+ code: "SESSION_QUERY_ABORTED",
300
+ message: "session query was cancelled"
301
+ },
302
+ SESSION_QUERY_CORRUPT_SESSION: {
303
+ code: "SESSION_QUERY_CORRUPT_SESSION",
304
+ message: "session event history is corrupt"
305
+ },
306
+ SESSION_QUERY_EVENT_NOT_FOUND: {
307
+ code: "SESSION_QUERY_EVENT_NOT_FOUND",
308
+ message: "session event was not found"
309
+ },
310
+ SESSION_QUERY_INDEX_FAILED: {
311
+ code: "SESSION_QUERY_INDEX_FAILED",
312
+ message: "session search index is unavailable"
313
+ },
314
+ SESSION_QUERY_INVALID_CONFIG: {
315
+ code: "SESSION_QUERY_TOOL_FAILED",
316
+ message: "session query operation failed"
317
+ },
318
+ SESSION_QUERY_INVALID_CURSOR: {
319
+ code: "SESSION_QUERY_INVALID_CURSOR",
320
+ message: "session search continuation is invalid"
321
+ },
322
+ SESSION_QUERY_INVALID_FILTER: {
323
+ code: "SESSION_QUERY_INVALID_FILTER",
324
+ message: "session query filters were rejected"
325
+ },
326
+ SESSION_QUERY_INVALID_LIMIT: {
327
+ code: "SESSION_QUERY_INVALID_LIMIT",
328
+ message: "session query result limit was rejected"
329
+ },
330
+ SESSION_QUERY_INVALID_QUERY: {
331
+ code: "SESSION_QUERY_INVALID_QUERY",
332
+ message: "session query was rejected"
333
+ },
334
+ SESSION_QUERY_INVALID_LINEAGE: {
335
+ code: "SESSION_QUERY_INVALID_LINEAGE",
336
+ message: "session lineage is invalid"
337
+ },
338
+ SESSION_QUERY_INVALID_SURFACE: {
339
+ code: "SESSION_QUERY_INVALID_SURFACE",
340
+ message: "session event history is invalid"
341
+ },
342
+ SESSION_QUERY_INVALID_WINDOW: {
343
+ code: "SESSION_QUERY_INVALID_WINDOW",
344
+ message: "session event window is invalid"
345
+ },
346
+ SESSION_QUERY_PERSISTENCE_FAILED: {
347
+ code: "SESSION_QUERY_PERSISTENCE_FAILED",
348
+ message: "session history storage is unavailable"
349
+ },
350
+ SESSION_QUERY_SEARCH_DISABLED: {
351
+ code: "SESSION_QUERY_SEARCH_DISABLED",
352
+ message: "session search is disabled in this deployment"
353
+ },
354
+ SESSION_QUERY_SESSION_NOT_FOUND: {
355
+ code: "SESSION_QUERY_SESSION_NOT_FOUND",
356
+ message: "session was not found"
357
+ },
358
+ SESSION_QUERY_STALE_CURSOR: {
359
+ code: "SESSION_QUERY_STALE_CURSOR",
360
+ message: "session history changed while paging; retry the complete search call"
361
+ },
362
+ SESSION_QUERY_SOURCE_CONFLICT: {
363
+ code: "SESSION_QUERY_TOOL_FAILED",
364
+ message: "session query operation failed"
365
+ }
366
+ };
367
+ function unauthorizedTarget() {
368
+ return new HarnessError("session target is outside the caller workspace", "SESSION_QUERY_TOOL_UNAUTHORIZED");
369
+ }
370
+ async function call(ctx, signal, operation, invoke) {
371
+ signal.throwIfAborted();
372
+ try {
373
+ const value = await invoke();
374
+ signal.throwIfAborted();
375
+ return value;
376
+ } catch (error) {
377
+ signal.throwIfAborted();
378
+ throw sanitizeError(ctx, operation, error);
379
+ }
380
+ }
381
+ function sanitizeError(ctx, operation, error) {
382
+ const generic = genericFailure();
383
+ const diagnostic = fullError(error);
384
+ try {
385
+ ctx.logger.warn(`tool-session-query: ${operation} failed: ${diagnostic}`);
386
+ if (error instanceof SessionQueryError) {
387
+ const code = error.code;
388
+ const failure = typeof code === "string" && Object.hasOwn(SAFE_SESSION_QUERY_FAILURES, code) ? SAFE_SESSION_QUERY_FAILURES[code] : void 0;
389
+ if (failure !== void 0 && failure.code !== "SESSION_QUERY_TOOL_FAILED") return new SessionQueryError(failure.message, failure.code);
390
+ }
391
+ if (error instanceof HarnessError && error.code === "SESSION_QUERY_TOOL_UNAUTHORIZED") return unauthorizedTarget();
392
+ } catch {
393
+ return generic;
394
+ }
395
+ return generic;
396
+ }
397
+ function genericFailure() {
398
+ return new HarnessError("session query operation failed", "SESSION_QUERY_TOOL_FAILED");
399
+ }
400
+ function fullError(error) {
401
+ try {
402
+ return renderFullError(error);
403
+ } catch {
404
+ return UNPRINTABLE_SERVICE_ERROR;
405
+ }
406
+ }
407
+ function renderFullError(error) {
408
+ if (!(error instanceof Error)) return String(error);
409
+ const diagnostics = [];
410
+ const seen = /* @__PURE__ */ new Set();
411
+ let current = error;
412
+ while (current instanceof Error && !seen.has(current)) {
413
+ seen.add(current);
414
+ diagnostics.push(current.stack ?? String(current));
415
+ current = current.cause;
416
+ }
417
+ if (current instanceof Error) diagnostics.push("[circular error cause]");
418
+ else if (current !== void 0) diagnostics.push(renderFullError(current));
419
+ return diagnostics.join("\nCaused by: ");
420
+ }
421
+ var serviceBoundary = {
422
+ unauthorizedTarget,
423
+ call,
424
+ sanitizeError
425
+ };
426
+ function callerOf(exec, ctx) {
427
+ const agent = exec.agent;
428
+ if (agent === void 0) throw new HarnessError("session query tools require an agent-bound caller", "SESSION_QUERY_TOOL_MISSING_AGENT");
429
+ return {
430
+ id: agent.session.id,
431
+ header: agent.session.header,
432
+ boundary: ctx.sessionProjections.stateOf(agent.session, "turnBoundary")
433
+ };
434
+ }
435
+ function targetId(args, caller) {
436
+ return args.session_id === void 0 ? caller.id : brandString(args.session_id);
437
+ }
438
+ async function authorizeTarget(ctx, caller, target, signal) {
439
+ if (target === caller.id) return;
440
+ const cwd = caller.header.cwd;
441
+ if (cwd === void 0) throw serviceBoundary.unauthorizedTarget();
442
+ if ((await serviceBoundary.call(ctx, signal, "target authorization", () => ctx.sessionQuery.filterSessions([{
443
+ kind: "id",
444
+ values: [target]
445
+ }, {
446
+ kind: "cwd",
447
+ values: [cwd]
448
+ }], signal))).length !== 1) throw serviceBoundary.unauthorizedTarget();
449
+ }
450
+ function recordAuthorized(record, caller) {
451
+ return headerAuthorized(record.header, caller);
452
+ }
453
+ function headerAuthorized(header, caller) {
454
+ if (header.id === caller.id) return header.cwd === caller.header.cwd;
455
+ return caller.header.cwd !== void 0 && header.cwd === caller.header.cwd;
456
+ }
457
+ function assertObservedTargetAuthorized(caller, target, observed) {
458
+ if (observed.id !== target || !headerAuthorized(observed, caller)) throw serviceBoundary.unauthorizedTarget();
459
+ }
460
+ async function authorizeSessionIds(ctx, caller, ids, signal) {
461
+ const unique = [...new Set(ids)];
462
+ const authorized = /* @__PURE__ */ new Set();
463
+ if (unique.includes(caller.id)) authorized.add(caller.id);
464
+ const cwd = caller.header.cwd;
465
+ const other = unique.filter((id) => id !== caller.id);
466
+ if (cwd === void 0 || other.length === 0) return authorized;
467
+ const records = await serviceBoundary.call(ctx, signal, "session-id authorization", () => ctx.sessionQuery.filterSessions([{
468
+ kind: "id",
469
+ values: other
470
+ }, {
471
+ kind: "cwd",
472
+ values: [cwd]
473
+ }], signal));
474
+ const requested = new Set(other);
475
+ for (const record of records) if (requested.has(record.header.id) && recordAuthorized(record, caller)) authorized.add(record.header.id);
476
+ return authorized;
477
+ }
478
+ async function readTitles(ctx, caller, ids, signal) {
479
+ const result = /* @__PURE__ */ new Map();
480
+ const observations = await serviceBoundary.call(ctx, signal, "title observation", () => ctx.sessionQuery.readTitleSnapshots(ids, signal));
481
+ for (const observation of observations) {
482
+ if (observation.status === "rejected") {
483
+ result.set(observation.sessionId, unavailableTitle(ctx, observation.reason));
484
+ continue;
485
+ }
486
+ assertObservedTargetAuthorized(caller, observation.sessionId, observation.value.session);
487
+ result.set(observation.sessionId, { text: observation.value.title?.title ?? "untitled" });
488
+ }
489
+ return result;
490
+ }
491
+ async function readTitle(ctx, caller, id, signal) {
492
+ return (await readTitles(ctx, caller, [id], signal)).get(id);
493
+ }
494
+ function unavailableTitle(ctx, error) {
495
+ const sanitized = serviceBoundary.sanitizeError(ctx, "title observation item", error);
496
+ if (sanitized.code === "SESSION_QUERY_TOOL_UNAUTHORIZED") throw sanitized;
497
+ return {
498
+ text: "untitled",
499
+ unavailableCode: sanitized.code
500
+ };
501
+ }
502
+ function authorizeDescendants(nodes, caller) {
503
+ const result = [];
504
+ let pending;
505
+ for (const node of [...nodes].reverse()) pending = {
506
+ node,
507
+ target: result,
508
+ next: pending
509
+ };
510
+ while (pending !== void 0) {
511
+ const current = pending;
512
+ pending = current.next;
513
+ if (!recordAuthorized(current.node.session, caller)) {
514
+ current.target.push(null);
515
+ continue;
516
+ }
517
+ const projected = {
518
+ record: current.node.session,
519
+ descendants: []
520
+ };
521
+ current.target.push(projected);
522
+ for (const child of [...current.node.descendants].reverse()) pending = {
523
+ node: child,
524
+ target: projected.descendants,
525
+ next: pending
526
+ };
527
+ }
528
+ return result;
529
+ }
530
+ function* visitDescendants(nodes) {
531
+ let pending;
532
+ for (const node of [...nodes].reverse()) pending = {
533
+ node,
534
+ depth: 0,
535
+ next: pending
536
+ };
537
+ while (pending !== void 0) {
538
+ const current = pending;
539
+ pending = current.next;
540
+ yield current;
541
+ if (current.node === null) continue;
542
+ for (const child of [...current.node.descendants].reverse()) pending = {
543
+ node: child,
544
+ depth: current.depth + 1,
545
+ next: pending
546
+ };
547
+ }
548
+ }
549
+ function descendantIds(nodes) {
550
+ const ids = [];
551
+ for (const { node } of visitDescendants(nodes)) if (node !== null) ids.push(node.record.header.id);
552
+ return ids;
553
+ }
554
+ function titleText(view) {
555
+ return view.unavailableCode === void 0 ? view.text : `${view.text} (title unavailable: ${view.unavailableCode})`;
556
+ }
557
+ var workspaceAccess = {
558
+ callerOf,
559
+ targetId,
560
+ authorizeTarget,
561
+ recordAuthorized,
562
+ assertObservedTargetAuthorized,
563
+ authorizeSessionIds,
564
+ readTitles,
565
+ readTitle,
566
+ authorizeDescendants,
567
+ visitDescendants,
568
+ descendantIds,
569
+ titleText
570
+ };
571
+ function formatSessionSearch(collected, titles, authorizedParents) {
572
+ if (collected.items.length === 0) return formatEmptySessionSearch();
573
+ const lines = [`Session search results (${collected.items.length}):`];
574
+ for (const [index, hit] of collected.items.entries()) {
575
+ const parent = hit.header.parentSession === void 0 ? "root" : authorizedParents.has(hit.header.parentSession) ? hit.header.parentSession : "[outside workspace]";
576
+ const availability = [hit.live ? "live" : void 0, hit.persisted ? "persisted" : void 0].filter((value) => value !== void 0).join(", ") || "unavailable";
577
+ lines.push("", `${index + 1}. Session ${hit.header.id} \u2014 ${workspaceAccess.titleText(titles.get(hit.header.id))}`, ` Created: ${formatTime(hit.header.createdAt)}`, ` Parent: ${parent}`, ` Availability: ${availability}`, ` Best match: seq ${hit.bestMatch.seq} | ${hit.bestMatch.type} | ${hit.bestMatch.surface} | ${formatTime(hit.bestMatch.time)}`, ` Snippet: ${hit.bestMatch.snippet}`);
578
+ }
579
+ if (collected.capped) lines.push("", "Result cap reached. Narrow the query or add filters to find additional matches.");
580
+ return lines.join("\n");
581
+ }
582
+ function formatEmptySessionSearch() {
583
+ return "No prior session matches found.";
584
+ }
585
+ function formatEventSearch(sessionId, title, collected) {
586
+ const lines = [`Session ${sessionId} \u2014 ${workspaceAccess.titleText(title)}`];
587
+ if (collected.items.length === 0) {
588
+ lines.push("", "No prior event matches found.");
589
+ return lines.join("\n");
590
+ }
591
+ lines.push("", `Event search results (${collected.items.length}):`);
592
+ for (const [index, hit] of collected.items.entries()) lines.push(`${index + 1}. seq ${hit.seq} | ${hit.type} | ${hit.surface} | ${formatTime(hit.time)}`, ` Snippet: ${hit.snippet}`);
593
+ if (collected.capped) lines.push("", "Result cap reached. Narrow the query or add filters to find additional matches.");
594
+ return lines.join("\n");
595
+ }
596
+ function formatSessionTrace(trace, ancestors, ancestorBoundary, descendants, titles) {
597
+ const lines = [
598
+ `Session ${trace.target.header.id} \u2014 ${workspaceAccess.titleText(titles.get(trace.target.header.id))}`,
599
+ `Created: ${formatTime(trace.target.header.createdAt)}`,
600
+ `Availability: ${availabilityText(trace.target)}`,
601
+ "",
602
+ "Ancestors (nearest first):"
603
+ ];
604
+ if (ancestors.length === 0 && !ancestorBoundary) lines.push("- none (target is a root session)");
605
+ for (const record of ancestors) lines.push(`- ${record.header.id} \u2014 ${workspaceAccess.titleText(titles.get(record.header.id))} | ${formatTime(record.header.createdAt)} | ${availabilityText(record)}`);
606
+ if (ancestorBoundary) lines.push("- [outside workspace boundary]");
607
+ lines.push("", "Descendants:");
608
+ if (descendants.length === 0) lines.push("- none");
609
+ else renderDescendants(lines, descendants, titles);
610
+ return lines.join("\n");
611
+ }
612
+ function renderDescendants(lines, nodes, titles) {
613
+ for (const { node, depth } of workspaceAccess.visitDescendants(nodes)) {
614
+ const indent = " ".repeat(depth);
615
+ if (node === null) {
616
+ lines.push(`${indent}- [outside workspace subtree]`);
617
+ continue;
618
+ }
619
+ const id = node.record.header.id;
620
+ lines.push(`${indent}- ${id} \u2014 ${workspaceAccess.titleText(titles.get(id))} | ${formatTime(node.record.header.createdAt)} | ${availabilityText(node.record)}`);
621
+ }
622
+ }
623
+ function formatEventTrace(sessionId, title, trace) {
624
+ return [
625
+ `Session ${sessionId} \u2014 ${workspaceAccess.titleText(title)}`,
626
+ `Target: seq ${trace.target.seq} | ${trace.target.type} | ${trace.target.surface} | ${formatTime(trace.target.time)}`,
627
+ `Replaced by: ${trace.replacedBy ?? "none"}`,
628
+ `Replacement chain: ${seqList(trace.replacementChain)}`,
629
+ `Events replaced by target: ${seqList(trace.replacedEventSeqs)}`,
630
+ `Events cited directly as sources: ${seqList(trace.sourceEventSeqs)}`,
631
+ `Direct derived events: ${seqList(trace.derivedEventSeqs)}`
632
+ ].join("\n");
633
+ }
634
+ function formatEventRead(sessionId, title, window) {
635
+ const before = window.events.filter((event) => event.seq < window.target.seq);
636
+ const after = window.events.filter((event) => event.seq > window.target.seq);
637
+ const lines = [
638
+ `Session ${sessionId} \u2014 ${workspaceAccess.titleText(title)}`,
639
+ `Target event seq ${window.target.seq}:`,
640
+ "```json",
641
+ JSON.stringify(window.target, null, 2),
642
+ "```"
643
+ ];
644
+ if (before.length > 0) {
645
+ lines.push("", "Before:");
646
+ for (const event of before) lines.push(formatNeighbor(event));
647
+ }
648
+ if (after.length > 0) {
649
+ lines.push("", "After:");
650
+ for (const event of after) lines.push(formatNeighbor(event));
651
+ }
652
+ return lines.join("\n");
653
+ }
654
+ function formatNeighbor(event) {
655
+ const text = extractSessionEventText(event);
656
+ return `- seq ${event.seq} | ${event.type} | ${formatTime(event.time)}` + (text.length === 0 ? " | (no semantic text)" : `
657
+ ${text.replaceAll("\n", "\n ")}`);
658
+ }
659
+ function availabilityText(record) {
660
+ return [record.live ? "live" : void 0, record.persisted ? "persisted" : void 0].filter((value) => value !== void 0).join(", ") || "unavailable";
661
+ }
662
+ function seqList(values) {
663
+ return values.length === 0 ? "none" : values.join(", ");
664
+ }
665
+ function formatTime(value) {
666
+ return new Date(value).toISOString();
667
+ }
668
+ function presentSessionSearchCall(args) {
669
+ return {
670
+ card: "generic",
671
+ kind: "search",
672
+ title: "Search prior sessions",
673
+ rawInput: args.query
674
+ };
675
+ }
676
+ function presentEventSearchCall(args) {
677
+ return {
678
+ card: "generic",
679
+ kind: "search",
680
+ title: "Search session events",
681
+ rawInput: args.query
682
+ };
683
+ }
684
+ function presentSessionTraceCall(args) {
685
+ return {
686
+ card: "generic",
687
+ kind: "read",
688
+ title: args.session_id === void 0 ? "Trace current session" : `Trace session ${args.session_id}`,
689
+ ...args.session_id === void 0 ? {} : { rawInput: args.session_id }
690
+ };
691
+ }
692
+ function presentEventTargetCall(action, args) {
693
+ return {
694
+ card: "generic",
695
+ kind: "read",
696
+ title: `${action} ${args.seq}`,
697
+ rawInput: {
698
+ ...args.session_id === void 0 ? {} : { session_id: args.session_id },
699
+ seq: args.seq
700
+ }
701
+ };
702
+ }
703
+ var presentation = {
704
+ formatSessionSearch,
705
+ formatEmptySessionSearch,
706
+ formatEventSearch,
707
+ formatSessionTrace,
708
+ formatEventTrace,
709
+ formatEventRead,
710
+ presentSessionSearchCall,
711
+ presentEventSearchCall,
712
+ presentSessionTraceCall,
713
+ presentEventTargetCall
714
+ };
715
+ async function executeSessionSearch(ctx, args, exec, maxResults) {
716
+ const caller = workspaceAccess.callerOf(exec, ctx);
717
+ const cwd = caller.header.cwd;
718
+ if (cwd === void 0) throw new HarnessError("cross-session search is unavailable because the caller session has no workspace", "SESSION_QUERY_TOOL_UNAUTHORIZED");
719
+ const query = toolInput.normalizeQuery(args.query);
720
+ const sessionFilters = toolInput.buildSessionFilters(args);
721
+ const eventFilters = toolInput.buildEventFilters({
722
+ seqFrom: args.event_seq_from,
723
+ seqTo: args.event_seq_to,
724
+ timeFrom: args.event_time_from,
725
+ timeTo: args.event_time_to,
726
+ eventTypes: args.event_types,
727
+ surfaces: args.event_surfaces
728
+ });
729
+ const requestedParentIds = toolInput.materializeParentSessionIds(args.parent_session_ids);
730
+ if (requestedParentIds !== void 0 || args.include_root_sessions === true) {
731
+ const authorizedParentIds = requestedParentIds === void 0 ? /* @__PURE__ */ new Set() : await workspaceAccess.authorizeSessionIds(ctx, caller, requestedParentIds, exec.signal);
732
+ const parentValues = requestedParentIds?.filter((id) => authorizedParentIds.has(id)) ?? [];
733
+ if (args.include_root_sessions === true) parentValues.push(null);
734
+ if (parentValues.length === 0) return presentation.formatEmptySessionSearch();
735
+ sessionFilters.push({
736
+ kind: "parent",
737
+ values: parentValues
738
+ });
739
+ }
740
+ sessionFilters.push({
741
+ kind: "cwd",
742
+ values: [cwd]
743
+ });
744
+ const collected = await collectPages(maxResults, exec.signal, (cursor) => serviceBoundary.call(ctx, exec.signal, "session search", () => ctx.sessionQuery.searchSessions({
745
+ query,
746
+ sessionFilters,
747
+ eventFilters,
748
+ ...cursor === void 0 ? {} : { cursor }
749
+ }, { signal: exec.signal })), (hit) => hit.header.id !== caller.id && workspaceAccess.recordAuthorized(hit, caller));
750
+ const parentIds = collected.items.map((hit) => hit.header.parentSession).filter((id) => id !== void 0);
751
+ const authorizedParents = await workspaceAccess.authorizeSessionIds(ctx, caller, parentIds, exec.signal);
752
+ const titles = await workspaceAccess.readTitles(ctx, caller, collected.items.map((hit) => hit.header.id), exec.signal);
753
+ return presentation.formatSessionSearch(collected, titles, authorizedParents);
754
+ }
755
+ async function executeEventSearch(ctx, args, exec, maxResults) {
756
+ const caller = workspaceAccess.callerOf(exec, ctx);
757
+ const sessionId = workspaceAccess.targetId(args, caller);
758
+ await workspaceAccess.authorizeTarget(ctx, caller, sessionId, exec.signal);
759
+ const query = toolInput.normalizeQuery(args.query);
760
+ const range = toolInput.sequenceRange(args.seq_from, args.seq_to);
761
+ if (sessionId === caller.id) {
762
+ const stepStartSeq = caller.boundary?.lastStepStartSeq;
763
+ if (stepStartSeq === void 0) throw new HarnessError("current-session search requires an active step boundary", "SESSION_QUERY_TOOL_NO_CURRENT_STEP");
764
+ range.to = Math.min(range.to ?? Number.MAX_SAFE_INTEGER, (stepStartSeq ?? 0) - 1);
765
+ }
766
+ const title = await workspaceAccess.readTitle(ctx, caller, sessionId, exec.signal);
767
+ if (range.from !== void 0 && range.to !== void 0 && range.from > range.to) return presentation.formatEventSearch(sessionId, title, {
768
+ items: [],
769
+ capped: false
770
+ });
771
+ const filters = toolInput.buildEventFilters({
772
+ seqFrom: range.from,
773
+ seqTo: range.to,
774
+ timeFrom: args.time_from,
775
+ timeTo: args.time_to,
776
+ eventTypes: args.event_types,
777
+ surfaces: args.surfaces
778
+ });
779
+ const collected = await collectPages(maxResults, exec.signal, async (cursor) => {
780
+ const page = await serviceBoundary.call(ctx, exec.signal, "event search", () => ctx.sessionQuery.searchEvents({
781
+ sessionId,
782
+ query,
783
+ filters,
784
+ ...cursor === void 0 ? {} : { cursor }
785
+ }, { signal: exec.signal }));
786
+ workspaceAccess.assertObservedTargetAuthorized(caller, sessionId, page.session);
787
+ return page;
788
+ }, () => true);
789
+ return presentation.formatEventSearch(sessionId, title, collected);
790
+ }
791
+ async function executeSessionTrace(ctx, args, exec) {
792
+ const caller = workspaceAccess.callerOf(exec, ctx);
793
+ const sessionId = workspaceAccess.targetId(args, caller);
794
+ await workspaceAccess.authorizeTarget(ctx, caller, sessionId, exec.signal);
795
+ const trace = await serviceBoundary.call(ctx, exec.signal, "session lineage trace", () => ctx.sessionQuery.traceSession(sessionId, exec.signal));
796
+ workspaceAccess.assertObservedTargetAuthorized(caller, sessionId, trace.target.header);
797
+ const ancestors = [];
798
+ let ancestorBoundary = false;
799
+ for (const ancestor of trace.ancestors) {
800
+ if (!workspaceAccess.recordAuthorized(ancestor, caller)) {
801
+ ancestorBoundary = true;
802
+ break;
803
+ }
804
+ ancestors.push(ancestor);
805
+ }
806
+ if (ancestors.length === trace.ancestors.length && !trace.complete) ancestorBoundary = true;
807
+ const descendants = workspaceAccess.authorizeDescendants(trace.descendants, caller);
808
+ const visibleIds = [
809
+ trace.target.header.id,
810
+ ...ancestors.map((record) => record.header.id),
811
+ ...workspaceAccess.descendantIds(descendants)
812
+ ];
813
+ const titles = await workspaceAccess.readTitles(ctx, caller, visibleIds, exec.signal);
814
+ return presentation.formatSessionTrace(trace, ancestors, ancestorBoundary, descendants, titles);
815
+ }
816
+ async function executeEventTrace(ctx, args, exec) {
817
+ toolInput.assertNonNegativeSafeInteger("seq", args.seq);
818
+ const seq = SessionSeq(args.seq);
819
+ const caller = workspaceAccess.callerOf(exec, ctx);
820
+ const sessionId = workspaceAccess.targetId(args, caller);
821
+ await workspaceAccess.authorizeTarget(ctx, caller, sessionId, exec.signal);
822
+ const trace = await serviceBoundary.call(ctx, exec.signal, "event trace", () => ctx.sessionQuery.traceEvent({
823
+ sessionId,
824
+ seq
825
+ }, exec.signal));
826
+ workspaceAccess.assertObservedTargetAuthorized(caller, sessionId, trace.session);
827
+ const title = await workspaceAccess.readTitle(ctx, caller, sessionId, exec.signal);
828
+ return presentation.formatEventTrace(sessionId, title, trace);
829
+ }
830
+ async function executeEventRead(ctx, args, exec) {
831
+ toolInput.assertNonNegativeSafeInteger("seq", args.seq);
832
+ const seq = SessionSeq(args.seq);
833
+ if (args.before !== void 0) toolInput.assertNonNegativeSafeInteger("before", args.before);
834
+ if (args.after !== void 0) toolInput.assertNonNegativeSafeInteger("after", args.after);
835
+ const caller = workspaceAccess.callerOf(exec, ctx);
836
+ const sessionId = workspaceAccess.targetId(args, caller);
837
+ await workspaceAccess.authorizeTarget(ctx, caller, sessionId, exec.signal);
838
+ const window = await serviceBoundary.call(ctx, exec.signal, "event read", () => ctx.sessionQuery.readEvent({
839
+ sessionId,
840
+ seq,
841
+ ...args.before === void 0 ? {} : { before: args.before },
842
+ ...args.after === void 0 ? {} : { after: args.after }
843
+ }, exec.signal));
844
+ workspaceAccess.assertObservedTargetAuthorized(caller, sessionId, window.session);
845
+ const title = await workspaceAccess.readTitle(ctx, caller, sessionId, exec.signal);
846
+ return presentation.formatEventRead(sessionId, title, window);
847
+ }
848
+ async function collectPages(maxResults, signal, request, accept) {
849
+ const items = [];
850
+ const seen = /* @__PURE__ */ new Set();
851
+ let cursor;
852
+ while (true) {
853
+ signal.throwIfAborted();
854
+ const page = await request(cursor);
855
+ signal.throwIfAborted();
856
+ for (const item of page.items) {
857
+ if (!accept(item)) continue;
858
+ if (items.length === maxResults) return {
859
+ items,
860
+ capped: true
861
+ };
862
+ items.push(item);
863
+ }
864
+ if (page.nextCursor === void 0) return {
865
+ items,
866
+ capped: false
867
+ };
868
+ if (seen.has(page.nextCursor)) throw new SessionQueryError("session-search provider repeated a continuation cursor", "SESSION_QUERY_INVALID_CURSOR");
869
+ seen.add(page.nextCursor);
870
+ cursor = page.nextCursor;
871
+ }
872
+ }
873
+ var operations = {
874
+ executeSessionSearch,
875
+ executeEventSearch,
876
+ executeSessionTrace,
877
+ executeEventTrace,
878
+ executeEventRead
879
+ };
880
+ var name = "tool-session-query";
881
+ var inject = [
882
+ "tools",
883
+ "systemPrompt",
884
+ "sessionQuery",
885
+ "sessionProjections"
886
+ ];
887
+ var DEFAULT_MAX_SEARCH_RESULTS = 100;
888
+ var DEFAULT_SEARCH_TIMEOUT_MS = 3e4;
889
+ var Config = z.object({
890
+ maxSearchResults: z.number().step(1).min(1).default(100),
891
+ searchTimeoutMs: z.number().step(1).min(1).max(MAX_TIMER_DELAY_MS).default(DEFAULT_SEARCH_TIMEOUT_MS)
892
+ });
893
+ var TEXT_OUTPUT = {
894
+ schema: { type: "string" },
895
+ render: (_args, value) => [{
896
+ type: "text",
897
+ text: value
898
+ }]
899
+ };
900
+ var PROMPT_TEXT = "Use session_search to find relevant work from prior sessions, or session_event_search to search earlier events in one session. Search results are cursor-free and workspace-scoped. Follow a useful hit with session_trace, session_event_trace, or session_event_read when you need lineage, relationships, or exact data.";
901
+ function apply(ctx, config) {
902
+ const resolved = resolveConfig(config);
903
+ ctx.systemPrompt.section({
904
+ name: "tool:session-query",
905
+ order: ctx.systemPrompt.getSectionOrder("TOOL_SESSION_QUERY"),
906
+ text: PROMPT_TEXT
907
+ });
908
+ ctx.tools.register(defineTool({
909
+ name: "session_search",
910
+ description: "Search prior sessions in the caller workspace and return the strongest matching event from each session.",
911
+ parameters: toolInput.sessionSearchParameters,
912
+ output: TEXT_OUTPUT,
913
+ timeoutMs: resolved.searchTimeoutMs,
914
+ execute: (args, exec) => operations.executeSessionSearch(ctx, args, exec, resolved.maxSearchResults),
915
+ presentCall: presentation.presentSessionSearchCall
916
+ }));
917
+ ctx.tools.register(defineTool({
918
+ name: "session_event_search",
919
+ description: "Search prior events in one authorized session; the current session excludes the step performing this call.",
920
+ parameters: toolInput.eventSearchParameters,
921
+ output: TEXT_OUTPUT,
922
+ timeoutMs: resolved.searchTimeoutMs,
923
+ execute: (args, exec) => operations.executeEventSearch(ctx, args, exec, resolved.maxSearchResults),
924
+ presentCall: presentation.presentEventSearchCall
925
+ }));
926
+ ctx.tools.register(defineTool({
927
+ name: "session_trace",
928
+ description: "Read the authorized session lineage around one session, including complete visible ancestor and descendant relationships.",
929
+ parameters: toolInput.targetSessionParameter,
930
+ output: TEXT_OUTPUT,
931
+ isConcurrencySafe: () => true,
932
+ execute: (args, exec) => operations.executeSessionTrace(ctx, args, exec),
933
+ presentCall: presentation.presentSessionTraceCall
934
+ }));
935
+ ctx.tools.register(defineTool({
936
+ name: "session_event_trace",
937
+ description: "Read every direct replacement and relationship to a cited source event for one event in an authorized session.",
938
+ parameters: {
939
+ ...toolInput.targetSessionParameter,
940
+ seq: {
941
+ type: "integer",
942
+ required: true,
943
+ description: "Target event sequence number."
944
+ }
945
+ },
946
+ output: TEXT_OUTPUT,
947
+ isConcurrencySafe: () => true,
948
+ execute: (args, exec) => operations.executeEventTrace(ctx, args, exec),
949
+ presentCall: (args) => presentation.presentEventTargetCall("Trace event", args)
950
+ }));
951
+ ctx.tools.register(defineTool({
952
+ name: "session_event_read",
953
+ description: "Read one full unabridged event and optional neighboring raw-event summaries from an authorized session.",
954
+ parameters: {
955
+ ...toolInput.targetSessionParameter,
956
+ seq: {
957
+ type: "integer",
958
+ required: true,
959
+ description: "Target event sequence number."
960
+ },
961
+ before: {
962
+ type: "integer",
963
+ description: "Number of preceding raw events to summarize. Omit for none."
964
+ },
965
+ after: {
966
+ type: "integer",
967
+ description: "Number of following raw events to summarize. Omit for none."
968
+ }
969
+ },
970
+ output: TEXT_OUTPUT,
971
+ isConcurrencySafe: () => true,
972
+ execute: (args, exec) => operations.executeEventRead(ctx, args, exec),
973
+ presentCall: (args) => presentation.presentEventTargetCall("Read event", args)
974
+ }));
975
+ }
976
+ function resolveConfig(config) {
977
+ const maxSearchResults = config.maxSearchResults ?? 100;
978
+ const searchTimeoutMs = config.searchTimeoutMs ?? 3e4;
979
+ if (!Number.isSafeInteger(maxSearchResults) || maxSearchResults < 1) throw new TypeError("tool-session-query: maxSearchResults must be a positive safe integer");
980
+ if (!Number.isInteger(searchTimeoutMs) || searchTimeoutMs < 1 || searchTimeoutMs > MAX_TIMER_DELAY_MS) throw new TypeError(`tool-session-query: searchTimeoutMs must be a positive integer no greater than ${MAX_TIMER_DELAY_MS}`);
981
+ return {
982
+ maxSearchResults,
983
+ searchTimeoutMs
984
+ };
985
+ }
986
+ export {
987
+ Config,
988
+ DEFAULT_MAX_SEARCH_RESULTS,
989
+ DEFAULT_SEARCH_TIMEOUT_MS,
990
+ apply,
991
+ inject,
992
+ name
993
+ };