From 27b61a57f7cb8099a55a59c0d1cea4bcfb6b6716 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 19 Mar 2026 15:32:41 +0000 Subject: [PATCH 1/9] fix(deps): update dependency @apidevtools/json-schema-ref-parser to v15 --- package.json | 2 +- yarn.lock | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index e90efa59a..968cd4273 100644 --- a/package.json +++ b/package.json @@ -121,7 +121,7 @@ "using-temporary-files": "2.2.1" }, "dependencies": { - "@apidevtools/json-schema-ref-parser": "13.0.5", + "@apidevtools/json-schema-ref-parser": "15.3.1", "@hapi/accept": "6.0.3", "@types/json-schema": "7.0.15", "chokidar": "5.0.0", diff --git a/yarn.lock b/yarn.lock index 2a952c2e4..7835bed64 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,13 +10,12 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@apidevtools/json-schema-ref-parser@13.0.5": - version "13.0.5" - resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-13.0.5.tgz#e7a5cfc7df315ebcbafeb98199b72ebed9743b68" - integrity sha512-xfh4xVJD62gG6spIc7lwxoWT+l16nZu1ELyU8FkjaP/oD2yP09EvLAU6KhtudN9aML2Khhs9pY6Slr7KGTES3w== +"@apidevtools/json-schema-ref-parser@15.3.1": + version "15.3.1" + resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-15.3.1.tgz#93f70004a085f62319705e32f25af748752ea5a4" + integrity sha512-FIweGOR9zrNuskfDXn8dfsA4eJEe8LmmGsGSDikEZvgYm36SO36yMhasXSOX7/OTGZ3b7I9iPhOxB24D8xL5uQ== dependencies: - "@types/json-schema" "^7.0.15" - js-yaml "^4.1.0" + js-yaml "^4.1.1" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.24.7": version "7.24.7" @@ -6339,7 +6338,7 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.1.1, js-yaml@^3.12.1, js-yaml@^3.13.1, js-yaml@^3.6.1, js-yaml@^4.1.0, js-yaml@^4.1.1: +js-yaml@4.1.1, js-yaml@^3.12.1, js-yaml@^3.13.1, js-yaml@^3.6.1, js-yaml@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== From a71e047db7327f87b9923a18e0b219ac29e3d1d2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 19 Mar 2026 15:32:56 +0000 Subject: [PATCH 2/9] chore: add changeset for renovate dependency update --- .changeset/renovate-27b61a5.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/renovate-27b61a5.md diff --git a/.changeset/renovate-27b61a5.md b/.changeset/renovate-27b61a5.md new file mode 100644 index 000000000..c6e914e14 --- /dev/null +++ b/.changeset/renovate-27b61a5.md @@ -0,0 +1,5 @@ +--- +'counterfact': patch +--- + +Updated dependency `@apidevtools/json-schema-ref-parser` to `15.3.1`. From b72346ad3be97900bb6b44cb6fa835611e8280dc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 30 Mar 2026 19:25:03 +0000 Subject: [PATCH 3/9] fix: allow localhost URLs in json-schema-ref-parser v15 by setting safeUrlResolver: false Agent-Logs-Url: https://github.com/pmcelhaney/counterfact/sessions/0978ebfb-0f32-4a36-9e10-3e6f80ea9efd --- src/typescript-generator/specification.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/typescript-generator/specification.js b/src/typescript-generator/specification.js index 3790165c5..a5cfd5447 100644 --- a/src/typescript-generator/specification.js +++ b/src/typescript-generator/specification.js @@ -25,7 +25,7 @@ export class Specification { async load(urlOrPath) { this.rootRequirement = new Requirement( - await bundle(urlOrPath), + await bundle(urlOrPath, { resolve: { http: { safeUrlResolver: false } } }), urlOrPath, this, ); From 1e0b6d5c04bf596869360a1bd8bb27772389fa97 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 13 Jan 2026 19:35:31 +0000 Subject: [PATCH 4/9] fix(deps): update dependency @apidevtools/json-schema-ref-parser to v15 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 21367aca0..91dd57714 100644 --- a/package.json +++ b/package.json @@ -127,7 +127,7 @@ "using-temporary-files": "2.2.1" }, "dependencies": { - "@apidevtools/json-schema-ref-parser": "15.3.1", + "@apidevtools/json-schema-ref-parser": "15.1.3", "@hapi/accept": "6.0.3", "@types/json-schema": "7.0.15", "chokidar": "5.0.0", diff --git a/yarn.lock b/yarn.lock index ac0605494..1ba4e22e5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,10 +10,10 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@apidevtools/json-schema-ref-parser@15.3.1": - version "15.3.1" - resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-15.3.1.tgz#93f70004a085f62319705e32f25af748752ea5a4" - integrity sha512-FIweGOR9zrNuskfDXn8dfsA4eJEe8LmmGsGSDikEZvgYm36SO36yMhasXSOX7/OTGZ3b7I9iPhOxB24D8xL5uQ== +"@apidevtools/json-schema-ref-parser@15.1.3": + version "15.1.3" + resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-15.1.3.tgz#4dc45f3807cea9be807cfca0daf582d8c935f0f0" + integrity sha512-XvEitlOaU8S+hOrMPuGyCjp6vC51K+syUN4HHrSUdSDLLWRWQJYjInU6xlSoRGCVBCfcoHxbRm+yiaYq2yFR5w== dependencies: js-yaml "^4.1.1" From d1f4256582485c4da38b07833218d788d4e0ebdb Mon Sep 17 00:00:00 2001 From: Patrick McElhaney Date: Mon, 30 Mar 2026 16:15:49 -0400 Subject: [PATCH 5/9] fix a prettier formatting issue --- src/typescript-generator/specification.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/typescript-generator/specification.js b/src/typescript-generator/specification.js index a5cfd5447..707e5acc1 100644 --- a/src/typescript-generator/specification.js +++ b/src/typescript-generator/specification.js @@ -25,7 +25,9 @@ export class Specification { async load(urlOrPath) { this.rootRequirement = new Requirement( - await bundle(urlOrPath, { resolve: { http: { safeUrlResolver: false } } }), + await bundle(urlOrPath, { + resolve: { http: { safeUrlResolver: false } }, + }), urlOrPath, this, ); From 109494b894aec3c19b2d43c1d6794580135fc3d9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 30 Mar 2026 20:43:48 +0000 Subject: [PATCH 6/9] fix: convert filesystem paths to file:// URLs for json-schema-ref-parser v15 Windows compatibility Agent-Logs-Url: https://github.com/pmcelhaney/counterfact/sessions/ed1bb836-8839-47a2-ab23-9dd8e09d36e5 --- src/server/openapi-middleware.ts | 7 ++++++- src/typescript-generator/specification.js | 8 +++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/server/openapi-middleware.ts b/src/server/openapi-middleware.ts index 23d80a48f..bfb546725 100644 --- a/src/server/openapi-middleware.ts +++ b/src/server/openapi-middleware.ts @@ -1,3 +1,5 @@ +import { pathToFileURL } from "node:url"; + import { bundle } from "@apidevtools/json-schema-ref-parser"; import yaml from "js-yaml"; import type Koa from "koa"; @@ -5,7 +7,10 @@ import type Koa from "koa"; export function openapiMiddleware(openApiPath: string, url: string) { return async (ctx: Koa.ExtendableContext, next: Koa.Next) => { if (ctx.URL.pathname === "/counterfact/openapi") { - const openApiDocument = (await bundle(openApiPath)) as { + const resolvedPath = /^https?:\/\/|^file:\/\//.test(openApiPath) + ? openApiPath + : pathToFileURL(openApiPath).href; + const openApiDocument = (await bundle(resolvedPath)) as { host?: string; servers?: { description: string; url: string }[]; }; diff --git a/src/typescript-generator/specification.js b/src/typescript-generator/specification.js index 707e5acc1..1c9b530c6 100644 --- a/src/typescript-generator/specification.js +++ b/src/typescript-generator/specification.js @@ -1,3 +1,5 @@ +import { pathToFileURL } from "node:url"; + import createDebug from "debug"; import { Requirement } from "./requirement.js"; import { bundle } from "@apidevtools/json-schema-ref-parser"; @@ -24,8 +26,12 @@ export class Specification { } async load(urlOrPath) { + const resolvedPath = /^https?:\/\/|^file:\/\//.test(urlOrPath) + ? urlOrPath + : pathToFileURL(urlOrPath).href; + this.rootRequirement = new Requirement( - await bundle(urlOrPath, { + await bundle(resolvedPath, { resolve: { http: { safeUrlResolver: false } }, }), urlOrPath, From cfb520c7e47892f522de91ec078ef0a01386d005 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 30 Mar 2026 22:03:16 +0000 Subject: [PATCH 7/9] fix: patch json-schema-ref-parser to recognize forward-slash Windows paths Agent-Logs-Url: https://github.com/pmcelhaney/counterfact/sessions/244e50f1-c68f-47a5-93d2-85529e38c5d8 --- ...@apidevtools+json-schema-ref-parser+15.1.3.patch | 13 +++++++++++++ src/server/openapi-middleware.ts | 7 +------ src/typescript-generator/specification.js | 8 +------- 3 files changed, 15 insertions(+), 13 deletions(-) create mode 100644 patches/@apidevtools+json-schema-ref-parser+15.1.3.patch diff --git a/patches/@apidevtools+json-schema-ref-parser+15.1.3.patch b/patches/@apidevtools+json-schema-ref-parser+15.1.3.patch new file mode 100644 index 000000000..947b79e28 --- /dev/null +++ b/patches/@apidevtools+json-schema-ref-parser+15.1.3.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/url.js b/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/url.js +index 1234567..abcdefg 100644 +--- a/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/url.js ++++ b/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/url.js +@@ -4,7 +4,7 @@ + const jsonPointerSlash = /~1/g; + const jsonPointerTilde = /~0/g; + import { isWindows } from "./is-windows.js"; +-const isAbsoluteWin32Path = /^[a-zA-Z]:\\/; ++const isAbsoluteWin32Path = /^[a-zA-Z]:[/\\]/; + // RegExp patterns to URL-encode special characters in local filesystem paths + const urlEncodePatterns = [ + [/\?/g, "%3F"], diff --git a/src/server/openapi-middleware.ts b/src/server/openapi-middleware.ts index bfb546725..23d80a48f 100644 --- a/src/server/openapi-middleware.ts +++ b/src/server/openapi-middleware.ts @@ -1,5 +1,3 @@ -import { pathToFileURL } from "node:url"; - import { bundle } from "@apidevtools/json-schema-ref-parser"; import yaml from "js-yaml"; import type Koa from "koa"; @@ -7,10 +5,7 @@ import type Koa from "koa"; export function openapiMiddleware(openApiPath: string, url: string) { return async (ctx: Koa.ExtendableContext, next: Koa.Next) => { if (ctx.URL.pathname === "/counterfact/openapi") { - const resolvedPath = /^https?:\/\/|^file:\/\//.test(openApiPath) - ? openApiPath - : pathToFileURL(openApiPath).href; - const openApiDocument = (await bundle(resolvedPath)) as { + const openApiDocument = (await bundle(openApiPath)) as { host?: string; servers?: { description: string; url: string }[]; }; diff --git a/src/typescript-generator/specification.js b/src/typescript-generator/specification.js index 1c9b530c6..707e5acc1 100644 --- a/src/typescript-generator/specification.js +++ b/src/typescript-generator/specification.js @@ -1,5 +1,3 @@ -import { pathToFileURL } from "node:url"; - import createDebug from "debug"; import { Requirement } from "./requirement.js"; import { bundle } from "@apidevtools/json-schema-ref-parser"; @@ -26,12 +24,8 @@ export class Specification { } async load(urlOrPath) { - const resolvedPath = /^https?:\/\/|^file:\/\//.test(urlOrPath) - ? urlOrPath - : pathToFileURL(urlOrPath).href; - this.rootRequirement = new Requirement( - await bundle(resolvedPath, { + await bundle(urlOrPath, { resolve: { http: { safeUrlResolver: false } }, }), urlOrPath, From ac7b29cf81f4837a526db41e7c29d323909cfb90 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 5 May 2026 01:30:58 +0000 Subject: [PATCH 8/9] Initial plan From 35abb323f8dcbdf8ba2959e8319705160168f4ca Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 5 May 2026 01:37:08 +0000 Subject: [PATCH 9/9] fix(deps): upgrade json-schema-ref-parser to v15.3.5, remove patch-package patch Agent-Logs-Url: https://github.com/counterfact/api-simulator/sessions/a3e217ad-e561-4485-b55d-b8b7f3c45e03 --- .../upgrade-json-schema-ref-parser-v15.3.5.md | 5 +++++ package.json | 2 +- ...@apidevtools+json-schema-ref-parser+15.1.3.patch | 13 ------------- yarn.lock | 8 ++++---- 4 files changed, 10 insertions(+), 18 deletions(-) create mode 100644 .changeset/upgrade-json-schema-ref-parser-v15.3.5.md delete mode 100644 patches/@apidevtools+json-schema-ref-parser+15.1.3.patch diff --git a/.changeset/upgrade-json-schema-ref-parser-v15.3.5.md b/.changeset/upgrade-json-schema-ref-parser-v15.3.5.md new file mode 100644 index 000000000..b2ac20568 --- /dev/null +++ b/.changeset/upgrade-json-schema-ref-parser-v15.3.5.md @@ -0,0 +1,5 @@ +--- +"counterfact": patch +--- + +Upgrade `@apidevtools/json-schema-ref-parser` from 15.1.3 to 15.3.5. The new version includes a built-in fix for Windows paths using forward slashes (`C:/...`), making the `patch-package` patch unnecessary. diff --git a/package.json b/package.json index 724fd9788..ecdf20bc9 100644 --- a/package.json +++ b/package.json @@ -123,7 +123,7 @@ "using-temporary-files": "2.2.1" }, "dependencies": { - "@apidevtools/json-schema-ref-parser": "15.1.3", + "@apidevtools/json-schema-ref-parser": "15.3.5", "@hapi/accept": "6.0.3", "@types/json-schema": "7.0.15", "ajv": "8.18.0", diff --git a/patches/@apidevtools+json-schema-ref-parser+15.1.3.patch b/patches/@apidevtools+json-schema-ref-parser+15.1.3.patch deleted file mode 100644 index 947b79e28..000000000 --- a/patches/@apidevtools+json-schema-ref-parser+15.1.3.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/url.js b/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/url.js -index 1234567..abcdefg 100644 ---- a/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/url.js -+++ b/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/url.js -@@ -4,7 +4,7 @@ - const jsonPointerSlash = /~1/g; - const jsonPointerTilde = /~0/g; - import { isWindows } from "./is-windows.js"; --const isAbsoluteWin32Path = /^[a-zA-Z]:\\/; -+const isAbsoluteWin32Path = /^[a-zA-Z]:[/\\]/; - // RegExp patterns to URL-encode special characters in local filesystem paths - const urlEncodePatterns = [ - [/\?/g, "%3F"], diff --git a/yarn.lock b/yarn.lock index 37d95a30b..2b8b8cbea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,10 +10,10 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@apidevtools/json-schema-ref-parser@15.1.3": - version "15.1.3" - resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-15.1.3.tgz#4dc45f3807cea9be807cfca0daf582d8c935f0f0" - integrity sha512-XvEitlOaU8S+hOrMPuGyCjp6vC51K+syUN4HHrSUdSDLLWRWQJYjInU6xlSoRGCVBCfcoHxbRm+yiaYq2yFR5w== +"@apidevtools/json-schema-ref-parser@15.3.5": + version "15.3.5" + resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-15.3.5.tgz#503726178d8d792eea7b195566272aaee6837e2f" + integrity sha512-orNOYXw3hYXxxisXMldjzjBzqqTLBPbwOtHg7ovBPvfBHDue1qM9YJENZ3W2BQuS+7z4ThogMbEzEsov57Itkg== dependencies: js-yaml "^4.1.1"