diff --git a/apps/macos/Sources/Mayros/ModelCatalogLoader.swift b/apps/macos/Sources/Mayros/ModelCatalogLoader.swift index 0432b328..18bfaf72 100644 --- a/apps/macos/Sources/Mayros/ModelCatalogLoader.swift +++ b/apps/macos/Sources/Mayros/ModelCatalogLoader.swift @@ -114,7 +114,7 @@ enum ModelCatalogLoader { ] for root in roots { let candidate = root - .appendingPathComponent("node_modules/@mariozechner/pi-ai/dist/models.generated.js") + .appendingPathComponent("node_modules/@earendil-works/pi-ai/dist/models.generated.js") if FileManager().isReadableFile(atPath: candidate.path) { return candidate.path } diff --git a/docs/concepts/oauth.md b/docs/concepts/oauth.md index fe11ab4c..da93712e 100644 --- a/docs/concepts/oauth.md +++ b/docs/concepts/oauth.md @@ -71,7 +71,7 @@ mayros models status ## OAuth exchange (how login works) -Mayros’s interactive login flows are implemented in `@mariozechner/pi-ai` and wired into the wizards/commands. +Mayros’s interactive login flows are implemented in `@earendil-works/pi-ai` and wired into the wizards/commands. ### Anthropic (Claude Pro/Max) setup-token diff --git a/docs/gateway/doctor.md b/docs/gateway/doctor.md index 04a4ae45..fae508d7 100644 --- a/docs/gateway/doctor.md +++ b/docs/gateway/doctor.md @@ -129,7 +129,7 @@ Current migrations: ### 2b) OpenCode Zen provider overrides If you’ve added `models.providers.opencode` (or `opencode-zen`) manually, it -overrides the built-in OpenCode Zen catalog from `@mariozechner/pi-ai`. That can +overrides the built-in OpenCode Zen catalog from `@earendil-works/pi-ai`. That can force every model onto a single API or zero out costs. Doctor warns so you can remove the override and restore per-model API routing + costs. diff --git a/docs/pi.md b/docs/pi.md index f5fc0c74..3944e4c4 100644 --- a/docs/pi.md +++ b/docs/pi.md @@ -21,10 +21,10 @@ Mayros uses the pi SDK to embed an AI coding agent into its messaging gateway ar ```json { - "@mariozechner/pi-agent-core": "0.49.3", - "@mariozechner/pi-ai": "0.49.3", - "@mariozechner/pi-coding-agent": "0.49.3", - "@mariozechner/pi-tui": "0.49.3" + "@earendil-works/pi-agent-core": "0.49.3", + "@earendil-works/pi-ai": "0.49.3", + "@earendil-works/pi-coding-agent": "0.49.3", + "@earendil-works/pi-tui": "0.49.3" } ``` @@ -164,7 +164,7 @@ import { DefaultResourceLoader, SessionManager, SettingsManager, -} from "@mariozechner/pi-coding-agent"; +} from "@earendil-works/pi-coding-agent"; const resourceLoader = new DefaultResourceLoader({ cwd: resolvedWorkspace, @@ -504,7 +504,7 @@ Mayros also has a local TUI mode that uses pi-tui components directly: ```typescript // src/tui/tui.ts -import { ... } from "@mariozechner/pi-tui"; +import { ... } from "@earendil-works/pi-tui"; ``` This provides the interactive terminal experience similar to pi's native mode. diff --git a/docs/reference/session-management-compaction.md b/docs/reference/session-management-compaction.md index 8f1c43a3..0080299f 100644 --- a/docs/reference/session-management-compaction.md +++ b/docs/reference/session-management-compaction.md @@ -123,7 +123,7 @@ The store is safe to edit, but the Gateway is the authority: it may rewrite or r ## Transcript structure (`*.jsonl`) -Transcripts are managed by `@mariozechner/pi-coding-agent`’s `SessionManager`. +Transcripts are managed by `@earendil-works/pi-coding-agent`’s `SessionManager`. The file is JSONL: diff --git a/extensions/browser-automation/index.ts b/extensions/browser-automation/index.ts index ce407915..835d50f5 100644 --- a/extensions/browser-automation/index.ts +++ b/extensions/browser-automation/index.ts @@ -46,7 +46,8 @@ const browserAutomationPlugin = { }, required: ["url"], }, - execute: async (_toolCallId: string, args: Record) => { + execute: async (_toolCallId: string, rawArgs: unknown) => { + const args = rawArgs as Record; const { BrowserClient } = await import("./browser-client.js"); const client = new BrowserClient(); await client.connect(); @@ -110,7 +111,8 @@ const browserAutomationPlugin = { }, required: ["selector"], }, - execute: async (_toolCallId: string, args: Record) => { + execute: async (_toolCallId: string, rawArgs: unknown) => { + const args = rawArgs as Record; const { BrowserClient } = await import("./browser-client.js"); const client = new BrowserClient(); await client.connect(); @@ -141,7 +143,8 @@ const browserAutomationPlugin = { }, required: ["expression"], }, - execute: async (_toolCallId: string, args: Record) => { + execute: async (_toolCallId: string, rawArgs: unknown) => { + const args = rawArgs as Record; const { BrowserClient } = await import("./browser-client.js"); const client = new BrowserClient(); await client.connect(); diff --git a/extensions/kakeru-bridge/index.ts b/extensions/kakeru-bridge/index.ts index 379a4980..163d6fc6 100644 --- a/extensions/kakeru-bridge/index.ts +++ b/extensions/kakeru-bridge/index.ts @@ -88,15 +88,13 @@ const kakeruPlugin = { ), timeout: Type.Optional(Type.Number({ description: "Timeout in ms" })), }), - execute: async ( - _toolCallId: string, - params: { + execute: async (_toolCallId: string, rawParams: unknown) => { + const params = rawParams as { platform: string; prompt: string; workDir?: string; timeout?: number; - }, - ) => { + }; const bridge = coordinator.getBridge(params.platform); if (!bridge) { return { @@ -148,12 +146,10 @@ const kakeruPlugin = { }), ), }), - execute: async ( - _toolCallId: string, - params: { + execute: async (_toolCallId: string, rawParams: unknown) => { + const params = rawParams as { tasks: Array<{ platform: string; prompt: string; filePaths?: string[] }>; - }, - ) => { + }; const workDir = ((api.config as Record | undefined)?.workspaceDir as | string diff --git a/extensions/matrix/src/tool-actions.ts b/extensions/matrix/src/tool-actions.ts index cc187e7b..d08f512e 100644 --- a/extensions/matrix/src/tool-actions.ts +++ b/extensions/matrix/src/tool-actions.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { createActionGate, jsonResult, diff --git a/extensions/osameru-governance/index.ts b/extensions/osameru-governance/index.ts index 1a3de3aa..5f360dd0 100644 --- a/extensions/osameru-governance/index.ts +++ b/extensions/osameru-governance/index.ts @@ -182,15 +182,13 @@ const osameruPlugin = { ), limit: Type.Optional(Type.Number({ description: "Max entries to return" })), }), - execute: async ( - _toolCallId: string, - params: { + execute: async (_toolCallId: string, rawParams: unknown) => { + const params = rawParams as { event?: string; actor?: string; decision?: string; limit?: number; - }, - ) => { + }; const entries = await auditTrail.query(params); return { content: [ diff --git a/extensions/voice-call/index.ts b/extensions/voice-call/index.ts index 645eed5f..f18b30ed 100644 --- a/extensions/voice-call/index.ts +++ b/extensions/voice-call/index.ts @@ -349,7 +349,15 @@ const voiceCallPlugin = { label: "Voice Call", description: "Make phone calls and have voice conversations via the voice-call plugin.", parameters: VoiceCallToolSchema, - async execute(_toolCallId, params) { + async execute(_toolCallId, rawParams) { + const params = rawParams as { + action?: string; + message?: string; + to?: string; + mode?: string; + callId?: string; + sid?: string; + }; const json = (payload: unknown) => ({ content: [{ type: "text" as const, text: JSON.stringify(payload, null, 2) }], details: payload, diff --git a/package.json b/package.json index 031db48a..d4584c93 100644 --- a/package.json +++ b/package.json @@ -164,15 +164,15 @@ "@buape/carbon": "0.0.0-beta-20260216184201", "@clack/prompts": "^1.0.1", "@discordjs/voice": "^0.19.0", + "@earendil-works/pi-agent-core": "^0.80.2", + "@earendil-works/pi-ai": "^0.80.2", + "@earendil-works/pi-coding-agent": "^0.80.2", + "@earendil-works/pi-tui": "^0.80.2", "@grammyjs/runner": "^2.0.3", "@grammyjs/transformer-throttler": "^1.2.1", "@homebridge/ciao": "^1.3.5", "@line/bot-sdk": "^10.6.0", "@lydell/node-pty": "1.2.0-beta.3", - "@mariozechner/pi-agent-core": "0.54.0", - "@mariozechner/pi-ai": "0.54.0", - "@mariozechner/pi-coding-agent": "0.54.0", - "@mariozechner/pi-tui": "0.54.0", "@mozilla/readability": "^0.6.0", "@noble/curves": "^2.0.1", "@sinclair/typebox": "0.34.48", @@ -249,6 +249,7 @@ "pnpm": { "minimumReleaseAge": 2880, "overrides": { + "@apilium/mayros": "workspace:*", "hono": "4.12.7", "@hono/node-server": "1.19.10", "fast-xml-parser": ">=5.5.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 39bc2a0e..d458b3d5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,7 @@ settings: excludeLinksFromLockfile: false overrides: + '@apilium/mayros': workspace:* hono: 4.12.7 '@hono/node-server': 1.19.10 fast-xml-parser: '>=5.5.7' @@ -37,13 +38,25 @@ importers: version: 3.1019.0 '@buape/carbon': specifier: 0.0.0-beta-20260216184201 - version: 0.0.0-beta-20260216184201(hono@4.12.7)(opusscript@0.0.8)(opusscript@0.0.8) + version: 0.0.0-beta-20260216184201(hono@4.12.7)(opusscript@0.0.8) '@clack/prompts': specifier: ^1.0.1 version: 1.0.1 '@discordjs/voice': specifier: ^0.19.0 - version: 0.19.0(opusscript@0.0.8)(opusscript@0.0.8) + version: 0.19.0(opusscript@0.0.8) + '@earendil-works/pi-agent-core': + specifier: ^0.80.2 + version: 0.80.2(ws@8.19.0)(zod@4.3.6) + '@earendil-works/pi-ai': + specifier: ^0.80.2 + version: 0.80.2(ws@8.19.0)(zod@4.3.6) + '@earendil-works/pi-coding-agent': + specifier: ^0.80.2 + version: 0.80.2(ws@8.19.0)(zod@4.3.6) + '@earendil-works/pi-tui': + specifier: ^0.80.2 + version: 0.80.2 '@grammyjs/runner': specifier: ^2.0.3 version: 2.0.3(grammy@1.40.0) @@ -59,18 +72,6 @@ importers: '@lydell/node-pty': specifier: 1.2.0-beta.3 version: 1.2.0-beta.3 - '@mariozechner/pi-agent-core': - specifier: 0.54.0 - version: 0.54.0(ws@8.19.0)(zod@4.3.6) - '@mariozechner/pi-ai': - specifier: 0.54.0 - version: 0.54.0(ws@8.19.0)(zod@4.3.6) - '@mariozechner/pi-coding-agent': - specifier: 0.54.0 - version: 0.54.0(ws@8.19.0)(zod@4.3.6) - '@mariozechner/pi-tui': - specifier: 0.54.0 - version: 0.54.0 '@mozilla/readability': specifier: ^0.6.0 version: 0.6.0 @@ -290,8 +291,8 @@ importers: extensions/bluebubbles: dependencies: '@apilium/mayros': - specifier: '>=0.1.0' - version: 0.1.1(@napi-rs/canvas@0.1.97)(@types/express@5.0.6)(hono@4.12.7)(node-llama-cpp@3.17.1(typescript@5.9.3)) + specifier: workspace:* + version: link:../.. extensions/ci-plugin: dependencies: @@ -341,8 +342,8 @@ importers: extensions/diagnostics-otel: dependencies: '@apilium/mayros': - specifier: '>=0.1.0' - version: 0.1.1(@napi-rs/canvas@0.1.97)(@types/express@5.0.6)(hono@4.12.7)(node-llama-cpp@3.17.1(typescript@5.9.3)) + specifier: workspace:* + version: link:../.. '@opentelemetry/api': specifier: ^1.9.0 version: 1.9.0 @@ -380,8 +381,8 @@ importers: extensions/discord: dependencies: '@apilium/mayros': - specifier: '>=0.1.0' - version: 0.1.1(@napi-rs/canvas@0.1.97)(@types/express@5.0.6)(hono@4.12.7)(node-llama-cpp@3.17.1(typescript@5.9.3)) + specifier: workspace:* + version: link:../.. extensions/eruberu: dependencies: @@ -396,8 +397,8 @@ importers: extensions/feishu: dependencies: '@apilium/mayros': - specifier: '>=0.1.0' - version: 0.1.1(@napi-rs/canvas@0.1.97)(@types/express@5.0.6)(hono@4.12.7)(node-llama-cpp@3.17.1(typescript@5.9.3)) + specifier: workspace:* + version: link:../.. '@larksuiteoapi/node-sdk': specifier: ^1.59.0 version: 1.59.0 @@ -469,8 +470,8 @@ importers: extensions/irc: dependencies: '@apilium/mayros': - specifier: '>=0.1.0' - version: 0.1.1(@napi-rs/canvas@0.1.97)(@types/express@5.0.6)(hono@4.12.7)(node-llama-cpp@3.17.1(typescript@5.9.3)) + specifier: workspace:* + version: link:../.. zod: specifier: ^4.3.6 version: 4.3.6 @@ -510,8 +511,8 @@ importers: extensions/lobster: dependencies: '@apilium/mayros': - specifier: '>=0.1.0' - version: 0.1.1(@napi-rs/canvas@0.1.97)(@types/express@5.0.6)(hono@4.12.7)(node-llama-cpp@3.17.1(typescript@5.9.3)) + specifier: workspace:* + version: link:../.. '@sinclair/typebox': specifier: 0.34.48 version: 0.34.48 @@ -525,8 +526,8 @@ importers: extensions/matrix: dependencies: '@apilium/mayros': - specifier: '>=0.1.0' - version: 0.1.1(@napi-rs/canvas@0.1.97)(@types/express@5.0.6)(hono@4.12.7)(node-llama-cpp@3.17.1(typescript@5.9.3)) + specifier: workspace:* + version: link:../.. '@matrix-org/matrix-sdk-crypto-nodejs': specifier: ^0.4.0 version: 0.4.0 @@ -610,8 +611,8 @@ importers: extensions/msteams: dependencies: '@apilium/mayros': - specifier: '>=0.1.0' - version: 0.1.1(@napi-rs/canvas@0.1.97)(@types/express@5.0.6)(hono@4.12.7)(node-llama-cpp@3.17.1(typescript@5.9.3)) + specifier: workspace:* + version: link:../.. '@microsoft/agents-hosting': specifier: ^1.3.1 version: 1.3.1 @@ -622,8 +623,8 @@ importers: extensions/nextcloud-talk: dependencies: '@apilium/mayros': - specifier: '>=0.1.0' - version: 0.1.1(@napi-rs/canvas@0.1.97)(@types/express@5.0.6)(hono@4.12.7)(node-llama-cpp@3.17.1(typescript@5.9.3)) + specifier: workspace:* + version: link:../.. zod: specifier: ^4.3.6 version: 4.3.6 @@ -631,8 +632,8 @@ importers: extensions/nostr: dependencies: '@apilium/mayros': - specifier: '>=0.1.0' - version: 0.1.1(@napi-rs/canvas@0.1.97)(@types/express@5.0.6)(hono@4.12.7)(node-llama-cpp@3.17.1(typescript@5.9.3)) + specifier: workspace:* + version: link:../.. nostr-tools: specifier: ^2.23.1 version: 2.23.1(typescript@5.9.3) @@ -759,8 +760,8 @@ importers: extensions/voice-call: dependencies: '@apilium/mayros': - specifier: '>=0.1.0' - version: 0.1.1(@napi-rs/canvas@0.1.97)(@types/express@5.0.6)(hono@4.12.7)(node-llama-cpp@3.17.1(typescript@5.9.3)) + specifier: workspace:* + version: link:../.. '@sinclair/typebox': specifier: 0.34.48 version: 0.34.48 @@ -780,8 +781,8 @@ importers: extensions/zalo: dependencies: '@apilium/mayros': - specifier: '>=0.1.0' - version: 0.1.1(@napi-rs/canvas@0.1.97)(@types/express@5.0.6)(hono@4.12.7)(node-llama-cpp@3.17.1(typescript@5.9.3)) + specifier: workspace:* + version: link:../.. undici: specifier: '>=7.24.0' version: 7.24.2 @@ -789,8 +790,8 @@ importers: extensions/zalouser: dependencies: '@apilium/mayros': - specifier: '>=0.1.0' - version: 0.1.1(@napi-rs/canvas@0.1.97)(@types/express@5.0.6)(hono@4.12.7)(node-llama-cpp@3.17.1(typescript@5.9.3)) + specifier: workspace:* + version: link:../.. '@sinclair/typebox': specifier: 0.34.48 version: 0.34.48 @@ -819,7 +820,7 @@ importers: version: 0.25.12 vitest: specifier: ^3.0.0 - version: 3.2.4(@types/node@25.3.0)(@vitest/browser@4.0.18(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.0.18))(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3) + version: 3.2.4(@types/node@25.3.0)(@vitest/browser@4.0.18(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.0.18))(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) ui: dependencies: @@ -849,17 +850,17 @@ importers: version: 0.21.1(signal-polyfill@0.2.2) vite: specifier: 7.3.1 - version: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3) + version: 7.3.1(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) devDependencies: '@vitest/browser-playwright': specifier: 4.0.18 - version: 4.0.18(playwright@1.58.2)(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.0.18) + version: 4.0.18(playwright@1.58.2)(vite@7.3.1(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.0.18) playwright: specifier: ^1.58.2 version: 1.58.2 vitest: specifier: 4.0.18 - version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.0)(@vitest/browser-playwright@4.0.18)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3) + version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.0)(@vitest/browser-playwright@4.0.18)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) packages: @@ -868,8 +869,8 @@ packages: peerDependencies: zod: ^3.25.0 || ^4.0.0 - '@anthropic-ai/sdk@0.73.0': - resolution: {integrity: sha512-URURVzhxXGJDGUGFunIOtBlSl7KWvZiAAKY/ttTkZAkXT9bTPqdk2eK0b8qqSxXpikh3QKPnPYpiyX98zf5ebw==} + '@anthropic-ai/sdk@0.91.1': + resolution: {integrity: sha512-LAmu761tSN9r66ixvmciswUj/ZC+1Q4iAfpedTfSVLeswRwnY3n2Nb6Tsk+cLPP28aLOPWeMgIuTuCcMC6W/iw==} hasBin: true peerDependencies: zod: ^3.25.0 || ^4.0.0 @@ -877,14 +878,6 @@ packages: zod: optional: true - '@apilium/mayros@0.1.1': - resolution: {integrity: sha512-mtW1hseokxhgGsx5fvekJ+HeDngsyIV9iPC3Btk0r6hfzG+UGx5gc0vX5+aM0YShk0bC1k3lbYs6GrpeC6Dyng==} - engines: {node: '>=22.12.0'} - hasBin: true - peerDependencies: - '@napi-rs/canvas': ^0.1.89 - node-llama-cpp: 3.15.1 - '@aws-crypto/crc32@5.2.0': resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} engines: {node: '>=16.0.0'} @@ -902,8 +895,8 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-bedrock-runtime@3.997.0': - resolution: {integrity: sha512-yEgCc/HvI7dLeXQLCuc4cnbzwE/NbNpKX8NmSSWTy3jnjiMZwrNKdHMBgPoNvaEb0klHhnTyO+JCHVVCPI/eYw==} + '@aws-sdk/client-bedrock-runtime@3.1048.0': + resolution: {integrity: sha512-u+NT61JZEkRFtpL0CAw1N1dwxnaLgwVXQl/zjJxTGgLyS/jTIdg2SdoEoCTHxgDyCnqa1HEi9QOoE9/pYRNpOQ==} engines: {node: '>=20.0.0'} '@aws-sdk/client-bedrock@3.1019.0': @@ -914,44 +907,80 @@ packages: resolution: {integrity: sha512-TNrx7eq6nKNOO62HWPqoBqPLXEkW6nLZQGwjL6lq1jZtigWYbK1NbCnT7mKDzbLMHZfuOECUt3n6CzxjUW9HWQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/core@3.974.23': + resolution: {integrity: sha512-MiWR/uWjxjFXGzrE0Ghc5lWxUxzHsUWFhV+OX7M4cR9SrmrnZs6TXavnCWnzzdwJeFri34xQo81rvGNzK3c4BQ==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-env@3.972.23': resolution: {integrity: sha512-EamaclJcCEaPHp6wiVknNMM2RlsPMjAHSsYSFLNENBM8Wz92QPc6cOn3dif6vPDQt0Oo4IEghDy3NMDCzY/IvA==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-env@3.972.49': + resolution: {integrity: sha512-liB3yQNHCM9k/gu/w36XHMKPluT7HTlnGUhRbBGSISDQkcr/Sy1zsZabiuvQj8WG5yW573u9RehrBvvnIQ9OEQ==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-http@3.972.25': resolution: {integrity: sha512-qPymamdPcLp6ugoVocG1y5r69ScNiRzb0hogX25/ij+Wz7c7WnsgjLTaz7+eB5BfRxeyUwuw5hgULMuwOGOpcw==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-http@3.972.51': + resolution: {integrity: sha512-XET0H2oofciJ5lMRWNIvRjAP7Q3wv2XT+JtJJEdhPWUMwe3TvQ9qcxonpu7vXmNngncvFpi4E2It+Tamas/naA==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-ini@3.972.26': resolution: {integrity: sha512-xKxEAMuP6GYx2y5GET+d3aGEroax3AgGfwBE65EQAUe090lzyJ/RzxPX9s8v7Z6qAk0XwfQl+LrmH05X7YvTeg==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-ini@3.972.56': + resolution: {integrity: sha512-IAmc61hbgQiHht9U3x0tnRwz0lzdwOwD/i9voRgdJrKamF+JtmrBOsW9GwB7mfFonNWOWL4qARWYrF8veEMe3w==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-login@3.972.26': resolution: {integrity: sha512-EFcM8RM3TUxnZOfMJo++3PnyxFu1fL/huzmn3Vh+8IWRgqZawUD3cRwwOr+/4bE9DpyHaLOWFAjY0lfK5X9ZkQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-login@3.972.55': + resolution: {integrity: sha512-hBBkANo3cDn+h2qxxzER4a+J8JCO9o9Z/YYmU7iky6AcaarX5RRdRcHNC6SLdwY0vAXQygn6soUbDqPn3GghaA==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-node@3.972.27': resolution: {integrity: sha512-jXpxSolfFnPVj6GCTtx3xIdWNoDR7hYC/0SbetGZxOC9UnNmipHeX1k6spVstf7eWJrMhXNQEgXC0pD1r5tXIg==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-node@3.972.58': + resolution: {integrity: sha512-OyCLVmSI7pZO8hxwNVX6pXhTVlJqRBTp+ijdEfJSUj0RyjHnF602OfAarOzGq6wkGodeFkYBt8MmJ6A6ycRgWw==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-process@3.972.23': resolution: {integrity: sha512-IL/TFW59++b7MpHserjUblGrdP5UXy5Ekqqx1XQkERXBFJcZr74I7VaSrQT5dxdRMU16xGK4L0RQ5fQG1pMgnA==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-process@3.972.49': + resolution: {integrity: sha512-C8h36lBuC/RnBSsjlO+dn6xZm3KbAl5vpJaVPAfQnMmz2/OISmKOc8XZcqMQgO2ADwBYNRMM6Kf3vz9G/TulMQ==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-sso@3.972.26': resolution: {integrity: sha512-c6ghvRb6gTlMznWhGxn/bpVCcp0HRaz4DobGVD9kI4vwHq186nU2xN/S7QGkm0lo0H2jQU8+dgpUFLxfTcwCOg==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-sso@3.972.55': + resolution: {integrity: sha512-1FkOz74Ea5QGS9jtIoXp55T/IkSS3spv+nLTT07fRY/+T5xmEOqaYBVIaEmX4zTNvbV6g2lrtlaVKWEoNyJt3w==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-web-identity@3.972.26': resolution: {integrity: sha512-cXcS3+XD3iwhoXkM44AmxjmbcKueoLCINr1e+IceMmCySda5ysNIfiGBGe9qn5EMiQ9Jd7pP0AGFtcd6OV3Lvg==} engines: {node: '>=20.0.0'} - '@aws-sdk/eventstream-handler-node@3.972.7': - resolution: {integrity: sha512-p8k2ZWKJVrR3KIcBbI+/+FcWXdwe3LLgGnixsA7w8lDwWjzSVDHFp6uPeSqBt5PQpRxzak9EheJ1xTmOnHGf4g==} + '@aws-sdk/credential-provider-web-identity@3.972.55': + resolution: {integrity: sha512-g2BoECD1q01kTPByi56+VLVvdWDzMkKIcr77qixpqH0okw2t0U5CoPv+6S8v/D1Y2Wa6QKKtn6XAtDzP+Kfpvg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/eventstream-handler-node@3.972.22': + resolution: {integrity: sha512-tqPJv0dz4+O0hWGm1a6YekcMZyPhDFs/zH73Von7icaVT5n0Jqvm86typ3jRrG+qoUdPhALOnboRLTmnWQTlYQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-eventstream@3.972.4': - resolution: {integrity: sha512-0t+2Dn46cRE9iu5ynUXINBtR0wNHi/Jz3FbrqS5k3dGot2O7Ln1xCqXbJUAtGM5ZAqN77SbnpETAgVWC84DeoA==} + '@aws-sdk/middleware-eventstream@3.972.18': + resolution: {integrity: sha512-OHpk8YoZi3yexPq8aFt1vN1IxA2zLKvsIR5GpWYylX/ve6kQmY7wxHNSFy/D3t2apMZ16rs76Co4dJWcDyIk3A==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-host-header@3.972.8': @@ -970,24 +999,40 @@ packages: resolution: {integrity: sha512-AilFIh4rI/2hKyyGN6XrB0yN96W2o7e7wyrPWCM6QjZM1mcC/pVkW3IWWRvuBWMpVP8Fg+rMpbzeLQ6dTM4gig==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-websocket@3.972.8': - resolution: {integrity: sha512-KPUXz8lRw73Rh12/QkELxiryC9Wi9Ah1xNzFe2Vtbz2/81c2ZA0yM8er+u0iCF/SRMMhDQshLcmRNgn/ueA+gA==} + '@aws-sdk/middleware-websocket@3.972.31': + resolution: {integrity: sha512-ps1rumU1LybSFHaW9dTDgkhCMJLVaedEY78kKSzUDDY+b9974/g6aiaYYA0U9WV0oL4CJCJrVWG+EZ/qr4or7g==} engines: {node: '>= 14.0.0'} '@aws-sdk/nested-clients@3.996.16': resolution: {integrity: sha512-L7Qzoj/qQU1cL5GnYLQP5LbI+wlLCLoINvcykR3htKcQ4tzrPf2DOs72x933BM7oArYj1SKrkb2lGlsJHIic3g==} engines: {node: '>=20.0.0'} + '@aws-sdk/nested-clients@3.997.23': + resolution: {integrity: sha512-gO93ZPsI2bxeFZD42f1/qjDw6FAZkNZcKRO94LIiT03fzOmcJ9e/tunxjVjA1Rl69ClmVJzz8H3G9CdKef10PA==} + engines: {node: '>=20.0.0'} + '@aws-sdk/region-config-resolver@3.972.10': resolution: {integrity: sha512-1dq9ToC6e070QvnVhhbAs3bb5r6cQ10gTVc6cyRV5uvQe7P138TV2uG2i6+Yok4bAkVAcx5AqkTEBUvWEtBlsQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/signature-v4-multi-region@3.996.35': + resolution: {integrity: sha512-6L/VWs+Wch2stHemCGTmUNqKLMzURxQDK5boNG3Jn3kAOp71meDUuS5sbObpEvFxHDq0uWeSLFDNSYsjNt+Dlg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/token-providers@3.1019.0': resolution: {integrity: sha512-OF+2RfRmUKyjzrRWlDcyju3RBsuqcrYDQ8TwrJg8efcOotMzuZN4U9mpVTIdATpmEc4lWNZBMSjPzrGm6JPnAQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/token-providers@3.997.0': - resolution: {integrity: sha512-UdG36F7lU9aTqGFRieEyuRUJlgEJBqKeKKekC0esH21DbUSKhPR1kZBah214kYasIaWe1hLJLaqUigoTa5hZAQ==} + '@aws-sdk/token-providers@3.1048.0': + resolution: {integrity: sha512-k0y/GcuesuSfWyUM0WamrGyeZmltRYaPbHO82UDA6mZ/doB+FOHKutikPAtSXMn/hDz970cF+iRuuiYO9VEbAA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/token-providers@3.1074.0': + resolution: {integrity: sha512-pv80IzgGW4RnXWtft692chZOM9i6PhebVsLCcnaM4dBEPZva2fE6FXAHs76G7Rc7s3yGyX/68G0nZMrUy+Vmpg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/types@3.973.13': + resolution: {integrity: sha512-pEHZqRkAlHfnfAU9tK+WpKv/gBNjGJrHMgA3A0iYRGyswBS2t0pfez+lWlwktb3Bqa0ovh7w/QJTFwp3fDxLNg==} engines: {node: '>=20.0.0'} '@aws-sdk/types@3.973.6': @@ -998,10 +1043,6 @@ packages: resolution: {integrity: sha512-Uh93L5sXFNbyR5sEPMzUU8tJ++Ku97EY4udmC01nB8Zu+xfBPwpIwJ6F7snqQeq8h2pf+8SGN5/NoytfKgYPIw==} engines: {node: '>=20.0.0'} - '@aws-sdk/util-format-url@3.972.4': - resolution: {integrity: sha512-rPm9g4WvgTz4ko5kqseIG5Vp5LUAbWBBDalm4ogHLMc0i20ChwQWqwuTUPJSu8zXn43jIM0xO2KZaYQsFJb+ew==} - engines: {node: '>=20.0.0'} - '@aws-sdk/util-locate-window@3.965.4': resolution: {integrity: sha512-H1onv5SkgPBK2P6JR2MjGgbOnttoNzSPIRoeZTNPZYyaplwGg50zS3amXvXqF0/qfXpWEC9rLWU564QTB9bSog==} engines: {node: '>=20.0.0'} @@ -1022,6 +1063,10 @@ packages: resolution: {integrity: sha512-iu2pyvaqmeatIJLURLqx9D+4jKAdTH20ntzB6BFwjyN7V960r4jK32mx0Zf7YbtOYAbmbtQfDNuL60ONinyw7A==} engines: {node: '>=20.0.0'} + '@aws-sdk/xml-builder@3.972.31': + resolution: {integrity: sha512-SzE4Pgyl+hDF+BuyuzxUSpwnuUu9lJuO1YGgteG89/4Qv0+2IQiVQqdbPV32IozLvXWQChPQcdkk/sKvb1QHiQ==} + engines: {node: '>=20.0.0'} + '@aws/lambda-invoke-store@0.2.4': resolution: {integrity: sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==} engines: {node: '>=18.0.0'} @@ -1164,6 +1209,24 @@ packages: resolution: {integrity: sha512-UyX6rGEXzVyPzb1yvjHtPfTlnLvB5jX/stAMdiytHhfoydX+98hfympdOwsnTktzr+IRvphxTbdErgYDJkEsvw==} engines: {node: '>=22.12.0'} + '@earendil-works/pi-agent-core@0.80.2': + resolution: {integrity: sha512-BF9WPhixIFjT6Kp3Iz3H6ugkU+4AWotM8py96XE5pIK0arJbQKMWbR+dXSWWDEmR5yc/aFQODnuyowOEzMGO7Q==} + engines: {node: '>=22.19.0'} + + '@earendil-works/pi-ai@0.80.2': + resolution: {integrity: sha512-5GNKfdrRJ4uZ5Zd9iudoXggi/BbUcKnD/xfRHtdR+7q4vWqPvfx8auFuaT+ewGBVI8K4wj87eigFQ/iCSuy9RQ==} + engines: {node: '>=22.19.0'} + hasBin: true + + '@earendil-works/pi-coding-agent@0.80.2': + resolution: {integrity: sha512-m9v7OUit0s9LklWfh61ca/XY5INjUzjtYtNZwy3cNvyjOLk3IpBgghP8aAp0iH35rLaiRwuuWiJ8t88ODMWY+A==} + engines: {node: '>=22.19.0'} + hasBin: true + + '@earendil-works/pi-tui@0.80.2': + resolution: {integrity: sha512-OvOAMIbXiC9OSse17YMiXIsI9AS5XM/ZV8N/k+UzdlRpPILDQYmLElevgGW92kkXR8qHBClIdzhCjuzlBGvphA==} + engines: {node: '>=22.19.0'} + '@emnapi/core@1.8.1': resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} @@ -1485,8 +1548,8 @@ packages: cpu: [x64] os: [win32] - '@google/genai@1.42.0': - resolution: {integrity: sha512-+3nlMTcrQufbQ8IumGkOphxD5Pd5kKyJOzLcnY0/1IuE8upJk5aLmoexZ2BJhBp1zAjRJMEB4a2CJwKI9e2EYw==} + '@google/genai@1.52.0': + resolution: {integrity: sha512-gwSvbpiN/17O9TbsqSsE/OzZcpv5Fo4RQjdngGgogtuB9RsyJ8ZHhX5KjHj1bp5N9snN2eK8LDGXSaWW2hof8Q==} engines: {node: '>=20.0.0'} peerDependencies: '@modelcontextprotocol/sdk': ^1.25.2 @@ -1831,91 +1894,69 @@ packages: '@lydell/node-pty@1.2.0-beta.3': resolution: {integrity: sha512-ngGAItlRhmJXrhspxt8kX13n1dVFqzETOq0m/+gqSkO8NJBvNMwP7FZckMwps2UFySdr4yxCXNGu/bumg5at6A==} - '@mariozechner/clipboard-darwin-arm64@0.3.2': - resolution: {integrity: sha512-uBf6K7Je1ihsgvmWxA8UCGCeI+nbRVRXoarZdLjl6slz94Zs1tNKFZqx7aCI5O1i3e0B6ja82zZ06BWrl0MCVw==} + '@mariozechner/clipboard-darwin-arm64@0.3.9': + resolution: {integrity: sha512-BfgV7vCEWZwJwZJw03r6bP5+tf0iI/ANuQYCxi9RNn7FrWB3yzGuMKCrNLRl6V761vXRdL8+OqZ0wd4TqlsNOQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@mariozechner/clipboard-darwin-universal@0.3.2': - resolution: {integrity: sha512-mxSheKTW2U9LsBdXy0SdmdCAE5HqNS9QUmpNHLnfJ+SsbFKALjEZc5oRrVMXxGQSirDvYf5bjmRyT0QYYonnlg==} + '@mariozechner/clipboard-darwin-universal@0.3.9': + resolution: {integrity: sha512-BGGR4iA9Z2shAjI65eI5xtyb3LYNlDW9X3gxKxDbqtbnREohsrqznov6zpKoIrsRWpzlYVEdKphS7ksJ0/ndSQ==} engines: {node: '>= 10'} os: [darwin] - '@mariozechner/clipboard-darwin-x64@0.3.2': - resolution: {integrity: sha512-U1BcVEoidvwIp95+HJswSW+xr28EQiHR7rZjH6pn8Sja5yO4Yoe3yCN0Zm8Lo72BbSOK/fTSq0je7CJpaPCspg==} + '@mariozechner/clipboard-darwin-x64@0.3.9': + resolution: {integrity: sha512-4kURmCbS6nt8uYhtmWpUcJWyPHfmAr5dTpXD1nO3pIfa+TSQ9DbrGOYCKH+aEFW47XhQ4Vp8ZTszie+wfFvDKg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@mariozechner/clipboard-linux-arm64-gnu@0.3.2': - resolution: {integrity: sha512-BsinwG3yWTIjdgNCxsFlip7LkfwPk+ruw/aFCXHUg/fb5XC/Ksp+YMQ7u0LUtiKzIv/7LMXgZInJQH6gxbAaqQ==} + '@mariozechner/clipboard-linux-arm64-gnu@0.3.9': + resolution: {integrity: sha512-g59OkUGP2DDfCOIKypHeYgv2M55u/cKvXa5dSxFbEJ34XvIQMdcVmpKCkGUro3ZgefXiGVdwguvTMQGpHWzIXw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@mariozechner/clipboard-linux-arm64-musl@0.3.2': - resolution: {integrity: sha512-0/Gi5Xq2V6goXBop19ePoHvXsmJD9SzFlO3S+d6+T2b+BlPcpOu3Oa0wTjl+cZrLAAEzA86aPNBI+VVAFDFPKw==} + '@mariozechner/clipboard-linux-arm64-musl@0.3.9': + resolution: {integrity: sha512-AGuJdgKsmJdm4Pych7kv3sqe591ERRaAHW3xjLooiFzn8J+PxUyof++7YZrB5Y5tpnTO+K18Og3taj2NpluCRQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@mariozechner/clipboard-linux-riscv64-gnu@0.3.2': - resolution: {integrity: sha512-2AFFiXB24qf0zOZsxI1GJGb9wQGlOJyN6UwoXqmKS3dpQi/l6ix30IzDDA4c4ZcCcx4D+9HLYXhC1w7Sov8pXA==} + '@mariozechner/clipboard-linux-riscv64-gnu@0.3.9': + resolution: {integrity: sha512-DXBEAiuMpk7dhS1a9NzNxVAFi1vaKoPu7rQNgY8LIDLGrK3lnIp3nT10DUum+PKVJoJppIP+NAA8IZe4DMNDPw==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] - '@mariozechner/clipboard-linux-x64-gnu@0.3.2': - resolution: {integrity: sha512-v6fVnsn7WMGg73Dab8QMwyFce7tzGfgEixKgzLP8f1GJqkJZi5zO4k4FOHzSgUufgLil63gnxvMpjWkgfeQN7A==} + '@mariozechner/clipboard-linux-x64-gnu@0.3.9': + resolution: {integrity: sha512-WORrMLd6EpElEME7JRKfSaY34nW1P5LbdgK5YNCS1ncG2LqmITsSMEJ8nh2mpvxb3TxqbOOKgY7k9eMJYlW9Mw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@mariozechner/clipboard-linux-x64-musl@0.3.2': - resolution: {integrity: sha512-xVUtnoMQ8v2JVyfJLKKXACA6avdnchdbBkTsZs8BgJQo29qwCp5NIHAUO8gbJ40iaEGToW5RlmVk2M9V0HsHEw==} + '@mariozechner/clipboard-linux-x64-musl@0.3.9': + resolution: {integrity: sha512-/DHn+1DrfL6oRaPPWXaOKvonFFrni666fxd+zFqiQEfvBH0tsHVWjq9iqBk0oDp0qaPA72lIMy5BptxISBEhZQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@mariozechner/clipboard-win32-arm64-msvc@0.3.2': - resolution: {integrity: sha512-AEgg95TNi8TGgak2wSXZkXKCvAUTjWoU1Pqb0ON7JHrX78p616XUFNTJohtIon3e0w6k0pYPZeCuqRCza/Tqeg==} + '@mariozechner/clipboard-win32-arm64-msvc@0.3.9': + resolution: {integrity: sha512-O5FHD3ErkMwMhNzAfu3ggy0ug4z7btZuoQgwwxlzPrwV2bxlD6WDpqBY4NCgICAgZdDKdp+loUEKVAVt8aYnhQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@mariozechner/clipboard-win32-x64-msvc@0.3.2': - resolution: {integrity: sha512-tGRuYpZwDOD7HBrCpyRuhGnHHSCknELvqwKKUG4JSfSB7JIU7LKRh6zx6fMUOQd8uISK35TjFg5UcNih+vJhFA==} + '@mariozechner/clipboard-win32-x64-msvc@0.3.9': + resolution: {integrity: sha512-ihQC3EufqEY81vhXBgVBtK4prL+wc62zJsSvxrgz7K1hsdt6OObz6v9p3Rn1OG3GJksTTKMJF0u/guMISHPhSA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@mariozechner/clipboard@0.3.2': - resolution: {integrity: sha512-IHQpksNjo7EAtGuHFU+tbWDp5LarH3HU/8WiB9O70ZEoBPHOg0/6afwSLK0QyNMMmx4Bpi/zl6+DcBXe95nWYA==} + '@mariozechner/clipboard@0.3.9': + resolution: {integrity: sha512-ABnA53mdfkGZwOFUdZNv2S0CWGO/EIuPj8Vv9xmBFmSYg/qFc7ihO6q5FcQjvoE67kZpWkEc4AhD6B/os04yuA==} engines: {node: '>= 10'} - '@mariozechner/jiti@2.6.5': - resolution: {integrity: sha512-faGUlTcXka5l7rv0lP3K3vGW/ejRuOS24RR2aSFWREUQqzjgdsuWNo/IiPqL3kWRGt6Ahl2+qcDAwtdeWeuGUw==} - hasBin: true - - '@mariozechner/pi-agent-core@0.54.0': - resolution: {integrity: sha512-LsPoudpOJLj7JjSpjlAdLM5uA2iy8nP+4nA6Si1ASD3tMqXdjHzNaKNloGSODKJO+3O3yhwPMSbuk78CCnZteQ==} - engines: {node: '>=20.0.0'} - - '@mariozechner/pi-ai@0.54.0': - resolution: {integrity: sha512-XHhMIbFFHCa4mbiYdttfhVg6r3VmFD5tAiW4tjnmf33FhLUCRd76bGMQRc4kLWXPKCi/U4nqAErvaGiZUY4B8A==} - engines: {node: '>=20.0.0'} - hasBin: true - - '@mariozechner/pi-coding-agent@0.54.0': - resolution: {integrity: sha512-CO8uLmigLzzep2i5/f05dchyywDYDsqykLxpaMXbwDa/dDzsBRbuWoGQBOAsiGbcCMya6AT5nAggFFo4Aqy/+g==} - engines: {node: '>=20.0.0'} - hasBin: true - - '@mariozechner/pi-tui@0.54.0': - resolution: {integrity: sha512-bvFlUohdxDvKcFeQM2xsd5twCGKWxVaYSlHCFljIW0KqMC4vU+/Ts4A1i9iDnm6Xe/MlueKvC0V09YeC8fLIHA==} - engines: {node: '>=20.0.0'} - '@matrix-org/matrix-sdk-crypto-nodejs@0.4.0': resolution: {integrity: sha512-+qqgpn39XFSbsD0dFjssGO9vHEP7sTyfs8yTpt8vuqWpUpF20QMwpCZi0jpYw7GxjErNTsMshopuo8677DfGEA==} engines: {node: '>= 22'} @@ -1928,8 +1969,13 @@ packages: resolution: {integrity: sha512-570oJr93l1RcCNNaMVpOm+PgQkRgno/F65nH1aCWLIKLnw0o7iPoj+8Z5b7mnLMidg9lldVSCcf0dBxqTGE1/w==} engines: {node: '>=20.0.0'} - '@mistralai/mistralai@1.10.0': - resolution: {integrity: sha512-tdIgWs4Le8vpvPiUEWne6tK0qbVc+jMenujnvTqOjogrJUsCSQhus0tHTU1avDDh5//Rq2dFgP9mWRAdIEoBqg==} + '@mistralai/mistralai@2.2.6': + resolution: {integrity: sha512-W8pX7zHxjJvMIpw8JMxeJEleapXX0Q9NPszdNzqkM3MIEoIGPObdodujj+WHteXEvGfaP/AMwlNyRfEzSY6dQQ==} + peerDependencies: + '@opentelemetry/api': ^1.9.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true '@mozilla/readability@0.6.0': resolution: {integrity: sha512-juG5VWh4qAivzTAeMzvY9xs9HY5rAcr2E4I7tiSSCokRFi7XIZCAu92ZkSTsIj1OPceCifL3cpfteP3pDT9/QQ==} @@ -1941,140 +1987,70 @@ packages: cpu: [arm64] os: [android] - '@napi-rs/canvas-android-arm64@0.1.97': - resolution: {integrity: sha512-V1c/WVw+NzH8vk7ZK/O8/nyBSCQimU8sfMsB/9qeSvdkGKNU7+mxy/bIF0gTgeBFmHpj30S4E9WHMSrxXGQuVQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [android] - '@napi-rs/canvas-darwin-arm64@0.1.95': resolution: {integrity: sha512-F7jT0Syu+B9DGBUBcMk3qCRIxAWiDXmvEjamwbYfbZl7asI1pmXZUnCOoIu49Wt0RNooToYfRDxU9omD6t5Xuw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@napi-rs/canvas-darwin-arm64@0.1.97': - resolution: {integrity: sha512-ok+SCEF4YejcxuJ9Rm+WWunHHpf2HmiPxfz6z1a/NFQECGXtsY7A4B8XocK1LmT1D7P174MzwPF9Wy3AUAwEPw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - '@napi-rs/canvas-darwin-x64@0.1.95': resolution: {integrity: sha512-54eb2Ho15RDjYGXO/harjRznBrAvu+j5nQ85Z4Qd6Qg3slR8/Ja+Yvvy9G4yo7rdX6NR9GPkZeSTf2UcKXwaXw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@napi-rs/canvas-darwin-x64@0.1.97': - resolution: {integrity: sha512-PUP6e6/UGlclUvAQNnuXCcnkpdUou6VYZfQOQxExLp86epOylmiwLkqXIvpFmjoTEDmPmXrI+coL/9EFU1gKPA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - '@napi-rs/canvas-linux-arm-gnueabihf@0.1.95': resolution: {integrity: sha512-hYaLCSLx5bmbnclzQc3ado3PgZ66blJWzjXp0wJmdwpr/kH+Mwhj6vuytJIomgksyJoCdIqIa4N6aiqBGJtJ5Q==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@napi-rs/canvas-linux-arm-gnueabihf@0.1.97': - resolution: {integrity: sha512-XyXH2L/cic8eTNtbrXCcvqHtMX/nEOxN18+7rMrAM2XtLYC/EB5s0wnO1FsLMWmK+04ZSLN9FBGipo7kpIkcOw==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - '@napi-rs/canvas-linux-arm64-gnu@0.1.95': resolution: {integrity: sha512-J7VipONahKsmScPZsipHVQBqpbZx4favaD8/enWzzlGcjiwycOoymL7f4tNeqdjK0su19bDOUt6mjp9gsPWYlw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@napi-rs/canvas-linux-arm64-gnu@0.1.97': - resolution: {integrity: sha512-Kuq/M3djq0K8ktgz6nPlK7Ne5d4uWeDxPpyKWOjWDK2RIOhHVtLtyLiJw2fuldw7Vn4mhw05EZXCEr4Q76rs9w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - '@napi-rs/canvas-linux-arm64-musl@0.1.95': resolution: {integrity: sha512-PXy0UT1J/8MPG8UAkWp6Fd51ZtIZINFzIjGH909JjQrtCuJf3X6nanHYdz1A+Wq9o4aoPAw1YEUpFS1lelsVlg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@napi-rs/canvas-linux-arm64-musl@0.1.97': - resolution: {integrity: sha512-kKmSkQVnWeqg7qdsiXvYxKhAFuHz3tkBjW/zyQv5YKUPhotpaVhpBGv5LqCngzyuRV85SXoe+OFj+Tv0a0QXkQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - '@napi-rs/canvas-linux-riscv64-gnu@0.1.95': resolution: {integrity: sha512-2IzCkW2RHRdcgF9W5/plHvYFpc6uikyjMb5SxjqmNxfyDFz9/HB89yhi8YQo0SNqrGRI7yBVDec7Pt+uMyRWsg==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] - '@napi-rs/canvas-linux-riscv64-gnu@0.1.97': - resolution: {integrity: sha512-Jc7I3A51jnEOIAXeLsN/M/+Z28LUeakcsXs07FLq9prXc0eYOtVwsDEv913Gr+06IRo34gJJVgT0TXvmz+N2VA==} - engines: {node: '>= 10'} - cpu: [riscv64] - os: [linux] - '@napi-rs/canvas-linux-x64-gnu@0.1.95': resolution: {integrity: sha512-OV/ol/OtcUr4qDhQg8G7SdViZX8XyQeKpPsVv/j3+7U178FGoU4M+yIocdVo1ih/A8GQ63+LjF4jDoEjaVU8Pw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@napi-rs/canvas-linux-x64-gnu@0.1.97': - resolution: {integrity: sha512-iDUBe7AilfuBSRbSa8/IGX38Mf+iCSBqoVKLSQ5XaY2JLOaqz1TVyPFEyIck7wT6mRQhQt5sN6ogfjIDfi74tg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - '@napi-rs/canvas-linux-x64-musl@0.1.95': resolution: {integrity: sha512-Z5KzqBK/XzPz5+SFHKz7yKqClEQ8pOiEDdgk5SlphBLVNb8JFIJkxhtJKSvnJyHh2rjVgiFmvtJzMF0gNwwKyQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@napi-rs/canvas-linux-x64-musl@0.1.97': - resolution: {integrity: sha512-AKLFd/v0Z5fvgqBDqhvqtAdx+fHMJ5t9JcUNKq4FIZ5WH+iegGm8HPdj00NFlCSnm83Fp3Ln8I2f7uq1aIiWaA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - '@napi-rs/canvas-win32-arm64-msvc@0.1.95': resolution: {integrity: sha512-aj0YbRpe8qVJ4OzMsK7NfNQePgcf9zkGFzNZ9mSuaxXzhpLHmlF2GivNdCdNOg8WzA/NxV6IU4c5XkXadUMLeA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@napi-rs/canvas-win32-arm64-msvc@0.1.97': - resolution: {integrity: sha512-u883Yr6A6fO7Vpsy9YE4FVCIxzzo5sO+7pIUjjoDLjS3vQaNMkVzx5bdIpEL+ob+gU88WDK4VcxYMZ6nmnoX9A==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - '@napi-rs/canvas-win32-x64-msvc@0.1.95': resolution: {integrity: sha512-GA8leTTCfdjuHi8reICTIxU0081PhXvl3lzIniLUjeLACx9GubUiyzkwFb+oyeKLS5IAGZFLKnzAf4wm2epRlA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@napi-rs/canvas-win32-x64-msvc@0.1.97': - resolution: {integrity: sha512-sWtD2EE3fV0IzN+iiQUqr/Q1SwqWhs2O1FKItFlxtdDkikpEj5g7DKQpY3x55H/MAOnL8iomnlk3mcEeGiUMoQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - '@napi-rs/canvas@0.1.95': resolution: {integrity: sha512-lkg23ge+rgyhgUwXmlbkPEhuhHq/hUi/gXKH+4I7vO+lJrbNfEYcQdJLIGjKyXLQzgFiiyDAwh5vAe/tITAE+w==} engines: {node: '>= 10'} - '@napi-rs/canvas@0.1.97': - resolution: {integrity: sha512-8cFniXvrIEnVwuNSRCW9wirRZbHvrD3JVujdS2P5n5xiJZNZMOZcfOvJ1pb66c7jXMKHHglJEDVJGbm8XWFcXQ==} - engines: {node: '>= 10'} - '@napi-rs/wasm-runtime@1.1.1': resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} @@ -2351,6 +2327,10 @@ packages: resolution: {integrity: sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==} engines: {node: '>=14'} + '@opentelemetry/semantic-conventions@1.41.1': + resolution: {integrity: sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA==} + engines: {node: '>=14'} + '@oxc-project/types@0.112.0': resolution: {integrity: sha512-m6RebKHIRsax2iCwVpYW2ErQwa4ywHJrE4sCK3/8JK8ZZAWOKXaRJFl/uP51gaVyyXlaS4+chU1nSCdzYf6QqQ==} @@ -2631,12 +2611,21 @@ packages: '@protobufjs/codegen@2.0.4': resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + '@protobufjs/codegen@2.0.5': + resolution: {integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==} + '@protobufjs/eventemitter@1.1.0': resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + '@protobufjs/eventemitter@1.1.1': + resolution: {integrity: sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==} + '@protobufjs/fetch@1.1.0': resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + '@protobufjs/fetch@1.1.1': + resolution: {integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==} + '@protobufjs/float@1.0.2': resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} @@ -2652,6 +2641,9 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@protobufjs/utf8@1.1.1': + resolution: {integrity: sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==} + '@quansync/fs@1.0.0': resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} @@ -2968,34 +2960,26 @@ packages: resolution: {integrity: sha512-o9VycsYNtgC+Dy3I0yrwCqv9CWicDnke0L7EVOrZtJpjb2t0EjaEofmMrYc0T1Kn3yk32zm6cspxF9u9Bj7e5w==} engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@4.2.12': - resolution: {integrity: sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-codec@4.2.10': - resolution: {integrity: sha512-A4ynrsFFfSXUHicfTcRehytppFBcY3HQxEGYiyGktPIOye3Ot7fxpiy4VR42WmtGI4Wfo6OXt/c1Ky1nUFxYYQ==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-serde-browser@4.2.10': - resolution: {integrity: sha512-0xupsu9yj9oDVuQ50YCTS9nuSYhGlrwqdaKQel9y2Fz7LU9fNErVlw9N0o4pm4qqvWEGbSTI4HKc6XJfB30MVw==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-serde-config-resolver@4.3.10': - resolution: {integrity: sha512-8kn6sinrduk0yaYHMJDsNuiFpXwQwibR7n/4CDUqn4UgaG+SeBHu5jHGFdU9BLFAM7Q4/gvr9RYxBHz9/jKrhA==} + '@smithy/core@3.26.0': + resolution: {integrity: sha512-mLUktFAn+Pa2agl1J7VgtYNFWCX8/b4GMJSK1hCu4YCvtBfM6F8Os3EP4ry+DFFlXOf3wyvlgXhuUdFoy52D3g==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-node@4.2.10': - resolution: {integrity: sha512-uUrxPGgIffnYfvIOUmBM5i+USdEBRTdh7mLPttjphgtooxQ8CtdO1p6K5+Q4BBAZvKlvtJ9jWyrWpBJYzBKsyQ==} + '@smithy/credential-provider-imds@4.2.12': + resolution: {integrity: sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-universal@4.2.10': - resolution: {integrity: sha512-aArqzOEvcs2dK+xQVCgLbpJQGfZihw8SD4ymhkwNTtwKbnrzdhJsFDKuMQnam2kF69WzgJYOU5eJlCx+CA32bw==} + '@smithy/credential-provider-imds@4.4.2': + resolution: {integrity: sha512-18UMDMyrAbDcpmL1gLUA7ww0fRTcdCrSjSJOi2Sbld+tVjwD/pW+OAwjlScFLR7vvBnhZrIPQ7kVuTf1mnJLug==} engines: {node: '>=18.0.0'} '@smithy/fetch-http-handler@5.3.15': resolution: {integrity: sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==} engines: {node: '>=18.0.0'} + '@smithy/fetch-http-handler@5.5.2': + resolution: {integrity: sha512-Ei/UK/QMhq0rKaMqGPlOAkE2yS9DZeYmZdk1RAKc3vp3zxgleZHZyBLlZv8yLsxljX4svCRuMTD6u3LLIcU4Bg==} + engines: {node: '>=18.0.0'} + '@smithy/hash-node@4.2.12': resolution: {integrity: sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==} engines: {node: '>=18.0.0'} @@ -3040,6 +3024,14 @@ packages: resolution: {integrity: sha512-Rnq9vQWiR1+/I6NZZMNzJHV6pZYyEHt2ZnuV3MG8z2NNenC4i/8Kzttz7CjZiHSmsN5frhXhg17z3Zqjjhmz1A==} engines: {node: '>=18.0.0'} + '@smithy/node-http-handler@4.7.3': + resolution: {integrity: sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@4.8.2': + resolution: {integrity: sha512-wfl1uwrAqMH9/pi4kqBo5LBcFwrJLxuDLqL7p7qNcJIFcyZDUc6pzhYk4CYv+DP7fIUpQCZumwNnkhPKS52osQ==} + engines: {node: '>=18.0.0'} + '@smithy/property-provider@4.2.12': resolution: {integrity: sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==} engines: {node: '>=18.0.0'} @@ -3068,6 +3060,10 @@ packages: resolution: {integrity: sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==} engines: {node: '>=18.0.0'} + '@smithy/signature-v4@5.5.2': + resolution: {integrity: sha512-7xHpmPY4rt0IOmeAA8EfjgEH8isT+587TCdy9H6a7d4OMi5CQ0oEHhWllunvPu4j4Cq0vTFwdxXN/kABWPjdyA==} + engines: {node: '>=18.0.0'} + '@smithy/smithy-client@4.12.7': resolution: {integrity: sha512-q3gqnwml60G44FECaEEsdQMplYhDMZYCtYhMCzadCnRnnHIobZJjegmdoUo6ieLQlPUzvrMdIJUpx6DoPmzANQ==} engines: {node: '>=18.0.0'} @@ -3076,6 +3072,10 @@ packages: resolution: {integrity: sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==} engines: {node: '>=18.0.0'} + '@smithy/types@4.15.0': + resolution: {integrity: sha512-Z5TAOxygoFvybJV3igo5SloFflSokHx2hu1eFA+DxDTcn+FtKxUSui+rbTRG1pAafMA888Z3MVvCWUuvCrTXjg==} + engines: {node: '>=18.0.0'} + '@smithy/url-parser@4.2.12': resolution: {integrity: sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA==} engines: {node: '>=18.0.0'} @@ -3116,10 +3116,6 @@ packages: resolution: {integrity: sha512-VACQVe50j0HZPjpwWcjyT51KUQ4AnsvEaQ2lKHOSL4mNLD0G9BjEniQ+yCt1qqfKfiAHRAts26ud7hBjamrwig==} engines: {node: '>=18.0.0'} - '@smithy/util-hex-encoding@4.2.1': - resolution: {integrity: sha512-c1hHtkgAWmE35/50gmdKajgGAKV3ePJ7t6UtEmpfCWJmQE9BQAQPz0URUVI89eSkcDqCtzqllxzG28IQoZPvwA==} - engines: {node: '>=18.0.0'} - '@smithy/util-hex-encoding@4.2.2': resolution: {integrity: sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==} engines: {node: '>=18.0.0'} @@ -3132,10 +3128,6 @@ packages: resolution: {integrity: sha512-1zopLDUEOwumjcHdJ1mwBHddubYF8GMQvstVCLC54Y46rqoHwlIU+8ZzUeaBcD+WCJHyDGSeZ2ml9YSe9aqcoQ==} engines: {node: '>=18.0.0'} - '@smithy/util-stream@4.5.15': - resolution: {integrity: sha512-OlOKnaqnkU9X+6wEkd7mN+WB7orPbCVDauXOj22Q7VtiTkvy7ZdSsOg4QiNAZMgI4OkvNf+/VLUC3VXkxuWJZw==} - engines: {node: '>=18.0.0'} - '@smithy/util-stream@4.5.20': resolution: {integrity: sha512-4yXLm5n/B5SRBR2p8cZ90Sbv4zL4NKsgxdzCzp/83cXw2KxLEumt5p+GAVyRNZgQOSrzXn9ARpO0lUe8XSlSDw==} engines: {node: '>=18.0.0'} @@ -3173,9 +3165,6 @@ packages: '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - '@tootallnate/quickjs-emscripten@0.23.0': - resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@twurple/api-call@8.0.3': resolution: {integrity: sha512-/5DBTqFjpYB+qqOkkFzoTWE79a7+I8uLXmBIIIYjGoq/CIPxKcHnlemXlU8cQhTr87PVa3th8zJXGYiNkpRx8w==} @@ -3249,27 +3238,18 @@ packages: '@types/linkify-it@5.0.0': resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} - '@types/long@4.0.2': - resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} - '@types/markdown-it@14.1.2': resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} - '@types/mime-types@2.1.4': - resolution: {integrity: sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==} - '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@10.17.60': - resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} - '@types/node@20.19.37': resolution: {integrity: sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==} @@ -3466,10 +3446,6 @@ packages: link-preview-js: optional: true - '@whiskeysockets/libsignal-node@https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67': - resolution: {tarball: https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67} - version: 2.0.1 - abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -3496,14 +3472,6 @@ packages: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} - ajv-formats@3.0.1: - resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - ajv@8.18.0: resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} @@ -3570,10 +3538,6 @@ packages: resolution: {integrity: sha512-trmleAnZ2PxN/loHWVhhx1qeOHSRXq4TDsBBxq3GqeJitfk3+jTQ+v/C1km/KYq9M7wKqCewMh+/NAvVH7m+bw==} engines: {node: '>=20.19.0'} - ast-types@0.13.4: - resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} - engines: {node: '>=4'} - ast-v8-to-istanbul@0.3.11: resolution: {integrity: sha512-Qya9fkoofMjCBNVdWINMjB5KZvkYfaO9/anwkWnjxibpWUxo5iHl2sOdP7/uAqaRuUYuoo8rDwnbaaKVFxoUvw==} @@ -3613,10 +3577,6 @@ packages: resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} engines: {node: '>= 0.8'} - basic-ftp@5.2.0: - resolution: {integrity: sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw==} - engines: {node: '>=10.0.0'} - bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} @@ -3841,10 +3801,6 @@ packages: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} - data-uri-to-buffer@6.0.2: - resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} - engines: {node: '>= 14'} - debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -3877,10 +3833,6 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - degenerator@5.0.1: - resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} - engines: {node: '>= 14'} - delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -3897,8 +3849,8 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - diff@8.0.3: - resolution: {integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==} + diff@8.0.4: + resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} engines: {node: '>=0.3.1'} discord-api-types@0.38.37: @@ -4022,27 +3974,9 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} @@ -4210,6 +4144,10 @@ packages: resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} engines: {node: '>=18'} + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} + engines: {node: '>=18'} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -4221,10 +4159,6 @@ packages: get-tsconfig@4.13.6: resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} - get-uri@6.0.5: - resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==} - engines: {node: '>= 14'} - getpass@0.1.7: resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} @@ -4303,8 +4237,8 @@ packages: hookified@1.15.1: resolution: {integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==} - hosted-git-info@9.0.2: - resolution: {integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==} + hosted-git-info@9.0.3: + resolution: {integrity: sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==} engines: {node: ^20.17.0 || >=22.9.0} html-escaper@2.0.2: @@ -4373,10 +4307,6 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - ip-address@10.1.0: - resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} - engines: {node: '>= 12'} - ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -4469,6 +4399,10 @@ packages: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + jose@4.15.9: resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} @@ -4542,12 +4476,13 @@ packages: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} - koffi@2.15.1: - resolution: {integrity: sha512-mnc0C0crx/xMSljb5s9QbnLrlFHprioFO1hkXyuSuO/QtbpLDa0l/uM21944UfQunMKmp3/r789DTDxVyyH6aA==} - leac@0.6.0: resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} + libsignal@https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/bcea72df9ec34d9d9140ab30619cf479c7c144c7: + resolution: {tarball: https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/bcea72df9ec34d9d9140ab30619cf479c7c144c7} + version: 6.0.0 + lie@3.3.0: resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} @@ -4627,9 +4562,6 @@ packages: resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} engines: {node: '>=18'} - long@4.0.0: - resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} - long@5.3.2: resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} @@ -4655,10 +4587,6 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} - lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - lru-memoizer@2.3.0: resolution: {integrity: sha512-GXn7gyHAMhO13WSKrIiNfztwxodVsP8IoZ3XfrJV4yH2x0/OeTO/FIaAHTY5YekdGgW94njfuKmyyt1E0mR6Ug==} @@ -4676,16 +4604,16 @@ packages: resolution: {integrity: sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==} hasBin: true - marked@15.0.12: - resolution: {integrity: sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==} - engines: {node: '>= 18'} - hasBin: true - marked@17.0.3: resolution: {integrity: sha512-jt1v2ObpyOKR8p4XaUJVk3YWRJ5n+i4+rjQopxvV32rSndTJXvIzuUdWWIy/1pFQMkQmvTXawzDNqOH/CUmx6A==} engines: {node: '>= 20'} hasBin: true + marked@18.0.5: + resolution: {integrity: sha512-S6GcvALHg6K4ohtu4E7x0a1AqhAjp6cV8KhLSyN9qVapnzJkusVBxZRcIU9AeYsbe6P1hKDusSbEOzGyyuce6w==} + engines: {node: '>= 20'} + hasBin: true + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -4810,10 +4738,6 @@ packages: resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} - netmask@2.0.2: - resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} - engines: {node: '>= 0.4.0'} - node-addon-api@8.7.0: resolution: {integrity: sha512-9MdFxmkKaOYVTV+XVRG8ArDwwQ77XIgIPyKASB1k3JPq3M8fGQQQE3YpMOrKm6g//Ktx8ivZr8xo1Qmtqub+GA==} engines: {node: ^18 || ^20 || >= 21} @@ -4913,8 +4837,8 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} - openai@6.10.0: - resolution: {integrity: sha512-ITxOGo7rO3XRMiKA5l7tQ43iNNu+iXGFAcf2t+aWVzzqRaS0i7m1K2BhxNdaveB+5eENhO0VY1FkiZzhBk4v3A==} + openai@6.25.0: + resolution: {integrity: sha512-mEh6VZ2ds2AGGokWARo18aPISI1OhlgdEIC1ewhkZr8pSIT31dec0ecr9Nhxx0JlybyOgoAT1sWeKtwPZzJyww==} hasBin: true peerDependencies: ws: ^8.18.0 @@ -4925,8 +4849,8 @@ packages: zod: optional: true - openai@6.25.0: - resolution: {integrity: sha512-mEh6VZ2ds2AGGokWARo18aPISI1OhlgdEIC1ewhkZr8pSIT31dec0ecr9Nhxx0JlybyOgoAT1sWeKtwPZzJyww==} + openai@6.26.0: + resolution: {integrity: sha512-zd23dbWTjiJ6sSAX6s0HrCZi41JwTA1bQVs0wLQPZ2/5o2gxOJA5wh7yOAUgwYybfhDXyhwlpeQf7Mlgx8EOCA==} hasBin: true peerDependencies: ws: ^8.18.0 @@ -4991,14 +4915,6 @@ packages: resolution: {integrity: sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==} engines: {node: '>=20'} - pac-proxy-agent@7.2.0: - resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} - engines: {node: '>= 14'} - - pac-resolver@7.0.1: - resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} - engines: {node: '>= 14'} - package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -5156,14 +5072,14 @@ packages: proper-lockfile@4.1.2: resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} - protobufjs@6.8.8: - resolution: {integrity: sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==} - hasBin: true - protobufjs@7.5.4: resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} engines: {node: '>=12.0.0'} + protobufjs@7.6.4: + resolution: {integrity: sha512-RJJPTTpvFfHcWLkIa2JFWK4XvtSzS0yEWDmunqHXli1h3JlkbcQZXDZdcWxv+JK3Xsl5/UFDPZ0iGm7DAengYw==} + engines: {node: '>=12.0.0'} + protobufjs@8.0.0: resolution: {integrity: sha512-jx6+sE9h/UryaCZhsJWbJtTEy47yXoGNYI4z8ZaRncM0zBKeRqjO2JEcOUYwrYGb1WLhXM1FfMzW3annvFv0rw==} engines: {node: '>=12.0.0'} @@ -5172,10 +5088,6 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} - proxy-agent@6.5.0: - resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} - engines: {node: '>= 14'} - proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -5355,6 +5267,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.8.0: + resolution: {integrity: sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==} + engines: {node: '>=10'} + hasBin: true + send@0.19.2: resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} engines: {node: '>= 0.8.0'} @@ -5444,18 +5361,6 @@ packages: resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} engines: {node: '>=20'} - smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - - socks-proxy-agent@8.0.5: - resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} - engines: {node: '>= 14'} - - socks@2.8.7: - resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - sonic-boom@4.2.1: resolution: {integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==} @@ -5722,6 +5627,9 @@ packages: resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} engines: {node: '>= 0.6'} + typebox@1.1.38: + resolution: {integrity: sha512-pZ0aQPmMmXoUvSbeuWf/Hzsc+avNw/Zd6VeE8CFgkVGWyuHPJvqeJJDeJqLve+K70LvjYIoleGcoJHPT17cWoA==} + typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -6022,9 +5930,6 @@ packages: zod@3.25.75: resolution: {integrity: sha512-OhpzAmVzabPOL6C3A3gpAifqr9MqihV/Msx3gor2b2kviCgcb+HM9SEOpMWwwNp9MRunWnhtAKUoo0AHhjyPPg==} - zod@3.25.76: - resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.3.6: resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} @@ -6034,91 +5939,16 @@ snapshots: dependencies: zod: 4.3.6 - '@anthropic-ai/sdk@0.73.0(zod@4.3.6)': + '@anthropic-ai/sdk@0.91.1(zod@4.3.6)': dependencies: json-schema-to-ts: 3.1.1 optionalDependencies: zod: 4.3.6 - '@apilium/mayros@0.1.1(@napi-rs/canvas@0.1.97)(@types/express@5.0.6)(hono@4.12.7)(node-llama-cpp@3.17.1(typescript@5.9.3))': - dependencies: - '@agentclientprotocol/sdk': 0.14.1(zod@4.3.6) - '@aws-sdk/client-bedrock': 3.1019.0 - '@buape/carbon': 0.0.0-beta-20260216184201(hono@4.12.7)(opusscript@0.0.8)(opusscript@0.0.8) - '@clack/prompts': 1.0.1 - '@discordjs/opus': opusscript@0.0.8 - '@discordjs/voice': 0.19.0(opusscript@0.0.8)(opusscript@0.0.8) - '@grammyjs/runner': 2.0.3(grammy@1.40.0) - '@grammyjs/transformer-throttler': 1.2.1(grammy@1.40.0) - '@homebridge/ciao': 1.3.5 - '@line/bot-sdk': 10.6.0 - '@lydell/node-pty': 1.2.0-beta.3 - '@mariozechner/pi-agent-core': 0.54.0(ws@8.19.0)(zod@4.3.6) - '@mariozechner/pi-ai': 0.54.0(ws@8.19.0)(zod@4.3.6) - '@mariozechner/pi-coding-agent': 0.54.0(ws@8.19.0)(zod@4.3.6) - '@mariozechner/pi-tui': 0.54.0 - '@mozilla/readability': 0.6.0 - '@napi-rs/canvas': 0.1.97 - '@sinclair/typebox': 0.34.48 - '@slack/bolt': 4.6.0(@types/express@5.0.6) - '@slack/web-api': 7.14.1 - '@whiskeysockets/baileys': 7.0.0-rc.9(sharp@0.34.5) - ajv: 8.18.0 - chalk: 5.6.2 - chokidar: 5.0.0 - cli-highlight: 2.1.11 - commander: 14.0.3 - croner: 10.0.1 - discord-api-types: 0.38.40 - dotenv: 17.3.1 - express: 5.2.1 - file-type: 21.3.2 - grammy: 1.40.0 - https-proxy-agent: 7.0.6 - jiti: 2.6.1 - json5: 2.2.3 - jszip: 3.10.1 - linkedom: 0.18.12 - long: 5.3.2 - markdown-it: 14.1.1 - node-edge-tts: 1.2.10 - node-llama-cpp: 3.17.1(typescript@5.9.3) - opusscript: 0.0.8 - osc-progress: 0.3.0 - pdfjs-dist: 5.4.624 - playwright-core: 1.58.2 - qrcode-terminal: 0.12.0 - quickjs-emscripten: 0.31.0 - semver: 7.7.4 - sharp: 0.34.5 - sqlite-vec: 0.1.7-alpha.2 - tar: 7.5.11 - tslog: 4.10.2 - undici: 7.24.2 - ws: 8.19.0 - yaml: 2.8.3 - zod: 4.3.6 - transitivePeerDependencies: - - '@modelcontextprotocol/sdk' - - '@types/express' - - audio-decode - - aws-crt - - bufferutil - - canvas - - debug - - encoding - - ffmpeg-static - - hono - - jimp - - link-preview-js - - node-opus - - supports-color - - utf-8-validate - '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.6 + '@aws-sdk/types': 3.973.13 tslib: 2.8.1 '@aws-crypto/sha256-browser@5.2.0': @@ -6147,57 +5977,22 @@ snapshots: '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/client-bedrock-runtime@3.997.0': + '@aws-sdk/client-bedrock-runtime@3.1048.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.973.25 - '@aws-sdk/credential-provider-node': 3.972.27 - '@aws-sdk/eventstream-handler-node': 3.972.7 - '@aws-sdk/middleware-eventstream': 3.972.4 - '@aws-sdk/middleware-host-header': 3.972.8 - '@aws-sdk/middleware-logger': 3.972.8 - '@aws-sdk/middleware-recursion-detection': 3.972.9 - '@aws-sdk/middleware-user-agent': 3.972.26 - '@aws-sdk/middleware-websocket': 3.972.8 - '@aws-sdk/region-config-resolver': 3.972.10 - '@aws-sdk/token-providers': 3.997.0 - '@aws-sdk/types': 3.973.6 - '@aws-sdk/util-endpoints': 3.996.5 - '@aws-sdk/util-user-agent-browser': 3.972.8 - '@aws-sdk/util-user-agent-node': 3.973.12 - '@smithy/config-resolver': 4.4.13 - '@smithy/core': 3.23.12 - '@smithy/eventstream-serde-browser': 4.2.10 - '@smithy/eventstream-serde-config-resolver': 4.3.10 - '@smithy/eventstream-serde-node': 4.2.10 - '@smithy/fetch-http-handler': 5.3.15 - '@smithy/hash-node': 4.2.12 - '@smithy/invalid-dependency': 4.2.12 - '@smithy/middleware-content-length': 4.2.12 - '@smithy/middleware-endpoint': 4.4.27 - '@smithy/middleware-retry': 4.4.44 - '@smithy/middleware-serde': 4.2.15 - '@smithy/middleware-stack': 4.2.12 - '@smithy/node-config-provider': 4.3.12 - '@smithy/node-http-handler': 4.5.0 - '@smithy/protocol-http': 5.3.12 - '@smithy/smithy-client': 4.12.7 - '@smithy/types': 4.13.1 - '@smithy/url-parser': 4.2.12 - '@smithy/util-base64': 4.3.2 - '@smithy/util-body-length-browser': 4.2.2 - '@smithy/util-body-length-node': 4.2.3 - '@smithy/util-defaults-mode-browser': 4.3.43 - '@smithy/util-defaults-mode-node': 4.2.47 - '@smithy/util-endpoints': 3.3.3 - '@smithy/util-middleware': 4.2.12 - '@smithy/util-retry': 4.2.12 - '@smithy/util-stream': 4.5.15 - '@smithy/util-utf8': 4.2.2 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/credential-provider-node': 3.972.58 + '@aws-sdk/eventstream-handler-node': 3.972.22 + '@aws-sdk/middleware-eventstream': 3.972.18 + '@aws-sdk/middleware-websocket': 3.972.31 + '@aws-sdk/token-providers': 3.1048.0 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/fetch-http-handler': 5.5.2 + '@smithy/node-http-handler': 4.7.3 + '@smithy/types': 4.15.0 tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt '@aws-sdk/client-bedrock@3.1019.0': dependencies: @@ -6260,6 +6055,17 @@ snapshots: '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 + '@aws-sdk/core@3.974.23': + dependencies: + '@aws-sdk/types': 3.973.13 + '@aws-sdk/xml-builder': 3.972.31 + '@aws/lambda-invoke-store': 0.2.4 + '@smithy/core': 3.26.0 + '@smithy/signature-v4': 5.5.2 + '@smithy/types': 4.15.0 + bowser: 2.14.1 + tslib: 2.8.1 + '@aws-sdk/credential-provider-env@3.972.23': dependencies: '@aws-sdk/core': 3.973.25 @@ -6268,6 +6074,14 @@ snapshots: '@smithy/types': 4.13.1 tslib: 2.8.1 + '@aws-sdk/credential-provider-env@3.972.49': + dependencies: + '@aws-sdk/core': 3.974.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.972.25': dependencies: '@aws-sdk/core': 3.973.25 @@ -6281,6 +6095,16 @@ snapshots: '@smithy/util-stream': 4.5.20 tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.972.51': + dependencies: + '@aws-sdk/core': 3.974.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/fetch-http-handler': 5.5.2 + '@smithy/node-http-handler': 4.8.2 + '@smithy/types': 4.15.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-ini@3.972.26': dependencies: '@aws-sdk/core': 3.973.25 @@ -6300,6 +6124,22 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-ini@3.972.56': + dependencies: + '@aws-sdk/core': 3.974.23 + '@aws-sdk/credential-provider-env': 3.972.49 + '@aws-sdk/credential-provider-http': 3.972.51 + '@aws-sdk/credential-provider-login': 3.972.55 + '@aws-sdk/credential-provider-process': 3.972.49 + '@aws-sdk/credential-provider-sso': 3.972.55 + '@aws-sdk/credential-provider-web-identity': 3.972.55 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/credential-provider-imds': 4.4.2 + '@smithy/types': 4.15.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-login@3.972.26': dependencies: '@aws-sdk/core': 3.973.25 @@ -6313,6 +6153,15 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-login@3.972.55': + dependencies: + '@aws-sdk/core': 3.974.23 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-node@3.972.27': dependencies: '@aws-sdk/credential-provider-env': 3.972.23 @@ -6330,6 +6179,20 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-node@3.972.58': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.49 + '@aws-sdk/credential-provider-http': 3.972.51 + '@aws-sdk/credential-provider-ini': 3.972.56 + '@aws-sdk/credential-provider-process': 3.972.49 + '@aws-sdk/credential-provider-sso': 3.972.55 + '@aws-sdk/credential-provider-web-identity': 3.972.55 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/credential-provider-imds': 4.4.2 + '@smithy/types': 4.15.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-process@3.972.23': dependencies: '@aws-sdk/core': 3.973.25 @@ -6339,6 +6202,14 @@ snapshots: '@smithy/types': 4.13.1 tslib: 2.8.1 + '@aws-sdk/credential-provider-process@3.972.49': + dependencies: + '@aws-sdk/core': 3.974.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-sso@3.972.26': dependencies: '@aws-sdk/core': 3.973.25 @@ -6352,6 +6223,16 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-sso@3.972.55': + dependencies: + '@aws-sdk/core': 3.974.23 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/token-providers': 3.1074.0 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-web-identity@3.972.26': dependencies: '@aws-sdk/core': 3.973.25 @@ -6364,18 +6245,27 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/eventstream-handler-node@3.972.7': + '@aws-sdk/credential-provider-web-identity@3.972.55': dependencies: - '@aws-sdk/types': 3.973.6 - '@smithy/eventstream-codec': 4.2.10 - '@smithy/types': 4.13.1 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/middleware-eventstream@3.972.4': + '@aws-sdk/eventstream-handler-node@3.972.22': dependencies: - '@aws-sdk/types': 3.973.6 - '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.13.1 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-eventstream@3.972.18': + dependencies: + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 '@aws-sdk/middleware-host-header@3.972.8': @@ -6410,19 +6300,14 @@ snapshots: '@smithy/util-retry': 4.2.12 tslib: 2.8.1 - '@aws-sdk/middleware-websocket@3.972.8': + '@aws-sdk/middleware-websocket@3.972.31': dependencies: - '@aws-sdk/types': 3.973.6 - '@aws-sdk/util-format-url': 3.972.4 - '@smithy/eventstream-codec': 4.2.10 - '@smithy/eventstream-serde-browser': 4.2.10 - '@smithy/fetch-http-handler': 5.3.15 - '@smithy/protocol-http': 5.3.12 - '@smithy/signature-v4': 5.3.12 - '@smithy/types': 4.13.1 - '@smithy/util-base64': 4.3.2 - '@smithy/util-hex-encoding': 4.2.1 - '@smithy/util-utf8': 4.2.2 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/fetch-http-handler': 5.5.2 + '@smithy/signature-v4': 5.5.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 '@aws-sdk/nested-clients@3.996.16': @@ -6468,6 +6353,19 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/nested-clients@3.997.23': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/signature-v4-multi-region': 3.996.35 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/fetch-http-handler': 5.5.2 + '@smithy/node-http-handler': 4.8.2 + '@smithy/types': 4.15.0 + tslib: 2.8.1 + '@aws-sdk/region-config-resolver@3.972.10': dependencies: '@aws-sdk/types': 3.973.6 @@ -6476,6 +6374,13 @@ snapshots: '@smithy/types': 4.13.1 tslib: 2.8.1 + '@aws-sdk/signature-v4-multi-region@3.996.35': + dependencies: + '@aws-sdk/types': 3.973.13 + '@smithy/signature-v4': 5.5.2 + '@smithy/types': 4.15.0 + tslib: 2.8.1 + '@aws-sdk/token-providers@3.1019.0': dependencies: '@aws-sdk/core': 3.973.25 @@ -6488,17 +6393,28 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/token-providers@3.997.0': + '@aws-sdk/token-providers@3.1048.0': dependencies: - '@aws-sdk/core': 3.973.25 - '@aws-sdk/nested-clients': 3.996.16 - '@aws-sdk/types': 3.973.6 - '@smithy/property-provider': 4.2.12 - '@smithy/shared-ini-file-loader': 4.4.7 - '@smithy/types': 4.13.1 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.1074.0': + dependencies: + '@aws-sdk/core': 3.974.23 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 + tslib: 2.8.1 + + '@aws-sdk/types@3.973.13': + dependencies: + '@smithy/types': 4.15.0 tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt '@aws-sdk/types@3.973.6': dependencies: @@ -6513,13 +6429,6 @@ snapshots: '@smithy/util-endpoints': 3.3.3 tslib: 2.8.1 - '@aws-sdk/util-format-url@3.972.4': - dependencies: - '@aws-sdk/types': 3.973.6 - '@smithy/querystring-builder': 4.2.12 - '@smithy/types': 4.13.1 - tslib: 2.8.1 - '@aws-sdk/util-locate-window@3.965.4': dependencies: tslib: 2.8.1 @@ -6546,6 +6455,11 @@ snapshots: fast-xml-parser: 5.5.9 tslib: 2.8.1 + '@aws-sdk/xml-builder@3.972.31': + dependencies: + '@smithy/types': 4.15.0 + tslib: 2.8.1 + '@aws/lambda-invoke-store@0.2.4': {} '@azure/abort-controller@2.1.2': @@ -6617,13 +6531,13 @@ snapshots: '@borewit/text-codec@0.2.2': {} - '@buape/carbon@0.0.0-beta-20260216184201(hono@4.12.7)(opusscript@0.0.8)(opusscript@0.0.8)': + '@buape/carbon@0.0.0-beta-20260216184201(hono@4.12.7)(opusscript@0.0.8)': dependencies: '@types/node': 25.3.0 discord-api-types: 0.38.37 optionalDependencies: '@cloudflare/workers-types': 4.20260120.0 - '@discordjs/voice': 0.19.0(opusscript@0.0.8)(opusscript@0.0.8) + '@discordjs/voice': 0.19.0(opusscript@0.0.8) '@hono/node-server': 1.19.10(hono@4.12.7) '@types/bun': 1.3.9 '@types/ws': 8.18.1 @@ -6748,11 +6662,11 @@ snapshots: dependencies: tslib: 2.8.1 - '@discordjs/voice@0.19.0(opusscript@0.0.8)(opusscript@0.0.8)': + '@discordjs/voice@0.19.0(opusscript@0.0.8)': dependencies: '@types/ws': 8.18.1 discord-api-types: 0.38.40 - prism-media: 1.3.5(opusscript@0.0.8)(opusscript@0.0.8) + prism-media: 1.3.5(opusscript@0.0.8) tslib: 2.8.1 ws: 8.19.0 transitivePeerDependencies: @@ -6763,6 +6677,76 @@ snapshots: - opusscript - utf-8-validate + '@earendil-works/pi-agent-core@0.80.2(ws@8.19.0)(zod@4.3.6)': + dependencies: + '@earendil-works/pi-ai': 0.80.2(ws@8.19.0)(zod@4.3.6) + ignore: 7.0.5 + typebox: 1.1.38 + yaml: 2.8.3 + transitivePeerDependencies: + - '@modelcontextprotocol/sdk' + - bufferutil + - supports-color + - utf-8-validate + - ws + - zod + + '@earendil-works/pi-ai@0.80.2(ws@8.19.0)(zod@4.3.6)': + dependencies: + '@anthropic-ai/sdk': 0.91.1(zod@4.3.6) + '@aws-sdk/client-bedrock-runtime': 3.1048.0 + '@google/genai': 1.52.0 + '@mistralai/mistralai': 2.2.6(@opentelemetry/api@1.9.0) + '@opentelemetry/api': 1.9.0 + '@smithy/node-http-handler': 4.7.3 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + openai: 6.26.0(ws@8.19.0)(zod@4.3.6) + partial-json: 0.1.7 + typebox: 1.1.38 + transitivePeerDependencies: + - '@modelcontextprotocol/sdk' + - bufferutil + - supports-color + - utf-8-validate + - ws + - zod + + '@earendil-works/pi-coding-agent@0.80.2(ws@8.19.0)(zod@4.3.6)': + dependencies: + '@earendil-works/pi-agent-core': 0.80.2(ws@8.19.0)(zod@4.3.6) + '@earendil-works/pi-ai': 0.80.2(ws@8.19.0)(zod@4.3.6) + '@earendil-works/pi-tui': 0.80.2 + '@silvia-odwyer/photon-node': 0.3.4 + chalk: 5.6.2 + cross-spawn: 7.0.6 + diff: 8.0.4 + glob: 13.0.6 + highlight.js: 10.7.3 + hosted-git-info: 9.0.3 + ignore: 7.0.5 + jiti: 2.7.0 + minimatch: 10.2.3 + proper-lockfile: 4.1.2 + semver: 7.8.0 + typebox: 1.1.38 + undici: 7.24.2 + yaml: 2.8.3 + optionalDependencies: + '@mariozechner/clipboard': 0.3.9 + transitivePeerDependencies: + - '@modelcontextprotocol/sdk' + - bufferutil + - supports-color + - utf-8-validate + - ws + - zod + + '@earendil-works/pi-tui@0.80.2': + dependencies: + get-east-asian-width: 1.6.0 + marked: 18.0.5 + '@emnapi/core@1.8.1': dependencies: '@emnapi/wasi-threads': 1.1.0 @@ -6935,7 +6919,7 @@ snapshots: '@esbuild/win32-x64@0.27.3': optional: true - '@google/genai@1.42.0': + '@google/genai@1.52.0': dependencies: google-auth-library: 10.6.1 p-retry: 4.6.2 @@ -7249,129 +7233,50 @@ snapshots: '@lydell/node-pty-win32-arm64': 1.2.0-beta.3 '@lydell/node-pty-win32-x64': 1.2.0-beta.3 - '@mariozechner/clipboard-darwin-arm64@0.3.2': + '@mariozechner/clipboard-darwin-arm64@0.3.9': optional: true - '@mariozechner/clipboard-darwin-universal@0.3.2': + '@mariozechner/clipboard-darwin-universal@0.3.9': optional: true - '@mariozechner/clipboard-darwin-x64@0.3.2': + '@mariozechner/clipboard-darwin-x64@0.3.9': optional: true - '@mariozechner/clipboard-linux-arm64-gnu@0.3.2': + '@mariozechner/clipboard-linux-arm64-gnu@0.3.9': optional: true - '@mariozechner/clipboard-linux-arm64-musl@0.3.2': + '@mariozechner/clipboard-linux-arm64-musl@0.3.9': optional: true - '@mariozechner/clipboard-linux-riscv64-gnu@0.3.2': + '@mariozechner/clipboard-linux-riscv64-gnu@0.3.9': optional: true - '@mariozechner/clipboard-linux-x64-gnu@0.3.2': + '@mariozechner/clipboard-linux-x64-gnu@0.3.9': optional: true - '@mariozechner/clipboard-linux-x64-musl@0.3.2': + '@mariozechner/clipboard-linux-x64-musl@0.3.9': optional: true - '@mariozechner/clipboard-win32-arm64-msvc@0.3.2': + '@mariozechner/clipboard-win32-arm64-msvc@0.3.9': optional: true - '@mariozechner/clipboard-win32-x64-msvc@0.3.2': + '@mariozechner/clipboard-win32-x64-msvc@0.3.9': optional: true - '@mariozechner/clipboard@0.3.2': + '@mariozechner/clipboard@0.3.9': optionalDependencies: - '@mariozechner/clipboard-darwin-arm64': 0.3.2 - '@mariozechner/clipboard-darwin-universal': 0.3.2 - '@mariozechner/clipboard-darwin-x64': 0.3.2 - '@mariozechner/clipboard-linux-arm64-gnu': 0.3.2 - '@mariozechner/clipboard-linux-arm64-musl': 0.3.2 - '@mariozechner/clipboard-linux-riscv64-gnu': 0.3.2 - '@mariozechner/clipboard-linux-x64-gnu': 0.3.2 - '@mariozechner/clipboard-linux-x64-musl': 0.3.2 - '@mariozechner/clipboard-win32-arm64-msvc': 0.3.2 - '@mariozechner/clipboard-win32-x64-msvc': 0.3.2 + '@mariozechner/clipboard-darwin-arm64': 0.3.9 + '@mariozechner/clipboard-darwin-universal': 0.3.9 + '@mariozechner/clipboard-darwin-x64': 0.3.9 + '@mariozechner/clipboard-linux-arm64-gnu': 0.3.9 + '@mariozechner/clipboard-linux-arm64-musl': 0.3.9 + '@mariozechner/clipboard-linux-riscv64-gnu': 0.3.9 + '@mariozechner/clipboard-linux-x64-gnu': 0.3.9 + '@mariozechner/clipboard-linux-x64-musl': 0.3.9 + '@mariozechner/clipboard-win32-arm64-msvc': 0.3.9 + '@mariozechner/clipboard-win32-x64-msvc': 0.3.9 optional: true - '@mariozechner/jiti@2.6.5': - dependencies: - std-env: 3.10.0 - yoctocolors: 2.1.2 - - '@mariozechner/pi-agent-core@0.54.0(ws@8.19.0)(zod@4.3.6)': - dependencies: - '@mariozechner/pi-ai': 0.54.0(ws@8.19.0)(zod@4.3.6) - transitivePeerDependencies: - - '@modelcontextprotocol/sdk' - - aws-crt - - bufferutil - - supports-color - - utf-8-validate - - ws - - zod - - '@mariozechner/pi-ai@0.54.0(ws@8.19.0)(zod@4.3.6)': - dependencies: - '@anthropic-ai/sdk': 0.73.0(zod@4.3.6) - '@aws-sdk/client-bedrock-runtime': 3.997.0 - '@google/genai': 1.42.0 - '@mistralai/mistralai': 1.10.0 - '@sinclair/typebox': 0.34.48 - ajv: 8.18.0 - ajv-formats: 3.0.1(ajv@8.18.0) - chalk: 5.6.2 - openai: 6.10.0(ws@8.19.0)(zod@4.3.6) - partial-json: 0.1.7 - proxy-agent: 6.5.0 - undici: 7.24.2 - zod-to-json-schema: 3.25.1(zod@4.3.6) - transitivePeerDependencies: - - '@modelcontextprotocol/sdk' - - aws-crt - - bufferutil - - supports-color - - utf-8-validate - - ws - - zod - - '@mariozechner/pi-coding-agent@0.54.0(ws@8.19.0)(zod@4.3.6)': - dependencies: - '@mariozechner/jiti': 2.6.5 - '@mariozechner/pi-agent-core': 0.54.0(ws@8.19.0)(zod@4.3.6) - '@mariozechner/pi-ai': 0.54.0(ws@8.19.0)(zod@4.3.6) - '@mariozechner/pi-tui': 0.54.0 - '@silvia-odwyer/photon-node': 0.3.4 - chalk: 5.6.2 - cli-highlight: 2.1.11 - diff: 8.0.3 - file-type: 21.3.2 - glob: 13.0.6 - hosted-git-info: 9.0.2 - ignore: 7.0.5 - marked: 15.0.12 - minimatch: 10.2.3 - proper-lockfile: 4.1.2 - yaml: 2.8.3 - optionalDependencies: - '@mariozechner/clipboard': 0.3.2 - transitivePeerDependencies: - - '@modelcontextprotocol/sdk' - - aws-crt - - bufferutil - - supports-color - - utf-8-validate - - ws - - zod - - '@mariozechner/pi-tui@0.54.0': - dependencies: - '@types/mime-types': 2.1.4 - chalk: 5.6.2 - get-east-asian-width: 1.5.0 - koffi: 2.15.1 - marked: 15.0.12 - mime-types: 3.0.2 - '@matrix-org/matrix-sdk-crypto-nodejs@0.4.0': dependencies: https-proxy-agent: 7.0.6 @@ -7401,79 +7306,53 @@ snapshots: - debug - supports-color - '@mistralai/mistralai@1.10.0': + '@mistralai/mistralai@2.2.6(@opentelemetry/api@1.9.0)': dependencies: - zod: 3.25.76 - zod-to-json-schema: 3.25.1(zod@3.25.76) + '@opentelemetry/semantic-conventions': 1.41.1 + ws: 8.19.0 + zod: 4.3.6 + zod-to-json-schema: 3.25.1(zod@4.3.6) + optionalDependencies: + '@opentelemetry/api': 1.9.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate '@mozilla/readability@0.6.0': {} '@napi-rs/canvas-android-arm64@0.1.95': optional: true - '@napi-rs/canvas-android-arm64@0.1.97': - optional: true - '@napi-rs/canvas-darwin-arm64@0.1.95': optional: true - '@napi-rs/canvas-darwin-arm64@0.1.97': - optional: true - '@napi-rs/canvas-darwin-x64@0.1.95': optional: true - '@napi-rs/canvas-darwin-x64@0.1.97': - optional: true - '@napi-rs/canvas-linux-arm-gnueabihf@0.1.95': optional: true - '@napi-rs/canvas-linux-arm-gnueabihf@0.1.97': - optional: true - '@napi-rs/canvas-linux-arm64-gnu@0.1.95': optional: true - '@napi-rs/canvas-linux-arm64-gnu@0.1.97': - optional: true - '@napi-rs/canvas-linux-arm64-musl@0.1.95': optional: true - '@napi-rs/canvas-linux-arm64-musl@0.1.97': - optional: true - '@napi-rs/canvas-linux-riscv64-gnu@0.1.95': optional: true - '@napi-rs/canvas-linux-riscv64-gnu@0.1.97': - optional: true - '@napi-rs/canvas-linux-x64-gnu@0.1.95': optional: true - '@napi-rs/canvas-linux-x64-gnu@0.1.97': - optional: true - '@napi-rs/canvas-linux-x64-musl@0.1.95': optional: true - '@napi-rs/canvas-linux-x64-musl@0.1.97': - optional: true - '@napi-rs/canvas-win32-arm64-msvc@0.1.95': optional: true - '@napi-rs/canvas-win32-arm64-msvc@0.1.97': - optional: true - '@napi-rs/canvas-win32-x64-msvc@0.1.95': optional: true - '@napi-rs/canvas-win32-x64-msvc@0.1.97': - optional: true - '@napi-rs/canvas@0.1.95': optionalDependencies: '@napi-rs/canvas-android-arm64': 0.1.95 @@ -7488,20 +7367,6 @@ snapshots: '@napi-rs/canvas-win32-arm64-msvc': 0.1.95 '@napi-rs/canvas-win32-x64-msvc': 0.1.95 - '@napi-rs/canvas@0.1.97': - optionalDependencies: - '@napi-rs/canvas-android-arm64': 0.1.97 - '@napi-rs/canvas-darwin-arm64': 0.1.97 - '@napi-rs/canvas-darwin-x64': 0.1.97 - '@napi-rs/canvas-linux-arm-gnueabihf': 0.1.97 - '@napi-rs/canvas-linux-arm64-gnu': 0.1.97 - '@napi-rs/canvas-linux-arm64-musl': 0.1.97 - '@napi-rs/canvas-linux-riscv64-gnu': 0.1.97 - '@napi-rs/canvas-linux-x64-gnu': 0.1.97 - '@napi-rs/canvas-linux-x64-musl': 0.1.97 - '@napi-rs/canvas-win32-arm64-msvc': 0.1.97 - '@napi-rs/canvas-win32-x64-msvc': 0.1.97 - '@napi-rs/wasm-runtime@1.1.1': dependencies: '@emnapi/core': 1.8.1 @@ -7806,6 +7671,8 @@ snapshots: '@opentelemetry/semantic-conventions@1.39.0': {} + '@opentelemetry/semantic-conventions@1.41.1': {} + '@oxc-project/types@0.112.0': {} '@oxfmt/binding-android-arm-eabi@0.34.0': @@ -7953,13 +7820,21 @@ snapshots: '@protobufjs/codegen@2.0.4': {} + '@protobufjs/codegen@2.0.5': {} + '@protobufjs/eventemitter@1.1.0': {} + '@protobufjs/eventemitter@1.1.1': {} + '@protobufjs/fetch@1.1.0': dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/inquire': 1.1.0 + '@protobufjs/fetch@1.1.1': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/float@1.0.2': {} '@protobufjs/inquire@1.1.0': {} @@ -7970,6 +7845,8 @@ snapshots: '@protobufjs/utf8@1.1.0': {} + '@protobufjs/utf8@1.1.1': {} + '@quansync/fs@1.0.0': dependencies: quansync: 1.0.0 @@ -8242,42 +8119,24 @@ snapshots: '@smithy/uuid': 1.1.2 tslib: 2.8.1 - '@smithy/credential-provider-imds@4.2.12': - dependencies: - '@smithy/node-config-provider': 4.3.12 - '@smithy/property-provider': 4.2.12 - '@smithy/types': 4.13.1 - '@smithy/url-parser': 4.2.12 - tslib: 2.8.1 - - '@smithy/eventstream-codec@4.2.10': + '@smithy/core@3.26.0': dependencies: '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 4.13.1 - '@smithy/util-hex-encoding': 4.2.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@smithy/eventstream-serde-browser@4.2.10': - dependencies: - '@smithy/eventstream-serde-universal': 4.2.10 - '@smithy/types': 4.13.1 - tslib: 2.8.1 - - '@smithy/eventstream-serde-config-resolver@4.3.10': - dependencies: - '@smithy/types': 4.13.1 - tslib: 2.8.1 - - '@smithy/eventstream-serde-node@4.2.10': + '@smithy/credential-provider-imds@4.2.12': dependencies: - '@smithy/eventstream-serde-universal': 4.2.10 + '@smithy/node-config-provider': 4.3.12 + '@smithy/property-provider': 4.2.12 '@smithy/types': 4.13.1 + '@smithy/url-parser': 4.2.12 tslib: 2.8.1 - '@smithy/eventstream-serde-universal@4.2.10': + '@smithy/credential-provider-imds@4.4.2': dependencies: - '@smithy/eventstream-codec': 4.2.10 - '@smithy/types': 4.13.1 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 '@smithy/fetch-http-handler@5.3.15': @@ -8288,6 +8147,12 @@ snapshots: '@smithy/util-base64': 4.3.2 tslib: 2.8.1 + '@smithy/fetch-http-handler@5.5.2': + dependencies: + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 + tslib: 2.8.1 + '@smithy/hash-node@4.2.12': dependencies: '@smithy/types': 4.13.1 @@ -8364,6 +8229,18 @@ snapshots: '@smithy/types': 4.13.1 tslib: 2.8.1 + '@smithy/node-http-handler@4.7.3': + dependencies: + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.8.2': + dependencies: + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 + tslib: 2.8.1 + '@smithy/property-provider@4.2.12': dependencies: '@smithy/types': 4.13.1 @@ -8405,6 +8282,12 @@ snapshots: '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 + '@smithy/signature-v4@5.5.2': + dependencies: + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 + tslib: 2.8.1 + '@smithy/smithy-client@4.12.7': dependencies: '@smithy/core': 3.23.12 @@ -8419,6 +8302,10 @@ snapshots: dependencies: tslib: 2.8.1 + '@smithy/types@4.15.0': + dependencies: + tslib: 2.8.1 + '@smithy/url-parser@4.2.12': dependencies: '@smithy/querystring-parser': 4.2.12 @@ -8476,10 +8363,6 @@ snapshots: '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/util-hex-encoding@4.2.1': - dependencies: - tslib: 2.8.1 - '@smithy/util-hex-encoding@4.2.2': dependencies: tslib: 2.8.1 @@ -8495,17 +8378,6 @@ snapshots: '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/util-stream@4.5.15': - dependencies: - '@smithy/fetch-http-handler': 5.3.15 - '@smithy/node-http-handler': 4.5.0 - '@smithy/types': 4.13.1 - '@smithy/util-base64': 4.3.2 - '@smithy/util-buffer-from': 4.2.2 - '@smithy/util-hex-encoding': 4.2.1 - '@smithy/util-utf8': 4.2.2 - tslib: 2.8.1 - '@smithy/util-stream@4.5.20': dependencies: '@smithy/fetch-http-handler': 5.3.15 @@ -8552,8 +8424,6 @@ snapshots: '@tokenizer/token@0.3.0': {} - '@tootallnate/quickjs-emscripten@0.23.0': {} - '@twurple/api-call@8.0.3': dependencies: '@d-fischer/shared-utils': 3.6.4 @@ -8677,8 +8547,6 @@ snapshots: '@types/linkify-it@5.0.0': {} - '@types/long@4.0.2': {} - '@types/markdown-it@14.1.2': dependencies: '@types/linkify-it': 5.0.0 @@ -8686,14 +8554,10 @@ snapshots: '@types/mdurl@2.0.0': {} - '@types/mime-types@2.1.4': {} - '@types/mime@1.3.5': {} '@types/ms@2.1.0': {} - '@types/node@10.17.60': {} - '@types/node@20.19.37': dependencies: undici-types: 6.21.0 @@ -8831,6 +8695,20 @@ snapshots: - msw - utf-8-validate - vite + optional: true + + '@vitest/browser-playwright@4.0.18(playwright@1.58.2)(vite@7.3.1(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.0.18)': + dependencies: + '@vitest/browser': 4.0.18(vite@7.3.1(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.0.18) + '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + playwright: 1.58.2 + tinyrainbow: 3.0.3 + vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.0)(@vitest/browser-playwright@4.0.18)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite '@vitest/browser@4.0.18(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.0.18)': dependencies: @@ -8848,6 +8726,24 @@ snapshots: - msw - utf-8-validate - vite + optional: true + + '@vitest/browser@4.0.18(vite@7.3.1(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.0.18)': + dependencies: + '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/utils': 4.0.18 + magic-string: 0.30.21 + pixelmatch: 7.1.0 + pngjs: 7.0.0 + sirv: 3.0.2 + tinyrainbow: 3.0.3 + vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.0)(@vitest/browser-playwright@4.0.18)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + ws: 8.19.0 + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite '@vitest/coverage-v8@4.0.18(@vitest/browser@4.0.18(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.0.18))(vitest@4.0.18)': dependencies: @@ -8882,13 +8778,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@3.2.4(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/mocker@3.2.4(vite@7.3.1(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 7.3.1(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: @@ -8898,6 +8794,14 @@ snapshots: optionalDependencies: vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3) + '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))': + dependencies: + '@vitest/spy': 4.0.18 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 7.3.1(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + '@vitest/pretty-format@3.2.4': dependencies: tinyrainbow: 2.0.0 @@ -8951,7 +8855,7 @@ snapshots: '@cacheable/node-cache': 1.7.6 '@hapi/boom': 9.1.4 async-mutex: 0.5.0 - libsignal: '@whiskeysockets/libsignal-node@https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67' + libsignal: https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/bcea72df9ec34d9d9140ab30619cf479c7c144c7 lru-cache: 11.2.6 music-metadata: 11.12.3 p-queue: 9.1.0 @@ -8964,11 +8868,6 @@ snapshots: - supports-color - utf-8-validate - '@whiskeysockets/libsignal-node@https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67': - dependencies: - curve25519-js: 0.0.4 - protobufjs: 6.8.8 - abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -8991,10 +8890,6 @@ snapshots: agent-base@7.1.4: {} - ajv-formats@3.0.1(ajv@8.18.0): - optionalDependencies: - ajv: 8.18.0 - ajv@8.18.0: dependencies: fast-deep-equal: 3.1.3 @@ -9054,10 +8949,6 @@ snapshots: estree-walker: 3.0.3 pathe: 2.0.3 - ast-types@0.13.4: - dependencies: - tslib: 2.8.1 - ast-v8-to-istanbul@0.3.11: dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -9098,8 +8989,6 @@ snapshots: dependencies: safe-buffer: 5.1.2 - basic-ftp@5.2.0: {} - bcrypt-pbkdf@1.0.2: dependencies: tweetnacl: 0.14.5 @@ -9340,8 +9229,6 @@ snapshots: data-uri-to-buffer@4.0.1: {} - data-uri-to-buffer@6.0.2: {} - debug@2.6.9: dependencies: ms: 2.0.0 @@ -9358,12 +9245,6 @@ snapshots: defu@6.1.4: {} - degenerator@5.0.1: - dependencies: - ast-types: 0.13.4 - escodegen: 2.1.0 - esprima: 4.0.1 - delayed-stream@1.0.0: {} depd@2.0.0: {} @@ -9372,7 +9253,7 @@ snapshots: detect-libc@2.1.2: {} - diff@8.0.3: {} + diff@8.0.4: {} discord-api-types@0.38.37: {} @@ -9520,24 +9401,10 @@ snapshots: escape-string-regexp@4.0.0: {} - escodegen@2.1.0: - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - - esprima@4.0.1: {} - - estraverse@5.3.0: {} - estree-walker@3.0.3: dependencies: '@types/estree': 1.0.8 - esutils@2.0.3: {} - etag@1.8.1: {} event-target-shim@5.0.1: {} @@ -9767,6 +9634,8 @@ snapshots: get-east-asian-width@1.5.0: {} + get-east-asian-width@1.6.0: {} + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -9789,14 +9658,6 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - get-uri@6.0.5: - dependencies: - basic-ftp: 5.2.0 - data-uri-to-buffer: 6.0.2 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - getpass@0.1.7: dependencies: assert-plus: 1.0.0 @@ -9880,7 +9741,7 @@ snapshots: hookified@1.15.1: {} - hosted-git-info@9.0.2: + hosted-git-info@9.0.3: dependencies: lru-cache: 11.2.6 @@ -9967,8 +9828,6 @@ snapshots: ini@1.3.8: {} - ip-address@10.1.0: {} - ipaddr.js@1.9.1: {} ipull@3.9.5: @@ -10067,6 +9926,8 @@ snapshots: jiti@2.6.1: {} + jiti@2.7.0: {} + jose@4.15.9: {} js-tokens@10.0.0: {} @@ -10156,10 +10017,13 @@ snapshots: klona@2.0.6: {} - koffi@2.15.1: {} - leac@0.6.0: {} + libsignal@https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/bcea72df9ec34d9d9140ab30619cf479c7c144c7: + dependencies: + curve25519-js: 0.0.4 + protobufjs: 7.6.4 + lie@3.3.0: dependencies: immediate: 3.0.6 @@ -10231,8 +10095,6 @@ snapshots: is-unicode-supported: 2.1.0 yoctocolors: 2.1.2 - long@4.0.0: {} - long@5.3.2: {} loupe@3.2.1: {} @@ -10257,8 +10119,6 @@ snapshots: dependencies: yallist: 4.0.0 - lru-cache@7.18.3: {} - lru-memoizer@2.3.0: dependencies: lodash.clonedeep: 4.5.0 @@ -10287,10 +10147,10 @@ snapshots: punycode.js: 2.3.1 uc.micro: 2.1.0 - marked@15.0.12: {} - marked@17.0.3: {} + marked@18.0.5: {} + math-intrinsics@1.1.0: {} mdurl@2.0.0: {} @@ -10391,8 +10251,6 @@ snapshots: negotiator@1.0.0: {} - netmask@2.0.2: {} - node-addon-api@8.7.0: {} node-api-headers@1.8.0: {} @@ -10518,12 +10376,12 @@ snapshots: dependencies: mimic-function: 5.0.1 - openai@6.10.0(ws@8.19.0)(zod@4.3.6): + openai@6.25.0(ws@8.19.0)(zod@4.3.6): optionalDependencies: ws: 8.19.0 zod: 4.3.6 - openai@6.25.0(ws@8.19.0)(zod@4.3.6): + openai@6.26.0(ws@8.19.0)(zod@4.3.6): optionalDependencies: ws: 8.19.0 zod: 4.3.6 @@ -10622,24 +10480,6 @@ snapshots: p-timeout@7.0.1: {} - pac-proxy-agent@7.2.0: - dependencies: - '@tootallnate/quickjs-emscripten': 0.23.0 - agent-base: 7.1.4 - debug: 4.4.3 - get-uri: 6.0.5 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - pac-resolver: 7.0.1 - socks-proxy-agent: 8.0.5 - transitivePeerDependencies: - - supports-color - - pac-resolver@7.0.1: - dependencies: - degenerator: 5.0.1 - netmask: 2.0.2 - package-json-from-dist@1.0.1: {} pako@1.0.11: {} @@ -10754,9 +10594,8 @@ snapshots: dependencies: parse-ms: 4.0.0 - prism-media@1.3.5(opusscript@0.0.8)(opusscript@0.0.8): + prism-media@1.3.5(opusscript@0.0.8): optionalDependencies: - '@discordjs/opus': opusscript@0.0.8 opusscript: 0.0.8 process-nextick-args@2.0.1: {} @@ -10769,7 +10608,7 @@ snapshots: retry: 0.12.0 signal-exit: 3.0.7 - protobufjs@6.8.8: + protobufjs@7.5.4: dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 @@ -10781,22 +10620,20 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/long': 4.0.2 - '@types/node': 10.17.60 - long: 4.0.0 + '@types/node': 25.3.0 + long: 5.3.2 - protobufjs@7.5.4: + protobufjs@7.6.4: dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 + '@protobufjs/codegen': 2.0.5 + '@protobufjs/eventemitter': 1.1.1 + '@protobufjs/fetch': 1.1.1 '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 + '@protobufjs/utf8': 1.1.1 '@types/node': 25.3.0 long: 5.3.2 @@ -10820,19 +10657,6 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 - proxy-agent@6.5.0: - dependencies: - agent-base: 7.1.4 - debug: 4.4.3 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - lru-cache: 7.18.3 - pac-proxy-agent: 7.2.0 - proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.5 - transitivePeerDependencies: - - supports-color - proxy-from-env@1.1.0: {} psl@1.15.0: @@ -11052,6 +10876,8 @@ snapshots: semver@7.7.4: {} + semver@7.8.0: {} + send@0.19.2: dependencies: debug: 2.6.9 @@ -11213,21 +11039,6 @@ snapshots: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 - smart-buffer@4.2.0: {} - - socks-proxy-agent@8.0.5: - dependencies: - agent-base: 7.1.4 - debug: 4.4.3 - socks: 2.8.7 - transitivePeerDependencies: - - supports-color - - socks@2.8.7: - dependencies: - ip-address: 10.1.0 - smart-buffer: 4.2.0 - sonic-boom@4.2.1: dependencies: atomic-sleep: 1.0.0 @@ -11486,6 +11297,8 @@ snapshots: media-typer: 1.1.0 mime-types: 3.0.2 + typebox@1.1.38: {} + typescript@5.9.3: {} typical@4.0.0: {} @@ -11546,13 +11359,13 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite-node@3.2.4(@types/node@25.3.0)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3): + vite-node@3.2.4(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 7.3.1(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - '@types/node' - jiti @@ -11582,11 +11395,26 @@ snapshots: tsx: 4.21.0 yaml: 2.8.3 - vitest@3.2.4(@types/node@25.3.0)(@vitest/browser@4.0.18(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.0.18))(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3): + vite@7.3.1(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3): + dependencies: + esbuild: 0.27.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.6 + rollup: 4.59.0 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 25.3.0 + fsevents: 2.3.3 + jiti: 2.7.0 + tsx: 4.21.0 + yaml: 2.8.3 + + vitest@3.2.4(@types/node@25.3.0)(@vitest/browser@4.0.18(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.0.18))(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -11604,8 +11432,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3) - vite-node: 3.2.4(@types/node@25.3.0)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 7.3.1(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + vite-node: 3.2.4(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 25.3.0 @@ -11663,6 +11491,45 @@ snapshots: - tsx - yaml + vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.0)(@vitest/browser-playwright@4.0.18)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3): + dependencies: + '@vitest/expect': 4.0.18 + '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/pretty-format': 4.0.18 + '@vitest/runner': 4.0.18 + '@vitest/snapshot': 4.0.18 + '@vitest/spy': 4.0.18 + '@vitest/utils': 4.0.18 + es-module-lexer: 1.7.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 3.10.0 + tinybench: 2.9.0 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tinyrainbow: 3.0.3 + vite: 7.3.1(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + why-is-node-running: 2.3.0 + optionalDependencies: + '@opentelemetry/api': 1.9.0 + '@types/node': 25.3.0 + '@vitest/browser-playwright': 4.0.18(playwright@1.58.2)(vite@7.3.1(@types/node@25.3.0)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.0.18) + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - yaml + web-streams-polyfill@3.3.3: {} webidl-conversions@3.0.1: {} @@ -11739,16 +11606,10 @@ snapshots: yoctocolors@2.1.2: {} - zod-to-json-schema@3.25.1(zod@3.25.76): - dependencies: - zod: 3.25.76 - zod-to-json-schema@3.25.1(zod@4.3.6): dependencies: zod: 4.3.6 zod@3.25.75: {} - zod@3.25.76: {} - zod@4.3.6: {} diff --git a/scripts/bench-model.ts b/scripts/bench-model.ts index f1698737..b5d42dd8 100644 --- a/scripts/bench-model.ts +++ b/scripts/bench-model.ts @@ -1,4 +1,4 @@ -import { completeSimple, getModel, type Model } from "@mariozechner/pi-ai"; +import { completeSimple, getModel, type Model } from "@earendil-works/pi-ai"; type Usage = { input?: number; diff --git a/scripts/package-mac-app.sh b/scripts/package-mac-app.sh index fa422c8e..4188048d 100755 --- a/scripts/package-mac-app.sh +++ b/scripts/package-mac-app.sh @@ -208,7 +208,7 @@ rm -rf "$APP_ROOT/Contents/Resources/DeviceModels" cp -R "$ROOT_DIR/apps/macos/Sources/Mayros/Resources/DeviceModels" "$APP_ROOT/Contents/Resources/DeviceModels" echo "📦 Copying model catalog" -MODEL_CATALOG_SRC="$ROOT_DIR/node_modules/@mariozechner/pi-ai/dist/models.generated.js" +MODEL_CATALOG_SRC="$ROOT_DIR/node_modules/@earendil-works/pi-ai/dist/models.generated.js" MODEL_CATALOG_DEST="$APP_ROOT/Contents/Resources/models.generated.js" if [ -f "$MODEL_CATALOG_SRC" ]; then cp "$MODEL_CATALOG_SRC" "$MODEL_CATALOG_DEST" diff --git a/skills/coding-agent/SKILL.md b/skills/coding-agent/SKILL.md index d7894afc..36effceb 100644 --- a/skills/coding-agent/SKILL.md +++ b/skills/coding-agent/SKILL.md @@ -176,7 +176,7 @@ bash pty:true workdir:~/project command:"opencode run 'Your task'" ## Pi Coding Agent ```bash -# Install: npm install -g @mariozechner/pi-coding-agent +# Install: npm install -g @earendil-works/pi-coding-agent bash pty:true workdir:~/project command:"pi 'Your task'" # Non-interactive mode (PTY still recommended) diff --git a/src/agents/anthropic-payload-log.ts b/src/agents/anthropic-payload-log.ts index e663cad1..ff05fcfc 100644 --- a/src/agents/anthropic-payload-log.ts +++ b/src/agents/anthropic-payload-log.ts @@ -1,7 +1,7 @@ import crypto from "node:crypto"; import path from "node:path"; -import type { AgentMessage, StreamFn } from "@mariozechner/pi-agent-core"; -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { AgentMessage, StreamFn } from "@earendil-works/pi-agent-core"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { resolveStateDir } from "../config/paths.js"; import { createSubsystemLogger } from "../logging/subsystem.js"; import { resolveUserPath } from "../utils.js"; @@ -134,7 +134,7 @@ export function createAnthropicPayloadLogger(params: { if (!isAnthropicModel(model)) { return streamFn(model, context, options); } - const nextOnPayload = (payload: unknown) => { + const nextOnPayload: NonNullable["onPayload"] = (payload, payloadModel) => { record({ ...base, ts: new Date().toISOString(), @@ -142,7 +142,7 @@ export function createAnthropicPayloadLogger(params: { payload, payloadDigest: digest(payload), }); - options?.onPayload?.(payload); + return options?.onPayload?.(payload, payloadModel); }; return streamFn(model, context, { ...options, diff --git a/src/agents/anthropic.setup-token.live.test.ts b/src/agents/anthropic.setup-token.live.test.ts index bfd211c0..ee0e046e 100644 --- a/src/agents/anthropic.setup-token.live.test.ts +++ b/src/agents/anthropic.setup-token.live.test.ts @@ -2,7 +2,8 @@ import { randomUUID } from "node:crypto"; import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import { type Api, completeSimple, type Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; +import { completeSimple } from "@earendil-works/pi-ai/compat"; import { describe, expect, it } from "vitest"; import { ANTHROPIC_SETUP_TOKEN_PREFIX, diff --git a/src/agents/apply-patch.ts b/src/agents/apply-patch.ts index ef756b37..818df6dc 100644 --- a/src/agents/apply-patch.ts +++ b/src/agents/apply-patch.ts @@ -1,6 +1,6 @@ import fs from "node:fs/promises"; import path from "node:path"; -import type { AgentTool } from "@mariozechner/pi-agent-core"; +import type { AgentTool } from "@earendil-works/pi-agent-core"; import { Type } from "@sinclair/typebox"; import { applyUpdateHunk } from "./apply-patch-update.js"; import { assertSandboxPath, resolveSandboxInputPath } from "./sandbox-paths.js"; diff --git a/src/agents/auth-profiles/oauth.ts b/src/agents/auth-profiles/oauth.ts index 0855e629..a1b9d8e7 100644 --- a/src/agents/auth-profiles/oauth.ts +++ b/src/agents/auth-profiles/oauth.ts @@ -1,9 +1,5 @@ -import { - getOAuthApiKey, - getOAuthProviders, - type OAuthCredentials, - type OAuthProvider, -} from "@mariozechner/pi-ai"; +import type { OAuthCredentials, OAuthProvider } from "@earendil-works/pi-ai"; +import { getOAuthApiKey, getOAuthProviders } from "@earendil-works/pi-ai/oauth"; import type { MayrosConfig } from "../../config/config.js"; import { withFileLock } from "../../infra/file-lock.js"; import { refreshQwenPortalCredentials } from "../../providers/qwen-portal-oauth.js"; diff --git a/src/agents/auth-profiles/store.ts b/src/agents/auth-profiles/store.ts index 4e6b1f91..1c6759d3 100644 --- a/src/agents/auth-profiles/store.ts +++ b/src/agents/auth-profiles/store.ts @@ -1,5 +1,5 @@ import fs from "node:fs"; -import type { OAuthCredentials } from "@mariozechner/pi-ai"; +import type { OAuthCredentials } from "@earendil-works/pi-ai"; import { resolveOAuthPath } from "../../config/paths.js"; import { withFileLock } from "../../infra/file-lock.js"; import { loadJsonFile, saveJsonFile } from "../../infra/json-file.js"; diff --git a/src/agents/auth-profiles/types.ts b/src/agents/auth-profiles/types.ts index c44467d0..9c14a6f8 100644 --- a/src/agents/auth-profiles/types.ts +++ b/src/agents/auth-profiles/types.ts @@ -1,4 +1,4 @@ -import type { OAuthCredentials } from "@mariozechner/pi-ai"; +import type { OAuthCredentials } from "@earendil-works/pi-ai"; import type { MayrosConfig } from "../../config/config.js"; export type ApiKeyCredential = { diff --git a/src/agents/bash-tools.exec-host-gateway.ts b/src/agents/bash-tools.exec-host-gateway.ts index d3cc26c4..ebffc67a 100644 --- a/src/agents/bash-tools.exec-host-gateway.ts +++ b/src/agents/bash-tools.exec-host-gateway.ts @@ -1,5 +1,5 @@ import crypto from "node:crypto"; -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { addAllowlistEntry, type ExecAsk, diff --git a/src/agents/bash-tools.exec-host-node.ts b/src/agents/bash-tools.exec-host-node.ts index 3cca1bc1..11bcd210 100644 --- a/src/agents/bash-tools.exec-host-node.ts +++ b/src/agents/bash-tools.exec-host-node.ts @@ -1,5 +1,5 @@ import crypto from "node:crypto"; -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { type ExecApprovalsFile, type ExecAsk, diff --git a/src/agents/bash-tools.exec-runtime.ts b/src/agents/bash-tools.exec-runtime.ts index caa63d0e..e459360e 100644 --- a/src/agents/bash-tools.exec-runtime.ts +++ b/src/agents/bash-tools.exec-runtime.ts @@ -1,5 +1,5 @@ import path from "node:path"; -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { Type } from "@sinclair/typebox"; import type { ExecAsk, ExecHost, ExecSecurity } from "../infra/exec-approvals.js"; import { requestHeartbeatNow } from "../infra/heartbeat-wake.js"; diff --git a/src/agents/bash-tools.exec.ts b/src/agents/bash-tools.exec.ts index e5b9c5eb..84c23c71 100644 --- a/src/agents/bash-tools.exec.ts +++ b/src/agents/bash-tools.exec.ts @@ -1,6 +1,6 @@ import fs from "node:fs/promises"; import path from "node:path"; -import type { AgentTool, AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentTool, AgentToolResult } from "@earendil-works/pi-agent-core"; import { type ExecHost, maxAsk, minSecurity, resolveSafeBins } from "../infra/exec-approvals.js"; import { getTrustedSafeBinDirs } from "../infra/exec-safe-bin-trust.js"; import { diff --git a/src/agents/bash-tools.process.ts b/src/agents/bash-tools.process.ts index dbdb6f99..1ef1b0ab 100644 --- a/src/agents/bash-tools.process.ts +++ b/src/agents/bash-tools.process.ts @@ -1,4 +1,4 @@ -import type { AgentTool, AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentTool, AgentToolResult } from "@earendil-works/pi-agent-core"; import { Type } from "@sinclair/typebox"; import { formatDurationCompact } from "../infra/format-time/format-duration.ts"; import { getDiagnosticSessionState } from "../logging/diagnostic-session-state.js"; diff --git a/src/agents/byteplus.live.test.ts b/src/agents/byteplus.live.test.ts index 1c1b730a..15546d4f 100644 --- a/src/agents/byteplus.live.test.ts +++ b/src/agents/byteplus.live.test.ts @@ -1,4 +1,5 @@ -import { completeSimple, type Model } from "@mariozechner/pi-ai"; +import type { Model } from "@earendil-works/pi-ai"; +import { completeSimple } from "@earendil-works/pi-ai/compat"; import { describe, expect, it } from "vitest"; import { isTruthyEnvValue } from "../infra/env.js"; import { BYTEPLUS_CODING_BASE_URL, BYTEPLUS_DEFAULT_COST } from "./byteplus-models.js"; diff --git a/src/agents/cache-trace.ts b/src/agents/cache-trace.ts index cc9a6786..48be7f5f 100644 --- a/src/agents/cache-trace.ts +++ b/src/agents/cache-trace.ts @@ -1,6 +1,6 @@ import crypto from "node:crypto"; import path from "node:path"; -import type { AgentMessage, StreamFn } from "@mariozechner/pi-agent-core"; +import type { AgentMessage, StreamFn } from "@earendil-works/pi-agent-core"; import type { MayrosConfig } from "../config/config.js"; import { resolveStateDir } from "../config/paths.js"; import { resolveUserPath } from "../utils.js"; diff --git a/src/agents/chutes-oauth.ts b/src/agents/chutes-oauth.ts index 02adf10c..a5d7c5d5 100644 --- a/src/agents/chutes-oauth.ts +++ b/src/agents/chutes-oauth.ts @@ -1,5 +1,5 @@ import { createHash, randomBytes } from "node:crypto"; -import type { OAuthCredentials } from "@mariozechner/pi-ai"; +import type { OAuthCredentials } from "@earendil-works/pi-ai"; export const CHUTES_OAUTH_ISSUER = "https://api.chutes.ai"; export const CHUTES_AUTHORIZE_ENDPOINT = `${CHUTES_OAUTH_ISSUER}/idp/authorize`; diff --git a/src/agents/cli-credentials.ts b/src/agents/cli-credentials.ts index 0d6d7c28..529d69d3 100644 --- a/src/agents/cli-credentials.ts +++ b/src/agents/cli-credentials.ts @@ -2,7 +2,7 @@ import { execFileSync, execSync } from "node:child_process"; import { createHash } from "node:crypto"; import fs from "node:fs"; import path from "node:path"; -import type { OAuthCredentials, OAuthProvider } from "@mariozechner/pi-ai"; +import type { OAuthCredentials, OAuthProvider } from "@earendil-works/pi-ai"; import { loadJsonFile, saveJsonFile } from "../infra/json-file.js"; import { createSubsystemLogger } from "../logging/subsystem.js"; import { resolveUserPath } from "../utils.js"; diff --git a/src/agents/cli-runner.ts b/src/agents/cli-runner.ts index b97cc3f1..45d6f37e 100644 --- a/src/agents/cli-runner.ts +++ b/src/agents/cli-runner.ts @@ -1,4 +1,4 @@ -import type { ImageContent } from "@mariozechner/pi-ai"; +import type { ImageContent } from "@earendil-works/pi-ai"; import { resolveHeartbeatPrompt } from "../auto-reply/heartbeat.js"; import type { ThinkLevel } from "../auto-reply/thinking.js"; import type { MayrosConfig } from "../config/config.js"; diff --git a/src/agents/cli-runner/helpers.ts b/src/agents/cli-runner/helpers.ts index 8acb1eb3..544d1ccd 100644 --- a/src/agents/cli-runner/helpers.ts +++ b/src/agents/cli-runner/helpers.ts @@ -2,8 +2,8 @@ import crypto from "node:crypto"; import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import type { AgentTool } from "@mariozechner/pi-agent-core"; -import type { ImageContent } from "@mariozechner/pi-ai"; +import type { AgentTool } from "@earendil-works/pi-agent-core"; +import type { ImageContent } from "@earendil-works/pi-ai"; import type { ThinkLevel } from "../../auto-reply/thinking.js"; import type { MayrosConfig } from "../../config/config.js"; import type { CliBackendConfig } from "../../config/types.js"; diff --git a/src/agents/compaction.e2e.test.ts b/src/agents/compaction.e2e.test.ts index de5f4ec4..5a7f7609 100644 --- a/src/agents/compaction.e2e.test.ts +++ b/src/agents/compaction.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { describe, expect, it } from "vitest"; import { estimateMessagesTokens, diff --git a/src/agents/compaction.retry.test.ts b/src/agents/compaction.retry.test.ts index 50fe043c..a4e8b83b 100644 --- a/src/agents/compaction.retry.test.ts +++ b/src/agents/compaction.retry.test.ts @@ -1,11 +1,11 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { ExtensionContext } from "@mariozechner/pi-coding-agent"; -import * as piCodingAgent from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { ExtensionContext } from "@earendil-works/pi-coding-agent"; +import * as piCodingAgent from "@earendil-works/pi-coding-agent"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { retryAsync } from "../infra/retry.js"; // Mock the external generateSummary function -vi.mock("@mariozechner/pi-coding-agent", async (importOriginal) => { +vi.mock("@earendil-works/pi-coding-agent", async (importOriginal) => { const actual = await importOriginal(); return { ...actual, @@ -44,6 +44,7 @@ describe("compaction retry integration", () => { testModel, 1000, "test-api-key", + undefined, new AbortController().signal, ), { @@ -71,6 +72,7 @@ describe("compaction retry integration", () => { testModel, 1000, "test-api-key", + undefined, new AbortController().signal, ), { @@ -100,6 +102,7 @@ describe("compaction retry integration", () => { testModel, 1000, "test-api-key", + undefined, new AbortController().signal, ), { @@ -126,6 +129,7 @@ describe("compaction retry integration", () => { testModel, 1000, "test-api-key", + undefined, new AbortController().signal, ), { @@ -156,6 +160,7 @@ describe("compaction retry integration", () => { testModel, 1000, "test-api-key", + undefined, new AbortController().signal, ), { diff --git a/src/agents/compaction.tool-result-details.e2e.test.ts b/src/agents/compaction.tool-result-details.e2e.test.ts index 79c883a7..60dfda77 100644 --- a/src/agents/compaction.tool-result-details.e2e.test.ts +++ b/src/agents/compaction.tool-result-details.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { beforeEach, describe, expect, it, vi } from "vitest"; const piCodingAgentMocks = vi.hoisted(() => ({ @@ -6,9 +6,9 @@ const piCodingAgentMocks = vi.hoisted(() => ({ estimateTokens: vi.fn(() => 1), })); -vi.mock("@mariozechner/pi-coding-agent", async () => { - const actual = await vi.importActual( - "@mariozechner/pi-coding-agent", +vi.mock("@earendil-works/pi-coding-agent", async () => { + const actual = await vi.importActual( + "@earendil-works/pi-coding-agent", ); return { ...actual, diff --git a/src/agents/compaction.ts b/src/agents/compaction.ts index d60d1af2..04546bb3 100644 --- a/src/agents/compaction.ts +++ b/src/agents/compaction.ts @@ -1,6 +1,6 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { ExtensionContext } from "@mariozechner/pi-coding-agent"; -import { estimateTokens, generateSummary } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { ExtensionContext } from "@earendil-works/pi-coding-agent"; +import { estimateTokens, generateSummary } from "@earendil-works/pi-coding-agent"; import { retryAsync } from "../infra/retry.js"; import { DEFAULT_CONTEXT_TOKENS } from "./defaults.js"; import { repairToolUseResultPairing, stripToolResultDetails } from "./session-transcript-repair.js"; @@ -167,6 +167,7 @@ async function summarizeChunks(params: { params.model, params.reserveTokens, params.apiKey, + undefined, params.signal, params.customInstructions, summary, diff --git a/src/agents/google-gemini-switch.live.test.ts b/src/agents/google-gemini-switch.live.test.ts index 7c253b03..ad1f393e 100644 --- a/src/agents/google-gemini-switch.live.test.ts +++ b/src/agents/google-gemini-switch.live.test.ts @@ -1,4 +1,4 @@ -import { completeSimple, getModel } from "@mariozechner/pi-ai"; +import { completeSimple, getModel } from "@earendil-works/pi-ai/compat"; import { Type } from "@sinclair/typebox"; import { describe, expect, it } from "vitest"; import { isTruthyEnvValue } from "../infra/env.js"; diff --git a/src/agents/minimax.live.test.ts b/src/agents/minimax.live.test.ts index ca380f2c..e3b76adb 100644 --- a/src/agents/minimax.live.test.ts +++ b/src/agents/minimax.live.test.ts @@ -1,4 +1,5 @@ -import { completeSimple, type Model } from "@mariozechner/pi-ai"; +import type { Model } from "@earendil-works/pi-ai"; +import { completeSimple } from "@earendil-works/pi-ai/compat"; import { describe, expect, it } from "vitest"; import { isTruthyEnvValue } from "../infra/env.js"; diff --git a/src/agents/model-auth.e2e.test.ts b/src/agents/model-auth.e2e.test.ts index 4c6b4cc6..2d2b8527 100644 --- a/src/agents/model-auth.e2e.test.ts +++ b/src/agents/model-auth.e2e.test.ts @@ -1,7 +1,7 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { captureEnv } from "../test-utils/env.js"; import { ensureAuthProfileStore } from "./auth-profiles.js"; diff --git a/src/agents/model-auth.ts b/src/agents/model-auth.ts index c1c4a510..8eb8ba98 100644 --- a/src/agents/model-auth.ts +++ b/src/agents/model-auth.ts @@ -1,5 +1,6 @@ import path from "node:path"; -import { type Api, getEnvApiKey, type Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; +import { getEnvApiKey } from "@earendil-works/pi-ai/compat"; import { formatCliCommand } from "../cli/command-format.js"; import type { MayrosConfig } from "../config/config.js"; import type { ModelProviderAuthMode, ModelProviderConfig } from "../config/types.js"; diff --git a/src/agents/model-compat.e2e.test.ts b/src/agents/model-compat.e2e.test.ts index 95b4a0eb..2e44f413 100644 --- a/src/agents/model-compat.e2e.test.ts +++ b/src/agents/model-compat.e2e.test.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { normalizeModelCompat } from "./model-compat.js"; diff --git a/src/agents/model-compat.ts b/src/agents/model-compat.ts index e7b428e8..6047c7c0 100644 --- a/src/agents/model-compat.ts +++ b/src/agents/model-compat.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; function isOpenAiCompletionsModel(model: Model): model is Model<"openai-completions"> { return model.api === "openai-completions"; diff --git a/src/agents/model-forward-compat.test.ts b/src/agents/model-forward-compat.test.ts index b2017213..915caaa4 100644 --- a/src/agents/model-forward-compat.test.ts +++ b/src/agents/model-forward-compat.test.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { resolveForwardCompatModel } from "./model-forward-compat.js"; import type { ModelRegistry } from "./pi-model-discovery.js"; diff --git a/src/agents/model-forward-compat.ts b/src/agents/model-forward-compat.ts index 600b52a0..9671e52a 100644 --- a/src/agents/model-forward-compat.ts +++ b/src/agents/model-forward-compat.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { DEFAULT_CONTEXT_TOKENS } from "./defaults.js"; import { normalizeModelCompat } from "./model-compat.js"; import { normalizeProviderId } from "./model-selection.js"; diff --git a/src/agents/model-scan.ts b/src/agents/model-scan.ts index 3fe131d9..610eb9f9 100644 --- a/src/agents/model-scan.ts +++ b/src/agents/model-scan.ts @@ -1,12 +1,5 @@ -import { - type Context, - complete, - getEnvApiKey, - getModel, - type Model, - type OpenAICompletionsOptions, - type Tool, -} from "@mariozechner/pi-ai"; +import type { Context, Model, OpenAICompletionsOptions, Tool } from "@earendil-works/pi-ai"; +import { complete, getEnvApiKey, getModel } from "@earendil-works/pi-ai/compat"; import { Type } from "@sinclair/typebox"; import { inferParamBFromIdOrName } from "../shared/model-param-b.js"; diff --git a/src/agents/models.profiles.live.test.ts b/src/agents/models.profiles.live.test.ts index cb04fe6c..e4965ebb 100644 --- a/src/agents/models.profiles.live.test.ts +++ b/src/agents/models.profiles.live.test.ts @@ -1,4 +1,5 @@ -import { type Api, completeSimple, type Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; +import { completeSimple } from "@earendil-works/pi-ai/compat"; import { Type } from "@sinclair/typebox"; import { describe, expect, it } from "vitest"; import { loadConfig } from "../config/config.js"; diff --git a/src/agents/ollama-stream.ts b/src/agents/ollama-stream.ts index 39a19769..30059141 100644 --- a/src/agents/ollama-stream.ts +++ b/src/agents/ollama-stream.ts @@ -1,5 +1,5 @@ import { randomUUID } from "node:crypto"; -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import type { AssistantMessage, StopReason, @@ -7,8 +7,8 @@ import type { ToolCall, Tool, Usage, -} from "@mariozechner/pi-ai"; -import { createAssistantMessageEventStream } from "@mariozechner/pi-ai"; +} from "@earendil-works/pi-ai"; +import { createAssistantMessageEventStream } from "@earendil-works/pi-ai"; export const OLLAMA_NATIVE_BASE_URL = "http://127.0.0.1:11434"; diff --git a/src/agents/openai-responses.reasoning-replay.test.ts b/src/agents/openai-responses.reasoning-replay.test.ts index b5ccc50e..41efd555 100644 --- a/src/agents/openai-responses.reasoning-replay.test.ts +++ b/src/agents/openai-responses.reasoning-replay.test.ts @@ -1,5 +1,5 @@ -import type { AssistantMessage, Model, ToolResultMessage } from "@mariozechner/pi-ai"; -import { streamOpenAIResponses } from "@mariozechner/pi-ai"; +import type { AssistantMessage, Model, ToolResultMessage } from "@earendil-works/pi-ai"; +import { streamOpenAIResponses } from "@earendil-works/pi-ai/compat"; import { Type } from "@sinclair/typebox"; import { describe, expect, it } from "vitest"; diff --git a/src/agents/pi-embedded-helpers.formatassistanterrortext.e2e.test.ts b/src/agents/pi-embedded-helpers.formatassistanterrortext.e2e.test.ts index 1087d1b7..16ee72de 100644 --- a/src/agents/pi-embedded-helpers.formatassistanterrortext.e2e.test.ts +++ b/src/agents/pi-embedded-helpers.formatassistanterrortext.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { BILLING_ERROR_USER_MESSAGE, diff --git a/src/agents/pi-embedded-helpers.sanitize-session-messages-images.removes-empty-assistant-text-blocks-but-preserves.e2e.test.ts b/src/agents/pi-embedded-helpers.sanitize-session-messages-images.removes-empty-assistant-text-blocks-but-preserves.e2e.test.ts index 878b1199..7e784f95 100644 --- a/src/agents/pi-embedded-helpers.sanitize-session-messages-images.removes-empty-assistant-text-blocks-but-preserves.e2e.test.ts +++ b/src/agents/pi-embedded-helpers.sanitize-session-messages-images.removes-empty-assistant-text-blocks-but-preserves.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { describe, expect, it } from "vitest"; import { sanitizeGoogleTurnOrdering, diff --git a/src/agents/pi-embedded-helpers.validate-turns.e2e.test.ts b/src/agents/pi-embedded-helpers.validate-turns.e2e.test.ts index ff1f9628..f143ed8c 100644 --- a/src/agents/pi-embedded-helpers.validate-turns.e2e.test.ts +++ b/src/agents/pi-embedded-helpers.validate-turns.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { describe, expect, it } from "vitest"; import { mergeConsecutiveUserTurns, diff --git a/src/agents/pi-embedded-helpers/bootstrap.ts b/src/agents/pi-embedded-helpers/bootstrap.ts index 3b544435..1220c21f 100644 --- a/src/agents/pi-embedded-helpers/bootstrap.ts +++ b/src/agents/pi-embedded-helpers/bootstrap.ts @@ -1,6 +1,6 @@ import fs from "node:fs/promises"; import path from "node:path"; -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import type { MayrosConfig } from "../../config/config.js"; import { truncateUtf16Safe } from "../../utils.js"; import type { WorkspaceBootstrapFile } from "../workspace.js"; diff --git a/src/agents/pi-embedded-helpers/errors.ts b/src/agents/pi-embedded-helpers/errors.ts index b7644660..d58d1ad9 100644 --- a/src/agents/pi-embedded-helpers/errors.ts +++ b/src/agents/pi-embedded-helpers/errors.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import type { MayrosConfig } from "../../config/config.js"; import { formatSandboxToolPolicyBlockedMessage } from "../sandbox.js"; import { stableStringify } from "../stable-stringify.js"; diff --git a/src/agents/pi-embedded-helpers/images.ts b/src/agents/pi-embedded-helpers/images.ts index c3b4d0a3..2f289115 100644 --- a/src/agents/pi-embedded-helpers/images.ts +++ b/src/agents/pi-embedded-helpers/images.ts @@ -1,4 +1,4 @@ -import type { AgentMessage, AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentMessage, AgentToolResult } from "@earendil-works/pi-agent-core"; import type { ImageSanitizationLimits } from "../image-sanitization.js"; import type { ToolCallIdMode } from "../tool-call-id.js"; import { sanitizeToolCallIdsForCloudCodeAssist } from "../tool-call-id.js"; diff --git a/src/agents/pi-embedded-helpers/openai.ts b/src/agents/pi-embedded-helpers/openai.ts index c6a317aa..ddbf1f2e 100644 --- a/src/agents/pi-embedded-helpers/openai.ts +++ b/src/agents/pi-embedded-helpers/openai.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; type OpenAIThinkingBlock = { type?: unknown; diff --git a/src/agents/pi-embedded-helpers/turns.ts b/src/agents/pi-embedded-helpers/turns.ts index f6dddb20..3a01c801 100644 --- a/src/agents/pi-embedded-helpers/turns.ts +++ b/src/agents/pi-embedded-helpers/turns.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; function validateTurnsWithConsecutiveMerge(params: { messages: AgentMessage[]; diff --git a/src/agents/pi-embedded-runner-extraparams.e2e.test.ts b/src/agents/pi-embedded-runner-extraparams.e2e.test.ts index 57140582..5ab1663b 100644 --- a/src/agents/pi-embedded-runner-extraparams.e2e.test.ts +++ b/src/agents/pi-embedded-runner-extraparams.e2e.test.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Context, Model, SimpleStreamOptions } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Context, Model, SimpleStreamOptions } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { applyExtraParamsToAgent, resolveExtraParams } from "./pi-embedded-runner.js"; @@ -99,7 +99,7 @@ describe("applyExtraParamsToAgent", () => { }) { const payload = { store: false }; const baseStreamFn: StreamFn = (_model, _context, options) => { - options?.onPayload?.(payload); + options?.onPayload?.(payload, _model); return {} as ReturnType; }; const agent = { streamFn: baseStreamFn }; @@ -295,7 +295,7 @@ describe("applyExtraParamsToAgent", () => { it("does not force store=true for Codex responses (Codex requires store=false)", () => { const payload = { store: false }; const baseStreamFn: StreamFn = (_model, _context, options) => { - options?.onPayload?.(payload); + options?.onPayload?.(payload, _model); return {} as ReturnType; }; const agent = { streamFn: baseStreamFn }; diff --git a/src/agents/pi-embedded-runner-extraparams.live.test.ts b/src/agents/pi-embedded-runner-extraparams.live.test.ts index 602d79dd..3af3b122 100644 --- a/src/agents/pi-embedded-runner-extraparams.live.test.ts +++ b/src/agents/pi-embedded-runner-extraparams.live.test.ts @@ -1,5 +1,5 @@ -import type { Model } from "@mariozechner/pi-ai"; -import { getModel, streamSimple } from "@mariozechner/pi-ai"; +import type { Model } from "@earendil-works/pi-ai"; +import { getModel, streamSimple } from "@earendil-works/pi-ai/compat"; import { describe, expect, it } from "vitest"; import type { MayrosConfig } from "../config/config.js"; import { isTruthyEnvValue } from "../infra/env.js"; diff --git a/src/agents/pi-embedded-runner.applygoogleturnorderingfix.e2e.test.ts b/src/agents/pi-embedded-runner.applygoogleturnorderingfix.e2e.test.ts index f4807b7d..7fb80157 100644 --- a/src/agents/pi-embedded-runner.applygoogleturnorderingfix.e2e.test.ts +++ b/src/agents/pi-embedded-runner.applygoogleturnorderingfix.e2e.test.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import { describe, expect, it, vi } from "vitest"; import { applyGoogleTurnOrderingFix } from "./pi-embedded-runner.js"; diff --git a/src/agents/pi-embedded-runner.e2e.test.ts b/src/agents/pi-embedded-runner.e2e.test.ts index 8d92aab5..9896bce0 100644 --- a/src/agents/pi-embedded-runner.e2e.test.ts +++ b/src/agents/pi-embedded-runner.e2e.test.ts @@ -6,8 +6,9 @@ import "./test-helpers/fast-coding-tools.js"; import type { MayrosConfig } from "../config/config.js"; import { ensureMayrosModelsJson } from "./models-config.js"; -vi.mock("@mariozechner/pi-ai", async () => { - const actual = await vi.importActual("@mariozechner/pi-ai"); +vi.mock("@earendil-works/pi-ai", async () => { + const actual = + await vi.importActual("@earendil-works/pi-ai"); const buildAssistantMessage = (model: { api: string; provider: string; id: string }) => ({ role: "assistant" as const, @@ -152,7 +153,7 @@ const testSessionKey = "agent:test:embedded"; const immediateEnqueue = async (task: () => Promise) => task(); const runWithOrphanedSingleUserMessage = async (text: string) => { - const { SessionManager } = await import("@mariozechner/pi-coding-agent"); + const { SessionManager } = await import("@earendil-works/pi-coding-agent"); const sessionFile = nextSessionFile(); const sessionManager = SessionManager.open(sessionFile); sessionManager.appendMessage({ @@ -418,7 +419,7 @@ describe("runEmbeddedPiAgent", () => { "appends new user + assistant after existing transcript entries", { timeout: 90_000 }, async () => { - const { SessionManager } = await import("@mariozechner/pi-coding-agent"); + const { SessionManager } = await import("@earendil-works/pi-coding-agent"); const sessionFile = nextSessionFile(); const sessionManager = SessionManager.open(sessionFile); diff --git a/src/agents/pi-embedded-runner.google-sanitize-thinking.e2e.test.ts b/src/agents/pi-embedded-runner.google-sanitize-thinking.e2e.test.ts index f716ff32..b811f1c9 100644 --- a/src/agents/pi-embedded-runner.google-sanitize-thinking.e2e.test.ts +++ b/src/agents/pi-embedded-runner.google-sanitize-thinking.e2e.test.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import { describe, expect, it } from "vitest"; import { sanitizeSessionHistory } from "./pi-embedded-runner/google.js"; diff --git a/src/agents/pi-embedded-runner.guard.e2e.test.ts b/src/agents/pi-embedded-runner.guard.e2e.test.ts index d93a3520..1b239b4c 100644 --- a/src/agents/pi-embedded-runner.guard.e2e.test.ts +++ b/src/agents/pi-embedded-runner.guard.e2e.test.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import { describe, expect, it } from "vitest"; import { guardSessionManager } from "./session-tool-result-guard-wrapper.js"; import { sanitizeToolUseResultPairing } from "./session-transcript-repair.js"; diff --git a/src/agents/pi-embedded-runner.guard.waitforidle-before-flush.test.ts b/src/agents/pi-embedded-runner.guard.waitforidle-before-flush.test.ts index d0396039..3cbcc91b 100644 --- a/src/agents/pi-embedded-runner.guard.waitforidle-before-flush.test.ts +++ b/src/agents/pi-embedded-runner.guard.waitforidle-before-flush.test.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import { afterEach, describe, expect, it, vi } from "vitest"; import { flushPendingToolResultsAfterIdle } from "./pi-embedded-runner/wait-for-idle-before-flush.js"; import { guardSessionManager } from "./session-tool-result-guard-wrapper.js"; diff --git a/src/agents/pi-embedded-runner.limithistoryturns.e2e.test.ts b/src/agents/pi-embedded-runner.limithistoryturns.e2e.test.ts index e9cbbc5e..f1be64b1 100644 --- a/src/agents/pi-embedded-runner.limithistoryturns.e2e.test.ts +++ b/src/agents/pi-embedded-runner.limithistoryturns.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { describe, expect, it } from "vitest"; import { limitHistoryTurns } from "./pi-embedded-runner.js"; diff --git a/src/agents/pi-embedded-runner.openai-tool-id-preservation.e2e.test.ts b/src/agents/pi-embedded-runner.openai-tool-id-preservation.e2e.test.ts index 5d3a86ee..cc2fab2b 100644 --- a/src/agents/pi-embedded-runner.openai-tool-id-preservation.e2e.test.ts +++ b/src/agents/pi-embedded-runner.openai-tool-id-preservation.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { describe, expect, it } from "vitest"; import { makeInMemorySessionManager, diff --git a/src/agents/pi-embedded-runner.run-embedded-pi-agent.auth-profile-rotation.e2e.test.ts b/src/agents/pi-embedded-runner.run-embedded-pi-agent.auth-profile-rotation.e2e.test.ts index 5baa7954..6ad01c93 100644 --- a/src/agents/pi-embedded-runner.run-embedded-pi-agent.auth-profile-rotation.e2e.test.ts +++ b/src/agents/pi-embedded-runner.run-embedded-pi-agent.auth-profile-rotation.e2e.test.ts @@ -1,7 +1,7 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import type { MayrosConfig } from "../config/config.js"; import type { EmbeddedRunAttemptResult } from "./pi-embedded-runner/run/types.js"; diff --git a/src/agents/pi-embedded-runner.sanitize-session-history.test-harness.ts b/src/agents/pi-embedded-runner.sanitize-session-history.test-harness.ts index bb371798..8990e14d 100644 --- a/src/agents/pi-embedded-runner.sanitize-session-history.test-harness.ts +++ b/src/agents/pi-embedded-runner.sanitize-session-history.test-harness.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { SessionManager } from "@earendil-works/pi-coding-agent"; import { expect, vi } from "vitest"; import * as helpers from "./pi-embedded-helpers.js"; diff --git a/src/agents/pi-embedded-runner.sanitize-session-history.test.ts b/src/agents/pi-embedded-runner.sanitize-session-history.test.ts index 665e9879..e48979ca 100644 --- a/src/agents/pi-embedded-runner.sanitize-session-history.test.ts +++ b/src/agents/pi-embedded-runner.sanitize-session-history.test.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { beforeEach, describe, expect, it, vi } from "vitest"; import * as helpers from "./pi-embedded-helpers.js"; import { diff --git a/src/agents/pi-embedded-runner.splitsdktools.e2e.test.ts b/src/agents/pi-embedded-runner.splitsdktools.e2e.test.ts index 9a376ebf..4ee6fcd1 100644 --- a/src/agents/pi-embedded-runner.splitsdktools.e2e.test.ts +++ b/src/agents/pi-embedded-runner.splitsdktools.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AgentTool, AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentTool, AgentToolResult } from "@earendil-works/pi-agent-core"; import { Type } from "@sinclair/typebox"; import { describe, expect, it } from "vitest"; import { splitSdkTools } from "./pi-embedded-runner.js"; diff --git a/src/agents/pi-embedded-runner/compact.ts b/src/agents/pi-embedded-runner/compact.ts index 1c656b92..ceae1117 100644 --- a/src/agents/pi-embedded-runner/compact.ts +++ b/src/agents/pi-embedded-runner/compact.ts @@ -1,13 +1,13 @@ import fs from "node:fs/promises"; import os from "node:os"; -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { createAgentSession, DefaultResourceLoader, estimateTokens, SessionManager, SettingsManager, -} from "@mariozechner/pi-coding-agent"; +} from "@earendil-works/pi-coding-agent"; import { resolveHeartbeatPrompt } from "../../auto-reply/heartbeat.js"; import type { ReasoningLevel, ThinkLevel } from "../../auto-reply/thinking.js"; import { resolveChannelCapabilities } from "../../config/channel-capabilities.js"; @@ -611,7 +611,7 @@ export async function compactEmbeddedPiSessionDirect( ? sanitizeToolUseResultPairing(truncated) : truncated; if (limited.length > 0) { - session.agent.replaceMessages(limited); + session.agent.state.messages = limited; } // Run before_compaction hooks (fire-and-forget). // The session JSONL already contains all messages on disk, so plugins diff --git a/src/agents/pi-embedded-runner/extensions.ts b/src/agents/pi-embedded-runner/extensions.ts index a418bf68..ce4bdb0b 100644 --- a/src/agents/pi-embedded-runner/extensions.ts +++ b/src/agents/pi-embedded-runner/extensions.ts @@ -1,5 +1,5 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; -import type { ExtensionFactory, SessionManager } from "@mariozechner/pi-coding-agent"; +import type { Api, Model } from "@earendil-works/pi-ai"; +import type { ExtensionFactory, SessionManager } from "@earendil-works/pi-coding-agent"; import type { MayrosConfig } from "../../config/config.js"; import { resolveContextWindowInfo } from "../context-window-guard.js"; import { DEFAULT_CONTEXT_TOKENS } from "../defaults.js"; diff --git a/src/agents/pi-embedded-runner/extra-params.cache-retention-default.test.ts b/src/agents/pi-embedded-runner/extra-params.cache-retention-default.test.ts index cd093a86..640f4e29 100644 --- a/src/agents/pi-embedded-runner/extra-params.cache-retention-default.test.ts +++ b/src/agents/pi-embedded-runner/extra-params.cache-retention-default.test.ts @@ -1,4 +1,4 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import { describe, expect, it, vi } from "vitest"; import { applyExtraParamsToAgent } from "../pi-embedded-runner.js"; diff --git a/src/agents/pi-embedded-runner/extra-params.ts b/src/agents/pi-embedded-runner/extra-params.ts index 5addc333..470effae 100644 --- a/src/agents/pi-embedded-runner/extra-params.ts +++ b/src/agents/pi-embedded-runner/extra-params.ts @@ -1,6 +1,6 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { SimpleStreamOptions } from "@mariozechner/pi-ai"; -import { streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { ProviderHeaders, SimpleStreamOptions } from "@earendil-works/pi-ai"; +import { streamSimple } from "@earendil-works/pi-ai/compat"; import type { MayrosConfig } from "../../config/config.js"; import { log } from "./logger.js"; @@ -152,11 +152,11 @@ function createOpenAIResponsesStoreWrapper(baseStreamFn: StreamFn | undefined): const originalOnPayload = options?.onPayload; return underlying(model, context, { ...options, - onPayload: (payload) => { + onPayload: (payload, payloadModel) => { if (payload && typeof payload === "object") { (payload as { store?: unknown }).store = true; } - originalOnPayload?.(payload); + return originalOnPayload?.(payload, payloadModel); }, }); }; @@ -210,9 +210,9 @@ function resolveAnthropicBetas( } function mergeAnthropicBetaHeader( - headers: Record | undefined, + headers: ProviderHeaders | undefined, betas: string[], -): Record { +): ProviderHeaders { const merged = { ...headers }; const existingKey = Object.keys(merged).find((key) => key.toLowerCase() === "anthropic-beta"); const existing = existingKey ? parseHeaderList(merged[existingKey]) : []; @@ -302,12 +302,12 @@ function createZaiToolStreamWrapper( const originalOnPayload = options?.onPayload; return underlying(model, context, { ...options, - onPayload: (payload) => { + onPayload: (payload, payloadModel) => { if (payload && typeof payload === "object") { // Inject tool_stream: true for Z.AI API (payload as Record).tool_stream = true; } - originalOnPayload?.(payload); + return originalOnPayload?.(payload, payloadModel); }, }); }; diff --git a/src/agents/pi-embedded-runner/extra-params.zai-tool-stream.test.ts b/src/agents/pi-embedded-runner/extra-params.zai-tool-stream.test.ts index 3a757cea..59dd83d5 100644 --- a/src/agents/pi-embedded-runner/extra-params.zai-tool-stream.test.ts +++ b/src/agents/pi-embedded-runner/extra-params.zai-tool-stream.test.ts @@ -1,10 +1,10 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Context, Model, SimpleStreamOptions } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Context, Model, SimpleStreamOptions } from "@earendil-works/pi-ai"; import { describe, expect, it, vi } from "vitest"; import { applyExtraParamsToAgent } from "./extra-params.js"; // Mock streamSimple for testing -vi.mock("@mariozechner/pi-ai", () => ({ +vi.mock("@earendil-works/pi-ai", () => ({ streamSimple: vi.fn(() => ({ push: vi.fn(), result: vi.fn(), @@ -22,7 +22,7 @@ type ToolStreamCase = { function runToolStreamCase(params: ToolStreamCase) { const payload: Record = { model: params.model.id, messages: [] }; const baseStreamFn: StreamFn = (_model, _context, options) => { - options?.onPayload?.(payload); + options?.onPayload?.(payload, _model); return {} as ReturnType; }; const agent = { streamFn: baseStreamFn }; diff --git a/src/agents/pi-embedded-runner/google.e2e.test.ts b/src/agents/pi-embedded-runner/google.e2e.test.ts index f5e331b1..e5d41dc5 100644 --- a/src/agents/pi-embedded-runner/google.e2e.test.ts +++ b/src/agents/pi-embedded-runner/google.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AgentTool } from "@mariozechner/pi-agent-core"; +import type { AgentTool } from "@earendil-works/pi-agent-core"; import { describe, expect, it } from "vitest"; import { sanitizeToolsForGoogle } from "./google.js"; diff --git a/src/agents/pi-embedded-runner/google.ts b/src/agents/pi-embedded-runner/google.ts index 394dddf7..5633f43c 100644 --- a/src/agents/pi-embedded-runner/google.ts +++ b/src/agents/pi-embedded-runner/google.ts @@ -1,7 +1,7 @@ import { EventEmitter } from "node:events"; -import type { AgentMessage, AgentTool } from "@mariozechner/pi-agent-core"; -import type { SessionManager } from "@mariozechner/pi-coding-agent"; -import type { TSchema } from "@sinclair/typebox"; +import type { AgentMessage, AgentTool } from "@earendil-works/pi-agent-core"; +import type { SessionManager } from "@earendil-works/pi-coding-agent"; +import type { TSchema } from "@earendil-works/pi-ai"; import type { MayrosConfig } from "../../config/config.js"; import { registerUnhandledRejectionHandler } from "../../infra/unhandled-rejections.js"; import { diff --git a/src/agents/pi-embedded-runner/history.ts b/src/agents/pi-embedded-runner/history.ts index bf3228f9..2113341e 100644 --- a/src/agents/pi-embedded-runner/history.ts +++ b/src/agents/pi-embedded-runner/history.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import type { MayrosConfig } from "../../config/config.js"; const THREAD_SUFFIX_REGEX = /^(.*)(?::(?:thread|topic):\d+)$/i; diff --git a/src/agents/pi-embedded-runner/model.ts b/src/agents/pi-embedded-runner/model.ts index 7fa32f02..fb08c083 100644 --- a/src/agents/pi-embedded-runner/model.ts +++ b/src/agents/pi-embedded-runner/model.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import type { MayrosConfig } from "../../config/config.js"; import type { ModelDefinitionConfig } from "../../config/types.js"; import { resolveMayrosAgentDir } from "../agent-paths.js"; diff --git a/src/agents/pi-embedded-runner/run/attempt.e2e.test.ts b/src/agents/pi-embedded-runner/run/attempt.e2e.test.ts index ca931138..11a4cb3a 100644 --- a/src/agents/pi-embedded-runner/run/attempt.e2e.test.ts +++ b/src/agents/pi-embedded-runner/run/attempt.e2e.test.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { ImageContent } from "@mariozechner/pi-ai"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { ImageContent } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { injectHistoryImagesIntoMessages } from "./attempt.js"; diff --git a/src/agents/pi-embedded-runner/run/attempt.ts b/src/agents/pi-embedded-runner/run/attempt.ts index ebf3e740..0f36626b 100644 --- a/src/agents/pi-embedded-runner/run/attempt.ts +++ b/src/agents/pi-embedded-runner/run/attempt.ts @@ -1,14 +1,14 @@ import fs from "node:fs/promises"; import os from "node:os"; -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { ImageContent } from "@mariozechner/pi-ai"; -import { streamSimple } from "@mariozechner/pi-ai"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { ImageContent } from "@earendil-works/pi-ai"; +import { streamSimple } from "@earendil-works/pi-ai/compat"; import { createAgentSession, DefaultResourceLoader, SessionManager, SettingsManager, -} from "@mariozechner/pi-coding-agent"; +} from "@earendil-works/pi-coding-agent"; import { resolveHeartbeatPrompt } from "../../../auto-reply/heartbeat.js"; import { resolveChannelCapabilities } from "../../../config/channel-capabilities.js"; import { getMachineDisplayName } from "../../../infra/machine-name.js"; @@ -657,7 +657,7 @@ export async function runEmbeddedAttempt( const ollamaBaseUrl = modelBaseUrl || providerBaseUrl || OLLAMA_NATIVE_BASE_URL; activeSession.agent.streamFn = createOllamaStreamFn(ollamaBaseUrl); } else { - // Force a stable streamFn reference so vitest can reliably mock @mariozechner/pi-ai. + // Force a stable streamFn reference so vitest can reliably mock @earendil-works/pi-ai. activeSession.agent.streamFn = streamSimple; } @@ -737,7 +737,7 @@ export async function runEmbeddedAttempt( : truncated; cacheTrace?.recordStage("session:limited", { messages: limited }); if (limited.length > 0) { - activeSession.agent.replaceMessages(limited); + activeSession.agent.state.messages = limited; } } catch (err) { await flushPendingToolResultsAfterIdle({ @@ -1002,7 +1002,7 @@ export async function runEmbeddedAttempt( const sanitizedOrphan = transcriptPolicy.sanitizeThinkingSignatures ? sanitizeAntigravityThinkingBlocks(sessionContext.messages) : sessionContext.messages; - activeSession.agent.replaceMessages(sanitizedOrphan); + activeSession.agent.state.messages = sanitizedOrphan; log.warn( `Removed orphaned user message to prevent consecutive user turns. ` + `runId=${params.runId} sessionId=${params.sessionId}`, @@ -1037,7 +1037,7 @@ export async function runEmbeddedAttempt( ); if (didMutate) { // Persist message mutations (e.g., injected history images) so we don't re-scan/reload. - activeSession.agent.replaceMessages(activeSession.messages); + activeSession.agent.state.messages = activeSession.messages; } cacheTrace?.recordStage("prompt:images", { diff --git a/src/agents/pi-embedded-runner/run/compaction-timeout.e2e.test.ts b/src/agents/pi-embedded-runner/run/compaction-timeout.e2e.test.ts index 7258a33b..75d20e32 100644 --- a/src/agents/pi-embedded-runner/run/compaction-timeout.e2e.test.ts +++ b/src/agents/pi-embedded-runner/run/compaction-timeout.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { describe, expect, it } from "vitest"; import { selectCompactionTimeoutSnapshot, diff --git a/src/agents/pi-embedded-runner/run/compaction-timeout.ts b/src/agents/pi-embedded-runner/run/compaction-timeout.ts index 45a94525..1dde57df 100644 --- a/src/agents/pi-embedded-runner/run/compaction-timeout.ts +++ b/src/agents/pi-embedded-runner/run/compaction-timeout.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; export type CompactionTimeoutSignal = { isTimeout: boolean; diff --git a/src/agents/pi-embedded-runner/run/images.ts b/src/agents/pi-embedded-runner/run/images.ts index c11f191e..f486bdd2 100644 --- a/src/agents/pi-embedded-runner/run/images.ts +++ b/src/agents/pi-embedded-runner/run/images.ts @@ -1,6 +1,6 @@ import path from "node:path"; import { fileURLToPath } from "node:url"; -import type { ImageContent } from "@mariozechner/pi-ai"; +import type { ImageContent } from "@earendil-works/pi-ai"; import { resolveUserPath } from "../../../utils.js"; import { loadWebMedia } from "../../../web/media.js"; import type { ImageSanitizationLimits } from "../../image-sanitization.js"; diff --git a/src/agents/pi-embedded-runner/run/params.ts b/src/agents/pi-embedded-runner/run/params.ts index 29e0a244..95c2ff37 100644 --- a/src/agents/pi-embedded-runner/run/params.ts +++ b/src/agents/pi-embedded-runner/run/params.ts @@ -1,4 +1,4 @@ -import type { ImageContent } from "@mariozechner/pi-ai"; +import type { ImageContent } from "@earendil-works/pi-ai"; import type { ReasoningLevel, ThinkLevel, VerboseLevel } from "../../../auto-reply/thinking.js"; import type { AgentStreamParams } from "../../../commands/agent/types.js"; import type { MayrosConfig } from "../../../config/config.js"; diff --git a/src/agents/pi-embedded-runner/run/payloads.e2e.test.ts b/src/agents/pi-embedded-runner/run/payloads.e2e.test.ts index 39767e8f..0c6a3e52 100644 --- a/src/agents/pi-embedded-runner/run/payloads.e2e.test.ts +++ b/src/agents/pi-embedded-runner/run/payloads.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { formatBillingErrorMessage } from "../../pi-embedded-helpers.js"; import { makeAssistantMessageFixture } from "../../test-helpers/assistant-message-fixtures.js"; diff --git a/src/agents/pi-embedded-runner/run/payloads.ts b/src/agents/pi-embedded-runner/run/payloads.ts index 7d65bfc2..849d88e1 100644 --- a/src/agents/pi-embedded-runner/run/payloads.ts +++ b/src/agents/pi-embedded-runner/run/payloads.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { parseReplyDirectives } from "../../../auto-reply/reply/reply-directives.js"; import type { ReasoningLevel, VerboseLevel } from "../../../auto-reply/thinking.js"; import { stripReasoningTagsFromText } from "../../../shared/text/reasoning-tags.js"; diff --git a/src/agents/pi-embedded-runner/run/types.ts b/src/agents/pi-embedded-runner/run/types.ts index f0d12348..f2f69003 100644 --- a/src/agents/pi-embedded-runner/run/types.ts +++ b/src/agents/pi-embedded-runner/run/types.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { Api, AssistantMessage, Model } from "@mariozechner/pi-ai"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { Api, AssistantMessage, Model } from "@earendil-works/pi-ai"; import type { ThinkLevel } from "../../../auto-reply/thinking.js"; import type { SessionSystemPromptReport } from "../../../config/sessions/types.js"; import type { MessagingToolSend } from "../../pi-embedded-messaging.js"; diff --git a/src/agents/pi-embedded-runner/sanitize-session-history.tool-result-details.e2e.test.ts b/src/agents/pi-embedded-runner/sanitize-session-history.tool-result-details.e2e.test.ts index 53c97356..50c63bb5 100644 --- a/src/agents/pi-embedded-runner/sanitize-session-history.tool-result-details.e2e.test.ts +++ b/src/agents/pi-embedded-runner/sanitize-session-history.tool-result-details.e2e.test.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import { describe, expect, it } from "vitest"; import { sanitizeSessionHistory } from "./google.js"; diff --git a/src/agents/pi-embedded-runner/system-prompt.ts b/src/agents/pi-embedded-runner/system-prompt.ts index 67df4493..e9a88054 100644 --- a/src/agents/pi-embedded-runner/system-prompt.ts +++ b/src/agents/pi-embedded-runner/system-prompt.ts @@ -1,5 +1,5 @@ -import type { AgentTool } from "@mariozechner/pi-agent-core"; -import type { AgentSession } from "@mariozechner/pi-coding-agent"; +import type { AgentTool } from "@earendil-works/pi-agent-core"; +import type { AgentSession } from "@earendil-works/pi-coding-agent"; import type { MemoryCitationsMode } from "../../config/types.memory.js"; import type { ResolvedTimeFormat } from "../date-time.js"; import type { EmbeddedContextFile } from "../pi-embedded-helpers.js"; @@ -93,7 +93,7 @@ export function applySystemPromptOverrideToSession( override: string | ((defaultPrompt?: string) => string), ) { const prompt = typeof override === "function" ? override() : override.trim(); - session.agent.setSystemPrompt(prompt); + session.agent.state.systemPrompt = prompt; const mutableSession = session as unknown as { _baseSystemPrompt?: string; _rebuildSystemPrompt?: (toolNames: string[]) => string; diff --git a/src/agents/pi-embedded-runner/thinking.ts b/src/agents/pi-embedded-runner/thinking.ts index 5cd7ba7d..38780b70 100644 --- a/src/agents/pi-embedded-runner/thinking.ts +++ b/src/agents/pi-embedded-runner/thinking.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; type AssistantContentBlock = Extract["content"][number]; diff --git a/src/agents/pi-embedded-runner/tool-result-context-guard.e2e.test.ts b/src/agents/pi-embedded-runner/tool-result-context-guard.e2e.test.ts index 00915be4..9cdfd6c9 100644 --- a/src/agents/pi-embedded-runner/tool-result-context-guard.e2e.test.ts +++ b/src/agents/pi-embedded-runner/tool-result-context-guard.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { describe, expect, it } from "vitest"; import { CONTEXT_LIMIT_TRUNCATION_NOTICE, diff --git a/src/agents/pi-embedded-runner/tool-result-context-guard.ts b/src/agents/pi-embedded-runner/tool-result-context-guard.ts index 2cc8d1ba..19ed6a69 100644 --- a/src/agents/pi-embedded-runner/tool-result-context-guard.ts +++ b/src/agents/pi-embedded-runner/tool-result-context-guard.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; const CHARS_PER_TOKEN_ESTIMATE = 4; // Keep a conservative input budget to absorb tokenizer variance and provider framing overhead. diff --git a/src/agents/pi-embedded-runner/tool-result-truncation.e2e.test.ts b/src/agents/pi-embedded-runner/tool-result-truncation.e2e.test.ts index 6b7bbcf4..b75020ab 100644 --- a/src/agents/pi-embedded-runner/tool-result-truncation.e2e.test.ts +++ b/src/agents/pi-embedded-runner/tool-result-truncation.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { describe, expect, it } from "vitest"; import { truncateToolResultText, diff --git a/src/agents/pi-embedded-runner/tool-result-truncation.ts b/src/agents/pi-embedded-runner/tool-result-truncation.ts index 5d54cbf8..811315ec 100644 --- a/src/agents/pi-embedded-runner/tool-result-truncation.ts +++ b/src/agents/pi-embedded-runner/tool-result-truncation.ts @@ -1,6 +1,6 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { TextContent } from "@mariozechner/pi-ai"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { TextContent } from "@earendil-works/pi-ai"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import { log } from "./logger.js"; /** diff --git a/src/agents/pi-embedded-runner/tool-split.ts b/src/agents/pi-embedded-runner/tool-split.ts index 26eb0866..9370f07b 100644 --- a/src/agents/pi-embedded-runner/tool-split.ts +++ b/src/agents/pi-embedded-runner/tool-split.ts @@ -1,4 +1,4 @@ -import type { AgentTool } from "@mariozechner/pi-agent-core"; +import type { AgentTool } from "@earendil-works/pi-agent-core"; import { toToolDefinitions } from "../pi-tool-definition-adapter.js"; // We always pass tools via `customTools` so our policy filtering, sandbox integration, @@ -6,7 +6,7 @@ import { toToolDefinitions } from "../pi-tool-definition-adapter.js"; type AnyAgentTool = AgentTool; export function splitSdkTools(options: { tools: AnyAgentTool[]; sandboxEnabled: boolean }): { - builtInTools: AnyAgentTool[]; + builtInTools: string[]; customTools: ReturnType; } { const { tools } = options; diff --git a/src/agents/pi-embedded-runner/utils.ts b/src/agents/pi-embedded-runner/utils.ts index 9450998e..c35cb47e 100644 --- a/src/agents/pi-embedded-runner/utils.ts +++ b/src/agents/pi-embedded-runner/utils.ts @@ -1,4 +1,4 @@ -import type { ThinkingLevel } from "@mariozechner/pi-agent-core"; +import type { ThinkingLevel } from "@earendil-works/pi-agent-core"; import type { ReasoningLevel, ThinkLevel } from "../../auto-reply/thinking.js"; export function mapThinkingLevel(level?: ThinkLevel): ThinkingLevel { diff --git a/src/agents/pi-embedded-subscribe.e2e-harness.ts b/src/agents/pi-embedded-subscribe.e2e-harness.ts index 918685a1..25d75cd0 100644 --- a/src/agents/pi-embedded-subscribe.e2e-harness.ts +++ b/src/agents/pi-embedded-subscribe.e2e-harness.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { expect } from "vitest"; import { subscribeEmbeddedPiSession } from "./pi-embedded-subscribe.js"; diff --git a/src/agents/pi-embedded-subscribe.handlers.compaction.ts b/src/agents/pi-embedded-subscribe.handlers.compaction.ts index f28e47d1..018863f8 100644 --- a/src/agents/pi-embedded-subscribe.handlers.compaction.ts +++ b/src/agents/pi-embedded-subscribe.handlers.compaction.ts @@ -1,4 +1,4 @@ -import type { AgentEvent } from "@mariozechner/pi-agent-core"; +import type { AgentEvent } from "@earendil-works/pi-agent-core"; import { emitAgentEvent } from "../infra/agent-events.js"; import { getGlobalHookRunner } from "../plugins/hook-runner-global.js"; import type { EmbeddedPiSubscribeContext } from "./pi-embedded-subscribe.handlers.types.js"; diff --git a/src/agents/pi-embedded-subscribe.handlers.messages.ts b/src/agents/pi-embedded-subscribe.handlers.messages.ts index 845ded9f..2a5a79c3 100644 --- a/src/agents/pi-embedded-subscribe.handlers.messages.ts +++ b/src/agents/pi-embedded-subscribe.handlers.messages.ts @@ -1,4 +1,4 @@ -import type { AgentEvent, AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentEvent, AgentMessage } from "@earendil-works/pi-agent-core"; import { parseReplyDirectives } from "../auto-reply/reply/reply-directives.js"; import { SILENT_REPLY_TOKEN } from "../auto-reply/tokens.js"; import { emitAgentEvent } from "../infra/agent-events.js"; diff --git a/src/agents/pi-embedded-subscribe.handlers.tools.media.test-helpers.ts b/src/agents/pi-embedded-subscribe.handlers.tools.media.test-helpers.ts index 378ae575..36816045 100644 --- a/src/agents/pi-embedded-subscribe.handlers.tools.media.test-helpers.ts +++ b/src/agents/pi-embedded-subscribe.handlers.tools.media.test-helpers.ts @@ -1,4 +1,4 @@ -import type { AgentEvent } from "@mariozechner/pi-agent-core"; +import type { AgentEvent } from "@earendil-works/pi-agent-core"; import type { Mock } from "vitest"; import { handleToolExecutionEnd, diff --git a/src/agents/pi-embedded-subscribe.handlers.tools.test.ts b/src/agents/pi-embedded-subscribe.handlers.tools.test.ts index c03eb00d..d116af50 100644 --- a/src/agents/pi-embedded-subscribe.handlers.tools.test.ts +++ b/src/agents/pi-embedded-subscribe.handlers.tools.test.ts @@ -1,4 +1,4 @@ -import type { AgentEvent } from "@mariozechner/pi-agent-core"; +import type { AgentEvent } from "@earendil-works/pi-agent-core"; import { describe, expect, it, vi } from "vitest"; import type { MessagingToolSend } from "./pi-embedded-messaging.js"; import { diff --git a/src/agents/pi-embedded-subscribe.handlers.tools.ts b/src/agents/pi-embedded-subscribe.handlers.tools.ts index 17d6eabf..61c7ccf0 100644 --- a/src/agents/pi-embedded-subscribe.handlers.tools.ts +++ b/src/agents/pi-embedded-subscribe.handlers.tools.ts @@ -1,4 +1,4 @@ -import type { AgentEvent } from "@mariozechner/pi-agent-core"; +import type { AgentEvent } from "@earendil-works/pi-agent-core"; import { emitAgentEvent } from "../infra/agent-events.js"; import { getGlobalHookRunner } from "../plugins/hook-runner-global.js"; import type { PluginHookAfterToolCallEvent } from "../plugins/types.js"; diff --git a/src/agents/pi-embedded-subscribe.handlers.types.ts b/src/agents/pi-embedded-subscribe.handlers.types.ts index d5c72552..9d9a4eea 100644 --- a/src/agents/pi-embedded-subscribe.handlers.types.ts +++ b/src/agents/pi-embedded-subscribe.handlers.types.ts @@ -1,4 +1,4 @@ -import type { AgentEvent, AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentEvent, AgentMessage } from "@earendil-works/pi-agent-core"; import type { ReplyDirectiveParseResult } from "../auto-reply/reply/reply-directives.js"; import type { ReasoningLevel } from "../auto-reply/thinking.js"; import type { InlineCodeState } from "../markdown/code-spans.js"; diff --git a/src/agents/pi-embedded-subscribe.lifecycle-billing-error.e2e.test.ts b/src/agents/pi-embedded-subscribe.lifecycle-billing-error.e2e.test.ts index 669bb50c..8773645c 100644 --- a/src/agents/pi-embedded-subscribe.lifecycle-billing-error.e2e.test.ts +++ b/src/agents/pi-embedded-subscribe.lifecycle-billing-error.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { describe, expect, it, vi } from "vitest"; import { createStubSessionHarness } from "./pi-embedded-subscribe.e2e-harness.js"; import { subscribeEmbeddedPiSession } from "./pi-embedded-subscribe.js"; diff --git a/src/agents/pi-embedded-subscribe.reply-tags.e2e.test.ts b/src/agents/pi-embedded-subscribe.reply-tags.e2e.test.ts index a76db602..961ec557 100644 --- a/src/agents/pi-embedded-subscribe.reply-tags.e2e.test.ts +++ b/src/agents/pi-embedded-subscribe.reply-tags.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { describe, expect, it, vi } from "vitest"; import { createStubSessionHarness, diff --git a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.does-not-emit-duplicate-block-replies-text.e2e.test.ts b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.does-not-emit-duplicate-block-replies-text.e2e.test.ts index 44f829af..dd778b27 100644 --- a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.does-not-emit-duplicate-block-replies-text.e2e.test.ts +++ b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.does-not-emit-duplicate-block-replies-text.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { describe, expect, it, vi } from "vitest"; import { createStubSessionHarness, diff --git a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.emits-block-replies-text-end-does-not.e2e.test.ts b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.emits-block-replies-text-end-does-not.e2e.test.ts index cb383b04..e5097781 100644 --- a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.emits-block-replies-text-end-does-not.e2e.test.ts +++ b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.emits-block-replies-text-end-does-not.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { describe, expect, it, vi } from "vitest"; import { createTextEndBlockReplyHarness, diff --git a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.emits-reasoning-as-separate-message-enabled.e2e.test.ts b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.emits-reasoning-as-separate-message-enabled.e2e.test.ts index 98b4ce09..2da43ccb 100644 --- a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.emits-reasoning-as-separate-message-enabled.e2e.test.ts +++ b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.emits-reasoning-as-separate-message-enabled.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { describe, expect, it, vi } from "vitest"; import { THINKING_TAG_CASES, diff --git a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.filters-final-suppresses-output-without-start-tag.e2e.test.ts b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.filters-final-suppresses-output-without-start-tag.e2e.test.ts index 9ccb7860..87fc886e 100644 --- a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.filters-final-suppresses-output-without-start-tag.e2e.test.ts +++ b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.filters-final-suppresses-output-without-start-tag.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { describe, expect, it, vi } from "vitest"; import { createStubSessionHarness, diff --git a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.keeps-assistanttexts-final-answer-block-replies-are.e2e.test.ts b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.keeps-assistanttexts-final-answer-block-replies-are.e2e.test.ts index 710b1f28..a902d920 100644 --- a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.keeps-assistanttexts-final-answer-block-replies-are.e2e.test.ts +++ b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.keeps-assistanttexts-final-answer-block-replies-are.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { describe, expect, it, vi } from "vitest"; import { createStubSessionHarness, diff --git a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.splits-long-single-line-fenced-blocks-reopen.e2e.test.ts b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.splits-long-single-line-fenced-blocks-reopen.e2e.test.ts index bbc2a019..869f9529 100644 --- a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.splits-long-single-line-fenced-blocks-reopen.e2e.test.ts +++ b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.splits-long-single-line-fenced-blocks-reopen.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { describe, expect, it, vi } from "vitest"; import { createParagraphChunkedBlockReplyHarness, diff --git a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.subscribeembeddedpisession.e2e.test.ts b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.subscribeembeddedpisession.e2e.test.ts index a048ab2d..22f01904 100644 --- a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.subscribeembeddedpisession.e2e.test.ts +++ b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.subscribeembeddedpisession.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { describe, expect, it, vi } from "vitest"; import { THINKING_TAG_CASES, diff --git a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.suppresses-message-end-block-replies-message-tool.e2e.test.ts b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.suppresses-message-end-block-replies-message-tool.e2e.test.ts index 737edc7f..ffd8e672 100644 --- a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.suppresses-message-end-block-replies-message-tool.e2e.test.ts +++ b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.suppresses-message-end-block-replies-message-tool.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { describe, expect, it, vi } from "vitest"; import { createStubSessionHarness, diff --git a/src/agents/pi-embedded-subscribe.ts b/src/agents/pi-embedded-subscribe.ts index b3326c39..267a63df 100644 --- a/src/agents/pi-embedded-subscribe.ts +++ b/src/agents/pi-embedded-subscribe.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { parseReplyDirectives } from "../auto-reply/reply/reply-directives.js"; import { createStreamingDirectiveAccumulator } from "../auto-reply/reply/streaming-directives.js"; import { formatToolAggregate } from "../auto-reply/tool-meta.js"; diff --git a/src/agents/pi-embedded-subscribe.types.ts b/src/agents/pi-embedded-subscribe.types.ts index e9b6ebd3..e536832d 100644 --- a/src/agents/pi-embedded-subscribe.types.ts +++ b/src/agents/pi-embedded-subscribe.types.ts @@ -1,4 +1,4 @@ -import type { AgentSession } from "@mariozechner/pi-coding-agent"; +import type { AgentSession } from "@earendil-works/pi-coding-agent"; import type { ReasoningLevel, VerboseLevel } from "../auto-reply/thinking.js"; import type { MayrosConfig } from "../config/types.mayros.js"; import type { HookRunner } from "../plugins/hooks.js"; diff --git a/src/agents/pi-embedded-utils.e2e.test.ts b/src/agents/pi-embedded-utils.e2e.test.ts index ecb8dace..a5c972ba 100644 --- a/src/agents/pi-embedded-utils.e2e.test.ts +++ b/src/agents/pi-embedded-utils.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { extractAssistantText, diff --git a/src/agents/pi-embedded-utils.ts b/src/agents/pi-embedded-utils.ts index 82ad3efc..88e317f1 100644 --- a/src/agents/pi-embedded-utils.ts +++ b/src/agents/pi-embedded-utils.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { extractTextFromChatContent } from "../shared/chat-content.js"; import { stripReasoningTagsFromText } from "../shared/text/reasoning-tags.js"; import { sanitizeUserFacingText } from "./pi-embedded-helpers.js"; diff --git a/src/agents/pi-extensions/compaction-safeguard.e2e.test.ts b/src/agents/pi-extensions/compaction-safeguard.e2e.test.ts index 3d5fab42..c9f7c12b 100644 --- a/src/agents/pi-extensions/compaction-safeguard.e2e.test.ts +++ b/src/agents/pi-extensions/compaction-safeguard.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { describe, expect, it } from "vitest"; import { getCompactionSafeguardRuntime, diff --git a/src/agents/pi-extensions/compaction-safeguard.ts b/src/agents/pi-extensions/compaction-safeguard.ts index 12c6627e..b0a7a6b0 100644 --- a/src/agents/pi-extensions/compaction-safeguard.ts +++ b/src/agents/pi-extensions/compaction-safeguard.ts @@ -1,7 +1,7 @@ import fs from "node:fs"; import path from "node:path"; -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { ExtensionAPI, FileOperations } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { ExtensionAPI, FileOperations } from "@earendil-works/pi-coding-agent"; import { extractSections } from "../../auto-reply/reply/post-compaction-context.js"; import { BASE_CHUNK_RATIO, @@ -207,7 +207,7 @@ export default function compactionSafeguardExtension(api: ExtensionAPI): void { }; } - const apiKey = await ctx.modelRegistry.getApiKey(model); + const apiKey = await ctx.modelRegistry.getApiKeyForProvider(model.provider); if (!apiKey) { return { compaction: { diff --git a/src/agents/pi-extensions/context-pruning.e2e.test.ts b/src/agents/pi-extensions/context-pruning.e2e.test.ts index c71591d7..649d113b 100644 --- a/src/agents/pi-extensions/context-pruning.e2e.test.ts +++ b/src/agents/pi-extensions/context-pruning.e2e.test.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { ExtensionAPI, ExtensionContext } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent"; import { describe, expect, it } from "vitest"; import { computeEffectiveSettings, diff --git a/src/agents/pi-extensions/context-pruning/extension.ts b/src/agents/pi-extensions/context-pruning/extension.ts index 2a4063ae..dc86e6ed 100644 --- a/src/agents/pi-extensions/context-pruning/extension.ts +++ b/src/agents/pi-extensions/context-pruning/extension.ts @@ -1,4 +1,4 @@ -import type { ContextEvent, ExtensionAPI, ExtensionContext } from "@mariozechner/pi-coding-agent"; +import type { ContextEvent, ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent"; import { pruneContextMessages } from "./pruner.js"; import { getContextPruningRuntime } from "./runtime.js"; diff --git a/src/agents/pi-extensions/context-pruning/pruner.ts b/src/agents/pi-extensions/context-pruning/pruner.ts index acfa6316..406793e1 100644 --- a/src/agents/pi-extensions/context-pruning/pruner.ts +++ b/src/agents/pi-extensions/context-pruning/pruner.ts @@ -1,6 +1,6 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { ImageContent, TextContent, ToolResultMessage } from "@mariozechner/pi-ai"; -import type { ExtensionContext } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { ImageContent, TextContent, ToolResultMessage } from "@earendil-works/pi-ai"; +import type { ExtensionContext } from "@earendil-works/pi-coding-agent"; import type { EffectiveContextPruningSettings } from "./settings.js"; import { makeToolPrunablePredicate } from "./tools.js"; diff --git a/src/agents/pi-model-discovery.ts b/src/agents/pi-model-discovery.ts index 51ac1aeb..96bdcc88 100644 --- a/src/agents/pi-model-discovery.ts +++ b/src/agents/pi-model-discovery.ts @@ -1,7 +1,7 @@ import path from "node:path"; -import { AuthStorage, ModelRegistry } from "@mariozechner/pi-coding-agent"; +import { AuthStorage, ModelRegistry } from "@earendil-works/pi-coding-agent"; -export { AuthStorage, ModelRegistry } from "@mariozechner/pi-coding-agent"; +export { AuthStorage, ModelRegistry } from "@earendil-works/pi-coding-agent"; function createAuthStorage(AuthStorageLike: unknown, path: string) { const withFactory = AuthStorageLike as { create?: (path: string) => unknown }; @@ -17,5 +17,5 @@ export function discoverAuthStorage(agentDir: string): AuthStorage { } export function discoverModels(authStorage: AuthStorage, agentDir: string): ModelRegistry { - return new ModelRegistry(authStorage, path.join(agentDir, "models.json")); + return ModelRegistry.create(authStorage, path.join(agentDir, "models.json")); } diff --git a/src/agents/pi-tool-definition-adapter.after-tool-call.e2e.test.ts b/src/agents/pi-tool-definition-adapter.after-tool-call.e2e.test.ts index 5d442fc6..f6f8a374 100644 --- a/src/agents/pi-tool-definition-adapter.after-tool-call.e2e.test.ts +++ b/src/agents/pi-tool-definition-adapter.after-tool-call.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AgentTool } from "@mariozechner/pi-agent-core"; +import type { AgentTool } from "@earendil-works/pi-agent-core"; import { Type } from "@sinclair/typebox"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { toToolDefinitions } from "./pi-tool-definition-adapter.js"; diff --git a/src/agents/pi-tool-definition-adapter.e2e.test.ts b/src/agents/pi-tool-definition-adapter.e2e.test.ts index 1b11bbf4..161dbe7c 100644 --- a/src/agents/pi-tool-definition-adapter.e2e.test.ts +++ b/src/agents/pi-tool-definition-adapter.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AgentTool } from "@mariozechner/pi-agent-core"; +import type { AgentTool } from "@earendil-works/pi-agent-core"; import { Type } from "@sinclair/typebox"; import { describe, expect, it } from "vitest"; import { toToolDefinitions } from "./pi-tool-definition-adapter.js"; diff --git a/src/agents/pi-tool-definition-adapter.ts b/src/agents/pi-tool-definition-adapter.ts index f3963600..4e70485e 100644 --- a/src/agents/pi-tool-definition-adapter.ts +++ b/src/agents/pi-tool-definition-adapter.ts @@ -2,8 +2,8 @@ import type { AgentTool, AgentToolResult, AgentToolUpdateCallback, -} from "@mariozechner/pi-agent-core"; -import type { ToolDefinition } from "@mariozechner/pi-coding-agent"; +} from "@earendil-works/pi-agent-core"; +import type { ToolDefinition } from "@earendil-works/pi-coding-agent"; import { logDebug, logError } from "../logger.js"; import { getGlobalHookRunner } from "../plugins/hook-runner-global.js"; import { isPlainObject } from "../utils.js"; diff --git a/src/agents/pi-tools.create-mayros-coding-tools.adds-claude-style-aliases-schemas-without-dropping.e2e.test.ts b/src/agents/pi-tools.create-mayros-coding-tools.adds-claude-style-aliases-schemas-without-dropping.e2e.test.ts index 68483d73..a57c4395 100644 --- a/src/agents/pi-tools.create-mayros-coding-tools.adds-claude-style-aliases-schemas-without-dropping.e2e.test.ts +++ b/src/agents/pi-tools.create-mayros-coding-tools.adds-claude-style-aliases-schemas-without-dropping.e2e.test.ts @@ -1,7 +1,7 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import type { AgentTool, AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentTool, AgentToolResult } from "@earendil-works/pi-agent-core"; import { Type } from "@sinclair/typebox"; import { describe, expect, it, vi } from "vitest"; import "./test-helpers/fast-coding-tools.js"; diff --git a/src/agents/pi-tools.policy.e2e.test.ts b/src/agents/pi-tools.policy.e2e.test.ts index b36fb18c..5206e550 100644 --- a/src/agents/pi-tools.policy.e2e.test.ts +++ b/src/agents/pi-tools.policy.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AgentTool, AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentTool, AgentToolResult } from "@earendil-works/pi-agent-core"; import { Type } from "@sinclair/typebox"; import { describe, expect, it } from "vitest"; import type { MayrosConfig } from "../config/config.js"; diff --git a/src/agents/pi-tools.read.ts b/src/agents/pi-tools.read.ts index 385d25a4..397a3c29 100644 --- a/src/agents/pi-tools.read.ts +++ b/src/agents/pi-tools.read.ts @@ -1,5 +1,5 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; -import { createEditTool, createReadTool, createWriteTool } from "@mariozechner/pi-coding-agent"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; +import { createEditTool, createReadTool, createWriteTool } from "@earendil-works/pi-coding-agent"; import { detectMime } from "../media/mime.js"; import { sniffMimeFromBase64 } from "../media/sniff-mime-from-base64.js"; import type { ImageSanitizationLimits } from "./image-sanitization.js"; diff --git a/src/agents/pi-tools.ts b/src/agents/pi-tools.ts index a6ca4386..1f9659fc 100644 --- a/src/agents/pi-tools.ts +++ b/src/agents/pi-tools.ts @@ -1,10 +1,9 @@ import { - codingTools, + createCodingTools, createEditTool, createReadTool, createWriteTool, - readTool, -} from "@mariozechner/pi-coding-agent"; +} from "@earendil-works/pi-coding-agent"; import type { MayrosConfig } from "../config/config.js"; import type { ToolLoopDetectionConfig } from "../config/types.tools.js"; import { logWarn } from "../logger.js"; @@ -303,8 +302,8 @@ export function createMayrosCodingTools(options?: { } const imageSanitization = resolveImageSanitizationLimits(options?.config); - const base = (codingTools as unknown as AnyAgentTool[]).flatMap((tool) => { - if (tool.name === readTool.name) { + const base = (createCodingTools(workspaceRoot) as unknown as AnyAgentTool[]).flatMap((tool) => { + if (tool.name === "read") { if (sandboxRoot) { const sandboxed = createSandboxedReadTool({ root: sandboxRoot, diff --git a/src/agents/pi-tools.types.ts b/src/agents/pi-tools.types.ts index ad2bd85f..3c8aa6fc 100644 --- a/src/agents/pi-tools.types.ts +++ b/src/agents/pi-tools.types.ts @@ -1,4 +1,4 @@ -import type { AgentTool } from "@mariozechner/pi-agent-core"; +import type { AgentTool } from "@earendil-works/pi-agent-core"; // oxlint-disable-next-line typescript/no-explicit-any export type AnyAgentTool = AgentTool; diff --git a/src/agents/session-tool-result-guard-wrapper.ts b/src/agents/session-tool-result-guard-wrapper.ts index 89668023..7ae8539b 100644 --- a/src/agents/session-tool-result-guard-wrapper.ts +++ b/src/agents/session-tool-result-guard-wrapper.ts @@ -1,4 +1,4 @@ -import type { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { SessionManager } from "@earendil-works/pi-coding-agent"; import { getGlobalHookRunner } from "../plugins/hook-runner-global.js"; import { applyInputProvenanceToUserMessage, @@ -30,7 +30,7 @@ export function guardSessionManager( const hookRunner = getGlobalHookRunner(); const beforeMessageWrite = hookRunner?.hasHooks("before_message_write") - ? (event: { message: import("@mariozechner/pi-agent-core").AgentMessage }) => { + ? (event: { message: import("@earendil-works/pi-agent-core").AgentMessage }) => { return hookRunner.runBeforeMessageWrite(event, { agentId: opts?.agentId, sessionKey: opts?.sessionKey, diff --git a/src/agents/session-tool-result-guard.e2e.test.ts b/src/agents/session-tool-result-guard.e2e.test.ts index 37cf5c96..ce2f69ce 100644 --- a/src/agents/session-tool-result-guard.e2e.test.ts +++ b/src/agents/session-tool-result-guard.e2e.test.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import { describe, expect, it } from "vitest"; import { installSessionToolResultGuard } from "./session-tool-result-guard.js"; diff --git a/src/agents/session-tool-result-guard.tool-result-persist-hook.e2e.test.ts b/src/agents/session-tool-result-guard.tool-result-persist-hook.e2e.test.ts index 7c38e73b..b8f3e289 100644 --- a/src/agents/session-tool-result-guard.tool-result-persist-hook.e2e.test.ts +++ b/src/agents/session-tool-result-guard.tool-result-persist-hook.e2e.test.ts @@ -1,8 +1,8 @@ import fs from "node:fs"; import os from "node:os"; import path from "node:path"; -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import { describe, expect, it, afterEach } from "vitest"; import { initializeGlobalHookRunner, diff --git a/src/agents/session-tool-result-guard.ts b/src/agents/session-tool-result-guard.ts index 0f82cd2d..ba1d16ae 100644 --- a/src/agents/session-tool-result-guard.ts +++ b/src/agents/session-tool-result-guard.ts @@ -1,6 +1,6 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { TextContent } from "@mariozechner/pi-ai"; -import type { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { TextContent } from "@earendil-works/pi-ai"; +import type { SessionManager } from "@earendil-works/pi-coding-agent"; import type { PluginHookBeforeMessageWriteEvent, PluginHookBeforeMessageWriteResult, diff --git a/src/agents/session-transcript-repair.e2e.test.ts b/src/agents/session-transcript-repair.e2e.test.ts index de988edf..8f0e2715 100644 --- a/src/agents/session-transcript-repair.e2e.test.ts +++ b/src/agents/session-transcript-repair.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { describe, expect, it } from "vitest"; import { sanitizeToolCallInputs, diff --git a/src/agents/session-transcript-repair.ts b/src/agents/session-transcript-repair.ts index 4741914e..f9e27e1f 100644 --- a/src/agents/session-transcript-repair.ts +++ b/src/agents/session-transcript-repair.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { extractToolCallsFromAssistant, extractToolResultId } from "./tool-call-id.js"; type ToolCallBlock = { diff --git a/src/agents/skills-status.e2e.test.ts b/src/agents/skills-status.e2e.test.ts index 38fa50e8..f4a9e907 100644 --- a/src/agents/skills-status.e2e.test.ts +++ b/src/agents/skills-status.e2e.test.ts @@ -15,7 +15,12 @@ describe("buildWorkspaceSkillStatus", () => { skill: { name: "os-scoped", description: "test", - source: "test", + sourceInfo: { + path: "/tmp/os-scoped", + source: "test", + scope: "project", + origin: "top-level", + }, filePath: "/tmp/os-scoped", baseDir: "/tmp", disableModelInvocation: false, diff --git a/src/agents/skills-status.ts b/src/agents/skills-status.ts index 96dabfa3..0c187630 100644 --- a/src/agents/skills-status.ts +++ b/src/agents/skills-status.ts @@ -189,7 +189,7 @@ function buildSkillStatus( const bundled = bundledNames && bundledNames.size > 0 ? bundledNames.has(entry.skill.name) - : entry.skill.source === "mayros-bundled"; + : entry.skill.sourceInfo.source === "mayros-bundled"; const requirementStatus = evaluateEntryMetadataRequirementsForCurrentPlatform({ always, @@ -207,7 +207,7 @@ function buildSkillStatus( return { name: entry.skill.name, description: entry.skill.description, - source: entry.skill.source, + source: entry.skill.sourceInfo.source, bundled, filePath: entry.skill.filePath, baseDir: entry.skill.baseDir, diff --git a/src/agents/skills.resolveskillspromptforrun.e2e.test.ts b/src/agents/skills.resolveskillspromptforrun.e2e.test.ts index a5c2acfe..3a546231 100644 --- a/src/agents/skills.resolveskillspromptforrun.e2e.test.ts +++ b/src/agents/skills.resolveskillspromptforrun.e2e.test.ts @@ -17,7 +17,12 @@ describe("resolveSkillsPromptForRun", () => { description: "Demo", filePath: "/app/skills/demo-skill/SKILL.md", baseDir: "/app/skills/demo-skill", - source: "mayros-bundled", + sourceInfo: { + path: "/app/skills/demo-skill/SKILL.md", + source: "mayros-bundled", + scope: "project", + origin: "top-level", + }, disableModelInvocation: false, }, frontmatter: {}, diff --git a/src/agents/skills/bundled-context.ts b/src/agents/skills/bundled-context.ts index 06576497..b5f3d4a3 100644 --- a/src/agents/skills/bundled-context.ts +++ b/src/agents/skills/bundled-context.ts @@ -1,4 +1,4 @@ -import { loadSkillsFromDir } from "@mariozechner/pi-coding-agent"; +import { loadSkillsFromDir } from "@earendil-works/pi-coding-agent"; import { createSubsystemLogger } from "../../logging/subsystem.js"; import { resolveBundledSkillsDir, type BundledSkillsResolveOptions } from "./bundled-dir.js"; diff --git a/src/agents/skills/config.ts b/src/agents/skills/config.ts index ebbad246..097506dc 100644 --- a/src/agents/skills/config.ts +++ b/src/agents/skills/config.ts @@ -49,7 +49,7 @@ function normalizeAllowlist(input: unknown): string[] | undefined { const BUNDLED_SOURCES = new Set(["mayros-bundled"]); function isBundledSkill(entry: SkillEntry): boolean { - return BUNDLED_SOURCES.has(entry.skill.source); + return BUNDLED_SOURCES.has(entry.skill.sourceInfo.source); } export function resolveBundledAllowlist(config?: MayrosConfig): string[] | undefined { diff --git a/src/agents/skills/frontmatter.ts b/src/agents/skills/frontmatter.ts index 7575fbb3..abf46fd9 100644 --- a/src/agents/skills/frontmatter.ts +++ b/src/agents/skills/frontmatter.ts @@ -1,4 +1,4 @@ -import type { Skill } from "@mariozechner/pi-coding-agent"; +import type { Skill } from "@earendil-works/pi-coding-agent"; import { parseFrontmatterBlock } from "../../markdown/frontmatter.js"; import { getFrontmatterString, diff --git a/src/agents/skills/types.ts b/src/agents/skills/types.ts index ca93f42e..d2a0ae62 100644 --- a/src/agents/skills/types.ts +++ b/src/agents/skills/types.ts @@ -1,4 +1,4 @@ -import type { Skill } from "@mariozechner/pi-coding-agent"; +import type { Skill } from "@earendil-works/pi-coding-agent"; export type SkillInstallSpec = { id?: string; diff --git a/src/agents/skills/workspace.ts b/src/agents/skills/workspace.ts index 02901c0c..b69ad4f2 100644 --- a/src/agents/skills/workspace.ts +++ b/src/agents/skills/workspace.ts @@ -5,7 +5,7 @@ import { formatSkillsForPrompt, loadSkillsFromDir, type Skill, -} from "@mariozechner/pi-coding-agent"; +} from "@earendil-works/pi-coding-agent"; import type { MayrosConfig } from "../../config/config.js"; import { createSubsystemLogger } from "../../logging/subsystem.js"; import { CONFIG_DIR, resolveUserPath } from "../../utils.js"; diff --git a/src/agents/system-prompt-report.ts b/src/agents/system-prompt-report.ts index 71d77f47..f1077d75 100644 --- a/src/agents/system-prompt-report.ts +++ b/src/agents/system-prompt-report.ts @@ -1,5 +1,5 @@ import path from "node:path"; -import type { AgentTool } from "@mariozechner/pi-agent-core"; +import type { AgentTool } from "@earendil-works/pi-agent-core"; import type { SessionSystemPromptReport } from "../config/sessions/types.js"; import type { EmbeddedContextFile } from "./pi-embedded-helpers.js"; import type { WorkspaceBootstrapFile } from "./workspace.js"; diff --git a/src/agents/test-helpers/assistant-message-fixtures.ts b/src/agents/test-helpers/assistant-message-fixtures.ts index edf26770..ebac953b 100644 --- a/src/agents/test-helpers/assistant-message-fixtures.ts +++ b/src/agents/test-helpers/assistant-message-fixtures.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; const ZERO_USAGE: AssistantMessage["usage"] = { input: 0, diff --git a/src/agents/tool-call-id.e2e.test.ts b/src/agents/tool-call-id.e2e.test.ts index ce4e5dd6..69480307 100644 --- a/src/agents/tool-call-id.e2e.test.ts +++ b/src/agents/tool-call-id.e2e.test.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { describe, expect, it } from "vitest"; import { isValidCloudCodeAssistToolId, diff --git a/src/agents/tool-call-id.ts b/src/agents/tool-call-id.ts index e30236e6..6a39360c 100644 --- a/src/agents/tool-call-id.ts +++ b/src/agents/tool-call-id.ts @@ -1,5 +1,5 @@ import { createHash } from "node:crypto"; -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; export type ToolCallIdMode = "strict" | "strict9"; diff --git a/src/agents/tool-images.ts b/src/agents/tool-images.ts index 0059578e..f4a1f6b7 100644 --- a/src/agents/tool-images.ts +++ b/src/agents/tool-images.ts @@ -1,5 +1,5 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; -import type { ImageContent } from "@mariozechner/pi-ai"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; +import type { ImageContent } from "@earendil-works/pi-ai"; import { createSubsystemLogger } from "../logging/subsystem.js"; import { buildImageResizeSideGrid, diff --git a/src/agents/tool-summaries.ts b/src/agents/tool-summaries.ts index bca325e4..009e6868 100644 --- a/src/agents/tool-summaries.ts +++ b/src/agents/tool-summaries.ts @@ -1,4 +1,4 @@ -import type { AgentTool } from "@mariozechner/pi-agent-core"; +import type { AgentTool } from "@earendil-works/pi-agent-core"; export function buildToolSummaryMap(tools: AgentTool[]): Record { const summaries: Record = {}; diff --git a/src/agents/tools/common.ts b/src/agents/tools/common.ts index 1aea6dd3..25556822 100644 --- a/src/agents/tools/common.ts +++ b/src/agents/tools/common.ts @@ -1,5 +1,5 @@ import fs from "node:fs/promises"; -import type { AgentTool, AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentTool, AgentToolResult } from "@earendil-works/pi-agent-core"; import { detectMime } from "../../media/mime.js"; import type { ImageSanitizationLimits } from "../image-sanitization.js"; import { sanitizeToolResultImages } from "../tool-images.js"; diff --git a/src/agents/tools/discord-actions-guild.ts b/src/agents/tools/discord-actions-guild.ts index 630c6e9a..fc026680 100644 --- a/src/agents/tools/discord-actions-guild.ts +++ b/src/agents/tools/discord-actions-guild.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import type { DiscordActionConfig } from "../../config/config.js"; import { getPresence } from "../../discord/monitor/presence-cache.js"; import { diff --git a/src/agents/tools/discord-actions-messaging.ts b/src/agents/tools/discord-actions-messaging.ts index 144992ac..f73a6be5 100644 --- a/src/agents/tools/discord-actions-messaging.ts +++ b/src/agents/tools/discord-actions-messaging.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import type { DiscordActionConfig } from "../../config/config.js"; import { readDiscordComponentSpec } from "../../discord/components.js"; import { diff --git a/src/agents/tools/discord-actions-moderation.ts b/src/agents/tools/discord-actions-moderation.ts index c2dd5ebc..ba981e43 100644 --- a/src/agents/tools/discord-actions-moderation.ts +++ b/src/agents/tools/discord-actions-moderation.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import type { DiscordActionConfig } from "../../config/config.js"; import { banMemberDiscord, diff --git a/src/agents/tools/discord-actions-presence.ts b/src/agents/tools/discord-actions-presence.ts index 90639aa6..5a0bc2f2 100644 --- a/src/agents/tools/discord-actions-presence.ts +++ b/src/agents/tools/discord-actions-presence.ts @@ -1,5 +1,5 @@ import type { Activity, UpdatePresenceData } from "@buape/carbon/gateway"; -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import type { DiscordActionConfig } from "../../config/config.js"; import { getGateway } from "../../discord/monitor/gateway-registry.js"; import { type ActionGate, jsonResult, readStringParam } from "./common.js"; diff --git a/src/agents/tools/discord-actions.ts b/src/agents/tools/discord-actions.ts index 3b33f91e..109b3767 100644 --- a/src/agents/tools/discord-actions.ts +++ b/src/agents/tools/discord-actions.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import type { MayrosConfig } from "../../config/config.js"; import { createDiscordActionGate } from "../../discord/accounts.js"; import { readStringParam } from "./common.js"; diff --git a/src/agents/tools/image-tool.helpers.ts b/src/agents/tools/image-tool.helpers.ts index 61943a4b..d294dbbc 100644 --- a/src/agents/tools/image-tool.helpers.ts +++ b/src/agents/tools/image-tool.helpers.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import type { MayrosConfig } from "../../config/config.js"; import { extractAssistantText } from "../pi-embedded-utils.js"; diff --git a/src/agents/tools/image-tool.ts b/src/agents/tools/image-tool.ts index e6b520a7..693bf922 100644 --- a/src/agents/tools/image-tool.ts +++ b/src/agents/tools/image-tool.ts @@ -1,5 +1,6 @@ import path from "node:path"; -import { type Api, type Context, complete, type Model } from "@mariozechner/pi-ai"; +import type { Api, Context, Model } from "@earendil-works/pi-ai"; +import { complete } from "@earendil-works/pi-ai/compat"; import { Type } from "@sinclair/typebox"; import type { MayrosConfig } from "../../config/config.js"; import { resolveUserPath } from "../../utils.js"; diff --git a/src/agents/tools/memory-tool.ts b/src/agents/tools/memory-tool.ts index 2ba91da6..32ee0ac8 100644 --- a/src/agents/tools/memory-tool.ts +++ b/src/agents/tools/memory-tool.ts @@ -52,7 +52,8 @@ export function createMemorySearchTool(options: { description: "Mandatory recall step: semantically search MEMORY.md + memory/*.md (and optional session transcripts) before answering questions about prior work, decisions, dates, people, preferences, or todos; returns top snippets with path + lines. If response has disabled=true, memory retrieval is unavailable and should be surfaced to the user.", parameters: MemorySearchSchema, - execute: async (_toolCallId, params) => { + execute: async (_toolCallId, rawParams) => { + const params = rawParams as Record; const query = readStringParam(params, "query", { required: true }); const maxResults = readNumberParam(params, "maxResults"); const minScore = readNumberParam(params, "minScore"); @@ -113,7 +114,8 @@ export function createMemoryGetTool(options: { description: "Safe snippet read from MEMORY.md or memory/*.md with optional from/lines; use after memory_search to pull only the needed lines and keep context small.", parameters: MemoryGetSchema, - execute: async (_toolCallId, params) => { + execute: async (_toolCallId, rawParams) => { + const params = rawParams as Record; const relPath = readStringParam(params, "path", { required: true }); const from = readNumberParam(params, "from", { integer: true }); const lines = readNumberParam(params, "lines", { integer: true }); diff --git a/src/agents/tools/nodes-tool.ts b/src/agents/tools/nodes-tool.ts index d3d85872..6cf7d6e4 100644 --- a/src/agents/tools/nodes-tool.ts +++ b/src/agents/tools/nodes-tool.ts @@ -1,5 +1,5 @@ import crypto from "node:crypto"; -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { Type } from "@sinclair/typebox"; import { type CameraFacing, diff --git a/src/agents/tools/slack-actions.ts b/src/agents/tools/slack-actions.ts index e3b08227..bcdb50cf 100644 --- a/src/agents/tools/slack-actions.ts +++ b/src/agents/tools/slack-actions.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import type { MayrosConfig } from "../../config/config.js"; import { resolveSlackAccount } from "../../slack/accounts.js"; import { diff --git a/src/agents/tools/telegram-actions.ts b/src/agents/tools/telegram-actions.ts index f2d5f941..057fd9e9 100644 --- a/src/agents/tools/telegram-actions.ts +++ b/src/agents/tools/telegram-actions.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import type { MayrosConfig } from "../../config/config.js"; import { createTelegramActionGate } from "../../telegram/accounts.js"; import type { TelegramButtonStyle, TelegramInlineButtons } from "../../telegram/button-types.js"; diff --git a/src/agents/tools/whatsapp-actions.ts b/src/agents/tools/whatsapp-actions.ts index 2957d419..cbaf0d8d 100644 --- a/src/agents/tools/whatsapp-actions.ts +++ b/src/agents/tools/whatsapp-actions.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import type { MayrosConfig } from "../../config/config.js"; import { sendReactionWhatsApp } from "../../web/outbound.js"; import { createActionGate, jsonResult, readReactionParams, readStringParam } from "./common.js"; diff --git a/src/agents/zai.live.test.ts b/src/agents/zai.live.test.ts index fbca5a07..428c821d 100644 --- a/src/agents/zai.live.test.ts +++ b/src/agents/zai.live.test.ts @@ -1,4 +1,4 @@ -import { completeSimple, getModel } from "@mariozechner/pi-ai"; +import { completeSimple, getModel } from "@earendil-works/pi-ai/compat"; import { describe, expect, it } from "vitest"; import { isTruthyEnvValue } from "../infra/env.js"; diff --git a/src/auto-reply/reply/commands-export-session.ts b/src/auto-reply/reply/commands-export-session.ts index b05d059d..ead4f437 100644 --- a/src/auto-reply/reply/commands-export-session.ts +++ b/src/auto-reply/reply/commands-export-session.ts @@ -1,8 +1,11 @@ import fs from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; -import type { SessionEntry as PiSessionEntry, SessionHeader } from "@mariozechner/pi-coding-agent"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { + SessionEntry as PiSessionEntry, + SessionHeader, +} from "@earendil-works/pi-coding-agent"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import { resolveDefaultSessionStorePath, resolveSessionFilePath, diff --git a/src/auto-reply/reply/commands-system-prompt.ts b/src/auto-reply/reply/commands-system-prompt.ts index a8c4fbe3..159bd4e8 100644 --- a/src/auto-reply/reply/commands-system-prompt.ts +++ b/src/auto-reply/reply/commands-system-prompt.ts @@ -1,4 +1,4 @@ -import type { AgentTool } from "@mariozechner/pi-agent-core"; +import type { AgentTool } from "@earendil-works/pi-agent-core"; import { resolveSessionAgentIds } from "../../agents/agent-scope.js"; import { resolveBootstrapContextForRun } from "../../agents/bootstrap-files.js"; import { resolveDefaultModelForAgent } from "../../agents/model-selection.js"; diff --git a/src/auto-reply/reply/session.ts b/src/auto-reply/reply/session.ts index 01c445f3..2e9def31 100644 --- a/src/auto-reply/reply/session.ts +++ b/src/auto-reply/reply/session.ts @@ -1,7 +1,7 @@ import crypto from "node:crypto"; import fs from "node:fs"; import path from "node:path"; -import { CURRENT_SESSION_VERSION, SessionManager } from "@mariozechner/pi-coding-agent"; +import { CURRENT_SESSION_VERSION, SessionManager } from "@earendil-works/pi-coding-agent"; import { resolveSessionAgentId } from "../../agents/agent-scope.js"; import { normalizeChatType } from "../../channels/chat-type.js"; import type { MayrosConfig } from "../../config/config.js"; diff --git a/src/auto-reply/types.ts b/src/auto-reply/types.ts index 839fac55..34f5ce64 100644 --- a/src/auto-reply/types.ts +++ b/src/auto-reply/types.ts @@ -1,4 +1,4 @@ -import type { ImageContent } from "@mariozechner/pi-ai"; +import type { ImageContent } from "@earendil-works/pi-ai"; import type { TypingController } from "./reply/typing.js"; export type BlockReplyContext = { diff --git a/src/channels/plugins/actions/discord/handle-action.guild-admin.ts b/src/channels/plugins/actions/discord/handle-action.guild-admin.ts index 18c3bfd0..eca79687 100644 --- a/src/channels/plugins/actions/discord/handle-action.guild-admin.ts +++ b/src/channels/plugins/actions/discord/handle-action.guild-admin.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { parseAvailableTags, readNumberParam, diff --git a/src/channels/plugins/actions/discord/handle-action.ts b/src/channels/plugins/actions/discord/handle-action.ts index a2711dc0..4579ed6d 100644 --- a/src/channels/plugins/actions/discord/handle-action.ts +++ b/src/channels/plugins/actions/discord/handle-action.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { readNumberParam, readStringArrayParam, diff --git a/src/channels/plugins/message-actions.ts b/src/channels/plugins/message-actions.ts index 86834661..3e360bcd 100644 --- a/src/channels/plugins/message-actions.ts +++ b/src/channels/plugins/message-actions.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import type { MayrosConfig } from "../../config/config.js"; import { getChannelPlugin, listChannelPlugins } from "./index.js"; import type { ChannelMessageActionContext, ChannelMessageActionName } from "./types.js"; diff --git a/src/channels/plugins/types.core.ts b/src/channels/plugins/types.core.ts index f1e163f2..f580de83 100644 --- a/src/channels/plugins/types.core.ts +++ b/src/channels/plugins/types.core.ts @@ -1,4 +1,4 @@ -import type { AgentTool, AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentTool, AgentToolResult } from "@earendil-works/pi-agent-core"; import type { TSchema } from "@sinclair/typebox"; import type { MsgContext } from "../../auto-reply/templating.js"; import type { MayrosConfig } from "../../config/config.js"; diff --git a/src/cli/skills-cli.e2e.test.ts b/src/cli/skills-cli.e2e.test.ts index 345587a0..2f700f45 100644 --- a/src/cli/skills-cli.e2e.test.ts +++ b/src/cli/skills-cli.e2e.test.ts @@ -36,7 +36,12 @@ describe("skills-cli (e2e)", () => { skill: { name: "peekaboo", description: "Capture UI screenshots", - source: "mayros-bundled", + sourceInfo: { + path: path.join(baseDir, "SKILL.md"), + source: "mayros-bundled", + scope: "project", + origin: "top-level", + }, filePath: path.join(baseDir, "SKILL.md"), baseDir, } as SkillEntry["skill"], diff --git a/src/cli/skills-cli.test.ts b/src/cli/skills-cli.test.ts index 5546ed9e..44e4e72c 100644 --- a/src/cli/skills-cli.test.ts +++ b/src/cli/skills-cli.test.ts @@ -4,7 +4,7 @@ import { createEmptyInstallChecks } from "./requirements-test-fixtures.js"; import { formatSkillInfo, formatSkillsCheck, formatSkillsList } from "./skills-cli.format.js"; // Unit tests: don't pay the runtime cost of loading/parsing the real skills loader. -vi.mock("@mariozechner/pi-coding-agent", () => ({ +vi.mock("@earendil-works/pi-coding-agent", () => ({ loadSkillsFromDir: () => ({ skills: [] }), formatSkillsForPrompt: () => "", })); diff --git a/src/commands/auth-choice.e2e.test.ts b/src/commands/auth-choice.e2e.test.ts index 5718187e..aa7fbba8 100644 --- a/src/commands/auth-choice.e2e.test.ts +++ b/src/commands/auth-choice.e2e.test.ts @@ -1,5 +1,5 @@ import fs from "node:fs/promises"; -import type { OAuthCredentials } from "@mariozechner/pi-ai"; +import type { OAuthCredentials } from "@earendil-works/pi-ai"; import { afterEach, describe, expect, it, vi } from "vitest"; import type { WizardPrompter } from "../wizard/prompts.js"; import { applyAuthChoice, resolvePreferredProviderForAuthChoice } from "./auth-choice.js"; diff --git a/src/commands/chutes-oauth.ts b/src/commands/chutes-oauth.ts index cc4d88b2..0e686c74 100644 --- a/src/commands/chutes-oauth.ts +++ b/src/commands/chutes-oauth.ts @@ -1,6 +1,6 @@ import { randomBytes } from "node:crypto"; import { createServer } from "node:http"; -import type { OAuthCredentials } from "@mariozechner/pi-ai"; +import type { OAuthCredentials } from "@earendil-works/pi-ai"; import type { ChutesOAuthAppConfig } from "../agents/chutes-oauth.js"; import { CHUTES_AUTHORIZE_ENDPOINT, diff --git a/src/commands/models/list.list-command.ts b/src/commands/models/list.list-command.ts index dc195985..2b30157f 100644 --- a/src/commands/models/list.list-command.ts +++ b/src/commands/models/list.list-command.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { resolveForwardCompatModel } from "../../agents/model-forward-compat.js"; import { parseModelRef } from "../../agents/model-selection.js"; import type { ModelRegistry } from "../../agents/pi-model-discovery.js"; diff --git a/src/commands/models/list.registry.ts b/src/commands/models/list.registry.ts index 27d9f29f..aad52655 100644 --- a/src/commands/models/list.registry.ts +++ b/src/commands/models/list.registry.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { resolveMayrosAgentDir } from "../../agents/agent-paths.js"; import type { AuthProfileStore } from "../../agents/auth-profiles.js"; import { listProfilesForProvider } from "../../agents/auth-profiles.js"; diff --git a/src/commands/onboard-auth.credentials.ts b/src/commands/onboard-auth.credentials.ts index e224ff8f..f00c4e59 100644 --- a/src/commands/onboard-auth.credentials.ts +++ b/src/commands/onboard-auth.credentials.ts @@ -1,6 +1,6 @@ import fs from "node:fs"; import path from "node:path"; -import type { OAuthCredentials } from "@mariozechner/pi-ai"; +import type { OAuthCredentials } from "@earendil-works/pi-ai"; import { resolveMayrosAgentDir } from "../agents/agent-paths.js"; import { upsertAuthProfile } from "../agents/auth-profiles.js"; import { resolveStateDir } from "../config/paths.js"; diff --git a/src/commands/onboard-auth.e2e.test.ts b/src/commands/onboard-auth.e2e.test.ts index 92a59142..0643866c 100644 --- a/src/commands/onboard-auth.e2e.test.ts +++ b/src/commands/onboard-auth.e2e.test.ts @@ -1,7 +1,7 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import type { OAuthCredentials } from "@mariozechner/pi-ai"; +import type { OAuthCredentials } from "@earendil-works/pi-ai"; import { afterEach, describe, expect, it } from "vitest"; import type { MayrosConfig } from "../config/config.js"; import { diff --git a/src/commands/openai-codex-oauth.test.ts b/src/commands/openai-codex-oauth.test.ts index d68645d9..167e2b80 100644 --- a/src/commands/openai-codex-oauth.test.ts +++ b/src/commands/openai-codex-oauth.test.ts @@ -7,7 +7,7 @@ const mocks = vi.hoisted(() => ({ createVpsAwareOAuthHandlers: vi.fn(), })); -vi.mock("@mariozechner/pi-ai", () => ({ +vi.mock("@earendil-works/pi-ai", () => ({ loginOpenAICodex: mocks.loginOpenAICodex, })); diff --git a/src/commands/openai-codex-oauth.ts b/src/commands/openai-codex-oauth.ts index 7c7e4a68..e0a0f022 100644 --- a/src/commands/openai-codex-oauth.ts +++ b/src/commands/openai-codex-oauth.ts @@ -1,5 +1,5 @@ -import type { OAuthCredentials } from "@mariozechner/pi-ai"; -import { loginOpenAICodex } from "@mariozechner/pi-ai"; +import type { OAuthCredentials } from "@earendil-works/pi-ai"; +import { loginOpenAICodex } from "@earendil-works/pi-ai/oauth"; import type { RuntimeEnv } from "../runtime.js"; import type { WizardPrompter } from "../wizard/prompts.js"; import { createVpsAwareOAuthHandlers } from "./oauth-flow.js"; diff --git a/src/config/sessions/transcript.ts b/src/config/sessions/transcript.ts index 720fd69e..85cc21d1 100644 --- a/src/config/sessions/transcript.ts +++ b/src/config/sessions/transcript.ts @@ -1,6 +1,6 @@ import fs from "node:fs"; import path from "node:path"; -import { CURRENT_SESSION_VERSION, SessionManager } from "@mariozechner/pi-coding-agent"; +import { CURRENT_SESSION_VERSION, SessionManager } from "@earendil-works/pi-coding-agent"; import { emitSessionTranscriptUpdate } from "../../sessions/transcript-events.js"; import { resolveDefaultSessionStorePath } from "./paths.js"; import { resolveAndPersistSessionFile } from "./session-file.js"; diff --git a/src/config/sessions/types.ts b/src/config/sessions/types.ts index 10d1d3bc..1e2093ca 100644 --- a/src/config/sessions/types.ts +++ b/src/config/sessions/types.ts @@ -1,5 +1,5 @@ import crypto from "node:crypto"; -import type { Skill } from "@mariozechner/pi-coding-agent"; +import type { Skill } from "@earendil-works/pi-coding-agent"; import type { ChatType } from "../../channels/chat-type.js"; import type { ChannelId } from "../../channels/plugins/types.js"; import type { DeliveryContext } from "../../utils/delivery-context.js"; diff --git a/src/gateway/gateway-models.profiles.live.test.ts b/src/gateway/gateway-models.profiles.live.test.ts index 214a63ba..d23af5d9 100644 --- a/src/gateway/gateway-models.profiles.live.test.ts +++ b/src/gateway/gateway-models.profiles.live.test.ts @@ -3,7 +3,7 @@ import fs from "node:fs/promises"; import { createServer } from "node:net"; import os from "node:os"; import path from "node:path"; -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { describe, it } from "vitest"; import { resolveMayrosAgentDir } from "../agents/agent-paths.js"; import { resolveAgentWorkspaceDir } from "../agents/agent-scope.js"; diff --git a/src/gateway/server-methods/chat.abort-persistence.test.ts b/src/gateway/server-methods/chat.abort-persistence.test.ts index 5453fdbd..a81aa1c4 100644 --- a/src/gateway/server-methods/chat.abort-persistence.test.ts +++ b/src/gateway/server-methods/chat.abort-persistence.test.ts @@ -1,7 +1,7 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import { CURRENT_SESSION_VERSION } from "@mariozechner/pi-coding-agent"; +import { CURRENT_SESSION_VERSION } from "@earendil-works/pi-coding-agent"; import { afterEach, describe, expect, it, vi } from "vitest"; type TranscriptLine = { diff --git a/src/gateway/server-methods/chat.inject.parentid.e2e.test.ts b/src/gateway/server-methods/chat.inject.parentid.e2e.test.ts index 60fbec4c..9c21afb3 100644 --- a/src/gateway/server-methods/chat.inject.parentid.e2e.test.ts +++ b/src/gateway/server-methods/chat.inject.parentid.e2e.test.ts @@ -1,7 +1,7 @@ import fs from "node:fs"; import os from "node:os"; import path from "node:path"; -import { CURRENT_SESSION_VERSION } from "@mariozechner/pi-coding-agent"; +import { CURRENT_SESSION_VERSION } from "@earendil-works/pi-coding-agent"; import { describe, expect, it, vi } from "vitest"; import type { GatewayRequestContext } from "./types.js"; diff --git a/src/gateway/server-methods/chat.ts b/src/gateway/server-methods/chat.ts index cb040350..22ead1ff 100644 --- a/src/gateway/server-methods/chat.ts +++ b/src/gateway/server-methods/chat.ts @@ -1,6 +1,6 @@ import fs from "node:fs"; import path from "node:path"; -import { CURRENT_SESSION_VERSION, SessionManager } from "@mariozechner/pi-coding-agent"; +import { CURRENT_SESSION_VERSION, SessionManager } from "@earendil-works/pi-coding-agent"; import { resolveSessionAgentId } from "../../agents/agent-scope.js"; import { resolveThinkingDefault } from "../../agents/model-selection.js"; import { resolveAgentTimeoutMs } from "../../agents/timeout.js"; diff --git a/src/gateway/test-helpers.mocks.ts b/src/gateway/test-helpers.mocks.ts index 3f1501bd..61d16411 100644 --- a/src/gateway/test-helpers.mocks.ts +++ b/src/gateway/test-helpers.mocks.ts @@ -243,20 +243,25 @@ vi.mock("../agents/pi-model-discovery.js", async () => { "../agents/pi-model-discovery.js", ); - class MockModelRegistry extends actual.ModelRegistry { - override getAll(): ReturnType { + // ModelRegistry now has a private constructor and cannot be subclassed. + // Patch the instance returned by discoverModels to intercept getAll(). + const mockedDiscoverModels = ((authStorage, agentDir) => { + const registry = actual.discoverModels(authStorage, agentDir); + const originalGetAll = registry.getAll.bind(registry); + registry.getAll = () => { if (!piSdkMock.enabled) { - return super.getAll(); + return originalGetAll(); } piSdkMock.discoverCalls += 1; // Cast to expected type for testing purposes - return piSdkMock.models as ReturnType; - } - } + return piSdkMock.models as ReturnType; + }; + return registry; + }) as typeof actual.discoverModels; return { ...actual, - ModelRegistry: MockModelRegistry, + discoverModels: mockedDiscoverModels, }; }); diff --git a/src/infra/outbound/message-action-runner.ts b/src/infra/outbound/message-action-runner.ts index 6fe0ea87..3ef9001c 100644 --- a/src/infra/outbound/message-action-runner.ts +++ b/src/infra/outbound/message-action-runner.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { resolveSessionAgentId } from "../../agents/agent-scope.js"; import { readNumberParam, diff --git a/src/infra/outbound/outbound-send-service.ts b/src/infra/outbound/outbound-send-service.ts index 1ece9de6..94689734 100644 --- a/src/infra/outbound/outbound-send-service.ts +++ b/src/infra/outbound/outbound-send-service.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { dispatchChannelMessageAction } from "../../channels/plugins/message-actions.js"; import type { ChannelId, ChannelThreadingToolContext } from "../../channels/plugins/types.js"; import type { MayrosConfig } from "../../config/config.js"; diff --git a/src/infra/outbound/tool-payload.ts b/src/infra/outbound/tool-payload.ts index 33a8d1fd..23712a65 100644 --- a/src/infra/outbound/tool-payload.ts +++ b/src/infra/outbound/tool-payload.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; export function extractToolPayload(result: AgentToolResult): unknown { if (result.details !== undefined) { diff --git a/src/media-understanding/providers/image.ts b/src/media-understanding/providers/image.ts index 9665a0ef..60ec8326 100644 --- a/src/media-understanding/providers/image.ts +++ b/src/media-understanding/providers/image.ts @@ -1,5 +1,5 @@ -import type { Api, Context, Model } from "@mariozechner/pi-ai"; -import { complete } from "@mariozechner/pi-ai"; +import type { Api, Context, Model } from "@earendil-works/pi-ai"; +import { complete } from "@earendil-works/pi-ai/compat"; import { minimaxUnderstandImage } from "../../agents/minimax-vlm.js"; import { getApiKeyForModel, requireApiKey } from "../../agents/model-auth.js"; import { ensureMayrosModelsJson } from "../../agents/models-config.js"; diff --git a/src/plugin-sdk/slack-message-actions.ts b/src/plugin-sdk/slack-message-actions.ts index 77b24b95..d1522e6c 100644 --- a/src/plugin-sdk/slack-message-actions.ts +++ b/src/plugin-sdk/slack-message-actions.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { readNumberParam, readStringParam } from "../agents/tools/common.js"; import type { ChannelMessageActionContext } from "../channels/plugins/types.js"; import { parseSlackBlocksInput } from "../slack/blocks-input.js"; diff --git a/src/plugins/types.ts b/src/plugins/types.ts index de30f31d..56d0e6b9 100644 --- a/src/plugins/types.ts +++ b/src/plugins/types.ts @@ -1,5 +1,5 @@ import type { IncomingMessage, ServerResponse } from "node:http"; -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import type { Command } from "commander"; import type { AuthProfileCredential, OAuthCredential } from "../agents/auth-profiles/types.js"; import type { AnyAgentTool } from "../agents/tools/common.js"; diff --git a/src/providers/google-shared.ensures-function-call-comes-after-user-turn.test.ts b/src/providers/google-shared.ensures-function-call-comes-after-user-turn.test.ts index 9f209f3b..a6603e91 100644 --- a/src/providers/google-shared.ensures-function-call-comes-after-user-turn.test.ts +++ b/src/providers/google-shared.ensures-function-call-comes-after-user-turn.test.ts @@ -1,5 +1,5 @@ -import { convertMessages } from "@mariozechner/pi-ai/dist/providers/google-shared.js"; -import type { Context } from "@mariozechner/pi-ai/dist/types.js"; +import { convertMessages } from "@earendil-works/pi-ai/api/google-shared"; +import type { Context, Model } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { asRecord, @@ -70,7 +70,7 @@ describe("google-shared convertTools", () => { ], } as unknown as Context; - const contents = convertMessages(model, context); + const contents = convertMessages(model as unknown as Model<"google-generative-ai">, context); const parts = contents.flatMap((content) => content.parts ?? []); const toolCallPart = parts.find( (part) => typeof part === "object" && part !== null && "functionCall" in part, diff --git a/src/providers/google-shared.preserves-parameters-type-is-missing.test.ts b/src/providers/google-shared.preserves-parameters-type-is-missing.test.ts index 3dc27a4c..6b5c4265 100644 --- a/src/providers/google-shared.preserves-parameters-type-is-missing.test.ts +++ b/src/providers/google-shared.preserves-parameters-type-is-missing.test.ts @@ -1,5 +1,5 @@ -import { convertMessages, convertTools } from "@mariozechner/pi-ai/dist/providers/google-shared.js"; -import type { Context, Tool } from "@mariozechner/pi-ai/dist/types.js"; +import { convertMessages, convertTools } from "@earendil-works/pi-ai/api/google-shared"; +import type { Context, Tool } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { asRecord, diff --git a/src/providers/google-shared.test-helpers.ts b/src/providers/google-shared.test-helpers.ts index c98fad72..a4985426 100644 --- a/src/providers/google-shared.test-helpers.ts +++ b/src/providers/google-shared.test-helpers.ts @@ -1,4 +1,4 @@ -import type { Model } from "@mariozechner/pi-ai/dist/types.js"; +import type { Model } from "@earendil-works/pi-ai"; import { expect } from "vitest"; export const asRecord = (value: unknown): Record => { diff --git a/src/providers/qwen-portal-oauth.ts b/src/providers/qwen-portal-oauth.ts index 276b2e34..f5f1e982 100644 --- a/src/providers/qwen-portal-oauth.ts +++ b/src/providers/qwen-portal-oauth.ts @@ -1,4 +1,4 @@ -import type { OAuthCredentials } from "@mariozechner/pi-ai"; +import type { OAuthCredentials } from "@earendil-works/pi-ai"; import { formatCliCommand } from "../cli/command-format.js"; const QWEN_OAUTH_BASE_URL = "https://chat.qwen.ai"; diff --git a/src/security/audit-extra.async.ts b/src/security/audit-extra.async.ts index 8b26fd2a..f87a7072 100644 --- a/src/security/audit-extra.async.ts +++ b/src/security/audit-extra.async.ts @@ -1076,7 +1076,7 @@ export async function collectInstalledSkillsCodeSafetyFindings(params: { for (const workspaceDir of workspaceDirs) { const entries = loadWorkspaceSkillEntries(workspaceDir, { config: params.cfg }); for (const entry of entries) { - if (entry.skill.source === "mayros-bundled") { + if (entry.skill.sourceInfo.source === "mayros-bundled") { continue; } diff --git a/src/sessions/input-provenance.ts b/src/sessions/input-provenance.ts index 4540e680..6ba32fc4 100644 --- a/src/sessions/input-provenance.ts +++ b/src/sessions/input-provenance.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; export const INPUT_PROVENANCE_KIND_VALUES = [ "external_user", diff --git a/src/tts/tts-core.ts b/src/tts/tts-core.ts index 92572565..0fd4121a 100644 --- a/src/tts/tts-core.ts +++ b/src/tts/tts-core.ts @@ -1,5 +1,6 @@ import { rmSync } from "node:fs"; -import { completeSimple, type TextContent } from "@mariozechner/pi-ai"; +import type { TextContent } from "@earendil-works/pi-ai"; +import { completeSimple } from "@earendil-works/pi-ai/compat"; import { EdgeTTS } from "node-edge-tts"; import { getApiKeyForModel, requireApiKey } from "../agents/model-auth.js"; import { diff --git a/src/tts/tts.test.ts b/src/tts/tts.test.ts index 38a2e762..546f12bc 100644 --- a/src/tts/tts.test.ts +++ b/src/tts/tts.test.ts @@ -1,4 +1,5 @@ -import { completeSimple, type AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; +import { completeSimple } from "@earendil-works/pi-ai/compat"; import { describe, expect, it, vi, beforeEach } from "vitest"; import { getApiKeyForModel } from "../agents/model-auth.js"; import { resolveModel } from "../agents/pi-embedded-runner/model.js"; @@ -6,8 +7,11 @@ import type { MayrosConfig } from "../config/config.js"; import { withEnv } from "../test-utils/env.js"; import * as tts from "./tts.js"; -vi.mock("@mariozechner/pi-ai", () => ({ +vi.mock("@earendil-works/pi-ai/compat", () => ({ completeSimple: vi.fn(), +})); + +vi.mock("@earendil-works/pi-ai/oauth", () => ({ // Some auth helpers import oauth provider metadata at module load time. getOAuthProviders: () => [], getOAuthApiKey: vi.fn(async () => null), diff --git a/src/tui/commands.ts b/src/tui/commands.ts index a6244d52..4ee2c107 100644 --- a/src/tui/commands.ts +++ b/src/tui/commands.ts @@ -1,4 +1,4 @@ -import type { SlashCommand } from "@mariozechner/pi-tui"; +import type { SlashCommand } from "@earendil-works/pi-tui"; import { listChatCommands, listChatCommandsForConfig } from "../auto-reply/commands-registry.js"; import { formatThinkingLevels, listThinkingLevelLabels } from "../auto-reply/thinking.js"; import { discoverMarkdownCommands } from "../commands/markdown-commands.js"; diff --git a/src/tui/components/assistant-message.ts b/src/tui/components/assistant-message.ts index 6afdc6ac..2d9c3c84 100644 --- a/src/tui/components/assistant-message.ts +++ b/src/tui/components/assistant-message.ts @@ -1,4 +1,4 @@ -import { Container, Markdown, Spacer } from "@mariozechner/pi-tui"; +import { Container, Markdown, Spacer } from "@earendil-works/pi-tui"; import { markdownTheme, theme } from "../theme/theme.js"; export class AssistantMessageComponent extends Container { diff --git a/src/tui/components/chat-log.ts b/src/tui/components/chat-log.ts index 79ca5adb..41d142e1 100644 --- a/src/tui/components/chat-log.ts +++ b/src/tui/components/chat-log.ts @@ -1,5 +1,5 @@ -import type { Component } from "@mariozechner/pi-tui"; -import { Container, Spacer, Text } from "@mariozechner/pi-tui"; +import type { Component } from "@earendil-works/pi-tui"; +import { Container, Spacer, Text } from "@earendil-works/pi-tui"; import { theme } from "../theme/theme.js"; import { AssistantMessageComponent } from "./assistant-message.js"; import { ToolExecutionComponent } from "./tool-execution.js"; diff --git a/src/tui/components/custom-editor.ts b/src/tui/components/custom-editor.ts index ce2f5ffd..6cf0ecbc 100644 --- a/src/tui/components/custom-editor.ts +++ b/src/tui/components/custom-editor.ts @@ -1,4 +1,4 @@ -import { Editor, Key, matchesKey } from "@mariozechner/pi-tui"; +import { Editor, Key, matchesKey } from "@earendil-works/pi-tui"; import type { ClipboardImage } from "../clipboard-image.js"; import type { TuiKeybindingResolver } from "../keybinding-resolver.js"; import type { VimHandler } from "../vim-handler.js"; diff --git a/src/tui/components/filterable-select-list.ts b/src/tui/components/filterable-select-list.ts index 7a283487..49730607 100644 --- a/src/tui/components/filterable-select-list.ts +++ b/src/tui/components/filterable-select-list.ts @@ -1,12 +1,12 @@ -import type { Component } from "@mariozechner/pi-tui"; +import type { Component } from "@earendil-works/pi-tui"; import { Input, matchesKey, type SelectItem, SelectList, type SelectListTheme, - getEditorKeybindings, -} from "@mariozechner/pi-tui"; + getKeybindings, +} from "@earendil-works/pi-tui"; import chalk from "chalk"; import { fuzzyFilterLower, prepareSearchItems } from "./fuzzy-filter.js"; @@ -110,8 +110,8 @@ export class FilterableSelectList implements Component { } // Escape: clear filter or cancel - const kb = getEditorKeybindings(); - if (kb.matches(keyData, "selectCancel")) { + const kb = getKeybindings(); + if (kb.matches(keyData, "tui.select.cancel")) { if (this.filterText) { this.filterText = ""; this.input.setValue(""); diff --git a/src/tui/components/searchable-select-list.ts b/src/tui/components/searchable-select-list.ts index 8a27858e..5e55b157 100644 --- a/src/tui/components/searchable-select-list.ts +++ b/src/tui/components/searchable-select-list.ts @@ -1,13 +1,13 @@ import { type Component, - getEditorKeybindings, + getKeybindings, Input, isKeyRelease, matchesKey, type SelectItem, type SelectListTheme, truncateToWidth, -} from "@mariozechner/pi-tui"; +} from "@earendil-works/pi-tui"; import { stripAnsi, visibleWidth } from "../../terminal/ansi.js"; import { findWordBoundaryIndex, fuzzyFilterLower } from "./fuzzy-filter.js"; @@ -362,8 +362,8 @@ export class SearchableSelectList implements Component { return; } - const kb = getEditorKeybindings(); - if (kb.matches(keyData, "selectCancel")) { + const kb = getKeybindings(); + if (kb.matches(keyData, "tui.select.cancel")) { if (this.onCancel) { this.onCancel(); } diff --git a/src/tui/components/selectors.ts b/src/tui/components/selectors.ts index 46073fbc..aae9c4d1 100644 --- a/src/tui/components/selectors.ts +++ b/src/tui/components/selectors.ts @@ -1,4 +1,9 @@ -import { type SelectItem, SelectList, type SettingItem, SettingsList } from "@mariozechner/pi-tui"; +import { + type SelectItem, + SelectList, + type SettingItem, + SettingsList, +} from "@earendil-works/pi-tui"; import { filterableSelectListTheme, searchableSelectListTheme, diff --git a/src/tui/components/tool-execution.ts b/src/tui/components/tool-execution.ts index 4e98d2bc..931af40f 100644 --- a/src/tui/components/tool-execution.ts +++ b/src/tui/components/tool-execution.ts @@ -1,4 +1,4 @@ -import { Box, Container, Markdown, Spacer, Text } from "@mariozechner/pi-tui"; +import { Box, Container, Markdown, Spacer, Text } from "@earendil-works/pi-tui"; import { formatToolDetail, resolveToolDisplay } from "../../agents/tool-display.js"; import { renderDiff, parseDiffStats, formatDiffStatsLine } from "../diff-renderer.js"; import { linkifyFilePaths } from "../linkify-paths.js"; diff --git a/src/tui/components/user-message.ts b/src/tui/components/user-message.ts index fad77f42..8b879a92 100644 --- a/src/tui/components/user-message.ts +++ b/src/tui/components/user-message.ts @@ -1,4 +1,4 @@ -import { Container, Markdown, Spacer } from "@mariozechner/pi-tui"; +import { Container, Markdown, Spacer } from "@earendil-works/pi-tui"; import { markdownTheme, theme } from "../theme/theme.js"; export class UserMessageComponent extends Container { diff --git a/src/tui/components/welcome-screen.ts b/src/tui/components/welcome-screen.ts index 84bf4511..fe692b50 100644 --- a/src/tui/components/welcome-screen.ts +++ b/src/tui/components/welcome-screen.ts @@ -1,5 +1,5 @@ -import type { Component } from "@mariozechner/pi-tui"; -import { truncateToWidth } from "@mariozechner/pi-tui"; +import type { Component } from "@earendil-works/pi-tui"; +import { truncateToWidth } from "@earendil-works/pi-tui"; import chalk from "chalk"; import { visibleWidth } from "../../terminal/ansi.js"; import type { TuiStateAccess } from "../tui-types.js"; diff --git a/src/tui/enriched-autocomplete.test.ts b/src/tui/enriched-autocomplete.test.ts index 2ba76ac8..585ec789 100644 --- a/src/tui/enriched-autocomplete.test.ts +++ b/src/tui/enriched-autocomplete.test.ts @@ -1,7 +1,9 @@ import { describe, expect, it, vi } from "vitest"; -import type { AutocompleteItem, AutocompleteProvider } from "@mariozechner/pi-tui"; +import type { AutocompleteItem, AutocompleteProvider } from "@earendil-works/pi-tui"; import { EnrichedAutocompleteProvider, createEnrichedProvider } from "./enriched-autocomplete.js"; +const options = { signal: new AbortController().signal }; + function createMockBase( suggestions: { items: AutocompleteItem[]; prefix: string } | null = { items: [{ value: "file.ts", label: "file.ts" }], @@ -9,7 +11,7 @@ function createMockBase( }, ): AutocompleteProvider { return { - getSuggestions: vi.fn(() => suggestions), + getSuggestions: vi.fn(async () => suggestions), applyCompletion: vi.fn((_lines, cursorLine, cursorCol, _item, _prefix) => ({ lines: [], cursorLine, @@ -19,26 +21,26 @@ function createMockBase( } describe("EnrichedAutocompleteProvider", () => { - it("delegates to base when no queryFn provided", () => { + it("delegates to base when no queryFn provided", async () => { const base = createMockBase(); const provider = new EnrichedAutocompleteProvider(base); - const result = provider.getSuggestions(["@fi"], 0, 3); + const result = await provider.getSuggestions(["@fi"], 0, 3, options); expect(result).toEqual({ items: [{ value: "file.ts", label: "file.ts" }], prefix: "@" }); }); - it("delegates to base when base returns null", () => { + it("delegates to base when base returns null", async () => { const base = createMockBase(null); const queryFn = vi.fn(async () => []); const provider = new EnrichedAutocompleteProvider(base, queryFn); - const result = provider.getSuggestions(["@fi"], 0, 3); + const result = await provider.getSuggestions(["@fi"], 0, 3, options); expect(result).toBeNull(); }); - it("fires async query on @ prefix", () => { + it("fires async query on @ prefix", async () => { const base = createMockBase(); const queryFn = vi.fn(async () => [{ value: "sym:Foo", label: "Foo", description: "class" }]); const provider = new EnrichedAutocompleteProvider(base, queryFn); - provider.getSuggestions(["@fi"], 0, 3); + await provider.getSuggestions(["@fi"], 0, 3, options); expect(queryFn).toHaveBeenCalledWith("fi"); }); @@ -49,14 +51,14 @@ describe("EnrichedAutocompleteProvider", () => { const provider = new EnrichedAutocompleteProvider(base, queryFn); // First call triggers async fetch - provider.getSuggestions(["@fi"], 0, 3); + await provider.getSuggestions(["@fi"], 0, 3, options); // Wait for the query to resolve await vi.waitFor(() => expect(queryFn).toHaveBeenCalled()); // Small delay to allow cache to be set await new Promise((r) => setTimeout(r, 10)); // Second call should use cache - const result = provider.getSuggestions(["@fi"], 0, 3); + const result = await provider.getSuggestions(["@fi"], 0, 3, options); expect(result?.items).toHaveLength(2); expect(result?.items[1]?.value).toBe("sym:Foo"); }); @@ -72,21 +74,21 @@ describe("EnrichedAutocompleteProvider", () => { ]); const provider = new EnrichedAutocompleteProvider(base, queryFn); - provider.getSuggestions(["@fi"], 0, 3); + await provider.getSuggestions(["@fi"], 0, 3, options); await new Promise((r) => setTimeout(r, 10)); - const result = provider.getSuggestions(["@fi"], 0, 3); + const result = await provider.getSuggestions(["@fi"], 0, 3, options); expect(result?.items).toHaveLength(2); const values = result?.items.map((i) => i.value); expect(values).toContain("file.ts"); expect(values).toContain("other.ts"); }); - it("does not fire query when no @ prefix", () => { + it("does not fire query when no @ prefix", async () => { const base = createMockBase({ items: [], prefix: "/" }); const queryFn = vi.fn(async () => []); const provider = new EnrichedAutocompleteProvider(base, queryFn); - provider.getSuggestions(["hello"], 0, 5); + await provider.getSuggestions(["hello"], 0, 5, options); expect(queryFn).not.toHaveBeenCalled(); }); @@ -96,7 +98,7 @@ describe("EnrichedAutocompleteProvider", () => { throw new Error("network error"); }); const provider = new EnrichedAutocompleteProvider(base, queryFn); - const result = provider.getSuggestions(["@fi"], 0, 3); + const result = await provider.getSuggestions(["@fi"], 0, 3, options); expect(result).not.toBeNull(); // Wait for the rejected promise to settle await new Promise((r) => setTimeout(r, 10)); @@ -112,18 +114,18 @@ describe("EnrichedAutocompleteProvider", () => { const provider = new EnrichedAutocompleteProvider(base, queryFn, { maxCache: 2 }); // Fill cache with 2 entries - provider.getSuggestions(["@a"], 0, 2); + await provider.getSuggestions(["@a"], 0, 2, options); await new Promise((r) => setTimeout(r, 10)); - provider.getSuggestions(["@b"], 0, 2); + await provider.getSuggestions(["@b"], 0, 2, options); await new Promise((r) => setTimeout(r, 10)); // This should evict "a" - provider.getSuggestions(["@c"], 0, 2); + await provider.getSuggestions(["@c"], 0, 2, options); await new Promise((r) => setTimeout(r, 10)); // "a" should re-trigger query queryFn.mockClear(); - provider.getSuggestions(["@a"], 0, 2); + await provider.getSuggestions(["@a"], 0, 2, options); expect(queryFn).toHaveBeenCalledWith("a"); }); diff --git a/src/tui/enriched-autocomplete.ts b/src/tui/enriched-autocomplete.ts index 076f15a2..511ae21a 100644 --- a/src/tui/enriched-autocomplete.ts +++ b/src/tui/enriched-autocomplete.ts @@ -1,4 +1,8 @@ -import type { AutocompleteItem, AutocompleteProvider } from "@mariozechner/pi-tui"; +import type { + AutocompleteItem, + AutocompleteProvider, + AutocompleteSuggestions, +} from "@earendil-works/pi-tui"; type CachedEntry = { items: AutocompleteItem[]; @@ -27,12 +31,13 @@ export class EnrichedAutocompleteProvider implements AutocompleteProvider { this.ttlMs = opts?.ttlMs ?? 30_000; } - getSuggestions( + async getSuggestions( lines: string[], cursorLine: number, cursorCol: number, - ): { items: AutocompleteItem[]; prefix: string } | null { - const baseSuggestions = this.base.getSuggestions(lines, cursorLine, cursorCol); + options: { signal: AbortSignal; force?: boolean }, + ): Promise { + const baseSuggestions = await this.base.getSuggestions(lines, cursorLine, cursorCol, options); if (!this.queryFn || !baseSuggestions) { return baseSuggestions; } diff --git a/src/tui/keybinding-resolver.test.ts b/src/tui/keybinding-resolver.test.ts index 5fc874a1..db5b4c5b 100644 --- a/src/tui/keybinding-resolver.test.ts +++ b/src/tui/keybinding-resolver.test.ts @@ -6,16 +6,17 @@ const piTuiMocks = vi.hoisted(() => { config?: Record, ) { this._config = config; - }) as unknown as typeof import("@mariozechner/pi-tui").EditorKeybindingsManager & + }) as unknown as typeof import("@earendil-works/pi-tui").KeybindingsManager & ReturnType; return { matchesKey: vi.fn((_data: string, _key: string) => false), - setEditorKeybindings: vi.fn(), - EditorKeybindingsManager: MockManager, + setKeybindings: vi.fn(), + KeybindingsManager: MockManager, + TUI_KEYBINDINGS: {} as Record, }; }); -vi.mock("@mariozechner/pi-tui", () => ({ +vi.mock("@earendil-works/pi-tui", () => ({ ...piTuiMocks, Key: { ctrl: (k: string) => `ctrl+${k}`, shift: (k: string) => `shift+${k}` }, })); @@ -73,18 +74,22 @@ describe("DEFAULT_TUI_KEYBINDINGS", () => { }); describe("applyKeybindingsFromConfig", () => { - it("creates and sets an EditorKeybindingsManager", () => { - piTuiMocks.setEditorKeybindings.mockClear(); - piTuiMocks.EditorKeybindingsManager.mockClear(); + it("creates and sets an KeybindingsManager", () => { + piTuiMocks.setKeybindings.mockClear(); + piTuiMocks.KeybindingsManager.mockClear(); applyKeybindingsFromConfig({ cursorUp: "ctrl+k" }); - expect(piTuiMocks.EditorKeybindingsManager).toHaveBeenCalledWith({ cursorUp: "ctrl+k" }); - expect(piTuiMocks.setEditorKeybindings).toHaveBeenCalled(); + expect(piTuiMocks.KeybindingsManager).toHaveBeenCalledWith(piTuiMocks.TUI_KEYBINDINGS, { + cursorUp: "ctrl+k", + }); + expect(piTuiMocks.setKeybindings).toHaveBeenCalled(); }); it("filters out TUI-specific actions from editor config", () => { - piTuiMocks.EditorKeybindingsManager.mockClear(); + piTuiMocks.KeybindingsManager.mockClear(); applyKeybindingsFromConfig({ selectAgent: "ctrl+a", cursorDown: "ctrl+j" }); - expect(piTuiMocks.EditorKeybindingsManager).toHaveBeenCalledWith({ cursorDown: "ctrl+j" }); + expect(piTuiMocks.KeybindingsManager).toHaveBeenCalledWith(piTuiMocks.TUI_KEYBINDINGS, { + cursorDown: "ctrl+j", + }); }); }); diff --git a/src/tui/keybinding-resolver.ts b/src/tui/keybinding-resolver.ts index 192984dc..669c27ce 100644 --- a/src/tui/keybinding-resolver.ts +++ b/src/tui/keybinding-resolver.ts @@ -1,10 +1,11 @@ import { - type EditorKeybindingsConfig, - EditorKeybindingsManager, + type KeybindingsConfig, + KeybindingsManager, type KeyId, matchesKey, - setEditorKeybindings, -} from "@mariozechner/pi-tui"; + setKeybindings, + TUI_KEYBINDINGS, +} from "@earendil-works/pi-tui"; export type TuiAction = | "selectAgent" @@ -58,8 +59,8 @@ export class TuiKeybindingResolver { export function applyKeybindingsFromConfig( config?: Record, -): EditorKeybindingsManager { - const editorConfig: EditorKeybindingsConfig = {}; +): KeybindingsManager { + const editorConfig: KeybindingsConfig = {}; if (config) { for (const [action, keys] of Object.entries(config)) { if (action in DEFAULT_TUI_KEYBINDINGS) { @@ -70,8 +71,8 @@ export function applyKeybindingsFromConfig( : (keys as KeyId); } } - const manager = new EditorKeybindingsManager(editorConfig); - setEditorKeybindings(manager); + const manager = new KeybindingsManager(TUI_KEYBINDINGS, editorConfig); + setKeybindings(manager); return manager; } diff --git a/src/tui/theme/theme-factory.ts b/src/tui/theme/theme-factory.ts index 444580fe..edb80ab5 100644 --- a/src/tui/theme/theme-factory.ts +++ b/src/tui/theme/theme-factory.ts @@ -3,7 +3,7 @@ import type { MarkdownTheme, SelectListTheme, SettingsListTheme, -} from "@mariozechner/pi-tui"; +} from "@earendil-works/pi-tui"; import chalk from "chalk"; import { highlight, supportsLanguage } from "cli-highlight"; import { formatTerminalLink } from "../../utils.js"; diff --git a/src/tui/tui-command-handlers.ts b/src/tui/tui-command-handlers.ts index 2b504668..3e23a5ca 100644 --- a/src/tui/tui-command-handlers.ts +++ b/src/tui/tui-command-handlers.ts @@ -1,5 +1,5 @@ import { randomUUID } from "node:crypto"; -import type { Component, TUI } from "@mariozechner/pi-tui"; +import type { Component, TUI } from "@earendil-works/pi-tui"; import { listThinkingLevelLabels, normalizeUsageDisplay, diff --git a/src/tui/tui-local-shell.ts b/src/tui/tui-local-shell.ts index 94c850ca..9a2be368 100644 --- a/src/tui/tui-local-shell.ts +++ b/src/tui/tui-local-shell.ts @@ -1,5 +1,5 @@ import { spawn } from "node:child_process"; -import type { Component, SelectItem } from "@mariozechner/pi-tui"; +import type { Component, SelectItem } from "@earendil-works/pi-tui"; import { createSearchableSelectList } from "./components/selectors.js"; type LocalShellDeps = { diff --git a/src/tui/tui-overlays.test.ts b/src/tui/tui-overlays.test.ts index 070eb0a8..b2bcbd9d 100644 --- a/src/tui/tui-overlays.test.ts +++ b/src/tui/tui-overlays.test.ts @@ -1,4 +1,4 @@ -import type { Component } from "@mariozechner/pi-tui"; +import type { Component } from "@earendil-works/pi-tui"; import { describe, expect, it, vi } from "vitest"; import { createOverlayHandlers } from "./tui-overlays.js"; diff --git a/src/tui/tui-overlays.ts b/src/tui/tui-overlays.ts index 51ba45a9..fc9fa428 100644 --- a/src/tui/tui-overlays.ts +++ b/src/tui/tui-overlays.ts @@ -1,4 +1,4 @@ -import type { Component, TUI } from "@mariozechner/pi-tui"; +import type { Component, TUI } from "@earendil-works/pi-tui"; type OverlayHost = Pick; diff --git a/src/tui/tui-session-actions.test.ts b/src/tui/tui-session-actions.test.ts index f5ed5325..b28cf92a 100644 --- a/src/tui/tui-session-actions.test.ts +++ b/src/tui/tui-session-actions.test.ts @@ -53,7 +53,7 @@ describe("tui session actions", () => { const { refreshSessionInfo } = createSessionActions({ client: { listSessions } as unknown as GatewayChatClient, chatLog: { addSystem: vi.fn() } as unknown as import("./components/chat-log.js").ChatLog, - tui: { requestRender } as unknown as import("@mariozechner/pi-tui").TUI, + tui: { requestRender } as unknown as import("@earendil-works/pi-tui").TUI, opts: {}, state, agentNames: new Map(), diff --git a/src/tui/tui-session-actions.ts b/src/tui/tui-session-actions.ts index 528fbbe3..80d46c9b 100644 --- a/src/tui/tui-session-actions.ts +++ b/src/tui/tui-session-actions.ts @@ -1,4 +1,4 @@ -import type { Component, TUI } from "@mariozechner/pi-tui"; +import type { Component, TUI } from "@earendil-works/pi-tui"; import type { SessionsPatchResult } from "../gateway/protocol/index.js"; import { normalizeAgentId, diff --git a/src/tui/tui.ts b/src/tui/tui.ts index 36e7b4e3..b6618769 100644 --- a/src/tui/tui.ts +++ b/src/tui/tui.ts @@ -7,7 +7,7 @@ import { ProcessTerminal, Text, TUI, -} from "@mariozechner/pi-tui"; +} from "@earendil-works/pi-tui"; import { resolveDefaultAgentId } from "../agents/agent-scope.js"; import { VERSION } from "../version.js"; import { loadConfig } from "../config/config.js";