MCPcopy
hub / github.com/OpenCoworkAI/open-codesign / parseTweakSchema

Function parseTweakSchema

packages/shared/src/editmode.ts:290–323  ·  view source on GitHub ↗
(source: string)

Source from the content-addressed store, hash-verified

288}
289
290export function parseTweakSchema(source: string): TweakSchema | null {
291 const block = findMarkerBlock(source, 'TWEAK-SCHEMA');
292 if (block === null) return null;
293 const raw = block.inner.trim();
294 if (raw.length === 0) return {};
295 let parsed: unknown;
296 try {
297 parsed = JSON.parse(raw);
298 } catch (cause) {
299 throw new CodesignError(
300 'TWEAK_SCHEMA block contains invalid JSON',
301 ERROR_CODES.ARTIFACT_PROTOCOL_INVALID,
302 { cause },
303 );
304 }
305 if (!isPlainObject(parsed)) {
306 throw new CodesignError(
307 'TWEAK_SCHEMA block must contain a JSON object',
308 ERROR_CODES.ARTIFACT_PROTOCOL_INVALID,
309 );
310 }
311 const out: TweakSchema = {};
312 for (const [key, entry] of Object.entries(parsed)) {
313 const validated = validateEntry(entry);
314 if (!validated) {
315 throw new CodesignError(
316 `TWEAK_SCHEMA entry "${key}" is invalid`,
317 ERROR_CODES.ARTIFACT_PROTOCOL_INVALID,
318 );
319 }
320 out[key] = validated;
321 }
322 return out;
323}
324
325/**
326 * Replace (or insert) the TWEAK_SCHEMA block in `source`.

Callers 2

editmode.test.tsFile · 0.90
TweakPanelFunction · 0.90

Calls 3

findMarkerBlockFunction · 0.85
isPlainObjectFunction · 0.85
validateEntryFunction · 0.85

Tested by

no test coverage detected