From 916f753189a43293b7c6e1aef20c44902fc40288 Mon Sep 17 00:00:00 2001 From: Antony Rizzitelli Date: Fri, 13 Nov 2026 13:06:54 +0000 Subject: [PATCH 1/2] ci: run the checks on Windows beside Linux Bump @antelopejs/tooling-configs to 0.5.8, which ships Windows support for the pack's checks, and sync its managed files. --- .agents/skills/verify-interface/SKILL.md | 2 +- .github/workflows/ci.yml | 1 + README.md | 2 +- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/.agents/skills/verify-interface/SKILL.md b/.agents/skills/verify-interface/SKILL.md index 1831b0a..781f581 100644 --- a/.agents/skills/verify-interface/SKILL.md +++ b/.agents/skills/verify-interface/SKILL.md @@ -73,7 +73,7 @@ Each journey deletes its scratch folder and `HOME`, its install included, when i - `context.prepared(key, build)` does the preparation many journeys repeat once per run, such as scaffolding and installing a project, and returns the journey's own copy at `/`. The first journey that asks for `key` runs `build(folder)` on the empty folder with its usual steps, after a step `prepared ` that marks them as the build and says whether it was kept. A build is kept until `clean` only when it returns, records at least one check, passes every check, and leaves only files, directories and symlinks in the folder. Every later journey of the run, also in a later `journey` command, gets a fresh copy and one step, `prepared `, that names the journey that built it and holds that build's evidence under `build/`. A build that is not kept is built again by the next journey, and rerunning the journey that built builds again. An absolute symlink into the folder points into each copy; other symlinks keep their target. A file with a hard link outside the folder, such as a package file pnpm links from its store, is linked into each copy rather than copied: `context.edit` gives it a new inode, and a journey that writes it another way replaces it instead of writing it in place. `build` writes only inside the folder it is given: a write elsewhere, such as a sibling under `` or the repository, stays with the journey that built. Two concurrent `journey` commands that reach the same key at once both build, and the first to finish is kept. A project `build` creates with `scaffold` starts each copy as `scaffold` starts one: a copy with no installed module gets a module cache an earlier passing journey kept, and a passing journey keeps the registry modules installed into its copy. The commands `build` runs get a `HOME` of their own that is deleted when it ends: redo after `prepared` anything a later step needs in `HOME`, such as `ajs config set git`. Pass the same `build` for a key in every journey. - `env`, `setup` (commands replacing the build), `userFacing` and `shared` (globs replacing the kind's default; `shared` lists the files whose change runs every feature), and `formal` (formal checks: `name`, `covers`, `command`, `violation` with an optional `states` group for the counterexample length, and optionally `behaviour` and `baseCommand`). -- `services`: image, port, readiness command and a `reset` command run before every journey, as for a module. `new` starts them in Docker on free ports; a journey reads them with `context.service(name)` and `context.native(...)`. +- `services`: image, port, optional `args`, readiness command and a `reset` command run before every journey, as for a module. `new` starts them in Docker on free ports; a journey reads them with `context.service(name)` and `context.native(...)`. - `interface.provide(api, services)` runs in the stub provider after the generic stubs attach, for example to hand a client pointed at `services` to `internal.SetClient`. - `interface.calls[":"]` calls a plain exported function from the consumer and states the value it must return. - `interface.providerSide[":"]` names a function only providers call, with the reason. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 81eabb3..ea0d51b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,6 +19,7 @@ jobs: docs-typescript-project: docs/tsconfig.json renovate-sync: false test-job: true + windows: true permissions: contents: read renovate-sync: diff --git a/README.md b/README.md index 3126fc3..06e6af2 100644 --- a/README.md +++ b/README.md @@ -119,7 +119,7 @@ pnpm test | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | API | [`interface-api`](https://github.com/AntelopeJS/interface-api) · [`interface-api-util`](https://github.com/AntelopeJS/interface-api-util) · [`interface-data-api`](https://github.com/AntelopeJS/interface-data-api) | [`api`](https://github.com/AntelopeJS/api) | | Auth | [`interface-auth`](https://github.com/AntelopeJS/interface-auth) | [`auth-jwt`](https://github.com/AntelopeJS/auth-jwt) | -| Database | **`interface-database`** · [`interface-database-decorators`](https://github.com/AntelopeJS/interface-database-decorators) · [`interface-database-catalog`](https://github.com/AntelopeJS/interface-database-catalog) · [`interface-mongodb`](https://github.com/AntelopeJS/interface-mongodb) · [`interface-rethinkdb`](https://github.com/AntelopeJS/interface-rethinkdb) | [`postgres`](https://github.com/AntelopeJS/postgres) · [`mongodb`](https://github.com/AntelopeJS/mongodb) · [`rethinkdb`](https://github.com/AntelopeJS/rethinkdb) | +| Database | **`interface-database`** · [`interface-database-decorators`](https://github.com/AntelopeJS/interface-database-decorators) · [`interface-database-catalog`](https://github.com/AntelopeJS/interface-database-catalog) · [`interface-mongodb`](https://github.com/AntelopeJS/interface-mongodb) · [`interface-rethinkdb`](https://github.com/AntelopeJS/interface-rethinkdb) | [`postgres`](https://github.com/AntelopeJS/postgres) · [`mysql`](https://github.com/AntelopeJS/mysql) · [`mongodb`](https://github.com/AntelopeJS/mongodb) · [`rethinkdb`](https://github.com/AntelopeJS/rethinkdb) | | Redis | [`interface-redis`](https://github.com/AntelopeJS/interface-redis) · [`interface-redis-scheduler`](https://github.com/AntelopeJS/interface-redis-scheduler) | [`redis`](https://github.com/AntelopeJS/redis) | | Email | [`interface-email`](https://github.com/AntelopeJS/interface-email) | [`nodemailer`](https://github.com/AntelopeJS/nodemailer) · [`brevo`](https://github.com/AntelopeJS/brevo) | | File storage | [`interface-file-storage`](https://github.com/AntelopeJS/interface-file-storage) | [`file-storage-local`](https://github.com/AntelopeJS/file-storage-local) · [`file-storage-s3`](https://github.com/AntelopeJS/file-storage-s3) | diff --git a/package.json b/package.json index 2fd896a..e8641f9 100644 --- a/package.json +++ b/package.json @@ -127,7 +127,7 @@ "@antelopejs/core": "^1.21.0", "@antelopejs/interface-core": ">=0.2.4 <1.0.0", "@antelopejs/mongodb": "1.6.0", - "@antelopejs/tooling-configs": "^0.5.5", + "@antelopejs/tooling-configs": "^0.5.8", "@types/chai": "^4.3.20", "@types/mocha": "^10.0.10", "@types/node": "^22.19.15", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 683a948..b227a75 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,8 +21,8 @@ importers: specifier: 1.6.0 version: 1.6.0(socks@2.8.7) '@antelopejs/tooling-configs': - specifier: ^0.5.5 - version: 0.5.5(eslint-plugin-perfectionist@5.11.0(eslint@10.10.0(jiti@2.7.0))(typescript@5.9.3))(knip@6.34.0)(oxfmt@0.66.0)(oxlint@1.81.0(oxlint-tsgolint@7.0.2001)) + specifier: ^0.5.8 + version: 0.5.8(eslint-plugin-perfectionist@5.11.0(eslint@10.10.0(jiti@2.7.0))(typescript@5.9.3))(knip@6.34.0)(oxfmt@0.66.0)(oxlint@1.81.0(oxlint-tsgolint@7.0.2001)) '@types/chai': specifier: ^4.3.20 version: 4.3.20 @@ -99,8 +99,8 @@ packages: '@antelopejs/mongodb@1.6.0': resolution: {integrity: sha512-HKPw1FC+NDqHe0B7ceEUGpbH8oOg9AcdEhcBjSnBwrmf0Z0hWwn2T95p0hEcW3TunaFRoueAJsQjSdUqdckSFA==} - '@antelopejs/tooling-configs@0.5.5': - resolution: {integrity: sha512-03QagBC3hE4GAtEF+vwEYWvQfD1oqik+3OrvzT6MaII88vwHdWJOiyqUcHW0ul+ujG4GBL5nDO+wmBciTxQB+g==} + '@antelopejs/tooling-configs@0.5.8': + resolution: {integrity: sha512-F4q6E2HWXEF0f6MHHOCQGheRzaNkX4e8JeYI92x6KajWJIkk8HroThU8jmIaP7Q23w6fIv8fveHtyc7pJ2hQHg==} engines: {node: '>=22.18.0'} hasBin: true peerDependencies: @@ -2827,7 +2827,7 @@ snapshots: - snappy - socks - '@antelopejs/tooling-configs@0.5.5(eslint-plugin-perfectionist@5.11.0(eslint@10.10.0(jiti@2.7.0))(typescript@5.9.3))(knip@6.34.0)(oxfmt@0.66.0)(oxlint@1.81.0(oxlint-tsgolint@7.0.2001))': + '@antelopejs/tooling-configs@0.5.8(eslint-plugin-perfectionist@5.11.0(eslint@10.10.0(jiti@2.7.0))(typescript@5.9.3))(knip@6.34.0)(oxfmt@0.66.0)(oxlint@1.81.0(oxlint-tsgolint@7.0.2001))': dependencies: '@oxlint/plugins': 1.81.0 dts-bundle-generator: 9.5.1 From 502344c736e79d4db5a9d7951745196e67ce4535 Mon Sep 17 00:00:00 2001 From: Antony Rizzitelli Date: Fri, 13 Nov 2026 13:07:27 +0000 Subject: [PATCH 2/2] fix: check out text files with LF line endings on every platform With core.autocrlf=true, the default of Git for Windows, .agents/setup was checked out with CRLF and bash refused it. --- .gitattributes | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6313b56 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf