37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
|
|
const { computeAssetId, SCHEMA_VERSION } = require('./contentHash');
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Format asset preview for prompt inclusion.
|
||
|
|
* Handles stringified JSON, arrays, and error cases gracefully.
|
||
|
|
*/
|
||
|
|
function formatAssetPreview(preview) {
|
||
|
|
if (!preview) return '(none)';
|
||
|
|
if (typeof preview === 'string') {
|
||
|
|
try {
|
||
|
|
const parsed = JSON.parse(preview);
|
||
|
|
if (Array.isArray(parsed) && parsed.length > 0) {
|
||
|
|
return JSON.stringify(parsed, null, 2);
|
||
|
|
}
|
||
|
|
return preview; // Keep as string if not array or empty
|
||
|
|
} catch (e) {
|
||
|
|
return preview; // Keep as string if parse fails
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return JSON.stringify(preview, null, 2);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Validate and normalize an asset object.
|
||
|
|
* Ensures schema version and ID are present.
|
||
|
|
*/
|
||
|
|
function normalizeAsset(asset) {
|
||
|
|
if (!asset || typeof asset !== 'object') return asset;
|
||
|
|
if (!asset.schema_version) asset.schema_version = SCHEMA_VERSION;
|
||
|
|
if (!asset.asset_id) {
|
||
|
|
try { asset.asset_id = computeAssetId(asset); } catch (e) {}
|
||
|
|
}
|
||
|
|
return asset;
|
||
|
|
}
|
||
|
|
|
||
|
|
module.exports = { formatAssetPreview, normalizeAsset };
|