diff --git a/README.md b/README.md index 6bf02db..ce5a2b0 100644 --- a/README.md +++ b/README.md @@ -7,24 +7,13 @@ all-or-nothing setup: install the packages that fit your workflow. | Package | Description | | --- | --- | | [@iurysza/pi-ext](packages/pi-ext) | Command palette, review tooling, session workflows, TUI polish, and Pi integrations. | +| [@iurysza/artifact-explorer](packages/artifact-explorer) | Open each repository's `ai-artifacts/` directory as an isolated Obsidian vault. | | [@iurysza/pi-ghost-in-the-machine](packages/pi-ghost-in-the-machine) | Reactive Ghostty shader face for Pi lifecycle states. | | [@iurysza/pi-token-tank](packages/pi-token-tank) | Subscription quota gauges for OpenAI Codex, Kimi, GitHub Copilot, and Cursor. | | [@iurysza/pi-agent-explorer](packages/pi-agent-explorer) | Read-only Neovim snapshot of Pi's loaded runtime. | | [@iurysza/pi-context-audit](packages/pi-context-audit) | Inspect prompt, tool-schema, context, and MCP overhead. | -| [@iurysza/pi-tmux-title](packages/pi-tmux-title) | Keep Pi and tmux window titles aligned with the session. | | [@iurysza/pi-secret-env](packages/pi-secret-env) | Load shared credentials while blocking and redacting secret access. | -## Install - -Install any package with Pi: - -```bash -pi install npm:@iurysza/pi-token-tank -``` - -Restart Pi or run `/reload` after installation. Each package README covers its -configuration and requirements. - ## Development ```bash @@ -39,4 +28,12 @@ under [`packages/`](packages) is independently publishable. The root [MIT license](LICENSE) covers Iury-owned packages. `pi-ext` and `pi-ghost-in-the-machine` retain their own licenses and attribution notices. -See [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). \ No newline at end of file +See [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). + +## Install + +```bash +pi install npm:@iurysza/ +``` + +See each package's README for setup and usage. \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 7aaefdb..b016ff6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2526,6 +2526,448 @@ "node": ">=22.19.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", + "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", + "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", + "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", + "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", + "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", + "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", + "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", + "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", + "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", + "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", + "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", + "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", + "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", + "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", + "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", + "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", + "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", + "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", + "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", + "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", + "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", + "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", + "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", + "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", + "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", + "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@google/genai": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/@google/genai/-/genai-1.52.0.tgz", @@ -2550,6 +2992,10 @@ } } }, + "node_modules/@iurysza/artifact-explorer": { + "resolved": "packages/artifact-explorer", + "link": true + }, "node_modules/@iurysza/pi-agent-explorer": { "resolved": "packages/pi-agent-explorer", "link": true @@ -2570,10 +3016,6 @@ "resolved": "packages/pi-secret-env", "link": true }, - "node_modules/@iurysza/pi-tmux-title": { - "resolved": "packages/pi-tmux-title", - "link": true - }, "node_modules/@iurysza/pi-token-tank": { "resolved": "packages/pi-token-tank", "link": true @@ -4262,6 +4704,48 @@ "once": "^1.4.0" } }, + "node_modules/esbuild": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", + "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.1", + "@esbuild/android-arm": "0.28.1", + "@esbuild/android-arm64": "0.28.1", + "@esbuild/android-x64": "0.28.1", + "@esbuild/darwin-arm64": "0.28.1", + "@esbuild/darwin-x64": "0.28.1", + "@esbuild/freebsd-arm64": "0.28.1", + "@esbuild/freebsd-x64": "0.28.1", + "@esbuild/linux-arm": "0.28.1", + "@esbuild/linux-arm64": "0.28.1", + "@esbuild/linux-ia32": "0.28.1", + "@esbuild/linux-loong64": "0.28.1", + "@esbuild/linux-mips64el": "0.28.1", + "@esbuild/linux-ppc64": "0.28.1", + "@esbuild/linux-riscv64": "0.28.1", + "@esbuild/linux-s390x": "0.28.1", + "@esbuild/linux-x64": "0.28.1", + "@esbuild/netbsd-arm64": "0.28.1", + "@esbuild/netbsd-x64": "0.28.1", + "@esbuild/openbsd-arm64": "0.28.1", + "@esbuild/openbsd-x64": "0.28.1", + "@esbuild/openharmony-arm64": "0.28.1", + "@esbuild/sunos-x64": "0.28.1", + "@esbuild/win32-arm64": "0.28.1", + "@esbuild/win32-ia32": "0.28.1", + "@esbuild/win32-x64": "0.28.1" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -4454,6 +4938,21 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "license": "MIT" }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/gaxios": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.3.0.tgz", @@ -5832,6 +6331,25 @@ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, + "node_modules/tsx": { + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.23.1.tgz", + "integrity": "sha512-GQHnkIfxyx1wYCOS/wonik5MVRZU9hi1TEZmzGZSCJB1y9YgoZ8H6itNE/u4suE+yLmOzuE4E5S4TZ/ZX2wcWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.28.0" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -6168,21 +6686,14 @@ "url": "https://github.com/sponsors/wooorm" } }, - "packages/pi-agent-explorer": { - "name": "@iurysza/pi-agent-explorer", - "version": "0.1.0", - "license": "MIT", - "peerDependencies": { - "@earendil-works/pi-coding-agent": "*" - } - }, - "packages/pi-context-audit": { - "name": "@iurysza/pi-context-audit", + "packages/artifact-explorer": { + "name": "@iurysza/artifact-explorer", "version": "0.1.0", "license": "MIT", "devDependencies": { "@earendil-works/pi-coding-agent": "^0.80.10", - "@types/node": "^24.12.0", + "@types/node": "^24.12.4", + "tsx": "^4.19.0", "typescript": "^5.9.3" }, "engines": { @@ -6192,7 +6703,7 @@ "@earendil-works/pi-coding-agent": "*" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-coding-agent/-/pi-coding-agent-0.80.10.tgz", "integrity": "sha512-aL4apbupCHiVLSXASXvRzH4Q2vmtfrDa+0s909CJuVu/GgGylbDzr7oyF1mPmip5E+VxYYxKWmph4hV04wUcQg==", @@ -6229,7 +6740,7 @@ "@mariozechner/clipboard": "0.3.9" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@anthropic-ai/sdk": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@anthropic-ai/sdk": { "version": "0.91.1", "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.91.1.tgz", "integrity": "sha512-LAmu761tSN9r66ixvmciswUj/ZC+1Q4iAfpedTfSVLeswRwnY3n2Nb6Tsk+cLPP28aLOPWeMgIuTuCcMC6W/iw==", @@ -6250,7 +6761,7 @@ } } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/crc32": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/crc32": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", @@ -6265,7 +6776,7 @@ "node": ">=16.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-browser": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-browser": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", @@ -6281,7 +6792,7 @@ "tslib": "^2.6.2" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-js": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-js": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", @@ -6296,7 +6807,7 @@ "node": ">=16.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/supports-web-crypto": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/supports-web-crypto": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", @@ -6306,7 +6817,7 @@ "tslib": "^2.6.2" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/util": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/util": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", @@ -6318,7 +6829,7 @@ "tslib": "^2.6.2" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/client-bedrock-runtime": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/client-bedrock-runtime": { "version": "3.1048.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.1048.0.tgz", "integrity": "sha512-u+NT61JZEkRFtpL0CAw1N1dwxnaLgwVXQl/zjJxTGgLyS/jTIdg2SdoEoCTHxgDyCnqa1HEi9QOoE9/pYRNpOQ==", @@ -6344,7 +6855,7 @@ "node": ">=20.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/core": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/core": { "version": "3.974.11", "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.11.tgz", "integrity": "sha512-QpnINq5FZH6EOaDEkmHdT7eUunbvD27pDNQypaWjFyYz7Zl1q3UCMQErBZxpmfGfI7MvI2TlK8KTkgNpv8b1ug==", @@ -6364,7 +6875,7 @@ "node": ">=20.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-env": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-env": { "version": "3.972.37", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.37.tgz", "integrity": "sha512-/jpPvEh6f7ntmIzf7dNxoNX6Q8vt8UpesCjbW6mFfk4V1NW6bIy9qxcQ6WbA8As5yQhsZOe+xeNd4xHX8kdY2Q==", @@ -6381,7 +6892,7 @@ "node": ">=20.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-http": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-http": { "version": "3.972.39", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.39.tgz", "integrity": "sha512-pIgTpisWyWg7X1bUbzSjuUYosYTD0Ghz2M0hkSTmb3a6i3qV3uU+NYJPI/E2XSC0HcsZh5rsLPzeXrkb2DS0Cg==", @@ -6400,7 +6911,7 @@ "node": ">=20.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-ini": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-ini": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.41.tgz", "integrity": "sha512-u2tyjaxJJzW8UtW4SM1ZcPMDwO6y+kV+llvou+Adts0FAKyzes5jG4izQN+KX3yE8ZROpS5y1LJ//xL2iSf76w==", @@ -6425,7 +6936,7 @@ "node": ">=20.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-login": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-login": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.41.tgz", "integrity": "sha512-0LBitxXiAiaE5nlFPfpNIww/8FRY/I7WIndWsc9GmNFOM7cE1wNpVNQEGEk9Outg5l8xl+3vybxFyUy4l9q/LQ==", @@ -6443,7 +6954,7 @@ "node": ">=20.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-node": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-node": { "version": "3.972.42", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.42.tgz", "integrity": "sha512-D4oon2zbqqsWOJUM99Gm3/ZyJ0IJvTXVN3PyloGb3kQEyI36fjCZheZj422lAgTWWd6TSHgiImLt3RIaLdv3dQ==", @@ -6466,7 +6977,7 @@ "node": ">=20.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-process": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-process": { "version": "3.972.37", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.37.tgz", "integrity": "sha512-7nVaHBUaWIddASYfVaA9O4D5ZVjewU3sCol9WqZPGfW0nR+0WqE0xHZnD/U2L33PlOB8KNXGKZ6wOES/QijKzg==", @@ -6483,7 +6994,7 @@ "node": ">=20.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-sso": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-sso": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.41.tgz", "integrity": "sha512-IOWAWEHe5LkjSKkkUUX9ciV6Y1scHTsnfEkdt5yyC4Slrc7AGbkLPrpntjqh18ksJAMOaVhoBsO8p2WyTcY2wQ==", @@ -6502,7 +7013,7 @@ "node": ">=20.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-web-identity": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-web-identity": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.41.tgz", "integrity": "sha512-mbACk9Yypa8nm4iGZLs0PofOXEcTDOUw6wDnsPXNDNSd2WNXs1tSo+6nc/fh0jLYdfVZThhBL98PHW4aXFsG5A==", @@ -6520,7 +7031,7 @@ "node": ">=20.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/eventstream-handler-node": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/eventstream-handler-node": { "version": "3.972.16", "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.972.16.tgz", "integrity": "sha512-yedpPgKftqjU5SlPFHfqWpOw6xSCRieWRG1euWOlXn4WJxt2VX92VprCa2PpSOXjVCAeK6dTjW9eJRXVig9yGA==", @@ -6536,7 +7047,7 @@ "node": ">=20.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-eventstream": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-eventstream": { "version": "3.972.12", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.972.12.tgz", "integrity": "sha512-tHTHHCHNrq6XklQvlzHBDJG4Iuhh7NVPRdtmvP+nHFA+5sxPlIDzlAHHgfoYHGvT3NXP1yVP/L5c3opUn6T3Qg==", @@ -6552,7 +7063,7 @@ "node": ">=20.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-websocket": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-websocket": { "version": "3.972.19", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-websocket/-/middleware-websocket-3.972.19.tgz", "integrity": "sha512-mkEhOGYozqKQkbFaVrjwr0faiwwZza1v5/jSY6Tucm3bD+uKTazIUH/4Yo6aMnQD2ua2W9cMP6s8mvwTcjtqHw==", @@ -6571,7 +7082,7 @@ "node": ">= 14.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/nested-clients": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/nested-clients": { "version": "3.997.9", "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.9.tgz", "integrity": "sha512-jPR3rnmRI4hWYyzfmTGBr7NblMp8QYYeflHXba1H6+7CGrWVqWKQzaXFQ4qbExqPRsXN3T3L3JxFhr6aouXUGQ==", @@ -6593,7 +7104,7 @@ "node": ">=20.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/signature-v4-multi-region": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/signature-v4-multi-region": { "version": "3.996.27", "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.27.tgz", "integrity": "sha512-0Phbz4t6HI3D3skxvG2uI+VWU034/nSIw1T8d+FPzzQG9EQTrw94o9mOKO2Gv3n3Oc8P7JD7RAUxkoneLWv5Eg==", @@ -6610,7 +7121,7 @@ "node": ">=20.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/token-providers": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/token-providers": { "version": "3.1048.0", "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1048.0.tgz", "integrity": "sha512-k0y/GcuesuSfWyUM0WamrGyeZmltRYaPbHO82UDA6mZ/doB+FOHKutikPAtSXMn/hDz970cF+iRuuiYO9VEbAA==", @@ -6628,7 +7139,7 @@ "node": ">=20.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/types": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/types": { "version": "3.973.8", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.8.tgz", "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==", @@ -6642,7 +7153,7 @@ "node": ">=20.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/util-locate-window": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/util-locate-window": { "version": "3.965.5", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==", @@ -6655,7 +7166,7 @@ "node": ">=20.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/xml-builder": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/xml-builder": { "version": "3.972.24", "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.24.tgz", "integrity": "sha512-V8z5YcDPfsvzrBlj0xR1vhRtocblhYbqdreCJB/voGd4Sr5zjNAeWxexbnqVtskTJe0vFb5KMqbSL++ePl+zRw==", @@ -6671,7 +7182,7 @@ "node": ">=20.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws/lambda-invoke-store": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws/lambda-invoke-store": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", @@ -6681,7 +7192,7 @@ "node": ">=18.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@babel/runtime": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@babel/runtime": { "version": "7.29.2", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", @@ -6691,7 +7202,7 @@ "node": ">=6.9.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-agent-core": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-agent-core": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.80.10.tgz", "dev": true, @@ -6706,7 +7217,7 @@ "node": ">=22.19.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-ai": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-ai": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.80.10.tgz", "dev": true, @@ -6731,7 +7242,7 @@ "node": ">=22.19.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-tui": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-tui": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.80.10.tgz", "dev": true, @@ -6744,7 +7255,7 @@ "node": ">=22.19.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@google/genai": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@google/genai": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/@google/genai/-/genai-1.52.0.tgz", "integrity": "sha512-gwSvbpiN/17O9TbsqSsE/OzZcpv5Fo4RQjdngGgogtuB9RsyJ8ZHhX5KjHj1bp5N9snN2eK8LDGXSaWW2hof8Q==", @@ -6769,7 +7280,7 @@ } } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard/-/clipboard-0.3.9.tgz", "integrity": "sha512-ABnA53mdfkGZwOFUdZNv2S0CWGO/EIuPj8Vv9xmBFmSYg/qFc7ihO6q5FcQjvoE67kZpWkEc4AhD6B/os04yuA==", @@ -6792,7 +7303,7 @@ "@mariozechner/clipboard-win32-x64-msvc": "0.3.9" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-arm64": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-arm64": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-darwin-arm64/-/clipboard-darwin-arm64-0.3.9.tgz", "integrity": "sha512-BfgV7vCEWZwJwZJw03r6bP5+tf0iI/ANuQYCxi9RNn7FrWB3yzGuMKCrNLRl6V761vXRdL8+OqZ0wd4TqlsNOQ==", @@ -6809,7 +7320,7 @@ "node": ">= 10" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-universal": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-universal": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-darwin-universal/-/clipboard-darwin-universal-0.3.9.tgz", "integrity": "sha512-BGGR4iA9Z2shAjI65eI5xtyb3LYNlDW9X3gxKxDbqtbnREohsrqznov6zpKoIrsRWpzlYVEdKphS7ksJ0/ndSQ==", @@ -6823,7 +7334,7 @@ "node": ">= 10" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-x64": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-x64": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-darwin-x64/-/clipboard-darwin-x64-0.3.9.tgz", "integrity": "sha512-4kURmCbS6nt8uYhtmWpUcJWyPHfmAr5dTpXD1nO3pIfa+TSQ9DbrGOYCKH+aEFW47XhQ4Vp8ZTszie+wfFvDKg==", @@ -6840,7 +7351,7 @@ "node": ">= 10" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-gnu": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-gnu": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-arm64-gnu/-/clipboard-linux-arm64-gnu-0.3.9.tgz", "integrity": "sha512-g59OkUGP2DDfCOIKypHeYgv2M55u/cKvXa5dSxFbEJ34XvIQMdcVmpKCkGUro3ZgefXiGVdwguvTMQGpHWzIXw==", @@ -6860,7 +7371,7 @@ "node": ">= 10" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-musl": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-musl": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-arm64-musl/-/clipboard-linux-arm64-musl-0.3.9.tgz", "integrity": "sha512-AGuJdgKsmJdm4Pych7kv3sqe591ERRaAHW3xjLooiFzn8J+PxUyof++7YZrB5Y5tpnTO+K18Og3taj2NpluCRQ==", @@ -6880,7 +7391,7 @@ "node": ">= 10" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-riscv64-gnu": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-riscv64-gnu": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-riscv64-gnu/-/clipboard-linux-riscv64-gnu-0.3.9.tgz", "integrity": "sha512-DXBEAiuMpk7dhS1a9NzNxVAFi1vaKoPu7rQNgY8LIDLGrK3lnIp3nT10DUum+PKVJoJppIP+NAA8IZe4DMNDPw==", @@ -6900,7 +7411,7 @@ "node": ">= 10" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-gnu": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-gnu": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-x64-gnu/-/clipboard-linux-x64-gnu-0.3.9.tgz", "integrity": "sha512-WORrMLd6EpElEME7JRKfSaY34nW1P5LbdgK5YNCS1ncG2LqmITsSMEJ8nh2mpvxb3TxqbOOKgY7k9eMJYlW9Mw==", @@ -6920,7 +7431,7 @@ "node": ">= 10" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-musl": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-musl": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-x64-musl/-/clipboard-linux-x64-musl-0.3.9.tgz", "integrity": "sha512-/DHn+1DrfL6oRaPPWXaOKvonFFrni666fxd+zFqiQEfvBH0tsHVWjq9iqBk0oDp0qaPA72lIMy5BptxISBEhZQ==", @@ -6940,7 +7451,7 @@ "node": ">= 10" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-arm64-msvc": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-arm64-msvc": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-win32-arm64-msvc/-/clipboard-win32-arm64-msvc-0.3.9.tgz", "integrity": "sha512-O5FHD3ErkMwMhNzAfu3ggy0ug4z7btZuoQgwwxlzPrwV2bxlD6WDpqBY4NCgICAgZdDKdp+loUEKVAVt8aYnhQ==", @@ -6957,7 +7468,7 @@ "node": ">= 10" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-x64-msvc": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-x64-msvc": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-win32-x64-msvc/-/clipboard-win32-x64-msvc-0.3.9.tgz", "integrity": "sha512-ihQC3EufqEY81vhXBgVBtK4prL+wc62zJsSvxrgz7K1hsdt6OObz6v9p3Rn1OG3GJksTTKMJF0u/guMISHPhSA==", @@ -6974,7 +7485,7 @@ "node": ">= 10" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mistralai/mistralai": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@mistralai/mistralai": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/@mistralai/mistralai/-/mistralai-2.2.6.tgz", "integrity": "sha512-W8pX7zHxjJvMIpw8JMxeJEleapXX0Q9NPszdNzqkM3MIEoIGPObdodujj+WHteXEvGfaP/AMwlNyRfEzSY6dQQ==", @@ -6995,7 +7506,7 @@ } } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@nodable/entities": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@nodable/entities": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz", "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==", @@ -7008,7 +7519,7 @@ ], "license": "MIT" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/api": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/api": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", @@ -7018,7 +7529,7 @@ "node": ">=8.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/semantic-conventions": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/semantic-conventions": { "version": "1.41.1", "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.41.1.tgz", "integrity": "sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA==", @@ -7028,35 +7539,35 @@ "node": ">=14" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/aspromise": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/base64": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/base64": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/codegen": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/codegen": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz", "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/eventemitter": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/eventemitter": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/fetch": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/fetch": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz", "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==", @@ -7066,42 +7577,42 @@ "@protobufjs/aspromise": "^1.1.1" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/float": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/float": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/path": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/path": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/pool": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/pool": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/utf8": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/utf8": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.1.tgz", "integrity": "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@silvia-odwyer/photon-node": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@silvia-odwyer/photon-node": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/@silvia-odwyer/photon-node/-/photon-node-0.3.4.tgz", "integrity": "sha512-bnly4BKB3KDTFxrUIcgCLbaeVVS8lrAkri1pEzskpmxu9MdfGQTy8b8EgcD83ywD3RPMsIulY8xJH5Awa+t9fA==", "dev": true, "license": "Apache-2.0" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/core": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/core": { "version": "3.24.3", "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.24.3.tgz", "integrity": "sha512-Ep/7tPamGY8mgESE3LyLKtxJyy6U52WWAqr/3wial47Sj4u3PiIF73AOGI27UyLy9duTkhZbgzodOfLV4TduZg==", @@ -7116,7 +7627,7 @@ "node": ">=18.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/credential-provider-imds": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/credential-provider-imds": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.3.tgz", "integrity": "sha512-I2Bti0DKFo2IJyN28ijCsx51BAumEYR4/1yZ1FXyBygy9MqbnMqCev4JPth/MbpRfBSRAX35hITSnAdJRo1u5w==", @@ -7131,7 +7642,7 @@ "node": ">=18.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/fetch-http-handler": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/fetch-http-handler": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.4.3.tgz", "integrity": "sha512-F+DRf8IJazRJgYog2A/yJK7eYVc0rqTlRzO+5ZxjJd4WkZoKz0IJRncf7G6t1pdVT3kryJcwuTFhN1c5m6N47A==", @@ -7146,7 +7657,7 @@ "node": ">=18.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/is-array-buffer": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/is-array-buffer": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", @@ -7159,7 +7670,7 @@ "node": ">=14.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/node-http-handler": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/node-http-handler": { "version": "4.7.3", "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.3.tgz", "integrity": "sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA==", @@ -7174,7 +7685,7 @@ "node": ">=18.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/signature-v4": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/signature-v4": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.4.3.tgz", "integrity": "sha512-53+75QuPl6DL+ct6vVEB51FDO5oulXr20TPV46VvJZg76lIlXNWfxi8j+G2V/t0I2qxCBOa3vX/8bmjrpFVo9g==", @@ -7189,7 +7700,7 @@ "node": ">=18.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/types": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/types": { "version": "4.14.2", "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.2.tgz", "integrity": "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw==", @@ -7202,7 +7713,7 @@ "node": ">=18.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-buffer-from": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-buffer-from": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", @@ -7216,7 +7727,7 @@ "node": ">=14.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-utf8": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-utf8": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", @@ -7230,7 +7741,7 @@ "node": ">=14.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@types/node": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/@types/node": { "version": "22.19.19", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.19.tgz", "integrity": "sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew==", @@ -7240,7 +7751,7 @@ "undici-types": "~6.21.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/agent-base": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/agent-base": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", @@ -7250,7 +7761,7 @@ "node": ">= 14" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/balanced-match": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/balanced-match": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", @@ -7260,7 +7771,7 @@ "node": "18 || 20 || >=22" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/base64-js": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", @@ -7281,7 +7792,7 @@ ], "license": "MIT" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/bignumber.js": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/bignumber.js": { "version": "9.3.1", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", @@ -7291,14 +7802,14 @@ "node": "*" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/bowser": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/bowser": { "version": "2.14.1", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", "dev": true, "license": "MIT" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/brace-expansion": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/brace-expansion": { "version": "5.0.6", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", @@ -7311,14 +7822,14 @@ "node": "18 || 20 || >=22" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/buffer-equal-constant-time": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/chalk": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/chalk": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", @@ -7331,7 +7842,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/cross-spawn": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", @@ -7346,7 +7857,7 @@ "node": ">= 8" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/data-uri-to-buffer": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/data-uri-to-buffer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", @@ -7356,7 +7867,7 @@ "node": ">= 12" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/debug": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", @@ -7374,7 +7885,7 @@ } } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/diff": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/diff": { "version": "8.0.4", "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", @@ -7384,7 +7895,7 @@ "node": ">=0.3.1" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/ecdsa-sig-formatter": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", @@ -7394,14 +7905,14 @@ "safe-buffer": "^5.0.1" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/extend": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true, "license": "MIT" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-builder": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-builder": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz", "integrity": "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==", @@ -7418,7 +7929,7 @@ "xml-naming": "^0.1.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-parser": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-parser": { "version": "5.7.3", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.3.tgz", "integrity": "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==", @@ -7440,7 +7951,7 @@ "fxparser": "src/cli/cli.js" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/fetch-blob": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/fetch-blob": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", @@ -7464,7 +7975,7 @@ "node": "^12.20 || >= 14.13" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/formdata-polyfill": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/formdata-polyfill": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", @@ -7477,7 +7988,7 @@ "node": ">=12.20.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/gaxios": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/gaxios": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.1.4.tgz", "integrity": "sha512-bTIgTsM2bWn3XklZISBTQX7ZSddGW+IO3bMdGaemHZ3tbqExMENHLx6kKZ/KlejgrMtj8q7wBItt51yegqalrA==", @@ -7492,7 +8003,7 @@ "node": ">=18" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/gcp-metadata": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/gcp-metadata": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-8.1.2.tgz", "integrity": "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==", @@ -7507,7 +8018,7 @@ "node": ">=18" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/get-east-asian-width": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/get-east-asian-width": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", @@ -7520,7 +8031,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/glob": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/glob": { "version": "13.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", @@ -7538,7 +8049,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/google-auth-library": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/google-auth-library": { "version": "10.6.2", "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.6.2.tgz", "integrity": "sha512-e27Z6EThmVNNvtYASwQxose/G57rkRuaRbQyxM2bvYLLX/GqWZ5chWq2EBoUchJbCc57eC9ArzO5wMsEmWftCw==", @@ -7556,7 +8067,7 @@ "node": ">=18" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/google-logging-utils": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/google-logging-utils": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-1.1.3.tgz", "integrity": "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==", @@ -7566,14 +8077,14 @@ "node": ">=14" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/graceful-fs": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, "license": "ISC" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/highlight.js": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", @@ -7583,7 +8094,7 @@ "node": "*" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/hosted-git-info": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/hosted-git-info": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.3.tgz", "integrity": "sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==", @@ -7596,7 +8107,7 @@ "node": "^20.17.0 || >=22.9.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/http-proxy-agent": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", @@ -7610,7 +8121,7 @@ "node": ">= 14" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/https-proxy-agent": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", @@ -7624,7 +8135,7 @@ "node": ">= 14" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/ignore": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/ignore": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", @@ -7634,14 +8145,14 @@ "node": ">= 4" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/isexe": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, "license": "ISC" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/jiti": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/jiti": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", @@ -7651,7 +8162,7 @@ "jiti": "lib/jiti-cli.mjs" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/json-bigint": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/json-bigint": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", @@ -7661,7 +8172,7 @@ "bignumber.js": "^9.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/json-schema-to-ts": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/json-schema-to-ts": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-3.1.1.tgz", "integrity": "sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==", @@ -7675,7 +8186,7 @@ "node": ">=16" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/jwa": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/jwa": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", @@ -7687,7 +8198,7 @@ "safe-buffer": "^5.0.1" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/jws": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/jws": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", @@ -7698,14 +8209,14 @@ "safe-buffer": "^5.0.1" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/long": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/long": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", "dev": true, "license": "Apache-2.0" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/lru-cache": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/lru-cache": { "version": "11.4.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.4.0.tgz", "integrity": "sha512-W+R+kFL4HgVxONq2bhXPi3bGpzGe/yEhVOp233qw9wCRtgncJ15P3bC+e4zZMu4Cq7d+WAJjXGW0uUkifhcatA==", @@ -7715,7 +8226,7 @@ "node": "20 || >=22" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/marked": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/marked": { "version": "18.0.5", "resolved": "https://registry.npmjs.org/marked/-/marked-18.0.5.tgz", "integrity": "sha512-S6GcvALHg6K4ohtu4E7x0a1AqhAjp6cV8KhLSyN9qVapnzJkusVBxZRcIU9AeYsbe6P1hKDusSbEOzGyyuce6w==", @@ -7728,7 +8239,7 @@ "node": ">= 20" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/minimatch": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/minimatch": { "version": "10.2.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", @@ -7744,7 +8255,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/minipass": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/minipass": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", @@ -7754,14 +8265,14 @@ "node": ">=16 || 14 >=14.17" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/ms": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/node-domexception": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", @@ -7782,7 +8293,7 @@ "node": ">=10.5.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/node-fetch": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/node-fetch": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", @@ -7801,7 +8312,7 @@ "url": "https://opencollective.com/node-fetch" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/openai": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/openai": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/openai/-/openai-6.26.0.tgz", "integrity": "sha512-zd23dbWTjiJ6sSAX6s0HrCZi41JwTA1bQVs0wLQPZ2/5o2gxOJA5wh7yOAUgwYybfhDXyhwlpeQf7Mlgx8EOCA==", @@ -7823,7 +8334,7 @@ } } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", @@ -7837,21 +8348,21 @@ "node": ">=8" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry/node_modules/@types/retry": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry/node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true, "license": "MIT" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/partial-json": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/partial-json": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/partial-json/-/partial-json-0.1.7.tgz", "integrity": "sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==", "dev": true, "license": "MIT" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/path-expression-matcher": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/path-expression-matcher": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz", "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==", @@ -7867,7 +8378,7 @@ "node": ">=14.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/path-key": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", @@ -7877,7 +8388,7 @@ "node": ">=8" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/path-scurry": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/path-scurry": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", @@ -7894,7 +8405,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", @@ -7906,7 +8417,7 @@ "signal-exit": "^3.0.2" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile/node_modules/retry": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile/node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", @@ -7916,7 +8427,7 @@ "node": ">= 4" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/protobufjs": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/protobufjs": { "version": "7.6.4", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.4.tgz", "integrity": "sha512-RJJPTTpvFfHcWLkIa2JFWK4XvtSzS0yEWDmunqHXli1h3JlkbcQZXDZdcWxv+JK3Xsl5/UFDPZ0iGm7DAengYw==", @@ -7940,7 +8451,7 @@ "node": ">=12.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/retry": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", @@ -7950,7 +8461,7 @@ "node": ">= 4" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/safe-buffer": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", @@ -7971,7 +8482,7 @@ ], "license": "MIT" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/semver": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/semver": { "version": "7.8.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", @@ -7984,7 +8495,7 @@ "node": ">=10" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-command": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", @@ -7997,7 +8508,7 @@ "node": ">=8" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-regex": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", @@ -8007,14 +8518,14 @@ "node": ">=8" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/signal-exit": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/strnum": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/strnum": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.3.0.tgz", "integrity": "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==", @@ -8027,28 +8538,28 @@ ], "license": "MIT" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/ts-algebra": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/ts-algebra": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ts-algebra/-/ts-algebra-2.0.0.tgz", "integrity": "sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==", "dev": true, "license": "MIT" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/tslib": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, "license": "0BSD" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/typebox": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/typebox": { "version": "1.1.38", "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.1.38.tgz", "integrity": "sha512-pZ0aQPmMmXoUvSbeuWf/Hzsc+avNw/Zd6VeE8CFgkVGWyuHPJvqeJJDeJqLve+K70LvjYIoleGcoJHPT17cWoA==", "dev": true, "license": "MIT" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/undici": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/undici": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/undici/-/undici-8.5.0.tgz", "integrity": "sha512-xamtWoB1EshgjpmlXd7GGm2VfdDtw1+rD8uhry8pSNW3If6S8E0m2T2+orSKeZXEn/aPJMviCpDBA65WJt8zhg==", @@ -8058,14 +8569,14 @@ "node": ">=22.19.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/undici-types": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, "license": "MIT" }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/web-streams-polyfill": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/web-streams-polyfill": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", @@ -8075,7 +8586,7 @@ "node": ">= 8" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/which": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", @@ -8091,7 +8602,7 @@ "node": ">= 8" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/ws": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/ws": { "version": "8.21.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", @@ -8113,7 +8624,7 @@ } } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/xml-naming": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/xml-naming": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.1.0.tgz", "integrity": "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==", @@ -8129,7 +8640,7 @@ "node": ">=16.0.0" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/yaml": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/yaml": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", @@ -8145,7 +8656,7 @@ "url": "https://github.com/sponsors/eemeli" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/zod": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/zod": { "version": "3.25.76", "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", @@ -8155,7 +8666,7 @@ "url": "https://github.com/sponsors/colinhacks" } }, - "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/zod-to-json-schema": { + "packages/artifact-explorer/node_modules/@earendil-works/pi-coding-agent/node_modules/zod-to-json-schema": { "version": "3.25.2", "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", @@ -8165,40 +8676,31 @@ "zod": "^3.25.28 || ^4" } }, - "packages/pi-ext": { - "name": "@iurysza/pi-ext", + "packages/pi-agent-explorer": { + "name": "@iurysza/pi-agent-explorer", + "version": "0.1.0", + "license": "MIT", + "peerDependencies": { + "@earendil-works/pi-coding-agent": "*" + } + }, + "packages/pi-context-audit": { + "name": "@iurysza/pi-context-audit", "version": "0.1.0", "license": "MIT", - "dependencies": { - "@shikijs/cli": "^4.0.2", - "@sting8k/pi-vcc": "^0.3.5", - "@tintinweb/pi-tasks": "^0.4.2", - "better-sqlite3": "^12.10.0", - "diff": "^7.0.0" - }, "devDependencies": { - "@earendil-works/pi-agent-core": "^0.80.10", - "@earendil-works/pi-ai": "^0.80.10", "@earendil-works/pi-coding-agent": "^0.80.10", - "@earendil-works/pi-tui": "^0.80.10", - "typebox": "^1.1.32", - "typescript": "^7.0.2" + "@types/node": "^24.12.0", + "typescript": "^5.9.3" }, "engines": { "node": ">=22.19.0" }, - "optionalDependencies": { - "@ataraxy-labs/sem": "^0.3.21" - }, "peerDependencies": { - "@earendil-works/pi-agent-core": "*", - "@earendil-works/pi-ai": "*", - "@earendil-works/pi-coding-agent": "*", - "@earendil-works/pi-tui": "*", - "typebox": "*" + "@earendil-works/pi-coding-agent": "*" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-coding-agent/-/pi-coding-agent-0.80.10.tgz", "integrity": "sha512-aL4apbupCHiVLSXASXvRzH4Q2vmtfrDa+0s909CJuVu/GgGylbDzr7oyF1mPmip5E+VxYYxKWmph4hV04wUcQg==", @@ -8235,7 +8737,7 @@ "@mariozechner/clipboard": "0.3.9" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@anthropic-ai/sdk": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@anthropic-ai/sdk": { "version": "0.91.1", "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.91.1.tgz", "integrity": "sha512-LAmu761tSN9r66ixvmciswUj/ZC+1Q4iAfpedTfSVLeswRwnY3n2Nb6Tsk+cLPP28aLOPWeMgIuTuCcMC6W/iw==", @@ -8256,7 +8758,7 @@ } } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/crc32": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/crc32": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", @@ -8271,7 +8773,7 @@ "node": ">=16.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-browser": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-browser": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", @@ -8287,7 +8789,7 @@ "tslib": "^2.6.2" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-js": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-js": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", @@ -8302,7 +8804,7 @@ "node": ">=16.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/supports-web-crypto": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/supports-web-crypto": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", @@ -8312,7 +8814,7 @@ "tslib": "^2.6.2" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/util": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/util": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", @@ -8324,7 +8826,7 @@ "tslib": "^2.6.2" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/client-bedrock-runtime": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/client-bedrock-runtime": { "version": "3.1048.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.1048.0.tgz", "integrity": "sha512-u+NT61JZEkRFtpL0CAw1N1dwxnaLgwVXQl/zjJxTGgLyS/jTIdg2SdoEoCTHxgDyCnqa1HEi9QOoE9/pYRNpOQ==", @@ -8350,7 +8852,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/core": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/core": { "version": "3.974.11", "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.11.tgz", "integrity": "sha512-QpnINq5FZH6EOaDEkmHdT7eUunbvD27pDNQypaWjFyYz7Zl1q3UCMQErBZxpmfGfI7MvI2TlK8KTkgNpv8b1ug==", @@ -8370,7 +8872,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-env": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-env": { "version": "3.972.37", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.37.tgz", "integrity": "sha512-/jpPvEh6f7ntmIzf7dNxoNX6Q8vt8UpesCjbW6mFfk4V1NW6bIy9qxcQ6WbA8As5yQhsZOe+xeNd4xHX8kdY2Q==", @@ -8387,7 +8889,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-http": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-http": { "version": "3.972.39", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.39.tgz", "integrity": "sha512-pIgTpisWyWg7X1bUbzSjuUYosYTD0Ghz2M0hkSTmb3a6i3qV3uU+NYJPI/E2XSC0HcsZh5rsLPzeXrkb2DS0Cg==", @@ -8406,7 +8908,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-ini": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-ini": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.41.tgz", "integrity": "sha512-u2tyjaxJJzW8UtW4SM1ZcPMDwO6y+kV+llvou+Adts0FAKyzes5jG4izQN+KX3yE8ZROpS5y1LJ//xL2iSf76w==", @@ -8431,7 +8933,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-login": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-login": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.41.tgz", "integrity": "sha512-0LBitxXiAiaE5nlFPfpNIww/8FRY/I7WIndWsc9GmNFOM7cE1wNpVNQEGEk9Outg5l8xl+3vybxFyUy4l9q/LQ==", @@ -8449,7 +8951,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-node": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-node": { "version": "3.972.42", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.42.tgz", "integrity": "sha512-D4oon2zbqqsWOJUM99Gm3/ZyJ0IJvTXVN3PyloGb3kQEyI36fjCZheZj422lAgTWWd6TSHgiImLt3RIaLdv3dQ==", @@ -8472,7 +8974,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-process": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-process": { "version": "3.972.37", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.37.tgz", "integrity": "sha512-7nVaHBUaWIddASYfVaA9O4D5ZVjewU3sCol9WqZPGfW0nR+0WqE0xHZnD/U2L33PlOB8KNXGKZ6wOES/QijKzg==", @@ -8489,7 +8991,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-sso": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-sso": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.41.tgz", "integrity": "sha512-IOWAWEHe5LkjSKkkUUX9ciV6Y1scHTsnfEkdt5yyC4Slrc7AGbkLPrpntjqh18ksJAMOaVhoBsO8p2WyTcY2wQ==", @@ -8508,7 +9010,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-web-identity": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-web-identity": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.41.tgz", "integrity": "sha512-mbACk9Yypa8nm4iGZLs0PofOXEcTDOUw6wDnsPXNDNSd2WNXs1tSo+6nc/fh0jLYdfVZThhBL98PHW4aXFsG5A==", @@ -8526,7 +9028,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/eventstream-handler-node": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/eventstream-handler-node": { "version": "3.972.16", "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.972.16.tgz", "integrity": "sha512-yedpPgKftqjU5SlPFHfqWpOw6xSCRieWRG1euWOlXn4WJxt2VX92VprCa2PpSOXjVCAeK6dTjW9eJRXVig9yGA==", @@ -8542,7 +9044,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-eventstream": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-eventstream": { "version": "3.972.12", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.972.12.tgz", "integrity": "sha512-tHTHHCHNrq6XklQvlzHBDJG4Iuhh7NVPRdtmvP+nHFA+5sxPlIDzlAHHgfoYHGvT3NXP1yVP/L5c3opUn6T3Qg==", @@ -8558,7 +9060,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-websocket": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-websocket": { "version": "3.972.19", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-websocket/-/middleware-websocket-3.972.19.tgz", "integrity": "sha512-mkEhOGYozqKQkbFaVrjwr0faiwwZza1v5/jSY6Tucm3bD+uKTazIUH/4Yo6aMnQD2ua2W9cMP6s8mvwTcjtqHw==", @@ -8577,7 +9079,7 @@ "node": ">= 14.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/nested-clients": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/nested-clients": { "version": "3.997.9", "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.9.tgz", "integrity": "sha512-jPR3rnmRI4hWYyzfmTGBr7NblMp8QYYeflHXba1H6+7CGrWVqWKQzaXFQ4qbExqPRsXN3T3L3JxFhr6aouXUGQ==", @@ -8599,7 +9101,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/signature-v4-multi-region": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/signature-v4-multi-region": { "version": "3.996.27", "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.27.tgz", "integrity": "sha512-0Phbz4t6HI3D3skxvG2uI+VWU034/nSIw1T8d+FPzzQG9EQTrw94o9mOKO2Gv3n3Oc8P7JD7RAUxkoneLWv5Eg==", @@ -8616,7 +9118,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/token-providers": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/token-providers": { "version": "3.1048.0", "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1048.0.tgz", "integrity": "sha512-k0y/GcuesuSfWyUM0WamrGyeZmltRYaPbHO82UDA6mZ/doB+FOHKutikPAtSXMn/hDz970cF+iRuuiYO9VEbAA==", @@ -8634,7 +9136,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/types": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/types": { "version": "3.973.8", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.8.tgz", "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==", @@ -8648,7 +9150,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/util-locate-window": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/util-locate-window": { "version": "3.965.5", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==", @@ -8661,7 +9163,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/xml-builder": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/xml-builder": { "version": "3.972.24", "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.24.tgz", "integrity": "sha512-V8z5YcDPfsvzrBlj0xR1vhRtocblhYbqdreCJB/voGd4Sr5zjNAeWxexbnqVtskTJe0vFb5KMqbSL++ePl+zRw==", @@ -8677,7 +9179,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws/lambda-invoke-store": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws/lambda-invoke-store": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", @@ -8687,7 +9189,7 @@ "node": ">=18.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@babel/runtime": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@babel/runtime": { "version": "7.29.2", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", @@ -8697,7 +9199,7 @@ "node": ">=6.9.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-agent-core": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-agent-core": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.80.10.tgz", "dev": true, @@ -8712,7 +9214,7 @@ "node": ">=22.19.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-ai": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-ai": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.80.10.tgz", "dev": true, @@ -8737,7 +9239,7 @@ "node": ">=22.19.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-tui": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-tui": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.80.10.tgz", "dev": true, @@ -8750,7 +9252,7 @@ "node": ">=22.19.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@google/genai": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@google/genai": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/@google/genai/-/genai-1.52.0.tgz", "integrity": "sha512-gwSvbpiN/17O9TbsqSsE/OzZcpv5Fo4RQjdngGgogtuB9RsyJ8ZHhX5KjHj1bp5N9snN2eK8LDGXSaWW2hof8Q==", @@ -8775,7 +9277,7 @@ } } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard/-/clipboard-0.3.9.tgz", "integrity": "sha512-ABnA53mdfkGZwOFUdZNv2S0CWGO/EIuPj8Vv9xmBFmSYg/qFc7ihO6q5FcQjvoE67kZpWkEc4AhD6B/os04yuA==", @@ -8798,7 +9300,7 @@ "@mariozechner/clipboard-win32-x64-msvc": "0.3.9" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-arm64": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-arm64": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-darwin-arm64/-/clipboard-darwin-arm64-0.3.9.tgz", "integrity": "sha512-BfgV7vCEWZwJwZJw03r6bP5+tf0iI/ANuQYCxi9RNn7FrWB3yzGuMKCrNLRl6V761vXRdL8+OqZ0wd4TqlsNOQ==", @@ -8815,7 +9317,7 @@ "node": ">= 10" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-universal": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-universal": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-darwin-universal/-/clipboard-darwin-universal-0.3.9.tgz", "integrity": "sha512-BGGR4iA9Z2shAjI65eI5xtyb3LYNlDW9X3gxKxDbqtbnREohsrqznov6zpKoIrsRWpzlYVEdKphS7ksJ0/ndSQ==", @@ -8829,7 +9331,7 @@ "node": ">= 10" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-x64": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-x64": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-darwin-x64/-/clipboard-darwin-x64-0.3.9.tgz", "integrity": "sha512-4kURmCbS6nt8uYhtmWpUcJWyPHfmAr5dTpXD1nO3pIfa+TSQ9DbrGOYCKH+aEFW47XhQ4Vp8ZTszie+wfFvDKg==", @@ -8846,7 +9348,7 @@ "node": ">= 10" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-gnu": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-gnu": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-arm64-gnu/-/clipboard-linux-arm64-gnu-0.3.9.tgz", "integrity": "sha512-g59OkUGP2DDfCOIKypHeYgv2M55u/cKvXa5dSxFbEJ34XvIQMdcVmpKCkGUro3ZgefXiGVdwguvTMQGpHWzIXw==", @@ -8866,7 +9368,7 @@ "node": ">= 10" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-musl": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-musl": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-arm64-musl/-/clipboard-linux-arm64-musl-0.3.9.tgz", "integrity": "sha512-AGuJdgKsmJdm4Pych7kv3sqe591ERRaAHW3xjLooiFzn8J+PxUyof++7YZrB5Y5tpnTO+K18Og3taj2NpluCRQ==", @@ -8886,7 +9388,7 @@ "node": ">= 10" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-riscv64-gnu": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-riscv64-gnu": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-riscv64-gnu/-/clipboard-linux-riscv64-gnu-0.3.9.tgz", "integrity": "sha512-DXBEAiuMpk7dhS1a9NzNxVAFi1vaKoPu7rQNgY8LIDLGrK3lnIp3nT10DUum+PKVJoJppIP+NAA8IZe4DMNDPw==", @@ -8906,7 +9408,7 @@ "node": ">= 10" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-gnu": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-gnu": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-x64-gnu/-/clipboard-linux-x64-gnu-0.3.9.tgz", "integrity": "sha512-WORrMLd6EpElEME7JRKfSaY34nW1P5LbdgK5YNCS1ncG2LqmITsSMEJ8nh2mpvxb3TxqbOOKgY7k9eMJYlW9Mw==", @@ -8926,7 +9428,7 @@ "node": ">= 10" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-musl": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-musl": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-x64-musl/-/clipboard-linux-x64-musl-0.3.9.tgz", "integrity": "sha512-/DHn+1DrfL6oRaPPWXaOKvonFFrni666fxd+zFqiQEfvBH0tsHVWjq9iqBk0oDp0qaPA72lIMy5BptxISBEhZQ==", @@ -8946,7 +9448,7 @@ "node": ">= 10" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-arm64-msvc": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-arm64-msvc": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-win32-arm64-msvc/-/clipboard-win32-arm64-msvc-0.3.9.tgz", "integrity": "sha512-O5FHD3ErkMwMhNzAfu3ggy0ug4z7btZuoQgwwxlzPrwV2bxlD6WDpqBY4NCgICAgZdDKdp+loUEKVAVt8aYnhQ==", @@ -8963,7 +9465,7 @@ "node": ">= 10" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-x64-msvc": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-x64-msvc": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-win32-x64-msvc/-/clipboard-win32-x64-msvc-0.3.9.tgz", "integrity": "sha512-ihQC3EufqEY81vhXBgVBtK4prL+wc62zJsSvxrgz7K1hsdt6OObz6v9p3Rn1OG3GJksTTKMJF0u/guMISHPhSA==", @@ -8980,7 +9482,7 @@ "node": ">= 10" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mistralai/mistralai": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@mistralai/mistralai": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/@mistralai/mistralai/-/mistralai-2.2.6.tgz", "integrity": "sha512-W8pX7zHxjJvMIpw8JMxeJEleapXX0Q9NPszdNzqkM3MIEoIGPObdodujj+WHteXEvGfaP/AMwlNyRfEzSY6dQQ==", @@ -9001,7 +9503,7 @@ } } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@nodable/entities": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@nodable/entities": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz", "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==", @@ -9014,7 +9516,7 @@ ], "license": "MIT" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/api": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/api": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", @@ -9024,7 +9526,7 @@ "node": ">=8.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/semantic-conventions": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/semantic-conventions": { "version": "1.41.1", "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.41.1.tgz", "integrity": "sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA==", @@ -9034,35 +9536,35 @@ "node": ">=14" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/aspromise": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/base64": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/base64": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/codegen": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/codegen": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz", "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/eventemitter": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/eventemitter": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/fetch": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/fetch": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz", "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==", @@ -9072,42 +9574,42 @@ "@protobufjs/aspromise": "^1.1.1" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/float": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/float": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/path": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/path": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/pool": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/pool": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/utf8": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/utf8": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.1.tgz", "integrity": "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@silvia-odwyer/photon-node": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@silvia-odwyer/photon-node": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/@silvia-odwyer/photon-node/-/photon-node-0.3.4.tgz", "integrity": "sha512-bnly4BKB3KDTFxrUIcgCLbaeVVS8lrAkri1pEzskpmxu9MdfGQTy8b8EgcD83ywD3RPMsIulY8xJH5Awa+t9fA==", "dev": true, "license": "Apache-2.0" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/core": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/core": { "version": "3.24.3", "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.24.3.tgz", "integrity": "sha512-Ep/7tPamGY8mgESE3LyLKtxJyy6U52WWAqr/3wial47Sj4u3PiIF73AOGI27UyLy9duTkhZbgzodOfLV4TduZg==", @@ -9122,7 +9624,7 @@ "node": ">=18.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/credential-provider-imds": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/credential-provider-imds": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.3.tgz", "integrity": "sha512-I2Bti0DKFo2IJyN28ijCsx51BAumEYR4/1yZ1FXyBygy9MqbnMqCev4JPth/MbpRfBSRAX35hITSnAdJRo1u5w==", @@ -9137,7 +9639,7 @@ "node": ">=18.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/fetch-http-handler": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/fetch-http-handler": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.4.3.tgz", "integrity": "sha512-F+DRf8IJazRJgYog2A/yJK7eYVc0rqTlRzO+5ZxjJd4WkZoKz0IJRncf7G6t1pdVT3kryJcwuTFhN1c5m6N47A==", @@ -9152,7 +9654,7 @@ "node": ">=18.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/is-array-buffer": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/is-array-buffer": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", @@ -9165,7 +9667,7 @@ "node": ">=14.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/node-http-handler": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/node-http-handler": { "version": "4.7.3", "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.3.tgz", "integrity": "sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA==", @@ -9180,7 +9682,7 @@ "node": ">=18.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/signature-v4": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/signature-v4": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.4.3.tgz", "integrity": "sha512-53+75QuPl6DL+ct6vVEB51FDO5oulXr20TPV46VvJZg76lIlXNWfxi8j+G2V/t0I2qxCBOa3vX/8bmjrpFVo9g==", @@ -9195,7 +9697,7 @@ "node": ">=18.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/types": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/types": { "version": "4.14.2", "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.2.tgz", "integrity": "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw==", @@ -9208,7 +9710,7 @@ "node": ">=18.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-buffer-from": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-buffer-from": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", @@ -9222,7 +9724,7 @@ "node": ">=14.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-utf8": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-utf8": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", @@ -9236,7 +9738,7 @@ "node": ">=14.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@types/node": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/@types/node": { "version": "22.19.19", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.19.tgz", "integrity": "sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew==", @@ -9246,7 +9748,7 @@ "undici-types": "~6.21.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/agent-base": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/agent-base": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", @@ -9256,7 +9758,7 @@ "node": ">= 14" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/balanced-match": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/balanced-match": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", @@ -9266,7 +9768,7 @@ "node": "18 || 20 || >=22" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/base64-js": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", @@ -9287,7 +9789,7 @@ ], "license": "MIT" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/bignumber.js": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/bignumber.js": { "version": "9.3.1", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", @@ -9297,14 +9799,14 @@ "node": "*" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/bowser": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/bowser": { "version": "2.14.1", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", "dev": true, "license": "MIT" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/brace-expansion": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/brace-expansion": { "version": "5.0.6", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", @@ -9317,14 +9819,14 @@ "node": "18 || 20 || >=22" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/buffer-equal-constant-time": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/chalk": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/chalk": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", @@ -9337,7 +9839,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/cross-spawn": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", @@ -9352,7 +9854,7 @@ "node": ">= 8" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/data-uri-to-buffer": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/data-uri-to-buffer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", @@ -9362,7 +9864,7 @@ "node": ">= 12" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/debug": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", @@ -9380,7 +9882,7 @@ } } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/diff": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/diff": { "version": "8.0.4", "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", @@ -9390,7 +9892,7 @@ "node": ">=0.3.1" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/ecdsa-sig-formatter": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", @@ -9400,14 +9902,14 @@ "safe-buffer": "^5.0.1" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/extend": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true, "license": "MIT" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-builder": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-builder": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz", "integrity": "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==", @@ -9424,7 +9926,7 @@ "xml-naming": "^0.1.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-parser": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-parser": { "version": "5.7.3", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.3.tgz", "integrity": "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==", @@ -9446,7 +9948,7 @@ "fxparser": "src/cli/cli.js" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/fetch-blob": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/fetch-blob": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", @@ -9470,7 +9972,7 @@ "node": "^12.20 || >= 14.13" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/formdata-polyfill": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/formdata-polyfill": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", @@ -9483,7 +9985,7 @@ "node": ">=12.20.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/gaxios": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/gaxios": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.1.4.tgz", "integrity": "sha512-bTIgTsM2bWn3XklZISBTQX7ZSddGW+IO3bMdGaemHZ3tbqExMENHLx6kKZ/KlejgrMtj8q7wBItt51yegqalrA==", @@ -9498,7 +10000,7 @@ "node": ">=18" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/gcp-metadata": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/gcp-metadata": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-8.1.2.tgz", "integrity": "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==", @@ -9513,7 +10015,7 @@ "node": ">=18" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/get-east-asian-width": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/get-east-asian-width": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", @@ -9526,7 +10028,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/glob": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/glob": { "version": "13.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", @@ -9544,7 +10046,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/google-auth-library": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/google-auth-library": { "version": "10.6.2", "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.6.2.tgz", "integrity": "sha512-e27Z6EThmVNNvtYASwQxose/G57rkRuaRbQyxM2bvYLLX/GqWZ5chWq2EBoUchJbCc57eC9ArzO5wMsEmWftCw==", @@ -9562,7 +10064,7 @@ "node": ">=18" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/google-logging-utils": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/google-logging-utils": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-1.1.3.tgz", "integrity": "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==", @@ -9572,14 +10074,14 @@ "node": ">=14" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/graceful-fs": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, "license": "ISC" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/highlight.js": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", @@ -9589,7 +10091,7 @@ "node": "*" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/hosted-git-info": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/hosted-git-info": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.3.tgz", "integrity": "sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==", @@ -9602,7 +10104,7 @@ "node": "^20.17.0 || >=22.9.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/http-proxy-agent": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", @@ -9616,7 +10118,7 @@ "node": ">= 14" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/https-proxy-agent": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", @@ -9630,7 +10132,7 @@ "node": ">= 14" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/ignore": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/ignore": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", @@ -9640,14 +10142,14 @@ "node": ">= 4" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/isexe": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, "license": "ISC" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/jiti": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/jiti": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", @@ -9657,7 +10159,7 @@ "jiti": "lib/jiti-cli.mjs" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/json-bigint": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/json-bigint": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", @@ -9667,7 +10169,7 @@ "bignumber.js": "^9.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/json-schema-to-ts": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/json-schema-to-ts": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-3.1.1.tgz", "integrity": "sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==", @@ -9681,7 +10183,7 @@ "node": ">=16" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/jwa": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/jwa": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", @@ -9693,7 +10195,7 @@ "safe-buffer": "^5.0.1" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/jws": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/jws": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", @@ -9704,14 +10206,14 @@ "safe-buffer": "^5.0.1" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/long": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/long": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", "dev": true, "license": "Apache-2.0" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/lru-cache": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/lru-cache": { "version": "11.4.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.4.0.tgz", "integrity": "sha512-W+R+kFL4HgVxONq2bhXPi3bGpzGe/yEhVOp233qw9wCRtgncJ15P3bC+e4zZMu4Cq7d+WAJjXGW0uUkifhcatA==", @@ -9721,7 +10223,7 @@ "node": "20 || >=22" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/marked": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/marked": { "version": "18.0.5", "resolved": "https://registry.npmjs.org/marked/-/marked-18.0.5.tgz", "integrity": "sha512-S6GcvALHg6K4ohtu4E7x0a1AqhAjp6cV8KhLSyN9qVapnzJkusVBxZRcIU9AeYsbe6P1hKDusSbEOzGyyuce6w==", @@ -9734,7 +10236,7 @@ "node": ">= 20" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/minimatch": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/minimatch": { "version": "10.2.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", @@ -9750,7 +10252,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/minipass": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/minipass": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", @@ -9760,14 +10262,14 @@ "node": ">=16 || 14 >=14.17" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/ms": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/node-domexception": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", @@ -9788,7 +10290,7 @@ "node": ">=10.5.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/node-fetch": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/node-fetch": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", @@ -9807,7 +10309,7 @@ "url": "https://opencollective.com/node-fetch" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/openai": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/openai": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/openai/-/openai-6.26.0.tgz", "integrity": "sha512-zd23dbWTjiJ6sSAX6s0HrCZi41JwTA1bQVs0wLQPZ2/5o2gxOJA5wh7yOAUgwYybfhDXyhwlpeQf7Mlgx8EOCA==", @@ -9829,7 +10331,7 @@ } } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", @@ -9843,21 +10345,21 @@ "node": ">=8" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry/node_modules/@types/retry": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry/node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true, "license": "MIT" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/partial-json": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/partial-json": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/partial-json/-/partial-json-0.1.7.tgz", "integrity": "sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==", "dev": true, "license": "MIT" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/path-expression-matcher": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/path-expression-matcher": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz", "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==", @@ -9873,7 +10375,7 @@ "node": ">=14.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/path-key": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", @@ -9883,7 +10385,7 @@ "node": ">=8" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/path-scurry": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/path-scurry": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", @@ -9900,7 +10402,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", @@ -9912,7 +10414,7 @@ "signal-exit": "^3.0.2" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile/node_modules/retry": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile/node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", @@ -9922,7 +10424,7 @@ "node": ">= 4" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/protobufjs": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/protobufjs": { "version": "7.6.4", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.4.tgz", "integrity": "sha512-RJJPTTpvFfHcWLkIa2JFWK4XvtSzS0yEWDmunqHXli1h3JlkbcQZXDZdcWxv+JK3Xsl5/UFDPZ0iGm7DAengYw==", @@ -9946,7 +10448,7 @@ "node": ">=12.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/retry": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", @@ -9956,7 +10458,7 @@ "node": ">= 4" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/safe-buffer": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", @@ -9977,7 +10479,7 @@ ], "license": "MIT" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/semver": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/semver": { "version": "7.8.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", @@ -9990,7 +10492,7 @@ "node": ">=10" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-command": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", @@ -10003,7 +10505,7 @@ "node": ">=8" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-regex": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", @@ -10013,14 +10515,14 @@ "node": ">=8" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/signal-exit": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/strnum": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/strnum": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.3.0.tgz", "integrity": "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==", @@ -10033,28 +10535,28 @@ ], "license": "MIT" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/ts-algebra": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/ts-algebra": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ts-algebra/-/ts-algebra-2.0.0.tgz", "integrity": "sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==", "dev": true, "license": "MIT" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/tslib": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, "license": "0BSD" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/typebox": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/typebox": { "version": "1.1.38", "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.1.38.tgz", "integrity": "sha512-pZ0aQPmMmXoUvSbeuWf/Hzsc+avNw/Zd6VeE8CFgkVGWyuHPJvqeJJDeJqLve+K70LvjYIoleGcoJHPT17cWoA==", "dev": true, "license": "MIT" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/undici": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/undici": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/undici/-/undici-8.5.0.tgz", "integrity": "sha512-xamtWoB1EshgjpmlXd7GGm2VfdDtw1+rD8uhry8pSNW3If6S8E0m2T2+orSKeZXEn/aPJMviCpDBA65WJt8zhg==", @@ -10064,14 +10566,14 @@ "node": ">=22.19.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/undici-types": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, "license": "MIT" }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/web-streams-polyfill": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/web-streams-polyfill": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", @@ -10081,7 +10583,7 @@ "node": ">= 8" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/which": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", @@ -10097,7 +10599,7 @@ "node": ">= 8" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/ws": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/ws": { "version": "8.21.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", @@ -10119,7 +10621,7 @@ } } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/xml-naming": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/xml-naming": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.1.0.tgz", "integrity": "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==", @@ -10135,7 +10637,7 @@ "node": ">=16.0.0" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/yaml": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/yaml": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", @@ -10151,7 +10653,7 @@ "url": "https://github.com/sponsors/eemeli" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/zod": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/zod": { "version": "3.25.76", "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", @@ -10161,7 +10663,7 @@ "url": "https://github.com/sponsors/colinhacks" } }, - "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/zod-to-json-schema": { + "packages/pi-context-audit/node_modules/@earendil-works/pi-coding-agent/node_modules/zod-to-json-schema": { "version": "3.25.2", "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", @@ -10171,58 +10673,40 @@ "zod": "^3.25.28 || ^4" } }, - "packages/pi-ext/node_modules/typescript": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-7.0.2.tgz", - "integrity": "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc" - }, - "engines": { - "node": ">=16.20.0" - }, - "optionalDependencies": { - "@typescript/typescript-aix-ppc64": "7.0.2", - "@typescript/typescript-darwin-arm64": "7.0.2", - "@typescript/typescript-darwin-x64": "7.0.2", - "@typescript/typescript-freebsd-arm64": "7.0.2", - "@typescript/typescript-freebsd-x64": "7.0.2", - "@typescript/typescript-linux-arm": "7.0.2", - "@typescript/typescript-linux-arm64": "7.0.2", - "@typescript/typescript-linux-loong64": "7.0.2", - "@typescript/typescript-linux-mips64el": "7.0.2", - "@typescript/typescript-linux-ppc64": "7.0.2", - "@typescript/typescript-linux-riscv64": "7.0.2", - "@typescript/typescript-linux-s390x": "7.0.2", - "@typescript/typescript-linux-x64": "7.0.2", - "@typescript/typescript-netbsd-arm64": "7.0.2", - "@typescript/typescript-netbsd-x64": "7.0.2", - "@typescript/typescript-openbsd-arm64": "7.0.2", - "@typescript/typescript-openbsd-x64": "7.0.2", - "@typescript/typescript-sunos-x64": "7.0.2", - "@typescript/typescript-win32-arm64": "7.0.2", - "@typescript/typescript-win32-x64": "7.0.2" - } - }, - "packages/pi-ghost-in-the-machine": { - "name": "@iurysza/pi-ghost-in-the-machine", + "packages/pi-ext": { + "name": "@iurysza/pi-ext", "version": "0.1.0", "license": "MIT", + "dependencies": { + "@shikijs/cli": "^4.0.2", + "@sting8k/pi-vcc": "^0.3.5", + "@tintinweb/pi-tasks": "^0.4.2", + "better-sqlite3": "^12.10.0", + "diff": "^7.0.0" + }, "devDependencies": { + "@earendil-works/pi-agent-core": "^0.80.10", + "@earendil-works/pi-ai": "^0.80.10", "@earendil-works/pi-coding-agent": "^0.80.10", - "@types/node": "^24.12.4", - "typescript": "^5.9.3" + "@earendil-works/pi-tui": "^0.80.10", + "typebox": "^1.1.32", + "typescript": "^7.0.2" }, "engines": { "node": ">=22.19.0" }, + "optionalDependencies": { + "@ataraxy-labs/sem": "^0.3.21" + }, "peerDependencies": { - "@earendil-works/pi-coding-agent": ">=0.80.4" + "@earendil-works/pi-agent-core": "*", + "@earendil-works/pi-ai": "*", + "@earendil-works/pi-coding-agent": "*", + "@earendil-works/pi-tui": "*", + "typebox": "*" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-coding-agent/-/pi-coding-agent-0.80.10.tgz", "integrity": "sha512-aL4apbupCHiVLSXASXvRzH4Q2vmtfrDa+0s909CJuVu/GgGylbDzr7oyF1mPmip5E+VxYYxKWmph4hV04wUcQg==", @@ -10259,7 +10743,7 @@ "@mariozechner/clipboard": "0.3.9" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@anthropic-ai/sdk": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@anthropic-ai/sdk": { "version": "0.91.1", "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.91.1.tgz", "integrity": "sha512-LAmu761tSN9r66ixvmciswUj/ZC+1Q4iAfpedTfSVLeswRwnY3n2Nb6Tsk+cLPP28aLOPWeMgIuTuCcMC6W/iw==", @@ -10280,7 +10764,7 @@ } } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/crc32": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/crc32": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", @@ -10295,7 +10779,7 @@ "node": ">=16.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-browser": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-browser": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", @@ -10311,7 +10795,7 @@ "tslib": "^2.6.2" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-js": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-js": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", @@ -10326,7 +10810,7 @@ "node": ">=16.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/supports-web-crypto": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/supports-web-crypto": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", @@ -10336,7 +10820,7 @@ "tslib": "^2.6.2" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/util": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/util": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", @@ -10348,7 +10832,7 @@ "tslib": "^2.6.2" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/client-bedrock-runtime": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/client-bedrock-runtime": { "version": "3.1048.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.1048.0.tgz", "integrity": "sha512-u+NT61JZEkRFtpL0CAw1N1dwxnaLgwVXQl/zjJxTGgLyS/jTIdg2SdoEoCTHxgDyCnqa1HEi9QOoE9/pYRNpOQ==", @@ -10374,7 +10858,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/core": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/core": { "version": "3.974.11", "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.11.tgz", "integrity": "sha512-QpnINq5FZH6EOaDEkmHdT7eUunbvD27pDNQypaWjFyYz7Zl1q3UCMQErBZxpmfGfI7MvI2TlK8KTkgNpv8b1ug==", @@ -10394,7 +10878,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-env": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-env": { "version": "3.972.37", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.37.tgz", "integrity": "sha512-/jpPvEh6f7ntmIzf7dNxoNX6Q8vt8UpesCjbW6mFfk4V1NW6bIy9qxcQ6WbA8As5yQhsZOe+xeNd4xHX8kdY2Q==", @@ -10411,7 +10895,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-http": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-http": { "version": "3.972.39", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.39.tgz", "integrity": "sha512-pIgTpisWyWg7X1bUbzSjuUYosYTD0Ghz2M0hkSTmb3a6i3qV3uU+NYJPI/E2XSC0HcsZh5rsLPzeXrkb2DS0Cg==", @@ -10430,7 +10914,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-ini": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-ini": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.41.tgz", "integrity": "sha512-u2tyjaxJJzW8UtW4SM1ZcPMDwO6y+kV+llvou+Adts0FAKyzes5jG4izQN+KX3yE8ZROpS5y1LJ//xL2iSf76w==", @@ -10455,7 +10939,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-login": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-login": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.41.tgz", "integrity": "sha512-0LBitxXiAiaE5nlFPfpNIww/8FRY/I7WIndWsc9GmNFOM7cE1wNpVNQEGEk9Outg5l8xl+3vybxFyUy4l9q/LQ==", @@ -10473,7 +10957,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-node": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-node": { "version": "3.972.42", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.42.tgz", "integrity": "sha512-D4oon2zbqqsWOJUM99Gm3/ZyJ0IJvTXVN3PyloGb3kQEyI36fjCZheZj422lAgTWWd6TSHgiImLt3RIaLdv3dQ==", @@ -10496,7 +10980,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-process": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-process": { "version": "3.972.37", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.37.tgz", "integrity": "sha512-7nVaHBUaWIddASYfVaA9O4D5ZVjewU3sCol9WqZPGfW0nR+0WqE0xHZnD/U2L33PlOB8KNXGKZ6wOES/QijKzg==", @@ -10513,7 +10997,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-sso": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-sso": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.41.tgz", "integrity": "sha512-IOWAWEHe5LkjSKkkUUX9ciV6Y1scHTsnfEkdt5yyC4Slrc7AGbkLPrpntjqh18ksJAMOaVhoBsO8p2WyTcY2wQ==", @@ -10532,7 +11016,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-web-identity": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-web-identity": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.41.tgz", "integrity": "sha512-mbACk9Yypa8nm4iGZLs0PofOXEcTDOUw6wDnsPXNDNSd2WNXs1tSo+6nc/fh0jLYdfVZThhBL98PHW4aXFsG5A==", @@ -10550,7 +11034,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/eventstream-handler-node": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/eventstream-handler-node": { "version": "3.972.16", "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.972.16.tgz", "integrity": "sha512-yedpPgKftqjU5SlPFHfqWpOw6xSCRieWRG1euWOlXn4WJxt2VX92VprCa2PpSOXjVCAeK6dTjW9eJRXVig9yGA==", @@ -10566,7 +11050,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-eventstream": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-eventstream": { "version": "3.972.12", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.972.12.tgz", "integrity": "sha512-tHTHHCHNrq6XklQvlzHBDJG4Iuhh7NVPRdtmvP+nHFA+5sxPlIDzlAHHgfoYHGvT3NXP1yVP/L5c3opUn6T3Qg==", @@ -10582,7 +11066,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-websocket": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-websocket": { "version": "3.972.19", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-websocket/-/middleware-websocket-3.972.19.tgz", "integrity": "sha512-mkEhOGYozqKQkbFaVrjwr0faiwwZza1v5/jSY6Tucm3bD+uKTazIUH/4Yo6aMnQD2ua2W9cMP6s8mvwTcjtqHw==", @@ -10601,7 +11085,7 @@ "node": ">= 14.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/nested-clients": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/nested-clients": { "version": "3.997.9", "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.9.tgz", "integrity": "sha512-jPR3rnmRI4hWYyzfmTGBr7NblMp8QYYeflHXba1H6+7CGrWVqWKQzaXFQ4qbExqPRsXN3T3L3JxFhr6aouXUGQ==", @@ -10623,7 +11107,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/signature-v4-multi-region": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/signature-v4-multi-region": { "version": "3.996.27", "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.27.tgz", "integrity": "sha512-0Phbz4t6HI3D3skxvG2uI+VWU034/nSIw1T8d+FPzzQG9EQTrw94o9mOKO2Gv3n3Oc8P7JD7RAUxkoneLWv5Eg==", @@ -10640,7 +11124,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/token-providers": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/token-providers": { "version": "3.1048.0", "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1048.0.tgz", "integrity": "sha512-k0y/GcuesuSfWyUM0WamrGyeZmltRYaPbHO82UDA6mZ/doB+FOHKutikPAtSXMn/hDz970cF+iRuuiYO9VEbAA==", @@ -10658,7 +11142,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/types": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/types": { "version": "3.973.8", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.8.tgz", "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==", @@ -10672,7 +11156,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/util-locate-window": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/util-locate-window": { "version": "3.965.5", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==", @@ -10685,7 +11169,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/xml-builder": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/xml-builder": { "version": "3.972.24", "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.24.tgz", "integrity": "sha512-V8z5YcDPfsvzrBlj0xR1vhRtocblhYbqdreCJB/voGd4Sr5zjNAeWxexbnqVtskTJe0vFb5KMqbSL++ePl+zRw==", @@ -10701,7 +11185,7 @@ "node": ">=20.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws/lambda-invoke-store": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws/lambda-invoke-store": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", @@ -10711,7 +11195,7 @@ "node": ">=18.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@babel/runtime": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@babel/runtime": { "version": "7.29.2", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", @@ -10721,7 +11205,7 @@ "node": ">=6.9.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-agent-core": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-agent-core": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.80.10.tgz", "dev": true, @@ -10736,7 +11220,7 @@ "node": ">=22.19.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-ai": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-ai": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.80.10.tgz", "dev": true, @@ -10761,7 +11245,7 @@ "node": ">=22.19.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-tui": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-tui": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.80.10.tgz", "dev": true, @@ -10774,7 +11258,7 @@ "node": ">=22.19.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@google/genai": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@google/genai": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/@google/genai/-/genai-1.52.0.tgz", "integrity": "sha512-gwSvbpiN/17O9TbsqSsE/OzZcpv5Fo4RQjdngGgogtuB9RsyJ8ZHhX5KjHj1bp5N9snN2eK8LDGXSaWW2hof8Q==", @@ -10799,7 +11283,7 @@ } } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard/-/clipboard-0.3.9.tgz", "integrity": "sha512-ABnA53mdfkGZwOFUdZNv2S0CWGO/EIuPj8Vv9xmBFmSYg/qFc7ihO6q5FcQjvoE67kZpWkEc4AhD6B/os04yuA==", @@ -10822,7 +11306,7 @@ "@mariozechner/clipboard-win32-x64-msvc": "0.3.9" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-arm64": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-arm64": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-darwin-arm64/-/clipboard-darwin-arm64-0.3.9.tgz", "integrity": "sha512-BfgV7vCEWZwJwZJw03r6bP5+tf0iI/ANuQYCxi9RNn7FrWB3yzGuMKCrNLRl6V761vXRdL8+OqZ0wd4TqlsNOQ==", @@ -10839,7 +11323,7 @@ "node": ">= 10" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-universal": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-universal": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-darwin-universal/-/clipboard-darwin-universal-0.3.9.tgz", "integrity": "sha512-BGGR4iA9Z2shAjI65eI5xtyb3LYNlDW9X3gxKxDbqtbnREohsrqznov6zpKoIrsRWpzlYVEdKphS7ksJ0/ndSQ==", @@ -10853,7 +11337,7 @@ "node": ">= 10" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-x64": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-x64": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-darwin-x64/-/clipboard-darwin-x64-0.3.9.tgz", "integrity": "sha512-4kURmCbS6nt8uYhtmWpUcJWyPHfmAr5dTpXD1nO3pIfa+TSQ9DbrGOYCKH+aEFW47XhQ4Vp8ZTszie+wfFvDKg==", @@ -10870,7 +11354,7 @@ "node": ">= 10" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-gnu": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-gnu": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-arm64-gnu/-/clipboard-linux-arm64-gnu-0.3.9.tgz", "integrity": "sha512-g59OkUGP2DDfCOIKypHeYgv2M55u/cKvXa5dSxFbEJ34XvIQMdcVmpKCkGUro3ZgefXiGVdwguvTMQGpHWzIXw==", @@ -10890,7 +11374,7 @@ "node": ">= 10" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-musl": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-musl": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-arm64-musl/-/clipboard-linux-arm64-musl-0.3.9.tgz", "integrity": "sha512-AGuJdgKsmJdm4Pych7kv3sqe591ERRaAHW3xjLooiFzn8J+PxUyof++7YZrB5Y5tpnTO+K18Og3taj2NpluCRQ==", @@ -10910,7 +11394,7 @@ "node": ">= 10" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-riscv64-gnu": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-riscv64-gnu": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-riscv64-gnu/-/clipboard-linux-riscv64-gnu-0.3.9.tgz", "integrity": "sha512-DXBEAiuMpk7dhS1a9NzNxVAFi1vaKoPu7rQNgY8LIDLGrK3lnIp3nT10DUum+PKVJoJppIP+NAA8IZe4DMNDPw==", @@ -10930,7 +11414,7 @@ "node": ">= 10" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-gnu": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-gnu": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-x64-gnu/-/clipboard-linux-x64-gnu-0.3.9.tgz", "integrity": "sha512-WORrMLd6EpElEME7JRKfSaY34nW1P5LbdgK5YNCS1ncG2LqmITsSMEJ8nh2mpvxb3TxqbOOKgY7k9eMJYlW9Mw==", @@ -10950,7 +11434,7 @@ "node": ">= 10" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-musl": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-musl": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-x64-musl/-/clipboard-linux-x64-musl-0.3.9.tgz", "integrity": "sha512-/DHn+1DrfL6oRaPPWXaOKvonFFrni666fxd+zFqiQEfvBH0tsHVWjq9iqBk0oDp0qaPA72lIMy5BptxISBEhZQ==", @@ -10970,7 +11454,7 @@ "node": ">= 10" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-arm64-msvc": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-arm64-msvc": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-win32-arm64-msvc/-/clipboard-win32-arm64-msvc-0.3.9.tgz", "integrity": "sha512-O5FHD3ErkMwMhNzAfu3ggy0ug4z7btZuoQgwwxlzPrwV2bxlD6WDpqBY4NCgICAgZdDKdp+loUEKVAVt8aYnhQ==", @@ -10987,7 +11471,7 @@ "node": ">= 10" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-x64-msvc": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-x64-msvc": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-win32-x64-msvc/-/clipboard-win32-x64-msvc-0.3.9.tgz", "integrity": "sha512-ihQC3EufqEY81vhXBgVBtK4prL+wc62zJsSvxrgz7K1hsdt6OObz6v9p3Rn1OG3GJksTTKMJF0u/guMISHPhSA==", @@ -11004,7 +11488,7 @@ "node": ">= 10" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mistralai/mistralai": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@mistralai/mistralai": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/@mistralai/mistralai/-/mistralai-2.2.6.tgz", "integrity": "sha512-W8pX7zHxjJvMIpw8JMxeJEleapXX0Q9NPszdNzqkM3MIEoIGPObdodujj+WHteXEvGfaP/AMwlNyRfEzSY6dQQ==", @@ -11025,7 +11509,7 @@ } } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@nodable/entities": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@nodable/entities": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz", "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==", @@ -11038,7 +11522,7 @@ ], "license": "MIT" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/api": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/api": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", @@ -11048,7 +11532,7 @@ "node": ">=8.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/semantic-conventions": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/semantic-conventions": { "version": "1.41.1", "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.41.1.tgz", "integrity": "sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA==", @@ -11058,35 +11542,35 @@ "node": ">=14" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/aspromise": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/base64": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/base64": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/codegen": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/codegen": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz", "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/eventemitter": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/eventemitter": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/fetch": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/fetch": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz", "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==", @@ -11096,42 +11580,42 @@ "@protobufjs/aspromise": "^1.1.1" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/float": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/float": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/path": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/path": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/pool": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/pool": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/utf8": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/utf8": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.1.tgz", "integrity": "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@silvia-odwyer/photon-node": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@silvia-odwyer/photon-node": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/@silvia-odwyer/photon-node/-/photon-node-0.3.4.tgz", "integrity": "sha512-bnly4BKB3KDTFxrUIcgCLbaeVVS8lrAkri1pEzskpmxu9MdfGQTy8b8EgcD83ywD3RPMsIulY8xJH5Awa+t9fA==", "dev": true, "license": "Apache-2.0" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/core": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/core": { "version": "3.24.3", "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.24.3.tgz", "integrity": "sha512-Ep/7tPamGY8mgESE3LyLKtxJyy6U52WWAqr/3wial47Sj4u3PiIF73AOGI27UyLy9duTkhZbgzodOfLV4TduZg==", @@ -11146,7 +11630,7 @@ "node": ">=18.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/credential-provider-imds": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/credential-provider-imds": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.3.tgz", "integrity": "sha512-I2Bti0DKFo2IJyN28ijCsx51BAumEYR4/1yZ1FXyBygy9MqbnMqCev4JPth/MbpRfBSRAX35hITSnAdJRo1u5w==", @@ -11161,7 +11645,7 @@ "node": ">=18.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/fetch-http-handler": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/fetch-http-handler": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.4.3.tgz", "integrity": "sha512-F+DRf8IJazRJgYog2A/yJK7eYVc0rqTlRzO+5ZxjJd4WkZoKz0IJRncf7G6t1pdVT3kryJcwuTFhN1c5m6N47A==", @@ -11176,7 +11660,7 @@ "node": ">=18.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/is-array-buffer": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/is-array-buffer": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", @@ -11189,7 +11673,7 @@ "node": ">=14.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/node-http-handler": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/node-http-handler": { "version": "4.7.3", "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.3.tgz", "integrity": "sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA==", @@ -11204,7 +11688,7 @@ "node": ">=18.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/signature-v4": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/signature-v4": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.4.3.tgz", "integrity": "sha512-53+75QuPl6DL+ct6vVEB51FDO5oulXr20TPV46VvJZg76lIlXNWfxi8j+G2V/t0I2qxCBOa3vX/8bmjrpFVo9g==", @@ -11219,7 +11703,7 @@ "node": ">=18.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/types": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/types": { "version": "4.14.2", "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.2.tgz", "integrity": "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw==", @@ -11232,7 +11716,7 @@ "node": ">=18.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-buffer-from": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-buffer-from": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", @@ -11246,7 +11730,7 @@ "node": ">=14.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-utf8": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-utf8": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", @@ -11260,7 +11744,7 @@ "node": ">=14.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@types/node": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/@types/node": { "version": "22.19.19", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.19.tgz", "integrity": "sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew==", @@ -11270,7 +11754,7 @@ "undici-types": "~6.21.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/agent-base": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/agent-base": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", @@ -11280,7 +11764,7 @@ "node": ">= 14" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/balanced-match": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/balanced-match": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", @@ -11290,7 +11774,7 @@ "node": "18 || 20 || >=22" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/base64-js": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", @@ -11311,7 +11795,7 @@ ], "license": "MIT" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/bignumber.js": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/bignumber.js": { "version": "9.3.1", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", @@ -11321,14 +11805,14 @@ "node": "*" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/bowser": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/bowser": { "version": "2.14.1", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", "dev": true, "license": "MIT" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/brace-expansion": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/brace-expansion": { "version": "5.0.6", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", @@ -11341,14 +11825,14 @@ "node": "18 || 20 || >=22" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/buffer-equal-constant-time": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/chalk": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/chalk": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", @@ -11361,7 +11845,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/cross-spawn": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", @@ -11376,7 +11860,7 @@ "node": ">= 8" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/data-uri-to-buffer": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/data-uri-to-buffer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", @@ -11386,7 +11870,7 @@ "node": ">= 12" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/debug": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", @@ -11404,7 +11888,7 @@ } } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/diff": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/diff": { "version": "8.0.4", "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", @@ -11414,7 +11898,7 @@ "node": ">=0.3.1" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/ecdsa-sig-formatter": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", @@ -11424,14 +11908,14 @@ "safe-buffer": "^5.0.1" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/extend": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true, "license": "MIT" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-builder": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-builder": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz", "integrity": "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==", @@ -11448,7 +11932,7 @@ "xml-naming": "^0.1.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-parser": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-parser": { "version": "5.7.3", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.3.tgz", "integrity": "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==", @@ -11470,7 +11954,7 @@ "fxparser": "src/cli/cli.js" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/fetch-blob": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/fetch-blob": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", @@ -11494,7 +11978,7 @@ "node": "^12.20 || >= 14.13" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/formdata-polyfill": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/formdata-polyfill": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", @@ -11507,7 +11991,7 @@ "node": ">=12.20.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/gaxios": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/gaxios": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.1.4.tgz", "integrity": "sha512-bTIgTsM2bWn3XklZISBTQX7ZSddGW+IO3bMdGaemHZ3tbqExMENHLx6kKZ/KlejgrMtj8q7wBItt51yegqalrA==", @@ -11522,7 +12006,7 @@ "node": ">=18" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/gcp-metadata": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/gcp-metadata": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-8.1.2.tgz", "integrity": "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==", @@ -11537,7 +12021,7 @@ "node": ">=18" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/get-east-asian-width": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/get-east-asian-width": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", @@ -11550,7 +12034,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/glob": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/glob": { "version": "13.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", @@ -11568,7 +12052,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/google-auth-library": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/google-auth-library": { "version": "10.6.2", "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.6.2.tgz", "integrity": "sha512-e27Z6EThmVNNvtYASwQxose/G57rkRuaRbQyxM2bvYLLX/GqWZ5chWq2EBoUchJbCc57eC9ArzO5wMsEmWftCw==", @@ -11586,7 +12070,7 @@ "node": ">=18" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/google-logging-utils": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/google-logging-utils": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-1.1.3.tgz", "integrity": "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==", @@ -11596,14 +12080,14 @@ "node": ">=14" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/graceful-fs": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, "license": "ISC" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/highlight.js": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", @@ -11613,7 +12097,7 @@ "node": "*" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/hosted-git-info": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/hosted-git-info": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.3.tgz", "integrity": "sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==", @@ -11626,7 +12110,7 @@ "node": "^20.17.0 || >=22.9.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/http-proxy-agent": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", @@ -11640,7 +12124,7 @@ "node": ">= 14" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/https-proxy-agent": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", @@ -11654,7 +12138,7 @@ "node": ">= 14" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/ignore": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/ignore": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", @@ -11664,14 +12148,14 @@ "node": ">= 4" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/isexe": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, "license": "ISC" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/jiti": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/jiti": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", @@ -11681,7 +12165,7 @@ "jiti": "lib/jiti-cli.mjs" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/json-bigint": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/json-bigint": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", @@ -11691,7 +12175,7 @@ "bignumber.js": "^9.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/json-schema-to-ts": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/json-schema-to-ts": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-3.1.1.tgz", "integrity": "sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==", @@ -11705,7 +12189,7 @@ "node": ">=16" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/jwa": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/jwa": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", @@ -11717,7 +12201,7 @@ "safe-buffer": "^5.0.1" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/jws": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/jws": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", @@ -11728,14 +12212,14 @@ "safe-buffer": "^5.0.1" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/long": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/long": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", "dev": true, "license": "Apache-2.0" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/lru-cache": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/lru-cache": { "version": "11.4.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.4.0.tgz", "integrity": "sha512-W+R+kFL4HgVxONq2bhXPi3bGpzGe/yEhVOp233qw9wCRtgncJ15P3bC+e4zZMu4Cq7d+WAJjXGW0uUkifhcatA==", @@ -11745,7 +12229,7 @@ "node": "20 || >=22" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/marked": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/marked": { "version": "18.0.5", "resolved": "https://registry.npmjs.org/marked/-/marked-18.0.5.tgz", "integrity": "sha512-S6GcvALHg6K4ohtu4E7x0a1AqhAjp6cV8KhLSyN9qVapnzJkusVBxZRcIU9AeYsbe6P1hKDusSbEOzGyyuce6w==", @@ -11758,7 +12242,7 @@ "node": ">= 20" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/minimatch": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/minimatch": { "version": "10.2.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", @@ -11774,7 +12258,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/minipass": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/minipass": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", @@ -11784,14 +12268,14 @@ "node": ">=16 || 14 >=14.17" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/ms": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/node-domexception": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", @@ -11812,7 +12296,7 @@ "node": ">=10.5.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/node-fetch": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/node-fetch": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", @@ -11831,7 +12315,7 @@ "url": "https://opencollective.com/node-fetch" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/openai": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/openai": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/openai/-/openai-6.26.0.tgz", "integrity": "sha512-zd23dbWTjiJ6sSAX6s0HrCZi41JwTA1bQVs0wLQPZ2/5o2gxOJA5wh7yOAUgwYybfhDXyhwlpeQf7Mlgx8EOCA==", @@ -11853,7 +12337,7 @@ } } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", @@ -11867,21 +12351,21 @@ "node": ">=8" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry/node_modules/@types/retry": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry/node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true, "license": "MIT" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/partial-json": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/partial-json": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/partial-json/-/partial-json-0.1.7.tgz", "integrity": "sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==", "dev": true, "license": "MIT" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/path-expression-matcher": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/path-expression-matcher": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz", "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==", @@ -11897,7 +12381,7 @@ "node": ">=14.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/path-key": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", @@ -11907,7 +12391,7 @@ "node": ">=8" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/path-scurry": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/path-scurry": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", @@ -11924,7 +12408,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", @@ -11936,7 +12420,7 @@ "signal-exit": "^3.0.2" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile/node_modules/retry": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile/node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", @@ -11946,7 +12430,7 @@ "node": ">= 4" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/protobufjs": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/protobufjs": { "version": "7.6.4", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.4.tgz", "integrity": "sha512-RJJPTTpvFfHcWLkIa2JFWK4XvtSzS0yEWDmunqHXli1h3JlkbcQZXDZdcWxv+JK3Xsl5/UFDPZ0iGm7DAengYw==", @@ -11970,7 +12454,7 @@ "node": ">=12.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/retry": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", @@ -11980,7 +12464,7 @@ "node": ">= 4" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/safe-buffer": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", @@ -12001,7 +12485,7 @@ ], "license": "MIT" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/semver": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/semver": { "version": "7.8.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", @@ -12014,7 +12498,7 @@ "node": ">=10" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-command": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", @@ -12027,7 +12511,7 @@ "node": ">=8" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-regex": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", @@ -12037,14 +12521,14 @@ "node": ">=8" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/signal-exit": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/strnum": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/strnum": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.3.0.tgz", "integrity": "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==", @@ -12057,28 +12541,28 @@ ], "license": "MIT" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/ts-algebra": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/ts-algebra": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ts-algebra/-/ts-algebra-2.0.0.tgz", "integrity": "sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==", "dev": true, "license": "MIT" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/tslib": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, "license": "0BSD" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/typebox": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/typebox": { "version": "1.1.38", "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.1.38.tgz", "integrity": "sha512-pZ0aQPmMmXoUvSbeuWf/Hzsc+avNw/Zd6VeE8CFgkVGWyuHPJvqeJJDeJqLve+K70LvjYIoleGcoJHPT17cWoA==", "dev": true, "license": "MIT" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/undici": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/undici": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/undici/-/undici-8.5.0.tgz", "integrity": "sha512-xamtWoB1EshgjpmlXd7GGm2VfdDtw1+rD8uhry8pSNW3If6S8E0m2T2+orSKeZXEn/aPJMviCpDBA65WJt8zhg==", @@ -12088,14 +12572,14 @@ "node": ">=22.19.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/undici-types": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, "license": "MIT" }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/web-streams-polyfill": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/web-streams-polyfill": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", @@ -12105,7 +12589,7 @@ "node": ">= 8" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/which": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", @@ -12121,7 +12605,7 @@ "node": ">= 8" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/ws": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/ws": { "version": "8.21.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", @@ -12143,7 +12627,7 @@ } } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/xml-naming": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/xml-naming": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.1.0.tgz", "integrity": "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==", @@ -12159,7 +12643,7 @@ "node": ">=16.0.0" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/yaml": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/yaml": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", @@ -12175,7 +12659,7 @@ "url": "https://github.com/sponsors/eemeli" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/zod": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/zod": { "version": "3.25.76", "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", @@ -12185,7 +12669,7 @@ "url": "https://github.com/sponsors/colinhacks" } }, - "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/zod-to-json-schema": { + "packages/pi-ext/node_modules/@earendil-works/pi-coding-agent/node_modules/zod-to-json-schema": { "version": "3.25.2", "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", @@ -12195,23 +12679,58 @@ "zod": "^3.25.28 || ^4" } }, - "packages/pi-secret-env": { - "name": "@iurysza/pi-secret-env", + "packages/pi-ext/node_modules/typescript": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-7.0.2.tgz", + "integrity": "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc" + }, + "engines": { + "node": ">=16.20.0" + }, + "optionalDependencies": { + "@typescript/typescript-aix-ppc64": "7.0.2", + "@typescript/typescript-darwin-arm64": "7.0.2", + "@typescript/typescript-darwin-x64": "7.0.2", + "@typescript/typescript-freebsd-arm64": "7.0.2", + "@typescript/typescript-freebsd-x64": "7.0.2", + "@typescript/typescript-linux-arm": "7.0.2", + "@typescript/typescript-linux-arm64": "7.0.2", + "@typescript/typescript-linux-loong64": "7.0.2", + "@typescript/typescript-linux-mips64el": "7.0.2", + "@typescript/typescript-linux-ppc64": "7.0.2", + "@typescript/typescript-linux-riscv64": "7.0.2", + "@typescript/typescript-linux-s390x": "7.0.2", + "@typescript/typescript-linux-x64": "7.0.2", + "@typescript/typescript-netbsd-arm64": "7.0.2", + "@typescript/typescript-netbsd-x64": "7.0.2", + "@typescript/typescript-openbsd-arm64": "7.0.2", + "@typescript/typescript-openbsd-x64": "7.0.2", + "@typescript/typescript-sunos-x64": "7.0.2", + "@typescript/typescript-win32-arm64": "7.0.2", + "@typescript/typescript-win32-x64": "7.0.2" + } + }, + "packages/pi-ghost-in-the-machine": { + "name": "@iurysza/pi-ghost-in-the-machine", "version": "0.1.0", "license": "MIT", "devDependencies": { "@earendil-works/pi-coding-agent": "^0.80.10", - "@types/node": "^24.12.0", + "@types/node": "^24.12.4", "typescript": "^5.9.3" }, "engines": { "node": ">=22.19.0" }, "peerDependencies": { - "@earendil-works/pi-coding-agent": "*" + "@earendil-works/pi-coding-agent": ">=0.80.4" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-coding-agent/-/pi-coding-agent-0.80.10.tgz", "integrity": "sha512-aL4apbupCHiVLSXASXvRzH4Q2vmtfrDa+0s909CJuVu/GgGylbDzr7oyF1mPmip5E+VxYYxKWmph4hV04wUcQg==", @@ -12248,7 +12767,7 @@ "@mariozechner/clipboard": "0.3.9" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@anthropic-ai/sdk": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@anthropic-ai/sdk": { "version": "0.91.1", "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.91.1.tgz", "integrity": "sha512-LAmu761tSN9r66ixvmciswUj/ZC+1Q4iAfpedTfSVLeswRwnY3n2Nb6Tsk+cLPP28aLOPWeMgIuTuCcMC6W/iw==", @@ -12269,7 +12788,7 @@ } } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/crc32": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/crc32": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", @@ -12284,7 +12803,7 @@ "node": ">=16.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-browser": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-browser": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", @@ -12300,7 +12819,7 @@ "tslib": "^2.6.2" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-js": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-js": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", @@ -12315,7 +12834,7 @@ "node": ">=16.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/supports-web-crypto": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/supports-web-crypto": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", @@ -12325,7 +12844,7 @@ "tslib": "^2.6.2" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/util": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/util": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", @@ -12337,7 +12856,7 @@ "tslib": "^2.6.2" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/client-bedrock-runtime": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/client-bedrock-runtime": { "version": "3.1048.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.1048.0.tgz", "integrity": "sha512-u+NT61JZEkRFtpL0CAw1N1dwxnaLgwVXQl/zjJxTGgLyS/jTIdg2SdoEoCTHxgDyCnqa1HEi9QOoE9/pYRNpOQ==", @@ -12363,7 +12882,7 @@ "node": ">=20.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/core": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/core": { "version": "3.974.11", "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.11.tgz", "integrity": "sha512-QpnINq5FZH6EOaDEkmHdT7eUunbvD27pDNQypaWjFyYz7Zl1q3UCMQErBZxpmfGfI7MvI2TlK8KTkgNpv8b1ug==", @@ -12383,7 +12902,7 @@ "node": ">=20.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-env": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-env": { "version": "3.972.37", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.37.tgz", "integrity": "sha512-/jpPvEh6f7ntmIzf7dNxoNX6Q8vt8UpesCjbW6mFfk4V1NW6bIy9qxcQ6WbA8As5yQhsZOe+xeNd4xHX8kdY2Q==", @@ -12400,7 +12919,7 @@ "node": ">=20.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-http": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-http": { "version": "3.972.39", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.39.tgz", "integrity": "sha512-pIgTpisWyWg7X1bUbzSjuUYosYTD0Ghz2M0hkSTmb3a6i3qV3uU+NYJPI/E2XSC0HcsZh5rsLPzeXrkb2DS0Cg==", @@ -12419,7 +12938,7 @@ "node": ">=20.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-ini": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-ini": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.41.tgz", "integrity": "sha512-u2tyjaxJJzW8UtW4SM1ZcPMDwO6y+kV+llvou+Adts0FAKyzes5jG4izQN+KX3yE8ZROpS5y1LJ//xL2iSf76w==", @@ -12444,7 +12963,7 @@ "node": ">=20.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-login": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-login": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.41.tgz", "integrity": "sha512-0LBitxXiAiaE5nlFPfpNIww/8FRY/I7WIndWsc9GmNFOM7cE1wNpVNQEGEk9Outg5l8xl+3vybxFyUy4l9q/LQ==", @@ -12462,7 +12981,7 @@ "node": ">=20.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-node": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-node": { "version": "3.972.42", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.42.tgz", "integrity": "sha512-D4oon2zbqqsWOJUM99Gm3/ZyJ0IJvTXVN3PyloGb3kQEyI36fjCZheZj422lAgTWWd6TSHgiImLt3RIaLdv3dQ==", @@ -12485,7 +13004,7 @@ "node": ">=20.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-process": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-process": { "version": "3.972.37", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.37.tgz", "integrity": "sha512-7nVaHBUaWIddASYfVaA9O4D5ZVjewU3sCol9WqZPGfW0nR+0WqE0xHZnD/U2L33PlOB8KNXGKZ6wOES/QijKzg==", @@ -12502,7 +13021,7 @@ "node": ">=20.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-sso": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-sso": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.41.tgz", "integrity": "sha512-IOWAWEHe5LkjSKkkUUX9ciV6Y1scHTsnfEkdt5yyC4Slrc7AGbkLPrpntjqh18ksJAMOaVhoBsO8p2WyTcY2wQ==", @@ -12521,7 +13040,7 @@ "node": ">=20.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-web-identity": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-web-identity": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.41.tgz", "integrity": "sha512-mbACk9Yypa8nm4iGZLs0PofOXEcTDOUw6wDnsPXNDNSd2WNXs1tSo+6nc/fh0jLYdfVZThhBL98PHW4aXFsG5A==", @@ -12539,7 +13058,7 @@ "node": ">=20.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/eventstream-handler-node": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/eventstream-handler-node": { "version": "3.972.16", "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.972.16.tgz", "integrity": "sha512-yedpPgKftqjU5SlPFHfqWpOw6xSCRieWRG1euWOlXn4WJxt2VX92VprCa2PpSOXjVCAeK6dTjW9eJRXVig9yGA==", @@ -12555,7 +13074,7 @@ "node": ">=20.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-eventstream": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-eventstream": { "version": "3.972.12", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.972.12.tgz", "integrity": "sha512-tHTHHCHNrq6XklQvlzHBDJG4Iuhh7NVPRdtmvP+nHFA+5sxPlIDzlAHHgfoYHGvT3NXP1yVP/L5c3opUn6T3Qg==", @@ -12571,7 +13090,7 @@ "node": ">=20.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-websocket": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-websocket": { "version": "3.972.19", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-websocket/-/middleware-websocket-3.972.19.tgz", "integrity": "sha512-mkEhOGYozqKQkbFaVrjwr0faiwwZza1v5/jSY6Tucm3bD+uKTazIUH/4Yo6aMnQD2ua2W9cMP6s8mvwTcjtqHw==", @@ -12590,7 +13109,7 @@ "node": ">= 14.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/nested-clients": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/nested-clients": { "version": "3.997.9", "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.9.tgz", "integrity": "sha512-jPR3rnmRI4hWYyzfmTGBr7NblMp8QYYeflHXba1H6+7CGrWVqWKQzaXFQ4qbExqPRsXN3T3L3JxFhr6aouXUGQ==", @@ -12612,7 +13131,7 @@ "node": ">=20.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/signature-v4-multi-region": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/signature-v4-multi-region": { "version": "3.996.27", "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.27.tgz", "integrity": "sha512-0Phbz4t6HI3D3skxvG2uI+VWU034/nSIw1T8d+FPzzQG9EQTrw94o9mOKO2Gv3n3Oc8P7JD7RAUxkoneLWv5Eg==", @@ -12629,7 +13148,7 @@ "node": ">=20.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/token-providers": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/token-providers": { "version": "3.1048.0", "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1048.0.tgz", "integrity": "sha512-k0y/GcuesuSfWyUM0WamrGyeZmltRYaPbHO82UDA6mZ/doB+FOHKutikPAtSXMn/hDz970cF+iRuuiYO9VEbAA==", @@ -12647,7 +13166,7 @@ "node": ">=20.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/types": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/types": { "version": "3.973.8", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.8.tgz", "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==", @@ -12661,7 +13180,7 @@ "node": ">=20.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/util-locate-window": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/util-locate-window": { "version": "3.965.5", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==", @@ -12674,7 +13193,7 @@ "node": ">=20.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/xml-builder": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/xml-builder": { "version": "3.972.24", "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.24.tgz", "integrity": "sha512-V8z5YcDPfsvzrBlj0xR1vhRtocblhYbqdreCJB/voGd4Sr5zjNAeWxexbnqVtskTJe0vFb5KMqbSL++ePl+zRw==", @@ -12690,7 +13209,7 @@ "node": ">=20.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws/lambda-invoke-store": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws/lambda-invoke-store": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", @@ -12700,7 +13219,7 @@ "node": ">=18.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@babel/runtime": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@babel/runtime": { "version": "7.29.2", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", @@ -12710,7 +13229,7 @@ "node": ">=6.9.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-agent-core": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-agent-core": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.80.10.tgz", "dev": true, @@ -12725,7 +13244,7 @@ "node": ">=22.19.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-ai": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-ai": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.80.10.tgz", "dev": true, @@ -12750,7 +13269,7 @@ "node": ">=22.19.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-tui": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-tui": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.80.10.tgz", "dev": true, @@ -12763,7 +13282,7 @@ "node": ">=22.19.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@google/genai": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@google/genai": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/@google/genai/-/genai-1.52.0.tgz", "integrity": "sha512-gwSvbpiN/17O9TbsqSsE/OzZcpv5Fo4RQjdngGgogtuB9RsyJ8ZHhX5KjHj1bp5N9snN2eK8LDGXSaWW2hof8Q==", @@ -12788,7 +13307,7 @@ } } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard/-/clipboard-0.3.9.tgz", "integrity": "sha512-ABnA53mdfkGZwOFUdZNv2S0CWGO/EIuPj8Vv9xmBFmSYg/qFc7ihO6q5FcQjvoE67kZpWkEc4AhD6B/os04yuA==", @@ -12811,7 +13330,7 @@ "@mariozechner/clipboard-win32-x64-msvc": "0.3.9" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-arm64": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-arm64": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-darwin-arm64/-/clipboard-darwin-arm64-0.3.9.tgz", "integrity": "sha512-BfgV7vCEWZwJwZJw03r6bP5+tf0iI/ANuQYCxi9RNn7FrWB3yzGuMKCrNLRl6V761vXRdL8+OqZ0wd4TqlsNOQ==", @@ -12828,7 +13347,7 @@ "node": ">= 10" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-universal": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-universal": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-darwin-universal/-/clipboard-darwin-universal-0.3.9.tgz", "integrity": "sha512-BGGR4iA9Z2shAjI65eI5xtyb3LYNlDW9X3gxKxDbqtbnREohsrqznov6zpKoIrsRWpzlYVEdKphS7ksJ0/ndSQ==", @@ -12842,7 +13361,7 @@ "node": ">= 10" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-x64": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-x64": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-darwin-x64/-/clipboard-darwin-x64-0.3.9.tgz", "integrity": "sha512-4kURmCbS6nt8uYhtmWpUcJWyPHfmAr5dTpXD1nO3pIfa+TSQ9DbrGOYCKH+aEFW47XhQ4Vp8ZTszie+wfFvDKg==", @@ -12859,7 +13378,7 @@ "node": ">= 10" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-gnu": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-gnu": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-arm64-gnu/-/clipboard-linux-arm64-gnu-0.3.9.tgz", "integrity": "sha512-g59OkUGP2DDfCOIKypHeYgv2M55u/cKvXa5dSxFbEJ34XvIQMdcVmpKCkGUro3ZgefXiGVdwguvTMQGpHWzIXw==", @@ -12879,7 +13398,7 @@ "node": ">= 10" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-musl": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-musl": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-arm64-musl/-/clipboard-linux-arm64-musl-0.3.9.tgz", "integrity": "sha512-AGuJdgKsmJdm4Pych7kv3sqe591ERRaAHW3xjLooiFzn8J+PxUyof++7YZrB5Y5tpnTO+K18Og3taj2NpluCRQ==", @@ -12899,7 +13418,7 @@ "node": ">= 10" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-riscv64-gnu": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-riscv64-gnu": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-riscv64-gnu/-/clipboard-linux-riscv64-gnu-0.3.9.tgz", "integrity": "sha512-DXBEAiuMpk7dhS1a9NzNxVAFi1vaKoPu7rQNgY8LIDLGrK3lnIp3nT10DUum+PKVJoJppIP+NAA8IZe4DMNDPw==", @@ -12919,7 +13438,7 @@ "node": ">= 10" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-gnu": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-gnu": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-x64-gnu/-/clipboard-linux-x64-gnu-0.3.9.tgz", "integrity": "sha512-WORrMLd6EpElEME7JRKfSaY34nW1P5LbdgK5YNCS1ncG2LqmITsSMEJ8nh2mpvxb3TxqbOOKgY7k9eMJYlW9Mw==", @@ -12939,7 +13458,7 @@ "node": ">= 10" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-musl": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-musl": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-x64-musl/-/clipboard-linux-x64-musl-0.3.9.tgz", "integrity": "sha512-/DHn+1DrfL6oRaPPWXaOKvonFFrni666fxd+zFqiQEfvBH0tsHVWjq9iqBk0oDp0qaPA72lIMy5BptxISBEhZQ==", @@ -12959,7 +13478,7 @@ "node": ">= 10" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-arm64-msvc": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-arm64-msvc": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-win32-arm64-msvc/-/clipboard-win32-arm64-msvc-0.3.9.tgz", "integrity": "sha512-O5FHD3ErkMwMhNzAfu3ggy0ug4z7btZuoQgwwxlzPrwV2bxlD6WDpqBY4NCgICAgZdDKdp+loUEKVAVt8aYnhQ==", @@ -12976,7 +13495,7 @@ "node": ">= 10" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-x64-msvc": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-x64-msvc": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-win32-x64-msvc/-/clipboard-win32-x64-msvc-0.3.9.tgz", "integrity": "sha512-ihQC3EufqEY81vhXBgVBtK4prL+wc62zJsSvxrgz7K1hsdt6OObz6v9p3Rn1OG3GJksTTKMJF0u/guMISHPhSA==", @@ -12993,7 +13512,7 @@ "node": ">= 10" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mistralai/mistralai": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@mistralai/mistralai": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/@mistralai/mistralai/-/mistralai-2.2.6.tgz", "integrity": "sha512-W8pX7zHxjJvMIpw8JMxeJEleapXX0Q9NPszdNzqkM3MIEoIGPObdodujj+WHteXEvGfaP/AMwlNyRfEzSY6dQQ==", @@ -13014,7 +13533,7 @@ } } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@nodable/entities": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@nodable/entities": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz", "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==", @@ -13027,7 +13546,7 @@ ], "license": "MIT" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/api": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/api": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", @@ -13037,7 +13556,7 @@ "node": ">=8.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/semantic-conventions": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/semantic-conventions": { "version": "1.41.1", "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.41.1.tgz", "integrity": "sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA==", @@ -13047,35 +13566,35 @@ "node": ">=14" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/aspromise": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/base64": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/base64": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/codegen": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/codegen": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz", "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/eventemitter": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/eventemitter": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/fetch": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/fetch": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz", "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==", @@ -13085,42 +13604,42 @@ "@protobufjs/aspromise": "^1.1.1" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/float": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/float": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/path": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/path": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/pool": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/pool": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/utf8": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/utf8": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.1.tgz", "integrity": "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@silvia-odwyer/photon-node": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@silvia-odwyer/photon-node": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/@silvia-odwyer/photon-node/-/photon-node-0.3.4.tgz", "integrity": "sha512-bnly4BKB3KDTFxrUIcgCLbaeVVS8lrAkri1pEzskpmxu9MdfGQTy8b8EgcD83ywD3RPMsIulY8xJH5Awa+t9fA==", "dev": true, "license": "Apache-2.0" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/core": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/core": { "version": "3.24.3", "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.24.3.tgz", "integrity": "sha512-Ep/7tPamGY8mgESE3LyLKtxJyy6U52WWAqr/3wial47Sj4u3PiIF73AOGI27UyLy9duTkhZbgzodOfLV4TduZg==", @@ -13135,7 +13654,7 @@ "node": ">=18.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/credential-provider-imds": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/credential-provider-imds": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.3.tgz", "integrity": "sha512-I2Bti0DKFo2IJyN28ijCsx51BAumEYR4/1yZ1FXyBygy9MqbnMqCev4JPth/MbpRfBSRAX35hITSnAdJRo1u5w==", @@ -13150,7 +13669,7 @@ "node": ">=18.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/fetch-http-handler": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/fetch-http-handler": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.4.3.tgz", "integrity": "sha512-F+DRf8IJazRJgYog2A/yJK7eYVc0rqTlRzO+5ZxjJd4WkZoKz0IJRncf7G6t1pdVT3kryJcwuTFhN1c5m6N47A==", @@ -13165,7 +13684,7 @@ "node": ">=18.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/is-array-buffer": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/is-array-buffer": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", @@ -13178,7 +13697,7 @@ "node": ">=14.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/node-http-handler": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/node-http-handler": { "version": "4.7.3", "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.3.tgz", "integrity": "sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA==", @@ -13193,7 +13712,7 @@ "node": ">=18.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/signature-v4": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/signature-v4": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.4.3.tgz", "integrity": "sha512-53+75QuPl6DL+ct6vVEB51FDO5oulXr20TPV46VvJZg76lIlXNWfxi8j+G2V/t0I2qxCBOa3vX/8bmjrpFVo9g==", @@ -13208,7 +13727,7 @@ "node": ">=18.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/types": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/types": { "version": "4.14.2", "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.2.tgz", "integrity": "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw==", @@ -13221,7 +13740,7 @@ "node": ">=18.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-buffer-from": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-buffer-from": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", @@ -13235,7 +13754,7 @@ "node": ">=14.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-utf8": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-utf8": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", @@ -13249,7 +13768,7 @@ "node": ">=14.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@types/node": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/@types/node": { "version": "22.19.19", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.19.tgz", "integrity": "sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew==", @@ -13259,7 +13778,7 @@ "undici-types": "~6.21.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/agent-base": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/agent-base": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", @@ -13269,7 +13788,7 @@ "node": ">= 14" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/balanced-match": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/balanced-match": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", @@ -13279,7 +13798,7 @@ "node": "18 || 20 || >=22" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/base64-js": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", @@ -13300,7 +13819,7 @@ ], "license": "MIT" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/bignumber.js": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/bignumber.js": { "version": "9.3.1", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", @@ -13310,14 +13829,14 @@ "node": "*" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/bowser": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/bowser": { "version": "2.14.1", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", "dev": true, "license": "MIT" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/brace-expansion": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/brace-expansion": { "version": "5.0.6", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", @@ -13330,14 +13849,14 @@ "node": "18 || 20 || >=22" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/buffer-equal-constant-time": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/chalk": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/chalk": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", @@ -13350,7 +13869,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/cross-spawn": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", @@ -13365,7 +13884,7 @@ "node": ">= 8" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/data-uri-to-buffer": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/data-uri-to-buffer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", @@ -13375,7 +13894,7 @@ "node": ">= 12" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/debug": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", @@ -13393,7 +13912,7 @@ } } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/diff": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/diff": { "version": "8.0.4", "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", @@ -13403,7 +13922,7 @@ "node": ">=0.3.1" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/ecdsa-sig-formatter": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", @@ -13413,14 +13932,14 @@ "safe-buffer": "^5.0.1" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/extend": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true, "license": "MIT" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-builder": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-builder": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz", "integrity": "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==", @@ -13437,7 +13956,7 @@ "xml-naming": "^0.1.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-parser": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-parser": { "version": "5.7.3", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.3.tgz", "integrity": "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==", @@ -13459,7 +13978,7 @@ "fxparser": "src/cli/cli.js" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/fetch-blob": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/fetch-blob": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", @@ -13483,7 +14002,7 @@ "node": "^12.20 || >= 14.13" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/formdata-polyfill": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/formdata-polyfill": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", @@ -13496,7 +14015,7 @@ "node": ">=12.20.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/gaxios": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/gaxios": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.1.4.tgz", "integrity": "sha512-bTIgTsM2bWn3XklZISBTQX7ZSddGW+IO3bMdGaemHZ3tbqExMENHLx6kKZ/KlejgrMtj8q7wBItt51yegqalrA==", @@ -13511,7 +14030,7 @@ "node": ">=18" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/gcp-metadata": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/gcp-metadata": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-8.1.2.tgz", "integrity": "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==", @@ -13526,7 +14045,7 @@ "node": ">=18" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/get-east-asian-width": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/get-east-asian-width": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", @@ -13539,7 +14058,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/glob": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/glob": { "version": "13.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", @@ -13557,7 +14076,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/google-auth-library": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/google-auth-library": { "version": "10.6.2", "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.6.2.tgz", "integrity": "sha512-e27Z6EThmVNNvtYASwQxose/G57rkRuaRbQyxM2bvYLLX/GqWZ5chWq2EBoUchJbCc57eC9ArzO5wMsEmWftCw==", @@ -13575,7 +14094,7 @@ "node": ">=18" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/google-logging-utils": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/google-logging-utils": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-1.1.3.tgz", "integrity": "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==", @@ -13585,14 +14104,14 @@ "node": ">=14" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/graceful-fs": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, "license": "ISC" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/highlight.js": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", @@ -13602,7 +14121,7 @@ "node": "*" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/hosted-git-info": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/hosted-git-info": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.3.tgz", "integrity": "sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==", @@ -13615,7 +14134,7 @@ "node": "^20.17.0 || >=22.9.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/http-proxy-agent": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", @@ -13629,7 +14148,7 @@ "node": ">= 14" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/https-proxy-agent": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", @@ -13643,7 +14162,7 @@ "node": ">= 14" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/ignore": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/ignore": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", @@ -13653,14 +14172,14 @@ "node": ">= 4" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/isexe": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, "license": "ISC" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/jiti": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/jiti": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", @@ -13670,7 +14189,7 @@ "jiti": "lib/jiti-cli.mjs" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/json-bigint": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/json-bigint": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", @@ -13680,7 +14199,7 @@ "bignumber.js": "^9.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/json-schema-to-ts": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/json-schema-to-ts": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-3.1.1.tgz", "integrity": "sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==", @@ -13694,7 +14213,7 @@ "node": ">=16" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/jwa": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/jwa": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", @@ -13706,7 +14225,7 @@ "safe-buffer": "^5.0.1" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/jws": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/jws": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", @@ -13717,14 +14236,14 @@ "safe-buffer": "^5.0.1" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/long": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/long": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", "dev": true, "license": "Apache-2.0" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/lru-cache": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/lru-cache": { "version": "11.4.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.4.0.tgz", "integrity": "sha512-W+R+kFL4HgVxONq2bhXPi3bGpzGe/yEhVOp233qw9wCRtgncJ15P3bC+e4zZMu4Cq7d+WAJjXGW0uUkifhcatA==", @@ -13734,7 +14253,7 @@ "node": "20 || >=22" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/marked": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/marked": { "version": "18.0.5", "resolved": "https://registry.npmjs.org/marked/-/marked-18.0.5.tgz", "integrity": "sha512-S6GcvALHg6K4ohtu4E7x0a1AqhAjp6cV8KhLSyN9qVapnzJkusVBxZRcIU9AeYsbe6P1hKDusSbEOzGyyuce6w==", @@ -13747,7 +14266,7 @@ "node": ">= 20" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/minimatch": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/minimatch": { "version": "10.2.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", @@ -13763,7 +14282,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/minipass": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/minipass": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", @@ -13773,14 +14292,14 @@ "node": ">=16 || 14 >=14.17" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/ms": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/node-domexception": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", @@ -13801,7 +14320,7 @@ "node": ">=10.5.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/node-fetch": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/node-fetch": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", @@ -13820,7 +14339,7 @@ "url": "https://opencollective.com/node-fetch" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/openai": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/openai": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/openai/-/openai-6.26.0.tgz", "integrity": "sha512-zd23dbWTjiJ6sSAX6s0HrCZi41JwTA1bQVs0wLQPZ2/5o2gxOJA5wh7yOAUgwYybfhDXyhwlpeQf7Mlgx8EOCA==", @@ -13842,7 +14361,7 @@ } } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", @@ -13856,21 +14375,21 @@ "node": ">=8" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry/node_modules/@types/retry": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry/node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true, "license": "MIT" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/partial-json": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/partial-json": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/partial-json/-/partial-json-0.1.7.tgz", "integrity": "sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==", "dev": true, "license": "MIT" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/path-expression-matcher": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/path-expression-matcher": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz", "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==", @@ -13886,7 +14405,7 @@ "node": ">=14.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/path-key": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", @@ -13896,7 +14415,7 @@ "node": ">=8" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/path-scurry": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/path-scurry": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", @@ -13913,7 +14432,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", @@ -13925,7 +14444,7 @@ "signal-exit": "^3.0.2" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile/node_modules/retry": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile/node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", @@ -13935,7 +14454,7 @@ "node": ">= 4" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/protobufjs": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/protobufjs": { "version": "7.6.4", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.4.tgz", "integrity": "sha512-RJJPTTpvFfHcWLkIa2JFWK4XvtSzS0yEWDmunqHXli1h3JlkbcQZXDZdcWxv+JK3Xsl5/UFDPZ0iGm7DAengYw==", @@ -13959,7 +14478,7 @@ "node": ">=12.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/retry": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", @@ -13969,7 +14488,7 @@ "node": ">= 4" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/safe-buffer": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", @@ -13990,7 +14509,7 @@ ], "license": "MIT" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/semver": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/semver": { "version": "7.8.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", @@ -14003,7 +14522,7 @@ "node": ">=10" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-command": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", @@ -14016,7 +14535,7 @@ "node": ">=8" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-regex": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", @@ -14026,14 +14545,14 @@ "node": ">=8" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/signal-exit": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/strnum": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/strnum": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.3.0.tgz", "integrity": "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==", @@ -14046,28 +14565,28 @@ ], "license": "MIT" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/ts-algebra": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/ts-algebra": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ts-algebra/-/ts-algebra-2.0.0.tgz", "integrity": "sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==", "dev": true, "license": "MIT" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/tslib": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, "license": "0BSD" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/typebox": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/typebox": { "version": "1.1.38", "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.1.38.tgz", "integrity": "sha512-pZ0aQPmMmXoUvSbeuWf/Hzsc+avNw/Zd6VeE8CFgkVGWyuHPJvqeJJDeJqLve+K70LvjYIoleGcoJHPT17cWoA==", "dev": true, "license": "MIT" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/undici": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/undici": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/undici/-/undici-8.5.0.tgz", "integrity": "sha512-xamtWoB1EshgjpmlXd7GGm2VfdDtw1+rD8uhry8pSNW3If6S8E0m2T2+orSKeZXEn/aPJMviCpDBA65WJt8zhg==", @@ -14077,14 +14596,14 @@ "node": ">=22.19.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/undici-types": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, "license": "MIT" }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/web-streams-polyfill": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/web-streams-polyfill": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", @@ -14094,7 +14613,7 @@ "node": ">= 8" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/which": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", @@ -14110,7 +14629,7 @@ "node": ">= 8" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/ws": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/ws": { "version": "8.21.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", @@ -14132,7 +14651,7 @@ } } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/xml-naming": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/xml-naming": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.1.0.tgz", "integrity": "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==", @@ -14148,7 +14667,7 @@ "node": ">=16.0.0" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/yaml": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/yaml": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", @@ -14164,7 +14683,7 @@ "url": "https://github.com/sponsors/eemeli" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/zod": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/zod": { "version": "3.25.76", "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", @@ -14174,7 +14693,7 @@ "url": "https://github.com/sponsors/colinhacks" } }, - "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/zod-to-json-schema": { + "packages/pi-ghost-in-the-machine/node_modules/@earendil-works/pi-coding-agent/node_modules/zod-to-json-schema": { "version": "3.25.2", "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", @@ -14184,8 +14703,8 @@ "zod": "^3.25.28 || ^4" } }, - "packages/pi-tmux-title": { - "name": "@iurysza/pi-tmux-title", + "packages/pi-secret-env": { + "name": "@iurysza/pi-secret-env", "version": "0.1.0", "license": "MIT", "devDependencies": { @@ -14200,7 +14719,7 @@ "@earendil-works/pi-coding-agent": "*" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-coding-agent/-/pi-coding-agent-0.80.10.tgz", "integrity": "sha512-aL4apbupCHiVLSXASXvRzH4Q2vmtfrDa+0s909CJuVu/GgGylbDzr7oyF1mPmip5E+VxYYxKWmph4hV04wUcQg==", @@ -14237,7 +14756,7 @@ "@mariozechner/clipboard": "0.3.9" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@anthropic-ai/sdk": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@anthropic-ai/sdk": { "version": "0.91.1", "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.91.1.tgz", "integrity": "sha512-LAmu761tSN9r66ixvmciswUj/ZC+1Q4iAfpedTfSVLeswRwnY3n2Nb6Tsk+cLPP28aLOPWeMgIuTuCcMC6W/iw==", @@ -14258,7 +14777,7 @@ } } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/crc32": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/crc32": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", @@ -14273,7 +14792,7 @@ "node": ">=16.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-browser": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-browser": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", @@ -14289,7 +14808,7 @@ "tslib": "^2.6.2" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-js": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-js": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", @@ -14304,7 +14823,7 @@ "node": ">=16.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/supports-web-crypto": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/supports-web-crypto": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", @@ -14314,7 +14833,7 @@ "tslib": "^2.6.2" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/util": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/util": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", @@ -14326,7 +14845,7 @@ "tslib": "^2.6.2" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/client-bedrock-runtime": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/client-bedrock-runtime": { "version": "3.1048.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.1048.0.tgz", "integrity": "sha512-u+NT61JZEkRFtpL0CAw1N1dwxnaLgwVXQl/zjJxTGgLyS/jTIdg2SdoEoCTHxgDyCnqa1HEi9QOoE9/pYRNpOQ==", @@ -14352,7 +14871,7 @@ "node": ">=20.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/core": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/core": { "version": "3.974.11", "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.11.tgz", "integrity": "sha512-QpnINq5FZH6EOaDEkmHdT7eUunbvD27pDNQypaWjFyYz7Zl1q3UCMQErBZxpmfGfI7MvI2TlK8KTkgNpv8b1ug==", @@ -14372,7 +14891,7 @@ "node": ">=20.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-env": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-env": { "version": "3.972.37", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.37.tgz", "integrity": "sha512-/jpPvEh6f7ntmIzf7dNxoNX6Q8vt8UpesCjbW6mFfk4V1NW6bIy9qxcQ6WbA8As5yQhsZOe+xeNd4xHX8kdY2Q==", @@ -14389,7 +14908,7 @@ "node": ">=20.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-http": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-http": { "version": "3.972.39", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.39.tgz", "integrity": "sha512-pIgTpisWyWg7X1bUbzSjuUYosYTD0Ghz2M0hkSTmb3a6i3qV3uU+NYJPI/E2XSC0HcsZh5rsLPzeXrkb2DS0Cg==", @@ -14408,7 +14927,7 @@ "node": ">=20.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-ini": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-ini": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.41.tgz", "integrity": "sha512-u2tyjaxJJzW8UtW4SM1ZcPMDwO6y+kV+llvou+Adts0FAKyzes5jG4izQN+KX3yE8ZROpS5y1LJ//xL2iSf76w==", @@ -14433,7 +14952,7 @@ "node": ">=20.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-login": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-login": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.41.tgz", "integrity": "sha512-0LBitxXiAiaE5nlFPfpNIww/8FRY/I7WIndWsc9GmNFOM7cE1wNpVNQEGEk9Outg5l8xl+3vybxFyUy4l9q/LQ==", @@ -14451,7 +14970,7 @@ "node": ">=20.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-node": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-node": { "version": "3.972.42", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.42.tgz", "integrity": "sha512-D4oon2zbqqsWOJUM99Gm3/ZyJ0IJvTXVN3PyloGb3kQEyI36fjCZheZj422lAgTWWd6TSHgiImLt3RIaLdv3dQ==", @@ -14474,7 +14993,7 @@ "node": ">=20.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-process": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-process": { "version": "3.972.37", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.37.tgz", "integrity": "sha512-7nVaHBUaWIddASYfVaA9O4D5ZVjewU3sCol9WqZPGfW0nR+0WqE0xHZnD/U2L33PlOB8KNXGKZ6wOES/QijKzg==", @@ -14491,7 +15010,7 @@ "node": ">=20.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-sso": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-sso": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.41.tgz", "integrity": "sha512-IOWAWEHe5LkjSKkkUUX9ciV6Y1scHTsnfEkdt5yyC4Slrc7AGbkLPrpntjqh18ksJAMOaVhoBsO8p2WyTcY2wQ==", @@ -14510,7 +15029,7 @@ "node": ">=20.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-web-identity": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-web-identity": { "version": "3.972.41", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.41.tgz", "integrity": "sha512-mbACk9Yypa8nm4iGZLs0PofOXEcTDOUw6wDnsPXNDNSd2WNXs1tSo+6nc/fh0jLYdfVZThhBL98PHW4aXFsG5A==", @@ -14528,7 +15047,7 @@ "node": ">=20.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/eventstream-handler-node": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/eventstream-handler-node": { "version": "3.972.16", "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.972.16.tgz", "integrity": "sha512-yedpPgKftqjU5SlPFHfqWpOw6xSCRieWRG1euWOlXn4WJxt2VX92VprCa2PpSOXjVCAeK6dTjW9eJRXVig9yGA==", @@ -14544,7 +15063,7 @@ "node": ">=20.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-eventstream": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-eventstream": { "version": "3.972.12", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.972.12.tgz", "integrity": "sha512-tHTHHCHNrq6XklQvlzHBDJG4Iuhh7NVPRdtmvP+nHFA+5sxPlIDzlAHHgfoYHGvT3NXP1yVP/L5c3opUn6T3Qg==", @@ -14560,7 +15079,7 @@ "node": ">=20.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-websocket": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-websocket": { "version": "3.972.19", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-websocket/-/middleware-websocket-3.972.19.tgz", "integrity": "sha512-mkEhOGYozqKQkbFaVrjwr0faiwwZza1v5/jSY6Tucm3bD+uKTazIUH/4Yo6aMnQD2ua2W9cMP6s8mvwTcjtqHw==", @@ -14579,7 +15098,7 @@ "node": ">= 14.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/nested-clients": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/nested-clients": { "version": "3.997.9", "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.9.tgz", "integrity": "sha512-jPR3rnmRI4hWYyzfmTGBr7NblMp8QYYeflHXba1H6+7CGrWVqWKQzaXFQ4qbExqPRsXN3T3L3JxFhr6aouXUGQ==", @@ -14601,7 +15120,7 @@ "node": ">=20.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/signature-v4-multi-region": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/signature-v4-multi-region": { "version": "3.996.27", "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.27.tgz", "integrity": "sha512-0Phbz4t6HI3D3skxvG2uI+VWU034/nSIw1T8d+FPzzQG9EQTrw94o9mOKO2Gv3n3Oc8P7JD7RAUxkoneLWv5Eg==", @@ -14618,7 +15137,7 @@ "node": ">=20.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/token-providers": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/token-providers": { "version": "3.1048.0", "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1048.0.tgz", "integrity": "sha512-k0y/GcuesuSfWyUM0WamrGyeZmltRYaPbHO82UDA6mZ/doB+FOHKutikPAtSXMn/hDz970cF+iRuuiYO9VEbAA==", @@ -14636,7 +15155,7 @@ "node": ">=20.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/types": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/types": { "version": "3.973.8", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.8.tgz", "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==", @@ -14650,7 +15169,7 @@ "node": ">=20.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/util-locate-window": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/util-locate-window": { "version": "3.965.5", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==", @@ -14663,7 +15182,7 @@ "node": ">=20.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/xml-builder": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/xml-builder": { "version": "3.972.24", "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.24.tgz", "integrity": "sha512-V8z5YcDPfsvzrBlj0xR1vhRtocblhYbqdreCJB/voGd4Sr5zjNAeWxexbnqVtskTJe0vFb5KMqbSL++ePl+zRw==", @@ -14679,7 +15198,7 @@ "node": ">=20.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws/lambda-invoke-store": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@aws/lambda-invoke-store": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", @@ -14689,7 +15208,7 @@ "node": ">=18.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@babel/runtime": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@babel/runtime": { "version": "7.29.2", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", @@ -14699,7 +15218,7 @@ "node": ">=6.9.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-agent-core": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-agent-core": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.80.10.tgz", "dev": true, @@ -14714,7 +15233,7 @@ "node": ">=22.19.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-ai": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-ai": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.80.10.tgz", "dev": true, @@ -14739,7 +15258,7 @@ "node": ">=22.19.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-tui": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-tui": { "version": "0.80.10", "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.80.10.tgz", "dev": true, @@ -14752,7 +15271,7 @@ "node": ">=22.19.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@google/genai": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@google/genai": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/@google/genai/-/genai-1.52.0.tgz", "integrity": "sha512-gwSvbpiN/17O9TbsqSsE/OzZcpv5Fo4RQjdngGgogtuB9RsyJ8ZHhX5KjHj1bp5N9snN2eK8LDGXSaWW2hof8Q==", @@ -14777,7 +15296,7 @@ } } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard/-/clipboard-0.3.9.tgz", "integrity": "sha512-ABnA53mdfkGZwOFUdZNv2S0CWGO/EIuPj8Vv9xmBFmSYg/qFc7ihO6q5FcQjvoE67kZpWkEc4AhD6B/os04yuA==", @@ -14800,7 +15319,7 @@ "@mariozechner/clipboard-win32-x64-msvc": "0.3.9" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-arm64": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-arm64": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-darwin-arm64/-/clipboard-darwin-arm64-0.3.9.tgz", "integrity": "sha512-BfgV7vCEWZwJwZJw03r6bP5+tf0iI/ANuQYCxi9RNn7FrWB3yzGuMKCrNLRl6V761vXRdL8+OqZ0wd4TqlsNOQ==", @@ -14817,7 +15336,7 @@ "node": ">= 10" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-universal": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-universal": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-darwin-universal/-/clipboard-darwin-universal-0.3.9.tgz", "integrity": "sha512-BGGR4iA9Z2shAjI65eI5xtyb3LYNlDW9X3gxKxDbqtbnREohsrqznov6zpKoIrsRWpzlYVEdKphS7ksJ0/ndSQ==", @@ -14831,7 +15350,7 @@ "node": ">= 10" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-x64": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-x64": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-darwin-x64/-/clipboard-darwin-x64-0.3.9.tgz", "integrity": "sha512-4kURmCbS6nt8uYhtmWpUcJWyPHfmAr5dTpXD1nO3pIfa+TSQ9DbrGOYCKH+aEFW47XhQ4Vp8ZTszie+wfFvDKg==", @@ -14848,7 +15367,7 @@ "node": ">= 10" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-gnu": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-gnu": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-arm64-gnu/-/clipboard-linux-arm64-gnu-0.3.9.tgz", "integrity": "sha512-g59OkUGP2DDfCOIKypHeYgv2M55u/cKvXa5dSxFbEJ34XvIQMdcVmpKCkGUro3ZgefXiGVdwguvTMQGpHWzIXw==", @@ -14868,7 +15387,7 @@ "node": ">= 10" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-musl": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-musl": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-arm64-musl/-/clipboard-linux-arm64-musl-0.3.9.tgz", "integrity": "sha512-AGuJdgKsmJdm4Pych7kv3sqe591ERRaAHW3xjLooiFzn8J+PxUyof++7YZrB5Y5tpnTO+K18Og3taj2NpluCRQ==", @@ -14888,7 +15407,7 @@ "node": ">= 10" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-riscv64-gnu": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-riscv64-gnu": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-riscv64-gnu/-/clipboard-linux-riscv64-gnu-0.3.9.tgz", "integrity": "sha512-DXBEAiuMpk7dhS1a9NzNxVAFi1vaKoPu7rQNgY8LIDLGrK3lnIp3nT10DUum+PKVJoJppIP+NAA8IZe4DMNDPw==", @@ -14908,7 +15427,7 @@ "node": ">= 10" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-gnu": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-gnu": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-x64-gnu/-/clipboard-linux-x64-gnu-0.3.9.tgz", "integrity": "sha512-WORrMLd6EpElEME7JRKfSaY34nW1P5LbdgK5YNCS1ncG2LqmITsSMEJ8nh2mpvxb3TxqbOOKgY7k9eMJYlW9Mw==", @@ -14928,7 +15447,7 @@ "node": ">= 10" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-musl": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-musl": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-x64-musl/-/clipboard-linux-x64-musl-0.3.9.tgz", "integrity": "sha512-/DHn+1DrfL6oRaPPWXaOKvonFFrni666fxd+zFqiQEfvBH0tsHVWjq9iqBk0oDp0qaPA72lIMy5BptxISBEhZQ==", @@ -14948,7 +15467,7 @@ "node": ">= 10" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-arm64-msvc": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-arm64-msvc": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-win32-arm64-msvc/-/clipboard-win32-arm64-msvc-0.3.9.tgz", "integrity": "sha512-O5FHD3ErkMwMhNzAfu3ggy0ug4z7btZuoQgwwxlzPrwV2bxlD6WDpqBY4NCgICAgZdDKdp+loUEKVAVt8aYnhQ==", @@ -14965,7 +15484,7 @@ "node": ">= 10" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-x64-msvc": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-x64-msvc": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-win32-x64-msvc/-/clipboard-win32-x64-msvc-0.3.9.tgz", "integrity": "sha512-ihQC3EufqEY81vhXBgVBtK4prL+wc62zJsSvxrgz7K1hsdt6OObz6v9p3Rn1OG3GJksTTKMJF0u/guMISHPhSA==", @@ -14982,7 +15501,7 @@ "node": ">= 10" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@mistralai/mistralai": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@mistralai/mistralai": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/@mistralai/mistralai/-/mistralai-2.2.6.tgz", "integrity": "sha512-W8pX7zHxjJvMIpw8JMxeJEleapXX0Q9NPszdNzqkM3MIEoIGPObdodujj+WHteXEvGfaP/AMwlNyRfEzSY6dQQ==", @@ -15003,7 +15522,7 @@ } } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@nodable/entities": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@nodable/entities": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz", "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==", @@ -15016,7 +15535,7 @@ ], "license": "MIT" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/api": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/api": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", @@ -15026,7 +15545,7 @@ "node": ">=8.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/semantic-conventions": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/semantic-conventions": { "version": "1.41.1", "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.41.1.tgz", "integrity": "sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA==", @@ -15036,35 +15555,35 @@ "node": ">=14" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/aspromise": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/base64": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/base64": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/codegen": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/codegen": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz", "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/eventemitter": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/eventemitter": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/fetch": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/fetch": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz", "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==", @@ -15074,42 +15593,42 @@ "@protobufjs/aspromise": "^1.1.1" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/float": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/float": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/path": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/path": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/pool": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/pool": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/utf8": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/utf8": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.1.tgz", "integrity": "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@silvia-odwyer/photon-node": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@silvia-odwyer/photon-node": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/@silvia-odwyer/photon-node/-/photon-node-0.3.4.tgz", "integrity": "sha512-bnly4BKB3KDTFxrUIcgCLbaeVVS8lrAkri1pEzskpmxu9MdfGQTy8b8EgcD83ywD3RPMsIulY8xJH5Awa+t9fA==", "dev": true, "license": "Apache-2.0" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/core": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/core": { "version": "3.24.3", "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.24.3.tgz", "integrity": "sha512-Ep/7tPamGY8mgESE3LyLKtxJyy6U52WWAqr/3wial47Sj4u3PiIF73AOGI27UyLy9duTkhZbgzodOfLV4TduZg==", @@ -15124,7 +15643,7 @@ "node": ">=18.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/credential-provider-imds": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/credential-provider-imds": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.3.tgz", "integrity": "sha512-I2Bti0DKFo2IJyN28ijCsx51BAumEYR4/1yZ1FXyBygy9MqbnMqCev4JPth/MbpRfBSRAX35hITSnAdJRo1u5w==", @@ -15139,7 +15658,7 @@ "node": ">=18.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/fetch-http-handler": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/fetch-http-handler": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.4.3.tgz", "integrity": "sha512-F+DRf8IJazRJgYog2A/yJK7eYVc0rqTlRzO+5ZxjJd4WkZoKz0IJRncf7G6t1pdVT3kryJcwuTFhN1c5m6N47A==", @@ -15154,7 +15673,7 @@ "node": ">=18.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/is-array-buffer": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/is-array-buffer": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", @@ -15167,7 +15686,7 @@ "node": ">=14.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/node-http-handler": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/node-http-handler": { "version": "4.7.3", "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.3.tgz", "integrity": "sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA==", @@ -15182,7 +15701,7 @@ "node": ">=18.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/signature-v4": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/signature-v4": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.4.3.tgz", "integrity": "sha512-53+75QuPl6DL+ct6vVEB51FDO5oulXr20TPV46VvJZg76lIlXNWfxi8j+G2V/t0I2qxCBOa3vX/8bmjrpFVo9g==", @@ -15197,7 +15716,7 @@ "node": ">=18.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/types": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/types": { "version": "4.14.2", "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.2.tgz", "integrity": "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw==", @@ -15210,7 +15729,7 @@ "node": ">=18.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-buffer-from": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-buffer-from": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", @@ -15224,7 +15743,7 @@ "node": ">=14.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-utf8": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-utf8": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", @@ -15238,7 +15757,7 @@ "node": ">=14.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/@types/node": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/@types/node": { "version": "22.19.19", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.19.tgz", "integrity": "sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew==", @@ -15248,7 +15767,7 @@ "undici-types": "~6.21.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/agent-base": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/agent-base": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", @@ -15258,7 +15777,7 @@ "node": ">= 14" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/balanced-match": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/balanced-match": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", @@ -15268,7 +15787,7 @@ "node": "18 || 20 || >=22" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/base64-js": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", @@ -15289,7 +15808,7 @@ ], "license": "MIT" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/bignumber.js": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/bignumber.js": { "version": "9.3.1", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", @@ -15299,14 +15818,14 @@ "node": "*" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/bowser": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/bowser": { "version": "2.14.1", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", "dev": true, "license": "MIT" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/brace-expansion": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/brace-expansion": { "version": "5.0.6", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", @@ -15319,14 +15838,14 @@ "node": "18 || 20 || >=22" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/buffer-equal-constant-time": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", "dev": true, "license": "BSD-3-Clause" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/chalk": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/chalk": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", @@ -15339,7 +15858,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/cross-spawn": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", @@ -15354,7 +15873,7 @@ "node": ">= 8" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/data-uri-to-buffer": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/data-uri-to-buffer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", @@ -15364,7 +15883,7 @@ "node": ">= 12" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/debug": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", @@ -15382,7 +15901,7 @@ } } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/diff": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/diff": { "version": "8.0.4", "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", @@ -15392,7 +15911,7 @@ "node": ">=0.3.1" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/ecdsa-sig-formatter": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", @@ -15402,14 +15921,14 @@ "safe-buffer": "^5.0.1" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/extend": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true, "license": "MIT" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-builder": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-builder": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz", "integrity": "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==", @@ -15426,7 +15945,7 @@ "xml-naming": "^0.1.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-parser": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-parser": { "version": "5.7.3", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.3.tgz", "integrity": "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==", @@ -15448,7 +15967,7 @@ "fxparser": "src/cli/cli.js" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/fetch-blob": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/fetch-blob": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", @@ -15472,7 +15991,7 @@ "node": "^12.20 || >= 14.13" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/formdata-polyfill": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/formdata-polyfill": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", @@ -15485,7 +16004,7 @@ "node": ">=12.20.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/gaxios": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/gaxios": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.1.4.tgz", "integrity": "sha512-bTIgTsM2bWn3XklZISBTQX7ZSddGW+IO3bMdGaemHZ3tbqExMENHLx6kKZ/KlejgrMtj8q7wBItt51yegqalrA==", @@ -15500,7 +16019,7 @@ "node": ">=18" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/gcp-metadata": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/gcp-metadata": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-8.1.2.tgz", "integrity": "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==", @@ -15515,7 +16034,7 @@ "node": ">=18" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/get-east-asian-width": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/get-east-asian-width": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", @@ -15528,7 +16047,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/glob": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/glob": { "version": "13.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", @@ -15546,7 +16065,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/google-auth-library": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/google-auth-library": { "version": "10.6.2", "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.6.2.tgz", "integrity": "sha512-e27Z6EThmVNNvtYASwQxose/G57rkRuaRbQyxM2bvYLLX/GqWZ5chWq2EBoUchJbCc57eC9ArzO5wMsEmWftCw==", @@ -15564,7 +16083,7 @@ "node": ">=18" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/google-logging-utils": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/google-logging-utils": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-1.1.3.tgz", "integrity": "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==", @@ -15574,14 +16093,14 @@ "node": ">=14" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/graceful-fs": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, "license": "ISC" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/highlight.js": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", @@ -15591,7 +16110,7 @@ "node": "*" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/hosted-git-info": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/hosted-git-info": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.3.tgz", "integrity": "sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==", @@ -15604,7 +16123,7 @@ "node": "^20.17.0 || >=22.9.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/http-proxy-agent": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", @@ -15618,7 +16137,7 @@ "node": ">= 14" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/https-proxy-agent": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", @@ -15632,7 +16151,7 @@ "node": ">= 14" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/ignore": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/ignore": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", @@ -15642,14 +16161,14 @@ "node": ">= 4" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/isexe": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, "license": "ISC" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/jiti": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/jiti": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", @@ -15659,7 +16178,7 @@ "jiti": "lib/jiti-cli.mjs" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/json-bigint": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/json-bigint": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", @@ -15669,7 +16188,7 @@ "bignumber.js": "^9.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/json-schema-to-ts": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/json-schema-to-ts": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-3.1.1.tgz", "integrity": "sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==", @@ -15683,7 +16202,7 @@ "node": ">=16" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/jwa": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/jwa": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", @@ -15695,7 +16214,7 @@ "safe-buffer": "^5.0.1" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/jws": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/jws": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", @@ -15706,14 +16225,14 @@ "safe-buffer": "^5.0.1" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/long": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/long": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", "dev": true, "license": "Apache-2.0" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/lru-cache": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/lru-cache": { "version": "11.4.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.4.0.tgz", "integrity": "sha512-W+R+kFL4HgVxONq2bhXPi3bGpzGe/yEhVOp233qw9wCRtgncJ15P3bC+e4zZMu4Cq7d+WAJjXGW0uUkifhcatA==", @@ -15723,7 +16242,7 @@ "node": "20 || >=22" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/marked": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/marked": { "version": "18.0.5", "resolved": "https://registry.npmjs.org/marked/-/marked-18.0.5.tgz", "integrity": "sha512-S6GcvALHg6K4ohtu4E7x0a1AqhAjp6cV8KhLSyN9qVapnzJkusVBxZRcIU9AeYsbe6P1hKDusSbEOzGyyuce6w==", @@ -15736,7 +16255,7 @@ "node": ">= 20" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/minimatch": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/minimatch": { "version": "10.2.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", @@ -15752,7 +16271,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/minipass": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/minipass": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", @@ -15762,14 +16281,14 @@ "node": ">=16 || 14 >=14.17" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/ms": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/node-domexception": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", @@ -15790,7 +16309,7 @@ "node": ">=10.5.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/node-fetch": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/node-fetch": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", @@ -15809,7 +16328,7 @@ "url": "https://opencollective.com/node-fetch" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/openai": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/openai": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/openai/-/openai-6.26.0.tgz", "integrity": "sha512-zd23dbWTjiJ6sSAX6s0HrCZi41JwTA1bQVs0wLQPZ2/5o2gxOJA5wh7yOAUgwYybfhDXyhwlpeQf7Mlgx8EOCA==", @@ -15831,7 +16350,7 @@ } } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", @@ -15845,21 +16364,21 @@ "node": ">=8" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry/node_modules/@types/retry": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry/node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true, "license": "MIT" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/partial-json": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/partial-json": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/partial-json/-/partial-json-0.1.7.tgz", "integrity": "sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==", "dev": true, "license": "MIT" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/path-expression-matcher": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/path-expression-matcher": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz", "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==", @@ -15875,7 +16394,7 @@ "node": ">=14.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/path-key": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", @@ -15885,7 +16404,7 @@ "node": ">=8" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/path-scurry": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/path-scurry": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", @@ -15902,7 +16421,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", @@ -15914,7 +16433,7 @@ "signal-exit": "^3.0.2" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile/node_modules/retry": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile/node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", @@ -15924,7 +16443,7 @@ "node": ">= 4" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/protobufjs": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/protobufjs": { "version": "7.6.4", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.4.tgz", "integrity": "sha512-RJJPTTpvFfHcWLkIa2JFWK4XvtSzS0yEWDmunqHXli1h3JlkbcQZXDZdcWxv+JK3Xsl5/UFDPZ0iGm7DAengYw==", @@ -15948,7 +16467,7 @@ "node": ">=12.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/retry": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", @@ -15958,7 +16477,7 @@ "node": ">= 4" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/safe-buffer": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", @@ -15979,7 +16498,7 @@ ], "license": "MIT" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/semver": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/semver": { "version": "7.8.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", @@ -15992,7 +16511,7 @@ "node": ">=10" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-command": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", @@ -16005,7 +16524,7 @@ "node": ">=8" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-regex": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", @@ -16015,14 +16534,14 @@ "node": ">=8" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/signal-exit": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/strnum": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/strnum": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.3.0.tgz", "integrity": "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==", @@ -16035,28 +16554,28 @@ ], "license": "MIT" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/ts-algebra": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/ts-algebra": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ts-algebra/-/ts-algebra-2.0.0.tgz", "integrity": "sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==", "dev": true, "license": "MIT" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/tslib": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, "license": "0BSD" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/typebox": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/typebox": { "version": "1.1.38", "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.1.38.tgz", "integrity": "sha512-pZ0aQPmMmXoUvSbeuWf/Hzsc+avNw/Zd6VeE8CFgkVGWyuHPJvqeJJDeJqLve+K70LvjYIoleGcoJHPT17cWoA==", "dev": true, "license": "MIT" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/undici": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/undici": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/undici/-/undici-8.5.0.tgz", "integrity": "sha512-xamtWoB1EshgjpmlXd7GGm2VfdDtw1+rD8uhry8pSNW3If6S8E0m2T2+orSKeZXEn/aPJMviCpDBA65WJt8zhg==", @@ -16066,14 +16585,14 @@ "node": ">=22.19.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/undici-types": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, "license": "MIT" }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/web-streams-polyfill": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/web-streams-polyfill": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", @@ -16083,7 +16602,7 @@ "node": ">= 8" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/which": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", @@ -16099,7 +16618,7 @@ "node": ">= 8" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/ws": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/ws": { "version": "8.21.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", @@ -16121,7 +16640,7 @@ } } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/xml-naming": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/xml-naming": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.1.0.tgz", "integrity": "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==", @@ -16137,7 +16656,7 @@ "node": ">=16.0.0" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/yaml": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/yaml": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", @@ -16153,7 +16672,7 @@ "url": "https://github.com/sponsors/eemeli" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/zod": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/zod": { "version": "3.25.76", "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", @@ -16163,7 +16682,7 @@ "url": "https://github.com/sponsors/colinhacks" } }, - "packages/pi-tmux-title/node_modules/@earendil-works/pi-coding-agent/node_modules/zod-to-json-schema": { + "packages/pi-secret-env/node_modules/@earendil-works/pi-coding-agent/node_modules/zod-to-json-schema": { "version": "3.25.2", "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", diff --git a/package.json b/package.json index 96bc434..e5b9824 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,8 @@ "@ataraxy-labs/sem@0.3.24": true, "@google/genai@1.52.0": true, "better-sqlite3@12.11.1": true, + "esbuild@0.28.1": true, + "fsevents@2.3.3": true, "koffi@2.16.3": true, "protobufjs@7.6.4": true, "protobufjs@7.6.5": true @@ -44,9 +46,9 @@ "./packages/pi-agent-explorer/extensions/agent-explorer.ts", "./packages/pi-token-tank/src/index.ts", "./packages/pi-context-audit/src/index.ts", - "./packages/pi-tmux-title/src/index.ts", "./packages/pi-secret-env/src/index.ts", - "./packages/pi-ghost-in-the-machine/src/index.ts" + "./packages/pi-ghost-in-the-machine/src/index.ts", + "./packages/artifact-explorer/index.ts" ], "skills": [ "./packages/pi-ext/skills/commit", diff --git a/packages/pi-tmux-title/LICENSE b/packages/artifact-explorer/LICENSE similarity index 100% rename from packages/pi-tmux-title/LICENSE rename to packages/artifact-explorer/LICENSE diff --git a/packages/artifact-explorer/README.md b/packages/artifact-explorer/README.md new file mode 100644 index 0000000..a7424ca --- /dev/null +++ b/packages/artifact-explorer/README.md @@ -0,0 +1,79 @@ +# artifact-explorer + +Open each repository's `ai-artifacts/` directory as an isolated Obsidian vault +with a shared workspace layout. Artifact Explorer keeps project artifacts +separate while reusing the plugins and settings from your main vault. + +## Install + +```bash +pi install npm:@iurysza/artifact-explorer +``` + +Create the machine-local configuration: + +```bash +agent_dir="${PI_CODING_AGENT_DIR:-$HOME/.pi/agent}" +mkdir -p "$agent_dir/artifact-explorer" +cp "$agent_dir/npm/node_modules/@iurysza/artifact-explorer/config.json.example" \ + "$agent_dir/artifact-explorer/config.json" +``` + +Edit `sourceProfilePath` to the **absolute path** of your main vault's +`.obsidian` directory, then restart Pi or run `/reload`. + +```json +{ + "sourceProfilePath": "/absolute/path/to/main-vault/.obsidian", + "obsidianBinary": "obsidian", + "artifactWorkspaceName": "AI Artifacts", + "hubWorkspaceName": "Artifact Hub" +} +``` + +## Commands + +| Command | Description | +| --- | --- | +| `/artifact-explorer` | Create or open the current repository's artifact vault. | +| `/artifact-explorer hub` | Open the metadata-only hub of known projects. | +| `/artifact-explorer status` | Show detected paths, CLI availability, and vault registration. | +| `/artifact-explorer --help` | Show command help. | + +## What it does + +- Finds the Git root from Pi's current working directory. +- Creates `/ai-artifacts/` when missing. +- Copies plugins and settings from the configured source profile. +- Preserves each artifact vault's own workspace tabs and layout. +- Registers and opens the artifact vault in a separate Obsidian window. +- Installs Vault Nickname when needed and labels the vault + ` · AI Artifacts`. +- Tracks project metadata in the Pi agent directory. +- Opens a metadata-only hub for navigating known artifact vaults. + +Each repository receives this local Git exclusion: + +```gitignore +/ai-artifacts/.obsidian/ +``` + +Only `.git/info/exclude` changes; project `.gitignore` files remain untouched. +The runtime registry, hub, and machine-local configuration stay under +`${PI_CODING_AGENT_DIR:-~/.pi/agent}/artifact-explorer/` and are never shipped +with the package. + +## Requirements + +- Pi +- Node.js 22.19 or newer +- macOS +- Obsidian with its CLI enabled under Settings → General → Advanced + +The extension copies the configured Obsidian profile into artifact vaults. +Review that profile before using it if plugin data contains machine-local or +sensitive settings. + +## License + +MIT \ No newline at end of file diff --git a/packages/artifact-explorer/config.json.example b/packages/artifact-explorer/config.json.example new file mode 100644 index 0000000..74941b2 --- /dev/null +++ b/packages/artifact-explorer/config.json.example @@ -0,0 +1,6 @@ +{ + "sourceProfilePath": "/absolute/path/to/main-vault/.obsidian", + "obsidianBinary": "obsidian", + "artifactWorkspaceName": "AI Artifacts", + "hubWorkspaceName": "Artifact Hub" +} diff --git a/packages/artifact-explorer/index.ts b/packages/artifact-explorer/index.ts new file mode 100644 index 0000000..53f89ba --- /dev/null +++ b/packages/artifact-explorer/index.ts @@ -0,0 +1,51 @@ +import type { ExtensionAPI } from "@earendil-works/pi-coding-agent"; +import { loadConfig } from "./lib/config.js"; +import { HELP_TEXT, parseCommandArgs } from "./lib/parse-args.js"; +import { + buildStatusReport, + formatStatusReport, + openCurrentProject, + openHub, +} from "./lib/open-project.js"; + +export default function artifactExplorer(pi: ExtensionAPI) { + pi.registerCommand("artifact-explorer", { + description: "Open or create this project's ai-artifacts Obsidian vault", + handler: async (args, ctx) => { + const parsed = parseCommandArgs(args); + const config = await loadConfig(); + + try { + switch (parsed.kind) { + case "help": + ctx.ui.notify(HELP_TEXT, "info"); + return; + case "unknown": + ctx.ui.notify(`${HELP_TEXT}\n\nUnknown argument: ${parsed.args}`, "warning"); + return; + case "status": { + const report = await buildStatusReport(config, ctx.cwd); + ctx.ui.notify(formatStatusReport(report), "info"); + return; + } + case "hub": { + const hubRoot = await openHub(config); + ctx.ui.notify(`Opened Artifact Hub at ${hubRoot}`, "info"); + return; + } + case "open": { + const result = await openCurrentProject(config, ctx.cwd); + ctx.ui.notify( + `Opened ${result.repoPath} → ai-artifacts (vault ${result.vaultId})`, + "info", + ); + return; + } + } + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + ctx.ui.notify(`artifact-explorer: ${message}`, "error"); + } + }, + }); +} diff --git a/packages/artifact-explorer/lib/config.ts b/packages/artifact-explorer/lib/config.ts new file mode 100644 index 0000000..3966b01 --- /dev/null +++ b/packages/artifact-explorer/lib/config.ts @@ -0,0 +1,25 @@ +import { existsSync } from "node:fs"; +import { readFile } from "node:fs/promises"; +import type { ArtifactExplorerConfig } from "./types.js"; +import { defaultConfig, getConfigPath } from "./paths.js"; + +export async function loadConfig(): Promise { + const defaults = defaultConfig(); + const path = getConfigPath(); + if (!existsSync(path)) { + return defaults; + } + + try { + const raw = await readFile(path, "utf8"); + const parsed = JSON.parse(raw) as Partial; + return { + sourceProfilePath: parsed.sourceProfilePath ?? defaults.sourceProfilePath, + obsidianBinary: parsed.obsidianBinary ?? defaults.obsidianBinary, + artifactWorkspaceName: parsed.artifactWorkspaceName ?? defaults.artifactWorkspaceName, + hubWorkspaceName: parsed.hubWorkspaceName ?? defaults.hubWorkspaceName, + }; + } catch { + return defaults; + } +} diff --git a/packages/artifact-explorer/lib/fs-utils.ts b/packages/artifact-explorer/lib/fs-utils.ts new file mode 100644 index 0000000..43172e6 --- /dev/null +++ b/packages/artifact-explorer/lib/fs-utils.ts @@ -0,0 +1,27 @@ +import { mkdir, readFile, rename, writeFile } from "node:fs/promises"; +import { dirname } from "node:path"; + +export async function readJsonFile(path: string): Promise { + const raw = await readFile(path, "utf8"); + return JSON.parse(raw) as T; +} + +export async function writeJsonAtomic(path: string, value: unknown): Promise { + await mkdir(dirname(path), { recursive: true }); + const tmp = `${path}.tmp.${process.pid}`; + await writeFile(tmp, `${JSON.stringify(value, null, 2)}\n`, "utf8"); + await rename(tmp, path); +} + +export function isTransientRelativePath(relativePath: string): boolean { + const normalized = relativePath.replaceAll("\\", "/"); + if (normalized.endsWith(".log")) return true; + if (normalized.endsWith("obsidian_askpass.sh")) return true; + if (normalized.includes("/cache/")) return true; + if (normalized.endsWith("/cache")) return true; + return false; +} + +export function sleep(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)); +} diff --git a/packages/artifact-explorer/lib/git.ts b/packages/artifact-explorer/lib/git.ts new file mode 100644 index 0000000..92633f3 --- /dev/null +++ b/packages/artifact-explorer/lib/git.ts @@ -0,0 +1,56 @@ +import { execFile } from "node:child_process"; +import { existsSync } from "node:fs"; +import { lstat, mkdir, readFile, writeFile } from "node:fs/promises"; +import { dirname, join } from "node:path"; +import { promisify } from "node:util"; +import { artifactPathForRepo, gitExcludePath } from "./paths.js"; + +const execFileAsync = promisify(execFile); + +const EXCLUDE_LINE = "/ai-artifacts/.obsidian/"; + +export async function findGitRoot(cwd: string): Promise { + const { stdout } = await execFileAsync("git", ["rev-parse", "--show-toplevel"], { + cwd, + }); + return stdout.trim(); +} + +export async function ensureArtifactDirectory(repoPath: string): Promise { + const artifactPath = artifactPathForRepo(repoPath); + const stats = await lstat(artifactPath).catch(() => null); + if (stats?.isFile()) { + throw new Error(`Expected a directory but found a file at ${artifactPath}`); + } + if (stats?.isSymbolicLink()) { + throw new Error(`Symlinked ai-artifacts paths are not supported: ${artifactPath}`); + } + if (!stats) { + await mkdir(artifactPath, { recursive: true }); + } + return artifactPath; +} + +export async function ensureGitExclude(repoPath: string): Promise { + const excludePath = gitExcludePath(repoPath); + const parent = dirname(excludePath); + await mkdir(parent, { recursive: true }); + + let content = ""; + try { + content = await readFile(excludePath, "utf8"); + } catch { + content = ""; + } + + if (content.split("\n").some((line) => line.trim() === EXCLUDE_LINE)) { + return; + } + + const suffix = content.endsWith("\n") || content.length === 0 ? "" : "\n"; + await writeFile(excludePath, `${content}${suffix}${EXCLUDE_LINE}\n`, "utf8"); +} + +export function isObsidianVault(path: string): boolean { + return existsSync(join(path, ".obsidian")); +} diff --git a/packages/artifact-explorer/lib/hash.ts b/packages/artifact-explorer/lib/hash.ts new file mode 100644 index 0000000..db7211c --- /dev/null +++ b/packages/artifact-explorer/lib/hash.ts @@ -0,0 +1,10 @@ +import { createHash } from "node:crypto"; + +export function projectIdForPath(canonicalPath: string): string { + return createHash("sha256").update(canonicalPath).digest("hex").slice(0, 16); +} + +export function projectNameFromRepo(repoPath: string): string { + const parts = repoPath.split("/").filter(Boolean); + return parts.at(-1) ?? "project"; +} diff --git a/packages/artifact-explorer/lib/obsidian-cli.ts b/packages/artifact-explorer/lib/obsidian-cli.ts new file mode 100644 index 0000000..1dc064f --- /dev/null +++ b/packages/artifact-explorer/lib/obsidian-cli.ts @@ -0,0 +1,388 @@ +import { execFile } from "node:child_process"; +import { existsSync } from "node:fs"; +import { readFile } from "node:fs/promises"; +import { promisify } from "node:util"; +import type { ArtifactExplorerConfig } from "./types.js"; +import { sleep } from "./fs-utils.js"; +import { getObsidianRegistryPath, resolveObsidianBinary } from "./paths.js"; + +const execFileAsync = promisify(execFile); +const COMMAND_READY_TIMEOUT_MS = 10_000; + +export interface ObsidianVaultEntry { + id: string; + path: string; + open?: boolean; +} + +export interface ObsidianRegistry { + vaults: Record; + cli?: boolean; +} + +export interface ObsidianRunResult { + stdout: string; + stderr: string; + ok: boolean; + error?: string; +} + +function normalizePath(path: string): string { + return path.replace(/\/+$/, ""); +} + +export async function readObsidianRegistry(): Promise { + const raw = await readFile(getObsidianRegistryPath(), "utf8"); + return JSON.parse(raw) as ObsidianRegistry; +} + +export function findVaultIdByPath(registry: ObsidianRegistry, targetPath: string): string | undefined { + const normalized = normalizePath(targetPath); + for (const [id, vault] of Object.entries(registry.vaults ?? {})) { + if (normalizePath(vault.path) === normalized) { + return id; + } + } + return undefined; +} + +export function listOpenVaultIds(registry: ObsidianRegistry): string[] { + return Object.entries(registry.vaults ?? {}) + .filter(([, vault]) => vault.open) + .map(([id]) => id); +} + +export function listEvalVaultCandidates( + registry: ObsidianRegistry, + preferredPaths: string[], +): string[] { + const preferredIds = preferredPaths + .map((path) => findVaultIdByPath(registry, path)) + .filter((id): id is string => Boolean(id)); + const openPreferredIds = preferredIds.filter((id) => registry.vaults[id]?.open); + const otherOpenIds = listOpenVaultIds(registry).filter( + (id) => !openPreferredIds.includes(id), + ); + const closedPreferredIds = preferredIds.filter( + (id) => !registry.vaults[id]?.open, + ); + + return [...new Set([...openPreferredIds, ...otherOpenIds, ...closedPreferredIds])]; +} + +export async function runObsidian( + config: ArtifactExplorerConfig, + args: string[], +): Promise { + const binary = resolveObsidianBinary(config); + try { + const { stdout, stderr } = await execFileAsync(binary, args, { + encoding: "utf8", + maxBuffer: 10 * 1024 * 1024, + }); + const combined = `${stdout}${stderr}`.trim(); + const errorLine = combined + .split("\n") + .find((line) => line.startsWith("Error:") || line.startsWith("Vault not found.")); + return { + stdout: stdout.trim(), + stderr: stderr.trim(), + ok: !errorLine, + error: errorLine, + }; + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + if (message.includes("Command line interface is not enabled")) { + return { + stdout: "", + stderr: message, + ok: false, + error: "Obsidian CLI is disabled. Enable it in Settings → General → Advanced.", + }; + } + if (message.includes("ENOENT")) { + return { + stdout: "", + stderr: message, + ok: false, + error: `Obsidian CLI not found at ${binary}`, + }; + } + return { stdout: "", stderr: message, ok: false, error: message }; + } +} + +export function isCommandStillLoading( + result: ObsidianRunResult, + command: string, +): boolean { + return Boolean( + !result.ok && + result.error?.includes(`Command "${command}" not found`) && + result.error?.includes("may require a plugin to be enabled"), + ); +} + +async function runObsidianWhenReady( + config: ArtifactExplorerConfig, + args: string[], + command: string, + timeoutMs = COMMAND_READY_TIMEOUT_MS, +): Promise { + const deadline = Date.now() + timeoutMs; + let result = await runObsidian(config, args); + + while (isCommandStillLoading(result, command) && Date.now() < deadline) { + await sleep(250); + result = await runObsidian(config, args); + } + + return result; +} + +async function openRegisteredVault(vaultId: string): Promise { + await execFileAsync("/usr/bin/open", [ + `obsidian://open?vault=${encodeURIComponent(vaultId)}`, + ]); +} + +async function waitForVaultOpen(vaultId: string, timeoutMs = 15_000): Promise { + const deadline = Date.now() + timeoutMs; + while (Date.now() < deadline) { + const registry = await readObsidianRegistry().catch(() => null); + if (registry?.vaults?.[vaultId]?.open) { + return true; + } + await sleep(250); + } + return false; +} + +async function ensureRegisteredVaultOpen(vaultId: string): Promise { + await openRegisteredVault(vaultId); + if (!(await waitForVaultOpen(vaultId))) { + throw new Error(`Timed out waiting for Obsidian vault ${vaultId} to open.`); + } +} + +export async function checkObsidianCli(config: ArtifactExplorerConfig): Promise<{ + available: boolean; + version: string | null; + error?: string; +}> { + const help = await runObsidian(config, ["help"]); + if (!help.ok && help.error?.includes("disabled")) { + return { available: false, version: null, error: help.error }; + } + if (!help.ok && help.error?.includes("not found")) { + return { available: false, version: null, error: help.error }; + } + + const version = await runObsidian(config, ["version"]); + return { + available: help.ok || !help.error?.includes("disabled"), + version: version.ok ? version.stdout : null, + error: help.error, + }; +} + +function buildVaultArgs(vaultId: string, commandArgs: string[]): string[] { + return [`vault=${vaultId}`, ...commandArgs]; +} + +export function buildEvalVaultArgs(vaultId: string, code: string): string[] { + return buildVaultArgs(vaultId, [ + "eval", + "--allow-focus-steal", + `code=${code}`, + ]); +} + +export function buildOpenVaultBridgeArgs( + artifactPath: string, + fromVaultId: string, +): string[] { + const code = `window.electron.ipcRenderer.sendSync('vault-open', ${JSON.stringify(artifactPath)}, false)`; + return buildEvalVaultArgs(fromVaultId, code); +} + +export function buildPluginCommandArgs( + vaultId: string, + command: "plugin:install" | "plugin:enable" | "plugin:reload", + pluginId: string, +): string[] { + return buildVaultArgs(vaultId, [ + command, + "--allow-focus-steal", + `id=${pluginId}`, + ]); +} + +export async function openVaultViaBridge( + config: ArtifactExplorerConfig, + artifactPath: string, + fromVaultId: string, +): Promise { + return runObsidianWhenReady( + config, + buildOpenVaultBridgeArgs(artifactPath, fromVaultId), + "eval", + ); +} + +export async function evalInVault( + config: ArtifactExplorerConfig, + vaultId: string, + code: string, +): Promise { + return runObsidianWhenReady( + config, + buildEvalVaultArgs(vaultId, code), + "eval", + ); +} + +export async function installPlugin( + config: ArtifactExplorerConfig, + vaultId: string, + pluginId: string, +): Promise { + return runObsidianWhenReady( + config, + buildPluginCommandArgs(vaultId, "plugin:install", pluginId), + "plugin:install", + ); +} + +export async function enablePlugin( + config: ArtifactExplorerConfig, + vaultId: string, + pluginId: string, +): Promise { + return runObsidianWhenReady( + config, + buildPluginCommandArgs(vaultId, "plugin:enable", pluginId), + "plugin:enable", + ); +} + +export async function reloadPlugin( + config: ArtifactExplorerConfig, + vaultId: string, + pluginId: string, +): Promise { + return runObsidianWhenReady( + config, + buildPluginCommandArgs(vaultId, "plugin:reload", pluginId), + "plugin:reload", + ); +} + +export async function closeVaultWindow( + config: ArtifactExplorerConfig, + vaultId: string, +): Promise { + return runObsidianWhenReady( + config, + buildVaultArgs(vaultId, ["command", "id=workspace:close-window"]), + "command", + ); +} + +export async function loadWorkspace( + config: ArtifactExplorerConfig, + vaultId: string, + name: string, +): Promise { + return runObsidianWhenReady( + config, + buildVaultArgs(vaultId, ["workspace:load", `name=${name}`]), + "workspace:load", + ); +} + +export async function waitForVaultByPath( + targetPath: string, + timeoutMs = 15000, +): Promise { + const deadline = Date.now() + timeoutMs; + while (Date.now() < deadline) { + if (!existsSync(getObsidianRegistryPath())) { + await sleep(250); + continue; + } + const registry = await readObsidianRegistry(); + const id = findVaultIdByPath(registry, targetPath); + if (id) return id; + await sleep(250); + } + return undefined; +} + +export async function waitForParentClosed( + parentVaultId: string, + timeoutMs = 10000, +): Promise { + const deadline = Date.now() + timeoutMs; + while (Date.now() < deadline) { + const registry = await readObsidianRegistry(); + const parent = registry.vaults?.[parentVaultId]; + if (!parent?.open) return true; + await sleep(250); + } + return false; +} + +export async function ensureVaultRegistered( + config: ArtifactExplorerConfig, + artifactPath: string, + preferredEvalPaths: string[], +): Promise { + let vaultId = await waitForVaultByPath(artifactPath, 1000); + if (vaultId) { + await ensureRegisteredVaultOpen(vaultId); + return vaultId; + } + + let registry = await readObsidianRegistry(); + let candidates = listEvalVaultCandidates(registry, preferredEvalPaths); + if (candidates.length === 0) { + await runObsidian(config, ["help"]); + await sleep(1500); + registry = await readObsidianRegistry().catch(() => ({ vaults: {} })); + candidates = listEvalVaultCandidates(registry, preferredEvalPaths); + } + + let lastError: string | undefined; + for (const evalVaultId of candidates) { + try { + if (!registry.vaults[evalVaultId]?.open) { + await ensureRegisteredVaultOpen(evalVaultId); + } + } catch (error) { + lastError = error instanceof Error ? error.message : String(error); + continue; + } + + const opened = await openVaultViaBridge(config, artifactPath, evalVaultId); + if (!opened.ok) { + lastError = opened.error ?? "Failed to register artifact vault through Obsidian bridge."; + if (isCommandStillLoading(opened, "eval")) { + continue; + } + throw new Error(lastError); + } + + vaultId = await waitForVaultByPath(artifactPath, 15000); + if (!vaultId) { + throw new Error(`Timed out waiting for Obsidian to register ${artifactPath}`); + } + await ensureRegisteredVaultOpen(vaultId); + return vaultId; + } + + throw new Error( + lastError ?? + "Obsidian has no ready vault available to register the artifact vault.", + ); +} diff --git a/packages/artifact-explorer/lib/open-project.ts b/packages/artifact-explorer/lib/open-project.ts new file mode 100644 index 0000000..3726455 --- /dev/null +++ b/packages/artifact-explorer/lib/open-project.ts @@ -0,0 +1,400 @@ +import { existsSync } from "node:fs"; +import { mkdir, writeFile } from "node:fs/promises"; +import { join } from "node:path"; +import type { ArtifactExplorerConfig, ProjectRegistry, StatusReport } from "./types.js"; +import { + artifactVaultNickname, + ensureMinimalObsidianDir, + syncProfileFromSource, + VAULT_NICKNAME_PLUGIN_ID, + writeVaultNickname, +} from "./profile-sync.js"; +import { loadRegistry, upsertProject } from "./registry.js"; +import { + checkObsidianCli, + closeVaultWindow, + enablePlugin, + ensureVaultRegistered, + evalInVault, + findVaultIdByPath, + installPlugin, + loadWorkspace, + readObsidianRegistry, + reloadPlugin, + waitForParentClosed, +} from "./obsidian-cli.js"; +import { ensureArtifactDirectory, ensureGitExclude, findGitRoot, isObsidianVault } from "./git.js"; +import { artifactPathForRepo, getHubRoot } from "./paths.js"; +import { projectIdForPath, projectNameFromRepo } from "./hash.js"; + +async function ensureVaultNickname( + config: ArtifactExplorerConfig, + vaultId: string, + targetObsidianDir: string, + nickname: string, +): Promise { + const pluginManifest = join( + targetObsidianDir, + "plugins", + VAULT_NICKNAME_PLUGIN_ID, + "manifest.json", + ); + + if (!existsSync(pluginManifest)) { + const installed = await installPlugin( + config, + vaultId, + VAULT_NICKNAME_PLUGIN_ID, + ); + if (!installed.ok) { + throw new Error( + installed.error ?? "Failed to install the Vault Nickname plugin.", + ); + } + } + + await writeVaultNickname(targetObsidianDir, nickname); + + const enabled = await enablePlugin( + config, + vaultId, + VAULT_NICKNAME_PLUGIN_ID, + ); + const alreadyEnabled = enabled.error?.includes( + `Plugin "${VAULT_NICKNAME_PLUGIN_ID}" is already enabled`, + ); + if (!enabled.ok && !alreadyEnabled) { + throw new Error( + enabled.error ?? "Failed to enable the Vault Nickname plugin.", + ); + } + + const reloaded = await reloadPlugin( + config, + vaultId, + VAULT_NICKNAME_PLUGIN_ID, + ); + if (!reloaded.ok) { + throw new Error( + reloaded.error ?? "Failed to apply the artifact vault nickname.", + ); + } + + const initialized = await evalInVault( + config, + vaultId, + `(() => { + const plugin = app.plugins.plugins[${JSON.stringify(VAULT_NICKNAME_PLUGIN_ID)}]; + if (!plugin) throw new Error("Vault Nickname is not loaded"); + if (!plugin.desktopVaultSwitcherElement && typeof plugin.onLayoutReady === "function") { + plugin.onLayoutReady(); + } + if (!plugin.desktopVaultSwitcherElement) { + throw new Error("Vault Nickname switcher UI did not initialize"); + } + return true; + })()`, + ); + if (!initialized.ok) { + throw new Error( + initialized.error ?? "Failed to initialize the nickname vault switcher.", + ); + } +} + +async function ensureHubVault(config: ArtifactExplorerConfig): Promise { + const hubRoot = getHubRoot(); + await mkdir(hubRoot, { recursive: true }); + const hubObsidian = join(hubRoot, ".obsidian"); + await ensureMinimalObsidianDir(hubObsidian); + + if (!existsSync(join(hubObsidian, "community-plugins.json"))) { + await syncProfileFromSource(config.sourceProfilePath, hubObsidian); + await writeHubWorkspace(hubObsidian, config.hubWorkspaceName); + } + + return hubRoot; +} + +async function writeHubWorkspace(hubObsidianDir: string, workspaceName: string): Promise { + const workspacesPath = join(hubObsidianDir, "workspaces.json"); + const layout = { + workspaces: { + [workspaceName]: { + main: { + id: "hub-main", + type: "split", + children: [ + { + id: "hub-tabs", + type: "tabs", + children: [ + { + id: "hub-index-leaf", + type: "leaf", + state: { + type: "markdown", + state: { + file: "index.md", + mode: "source", + source: false, + }, + icon: "lucide-file", + title: "Artifact Hub", + }, + }, + ], + }, + ], + direction: "vertical", + }, + left: { + id: "hub-left", + type: "split", + children: [ + { + id: "hub-left-tabs", + type: "tabs", + children: [ + { + id: "hub-explorer", + type: "leaf", + state: { + type: "file-explorer", + state: { + sortOrder: "alphabetical", + autoReveal: true, + }, + icon: "lucide-folder-closed", + title: "Files", + }, + }, + ], + }, + ], + direction: "horizontal", + width: 280, + }, + active: "hub-index-leaf", + }, + }, + active: workspaceName, + }; + + await writeFile(workspacesPath, `${JSON.stringify(layout, null, 2)}\n`, "utf8"); +} + +function formatProjectNote(project: { + id: string; + name: string; + repoPath: string; + artifactPath: string; + lastOpened: string; + available: boolean; + vaultId?: string; +}): string { + const openLink = project.vaultId + ? `obsidian://open?vault=${project.vaultId}` + : `obsidian://open?path=${encodeURIComponent(project.artifactPath)}`; + const status = project.available ? "available" : "missing"; + + return `--- +project_id: ${project.id} +repo: ${JSON.stringify(project.repoPath)} +artifact_path: ${JSON.stringify(project.artifactPath)} +last_opened: ${project.lastOpened} +status: ${status} +--- + +# ${project.name} + +- Repository: \`${project.repoPath}\` +- Artifacts: \`${project.artifactPath}\` +- Last opened: ${project.lastOpened} +- Status: ${status} + +[Open artifact vault](${openLink}) +`; +} + +export async function renderHubNotes(registry: ProjectRegistry): Promise { + const hubRoot = getHubRoot(); + const projectsDir = join(hubRoot, "projects"); + await mkdir(projectsDir, { recursive: true }); + + const lines: string[] = [ + "# Artifact Explorer Hub", + "", + "Registered projects with isolated `ai-artifacts` vaults.", + "", + ]; + + const sorted = Object.values(registry.projects).sort((a, b) => b.lastOpened.localeCompare(a.lastOpened)); + + for (const project of sorted) { + const available = existsSync(project.artifactPath); + const notePath = join(projectsDir, `${project.id}.md`); + await writeFile( + notePath, + formatProjectNote({ + id: project.id, + name: project.name, + repoPath: project.repoPath, + artifactPath: project.artifactPath, + lastOpened: project.lastOpened, + available, + vaultId: project.vaultId, + }), + "utf8", + ); + + const suffix = available ? "" : " (missing)"; + lines.push(`- [[projects/${project.id}|${project.name}]]${suffix}`); + } + + if (sorted.length === 0) { + lines.push("_No projects registered yet. Run `/artifact-explorer` inside a Git repository._"); + } + + await writeFile(join(hubRoot, "index.md"), `${lines.join("\n")}\n`, "utf8"); +} + +export async function openHub(config: ArtifactExplorerConfig): Promise { + const hubRoot = await ensureHubVault(config); + const registry = await loadRegistry(); + await renderHubNotes(registry); + + const hubVaultId = await ensureVaultRegistered(config, hubRoot, [ + hubRoot, + config.sourceProfilePath.replace(/\/\.obsidian\/?$/, ""), + ]); + + await ensureVaultNickname( + config, + hubVaultId, + join(hubRoot, ".obsidian"), + "Artifact Hub", + ); + + const loaded = await loadWorkspace(config, hubVaultId, config.hubWorkspaceName); + if (!loaded.ok) { + throw new Error(loaded.error ?? `Failed to load hub workspace ${config.hubWorkspaceName}`); + } + + return hubRoot; +} + +export async function openCurrentProject( + config: ArtifactExplorerConfig, + cwd: string, +): Promise<{ repoPath: string; artifactPath: string; vaultId: string }> { + const repoPath = await findGitRoot(cwd); + const artifactPath = await ensureArtifactDirectory(repoPath); + await ensureGitExclude(repoPath); + + const targetObsidian = join(artifactPath, ".obsidian"); + await ensureMinimalObsidianDir(targetObsidian); + await syncProfileFromSource(config.sourceProfilePath, targetObsidian); + + const preferredEvalPaths = [ + artifactPath, + repoPath, + config.sourceProfilePath.replace(/\/\.obsidian\/?$/, ""), + ]; + + const vaultId = await ensureVaultRegistered(config, artifactPath, preferredEvalPaths); + + await ensureVaultNickname( + config, + vaultId, + targetObsidian, + artifactVaultNickname(projectNameFromRepo(repoPath)), + ); + + if (isObsidianVault(repoPath)) { + const registry = await readObsidianRegistry(); + const parentVaultId = findVaultIdByPath(registry, repoPath); + if (parentVaultId && parentVaultId !== vaultId && registry.vaults?.[parentVaultId]?.open) { + const closed = await closeVaultWindow(config, parentVaultId); + if (!closed.ok) { + throw new Error( + closed.error ?? + "Could not close the parent vault window. Close it manually, then rerun /artifact-explorer.", + ); + } + const confirmed = await waitForParentClosed(parentVaultId); + if (!confirmed) { + throw new Error( + "Parent vault window is still open. Close it manually to avoid nested-vault conflicts.", + ); + } + } + } + + const workspace = await loadWorkspace(config, vaultId, config.artifactWorkspaceName); + if (!workspace.ok) { + throw new Error(workspace.error ?? `Failed to load workspace ${config.artifactWorkspaceName}`); + } + + await upsertProject({ repoPath, artifactPath, vaultId }); + return { repoPath, artifactPath, vaultId }; +} + +export async function buildStatusReport(config: ArtifactExplorerConfig, cwd: string): Promise { + const cli = await checkObsidianCli(config); + let gitRoot: string | null = null; + let artifactPath: string | null = null; + let projectId: string | null = null; + let artifactInitialized = false; + let registered = false; + let isParentVault = false; + let vaultId: string | null = null; + + try { + gitRoot = await findGitRoot(cwd); + artifactPath = artifactPathForRepo(gitRoot); + projectId = projectIdForPath(artifactPath); + artifactInitialized = existsSync(join(artifactPath, ".obsidian")); + isParentVault = isObsidianVault(gitRoot); + + const registry = await loadRegistry(); + registered = Boolean(registry.projects[projectId]); + + if (artifactInitialized) { + const obsidianRegistry = await readObsidianRegistry().catch(() => null); + if (obsidianRegistry) { + vaultId = findVaultIdByPath(obsidianRegistry, artifactPath) ?? null; + } + } + } catch { + // leave defaults + } + + return { + gitRoot, + artifactPath, + projectId, + artifactInitialized, + registered, + isParentVault, + obsidianCliAvailable: cli.available, + obsidianVersion: cli.version, + vaultId, + }; +} + +export function formatStatusReport(report: StatusReport): string { + return [ + "Artifact Explorer status", + "", + `Git root: ${report.gitRoot ?? "(not in a Git repository)"}`, + `Artifact path: ${report.artifactPath ?? "(unknown)"}`, + `Project ID: ${report.projectId ?? "(unknown)"}`, + `Artifact vault initialized: ${report.artifactInitialized ? "yes" : "no"}`, + `Registered in hub: ${report.registered ? "yes" : "no"}`, + `Parent Obsidian vault: ${report.isParentVault ? "yes" : "no"}`, + `Obsidian CLI: ${report.obsidianCliAvailable ? "available" : "unavailable"}`, + `Obsidian version: ${report.obsidianVersion ?? "(unknown)"}`, + `Obsidian vault ID: ${report.vaultId ?? "(not registered)"}`, + ].join("\n"); +} diff --git a/packages/artifact-explorer/lib/parse-args.ts b/packages/artifact-explorer/lib/parse-args.ts new file mode 100644 index 0000000..24b0e82 --- /dev/null +++ b/packages/artifact-explorer/lib/parse-args.ts @@ -0,0 +1,28 @@ +import type { ParsedCommand } from "./types.js"; + +export function parseCommandArgs(rawArgs: string): ParsedCommand { + const trimmed = rawArgs.trim(); + if (!trimmed) return { kind: "open" }; + + const parts = trimmed.split(/\s+/); + const first = parts[0]?.toLowerCase(); + + switch (first) { + case "hub": + return { kind: "hub" }; + case "status": + return { kind: "status" }; + case "--help": + case "-h": + case "help": + return { kind: "help" }; + default: + return { kind: "unknown", args: trimmed }; + } +} + +export const HELP_TEXT = `Usage: + /artifact-explorer Open current repo's ai-artifacts vault + /artifact-explorer hub Open the project launcher hub + /artifact-explorer status Show detected paths and Obsidian state + /artifact-explorer --help Show this help`; diff --git a/packages/artifact-explorer/lib/paths.ts b/packages/artifact-explorer/lib/paths.ts new file mode 100644 index 0000000..b10157f --- /dev/null +++ b/packages/artifact-explorer/lib/paths.ts @@ -0,0 +1,78 @@ +import { existsSync } from "node:fs"; +import { homedir } from "node:os"; +import { dirname, join } from "node:path"; +import { fileURLToPath } from "node:url"; +import type { ArtifactExplorerConfig } from "./types.js"; + +function getAgentDir(): string { + return process.env.PI_CODING_AGENT_DIR ?? join(homedir(), ".pi", "agent"); +} + +export const ARTIFACT_DIR_NAME = "ai-artifacts"; +export const WORKSPACE_NAME = "AI Artifacts"; +export const HUB_WORKSPACE_NAME = "Artifact Hub"; + +export const WORKSPACE_OWNED_FILES = new Set([ + "workspace.json", + "workspace-mobile.json", + "workspace", + "workspaces.json", +]); + +export function getExtensionRoot(): string { + return dirname(dirname(fileURLToPath(import.meta.url))); +} + +export function getStateRoot(): string { + return join(getAgentDir(), "artifact-explorer"); +} + +export function getConfigPath(): string { + return join(getStateRoot(), "config.json"); +} + +export function getRegistryPath(): string { + return join(getStateRoot(), "projects.json"); +} + +export function getHubRoot(): string { + return join(getStateRoot(), "hub"); +} + +export function getWorkspaceOverlayRoot(): string { + return join(getExtensionRoot(), "workspace-overlay", ".obsidian"); +} + +export function getObsidianRegistryPath(): string { + return join( + process.env.HOME ?? "~", + "Library", + "Application Support", + "obsidian", + "obsidian.json", + ); +} + +export function artifactPathForRepo(repoPath: string): string { + return join(repoPath, ARTIFACT_DIR_NAME); +} + +export function gitExcludePath(repoPath: string): string { + return join(repoPath, ".git", "info", "exclude"); +} + +export function defaultConfig(): ArtifactExplorerConfig { + return { + sourceProfilePath: "", + obsidianBinary: "obsidian", + artifactWorkspaceName: WORKSPACE_NAME, + hubWorkspaceName: HUB_WORKSPACE_NAME, + }; +} + +export function resolveObsidianBinary(config: ArtifactExplorerConfig): string { + if (existsSync(config.obsidianBinary)) { + return config.obsidianBinary; + } + return "obsidian"; +} diff --git a/packages/artifact-explorer/lib/profile-sync.ts b/packages/artifact-explorer/lib/profile-sync.ts new file mode 100644 index 0000000..17db43f --- /dev/null +++ b/packages/artifact-explorer/lib/profile-sync.ts @@ -0,0 +1,181 @@ +import { cp, mkdir, readdir, rm, stat, writeFile } from "node:fs/promises"; +import { join, relative } from "node:path"; +import { existsSync } from "node:fs"; +import { + isTransientRelativePath, + readJsonFile, + writeJsonAtomic, +} from "./fs-utils.js"; +import { getConfigPath, getWorkspaceOverlayRoot, WORKSPACE_OWNED_FILES } from "./paths.js"; + +export const VAULT_NICKNAME_PLUGIN_ID = "vault-nickname"; + +async function listNames(dir: string): Promise { + try { + return await readdir(dir); + } catch { + return []; + } +} + +async function copyFileIfChanged(source: string, target: string): Promise { + const { dirname } = await import("node:path"); + await mkdir(dirname(target), { recursive: true }); + await cp(source, target, { force: true }); +} + +async function syncDirectory(sourceDir: string, targetDir: string, filter?: (rel: string) => boolean): Promise { + await mkdir(targetDir, { recursive: true }); + const entries = await listNames(sourceDir); + + for (const name of entries) { + const sourcePath = join(sourceDir, name); + const targetPath = join(targetDir, name); + const rel = relative(sourceDir, sourcePath); + if (filter && !filter(rel)) continue; + + const info = await stat(sourcePath); + if (info.isDirectory()) { + await syncDirectory(sourcePath, targetPath, filter); + continue; + } + if (info.isFile()) { + await copyFileIfChanged(sourcePath, targetPath); + } + } +} + +async function removeExtraPluginDirs(sourcePluginsDir: string, targetPluginsDir: string): Promise { + const sourcePlugins = new Set(await listNames(sourcePluginsDir)); + const targetPlugins = await listNames(targetPluginsDir); + + for (const plugin of targetPlugins) { + if ( + !sourcePlugins.has(plugin) && + plugin !== VAULT_NICKNAME_PLUGIN_ID + ) { + await rm(join(targetPluginsDir, plugin), { recursive: true, force: true }); + } + } +} + +export async function mergeCorePluginsWorkspaces(corePluginsPath: string): Promise { + let parsed: Record = {}; + if (existsSync(corePluginsPath)) { + parsed = await readJsonFile>(corePluginsPath); + } + parsed.workspaces = true; + await writeFile(corePluginsPath, `${JSON.stringify(parsed, null, 2)}\n`, "utf8"); +} + +export async function applyWorkspaceOverlay(targetObsidianDir: string, overlayRoot: string): Promise { + const overlayWorkspaces = join(overlayRoot, "workspaces.json"); + const targetWorkspaces = join(targetObsidianDir, "workspaces.json"); + + if (!existsSync(overlayWorkspaces)) { + throw new Error(`Missing workspace overlay at ${overlayWorkspaces}`); + } + + if (!existsSync(targetWorkspaces)) { + await cp(overlayWorkspaces, targetWorkspaces); + return; + } + + const overlay = await readJsonFile<{ workspaces?: Record; active?: string }>(overlayWorkspaces); + const target = await readJsonFile<{ workspaces?: Record; active?: string }>(targetWorkspaces); + target.workspaces ??= {}; + + for (const [name, layout] of Object.entries(overlay.workspaces ?? {})) { + if (!target.workspaces[name]) { + target.workspaces[name] = layout; + } + } + + if (!target.active && overlay.active) { + target.active = overlay.active; + } + + await writeFile(targetWorkspaces, `${JSON.stringify(target, null, 2)}\n`, "utf8"); +} + +export function artifactVaultNickname(projectName: string): string { + return `${projectName} · AI Artifacts`; +} + +export async function writeVaultNickname( + targetObsidianDir: string, + nickname: string, +): Promise { + const pluginDir = join( + targetObsidianDir, + "plugins", + VAULT_NICKNAME_PLUGIN_ID, + ); + await mkdir(pluginDir, { recursive: true }); + await writeJsonAtomic(join(pluginDir, "data-shared.json"), { nickname }); + + const communityPluginsPath = join( + targetObsidianDir, + "community-plugins.json", + ); + let enabledPlugins: string[] = []; + if (existsSync(communityPluginsPath)) { + const parsed = await readJsonFile(communityPluginsPath); + if (Array.isArray(parsed)) { + enabledPlugins = parsed.filter( + (plugin): plugin is string => typeof plugin === "string", + ); + } + } + if (!enabledPlugins.includes(VAULT_NICKNAME_PLUGIN_ID)) { + enabledPlugins.push(VAULT_NICKNAME_PLUGIN_ID); + } + await writeJsonAtomic(communityPluginsPath, enabledPlugins); +} + +export async function syncProfileFromSource(sourceProfilePath: string, targetObsidianDir: string): Promise { + if (!sourceProfilePath) { + throw new Error(`Configure sourceProfilePath in ${getConfigPath()}`); + } + if (!existsSync(sourceProfilePath)) { + throw new Error(`Source profile not found: ${sourceProfilePath}`); + } + + await mkdir(targetObsidianDir, { recursive: true }); + + const sourceEntries = await listNames(sourceProfilePath); + for (const name of sourceEntries) { + if (WORKSPACE_OWNED_FILES.has(name)) continue; + + const sourcePath = join(sourceProfilePath, name); + const targetPath = join(targetObsidianDir, name); + const info = await stat(sourcePath); + + if (name === "plugins" && info.isDirectory()) { + await syncDirectory(sourcePath, targetPath, (rel) => !isTransientRelativePath(rel)); + await removeExtraPluginDirs(sourcePath, targetPath); + continue; + } + + if (info.isDirectory()) { + await syncDirectory(sourcePath, targetPath, (rel) => !isTransientRelativePath(rel)); + continue; + } + + if (info.isFile()) { + if (isTransientRelativePath(name)) continue; + await copyFileIfChanged(sourcePath, targetPath); + } + } + + await mergeCorePluginsWorkspaces(join(targetObsidianDir, "core-plugins.json")); + await applyWorkspaceOverlay(targetObsidianDir, getWorkspaceOverlayRoot()); +} + +export async function ensureMinimalObsidianDir(targetObsidianDir: string): Promise { + await mkdir(targetObsidianDir, { recursive: true }); + const appJson = join(targetObsidianDir, "app.json"); + if (!existsSync(appJson)) { + await writeFile(appJson, "{}\n", "utf8"); + } +} diff --git a/packages/artifact-explorer/lib/registry.ts b/packages/artifact-explorer/lib/registry.ts new file mode 100644 index 0000000..f43b4e4 --- /dev/null +++ b/packages/artifact-explorer/lib/registry.ts @@ -0,0 +1,60 @@ +import { existsSync } from "node:fs"; +import { mkdir } from "node:fs/promises"; +import type { ProjectRecord, ProjectRegistry } from "./types.js"; +import { readJsonFile, writeJsonAtomic } from "./fs-utils.js"; +import { getRegistryPath, getStateRoot } from "./paths.js"; +import { projectIdForPath, projectNameFromRepo } from "./hash.js"; + +function emptyRegistry(): ProjectRegistry { + return { version: 1, projects: {} }; +} + +export async function loadRegistry(): Promise { + const path = getRegistryPath(); + if (!existsSync(path)) { + return emptyRegistry(); + } + try { + const registry = await readJsonFile(path); + if (registry.version !== 1 || !registry.projects) { + return emptyRegistry(); + } + return registry; + } catch { + return emptyRegistry(); + } +} + +export async function saveRegistry(registry: ProjectRegistry): Promise { + await mkdir(getStateRoot(), { recursive: true }); + await writeJsonAtomic(getRegistryPath(), registry); +} + +export async function upsertProject(input: { + repoPath: string; + artifactPath: string; + vaultId?: string; +}): Promise { + const registry = await loadRegistry(); + const id = projectIdForPath(input.artifactPath); + const now = new Date().toISOString(); + const existing = registry.projects[id]; + + const record: ProjectRecord = { + id, + name: projectNameFromRepo(input.repoPath), + repoPath: input.repoPath, + artifactPath: input.artifactPath, + vaultId: input.vaultId ?? existing?.vaultId, + lastOpened: now, + registeredAt: existing?.registeredAt ?? now, + }; + + registry.projects[id] = record; + await saveRegistry(registry); + return record; +} + +export function getProject(registry: ProjectRegistry, artifactPath: string): ProjectRecord | undefined { + return registry.projects[projectIdForPath(artifactPath)]; +} diff --git a/packages/artifact-explorer/lib/types.ts b/packages/artifact-explorer/lib/types.ts new file mode 100644 index 0000000..af4f7d3 --- /dev/null +++ b/packages/artifact-explorer/lib/types.ts @@ -0,0 +1,50 @@ +export interface ArtifactExplorerConfig { + sourceProfilePath: string; + obsidianBinary: string; + artifactWorkspaceName: string; + hubWorkspaceName: string; +} + +export interface ProjectRecord { + id: string; + name: string; + repoPath: string; + artifactPath: string; + vaultId?: string; + lastOpened: string; + registeredAt: string; +} + +export interface ProjectRegistry { + version: 1; + projects: Record; +} + +export interface ProjectContext { + repoPath: string; + artifactPath: string; + projectId: string; + projectName: string; + isParentVault: boolean; + parentVaultPath?: string; + artifactInitialized: boolean; +} + +export interface StatusReport { + gitRoot: string | null; + artifactPath: string | null; + projectId: string | null; + artifactInitialized: boolean; + registered: boolean; + isParentVault: boolean; + obsidianCliAvailable: boolean; + obsidianVersion: string | null; + vaultId: string | null; +} + +export type ParsedCommand = + | { kind: "open" } + | { kind: "hub" } + | { kind: "status" } + | { kind: "help" } + | { kind: "unknown"; args: string }; diff --git a/packages/pi-tmux-title/package.json b/packages/artifact-explorer/package.json similarity index 57% rename from packages/pi-tmux-title/package.json rename to packages/artifact-explorer/package.json index 942714b..3a20102 100644 --- a/packages/pi-tmux-title/package.json +++ b/packages/artifact-explorer/package.json @@ -1,18 +1,22 @@ { - "name": "@iurysza/pi-tmux-title", + "name": "@iurysza/artifact-explorer", "version": "0.1.0", - "description": "Keep Pi and tmux window titles synced to a compact session slug.", - "author": "Iury Souza", + "description": "Open each repository's ai-artifacts directory as an isolated Obsidian vault.", "license": "MIT", + "author": "Iury Souza", "type": "module", "keywords": [ "pi-package", "pi-extension", - "tmux", - "title" + "pi", + "obsidian", + "artifacts" ], "files": [ - "src", + "index.ts", + "lib", + "workspace-overlay", + "config.json.example", "README.md", "LICENSE" ], @@ -22,31 +26,32 @@ "repository": { "type": "git", "url": "git+https://github.com/iurysza/pi-extensions.git", - "directory": "packages/pi-tmux-title" + "directory": "packages/artifact-explorer" }, "bugs": { "url": "https://github.com/iurysza/pi-extensions/issues" }, - "homepage": "https://github.com/iurysza/pi-extensions/tree/main/packages/pi-tmux-title#readme", - "engines": { - "node": ">=22.19.0" + "homepage": "https://github.com/iurysza/pi-extensions/tree/main/packages/artifact-explorer#readme", + "scripts": { + "check": "npm run typecheck && npm test", + "test": "node --import tsx --test tests/*.test.ts", + "typecheck": "tsc --noEmit -p tsconfig.json" }, "peerDependencies": { "@earendil-works/pi-coding-agent": "*" }, "devDependencies": { "@earendil-works/pi-coding-agent": "^0.80.10", - "@types/node": "^24.12.0", + "@types/node": "^24.12.4", + "tsx": "^4.19.0", "typescript": "^5.9.3" }, - "scripts": { - "test": "node --test tests/*.test.mjs", - "typecheck": "tsc --noEmit -p tsconfig.json", - "check": "npm run typecheck && npm test" + "engines": { + "node": ">=22.19.0" }, "pi": { "extensions": [ - "./src/index.ts" + "./index.ts" ] } } diff --git a/packages/artifact-explorer/tests/basic.test.ts b/packages/artifact-explorer/tests/basic.test.ts new file mode 100644 index 0000000..d3dd5d9 --- /dev/null +++ b/packages/artifact-explorer/tests/basic.test.ts @@ -0,0 +1,164 @@ +import { describe, it } from "node:test"; +import assert from "node:assert/strict"; +import { mkdtemp, readFile, rm } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { parseCommandArgs } from "../lib/parse-args.js"; +import { projectIdForPath, projectNameFromRepo } from "../lib/hash.js"; +import { isTransientRelativePath } from "../lib/fs-utils.js"; +import { defaultConfig } from "../lib/paths.js"; +import { + buildOpenVaultBridgeArgs, + buildPluginCommandArgs, + isCommandStillLoading, + listEvalVaultCandidates, +} from "../lib/obsidian-cli.js"; +import { + artifactVaultNickname, + writeVaultNickname, +} from "../lib/profile-sync.js"; + +describe("configuration", () => { + it("uses portable defaults without a machine-specific source profile", () => { + assert.deepEqual(defaultConfig(), { + sourceProfilePath: "", + obsidianBinary: "obsidian", + artifactWorkspaceName: "AI Artifacts", + hubWorkspaceName: "Artifact Hub", + }); + }); +}); + +describe("parseCommandArgs", () => { + it("defaults to open", () => { + assert.deepEqual(parseCommandArgs(""), { kind: "open" }); + assert.deepEqual(parseCommandArgs(" "), { kind: "open" }); + }); + + it("parses subcommands", () => { + assert.deepEqual(parseCommandArgs("hub"), { kind: "hub" }); + assert.deepEqual(parseCommandArgs("status"), { kind: "status" }); + assert.deepEqual(parseCommandArgs("--help"), { kind: "help" }); + }); + + it("returns unknown for unsupported args", () => { + assert.deepEqual(parseCommandArgs("foo bar"), { kind: "unknown", args: "foo bar" }); + }); +}); + +describe("project identity", () => { + it("hashes canonical artifact paths deterministically", () => { + const path = "/tmp/example/ai-artifacts"; + assert.equal(projectIdForPath(path), projectIdForPath(path)); + assert.equal(projectIdForPath(path).length, 16); + }); + + it("derives project names from repo paths", () => { + assert.equal(projectNameFromRepo("/tmp/me/dev/obsidian-vault"), "obsidian-vault"); + }); +}); + +describe("transient exclusions", () => { + it("skips logs, askpass scripts, and caches", () => { + assert.equal(isTransientRelativePath("plugins/foo/cache/bar.json"), true); + assert.equal(isTransientRelativePath("plugins/obsidian-git/obsidian_askpass.sh"), true); + assert.equal(isTransientRelativePath("debug.log"), true); + assert.equal(isTransientRelativePath("plugins/smart-composer/data.json"), false); + }); +}); + +describe("cross-vault Obsidian commands", () => { + it("allows eval to focus the source vault", () => { + assert.deepEqual( + buildOpenVaultBridgeArgs( + "/tmp/me/project with spaces/ai-artifacts", + "source-vault-id", + ), + [ + "vault=source-vault-id", + "eval", + "--allow-focus-steal", + 'code=window.electron.ipcRenderer.sendSync(\'vault-open\', "/tmp/me/project with spaces/ai-artifacts", false)', + ], + ); + }); + + it("prefers open vaults before closed fallbacks", () => { + const registry = { + vaults: { + preferredClosed: { path: "/main" }, + otherOpen: { path: "/other", open: true }, + }, + }; + + assert.deepEqual( + listEvalVaultCandidates(registry, ["/main"]), + ["otherOpen", "preferredClosed"], + ); + }); + + it("recognizes Obsidian's temporary command-loading error", () => { + assert.equal( + isCommandStillLoading( + { + stdout: "", + stderr: "", + ok: false, + error: 'Error: Command "eval" not found. It may require a plugin to be enabled.', + }, + "eval", + ), + true, + ); + }); + + it("allows plugin commands to focus their target vault", () => { + assert.deepEqual( + buildPluginCommandArgs( + "artifact-vault-id", + "plugin:enable", + "vault-nickname", + ), + [ + "vault=artifact-vault-id", + "plugin:enable", + "--allow-focus-steal", + "id=vault-nickname", + ], + ); + }); +}); + +describe("vault nicknames", () => { + it("derives a readable artifact vault name", () => { + assert.equal( + artifactVaultNickname("dot-files"), + "dot-files · AI Artifacts", + ); + }); + + it("writes the nickname file expected by Vault Nickname", async () => { + const root = await mkdtemp(join(tmpdir(), "artifact-explorer-")); + try { + await writeVaultNickname(root, "dot-files · AI Artifacts"); + const data = JSON.parse( + await readFile( + join( + root, + "plugins", + "vault-nickname", + "data-shared.json", + ), + "utf8", + ), + ); + assert.deepEqual(data, { nickname: "dot-files · AI Artifacts" }); + const enabledPlugins = JSON.parse( + await readFile(join(root, "community-plugins.json"), "utf8"), + ); + assert.deepEqual(enabledPlugins, ["vault-nickname"]); + } finally { + await rm(root, { recursive: true, force: true }); + } + }); +}); diff --git a/packages/artifact-explorer/tsconfig.json b/packages/artifact-explorer/tsconfig.json new file mode 100644 index 0000000..bc4b00d --- /dev/null +++ b/packages/artifact-explorer/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "ES2023", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "lib": ["ES2023"], + "strict": true, + "noEmit": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["index.ts", "lib/**/*.ts", "tests/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/packages/artifact-explorer/workspace-overlay/.obsidian/overlay-version.json b/packages/artifact-explorer/workspace-overlay/.obsidian/overlay-version.json new file mode 100644 index 0000000..4aeabd6 --- /dev/null +++ b/packages/artifact-explorer/workspace-overlay/.obsidian/overlay-version.json @@ -0,0 +1 @@ +{"version":1} diff --git a/packages/artifact-explorer/workspace-overlay/.obsidian/workspaces.json b/packages/artifact-explorer/workspace-overlay/.obsidian/workspaces.json new file mode 100644 index 0000000..088efb5 --- /dev/null +++ b/packages/artifact-explorer/workspace-overlay/.obsidian/workspaces.json @@ -0,0 +1,194 @@ +{ + "workspaces": { + "AI Artifacts": { + "main": { + "id": "a2bba7beee0cda93", + "type": "split", + "children": [ + { + "id": "89df336a4e5f94f0", + "type": "tabs", + "children": [ + { + "id": "37057bae9477d37c", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "goals/pi-agent-introspector/designs/control-panel/design.md", + "mode": "source", + "source": false + }, + "icon": "lucide-file", + "title": "design" + } + } + ] + } + ], + "direction": "vertical" + }, + "left": { + "id": "0deca863b089276b", + "type": "split", + "children": [ + { + "id": "3057d995f7ae01b5", + "type": "tabs", + "children": [ + { + "id": "45626eb3d1b50653", + "type": "leaf", + "state": { + "type": "file-explorer", + "state": { + "sortOrder": "alphabetical", + "autoReveal": false + }, + "icon": "lucide-folder-closed", + "title": "Files" + } + }, + { + "id": "7ce710ab8c0d0f48", + "type": "leaf", + "state": { + "type": "search", + "state": { + "query": "", + "matchingCase": false, + "explainSearch": false, + "collapseAll": false, + "extraContext": false, + "sortOrder": "alphabetical" + }, + "icon": "lucide-search", + "title": "Search" + } + }, + { + "id": "a6bd96c6459b6b32", + "type": "leaf", + "state": { + "type": "bookmarks", + "state": {}, + "icon": "lucide-bookmark", + "title": "Bookmarks" + } + } + ] + } + ], + "direction": "horizontal", + "width": 300 + }, + "right": { + "id": "babdf6249520dbb7", + "type": "split", + "children": [ + { + "id": "ebea10a2e2ae327d", + "type": "tabs", + "children": [ + { + "id": "01d69da0b983bb75", + "type": "leaf", + "state": { + "type": "backlink", + "state": { + "file": "goals/pi-agent-introspector/designs/control-panel/design.md", + "collapseAll": false, + "extraContext": false, + "sortOrder": "alphabetical", + "showSearch": false, + "searchQuery": "", + "backlinkCollapsed": false, + "unlinkedCollapsed": true + }, + "icon": "links-coming-in", + "title": "Backlinks for design" + } + }, + { + "id": "21256ea34c404840", + "type": "leaf", + "state": { + "type": "outgoing-link", + "state": { + "file": "goals/pi-agent-introspector/designs/control-panel/design.md", + "linksCollapsed": false, + "unlinkedCollapsed": true + }, + "icon": "links-going-out", + "title": "Outgoing links from design" + } + }, + { + "id": "ba0b5ee7223a382b", + "type": "leaf", + "state": { + "type": "tag", + "state": { + "sortOrder": "frequency", + "useHierarchy": true, + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-tags", + "title": "Tags" + } + }, + { + "id": "ef217a10f04a963a", + "type": "leaf", + "state": { + "type": "all-properties", + "state": { + "sortOrder": "frequency", + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-archive", + "title": "All properties" + } + }, + { + "id": "03ce9d7b97c50089", + "type": "leaf", + "state": { + "type": "outline", + "state": { + "file": "goals/pi-agent-introspector/designs/control-panel/design.md", + "followCursor": false, + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-list", + "title": "Outline of design" + } + } + ] + } + ], + "direction": "horizontal", + "width": 300, + "collapsed": true + }, + "left-ribbon": { + "hiddenItems": { + "switcher:Open quick switcher": false, + "graph:Open graph view": false, + "canvas:Create new canvas": false, + "daily-notes:Open today's daily note": false, + "templates:Insert template": false, + "command-palette:Open command palette": false, + "bases:Create new base": false, + "workspaces:Manage workspace layouts": false + } + }, + "active": "37057bae9477d37c", + "mtime": "2026-07-24T11:58:13+02:00" + } + }, + "active": "AI Artifacts" +} \ No newline at end of file diff --git a/packages/pi-tmux-title/README.md b/packages/pi-tmux-title/README.md deleted file mode 100644 index d8747fa..0000000 --- a/packages/pi-tmux-title/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# pi-tmux-title - -Keep the Pi terminal title and current tmux window named after the session. -Titles come from the session name or first user prompt, normalized to a compact -kebab-case slug. - -## Install - -```bash -pi install npm:@iurysza/pi-tmux-title -``` - -Restart Pi or run `/reload` after installation. - -## How it works - -- Updates Pi's terminal title when the session title changes. -- Renames the current tmux window when Pi runs inside tmux. -- Restores tmux automatic window naming when the session shuts down. -- Provides `/retitle` to synchronize after you rename a session. - -Outside tmux, the terminal title still updates and tmux operations are silent -no-ops. - -## Requirements - -- Pi -- Node.js 22.19 or newer -- tmux only for window renaming - -## License - -MIT \ No newline at end of file diff --git a/packages/pi-tmux-title/src/index.ts b/packages/pi-tmux-title/src/index.ts deleted file mode 100644 index 7f25a82..0000000 --- a/packages/pi-tmux-title/src/index.ts +++ /dev/null @@ -1,147 +0,0 @@ -import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent"; -import { execFile } from "node:child_process"; -import { promisify } from "node:util"; - -const execFileAsync = promisify(execFile); -const MAX_TITLE_LENGTH = 24; - -let lastTitle: string | undefined; - -function contentToText(content: unknown): string { - if (typeof content === "string") return content; - if (!Array.isArray(content)) return ""; - - return content - .filter((block: any) => block?.type === "text" && typeof block.text === "string") - .map((block: any) => block.text) - .join(" "); -} - -function firstUserPrompt(ctx: ExtensionContext): string | null { - const entries = ctx.sessionManager.getEntries() as any[]; - const firstUser = entries.find( - (entry) => entry?.type === "message" && entry.message?.role === "user", - ); - - const text = contentToText(firstUser?.message?.content).trim(); - return text || null; -} - -export function slugify(text: string): string { - const slug = text - // Clipboard image paths are noise; keep the user's words after them. - .replace(/\/var\/folders\/\S*?pi-clipboard-[\w-]+\.(png|jpe?g|gif|webp)/gi, " ") - .normalize("NFKD") - .replace(/[\u0300-\u036f]/g, "") - .toLowerCase() - .replace(/[’']/g, "") - .replace(/[^a-z0-9]+/g, "-") - .replace(/^-+|-+$/g, "") - .replace(/-{2,}/g, "-"); - - return slug.length > MAX_TITLE_LENGTH - ? slug.slice(0, MAX_TITLE_LENGTH).replace(/-+$/g, "") - : slug; -} - -function looksLikeBrokenAutoName(name: string): boolean { - return ( - /^\d{4}-\d{2}-\d{2}[ t-]\d{2}[:-]\d{2}/i.test(name) || - /^\d{4}-\d{2}-\d{2}t\d{2}-\d{2}-\d{2}.*_[0-9a-f-]{16,}$/i.test(name) - ); -} - -function deriveTitle(pi: ExtensionAPI, ctx: ExtensionContext): string { - const explicit = pi.getSessionName(); - const source = - explicit && !looksLikeBrokenAutoName(explicit) - ? explicit - : firstUserPrompt(ctx) || ctx.cwd.split("/").pop() || "pi"; - - return slugify(source) || "pi"; -} - -async function runTmux(args: string[]) { - await execFileAsync("tmux", args, { timeout: 1000 }); -} - -export async function renameTmuxWindow(title: string) { - if (!process.env.TMUX) return; - - const target = process.env.TMUX_PANE; - - if (target) { - try { - await runTmux(["set-window-option", "-t", target, "automatic-rename", "off"]); - await runTmux(["rename-window", "-t", target, title]); - return; - } catch { - // fall through to current tmux context - } - } - - try { - await runTmux(["set-window-option", "automatic-rename", "off"]); - await runTmux(["rename-window", title]); - } catch { - // ignore outside normal tmux contexts - } -} - -async function restoreTmuxAutoRename() { - if (!process.env.TMUX) return; - - const target = process.env.TMUX_PANE; - - if (target) { - try { - await runTmux(["set-window-option", "-t", target, "automatic-rename", "on"]); - return; - } catch { - // fall through to current tmux context - } - } - - try { - await runTmux(["set-window-option", "automatic-rename", "on"]); - } catch { - // ignore - } -} - -async function syncTitle(pi: ExtensionAPI, ctx: ExtensionContext) { - const title = deriveTitle(pi, ctx); - if (title === lastTitle) return; - - lastTitle = title; - ctx.ui.setTitle(`pi | ${title}`); - await renameTmuxWindow(title); -} - -export default function (pi: ExtensionAPI) { - pi.on("session_start", async (_event, ctx) => { - await syncTitle(pi, ctx); - }); - - pi.on("message_end", async (_event, ctx) => { - await syncTitle(pi, ctx); - }); - - pi.on("turn_end", async (_event, ctx) => { - await syncTitle(pi, ctx); - }); - - pi.on("session_shutdown", async () => { - await restoreTmuxAutoRename(); - }); - - pi.registerCommand("retitle", { - description: "Sync tmux window title to a kebab-case pi session title", - handler: async (_args, ctx) => { - lastTitle = undefined; - await syncTitle(pi, ctx); - ctx.ui.notify(`Title: ${lastTitle}`, "info"); - }, - }); - -} diff --git a/packages/pi-tmux-title/tests/tmux-title.test.mjs b/packages/pi-tmux-title/tests/tmux-title.test.mjs deleted file mode 100644 index 824c8ac..0000000 --- a/packages/pi-tmux-title/tests/tmux-title.test.mjs +++ /dev/null @@ -1,34 +0,0 @@ -import assert from "node:assert/strict"; -import test from "node:test"; - -import { renameTmuxWindow, slugify } from "../src/index.ts"; - -test("creates normalized kebab-case titles", () => { - assert.equal(slugify("Héllo, Pi World!"), "hello-pi-world"); - assert.equal( - slugify("/var/folders/xx/pi-clipboard-example.png Explain this diagram"), - "explain-this-diagram", - ); -}); - -test("truncates titles cleanly", () => { - const title = slugify("This title is deliberately far longer than twenty four characters"); - assert.equal(title.length <= 24, true); - assert.equal(title.endsWith("-"), false); -}); - -test("tmux rename is a no-op outside tmux", async () => { - const previousTmux = process.env.TMUX; - const previousPane = process.env.TMUX_PANE; - delete process.env.TMUX; - delete process.env.TMUX_PANE; - - try { - await renameTmuxWindow("safe-title"); - } finally { - if (previousTmux === undefined) delete process.env.TMUX; - else process.env.TMUX = previousTmux; - if (previousPane === undefined) delete process.env.TMUX_PANE; - else process.env.TMUX_PANE = previousPane; - } -}); diff --git a/packages/pi-tmux-title/tsconfig.json b/packages/pi-tmux-title/tsconfig.json deleted file mode 100644 index 0639c89..0000000 --- a/packages/pi-tmux-title/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2022", - "module": "NodeNext", - "moduleResolution": "NodeNext", - "strict": true, - "noEmit": true, - "skipLibCheck": true, - "types": ["node"] - }, - "include": ["src/**/*.ts"] -}