@happyvertical/smrt-images 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/AGENTS.md +48 -0
  2. package/CLAUDE.md +1 -0
  3. package/LICENSE +7 -0
  4. package/README.md +92 -0
  5. package/dist/__smrt-register__.d.ts +2 -0
  6. package/dist/__smrt-register__.d.ts.map +1 -0
  7. package/dist/categorizer.d.ts +26 -0
  8. package/dist/categorizer.d.ts.map +1 -0
  9. package/dist/deriver.d.ts +33 -0
  10. package/dist/deriver.d.ts.map +1 -0
  11. package/dist/editor.d.ts +72 -0
  12. package/dist/editor.d.ts.map +1 -0
  13. package/dist/image.d.ts +53 -0
  14. package/dist/image.d.ts.map +1 -0
  15. package/dist/images.d.ts +80 -0
  16. package/dist/images.d.ts.map +1 -0
  17. package/dist/index.d.ts +12 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +839 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/manifest.json +1179 -0
  22. package/dist/media-bundle-persistence.d.ts +15 -0
  23. package/dist/media-bundle-persistence.d.ts.map +1 -0
  24. package/dist/metadata.d.ts +19 -0
  25. package/dist/metadata.d.ts.map +1 -0
  26. package/dist/playground.d.ts +2 -0
  27. package/dist/playground.d.ts.map +1 -0
  28. package/dist/playground.js +140 -0
  29. package/dist/playground.js.map +1 -0
  30. package/dist/prompts.d.ts +8 -0
  31. package/dist/prompts.d.ts.map +1 -0
  32. package/dist/search.d.ts +42 -0
  33. package/dist/search.d.ts.map +1 -0
  34. package/dist/smrt-knowledge.json +561 -0
  35. package/dist/svelte/components/AssetsGallery.svelte +436 -0
  36. package/dist/svelte/components/AssetsGallery.svelte.d.ts +11 -0
  37. package/dist/svelte/components/AssetsGallery.svelte.d.ts.map +1 -0
  38. package/dist/svelte/components/ImageEditor.svelte +485 -0
  39. package/dist/svelte/components/ImageEditor.svelte.d.ts +12 -0
  40. package/dist/svelte/components/ImageEditor.svelte.d.ts.map +1 -0
  41. package/dist/svelte/components/ImageUploader.svelte +922 -0
  42. package/dist/svelte/components/ImageUploader.svelte.d.ts +15 -0
  43. package/dist/svelte/components/ImageUploader.svelte.d.ts.map +1 -0
  44. package/dist/svelte/i18n.d.ts +42 -0
  45. package/dist/svelte/i18n.d.ts.map +1 -0
  46. package/dist/svelte/i18n.js +46 -0
  47. package/dist/svelte/image-clients.d.ts +45 -0
  48. package/dist/svelte/image-clients.d.ts.map +1 -0
  49. package/dist/svelte/image-clients.js +1 -0
  50. package/dist/svelte/index.d.ts +14 -0
  51. package/dist/svelte/index.d.ts.map +1 -0
  52. package/dist/svelte/index.js +21 -0
  53. package/dist/svelte/playground.d.ts +74 -0
  54. package/dist/svelte/playground.d.ts.map +1 -0
  55. package/dist/svelte/playground.js +105 -0
  56. package/dist/svelte/routes/ImageStudioRoute.svelte +194 -0
  57. package/dist/svelte/routes/ImageStudioRoute.svelte.d.ts +7 -0
  58. package/dist/svelte/routes/ImageStudioRoute.svelte.d.ts.map +1 -0
  59. package/dist/svelte/routes/index.d.ts +2 -0
  60. package/dist/svelte/routes/index.d.ts.map +1 -0
  61. package/dist/svelte/routes/index.js +1 -0
  62. package/dist/svelte/routes/shared.d.ts +25 -0
  63. package/dist/svelte/routes/shared.d.ts.map +1 -0
  64. package/dist/svelte/routes/shared.js +31 -0
  65. package/dist/types.d.ts +51 -0
  66. package/dist/types.d.ts.map +1 -0
  67. package/dist/types.js +2 -0
  68. package/dist/types.js.map +1 -0
  69. package/dist/ui.d.ts +10 -0
  70. package/dist/ui.d.ts.map +1 -0
  71. package/dist/ui.js +42 -0
  72. package/dist/ui.js.map +1 -0
  73. package/dist/upstream.d.ts +65 -0
  74. package/dist/upstream.d.ts.map +1 -0
  75. package/package.json +95 -0
@@ -0,0 +1,31 @@
1
+ export const IMAGES_ROUTE_IDS = {
2
+ studio: '@happyvertical/smrt-images:studio',
3
+ };
4
+ export const IMAGES_ROUTE_META = {
5
+ studio: {
6
+ id: IMAGES_ROUTE_IDS.studio,
7
+ title: 'Image Studio',
8
+ description: 'Browse images, run uploads, and hand off selected assets into the package-owned image editor surface.',
9
+ defaultPath: '/images',
10
+ loadKind: undefined,
11
+ nav: {
12
+ label: 'Images',
13
+ description: 'Browse image assets and open the image editor.',
14
+ icon: 'image',
15
+ order: 20,
16
+ group: 'content',
17
+ },
18
+ },
19
+ };
20
+ export function createImagesRouteNavigation(mounts = {}) {
21
+ return [IMAGES_ROUTE_META.studio].map((route) => ({
22
+ routeId: route.id,
23
+ href: mounts[route.id] ?? route.defaultPath,
24
+ label: route.nav?.label ?? route.title,
25
+ description: route.nav?.description ?? route.description,
26
+ icon: route.nav?.icon,
27
+ order: route.nav?.order,
28
+ group: route.nav?.group,
29
+ }));
30
+ }
31
+ export const IMAGES_DEFAULT_ROUTE_NAVIGATION = createImagesRouteNavigation();
@@ -0,0 +1,51 @@
1
+ import { AssetOptions } from '@happyvertical/smrt-assets';
2
+ /**
3
+ * Options for creating an Image instance
4
+ */
5
+ export interface ImageOptions extends AssetOptions {
6
+ width?: number;
7
+ height?: number;
8
+ alt?: string;
9
+ }
10
+ /**
11
+ * Result from AI-powered image categorization
12
+ */
13
+ export interface CategoryResult {
14
+ tags: string[];
15
+ description: string;
16
+ confidence: number;
17
+ subjects: string[];
18
+ }
19
+ /**
20
+ * Options for image search queries
21
+ */
22
+ export interface ImageSearchOptions {
23
+ tags?: string[];
24
+ minWidth?: number;
25
+ minHeight?: number;
26
+ orientation?: 'landscape' | 'portrait' | 'square';
27
+ limit?: number;
28
+ offset?: number;
29
+ }
30
+ /**
31
+ * Options for derived image creation
32
+ */
33
+ export interface DeriveOptions {
34
+ /** Number of results (default 1) */
35
+ count?: number;
36
+ /** Output dimensions (e.g., '1024x1024') */
37
+ size?: string;
38
+ /** Style hint */
39
+ style?: string;
40
+ }
41
+ /**
42
+ * Result from image metadata extraction
43
+ */
44
+ export interface ImageMetadataResult {
45
+ width: number;
46
+ height: number;
47
+ format: string;
48
+ mimeType: string;
49
+ exif?: Record<string, unknown>;
50
+ }
51
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/dist/ui.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ import { ModuleUISlot, SmrtModuleMeta } from '@happyvertical/smrt-types';
2
+ /**
3
+ * Images module UI slots
4
+ */
5
+ export declare const IMAGES_UI_SLOTS: Record<string, ModuleUISlot>;
6
+ /**
7
+ * Images module metadata
8
+ */
9
+ export declare const IMAGES_MODULE_META: SmrtModuleMeta;
10
+ //# sourceMappingURL=ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CA6BxD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,cAQhC,CAAC"}
package/dist/ui.js ADDED
@@ -0,0 +1,42 @@
1
+ const IMAGES_UI_SLOTS = {
2
+ "assets-gallery": {
3
+ id: "assets-gallery",
4
+ label: "Assets Gallery",
5
+ description: "Grid gallery of image assets with filtering and selection",
6
+ icon: "images",
7
+ category: "list",
8
+ order: 1,
9
+ propsInterface: "AssetsGalleryProps"
10
+ },
11
+ "image-editor": {
12
+ id: "image-editor",
13
+ label: "Image Editor",
14
+ description: "Resize, crop, convert, and AI-edit an image with derivative tracking",
15
+ icon: "image",
16
+ category: "form",
17
+ order: 2,
18
+ propsInterface: "ImageEditorProps"
19
+ },
20
+ "image-uploader": {
21
+ id: "image-uploader",
22
+ label: "Image Uploader",
23
+ description: "Upload images with metadata extraction and AI categorization",
24
+ icon: "upload",
25
+ category: "form",
26
+ order: 3,
27
+ propsInterface: "ImageUploaderProps"
28
+ }
29
+ };
30
+ const IMAGES_MODULE_META = {
31
+ name: "@happyvertical/smrt-images",
32
+ displayName: "Images",
33
+ description: "Image asset management with AI-powered categorization, search, editing, and metadata extraction",
34
+ uiSlots: IMAGES_UI_SLOTS,
35
+ models: ["Image"],
36
+ collections: ["ImageCollection"]
37
+ };
38
+ export {
39
+ IMAGES_MODULE_META,
40
+ IMAGES_UI_SLOTS
41
+ };
42
+ //# sourceMappingURL=ui.js.map
package/dist/ui.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sources":["../src/ui.ts"],"sourcesContent":["/**\n * Images Module UI Slot Declarations\n *\n * This file defines the UI extension points for the images module.\n * UI components are implemented in the ./svelte subpath.\n */\n\nimport type { ModuleUISlot, SmrtModuleMeta } from '@happyvertical/smrt-types';\n\n/**\n * Images module UI slots\n */\nexport const IMAGES_UI_SLOTS: Record<string, ModuleUISlot> = {\n 'assets-gallery': {\n id: 'assets-gallery',\n label: 'Assets Gallery',\n description: 'Grid gallery of image assets with filtering and selection',\n icon: 'images',\n category: 'list',\n order: 1,\n propsInterface: 'AssetsGalleryProps',\n },\n 'image-editor': {\n id: 'image-editor',\n label: 'Image Editor',\n description:\n 'Resize, crop, convert, and AI-edit an image with derivative tracking',\n icon: 'image',\n category: 'form',\n order: 2,\n propsInterface: 'ImageEditorProps',\n },\n 'image-uploader': {\n id: 'image-uploader',\n label: 'Image Uploader',\n description: 'Upload images with metadata extraction and AI categorization',\n icon: 'upload',\n category: 'form',\n order: 3,\n propsInterface: 'ImageUploaderProps',\n },\n};\n\n/**\n * Images module metadata\n */\nexport const IMAGES_MODULE_META: SmrtModuleMeta = {\n name: '@happyvertical/smrt-images',\n displayName: 'Images',\n description:\n 'Image asset management with AI-powered categorization, search, editing, and metadata extraction',\n uiSlots: IMAGES_UI_SLOTS,\n models: ['Image'],\n collections: ['ImageCollection'],\n};\n"],"names":[],"mappings":"AAYO,MAAM,kBAAgD;AAAA,EAC3D,kBAAkB;AAAA,IAChB,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,IACP,gBAAgB;AAAA,EAAA;AAAA,EAElB,gBAAgB;AAAA,IACd,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aACE;AAAA,IACF,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,IACP,gBAAgB;AAAA,EAAA;AAAA,EAElB,kBAAkB;AAAA,IAChB,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,IACP,gBAAgB;AAAA,EAAA;AAEpB;AAKO,MAAM,qBAAqC;AAAA,EAChD,MAAM;AAAA,EACN,aAAa;AAAA,EACb,aACE;AAAA,EACF,SAAS;AAAA,EACT,QAAQ,CAAC,OAAO;AAAA,EAChB,aAAa,CAAC,iBAAiB;AACjC;"}
@@ -0,0 +1,65 @@
1
+ import { AssetStore } from '@happyvertical/smrt-assets';
2
+ import { Image } from './image';
3
+ import { ImageCollection } from './images';
4
+ /**
5
+ * Minimal adapter interface for upstream asset sources.
6
+ * Full implementation lives in @happyvertical/assets (SDK package).
7
+ */
8
+ export interface AssetSourceAdapter {
9
+ readonly name: string;
10
+ readonly capabilities: {
11
+ search: boolean;
12
+ download: boolean;
13
+ browse: boolean;
14
+ };
15
+ search(query: string, options?: {
16
+ limit?: number;
17
+ offset?: number;
18
+ }): Promise<SourceAsset[]>;
19
+ get(externalId: string): Promise<SourceAsset | null>;
20
+ download(externalId: string): Promise<{
21
+ data: Buffer;
22
+ metadata: SourceAssetMetadata;
23
+ }>;
24
+ }
25
+ export interface SourceAsset {
26
+ externalId: string;
27
+ sourceName: string;
28
+ name: string;
29
+ mimeType: string;
30
+ previewUrl?: string;
31
+ thumbnailUrl?: string;
32
+ metadata: SourceAssetMetadata;
33
+ }
34
+ export interface SourceAssetMetadata {
35
+ width?: number;
36
+ height?: number;
37
+ description?: string;
38
+ tags?: string[];
39
+ license?: string;
40
+ attribution?: string;
41
+ }
42
+ export declare class UpstreamManager {
43
+ private readonly sources;
44
+ private readonly store;
45
+ private readonly collection;
46
+ constructor(sources: AssetSourceAdapter[], store: AssetStore, collection: ImageCollection);
47
+ /**
48
+ * Search across all configured upstream sources
49
+ *
50
+ * @param query - Search query
51
+ * @param options - Search options
52
+ * @returns Merged and ranked results from all sources
53
+ */
54
+ search(query: string, options?: {
55
+ limit?: number;
56
+ }): Promise<SourceAsset[]>;
57
+ /**
58
+ * Import an asset from an upstream source into the local store
59
+ *
60
+ * @param sourceAsset - The upstream asset to import
61
+ * @returns Locally stored Image with provenance
62
+ */
63
+ import(sourceAsset: SourceAsset): Promise<Image>;
64
+ }
65
+ //# sourceMappingURL=upstream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upstream.d.ts","sourceRoot":"","sources":["../src/upstream.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE;QACrB,MAAM,EAAE,OAAO,CAAC;QAChB,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,MAAM,CACJ,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1B,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACrD,QAAQ,CACN,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,mBAAmB,CAAA;KAAE,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAFV,OAAO,EAAE,kBAAkB,EAAE,EAC7B,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,eAAe;IAG9C;;;;;;OAMG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAC/B,OAAO,CAAC,WAAW,EAAE,CAAC;IAkBzB;;;;;OAKG;IACG,MAAM,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;CAoCvD"}
package/package.json ADDED
@@ -0,0 +1,95 @@
1
+ {
2
+ "name": "@happyvertical/smrt-images",
3
+ "version": "0.30.0",
4
+ "description": "Image asset management with AI-powered categorization, search, editing, and metadata extraction for SMRT framework",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "files": [
9
+ "dist",
10
+ "CLAUDE.md",
11
+ "AGENTS.md"
12
+ ],
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "import": "./dist/index.js"
17
+ },
18
+ "./ui": {
19
+ "types": "./dist/ui.d.ts",
20
+ "import": "./dist/ui.js"
21
+ },
22
+ "./manifest": "./dist/manifest.json",
23
+ "./manifest.json": "./dist/manifest.json",
24
+ "./playground": {
25
+ "types": "./dist/playground.d.ts",
26
+ "import": "./dist/playground.js"
27
+ },
28
+ "./svelte": {
29
+ "types": "./dist/svelte/index.d.ts",
30
+ "svelte": "./dist/svelte/index.js",
31
+ "import": "./dist/svelte/index.js",
32
+ "default": "./dist/svelte/index.js"
33
+ }
34
+ },
35
+ "dependencies": {
36
+ "@happyvertical/ai": "^0.74.7",
37
+ "@happyvertical/images": "^0.74.7",
38
+ "@happyvertical/utils": "^0.74.7",
39
+ "jimp": "^1.6.1",
40
+ "sharp": "^0.34.5",
41
+ "@happyvertical/smrt-assets": "0.30.0",
42
+ "@happyvertical/smrt-tenancy": "0.30.0",
43
+ "@happyvertical/smrt-core": "0.30.0",
44
+ "@happyvertical/smrt-prompts": "0.30.0",
45
+ "@happyvertical/smrt-types": "0.30.0",
46
+ "@happyvertical/smrt-ui": "0.30.0"
47
+ },
48
+ "peerDependencies": {
49
+ "svelte": "^5.18.0"
50
+ },
51
+ "devDependencies": {
52
+ "@happyvertical/sql": "^0.74.7",
53
+ "@sveltejs/kit": "^2.5.7",
54
+ "@sveltejs/package": "^2.5.7",
55
+ "@sveltejs/vite-plugin-svelte": "^6.2.4",
56
+ "@types/node": "25.0.9",
57
+ "svelte": "^5.46.4",
58
+ "svelte-check": "^4.3.5",
59
+ "typescript": "^5.9.3",
60
+ "vite": "^7.3.1",
61
+ "vitest": "^4.0.17",
62
+ "@happyvertical/smrt-playground": "0.30.0",
63
+ "@happyvertical/smrt-vitest": "0.30.0"
64
+ },
65
+ "keywords": [
66
+ "ai",
67
+ "smrt",
68
+ "images",
69
+ "image-processing",
70
+ "categorization",
71
+ "search"
72
+ ],
73
+ "author": "HappyVertical",
74
+ "license": "MIT",
75
+ "publishConfig": {
76
+ "registry": "https://registry.npmjs.org",
77
+ "access": "public"
78
+ },
79
+ "repository": {
80
+ "type": "git",
81
+ "url": "https://github.com/happyvertical/smrt.git",
82
+ "directory": "packages/images"
83
+ },
84
+ "scripts": {
85
+ "build": "SMRT_PACKAGE_BUILD=1 svelte-kit sync && SMRT_PACKAGE_BUILD=1 vite build --mode library && SMRT_PACKAGE_BUILD=1 svelte-package -i src/svelte -o dist/svelte --tsconfig tsconfig.svelte.json",
86
+ "build:watch": "vite build --mode library --watch",
87
+ "clean": "rm -rf dist",
88
+ "dev": "vite dev",
89
+ "test": "vitest run",
90
+ "test:watch": "vitest",
91
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.kit.json",
92
+ "typecheck": "svelte-kit sync && tsc -p tsconfig.typecheck.json && node ../../scripts/svelte-check-a11y.mjs --tsconfig ./tsconfig.kit.json",
93
+ "verify:pack": "node ../../scripts/verify-package-types-exports.js ."
94
+ }
95
+ }