@vibesdotdev/media 0.0.0-stage → 1.0.0-rc.4

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 (278) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +95 -2
  3. package/dist/analyzers/frame-guard.d.ts +6 -0
  4. package/dist/analyzers/frame-guard.d.ts.map +1 -0
  5. package/dist/analyzers/frame-guard.js +10 -0
  6. package/dist/analyzers/frame-guard.js.map +1 -0
  7. package/dist/analyzers/motion-math.d.ts +66 -0
  8. package/dist/analyzers/motion-math.d.ts.map +1 -0
  9. package/dist/analyzers/motion-math.js +356 -0
  10. package/dist/analyzers/motion-math.js.map +1 -0
  11. package/dist/analyzers/reference-motion-analyzer.impl.d.ts +23 -0
  12. package/dist/analyzers/reference-motion-analyzer.impl.d.ts.map +1 -0
  13. package/dist/analyzers/reference-motion-analyzer.impl.js +69 -0
  14. package/dist/analyzers/reference-motion-analyzer.impl.js.map +1 -0
  15. package/dist/analyzers/reference-motion.descriptor.d.ts +11 -0
  16. package/dist/analyzers/reference-motion.descriptor.d.ts.map +1 -0
  17. package/dist/analyzers/reference-motion.descriptor.js +21 -0
  18. package/dist/analyzers/reference-motion.descriptor.js.map +1 -0
  19. package/dist/capture-client.d.ts +34 -0
  20. package/dist/capture-client.d.ts.map +1 -0
  21. package/dist/capture-client.js +163 -0
  22. package/dist/capture-client.js.map +1 -0
  23. package/dist/config/media.uploads.config.descriptor.d.ts +27 -0
  24. package/dist/config/media.uploads.config.descriptor.d.ts.map +1 -0
  25. package/dist/config/media.uploads.config.descriptor.js +46 -0
  26. package/dist/config/media.uploads.config.descriptor.js.map +1 -0
  27. package/dist/config/uploads.d.ts +11 -0
  28. package/dist/config/uploads.d.ts.map +1 -0
  29. package/dist/config/uploads.js +25 -0
  30. package/dist/config/uploads.js.map +1 -0
  31. package/dist/docs/artifact-references.docs.descriptor.d.ts +4 -0
  32. package/dist/docs/artifact-references.docs.descriptor.d.ts.map +1 -0
  33. package/dist/docs/artifact-references.docs.descriptor.js +69 -0
  34. package/dist/docs/artifact-references.docs.descriptor.js.map +1 -0
  35. package/dist/docs/image-transform.docs.descriptor.d.ts +4 -0
  36. package/dist/docs/image-transform.docs.descriptor.d.ts.map +1 -0
  37. package/dist/docs/image-transform.docs.descriptor.js +52 -0
  38. package/dist/docs/image-transform.docs.descriptor.js.map +1 -0
  39. package/dist/index.d.ts +48 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +49 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/interfaces/capture-provider.d.ts +33 -0
  44. package/dist/interfaces/capture-provider.d.ts.map +1 -0
  45. package/dist/interfaces/capture-provider.js +10 -0
  46. package/dist/interfaces/capture-provider.js.map +1 -0
  47. package/dist/interfaces/image-transformer.d.ts +7 -0
  48. package/dist/interfaces/image-transformer.d.ts.map +1 -0
  49. package/dist/interfaces/image-transformer.js +2 -0
  50. package/dist/interfaces/image-transformer.js.map +1 -0
  51. package/dist/interfaces/index.d.ts +7 -0
  52. package/dist/interfaces/index.d.ts.map +1 -0
  53. package/dist/interfaces/index.js +5 -0
  54. package/dist/interfaces/index.js.map +1 -0
  55. package/dist/interfaces/motion-analyzer.d.ts +55 -0
  56. package/dist/interfaces/motion-analyzer.d.ts.map +1 -0
  57. package/dist/interfaces/motion-analyzer.js +14 -0
  58. package/dist/interfaces/motion-analyzer.js.map +1 -0
  59. package/dist/kinds/capture.d.ts +58 -0
  60. package/dist/kinds/capture.d.ts.map +1 -0
  61. package/dist/kinds/capture.js +34 -0
  62. package/dist/kinds/capture.js.map +1 -0
  63. package/dist/kinds/image-transform.d.ts +91 -0
  64. package/dist/kinds/image-transform.d.ts.map +1 -0
  65. package/dist/kinds/image-transform.js +12 -0
  66. package/dist/kinds/image-transform.js.map +1 -0
  67. package/dist/kinds/index.d.ts +10 -0
  68. package/dist/kinds/index.d.ts.map +1 -0
  69. package/dist/kinds/index.js +7 -0
  70. package/dist/kinds/index.js.map +1 -0
  71. package/dist/kinds/motion.d.ts +57 -0
  72. package/dist/kinds/motion.d.ts.map +1 -0
  73. package/dist/kinds/motion.js +34 -0
  74. package/dist/kinds/motion.js.map +1 -0
  75. package/dist/media.plugin.d.ts +23 -0
  76. package/dist/media.plugin.d.ts.map +1 -0
  77. package/dist/media.plugin.js +48 -0
  78. package/dist/media.plugin.js.map +1 -0
  79. package/dist/schemas/artifact-reference.d.ts +59 -0
  80. package/dist/schemas/artifact-reference.d.ts.map +1 -0
  81. package/dist/schemas/artifact-reference.js +77 -0
  82. package/dist/schemas/artifact-reference.js.map +1 -0
  83. package/dist/schemas/capture-descriptor.d.ts +71 -0
  84. package/dist/schemas/capture-descriptor.d.ts.map +1 -0
  85. package/dist/schemas/capture-descriptor.js +74 -0
  86. package/dist/schemas/capture-descriptor.js.map +1 -0
  87. package/dist/schemas/capture-options.d.ts +51 -0
  88. package/dist/schemas/capture-options.d.ts.map +1 -0
  89. package/dist/schemas/capture-options.js +68 -0
  90. package/dist/schemas/capture-options.js.map +1 -0
  91. package/dist/schemas/capture-parse.d.ts +10 -0
  92. package/dist/schemas/capture-parse.d.ts.map +1 -0
  93. package/dist/schemas/capture-parse.js +30 -0
  94. package/dist/schemas/capture-parse.js.map +1 -0
  95. package/dist/schemas/capture-state.d.ts +77 -0
  96. package/dist/schemas/capture-state.d.ts.map +1 -0
  97. package/dist/schemas/capture-state.js +25 -0
  98. package/dist/schemas/capture-state.js.map +1 -0
  99. package/dist/schemas/image-transform.d.ts +269 -0
  100. package/dist/schemas/image-transform.d.ts.map +1 -0
  101. package/dist/schemas/image-transform.js +161 -0
  102. package/dist/schemas/image-transform.js.map +1 -0
  103. package/dist/schemas/index.d.ts +20 -0
  104. package/dist/schemas/index.d.ts.map +1 -0
  105. package/dist/schemas/index.js +17 -0
  106. package/dist/schemas/index.js.map +1 -0
  107. package/dist/schemas/motion-analysis.d.ts +187 -0
  108. package/dist/schemas/motion-analysis.d.ts.map +1 -0
  109. package/dist/schemas/motion-analysis.js +213 -0
  110. package/dist/schemas/motion-analysis.js.map +1 -0
  111. package/dist/schemas/motion-descriptor.d.ts +53 -0
  112. package/dist/schemas/motion-descriptor.d.ts.map +1 -0
  113. package/dist/schemas/motion-descriptor.js +47 -0
  114. package/dist/schemas/motion-descriptor.js.map +1 -0
  115. package/dist/schemas/motion-frame.d.ts +63 -0
  116. package/dist/schemas/motion-frame.d.ts.map +1 -0
  117. package/dist/schemas/motion-frame.js +86 -0
  118. package/dist/schemas/motion-frame.js.map +1 -0
  119. package/dist/schemas/opaque-id.d.ts +10 -0
  120. package/dist/schemas/opaque-id.d.ts.map +1 -0
  121. package/dist/schemas/opaque-id.js +24 -0
  122. package/dist/schemas/opaque-id.js.map +1 -0
  123. package/dist/schemas/sharing-state.d.ts +43 -0
  124. package/dist/schemas/sharing-state.d.ts.map +1 -0
  125. package/dist/schemas/sharing-state.js +11 -0
  126. package/dist/schemas/sharing-state.js.map +1 -0
  127. package/dist/svelte/CaptureLoader.svelte +29 -0
  128. package/dist/svelte/CaptureLoader.svelte.d.ts +11 -0
  129. package/dist/svelte/CaptureLoader.svelte.d.ts.map +1 -0
  130. package/dist/svelte/CapturePanel.svelte +189 -0
  131. package/dist/svelte/CapturePanel.svelte.d.ts +12 -0
  132. package/dist/svelte/CapturePanel.svelte.d.ts.map +1 -0
  133. package/dist/svelte/MediaUploader.svelte +109 -0
  134. package/dist/svelte/MediaUploader.svelte.d.ts +5 -0
  135. package/dist/svelte/MediaUploader.svelte.d.ts.map +1 -0
  136. package/dist/svelte/capture-parse.d.ts +2 -0
  137. package/dist/svelte/capture-parse.d.ts.map +1 -0
  138. package/dist/svelte/capture-parse.js +1 -0
  139. package/dist/svelte/failure-message.d.ts +2 -0
  140. package/dist/svelte/failure-message.d.ts.map +1 -0
  141. package/dist/svelte/failure-message.js +1 -0
  142. package/dist/svelte/index.d.ts +8 -0
  143. package/dist/svelte/index.d.ts.map +1 -0
  144. package/dist/svelte/index.js +6 -0
  145. package/dist/svelte/runtime-log.d.ts +14 -0
  146. package/dist/svelte/runtime-log.d.ts.map +1 -0
  147. package/dist/svelte/runtime-log.js +19 -0
  148. package/dist/svelte/runtime.d.ts +9 -0
  149. package/dist/svelte/runtime.d.ts.map +1 -0
  150. package/dist/svelte/runtime.js +27 -0
  151. package/dist/svelte/sharing/README.md +38 -0
  152. package/dist/svelte/sharing/components/ShareButton.svelte +57 -0
  153. package/dist/svelte/sharing/components/ShareButton.svelte.d.ts +11 -0
  154. package/dist/svelte/sharing/components/ShareButton.svelte.d.ts.map +1 -0
  155. package/dist/svelte/sharing/components/ShareDialog.svelte +222 -0
  156. package/dist/svelte/sharing/components/ShareDialog.svelte.d.ts +8 -0
  157. package/dist/svelte/sharing/components/ShareDialog.svelte.d.ts.map +1 -0
  158. package/dist/svelte/sharing/components/ShareLoader.svelte +19 -0
  159. package/dist/svelte/sharing/components/ShareLoader.svelte.d.ts +7 -0
  160. package/dist/svelte/sharing/components/ShareLoader.svelte.d.ts.map +1 -0
  161. package/dist/svelte/sharing/index.d.ts +20 -0
  162. package/dist/svelte/sharing/index.d.ts.map +1 -0
  163. package/dist/svelte/sharing/index.js +19 -0
  164. package/dist/svelte/sharing/runtime.d.ts +44 -0
  165. package/dist/svelte/sharing/runtime.d.ts.map +1 -0
  166. package/dist/svelte/sharing/runtime.js +81 -0
  167. package/dist/svelte/sharing/state.svelte.d.ts +28 -0
  168. package/dist/svelte/sharing/state.svelte.d.ts.map +1 -0
  169. package/dist/svelte/sharing/state.svelte.js +101 -0
  170. package/dist/svelte/sharing/styles.css +8 -0
  171. package/dist/svelte/state.svelte.d.ts +38 -0
  172. package/dist/svelte/state.svelte.d.ts.map +1 -0
  173. package/dist/svelte/state.svelte.js +102 -0
  174. package/dist/svelte/styles.css +2 -0
  175. package/dist/svelte/uploader.d.ts +17 -0
  176. package/dist/svelte/uploader.d.ts.map +1 -0
  177. package/dist/svelte/uploader.js +9 -0
  178. package/dist/uploads/adapters/local/index.d.ts +9 -0
  179. package/dist/uploads/adapters/local/index.d.ts.map +1 -0
  180. package/dist/uploads/adapters/local/index.js +12 -0
  181. package/dist/uploads/adapters/local/index.js.map +1 -0
  182. package/dist/uploads/adapters/local/local-storage.descriptor.d.ts +24 -0
  183. package/dist/uploads/adapters/local/local-storage.descriptor.d.ts.map +1 -0
  184. package/dist/uploads/adapters/local/local-storage.descriptor.js +20 -0
  185. package/dist/uploads/adapters/local/local-storage.descriptor.js.map +1 -0
  186. package/dist/uploads/adapters/local/local-storage.impl.d.ts +123 -0
  187. package/dist/uploads/adapters/local/local-storage.impl.d.ts.map +1 -0
  188. package/dist/uploads/adapters/local/local-storage.impl.js +231 -0
  189. package/dist/uploads/adapters/local/local-storage.impl.js.map +1 -0
  190. package/dist/uploads/adapters/local/uploads-adapter-local.plugin.d.ts +9 -0
  191. package/dist/uploads/adapters/local/uploads-adapter-local.plugin.d.ts.map +1 -0
  192. package/dist/uploads/adapters/local/uploads-adapter-local.plugin.js +41 -0
  193. package/dist/uploads/adapters/local/uploads-adapter-local.plugin.js.map +1 -0
  194. package/dist/uploads/client/helper.d.ts +26 -0
  195. package/dist/uploads/client/helper.d.ts.map +1 -0
  196. package/dist/uploads/client/helper.js +27 -0
  197. package/dist/uploads/client/helper.js.map +1 -0
  198. package/dist/uploads/client/index.d.ts +11 -0
  199. package/dist/uploads/client/index.d.ts.map +1 -0
  200. package/dist/uploads/client/index.js +9 -0
  201. package/dist/uploads/client/index.js.map +1 -0
  202. package/dist/uploads/client/sharing-client.d.ts +45 -0
  203. package/dist/uploads/client/sharing-client.d.ts.map +1 -0
  204. package/dist/uploads/client/sharing-client.js +153 -0
  205. package/dist/uploads/client/sharing-client.js.map +1 -0
  206. package/dist/uploads/client/uploads-client.d.ts +200 -0
  207. package/dist/uploads/client/uploads-client.d.ts.map +1 -0
  208. package/dist/uploads/client/uploads-client.js +487 -0
  209. package/dist/uploads/client/uploads-client.js.map +1 -0
  210. package/dist/uploads/docs/uploads.docs.descriptor.d.ts +4 -0
  211. package/dist/uploads/docs/uploads.docs.descriptor.d.ts.map +1 -0
  212. package/dist/uploads/docs/uploads.docs.descriptor.js +65 -0
  213. package/dist/uploads/docs/uploads.docs.descriptor.js.map +1 -0
  214. package/dist/uploads/docs/uploads.share-links.docs.descriptor.d.ts +22 -0
  215. package/dist/uploads/docs/uploads.share-links.docs.descriptor.d.ts.map +1 -0
  216. package/dist/uploads/docs/uploads.share-links.docs.descriptor.js +86 -0
  217. package/dist/uploads/docs/uploads.share-links.docs.descriptor.js.map +1 -0
  218. package/dist/uploads/index.d.ts +12 -0
  219. package/dist/uploads/index.d.ts.map +1 -0
  220. package/dist/uploads/index.js +13 -0
  221. package/dist/uploads/index.js.map +1 -0
  222. package/dist/uploads/schemas/common.d.ts +135 -0
  223. package/dist/uploads/schemas/common.d.ts.map +1 -0
  224. package/dist/uploads/schemas/common.js +152 -0
  225. package/dist/uploads/schemas/common.js.map +1 -0
  226. package/dist/uploads/schemas/forms.d.ts +59 -0
  227. package/dist/uploads/schemas/forms.d.ts.map +1 -0
  228. package/dist/uploads/schemas/forms.js +41 -0
  229. package/dist/uploads/schemas/forms.js.map +1 -0
  230. package/dist/uploads/schemas/index.d.ts +18 -0
  231. package/dist/uploads/schemas/index.d.ts.map +1 -0
  232. package/dist/uploads/schemas/index.js +13 -0
  233. package/dist/uploads/schemas/index.js.map +1 -0
  234. package/dist/uploads/schemas/records.d.ts +81 -0
  235. package/dist/uploads/schemas/records.d.ts.map +1 -0
  236. package/dist/uploads/schemas/records.js +82 -0
  237. package/dist/uploads/schemas/records.js.map +1 -0
  238. package/dist/uploads/schemas/requests.d.ts +32 -0
  239. package/dist/uploads/schemas/requests.d.ts.map +1 -0
  240. package/dist/uploads/schemas/requests.js +30 -0
  241. package/dist/uploads/schemas/requests.js.map +1 -0
  242. package/dist/uploads/schemas/shares.d.ts +67 -0
  243. package/dist/uploads/schemas/shares.d.ts.map +1 -0
  244. package/dist/uploads/schemas/shares.js +39 -0
  245. package/dist/uploads/schemas/shares.js.map +1 -0
  246. package/dist/uploads/server/backend.d.ts +8 -0
  247. package/dist/uploads/server/backend.d.ts.map +1 -0
  248. package/dist/uploads/server/backend.js +11 -0
  249. package/dist/uploads/server/backend.js.map +1 -0
  250. package/dist/uploads/server/config.d.ts +5 -0
  251. package/dist/uploads/server/config.d.ts.map +1 -0
  252. package/dist/uploads/server/config.js +38 -0
  253. package/dist/uploads/server/config.js.map +1 -0
  254. package/dist/uploads/server/service.d.ts +77 -0
  255. package/dist/uploads/server/service.d.ts.map +1 -0
  256. package/dist/uploads/server/service.js +152 -0
  257. package/dist/uploads/server/service.js.map +1 -0
  258. package/dist/uploads/server/storage-client.d.ts +11 -0
  259. package/dist/uploads/server/storage-client.d.ts.map +1 -0
  260. package/dist/uploads/server/storage-client.js +23 -0
  261. package/dist/uploads/server/storage-client.js.map +1 -0
  262. package/dist/uploads/server/storage.d.ts +40 -0
  263. package/dist/uploads/server/storage.d.ts.map +1 -0
  264. package/dist/uploads/server/storage.js +59 -0
  265. package/dist/uploads/server/storage.js.map +1 -0
  266. package/dist/uploads/uploads.plugin.d.ts +11 -0
  267. package/dist/uploads/uploads.plugin.d.ts.map +1 -0
  268. package/dist/uploads/uploads.plugin.js +89 -0
  269. package/dist/uploads/uploads.plugin.js.map +1 -0
  270. package/dist/utils/attempt.d.ts +27 -0
  271. package/dist/utils/attempt.d.ts.map +1 -0
  272. package/dist/utils/attempt.js +39 -0
  273. package/dist/utils/attempt.js.map +1 -0
  274. package/dist/utils/failure-message.d.ts +8 -0
  275. package/dist/utils/failure-message.d.ts.map +1 -0
  276. package/dist/utils/failure-message.js +28 -0
  277. package/dist/utils/failure-message.js.map +1 -0
  278. package/package.json +257 -4
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @vibesdotdev/media
3
+ *
4
+ * Universal media contracts: stable artifact revision identity plus runtime
5
+ * kinds for capture, image transformation, and motion. Pure TypeScript: no FS,
6
+ * no native deps, no SvelteKit. Owners resolve artifact references; providers
7
+ * implement environment capabilities.
8
+ *
9
+ * @example Provider package declares a capture surface:
10
+ * ```ts
11
+ * // bridge/src/media/bridge.screen.descriptor.ts
12
+ * import { createRuntimeAsset } from '@vibesdotdev/kernel/factory';
13
+ *
14
+ * export default createRuntimeAsset({
15
+ * kind: 'media/capture',
16
+ * id: 'bridge.screen',
17
+ * surface: 'screen',
18
+ * hardware: ['consumer'],
19
+ * enabled: true
20
+ * });
21
+ * ```
22
+ *
23
+ * @example Consumer resolves a provider and captures:
24
+ * ```ts
25
+ * import type { CaptureProvider } from '@vibesdotdev/media';
26
+ *
27
+ * const provider = (await runtime
28
+ * .query('media/capture')
29
+ * .withId('bridge.screen')
30
+ * .resolve()) as CaptureProvider;
31
+ *
32
+ * const shot = await provider.capture({ format: 'png' });
33
+ * // shot.data is Uint8Array, shot.format === 'png'
34
+ * ```
35
+ */
36
+ export { default as mediaPlugin } from './media.plugin.ts';
37
+ export { OpaqueMediaIdSchema } from './schemas/opaque-id.ts';
38
+ export { MediaArtifactTypeSchema, MediaArtifactOwnerSchema, MediaArtifactReferenceSchema, createMediaArtifactReference, CaptureSurfaceSchema, CaptureHardwareSchema, CaptureFormatSchema, CaptureDescriptorSchema, CaptureOptionsSchema, CaptureResultSchema, CaptureSourceSchema, ImageDecodeFormatSchema, ImageEncodeFormatSchema, ImageTransformOperationSchema, ImageResizeFilterSchema, ImageTransformStabilitySchema, ImagePlatformDependentFormatsSchema, ImageTransformDescriptorSchema, ImageResizeSchema, ImageOutputSchema, ImageTransformRequestSchema, ImageTransformResultSchema } from './schemas/index.ts';
39
+ export type { MediaArtifactType, MediaArtifactOwner, MediaArtifactReference, CaptureSurface, CaptureHardware, CaptureFormat, CaptureDescriptor, CaptureOptions, CaptureResult, CaptureSource, ImageDecodeFormat, ImageEncodeFormat, ImageTransformOperation, ImageResizeFilter, ImageTransformStability, ImagePlatformDependentFormats, ImageTransformDescriptor, ImageResize, ImageOutput, ImageTransformRequest, ParsedImageTransformRequest, ImageTransformResult } from './schemas/index.ts';
40
+ export type { CaptureProvider, ImageTransformer } from './interfaces/index.ts';
41
+ export { MEDIA_CAPTURE_KIND_ID, MEDIA_IMAGE_TRANSFORM_KIND_ID } from './kinds/index.ts';
42
+ export { FrameSchema, FrameSequenceSchema, PixelBufferSchema, FrameChannelsSchema, MotionAnalyzerDescriptorSchema, MotionCapabilitySchema, MotionHardwareSchema, RegionSchema, FrameDiffOptionsSchema, FrameDiffResultSchema, TemporalStatsOptionsSchema, TemporalStatsResultSchema, OpticalFlowOptionsSchema, OpticalFlowResultSchema, FlowVectorSchema, MotionDirectionSchema, MotionEnergyOptionsSchema, MotionEnergyResultSchema, DirectionStrengthSchema, MotionVerdictSchema, MotionSummaryOptionsSchema, MotionSummarySchema } from './schemas/index.ts';
43
+ export type { Frame, FrameSequence, PixelBuffer, FrameChannels, MotionAnalyzerDescriptor, MotionCapability, MotionHardware, Region, FrameDiffOptions, FrameDiffResult, TemporalStatsOptions, TemporalStatsResult, OpticalFlowOptions, OpticalFlowResult, FlowVector, MotionDirection, MotionEnergyOptions, MotionEnergyResult, DirectionStrength, MotionVerdict, MotionSummaryOptions, MotionSummary } from './schemas/index.ts';
44
+ export type { MotionAnalyzer } from './interfaces/index.ts';
45
+ export { MEDIA_MOTION_KIND_ID, MEDIA_MOTION_REFERENCE_ID } from './kinds/index.ts';
46
+ export { MediaCaptureClient } from './capture-client.ts';
47
+ export type { CaptureSession } from './capture-client.ts';
48
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EACN,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,6BAA6B,EAC7B,uBAAuB,EACvB,6BAA6B,EAC7B,mCAAmC,EACnC,8BAA8B,EAC9B,iBAAiB,EACjB,iBAAiB,EACjB,2BAA2B,EAC3B,0BAA0B,EAC1B,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACX,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,6BAA6B,EAC7B,wBAAwB,EACxB,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,2BAA2B,EAC3B,oBAAoB,EACpB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG/E,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAKxF,OAAO,EACN,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,8BAA8B,EAC9B,sBAAsB,EACtB,oBAAoB,EACpB,YAAY,EACZ,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACX,KAAK,EACL,aAAa,EACb,WAAW,EACX,aAAa,EACb,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,MAAM,EACN,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAEnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @vibesdotdev/media
3
+ *
4
+ * Universal media contracts: stable artifact revision identity plus runtime
5
+ * kinds for capture, image transformation, and motion. Pure TypeScript: no FS,
6
+ * no native deps, no SvelteKit. Owners resolve artifact references; providers
7
+ * implement environment capabilities.
8
+ *
9
+ * @example Provider package declares a capture surface:
10
+ * ```ts
11
+ * // bridge/src/media/bridge.screen.descriptor.ts
12
+ * import { createRuntimeAsset } from '@vibesdotdev/kernel/factory';
13
+ *
14
+ * export default createRuntimeAsset({
15
+ * kind: 'media/capture',
16
+ * id: 'bridge.screen',
17
+ * surface: 'screen',
18
+ * hardware: ['consumer'],
19
+ * enabled: true
20
+ * });
21
+ * ```
22
+ *
23
+ * @example Consumer resolves a provider and captures:
24
+ * ```ts
25
+ * import type { CaptureProvider } from '@vibesdotdev/media';
26
+ *
27
+ * const provider = (await runtime
28
+ * .query('media/capture')
29
+ * .withId('bridge.screen')
30
+ * .resolve()) as CaptureProvider;
31
+ *
32
+ * const shot = await provider.capture({ format: 'png' });
33
+ * // shot.data is Uint8Array, shot.format === 'png'
34
+ * ```
35
+ */
36
+ // Plugin
37
+ export { default as mediaPlugin } from "./media.plugin.js";
38
+ // Schemas
39
+ export { OpaqueMediaIdSchema } from "./schemas/opaque-id.js";
40
+ export { MediaArtifactTypeSchema, MediaArtifactOwnerSchema, MediaArtifactReferenceSchema, createMediaArtifactReference, CaptureSurfaceSchema, CaptureHardwareSchema, CaptureFormatSchema, CaptureDescriptorSchema, CaptureOptionsSchema, CaptureResultSchema, CaptureSourceSchema, ImageDecodeFormatSchema, ImageEncodeFormatSchema, ImageTransformOperationSchema, ImageResizeFilterSchema, ImageTransformStabilitySchema, ImagePlatformDependentFormatsSchema, ImageTransformDescriptorSchema, ImageResizeSchema, ImageOutputSchema, ImageTransformRequestSchema, ImageTransformResultSchema } from "./schemas/index.js";
41
+ // Kind constant
42
+ export { MEDIA_CAPTURE_KIND_ID, MEDIA_IMAGE_TRANSFORM_KIND_ID } from "./kinds/index.js";
43
+ // ── Motion perception (`media/motion`) ──────────────────────────────────────
44
+ // Motion schemas
45
+ export { FrameSchema, FrameSequenceSchema, PixelBufferSchema, FrameChannelsSchema, MotionAnalyzerDescriptorSchema, MotionCapabilitySchema, MotionHardwareSchema, RegionSchema, FrameDiffOptionsSchema, FrameDiffResultSchema, TemporalStatsOptionsSchema, TemporalStatsResultSchema, OpticalFlowOptionsSchema, OpticalFlowResultSchema, FlowVectorSchema, MotionDirectionSchema, MotionEnergyOptionsSchema, MotionEnergyResultSchema, DirectionStrengthSchema, MotionVerdictSchema, MotionSummaryOptionsSchema, MotionSummarySchema } from "./schemas/index.js";
46
+ // Motion kind constants
47
+ export { MEDIA_MOTION_KIND_ID, MEDIA_MOTION_REFERENCE_ID } from "./kinds/index.js";
48
+ export { MediaCaptureClient } from "./capture-client.js";
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,SAAS;AACT,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE3D,UAAU;AACV,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EACN,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,6BAA6B,EAC7B,uBAAuB,EACvB,6BAA6B,EAC7B,mCAAmC,EACnC,8BAA8B,EAC9B,iBAAiB,EACjB,iBAAiB,EACjB,2BAA2B,EAC3B,0BAA0B,EAC1B,MAAM,oBAAoB,CAAC;AA8B5B,gBAAgB;AAChB,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAExF,+EAA+E;AAE/E,iBAAiB;AACjB,OAAO,EACN,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,8BAA8B,EAC9B,sBAAsB,EACtB,oBAAoB,EACpB,YAAY,EACZ,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,MAAM,oBAAoB,CAAC;AA8B5B,wBAAwB;AACxB,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAEnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * CaptureProvider Interface
3
+ *
4
+ * The contract every `media/capture` implementation must satisfy. The
5
+ * runtime resolves implementations from descriptors of kind
6
+ * `media/capture`; consumers obtain a `CaptureProvider` via
7
+ * `runtime.query('media/capture').withId(...).resolve()`.
8
+ */
9
+ import type { CaptureOptions, CaptureResult, CaptureSource } from '../schemas/capture-options.ts';
10
+ /**
11
+ * Provider for a single capturable surface.
12
+ *
13
+ * An implementation owns one descriptor (one `id`, one `surface`). When a
14
+ * caller has access to multiple displays / cameras / mics, the provider's
15
+ * `listSources()` enumerates them and `capture({ sourceId })` selects one.
16
+ */
17
+ export interface CaptureProvider {
18
+ /**
19
+ * Capture a single frame / clip / snapshot from this provider.
20
+ *
21
+ * Throws on hard failures (no permission, native bridge unreachable,
22
+ * unsupported format requested for this surface). Successful captures
23
+ * return the encoded payload plus metadata.
24
+ */
25
+ capture(options?: CaptureOptions): Promise<CaptureResult>;
26
+ /**
27
+ * Enumerate the sources this provider can capture from. May return an
28
+ * empty list when the underlying system has no sources of this kind
29
+ * (e.g. no displays attached on a headless box).
30
+ */
31
+ listSources(): Promise<CaptureSource[]>;
32
+ }
33
+ //# sourceMappingURL=capture-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-provider.d.ts","sourceRoot":"","sources":["../../src/interfaces/capture-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACX,cAAc,EACd,aAAa,EACb,aAAa,EACb,MAAM,+BAA+B,CAAC;AAEvC;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC/B;;;;;;OAMG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAE1D;;;;OAIG;IACH,WAAW,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CACxC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * CaptureProvider Interface
3
+ *
4
+ * The contract every `media/capture` implementation must satisfy. The
5
+ * runtime resolves implementations from descriptors of kind
6
+ * `media/capture`; consumers obtain a `CaptureProvider` via
7
+ * `runtime.query('media/capture').withId(...).resolve()`.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=capture-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-provider.js","sourceRoot":"","sources":["../../src/interfaces/capture-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,7 @@
1
+ import type { ImageTransformRequest, ImageTransformResult } from '../schemas/image-transform.ts';
2
+ /** Runtime implementation contract for `media/image-transform`. */
3
+ export interface ImageTransformer {
4
+ readonly id: string;
5
+ transform(request: ImageTransformRequest): Promise<ImageTransformResult>;
6
+ }
7
+ //# sourceMappingURL=image-transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-transformer.d.ts","sourceRoot":"","sources":["../../src/interfaces/image-transformer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,qBAAqB,EACrB,oBAAoB,EACpB,MAAM,+BAA+B,CAAC;AAEvC,mEAAmE;AACnE,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACzE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=image-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-transformer.js","sourceRoot":"","sources":["../../src/interfaces/image-transformer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Media Interfaces
3
+ */
4
+ export type { CaptureProvider } from './capture-provider.ts';
5
+ export type { MotionAnalyzer } from './motion-analyzer.ts';
6
+ export type { ImageTransformer } from './image-transformer.ts';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Media Interfaces
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * MotionAnalyzer Interface
3
+ *
4
+ * The contract every `media/motion` implementation satisfies. Consumers
5
+ * obtain a `MotionAnalyzer` via
6
+ * `runtime.query('media/motion').withId('media.motion.reference').resolve()`
7
+ * and feed it decoded frame sequences.
8
+ *
9
+ * Methods are async by contract even though the reference provider computes
10
+ * synchronously — that leaves room for a provider to offload to a worker,
11
+ * WASM module, or native/GPU backend without changing consumer code.
12
+ */
13
+ import type { Frame } from '../schemas/motion-frame.ts';
14
+ import type { FrameDiffOptions, FrameDiffResult, TemporalStatsOptions, TemporalStatsResult, OpticalFlowOptions, OpticalFlowResult, MotionEnergyOptions, MotionEnergyResult, MotionSummaryOptions, MotionSummary } from '../schemas/motion-analysis.ts';
15
+ export interface MotionAnalyzer {
16
+ /**
17
+ * Absolute luma difference between two frames — "what changed between these
18
+ * two screenshots". Returns overall magnitude, the fraction of pixels that
19
+ * changed, and a bounding box of the changed region.
20
+ */
21
+ frameDiff(a: Frame, b: Frame, options?: FrameDiffOptions): Promise<FrameDiffResult>;
22
+ /**
23
+ * Per-pixel temporal mean + standard deviation over a sequence. The std map
24
+ * is the cheapest "does anything vary here" signal and needs no motion
25
+ * model — it already leaks a ghost of hidden temporal structure.
26
+ *
27
+ * Requires at least two frames; throws otherwise.
28
+ */
29
+ temporalStats(frames: Frame[], options?: TemporalStatsOptions): Promise<TemporalStatsResult>;
30
+ /**
31
+ * Block-matching optical flow between two frames — "what moved and where",
32
+ * as a coarse grid of displacement vectors plus confidence-weighted means.
33
+ */
34
+ opticalFlow(a: Frame, b: Frame, options?: OpticalFlowOptions): Promise<OpticalFlowResult>;
35
+ /**
36
+ * Reichardt / lag-1 opponent motion energy over a sequence. Separates
37
+ * coherently drifting structure (high `coherence`, a clear dominant
38
+ * direction) from temporally independent twinkle (coherence ≈ 0) — the
39
+ * exact asymmetry a motion-carrier scheme exploits and that naive
40
+ * frame-sampling pipelines miss.
41
+ *
42
+ * Requires at least two frames; throws otherwise.
43
+ */
44
+ motionEnergy(frames: Frame[], options?: MotionEnergyOptions): Promise<MotionEnergyResult>;
45
+ /**
46
+ * Compact classification of a whole sequence — `static`,
47
+ * `coherent-motion`, or `incoherent-change` — with the supporting scalars.
48
+ * Composed from the primitives above; the payload a vision model or planner
49
+ * consumes instead of raw maps.
50
+ *
51
+ * Requires at least two frames; throws otherwise.
52
+ */
53
+ summarize(frames: Frame[], options?: MotionSummaryOptions): Promise<MotionSummary>;
54
+ }
55
+ //# sourceMappingURL=motion-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motion-analyzer.d.ts","sourceRoot":"","sources":["../../src/interfaces/motion-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EACX,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,cAAc;IAC9B;;;;OAIG;IACH,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAEpF;;;;;;OAMG;IACH,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAE7F;;;OAGG;IACH,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE1F;;;;;;;;OAQG;IACH,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE1F;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACnF"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * MotionAnalyzer Interface
3
+ *
4
+ * The contract every `media/motion` implementation satisfies. Consumers
5
+ * obtain a `MotionAnalyzer` via
6
+ * `runtime.query('media/motion').withId('media.motion.reference').resolve()`
7
+ * and feed it decoded frame sequences.
8
+ *
9
+ * Methods are async by contract even though the reference provider computes
10
+ * synchronously — that leaves room for a provider to offload to a worker,
11
+ * WASM module, or native/GPU backend without changing consumer code.
12
+ */
13
+ export {};
14
+ //# sourceMappingURL=motion-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motion-analyzer.js","sourceRoot":"","sources":["../../src/interfaces/motion-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * `media/capture` Kind
3
+ *
4
+ * Runtime-kind definition for capturable media providers. Descriptors are
5
+ * resolved by `id` and filtered by `hardware` scope; surface is metadata
6
+ * for consumers to filter on but not part of resolution.
7
+ */
8
+ import { type CaptureDescriptor } from '../schemas/capture-descriptor.ts';
9
+ import type { CaptureProvider } from '../interfaces/capture-provider.ts';
10
+ /**
11
+ * Kind id consumers pass to `runtime.query()`.
12
+ */
13
+ export declare const MEDIA_CAPTURE_KIND_ID: "media/capture";
14
+ /**
15
+ * Runtime-kind shape for `media/capture`.
16
+ *
17
+ * Resolution strategy: filter candidates to those whose `hardware` list
18
+ * includes the active scope's hardware. Prefer descriptors that explicitly
19
+ * declare the requested hardware over those that omit it. If multiple
20
+ * candidates remain, pick the first — callers should disambiguate by `id`
21
+ * via `runtime.query('media/capture').withId('...')`.
22
+ */
23
+ export declare const mediaCaptureKind: {
24
+ id: "media/capture";
25
+ descriptorSchema: import("zod/v4").ZodObject<{
26
+ id: import("zod/v4").ZodString;
27
+ name: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
28
+ description: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
29
+ tags: import("zod/v4").ZodOptional<import("zod/v4").ZodArray<import("zod/v4").ZodString>>;
30
+ priority: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
31
+ capabilityId: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
32
+ requiredContext: import("zod/v4").ZodOptional<import("zod/v4").ZodArray<import("zod/v4").ZodString>>;
33
+ optionalContext: import("zod/v4").ZodOptional<import("zod/v4").ZodArray<import("zod/v4").ZodString>>;
34
+ config: import("zod/v4").ZodOptional<import("zod/v4").ZodUnknown>;
35
+ retention: import("zod/v4").ZodOptional<import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodString, import("zod/v4").ZodObject<{
36
+ maxAgeDays: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
37
+ maxEntries: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
38
+ maxBytes: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
39
+ cascadeFrom: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
40
+ ageField: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
41
+ reason: import("zod/v4").ZodString;
42
+ enforcedBy: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
43
+ }, import("zod/v4/core").$strip>]>>;
44
+ kind: import("zod/v4").ZodLiteral<"media/capture">;
45
+ surface: import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodLiteral<"screen">, import("zod/v4").ZodLiteral<"camera">, import("zod/v4").ZodLiteral<"microphone-snapshot">, import("zod/v4").ZodString]>;
46
+ hardware: import("zod/v4").ZodArray<import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodLiteral<"consumer">, import("zod/v4").ZodLiteral<"cloud">, import("zod/v4").ZodString]>>;
47
+ enabled: import("zod/v4").ZodDefault<import("zod/v4").ZodBoolean>;
48
+ }, import("zod/v4/core").$strip>;
49
+ resolve(candidates: CaptureDescriptor[], scope: {
50
+ hardware: string;
51
+ }): CaptureDescriptor | undefined;
52
+ };
53
+ /**
54
+ * Type re-export so consumers can `import type { CaptureProvider } from
55
+ * '@vibesdotdev/media/kinds/capture'` if they want kind-co-located types.
56
+ */
57
+ export type { CaptureProvider };
58
+ //# sourceMappingURL=capture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/kinds/capture.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACnG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAG,eAAwB,CAAC;AAE9D;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;wBAIR,iBAAiB,EAAE,SAAS;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,iBAAiB,GAAG,SAAS;CAMpG,CAAC;AAEF;;;GAGG;AACH,YAAY,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * `media/capture` Kind
3
+ *
4
+ * Runtime-kind definition for capturable media providers. Descriptors are
5
+ * resolved by `id` and filtered by `hardware` scope; surface is metadata
6
+ * for consumers to filter on but not part of resolution.
7
+ */
8
+ import { CaptureDescriptorSchema } from "../schemas/capture-descriptor.js";
9
+ /**
10
+ * Kind id consumers pass to `runtime.query()`.
11
+ */
12
+ export const MEDIA_CAPTURE_KIND_ID = 'media/capture';
13
+ /**
14
+ * Runtime-kind shape for `media/capture`.
15
+ *
16
+ * Resolution strategy: filter candidates to those whose `hardware` list
17
+ * includes the active scope's hardware. Prefer descriptors that explicitly
18
+ * declare the requested hardware over those that omit it. If multiple
19
+ * candidates remain, pick the first — callers should disambiguate by `id`
20
+ * via `runtime.query('media/capture').withId('...')`.
21
+ */
22
+ export const mediaCaptureKind = {
23
+ id: MEDIA_CAPTURE_KIND_ID,
24
+ descriptorSchema: CaptureDescriptorSchema,
25
+ resolve(candidates, scope) {
26
+ if (candidates.length === 0)
27
+ return undefined;
28
+ const matching = candidates.filter((d) => d.hardware.includes(scope.hardware));
29
+ if (matching.length === 0)
30
+ return undefined;
31
+ return matching[0];
32
+ }
33
+ };
34
+ //# sourceMappingURL=capture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/kinds/capture.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,uBAAuB,EAA0B,MAAM,kCAAkC,CAAC;AAGnG;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,eAAwB,CAAC;AAE9D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC/B,EAAE,EAAE,qBAAqB;IACzB,gBAAgB,EAAE,uBAAuB;IAEzC,OAAO,CAAC,UAA+B,EAAE,KAA2B;QACnE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC9C,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5C,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;CACD,CAAC"}
@@ -0,0 +1,91 @@
1
+ import { type ImageTransformDescriptor } from '../schemas/image-transform.ts';
2
+ import type { ImageTransformer } from '../interfaces/image-transformer.ts';
3
+ export declare const MEDIA_IMAGE_TRANSFORM_KIND_ID: "media/image-transform";
4
+ export declare const mediaImageTransformKind: {
5
+ id: "media/image-transform";
6
+ descriptorSchema: import("zod/v4").ZodObject<{
7
+ id: import("zod/v4").ZodString;
8
+ name: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
9
+ description: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
10
+ tags: import("zod/v4").ZodOptional<import("zod/v4").ZodArray<import("zod/v4").ZodString>>;
11
+ capabilityId: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
12
+ requiredContext: import("zod/v4").ZodOptional<import("zod/v4").ZodArray<import("zod/v4").ZodString>>;
13
+ optionalContext: import("zod/v4").ZodOptional<import("zod/v4").ZodArray<import("zod/v4").ZodString>>;
14
+ config: import("zod/v4").ZodOptional<import("zod/v4").ZodUnknown>;
15
+ retention: import("zod/v4").ZodOptional<import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodString, import("zod/v4").ZodObject<{
16
+ maxAgeDays: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
17
+ maxEntries: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
18
+ maxBytes: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
19
+ cascadeFrom: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
20
+ ageField: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
21
+ reason: import("zod/v4").ZodString;
22
+ enforcedBy: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
23
+ }, import("zod/v4/core").$strip>]>>;
24
+ kind: import("zod/v4").ZodLiteral<"media/image-transform">;
25
+ decodeFormats: import("zod/v4").ZodArray<import("zod/v4").ZodEnum<{
26
+ png: "png";
27
+ jpeg: "jpeg";
28
+ webp: "webp";
29
+ heic: "heic";
30
+ avif: "avif";
31
+ bmp: "bmp";
32
+ tiff: "tiff";
33
+ gif: "gif";
34
+ }>>;
35
+ encodeFormats: import("zod/v4").ZodArray<import("zod/v4").ZodEnum<{
36
+ png: "png";
37
+ jpeg: "jpeg";
38
+ webp: "webp";
39
+ heic: "heic";
40
+ avif: "avif";
41
+ }>>;
42
+ platformDependentFormats: import("zod/v4").ZodDefault<import("zod/v4").ZodObject<{
43
+ decode: import("zod/v4").ZodDefault<import("zod/v4").ZodArray<import("zod/v4").ZodEnum<{
44
+ png: "png";
45
+ jpeg: "jpeg";
46
+ webp: "webp";
47
+ heic: "heic";
48
+ avif: "avif";
49
+ bmp: "bmp";
50
+ tiff: "tiff";
51
+ gif: "gif";
52
+ }>>>;
53
+ encode: import("zod/v4").ZodDefault<import("zod/v4").ZodArray<import("zod/v4").ZodEnum<{
54
+ png: "png";
55
+ jpeg: "jpeg";
56
+ webp: "webp";
57
+ heic: "heic";
58
+ avif: "avif";
59
+ }>>>;
60
+ }, import("zod/v4/core").$strip>>;
61
+ operations: import("zod/v4").ZodArray<import("zod/v4").ZodEnum<{
62
+ rotate: "rotate";
63
+ "auto-orient": "auto-orient";
64
+ resize: "resize";
65
+ flip: "flip";
66
+ flop: "flop";
67
+ modulate: "modulate";
68
+ }>>;
69
+ hardware: import("zod/v4").ZodArray<import("zod/v4").ZodString>;
70
+ stability: import("zod/v4").ZodEnum<{
71
+ stable: "stable";
72
+ experimental: "experimental";
73
+ }>;
74
+ preservesIccProfileFor: import("zod/v4").ZodDefault<import("zod/v4").ZodArray<import("zod/v4").ZodEnum<{
75
+ png: "png";
76
+ jpeg: "jpeg";
77
+ webp: "webp";
78
+ heic: "heic";
79
+ avif: "avif";
80
+ }>>>;
81
+ maxInputBytes: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
82
+ maxPixels: import("zod/v4").ZodNumber;
83
+ priority: import("zod/v4").ZodDefault<import("zod/v4").ZodNumber>;
84
+ enabled: import("zod/v4").ZodDefault<import("zod/v4").ZodBoolean>;
85
+ }, import("zod/v4/core").$strip>;
86
+ resolve(candidates: ImageTransformDescriptor[], scope: {
87
+ hardware: string;
88
+ }): ImageTransformDescriptor | undefined;
89
+ };
90
+ export type { ImageTransformer };
91
+ //# sourceMappingURL=image-transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-transform.d.ts","sourceRoot":"","sources":["../../src/kinds/image-transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,wBAAwB,EAC7B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,eAAO,MAAM,6BAA6B,EAAG,uBAAgC,CAAC;AAE9E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAKtB,wBAAwB,EAAE,SAC/B;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GACzB,wBAAwB,GAAG,SAAS;CAKvC,CAAC;AAEF,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { ImageTransformDescriptorSchema } from "../schemas/image-transform.js";
2
+ export const MEDIA_IMAGE_TRANSFORM_KIND_ID = 'media/image-transform';
3
+ export const mediaImageTransformKind = {
4
+ id: MEDIA_IMAGE_TRANSFORM_KIND_ID,
5
+ descriptorSchema: ImageTransformDescriptorSchema,
6
+ resolve(candidates, scope) {
7
+ return candidates
8
+ .filter((descriptor) => descriptor.enabled && descriptor.hardware.includes(scope.hardware))
9
+ .sort((left, right) => right.priority - left.priority)[0];
10
+ }
11
+ };
12
+ //# sourceMappingURL=image-transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-transform.js","sourceRoot":"","sources":["../../src/kinds/image-transform.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,8BAA8B,EAE9B,MAAM,+BAA+B,CAAC;AAGvC,MAAM,CAAC,MAAM,6BAA6B,GAAG,uBAAgC,CAAC;AAE9E,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACtC,EAAE,EAAE,6BAA6B;IACjC,gBAAgB,EAAE,8BAA8B;IAEhD,OAAO,CACN,UAAsC,EACtC,KAA2B;QAE3B,OAAO,UAAU;aACf,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;aAC1F,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;CACD,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Media Kinds
3
+ */
4
+ export { mediaCaptureKind, MEDIA_CAPTURE_KIND_ID } from './capture.ts';
5
+ export type { CaptureProvider } from './capture.ts';
6
+ export { mediaMotionKind, MEDIA_MOTION_KIND_ID, MEDIA_MOTION_REFERENCE_ID } from './motion.ts';
7
+ export type { MotionAnalyzer } from './motion.ts';
8
+ export { mediaImageTransformKind, MEDIA_IMAGE_TRANSFORM_KIND_ID } from './image-transform.ts';
9
+ export type { ImageTransformer } from './image-transform.ts';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kinds/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACvE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EACN,eAAe,EACf,oBAAoB,EACpB,yBAAyB,EACzB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAC9F,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Media Kinds
3
+ */
4
+ export { mediaCaptureKind, MEDIA_CAPTURE_KIND_ID } from "./capture.js";
5
+ export { mediaMotionKind, MEDIA_MOTION_KIND_ID, MEDIA_MOTION_REFERENCE_ID } from "./motion.js";
6
+ export { mediaImageTransformKind, MEDIA_IMAGE_TRANSFORM_KIND_ID } from "./image-transform.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/kinds/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAGvE,OAAO,EACN,eAAe,EACf,oBAAoB,EACpB,yBAAyB,EACzB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * `media/motion` Kind
3
+ *
4
+ * Runtime-kind definition for temporal-perception providers. Descriptors are
5
+ * resolved by `id` and filtered by `hardware` scope, mirroring `media/capture`.
6
+ * The reference provider (pure TS) declares both `consumer` and `cloud`, so a
7
+ * bare `runtime.query('media/motion')` resolves it in any scope; an accelerated
8
+ * provider registered for a narrower scope wins there.
9
+ */
10
+ import { type MotionAnalyzerDescriptor } from '../schemas/motion-descriptor.ts';
11
+ import type { MotionAnalyzer } from '../interfaces/motion-analyzer.ts';
12
+ /** Kind id consumers pass to `runtime.query()`. */
13
+ export declare const MEDIA_MOTION_KIND_ID: "media/motion";
14
+ /** Id of the built-in pure-TS reference analyzer that ships with this package. */
15
+ export declare const MEDIA_MOTION_REFERENCE_ID: "media.motion.reference";
16
+ /**
17
+ * Runtime-kind shape for `media/motion`.
18
+ *
19
+ * Resolution: keep candidates whose `hardware` includes the active scope's
20
+ * hardware; return the first. Callers disambiguate by `id` via
21
+ * `runtime.query('media/motion').withId('...')`.
22
+ */
23
+ export declare const mediaMotionKind: {
24
+ id: "media/motion";
25
+ descriptorSchema: import("zod/v4").ZodObject<{
26
+ id: import("zod/v4").ZodString;
27
+ name: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
28
+ description: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
29
+ tags: import("zod/v4").ZodOptional<import("zod/v4").ZodArray<import("zod/v4").ZodString>>;
30
+ priority: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
31
+ capabilityId: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
32
+ requiredContext: import("zod/v4").ZodOptional<import("zod/v4").ZodArray<import("zod/v4").ZodString>>;
33
+ optionalContext: import("zod/v4").ZodOptional<import("zod/v4").ZodArray<import("zod/v4").ZodString>>;
34
+ config: import("zod/v4").ZodOptional<import("zod/v4").ZodUnknown>;
35
+ retention: import("zod/v4").ZodOptional<import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodString, import("zod/v4").ZodObject<{
36
+ maxAgeDays: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
37
+ maxEntries: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
38
+ maxBytes: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
39
+ cascadeFrom: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
40
+ ageField: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
41
+ reason: import("zod/v4").ZodString;
42
+ enforcedBy: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
43
+ }, import("zod/v4/core").$strip>]>>;
44
+ kind: import("zod/v4").ZodLiteral<"media/motion">;
45
+ capabilities: import("zod/v4").ZodArray<import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodLiteral<"frame-diff">, import("zod/v4").ZodLiteral<"temporal-stats">, import("zod/v4").ZodLiteral<"optical-flow">, import("zod/v4").ZodLiteral<"motion-energy">, import("zod/v4").ZodLiteral<"summarize">, import("zod/v4").ZodString]>>;
46
+ hardware: import("zod/v4").ZodArray<import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodLiteral<"consumer">, import("zod/v4").ZodLiteral<"cloud">, import("zod/v4").ZodString]>>;
47
+ enabled: import("zod/v4").ZodDefault<import("zod/v4").ZodBoolean>;
48
+ }, import("zod/v4/core").$strip>;
49
+ resolve(candidates: MotionAnalyzerDescriptor[], scope: {
50
+ hardware: string;
51
+ }): MotionAnalyzerDescriptor | undefined;
52
+ };
53
+ /**
54
+ * Type re-export so consumers can co-locate the interface type with the kind.
55
+ */
56
+ export type { MotionAnalyzer };
57
+ //# sourceMappingURL=motion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motion.d.ts","sourceRoot":"","sources":["../../src/kinds/motion.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAEN,KAAK,wBAAwB,EAC7B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvE,mDAAmD;AACnD,eAAO,MAAM,oBAAoB,EAAG,cAAuB,CAAC;AAE5D,kFAAkF;AAClF,eAAO,MAAM,yBAAyB,EAAG,wBAAiC,CAAC;AAE3E;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;wBAKd,wBAAwB,EAAE,SAC/B;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GACzB,wBAAwB,GAAG,SAAS;CAMvC,CAAC;AAEF;;GAEG;AACH,YAAY,EAAE,cAAc,EAAE,CAAC"}