{"id":"lockfile-merge","title":"Resolve git conflict markers in package-lock.json or a YAML lockfile","description":"Takes a lockfile (package-lock.json or a YAML lockfile such as pnpm-lock.yaml) containing git merge-conflict markers, rebuilds both sides, and merges them key by key (using the diff3 base when present), returning the resolved file or the exact conflicting key paths with both values, for agents rebasing or merging branches. An optional prefer=ours|theirs applies one explicit policy to the remaining conflicts. A merged lockfile is not validated against the registry or dependency graph: run the package manager to regenerate it. yarn.lock and other non-JSON/YAML formats are not supported.","roi":"Resolves lockfile conflicts deterministically instead of hand-editing thousands of lines.","audience":"developer","package":"code-preflight-kit","channels":["x402","mcp"],"endpoint":{"method":"POST","url":"https://agents.writerslogic.com/api/v1/lockfile-merge","path":"/api/v1/lockfile-merge","contentType":"application/json"},"price":{"amount":"0.005","currency":"USDC","network":"base","perCall":true,"failedCallsCharged":false},"inputSchema":{"type":"object","additionalProperties":false,"required":["content"],"properties":{"content":{"type":"string","maxLength":200000,"description":"Whole file text; YAML at most 100000 characters."},"format":{"type":"string","enum":["auto","json","yaml"],"description":"Default auto: JSON when the file starts with { or [."},"prefer":{"type":"string","enum":["none","ours","theirs"],"description":"Policy for keys changed on both sides. Default none: report them."}}},"resultSchema":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","unknown","unsupported"],"description":"pass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass."},"format":{"type":"string"},"hunks":{"type":"integer"},"baseKnown":{"type":"boolean"},"autoMerged":{"type":"integer","description":"Keys that appear on one side only and were carried over."},"conflictCount":{"type":"integer"},"conflicts":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"ours":{"type":"string"},"theirs":{"type":"string"},"base":{"type":"string"}}}},"resolved":{"type":"string","description":"Merged file text, present only when no conflict remains."},"witnesses":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"detail":{"type":"string"},"path":{"type":"string","description":"JSON pointer or dotted path into the input."},"offset":{"type":"integer"},"index":{"type":"integer"},"expected":{"description":"What the rule required."},"actual":{"description":"What the input had."}}}},"versions":{"type":"object","description":"Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile)."},"limits":{"type":"array","items":{"type":"string"}},"deterministic":{"type":"boolean","description":"Always true: pure code, no model."}}},"outputSchema":{"type":"object","properties":{"data":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","unknown","unsupported"],"description":"pass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass."},"format":{"type":"string"},"hunks":{"type":"integer"},"baseKnown":{"type":"boolean"},"autoMerged":{"type":"integer","description":"Keys that appear on one side only and were carried over."},"conflictCount":{"type":"integer"},"conflicts":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"ours":{"type":"string"},"theirs":{"type":"string"},"base":{"type":"string"}}}},"resolved":{"type":"string","description":"Merged file text, present only when no conflict remains."},"witnesses":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"detail":{"type":"string"},"path":{"type":"string","description":"JSON pointer or dotted path into the input."},"offset":{"type":"integer"},"index":{"type":"integer"},"expected":{"description":"What the rule required."},"actual":{"description":"What the input had."}}}},"versions":{"type":"object","description":"Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile)."},"limits":{"type":"array","items":{"type":"string"}},"deterministic":{"type":"boolean","description":"Always true: pure code, no model."}}},"_provenance":{"type":"object","description":"C2PA-aligned manifest and W3C VC 2.0 (eddsa-jcs-2022) issued by the hub DID; verify at POST /api/v1/verify-provenance"}},"required":["data","_provenance"]},"example":{"content":"{\n  \"packages\": {\n<<<<<<< HEAD\n    \"node_modules/a\": { \"version\": \"1.0.0\" },\n=======\n    \"node_modules/b\": { \"version\": \"2.0.0\" },\n>>>>>>> feature\n    \"node_modules/c\": { \"version\": \"3.0.0\" }\n  }\n}\n"},"openapiOperation":{"operationId":"lockfile_merge","summary":"Resolve git conflict markers in package-lock.json or a YAML lockfile","description":"Takes a lockfile (package-lock.json or a YAML lockfile such as pnpm-lock.yaml) containing git merge-conflict markers, rebuilds both sides, and merges them key by key (using the diff3 base when present), returning the resolved file or the exact conflicting key paths with both values, for agents rebasing or merging branches. An optional prefer=ours|theirs applies one explicit policy to the remaining conflicts. A merged lockfile is not validated against the registry or dependency graph: run the package manager to regenerate it. yarn.lock and other non-JSON/YAML formats are not supported.\n\nPrice: 0.005 USDC on Base (x402).","x-x402-price-usdc":"0.005","x-x402-amount":"5000","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.005"}},"x-audience":"developer","x-sample-url":"https://agents.writerslogic.com/api/v1/samples/lockfile-merge","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["content"],"properties":{"content":{"type":"string","maxLength":200000,"description":"Whole file text; YAML at most 100000 characters."},"format":{"type":"string","enum":["auto","json","yaml"],"description":"Default auto: JSON when the file starts with { or [."},"prefer":{"type":"string","enum":["none","ours","theirs"],"description":"Policy for keys changed on both sides. Default none: report them."}}},"example":{"content":"{\n  \"packages\": {\n<<<<<<< HEAD\n    \"node_modules/a\": { \"version\": \"1.0.0\" },\n=======\n    \"node_modules/b\": { \"version\": \"2.0.0\" },\n>>>>>>> feature\n    \"node_modules/c\": { \"version\": \"3.0.0\" }\n  }\n}\n"}}}},"responses":{"200":{"description":"Paid result with provenance","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","unknown","unsupported"],"description":"pass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass."},"format":{"type":"string"},"hunks":{"type":"integer"},"baseKnown":{"type":"boolean"},"autoMerged":{"type":"integer","description":"Keys that appear on one side only and were carried over."},"conflictCount":{"type":"integer"},"conflicts":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"ours":{"type":"string"},"theirs":{"type":"string"},"base":{"type":"string"}}}},"resolved":{"type":"string","description":"Merged file text, present only when no conflict remains."},"witnesses":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"detail":{"type":"string"},"path":{"type":"string","description":"JSON pointer or dotted path into the input."},"offset":{"type":"integer"},"index":{"type":"integer"},"expected":{"description":"What the rule required."},"actual":{"description":"What the input had."}}}},"versions":{"type":"object","description":"Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile)."},"limits":{"type":"array","items":{"type":"string"}},"deterministic":{"type":"boolean","description":"Always true: pure code, no model."}}},"_provenance":{"type":"object","description":"C2PA-aligned manifest and W3C VC 2.0 (eddsa-jcs-2022) issued by the hub DID; verify at POST /api/v1/verify-provenance"}},"required":["data","_provenance"]}}}},"400":{"description":"Invalid request (no payment consumed)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Invalid X-API-KEY","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"402":{"description":"Payment required or invalid","content":{"application/json":{"schema":{"type":"object","description":"x402 v2 PaymentRequired (also base64 in the PAYMENT-REQUIRED header)","properties":{"x402Version":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string"},"resource":{"type":"object"},"accepts":{"type":"array","items":{"type":"object"}},"extensions":{"type":"object"}}}}}},"502":{"description":"Upstream failure; the payment is released or not settled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}}},"links":{"docs":"https://agents.writerslogic.com/docs/lockfile-merge/","docsJson":"https://agents.writerslogic.com/docs/lockfile-merge.json","sample":"https://agents.writerslogic.com/api/v1/samples/lockfile-merge","openapi":"https://agents.writerslogic.com/openapi.json","catalog":"https://agents.writerslogic.com/api/v1/catalog","verifyProvenance":"https://agents.writerslogic.com/api/v1/verify-provenance","index":"https://agents.writerslogic.com/docs/index.json"}}