diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3137a5b..2e537c1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,7 +32,7 @@ jobs: latest=$(npm view "$name" version 2>/dev/null || true) floor=$(printf '%s\n%s\n' "$main" "$latest" | sort -V | tail -1) versions=$(npm view "$name" versions --json 2>/dev/null || true) - next=$(npx -y -p @leemour/cli-core@0.17.0 cli-dev next-version "$pr" "$floor" "$versions") + next=$(npx -y -p @wirecat/cli-core@0.19.0 cli-dev next-version "$pr" "$floor" "$versions") [ "$next" != "$pr" ] || exit 0 echo "::warning file=package.json::version $pr is not above both main ($main) and npm's latest ($latest)" \ "— bin/release will publish it as $next" diff --git a/.vale.ini b/.vale.ini index 82d00da..5d6e030 100644 --- a/.vale.ini +++ b/.vale.ini @@ -1,4 +1,4 @@ -StylesPath = node_modules/@leemour/cli-core/config/vale +StylesPath = node_modules/@wirecat/cli-core/config/vale MinAlertLevel = warning [*.md] diff --git a/CHANGELOG.md b/CHANGELOG.md index c364b4f..8020d63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,16 @@ Notable changes to `@wirecat/cli-testing`, one section per version, newest first Every entry says what changed as a caller sees it, why, and what to watch for — the rules are [`docs/dev/CONVENTIONS.md`](docs/dev/CONVENTIONS.md#the-changelog). -## Unreleased +## 0.1.0 — 10.10.2026 + +### Fixed + +- Development tools use `@wirecat/cli-core` 0.19.0. +- When pinned Semgrep cannot parse a complete TypeScript file, scan its runtime JavaScript with pinned esbuild, retaining original errors, source maps and explicit type-syntax coverage limits. Compilation or missing runtime coverage fails the run. +- The scanner helper requires Node 22.16 or newer. +- **Agent fixtures support private dialogs with different addresses and message IDs per account.** + Set the sender's dialog and enable per-account IDs in the private cast; each case needs a unique + synthetic label to prove receipt and cleanup on the owner's side. ### Added @@ -24,28 +33,12 @@ Every entry says what changed as a caller sees it, why, and what to watch for - Offline search research under `performance/search/`: synthetic fixtures and historical ranking evidence moved from cli-messaging, a launcher against an explicit build, and a detailed model guide. The published suite API is unchanged. - -## 0.1.0 — 10.10.2026 - -### Fixed - -- When pinned Semgrep cannot parse a complete TypeScript file, scan its runtime JavaScript with pinned esbuild, retaining original errors, source maps and explicit type-syntax coverage limits. Compilation or missing runtime coverage fails the run. -- The scanner helper requires Node 22.16 or newer. -- **Agent fixtures support private dialogs with different addresses and message IDs per account.** - Set the sender's dialog and enable per-account IDs in the private cast; each case needs a unique - synthetic label to prove receipt and cleanup on the owner's side. - -### Added - - **Security and agent commands create private run folders.** `security scan`, `security socket` and `agent` wrap the existing scripts, record pins and exit codes, and leave crashes incomplete. Agent runs require an explicit live flag, caller-owned configuration, and a passing blocked-write canary. - - **Run comparison distinguishes new, fixed and returning scanner observations.** Carry history with `--previous`; legacy scanner runs are read without edits. Transcript redactions support file snapshots. - - **The suite groups** — `SUITE_GROUPS`: security, contract, performance, ux, analyzers, live, seed. - - **The security audit, written down to repeat** — `docs/security/` (method, runbook, agent test, reviewer prompts, lessons) and the scripts it uses: `scripts/security/scan`, `scripts/security/socket`, `scripts/agent/run-agent`, `scripts/agent/run-payload`. diff --git a/biome.json b/biome.json index f85ca1b..e6d135c 100644 --- a/biome.json +++ b/biome.json @@ -1,6 +1,6 @@ { "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", - "extends": ["@leemour/cli-core/biome"], + "extends": ["@wirecat/cli-core/biome"], "files": { "includes": ["**", "!**/dist", "!**/node_modules", "!pnpm-lock.yaml", "!.claude/settings.json"], "maxSize": 16777216 diff --git a/cspell.json b/cspell.json index 1a3790c..ce6d84a 100644 --- a/cspell.json +++ b/cspell.json @@ -1,6 +1,6 @@ { "version": "0.2", - "import": ["@leemour/cli-core/cspell", "@cspell/dict-en-gb/cspell-ext.json", "@cspell/dict-ru_ru/cspell-ext.json"], + "import": ["@wirecat/cli-core/cspell", "@cspell/dict-en-gb/cspell-ext.json", "@cspell/dict-ru_ru/cspell-ext.json"], "ignorePaths": ["docs/dev/**", "CHANGELOG.md"], "words": ["wirecat", "WireCat"] } diff --git a/lefthook.yml b/lefthook.yml index 2ab9404..39bf2b5 100644 --- a/lefthook.yml +++ b/lefthook.yml @@ -1,2 +1,2 @@ extends: - - node_modules/@leemour/cli-core/config/lefthook.yml + - node_modules/@wirecat/cli-core/config/lefthook.yml diff --git a/package.json b/package.json index 09ee523..bf21a64 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "typecheck": "tsc --build --force --emitDeclarationOnly && tsc -p tsconfig.test.json && tsc -p tsconfig.scripts.json", "lint": "biome check .", "lint:fix": "biome check --write .", - "docs:check": "cli-dev docs-check --rules scripts/docs-rules.ts && cspell --no-progress --no-summary README.md && rumdl check --config node_modules/@leemour/cli-core/config/rumdl.toml README.md CHANGELOG.md CLAUDE.md docs/dev/*.md docs/security/*.md", + "docs:check": "cli-dev docs-check --rules scripts/docs-rules.ts && cspell --no-progress --no-summary README.md && rumdl check --config node_modules/@wirecat/cli-core/config/rumdl.toml README.md CHANGELOG.md CLAUDE.md docs/dev/*.md docs/security/*.md", "test": "vitest run", "test:watch": "vitest", "test:coverage": "vitest run --coverage", @@ -52,7 +52,7 @@ "@biomejs/biome": "^2.5.15", "@cspell/dict-en-gb": "^5.0.34", "@cspell/dict-ru_ru": "^2.3.2", - "@leemour/cli-core": "0.17.0", + "@wirecat/cli-core": "0.19.0", "@types/node": "^22.20.5", "@vitest/coverage-v8": "^5.0.3", "cspell": "^10.3.6", diff --git a/performance/search/matrix/tsconfig.json b/performance/search/matrix/tsconfig.json index c737575..c927fa3 100644 --- a/performance/search/matrix/tsconfig.json +++ b/performance/search/matrix/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "@leemour/cli-core/tsconfig.base.json", + "extends": "@wirecat/cli-core/tsconfig.base.json", "compilerOptions": { "noEmit": true, "composite": false, diff --git a/performance/search/message-search/tsconfig.json b/performance/search/message-search/tsconfig.json index e3b79c5..3c1f0e4 100644 --- a/performance/search/message-search/tsconfig.json +++ b/performance/search/message-search/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "@leemour/cli-core/tsconfig.base.json", + "extends": "@wirecat/cli-core/tsconfig.base.json", "compilerOptions": { "noEmit": true, "composite": false, diff --git a/performance/search/model-free/tsconfig.json b/performance/search/model-free/tsconfig.json index c737575..c927fa3 100644 --- a/performance/search/model-free/tsconfig.json +++ b/performance/search/model-free/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "@leemour/cli-core/tsconfig.base.json", + "extends": "@wirecat/cli-core/tsconfig.base.json", "compilerOptions": { "noEmit": true, "composite": false, diff --git a/performance/search/validation/tsconfig.json b/performance/search/validation/tsconfig.json index c737575..c927fa3 100644 --- a/performance/search/validation/tsconfig.json +++ b/performance/search/validation/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "@leemour/cli-core/tsconfig.base.json", + "extends": "@wirecat/cli-core/tsconfig.base.json", "compilerOptions": { "noEmit": true, "composite": false, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 549eae0..6058c3d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,15 +17,15 @@ importers: '@cspell/dict-ru_ru': specifier: ^2.3.2 version: 2.3.2 - '@leemour/cli-core': - specifier: 0.17.0 - version: 0.17.0(commander@15.0.0)(typescript@7.0.2) '@types/node': specifier: ^22.20.5 version: 22.20.5 '@vitest/coverage-v8': specifier: ^5.0.3 version: 5.0.3(vitest@5.0.3) + '@wirecat/cli-core': + specifier: 0.19.0 + version: 0.19.0(commander@15.0.0)(typescript@7.0.2) cspell: specifier: ^10.3.6 version: 10.3.6 @@ -376,16 +376,6 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@leemour/cli-core@0.17.0': - resolution: {integrity: sha512-Z17n7CdNu9dGs4yV0Uvnve30nJ6lAUB2Vd2SlR5SgOIbaTss38Xa43BM9nsoPccSMy7bhPOrp/alItoUdCOCxQ==} - engines: {node: '>=22'} - hasBin: true - peerDependencies: - commander: '>=15' - peerDependenciesMeta: - commander: - optional: true - '@napi-rs/keyring-darwin-arm64@2.1.0': resolution: {integrity: sha512-j6ATTOhmPW+N5EKwi8Yzn6P4Bz/uqnxzyYvqOL73/dgzDSYG5pS5eprqpVmOLse68WUTf79ZMqz97HnfvirJ9g==} engines: {node: '>= 10'} @@ -781,6 +771,16 @@ packages: '@vitest/spy@5.0.3': resolution: {integrity: sha512-XhFysQTB8AZ+P4gMi+Lpo99vg2AZi0qKpaB9yXQl37+CaMEAPO3iH/wGVnSyL5MPERiLezpqTVtrR6UZH5GCXg==} + '@wirecat/cli-core@0.19.0': + resolution: {integrity: sha512-pGtphpeXqS87eRu20CJoB28MRwKdqKuHQe7ORuyiFo+BgA/IZ1KMPfP4VYXye3/kSAWksDLojOLvfyeslhk4wA==} + engines: {node: '>=22'} + hasBin: true + peerDependencies: + commander: '>=15' + peerDependenciesMeta: + commander: + optional: true + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -1629,20 +1629,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.6.0 - '@leemour/cli-core@0.17.0(commander@15.0.0)(typescript@7.0.2)': - dependencies: - cli-table3: 0.6.5 - cross-spawn: 7.0.6 - env-paths: 4.0.0 - picocolors: 1.1.1 - pino: 10.4.0 - valibot: 1.5.0(typescript@7.0.2) - optionalDependencies: - '@napi-rs/keyring': 2.1.0 - commander: 15.0.0 - transitivePeerDependencies: - - typescript - '@napi-rs/keyring-darwin-arm64@2.1.0': optional: true @@ -1869,6 +1855,20 @@ snapshots: '@vitest/spy@5.0.3': {} + '@wirecat/cli-core@0.19.0(commander@15.0.0)(typescript@7.0.2)': + dependencies: + cli-table3: 0.6.5 + cross-spawn: 7.0.6 + env-paths: 4.0.0 + picocolors: 1.1.1 + pino: 10.4.0 + valibot: 1.5.0(typescript@7.0.2) + optionalDependencies: + '@napi-rs/keyring': 2.1.0 + commander: 15.0.0 + transitivePeerDependencies: + - typescript + ansi-regex@5.0.1: {} ansi-regex@6.4.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 1fa157b..6e5a8a1 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -4,3 +4,5 @@ allowBuilds: esbuild: true lefthook: true +minimumReleaseAgeExclude: + - '@wirecat/cli-core@0.19.0' diff --git a/scripts/docs-rules.ts b/scripts/docs-rules.ts index 1f214c6..ab55d3f 100644 --- a/scripts/docs-rules.ts +++ b/scripts/docs-rules.ts @@ -2,7 +2,7 @@ // Bash sandbox that includes the unreadable placeholders it lays over .claude/; git knows which files are real. import { execFileSync } from "node:child_process" import { join } from "node:path" -import { type DocsRules, JOURNAL_IDS } from "@leemour/cli-core/release" +import { type DocsRules, JOURNAL_IDS } from "@wirecat/cli-core/release" export const CHANGELOG = { headings: ["Added", "Changed — may break callers", "Fixed", "Security", "Removed"], diff --git a/tsconfig.json b/tsconfig.json index 2a9f3bb..c9066e9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "@leemour/cli-core/tsconfig.base.json", + "extends": "@wirecat/cli-core/tsconfig.base.json", "compilerOptions": { "rootDir": "src", "outDir": "dist" diff --git a/tsconfig.scripts.json b/tsconfig.scripts.json index 59a474a..ae6c470 100644 --- a/tsconfig.scripts.json +++ b/tsconfig.scripts.json @@ -1 +1 @@ -{ "extends": ["./tsconfig.json", "@leemour/cli-core/tsconfig.scripts.json"] } +{ "extends": ["./tsconfig.json", "@wirecat/cli-core/tsconfig.scripts.json"] } diff --git a/tsconfig.test.json b/tsconfig.test.json index 5a7155b..086d96d 100644 --- a/tsconfig.test.json +++ b/tsconfig.test.json @@ -1 +1 @@ -{ "extends": ["./tsconfig.json", "@leemour/cli-core/tsconfig.test.json"] } +{ "extends": ["./tsconfig.json", "@wirecat/cli-core/tsconfig.test.json"] }