@happyvertical/smrt-assets-ergot 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.
package/AGENTS.md ADDED
@@ -0,0 +1,67 @@
1
+ # @happyvertical/smrt-assets-ergot
2
+
3
+ Ergot-backed adapter for the SMRT asset runtime.
4
+
5
+ ## Purpose
6
+
7
+ This package lets applications keep `@happyvertical/smrt-assets` as the app-facing asset API while delegating advanced media work to Ergot.
8
+
9
+ Use it when an app needs MAM-backed search, cloud processors, generated candidates, workflow jobs, or synchronization with an Ergot media library.
10
+
11
+ Do not import this package from generic SMRT packages unless they are explicitly wiring an Ergot backend.
12
+
13
+ ## Dependency Shape
14
+
15
+ The adapter is structurally typed around the consumer asset client surface.
16
+
17
+ That keeps core SMRT assets usable without Ergot and avoids making every SMRT consumer install Ergot wire clients.
18
+
19
+ Hosts that enable this adapter must pass a compatible Ergot client into `createErgotAssetProcessor()`.
20
+
21
+ When Ergot publishes a stable SDK, that SDK should implement the same client shape and may become a documented peer dependency.
22
+
23
+ Tests should use fake clients that implement the small adapter-facing surface instead of reaching into Ergot internals.
24
+
25
+ ## Source References
26
+
27
+ SMRT assets remain canonical inside SMRT.
28
+
29
+ Ergot assets are connected through stable source references and external refs, not shared primary keys.
30
+
31
+ Use `sourceRef` for idempotent sync.
32
+
33
+ Use `externalId` only when the upstream consumer already has a stable external identifier.
34
+
35
+ Never assume a SMRT asset id and Ergot asset id are interchangeable.
36
+
37
+ ## Provider Behavior
38
+
39
+ The adapter implements SMRT asset capabilities such as external sync, nearby search, variant resolution, and workflow submission.
40
+
41
+ Unsupported Ergot behavior should surface as an unsupported capability or provider error, not as a dashboard-specific workaround.
42
+
43
+ Tenant scope must be present on every Ergot request that can expose or mutate tenant data.
44
+
45
+ List and nearby calls should rely on Ergot's consumer-scoped API contract rather than re-querying private internals.
46
+
47
+ Direct asset and job lookups still need explicit tenant validation.
48
+
49
+ ## Variants And Outputs
50
+
51
+ Prefer SMRT variant names such as `thumb`, `card`, `preview`, and `publish`.
52
+
53
+ Map Ergot sized image URLs into SMRT variant metadata without copying bytes unless the caller asks to materialize an output.
54
+
55
+ Generated candidates are not final article assets until approved and materialized through the SMRT asset runtime.
56
+
57
+ Workflow outputs should preserve lineage back to the source asset and Ergot job metadata.
58
+
59
+ ## Gotchas
60
+
61
+ Keep broad Ergot client contracts in the SDK, not in this adapter.
62
+
63
+ Keep Anytown-specific content image behavior out of this package.
64
+
65
+ Do not reach into Ergot database tables or private APIs from here.
66
+
67
+ When adding a new Ergot capability, first extend the SMRT asset provider interface if the behavior is app-facing.
package/CLAUDE.md ADDED
@@ -0,0 +1 @@
1
+ @AGENTS.md
package/LICENSE ADDED
@@ -0,0 +1,7 @@
1
+ Copyright <2025> <Happy Vertical Corporation>
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
+
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,107 @@
1
+ import type { AssetCapabilityProvider } from '@happyvertical/smrt-assets';
2
+ export interface ErgotAssetSourceRef {
3
+ system: string;
4
+ id: string;
5
+ kind?: string | null;
6
+ }
7
+ export interface ErgotAssetSummary {
8
+ id: string;
9
+ name: string;
10
+ mimeType: string;
11
+ typeSlug: string;
12
+ status: string;
13
+ updatedAt: string | null;
14
+ sourceUri: string;
15
+ /**
16
+ * Derivation source on the Ergot side. Mirrors the field Ergot returns
17
+ * over its wire API; do not conflate with `Asset.sourceAssetId` on the
18
+ * local SMRT side. Renaming this would desync this adapter from the
19
+ * upstream service's response shape.
20
+ */
21
+ parentId: string | null;
22
+ version: number;
23
+ width: number;
24
+ height: number;
25
+ alt: string | null;
26
+ thumbnailUri?: string | null;
27
+ sizeBytes?: number | null;
28
+ durationMs?: number | null;
29
+ externalId?: string | null;
30
+ location?: {
31
+ latitude: number;
32
+ longitude: number;
33
+ distanceMeters: number | null;
34
+ recordedAt: string | null;
35
+ } | null;
36
+ tags?: Array<Record<string, unknown>>;
37
+ lineage?: Array<{
38
+ objectType: string;
39
+ objectId: string;
40
+ role: string;
41
+ }>;
42
+ metadata?: Record<string, unknown> | null;
43
+ deliveryUrl?: string;
44
+ deliveryUrlExpiresAt?: string;
45
+ }
46
+ export interface ErgotAssetListResult {
47
+ items: ErgotAssetSummary[];
48
+ nextCursor: string | null;
49
+ }
50
+ export interface ErgotWorkflowInputSelection {
51
+ slotKey: string;
52
+ assetIds: string[];
53
+ }
54
+ export interface ErgotJobSummary {
55
+ id: string;
56
+ status: string;
57
+ outputAssetIds?: string[];
58
+ [key: string]: unknown;
59
+ }
60
+ export interface ErgotConsumerAssetClient {
61
+ listAssets(options?: {
62
+ status?: string;
63
+ limit?: number;
64
+ cursor?: string;
65
+ includeCandidates?: boolean;
66
+ externalId?: string;
67
+ sourceRef?: ErgotAssetSourceRef;
68
+ }): Promise<ErgotAssetListResult>;
69
+ listNearbyAssets(options: {
70
+ latitude: number;
71
+ longitude: number;
72
+ radiusMeters: number;
73
+ limit?: number;
74
+ }): Promise<ErgotAssetListResult>;
75
+ uploadAsset(input: {
76
+ file: Blob;
77
+ filename?: string;
78
+ name?: string;
79
+ description?: string | null;
80
+ alt?: string | null;
81
+ typeSlug?: string | null;
82
+ mimeType?: string | null;
83
+ externalId?: string | null;
84
+ sourceRef?: ErgotAssetSourceRef | null;
85
+ metadata?: Record<string, unknown> | null;
86
+ }): Promise<ErgotAssetSummary>;
87
+ submitJob(input: {
88
+ workflowSlug: string;
89
+ clientRequestId?: string | null;
90
+ name?: string;
91
+ inputSelections?: ErgotWorkflowInputSelection[];
92
+ sourceAssetIds?: string[];
93
+ parameters?: Record<string, unknown>;
94
+ requestContext?: Record<string, unknown>;
95
+ requestedPlacement?: string | null;
96
+ priority?: number | null;
97
+ }): Promise<{
98
+ job: ErgotJobSummary;
99
+ idempotent: boolean;
100
+ }>;
101
+ }
102
+ export interface ErgotAssetProcessorOptions {
103
+ client: ErgotConsumerAssetClient;
104
+ sourceSystem?: string;
105
+ }
106
+ export declare function createErgotAssetProcessor(options: ErgotAssetProcessorOptions): AssetCapabilityProvider;
107
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,216 @@
1
+ function requireAssetId(asset) {
2
+ if (!asset.id) {
3
+ throw new Error('Ergot asset sync requires a persisted SMRT asset.');
4
+ }
5
+ return asset.id;
6
+ }
7
+ function defaultSourceRef(asset, sourceSystem) {
8
+ return {
9
+ system: sourceSystem,
10
+ kind: asset.typeSlug || 'asset',
11
+ id: requireAssetId(asset),
12
+ };
13
+ }
14
+ function defaultExternalId(asset, sourceSystem) {
15
+ const sourceRef = defaultSourceRef(asset, sourceSystem);
16
+ return externalIdFromSourceRef(sourceRef);
17
+ }
18
+ function externalIdFromSourceRef(sourceRef) {
19
+ return [sourceRef.system, sourceRef.kind ?? 'asset', sourceRef.id].join(':');
20
+ }
21
+ function parseAssetRecord(value) {
22
+ if (!value?.trim())
23
+ return {};
24
+ try {
25
+ const parsed = JSON.parse(value);
26
+ return parsed && typeof parsed === 'object' && !Array.isArray(parsed)
27
+ ? parsed
28
+ : {};
29
+ }
30
+ catch {
31
+ return {};
32
+ }
33
+ }
34
+ async function writeErgotMapping(asset, external, externalId, sourceRef) {
35
+ const structuredAsset = asset;
36
+ const reference = {
37
+ assetId: external.id,
38
+ externalId,
39
+ sourceRef,
40
+ status: external.status,
41
+ thumbnailUri: external.thumbnailUri ?? null,
42
+ deliveryUrl: external.deliveryUrl ?? null,
43
+ syncedAt: new Date().toISOString(),
44
+ };
45
+ if (structuredAsset.setExternalRef) {
46
+ structuredAsset.setExternalRef('ergot', reference);
47
+ }
48
+ else {
49
+ structuredAsset.externalRefs = JSON.stringify({
50
+ ...(structuredAsset.getExternalRefs?.() ??
51
+ parseAssetRecord(structuredAsset.externalRefs)),
52
+ ergot: {
53
+ provider: 'ergot',
54
+ ...reference,
55
+ },
56
+ });
57
+ }
58
+ await asset.save();
59
+ }
60
+ function normalizeSourceRef(value) {
61
+ return {
62
+ system: value.system,
63
+ id: value.id,
64
+ kind: value.kind ?? null,
65
+ };
66
+ }
67
+ function assetSummaryToSearchItem(asset) {
68
+ return {
69
+ assetId: asset.id,
70
+ origin: 'ergot',
71
+ title: asset.name,
72
+ previewUrl: asset.thumbnailUri ?? asset.deliveryUrl ?? asset.sourceUri ?? null,
73
+ deliveryUrl: asset.deliveryUrl ?? asset.sourceUri ?? null,
74
+ mimeType: asset.mimeType ?? null,
75
+ width: asset.width ?? null,
76
+ height: asset.height ?? null,
77
+ distanceMeters: asset.location?.distanceMeters ?? null,
78
+ metadata: asset.metadata ?? null,
79
+ };
80
+ }
81
+ export function createErgotAssetProcessor(options) {
82
+ const sourceSystem = options.sourceSystem ?? 'smrt-assets';
83
+ async function syncExternalAsset(input) {
84
+ const assetId = requireAssetId(input.asset);
85
+ const sourceRef = input.sourceRef ?? defaultSourceRef(input.asset, sourceSystem);
86
+ const externalId = input.externalId ?? externalIdFromSourceRef(sourceRef);
87
+ const existing = await options.client.listAssets({
88
+ externalId,
89
+ sourceRef: normalizeSourceRef(sourceRef),
90
+ limit: 1,
91
+ });
92
+ let external = existing.items[0] ?? null;
93
+ if (!external) {
94
+ const data = await input.runtime.store.read(input.asset);
95
+ const body = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
96
+ external = await options.client.uploadAsset({
97
+ file: new Blob([body], {
98
+ type: input.asset.mimeType || 'application/octet-stream',
99
+ }),
100
+ filename: input.asset.name || assetId,
101
+ name: input.asset.name || assetId,
102
+ description: input.asset.description || null,
103
+ typeSlug: input.asset.typeSlug || null,
104
+ mimeType: input.asset.mimeType || null,
105
+ externalId,
106
+ sourceRef: normalizeSourceRef(sourceRef),
107
+ metadata: {
108
+ ...(input.metadata ?? {}),
109
+ smrt: {
110
+ assetId,
111
+ tenantId: input.asset.tenantId ?? null,
112
+ sourceUri: input.asset.sourceUri,
113
+ },
114
+ },
115
+ });
116
+ }
117
+ await writeErgotMapping(input.asset, external, externalId, sourceRef);
118
+ return {
119
+ asset: input.asset,
120
+ provider: 'ergot',
121
+ status: external.status === 'ready' ? 'ready' : 'pending',
122
+ externalAssetId: external.id,
123
+ externalId,
124
+ metadata: external.metadata ?? null,
125
+ };
126
+ }
127
+ return {
128
+ name: 'smrt-assets-ergot',
129
+ async processAsset(input) {
130
+ const synced = await syncExternalAsset(input);
131
+ return {
132
+ asset: input.asset,
133
+ metadata: {
134
+ ergot: synced,
135
+ },
136
+ };
137
+ },
138
+ syncExternalAsset,
139
+ async searchNearbyAssets(input) {
140
+ const result = await options.client.listNearbyAssets({
141
+ latitude: input.latitude,
142
+ longitude: input.longitude,
143
+ radiusMeters: input.radiusMeters ?? 1_500,
144
+ limit: input.limit,
145
+ });
146
+ return {
147
+ items: result.items.map(assetSummaryToSearchItem),
148
+ nextCursor: result.nextCursor,
149
+ };
150
+ },
151
+ async submitAssetWorkflow(input) {
152
+ const synced = await syncExternalAsset(input);
153
+ const externalAssetId = synced.externalAssetId;
154
+ if (!externalAssetId) {
155
+ throw new Error('Ergot workflow submission requires a synced Ergot asset.');
156
+ }
157
+ async function syncWorkflowAssetId(assetId) {
158
+ const sourceAsset = (await input.runtime.collection.get({
159
+ id: assetId,
160
+ }));
161
+ if (!sourceAsset?.id) {
162
+ return assetId;
163
+ }
164
+ const ownerTenantId = input.asset.tenantId ?? null;
165
+ if (ownerTenantId &&
166
+ sourceAsset.tenantId &&
167
+ sourceAsset.tenantId !== ownerTenantId) {
168
+ throw new Error('Ergot workflow source asset belongs to another tenant.');
169
+ }
170
+ const sourceSync = await syncExternalAsset({
171
+ runtime: input.runtime,
172
+ asset: sourceAsset,
173
+ });
174
+ if (!sourceSync.externalAssetId) {
175
+ throw new Error(`Ergot workflow source asset ${assetId} could not be synced.`);
176
+ }
177
+ return sourceSync.externalAssetId;
178
+ }
179
+ const sourceAssetIds = input.sourceAssetIds?.length
180
+ ? await Promise.all(input.sourceAssetIds.map(syncWorkflowAssetId))
181
+ : [externalAssetId];
182
+ if (!sourceAssetIds.includes(externalAssetId)) {
183
+ sourceAssetIds.unshift(externalAssetId);
184
+ }
185
+ const inputSelections = input.inputSelections
186
+ ? await Promise.all(input.inputSelections.map(async (selection) => ({
187
+ ...selection,
188
+ assetIds: await Promise.all(selection.assetIds.map(syncWorkflowAssetId)),
189
+ })))
190
+ : undefined;
191
+ const job = await options.client.submitJob({
192
+ workflowSlug: input.workflowSlug,
193
+ clientRequestId: input.clientRequestId,
194
+ name: input.name,
195
+ inputSelections: inputSelections,
196
+ sourceAssetIds,
197
+ parameters: input.parameters,
198
+ requestContext: {
199
+ ...(input.requestContext ?? {}),
200
+ smrtAssetId: input.asset.id,
201
+ tenantId: input.asset.tenantId ?? undefined,
202
+ },
203
+ requestedPlacement: input.requestedPlacement,
204
+ priority: input.priority,
205
+ });
206
+ return {
207
+ provider: 'ergot',
208
+ jobId: job.job.id,
209
+ status: job.job.status,
210
+ idempotent: job.idempotent,
211
+ metadata: job.job,
212
+ };
213
+ },
214
+ };
215
+ }
216
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@happyvertical/smrt-assets-ergot",
3
+ "version": "0.30.0",
4
+ "description": "Ergot-backed processing, search, and workflow adapter for SMRT assets",
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
+ "default": "./dist/index.js"
18
+ }
19
+ },
20
+ "dependencies": {
21
+ "@happyvertical/smrt-assets": "0.30.0"
22
+ },
23
+ "devDependencies": {
24
+ "@happyvertical/sql": "^0.74.7",
25
+ "@types/node": "25.0.9",
26
+ "typescript": "^5.9.3",
27
+ "vitest": "^4.0.17",
28
+ "@happyvertical/smrt-core": "0.30.0"
29
+ },
30
+ "publishConfig": {
31
+ "registry": "https://registry.npmjs.org",
32
+ "access": "public"
33
+ },
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "https://github.com/happyvertical/smrt.git",
37
+ "directory": "packages/assets-ergot"
38
+ },
39
+ "author": "HappyVertical",
40
+ "license": "MIT",
41
+ "scripts": {
42
+ "build": "tsc -p tsconfig.json",
43
+ "check": "tsc -p tsconfig.json --noEmit",
44
+ "test": "vitest run",
45
+ "typecheck": "tsc --noEmit -p tsconfig.json"
46
+ }
47
+ }