diff --git a/.agents/skills/crabbox/SKILL.md b/.agents/skills/crabbox/SKILL.md index 5a7541d78a6c..a0c68f296722 100644 --- a/.agents/skills/crabbox/SKILL.md +++ b/.agents/skills/crabbox/SKILL.md @@ -294,18 +294,19 @@ Common Crabbox-only failures: report the capacity blocker. If Crabbox cannot dispatch, sync, attach, or stop but Blacksmith itself works, -use direct Blacksmith from the repo root: +first try the same command through the repo wrapper with `--debug` and +`--timing-json`: ```sh -blacksmith testbox warmup ci-check-testbox.yml --ref main --idle-timeout 90 -blacksmith testbox run --id "env CI=1 NODE_OPTIONS=--max-old-space-size=4096 OPENCLAW_TEST_PROJECTS_PARALLEL=6 OPENCLAW_VITEST_MAX_WORKERS=1 OPENCLAW_VITEST_NO_OUTPUT_TIMEOUT_MS=900000 pnpm test:changed" -blacksmith testbox stop --id +pnpm crabbox:run -- --provider blacksmith-testbox --debug --timing-json -- \ + CI=1 NODE_OPTIONS=--max-old-space-size=4096 OPENCLAW_TEST_PROJECTS_PARALLEL=6 OPENCLAW_VITEST_MAX_WORKERS=1 OPENCLAW_VITEST_NO_OUTPUT_TIMEOUT_MS=900000 pnpm test:changed ``` -Direct full suite: +Full suite: ```sh -blacksmith testbox run --id "env CI=1 NODE_OPTIONS=--max-old-space-size=4096 OPENCLAW_TEST_PROJECTS_PARALLEL=6 OPENCLAW_VITEST_MAX_WORKERS=1 OPENCLAW_VITEST_NO_OUTPUT_TIMEOUT_MS=900000 pnpm test" +pnpm crabbox:run -- --provider blacksmith-testbox --debug --timing-json -- \ + CI=1 NODE_OPTIONS=--max-old-space-size=4096 OPENCLAW_TEST_PROJECTS_PARALLEL=6 OPENCLAW_VITEST_MAX_WORKERS=1 OPENCLAW_VITEST_NO_OUTPUT_TIMEOUT_MS=900000 pnpm test ``` Auth fallback, only when `blacksmith` says auth is missing: @@ -340,16 +341,15 @@ The hydration workflow owns checkout, Node/pnpm setup, dependency install, secrets, ready marker, and keepalive. Crabbox owns dispatch, sync, SSH command execution, timing, logs/results, and cleanup. -Minimal direct Blacksmith fallback, from repo root: +Minimal Blacksmith-backed Crabbox run, from repo root: ```sh -blacksmith testbox warmup ci-check-testbox.yml --ref main --idle-timeout 90 -blacksmith testbox run --id "env CI=1 NODE_OPTIONS=--max-old-space-size=4096 OPENCLAW_TEST_PROJECTS_PARALLEL=6 OPENCLAW_VITEST_MAX_WORKERS=1 pnpm test:changed" -blacksmith testbox stop --id +pnpm crabbox:run -- --provider blacksmith-testbox --timing-json -- \ + CI=1 NODE_OPTIONS=--max-old-space-size=4096 OPENCLAW_TEST_PROJECTS_PARALLEL=6 OPENCLAW_VITEST_MAX_WORKERS=1 pnpm test:changed ``` -Use direct Blacksmith only when Crabbox is the broken layer and Blacksmith -itself still works. Prefer direct `blacksmith testbox list` for cleanup +Use direct Blacksmith only when Crabbox is the broken layer and you are +isolating a Crabbox bug. Prefer direct `blacksmith testbox list` for cleanup diagnostics, not as a reusable work queue. Important Blacksmith footguns: diff --git a/.agents/skills/openclaw-test-performance/SKILL.md b/.agents/skills/openclaw-test-performance/SKILL.md index e50e5027774e..6bf76abaae54 100644 --- a/.agents/skills/openclaw-test-performance/SKILL.md +++ b/.agents/skills/openclaw-test-performance/SKILL.md @@ -92,11 +92,11 @@ barrels, package-boundary tests, or extension suites. - runtime capture should be quiet and config-tolerant. - command output should include wall time, exit code, and peak RSS when available. -4. For broad or package-heavy plugin proof, use Blacksmith Testbox by default on - maintainer machines. Warm once and reuse the same box: - - `blacksmith testbox warmup ci-check-testbox.yml --ref main --idle-timeout 90` - - `blacksmith testbox run --id "OPENCLAW_TESTBOX=1 pnpm test:extensions:batch "` - - stop the box when done. +4. For broad or package-heavy plugin proof, use Crabbox-backed Blacksmith + Testbox by default on maintainer machines: + - `pnpm crabbox:run -- --provider blacksmith-testbox --timing-json -- OPENCLAW_TESTBOX=1 pnpm test:extensions:batch ` + - add `--keep`/`--id ` only when several commands must share one + warmed box; stop it with `pnpm crabbox:stop -- `. 5. If plugin performance is package-artifact sensitive, switch to `openclaw-pre-release-plugin-testing` and Package Acceptance rather than trusting source-only timing. diff --git a/.agents/skills/openclaw-testing/SKILL.md b/.agents/skills/openclaw-testing/SKILL.md index 98b069744ab5..c120884c2e0c 100644 --- a/.agents/skills/openclaw-testing/SKILL.md +++ b/.agents/skills/openclaw-testing/SKILL.md @@ -36,14 +36,11 @@ Prove the touched surface first. Do not reflexively run the whole suite. - Prefer GitHub Actions for release/Docker proof when the workflow already has the prepared image and secrets. - Use `scripts/committer "" ` when committing; stage only your files. - If deps are missing, run `pnpm install`, retry once, then report the first actionable error. -- For Blacksmith Testbox proof, reuse only an id warmed and claimed in this - operator session. `blacksmith testbox list` is diagnostics only; a listed id - can have a local key and still carry stale rsync state from another lane. - After warmup, run `pnpm testbox:claim --id `, then prefer - `pnpm testbox:run --id -- ""` for OpenClaw gates so stale - org-visible ids fail fast before syncing. Claims older than 12 hours are - stale unless `OPENCLAW_TESTBOX_CLAIM_TTL_MINUTES` is explicitly set for long - work. +- For Blacksmith Testbox proof, use Crabbox first. `pnpm crabbox:run -- --provider +blacksmith-testbox --timing-json -- ` warms, claims, syncs, runs, + reports, and cleans up one-shot boxes. Reuse only an id/slug created in this + operator session; `blacksmith testbox list` is diagnostics only, not a shared + work queue. ## Local Test Shortcuts diff --git a/CHANGELOG.md b/CHANGELOG.md index 4cd7e1d62daa..34087d86c285 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,8 @@ Docs: https://docs.openclaw.ai - Gateway/skills: add an opt-in private skill archive upload install path gated by `skills.install.allowUploadedArchives`, so trusted Gateway clients can stage and install zip-backed skills only when operators explicitly enable the code-install surface. (#74430) Thanks @samzong. - Codex app-server: enable Codex native code-mode-only for harness threads so deferred OpenClaw dynamic tools run through Codex's own searchable code execution surface instead of a PI-style wrapper. - Dependencies: refresh workspace pins and patch targets, including ACPX `@agentclientprotocol/claude-agent-acp` `0.33.1`, Codex ACP `0.14.0`, Baileys `7.0.0-rc10`, Google GenAI `2.0.1`, OpenAI `6.37.0`, AWS SDK `3.1045.0`, Kysely `0.29.0`, Tlon skill `0.3.6`, Aimock `1.19.5`, and tsdown `0.22.0`. +- Dependencies: move embedded Pi packages to the `@earendil-works` namespace, refresh Twitch Twurple packages, and move `@openclaw/fs-safe` from the GitHub release pin to the published npm package. +- Build: route Testbox changed-check delegation through Crabbox and remove the OpenClaw-specific Blacksmith Testbox helper scripts. - Agents/compaction: preserve scoped background exec/process session references across embedded compaction and after-turn runtime contexts without exposing sessions from unrelated scopes. Fixes #79284. (#79307) Thanks @TurboTheTurtle. - Agents/process: tell agents to inspect background sessions with `process log` before sending interactive input and to use `waitingForInput`/`stdinWritable` hints from `log`/`poll`. - CLI/onboarding: improve setup, onboarding, configure, and channel command wayfinding so terminal flows explain the next useful command instead of relying on terse setup labels. diff --git a/apps/macos/Sources/OpenClaw/ModelCatalogLoader.swift b/apps/macos/Sources/OpenClaw/ModelCatalogLoader.swift index 96543c2423d6..b1fd70fd1712 100644 --- a/apps/macos/Sources/OpenClaw/ModelCatalogLoader.swift +++ b/apps/macos/Sources/OpenClaw/ModelCatalogLoader.swift @@ -99,7 +99,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/ci.md b/docs/ci.md index bb189dc72950..4962c3075d13 100644 --- a/docs/ci.md +++ b/docs/ci.md @@ -493,13 +493,23 @@ Local changed-test routing lives in `scripts/test-projects.test-support.mjs` and ## Testbox validation -Run Testbox from the repo root and prefer a fresh warmed box for broad proof. Before spending a slow gate on a box that was reused, expired, or just reported an unexpectedly large sync, run `pnpm testbox:sanity` inside the box first. +Crabbox is the repo-owned remote-box wrapper for maintainer Linux proof. Use it +from the repo root when a check is too broad for a local edit loop, when CI +parity matters, or when the proof needs secrets, Docker, package lanes, +reusable boxes, or remote logs. The normal OpenClaw backend is +`blacksmith-testbox`; owned AWS/Hetzner capacity is a fallback for Blacksmith +outages, quota issues, or explicit owned-capacity testing. -The sanity check fails fast when required root files such as `pnpm-lock.yaml` disappeared or when `git status --short` shows at least 200 tracked deletions. That usually means the remote sync state is not a trustworthy copy of the PR; stop that box and warm a fresh one instead of debugging the product test failure. For intentional large-deletion PRs, set `OPENCLAW_TESTBOX_ALLOW_MASS_DELETIONS=1` for that sanity run. +Crabbox-backed Blacksmith runs warm, claim, sync, run, report, and clean up +one-shot Testboxes. The built-in sync sanity check fails fast when required +root files such as `pnpm-lock.yaml` disappear or when `git status --short` +shows at least 200 tracked deletions. For intentional large-deletion PRs, set +`OPENCLAW_TESTBOX_ALLOW_MASS_DELETIONS=1` for the remote command. -`pnpm testbox:run` also terminates a local Blacksmith CLI invocation that stays in the sync phase for more than five minutes without post-sync output. Set `OPENCLAW_TESTBOX_SYNC_TIMEOUT_MS=0` to disable that guard, or use a larger millisecond value for unusually large local diffs. - -Crabbox is the repo-owned remote-box wrapper for maintainer Linux proof. Use it when a check is too broad for a local edit loop, when CI parity matters, or when the proof needs secrets, Docker, package lanes, reusable boxes, or remote logs. The normal OpenClaw backend is `blacksmith-testbox`; owned AWS/Hetzner capacity is a fallback for Blacksmith outages, quota issues, or explicit owned-capacity testing. +Crabbox also terminates a local Blacksmith CLI invocation that stays in the +sync phase for more than five minutes without post-sync output. Set +`CRABBOX_BLACKSMITH_SYNC_TIMEOUT_MS=0` to disable that guard, or use a larger +millisecond value for unusually large local diffs. Before a first run, check the wrapper from the repo root: @@ -569,13 +579,9 @@ pnpm crabbox:run -- --provider blacksmith-testbox --id --no-sync --timi pnpm crabbox:stop -- ``` -If Crabbox is the broken layer but Blacksmith itself works, use direct Blacksmith as a narrow fallback: - -```bash -blacksmith testbox warmup ci-check-testbox.yml --ref main --idle-timeout 90 -blacksmith testbox run --id "env CI=1 NODE_OPTIONS=--max-old-space-size=4096 OPENCLAW_TEST_PROJECTS_PARALLEL=6 OPENCLAW_VITEST_MAX_WORKERS=1 OPENCLAW_VITEST_NO_OUTPUT_TIMEOUT_MS=900000 pnpm check:changed" -blacksmith testbox stop --id -``` +If Crabbox is the broken layer but Blacksmith itself works, use direct +Blacksmith only for diagnostics such as `list`, `status`, and cleanup. Fix the +Crabbox path before treating a direct Blacksmith run as maintainer proof. If `blacksmith testbox list --all` and `blacksmith testbox status` work but new warmups sit `queued` with no IP or Actions run URL after a couple of minutes, diff --git a/docs/concepts/oauth.md b/docs/concepts/oauth.md index 3f48dbb0d83a..d4a63d651ee9 100644 --- a/docs/concepts/oauth.md +++ b/docs/concepts/oauth.md @@ -105,7 +105,7 @@ Claude login on the host, onboarding/configure can reuse it directly. ## OAuth exchange (how login works) -OpenClaw's interactive login flows are implemented in `@mariozechner/pi-ai` and wired into the wizards/commands. +OpenClaw's interactive login flows are implemented in `@earendil-works/pi-ai` and wired into the wizards/commands. ### Anthropic setup-token diff --git a/docs/gateway/doctor.md b/docs/gateway/doctor.md index 9b6354e0f6ba..78d1df36dc19 100644 --- a/docs/gateway/doctor.md +++ b/docs/gateway/doctor.md @@ -232,7 +232,7 @@ That stages grounded durable candidates into the short-term dreaming store while - If you've added `models.providers.opencode`, `opencode-zen`, or `opencode-go` manually, it overrides the built-in OpenCode catalog from `@mariozechner/pi-ai`. That can force models onto the wrong API or zero out costs. Doctor warns so you can remove the override and restore per-model API routing + costs. + If you've added `models.providers.opencode`, `opencode-zen`, or `opencode-go` manually, it overrides the built-in OpenCode catalog from `@earendil-works/pi-ai`. That can force models onto the wrong API or zero out costs. Doctor warns so you can remove the override and restore per-model API routing + costs. If your browser config still points at the removed Chrome extension path, doctor normalizes it to the current host-local Chrome MCP attach model: diff --git a/docs/pi.md b/docs/pi.md index c6389dc5f6d9..630487a4fb7e 100644 --- a/docs/pi.md +++ b/docs/pi.md @@ -23,10 +23,10 @@ OpenClaw uses the pi SDK to embed an AI coding agent into its messaging gateway ```json { - "@mariozechner/pi-agent-core": "0.73.0", - "@mariozechner/pi-ai": "0.73.0", - "@mariozechner/pi-coding-agent": "0.73.0", - "@mariozechner/pi-tui": "0.73.0" + "@earendil-works/pi-agent-core": "0.74.0", + "@earendil-works/pi-ai": "0.74.0", + "@earendil-works/pi-coding-agent": "0.74.0", + "@earendil-works/pi-tui": "0.74.0" } ``` @@ -171,7 +171,7 @@ import { DefaultResourceLoader, SessionManager, SettingsManager, -} from "@mariozechner/pi-coding-agent"; +} from "@earendil-works/pi-coding-agent"; const resourceLoader = new DefaultResourceLoader({ cwd: resolvedWorkspace, @@ -518,7 +518,7 @@ OpenClaw 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/plugins/compatibility.md b/docs/plugins/compatibility.md index e2b50c6d1eb7..6218a68357e2 100644 --- a/docs/plugins/compatibility.md +++ b/docs/plugins/compatibility.md @@ -69,16 +69,14 @@ not publish the inspector binary from the main `openclaw` package. ### Maintainer acceptance lane -Use Blacksmith Testbox for the installable-package acceptance lane when validating -the external inspector against OpenClaw plugin packages. Run it from a clean -OpenClaw checkout after the package is built: +Use Crabbox-backed Blacksmith Testbox for the installable-package acceptance +lane when validating the external inspector against OpenClaw plugin packages. +Run it from a clean OpenClaw checkout after the package is built: ```sh -blacksmith testbox warmup ci-check-testbox.yml --ref main --idle-timeout 90 -blacksmith testbox run --id "pnpm install && pnpm build && npm exec --yes @openclaw/plugin-inspector@0.1.0 -- ./extensions/telegram --json" -blacksmith testbox run --id "npm exec --yes @openclaw/plugin-inspector@0.1.0 -- ./extensions/discord --json" -blacksmith testbox run --id "npm exec --yes @openclaw/plugin-inspector@0.1.0 -- --json" -blacksmith testbox stop +pnpm crabbox:run -- --provider blacksmith-testbox --timing-json --shell -- "pnpm install && pnpm build && npm exec --yes @openclaw/plugin-inspector@0.1.0 -- ./extensions/telegram --json" +pnpm crabbox:run -- --provider blacksmith-testbox --timing-json --shell -- "npm exec --yes @openclaw/plugin-inspector@0.1.0 -- ./extensions/discord --json" +pnpm crabbox:run -- --provider blacksmith-testbox --timing-json --shell -- "npm exec --yes @openclaw/plugin-inspector@0.1.0 -- --json" ``` Keep this lane opt-in for maintainers because it installs an external npm diff --git a/docs/reference/session-management-compaction.md b/docs/reference/session-management-compaction.md index 587aa4a93ccc..1c93553cf2b0 100644 --- a/docs/reference/session-management-compaction.md +++ b/docs/reference/session-management-compaction.md @@ -200,7 +200,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/amazon-bedrock-mantle/mantle-anthropic.runtime.test.ts b/extensions/amazon-bedrock-mantle/mantle-anthropic.runtime.test.ts index 40f48044ec81..4810b026d4cc 100644 --- a/extensions/amazon-bedrock-mantle/mantle-anthropic.runtime.test.ts +++ b/extensions/amazon-bedrock-mantle/mantle-anthropic.runtime.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, vi } from "vitest"; import { createMantleAnthropicStreamFn, diff --git a/extensions/amazon-bedrock-mantle/mantle-anthropic.runtime.ts b/extensions/amazon-bedrock-mantle/mantle-anthropic.runtime.ts index f381131b2514..fc399487496f 100644 --- a/extensions/amazon-bedrock-mantle/mantle-anthropic.runtime.ts +++ b/extensions/amazon-bedrock-mantle/mantle-anthropic.runtime.ts @@ -1,7 +1,7 @@ import Anthropic from "@anthropic-ai/sdk"; -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Api, Model, SimpleStreamOptions } from "@mariozechner/pi-ai"; -import { streamAnthropic } from "@mariozechner/pi-ai/anthropic"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Api, Model, SimpleStreamOptions } from "@earendil-works/pi-ai"; +import { streamAnthropic } from "@earendil-works/pi-ai/anthropic"; const MANTLE_ANTHROPIC_BETA = "fine-grained-tool-streaming-2025-05-14"; type AnthropicOptions = ConstructorParameters[0]; diff --git a/extensions/amazon-bedrock-mantle/package.json b/extensions/amazon-bedrock-mantle/package.json index b7b1c4485f13..5450d0f96512 100644 --- a/extensions/amazon-bedrock-mantle/package.json +++ b/extensions/amazon-bedrock-mantle/package.json @@ -7,7 +7,7 @@ "dependencies": { "@anthropic-ai/sdk": "0.95.1", "@aws/bedrock-token-generator": "^1.1.0", - "@mariozechner/pi-ai": "0.73.1" + "@earendil-works/pi-ai": "0.74.0" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/amazon-bedrock/package.json b/extensions/amazon-bedrock/package.json index 828db5aaa147..a1132e04b3b8 100644 --- a/extensions/amazon-bedrock/package.json +++ b/extensions/amazon-bedrock/package.json @@ -8,7 +8,7 @@ "@aws-sdk/client-bedrock": "3.1045.0", "@aws-sdk/client-bedrock-runtime": "3.1045.0", "@aws-sdk/credential-provider-node": "3.972.39", - "@mariozechner/pi-ai": "0.73.1", + "@earendil-works/pi-ai": "0.74.0", "@smithy/shared-ini-file-loader": "4.4.9" }, "devDependencies": { diff --git a/extensions/amazon-bedrock/register.sync.runtime.ts b/extensions/amazon-bedrock/register.sync.runtime.ts index eb1b7d60b0d4..9067c0937b86 100644 --- a/extensions/amazon-bedrock/register.sync.runtime.ts +++ b/extensions/amazon-bedrock/register.sync.runtime.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { streamSimple } from "@earendil-works/pi-ai"; import type { OpenClawConfig } from "openclaw/plugin-sdk/config-contracts"; import { resolvePluginConfigObject } from "openclaw/plugin-sdk/plugin-config-runtime"; import type { OpenClawPluginApi } from "openclaw/plugin-sdk/plugin-entry"; @@ -122,7 +122,7 @@ function createGuardrailWrapStreamFn( /** * Mirrors the shipped pi-ai Bedrock `supportsPromptCaching` matcher. - * Keep this in sync with node_modules/@mariozechner/pi-ai/dist/providers/amazon-bedrock.js. + * Keep this in sync with node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js. */ function matchesPiAiPromptCachingModelId(modelId: string): boolean { const id = modelId.toLowerCase(); diff --git a/extensions/anthropic-vertex/api.test.ts b/extensions/anthropic-vertex/api.test.ts index e276dd8ef499..9cf29664a400 100644 --- a/extensions/anthropic-vertex/api.test.ts +++ b/extensions/anthropic-vertex/api.test.ts @@ -1,4 +1,4 @@ -import { createAssistantMessageEventStream, type Model } from "@mariozechner/pi-ai"; +import { createAssistantMessageEventStream, type Model } from "@earendil-works/pi-ai"; import { beforeAll, describe, expect, it, vi } from "vitest"; import type { AnthropicVertexStreamDeps } from "./stream-runtime.js"; diff --git a/extensions/anthropic-vertex/api.ts b/extensions/anthropic-vertex/api.ts index 35f639e54625..3696d7a8a1c0 100644 --- a/extensions/anthropic-vertex/api.ts +++ b/extensions/anthropic-vertex/api.ts @@ -1,4 +1,4 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import type { AnthropicVertexStreamDeps } from "./stream-runtime.js"; export { diff --git a/extensions/anthropic-vertex/package.json b/extensions/anthropic-vertex/package.json index 6a746c7f89bf..bd4e6fb18243 100644 --- a/extensions/anthropic-vertex/package.json +++ b/extensions/anthropic-vertex/package.json @@ -6,8 +6,8 @@ "type": "module", "dependencies": { "@anthropic-ai/vertex-sdk": "^0.16.0", - "@mariozechner/pi-agent-core": "0.73.1", - "@mariozechner/pi-ai": "0.73.1" + "@earendil-works/pi-agent-core": "0.74.0", + "@earendil-works/pi-ai": "0.74.0" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/anthropic-vertex/stream-runtime.test.ts b/extensions/anthropic-vertex/stream-runtime.test.ts index bcbcda146cd6..d8e11a96f612 100644 --- a/extensions/anthropic-vertex/stream-runtime.test.ts +++ b/extensions/anthropic-vertex/stream-runtime.test.ts @@ -1,4 +1,4 @@ -import { createAssistantMessageEventStream, type Model } from "@mariozechner/pi-ai"; +import { createAssistantMessageEventStream, type Model } from "@earendil-works/pi-ai"; import { beforeAll, describe, expect, it, vi } from "vitest"; import type { AnthropicVertexStreamDeps } from "./stream-runtime.js"; diff --git a/extensions/anthropic-vertex/stream-runtime.ts b/extensions/anthropic-vertex/stream-runtime.ts index fb48634da202..be69a6a32661 100644 --- a/extensions/anthropic-vertex/stream-runtime.ts +++ b/extensions/anthropic-vertex/stream-runtime.ts @@ -1,10 +1,10 @@ import { AnthropicVertex as AnthropicVertexSdk } from "@anthropic-ai/vertex-sdk"; -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import { streamAnthropic as streamAnthropicDefault, type AnthropicOptions, type Model, -} from "@mariozechner/pi-ai"; +} from "@earendil-works/pi-ai"; import { applyAnthropicPayloadPolicyToParams, resolveAnthropicPayloadPolicy, diff --git a/extensions/anthropic/package.json b/extensions/anthropic/package.json index 50c3eba2081c..ce9050ff04ee 100644 --- a/extensions/anthropic/package.json +++ b/extensions/anthropic/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw Anthropic provider plugin", "type": "module", "dependencies": { - "@mariozechner/pi-ai": "0.73.1" + "@earendil-works/pi-ai": "0.74.0" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/anthropic/stream-wrappers.test.ts b/extensions/anthropic/stream-wrappers.test.ts index 0725bdb906c1..8c213fd0fa1c 100644 --- a/extensions/anthropic/stream-wrappers.test.ts +++ b/extensions/anthropic/stream-wrappers.test.ts @@ -1,4 +1,4 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import { afterEach, describe, expect, it, vi } from "vitest"; import { __testing, diff --git a/extensions/anthropic/stream-wrappers.ts b/extensions/anthropic/stream-wrappers.ts index 0ebee385fd02..13f125d8d6ba 100644 --- a/extensions/anthropic/stream-wrappers.ts +++ b/extensions/anthropic/stream-wrappers.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { streamSimple } from "@earendil-works/pi-ai"; import type { ProviderWrapStreamFnContext } from "openclaw/plugin-sdk/plugin-entry"; import { applyAnthropicPayloadPolicyToParams, diff --git a/extensions/browser/src/browser-tool.actions.ts b/extensions/browser/src/browser-tool.actions.ts index 1471953b20b7..dd4383c805de 100644 --- a/extensions/browser/src/browser-tool.actions.ts +++ b/extensions/browser/src/browser-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 { DEFAULT_AI_SNAPSHOT_MAX_CHARS, browserAct, diff --git a/extensions/byteplus/live.test.ts b/extensions/byteplus/live.test.ts index 943a2f063a21..a081f1ccee49 100644 --- a/extensions/byteplus/live.test.ts +++ b/extensions/byteplus/live.test.ts @@ -1,4 +1,4 @@ -import { completeSimple, type Model } from "@mariozechner/pi-ai"; +import { completeSimple, type Model } from "@earendil-works/pi-ai"; import { createSingleUserPromptMessage, extractNonEmptyAssistantText, diff --git a/extensions/chutes/oauth.ts b/extensions/chutes/oauth.ts index d84580c3d61e..53248ad147e2 100644 --- a/extensions/chutes/oauth.ts +++ b/extensions/chutes/oauth.ts @@ -1,5 +1,5 @@ import { randomBytes } from "node:crypto"; -import type { OAuthCredentials } from "@mariozechner/pi-ai"; +import type { OAuthCredentials } from "@earendil-works/pi-ai"; import { generatePkceVerifierChallenge, toFormUrlEncoded } from "openclaw/plugin-sdk/provider-auth"; import { parseOAuthCallbackInput, diff --git a/extensions/cloudflare-ai-gateway/index.test.ts b/extensions/cloudflare-ai-gateway/index.test.ts index 2c7064b39f55..25b4451f2713 100644 --- a/extensions/cloudflare-ai-gateway/index.test.ts +++ b/extensions/cloudflare-ai-gateway/index.test.ts @@ -1,4 +1,4 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import { capturePluginRegistration } from "openclaw/plugin-sdk/plugin-test-runtime"; import { describe, expect, it } from "vitest"; import plugin from "./index.js"; diff --git a/extensions/cloudflare-ai-gateway/stream-wrappers.test.ts b/extensions/cloudflare-ai-gateway/stream-wrappers.test.ts index e96f8714fa21..0a918a207e6a 100644 --- a/extensions/cloudflare-ai-gateway/stream-wrappers.test.ts +++ b/extensions/cloudflare-ai-gateway/stream-wrappers.test.ts @@ -1,4 +1,4 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import { afterAll, beforeEach, describe, expect, it, vi } from "vitest"; import { __testing, diff --git a/extensions/cloudflare-ai-gateway/stream-wrappers.ts b/extensions/cloudflare-ai-gateway/stream-wrappers.ts index 9c0ed628276b..8ec06f61d54e 100644 --- a/extensions/cloudflare-ai-gateway/stream-wrappers.ts +++ b/extensions/cloudflare-ai-gateway/stream-wrappers.ts @@ -1,4 +1,4 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import type { ProviderWrapStreamFnContext } from "openclaw/plugin-sdk/plugin-entry"; import { createAnthropicThinkingPrefillPayloadWrapper } from "openclaw/plugin-sdk/provider-stream-shared"; import { createSubsystemLogger } from "openclaw/plugin-sdk/runtime-env"; diff --git a/extensions/codex/package.json b/extensions/codex/package.json index ddc81ebc9fc4..3e34229cc78b 100644 --- a/extensions/codex/package.json +++ b/extensions/codex/package.json @@ -8,7 +8,7 @@ }, "type": "module", "dependencies": { - "@mariozechner/pi-coding-agent": "0.73.1", + "@earendil-works/pi-coding-agent": "0.74.0", "@openai/codex": "0.130.0", "ajv": "^8.20.0", "ws": "^8.20.0", diff --git a/extensions/codex/src/app-server/auth-bridge.test.ts b/extensions/codex/src/app-server/auth-bridge.test.ts index d32ccd920df3..7fbf90cab646 100644 --- a/extensions/codex/src/app-server/auth-bridge.test.ts +++ b/extensions/codex/src/app-server/auth-bridge.test.ts @@ -38,7 +38,7 @@ const providerRuntimeMocks = vi.hoisted(() => ({ ), })); -vi.mock("@mariozechner/pi-ai/oauth", () => ({ +vi.mock("@earendil-works/pi-ai/oauth", () => ({ getOAuthApiKey: vi.fn(), getOAuthProviders: () => [], loginOpenAICodex: vi.fn(), diff --git a/extensions/codex/src/app-server/context-engine-projection.test.ts b/extensions/codex/src/app-server/context-engine-projection.test.ts index 2909d1a19d34..a52826b66d21 100644 --- a/extensions/codex/src/app-server/context-engine-projection.test.ts +++ b/extensions/codex/src/app-server/context-engine-projection.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 { projectContextEngineAssemblyForCodex } from "./context-engine-projection.js"; diff --git a/extensions/codex/src/app-server/delivery-no-reply-runtime-contract.test.ts b/extensions/codex/src/app-server/delivery-no-reply-runtime-contract.test.ts index 7b8c7d160614..af240d9ba803 100644 --- a/extensions/codex/src/app-server/delivery-no-reply-runtime-contract.test.ts +++ b/extensions/codex/src/app-server/delivery-no-reply-runtime-contract.test.ts @@ -1,7 +1,7 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import type { EmbeddedRunAttemptParams } from "openclaw/plugin-sdk/agent-harness"; import { DELIVERY_NO_REPLY_RUNTIME_CONTRACT } from "openclaw/plugin-sdk/agent-runtime-test-contracts"; import { isSilentReplyPayloadText } from "openclaw/plugin-sdk/reply-chunking"; diff --git a/extensions/codex/src/app-server/dynamic-tools.test.ts b/extensions/codex/src/app-server/dynamic-tools.test.ts index ad75c39c0e5d..28205d882f80 100644 --- a/extensions/codex/src/app-server/dynamic-tools.test.ts +++ b/extensions/codex/src/app-server/dynamic-tools.test.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import type { AnyAgentTool } from "openclaw/plugin-sdk/agent-harness"; import { HEARTBEAT_RESPONSE_TOOL_NAME, diff --git a/extensions/codex/src/app-server/dynamic-tools.ts b/extensions/codex/src/app-server/dynamic-tools.ts index 694d65fc39e6..1c06d3faf35c 100644 --- a/extensions/codex/src/app-server/dynamic-tools.ts +++ b/extensions/codex/src/app-server/dynamic-tools.ts @@ -1,5 +1,5 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; -import type { ImageContent, TextContent } from "@mariozechner/pi-ai"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; +import type { ImageContent, TextContent } from "@earendil-works/pi-ai"; import { createAgentToolResultMiddlewareRunner, createCodexAppServerToolResultExtensionRunner, diff --git a/extensions/codex/src/app-server/event-projector.test.ts b/extensions/codex/src/app-server/event-projector.test.ts index 8244314e3365..7d6708e5b105 100644 --- a/extensions/codex/src/app-server/event-projector.test.ts +++ b/extensions/codex/src/app-server/event-projector.test.ts @@ -1,7 +1,7 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import type { EmbeddedRunAttemptParams } from "openclaw/plugin-sdk/agent-harness"; import { resetAgentEventsForTest } from "openclaw/plugin-sdk/agent-harness-runtime"; import { diff --git a/extensions/codex/src/app-server/event-projector.ts b/extensions/codex/src/app-server/event-projector.ts index 9653d8aaf710..6af018b9efe8 100644 --- a/extensions/codex/src/app-server/event-projector.ts +++ b/extensions/codex/src/app-server/event-projector.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage, Usage } from "@mariozechner/pi-ai"; +import type { AssistantMessage, Usage } from "@earendil-works/pi-ai"; import { classifyAgentHarnessTerminalOutcome, embeddedAgentLog, diff --git a/extensions/codex/src/app-server/outcome-fallback-runtime-contract.test.ts b/extensions/codex/src/app-server/outcome-fallback-runtime-contract.test.ts index 070e4b6784b3..6a8b112937c2 100644 --- a/extensions/codex/src/app-server/outcome-fallback-runtime-contract.test.ts +++ b/extensions/codex/src/app-server/outcome-fallback-runtime-contract.test.ts @@ -1,7 +1,7 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import type { EmbeddedRunAttemptParams } from "openclaw/plugin-sdk/agent-harness"; import { classifyEmbeddedPiRunResultForModelFallback } from "openclaw/plugin-sdk/agent-harness-runtime"; import { diff --git a/extensions/codex/src/app-server/run-attempt.context-engine.test.ts b/extensions/codex/src/app-server/run-attempt.context-engine.test.ts index 3e29696a38b3..d5534f94fb3e 100644 --- a/extensions/codex/src/app-server/run-attempt.context-engine.test.ts +++ b/extensions/codex/src/app-server/run-attempt.context-engine.test.ts @@ -1,8 +1,8 @@ import fs from "node:fs/promises"; 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 type { EmbeddedRunAttemptParams } from "openclaw/plugin-sdk/agent-harness"; import { embeddedAgentLog, diff --git a/extensions/codex/src/app-server/run-attempt.test.ts b/extensions/codex/src/app-server/run-attempt.test.ts index 065f3e2d97aa..26459fb4e7d6 100644 --- a/extensions/codex/src/app-server/run-attempt.test.ts +++ b/extensions/codex/src/app-server/run-attempt.test.ts @@ -1,7 +1,7 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import { abortAgentHarnessRun, embeddedAgentLog, diff --git a/extensions/codex/src/app-server/session-history.ts b/extensions/codex/src/app-server/session-history.ts index 69f9e741388d..0937acaddcd6 100644 --- a/extensions/codex/src/app-server/session-history.ts +++ b/extensions/codex/src/app-server/session-history.ts @@ -1,10 +1,10 @@ import fs from "node:fs/promises"; -import type { SessionEntry } from "@mariozechner/pi-coding-agent"; +import type { SessionEntry } from "@earendil-works/pi-coding-agent"; import { buildSessionContext, migrateSessionEntries, parseSessionEntries, -} from "@mariozechner/pi-coding-agent"; +} from "@earendil-works/pi-coding-agent"; import type { AgentMessage } from "openclaw/plugin-sdk/agent-harness-runtime"; function isMissingFileError(error: unknown): boolean { diff --git a/extensions/codex/src/app-server/test-support.ts b/extensions/codex/src/app-server/test-support.ts index 15c564455493..7f1258661705 100644 --- a/extensions/codex/src/app-server/test-support.ts +++ b/extensions/codex/src/app-server/test-support.ts @@ -1,6 +1,6 @@ import { EventEmitter } from "node:events"; import { PassThrough, Writable } from "node:stream"; -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { vi } from "vitest"; import { CodexAppServerClient } from "./client.js"; diff --git a/extensions/codex/src/manifest.test.ts b/extensions/codex/src/manifest.test.ts index caccbecd5013..07e9117cdb58 100644 --- a/extensions/codex/src/manifest.test.ts +++ b/extensions/codex/src/manifest.test.ts @@ -12,7 +12,7 @@ describe("codex package manifest", () => { fs.readFileSync(new URL("../package.json", import.meta.url), "utf8"), ) as CodexPackageManifest; - expect(packageJson.dependencies).toHaveProperty("@mariozechner/pi-coding-agent"); + expect(packageJson.dependencies).toHaveProperty("@earendil-works/pi-coding-agent"); expect(packageJson.dependencies?.["@openai/codex"]).toBe( MANAGED_CODEX_APP_SERVER_PACKAGE_VERSION, ); diff --git a/extensions/deepseek/deepseek.live.test.ts b/extensions/deepseek/deepseek.live.test.ts index f68fe2b87b45..c25167a21546 100644 --- a/extensions/deepseek/deepseek.live.test.ts +++ b/extensions/deepseek/deepseek.live.test.ts @@ -5,7 +5,7 @@ import { type AssistantMessage, type Context, type Model, -} from "@mariozechner/pi-ai"; +} from "@earendil-works/pi-ai"; import { createSingleUserPromptMessage, extractNonEmptyAssistantText, diff --git a/extensions/deepseek/index.test.ts b/extensions/deepseek/index.test.ts index 888e06e14951..0ba8178bb05f 100644 --- a/extensions/deepseek/index.test.ts +++ b/extensions/deepseek/index.test.ts @@ -1,5 +1,5 @@ -import type { Context, Model } from "@mariozechner/pi-ai"; -import { createAssistantMessageEventStream } from "@mariozechner/pi-ai"; +import type { Context, Model } from "@earendil-works/pi-ai"; +import { createAssistantMessageEventStream } from "@earendil-works/pi-ai"; import { registerSingleProviderPlugin, resolveProviderPluginChoice, diff --git a/extensions/discord/src/actions/handle-action.guild-admin.ts b/extensions/discord/src/actions/handle-action.guild-admin.ts index 478f7774617e..762c47a45155 100644 --- a/extensions/discord/src/actions/handle-action.guild-admin.ts +++ b/extensions/discord/src/actions/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 { readNumberParam, readStringArrayParam, diff --git a/extensions/discord/src/actions/handle-action.ts b/extensions/discord/src/actions/handle-action.ts index cc3e81a80002..30a703a23791 100644 --- a/extensions/discord/src/actions/handle-action.ts +++ b/extensions/discord/src/actions/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/extensions/discord/src/actions/runtime.guild.ts b/extensions/discord/src/actions/runtime.guild.ts index 5f33e6d1765f..b30fde943dd9 100644 --- a/extensions/discord/src/actions/runtime.guild.ts +++ b/extensions/discord/src/actions/runtime.guild.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { resolveDefaultDiscordAccountId } from "../accounts.js"; import { getPresence } from "../monitor/presence-cache.js"; import { diff --git a/extensions/discord/src/actions/runtime.messaging.ts b/extensions/discord/src/actions/runtime.messaging.ts index 6c2d4f78688b..e8f211a12cfd 100644 --- a/extensions/discord/src/actions/runtime.messaging.ts +++ b/extensions/discord/src/actions/runtime.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 { ActionGate, DiscordActionConfig, OpenClawConfig } from "../runtime-api.js"; import { handleDiscordMessageManagementAction } from "./runtime.messaging.messages.js"; import { handleDiscordReactionMessagingAction } from "./runtime.messaging.reactions.js"; diff --git a/extensions/discord/src/actions/runtime.moderation.ts b/extensions/discord/src/actions/runtime.moderation.ts index 81caf7f915cf..d74d36012e5d 100644 --- a/extensions/discord/src/actions/runtime.moderation.ts +++ b/extensions/discord/src/actions/runtime.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 ActionGate, jsonResult, diff --git a/extensions/discord/src/actions/runtime.presence.ts b/extensions/discord/src/actions/runtime.presence.ts index 6573e66ef249..0eda11be9b84 100644 --- a/extensions/discord/src/actions/runtime.presence.ts +++ b/extensions/discord/src/actions/runtime.presence.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime"; import type { Activity, UpdatePresenceData } from "../internal/gateway.js"; import { getGateway } from "../monitor/gateway-registry.js"; diff --git a/extensions/discord/src/actions/runtime.ts b/extensions/discord/src/actions/runtime.ts index fea20b595211..9463c59d4bc0 100644 --- a/extensions/discord/src/actions/runtime.ts +++ b/extensions/discord/src/actions/runtime.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { createDiscordActionGate } from "../accounts.js"; import { readStringParam, type OpenClawConfig } from "../runtime-api.js"; import { handleDiscordGuildAction } from "./runtime.guild.js"; diff --git a/extensions/fireworks/package.json b/extensions/fireworks/package.json index f05d175588df..f4b4c547ae79 100644 --- a/extensions/fireworks/package.json +++ b/extensions/fireworks/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw Fireworks provider plugin", "type": "module", "dependencies": { - "@mariozechner/pi-ai": "0.73.1" + "@earendil-works/pi-ai": "0.74.0" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/fireworks/stream.test.ts b/extensions/fireworks/stream.test.ts index 31e6b9ab59d6..39a32733143d 100644 --- a/extensions/fireworks/stream.test.ts +++ b/extensions/fireworks/stream.test.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Context, Model } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Context, Model } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { createFireworksKimiThinkingDisabledWrapper, diff --git a/extensions/fireworks/stream.ts b/extensions/fireworks/stream.ts index c77cca106ecf..62e870d6e909 100644 --- a/extensions/fireworks/stream.ts +++ b/extensions/fireworks/stream.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { streamSimple } from "@earendil-works/pi-ai"; import type { ProviderWrapStreamFnContext } from "openclaw/plugin-sdk/plugin-entry"; import { normalizeProviderId } from "openclaw/plugin-sdk/provider-model-shared"; import { streamWithPayloadPatch } from "openclaw/plugin-sdk/provider-stream-shared"; diff --git a/extensions/github-copilot/connection-bound-ids.live.test.ts b/extensions/github-copilot/connection-bound-ids.live.test.ts index f3da59924f5c..d21c5ade071b 100644 --- a/extensions/github-copilot/connection-bound-ids.live.test.ts +++ b/extensions/github-copilot/connection-bound-ids.live.test.ts @@ -1,4 +1,4 @@ -import { streamOpenAIResponses, type AssistantMessage, type Model } from "@mariozechner/pi-ai"; +import { streamOpenAIResponses, type AssistantMessage, type Model } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { resolveFirstGithubToken } from "./auth.js"; import { buildCopilotDynamicHeaders } from "./stream.js"; diff --git a/extensions/github-copilot/models.test.ts b/extensions/github-copilot/models.test.ts index be65ecd3b457..c5cd4a7ed69e 100644 --- a/extensions/github-copilot/models.test.ts +++ b/extensions/github-copilot/models.test.ts @@ -3,9 +3,9 @@ import { afterAll, beforeEach, describe, expect, it, vi } from "vitest"; import { buildCopilotModelDefinition, getDefaultCopilotModelIds } from "./models-defaults.js"; import { fetchCopilotUsage } from "./usage.js"; -vi.mock("@mariozechner/pi-ai/oauth", async () => { - const actual = await vi.importActual( - "@mariozechner/pi-ai/oauth", +vi.mock("@earendil-works/pi-ai/oauth", async () => { + const actual = await vi.importActual( + "@earendil-works/pi-ai/oauth", ); return { ...actual, @@ -41,7 +41,7 @@ import type { ProviderResolveDynamicModelContext } from "openclaw/plugin-sdk/cor import { fetchCopilotModelCatalog, resolveCopilotForwardCompatModel } from "./models.js"; afterAll(() => { - vi.doUnmock("@mariozechner/pi-ai/oauth"); + vi.doUnmock("@earendil-works/pi-ai/oauth"); vi.doUnmock("openclaw/plugin-sdk/provider-model-shared"); vi.doUnmock("openclaw/plugin-sdk/json-store"); vi.doUnmock("openclaw/plugin-sdk/state-paths"); diff --git a/extensions/github-copilot/package.json b/extensions/github-copilot/package.json index 6bd79e3b7475..efe266cff452 100644 --- a/extensions/github-copilot/package.json +++ b/extensions/github-copilot/package.json @@ -8,7 +8,7 @@ "@clack/prompts": "^1.3.0" }, "devDependencies": { - "@mariozechner/pi-ai": "0.73.1", + "@earendil-works/pi-ai": "0.74.0", "@openclaw/plugin-sdk": "workspace:*" }, "openclaw": { diff --git a/extensions/github-copilot/stream.ts b/extensions/github-copilot/stream.ts index 1185f1ea473a..93a82b627d7c 100644 --- a/extensions/github-copilot/stream.ts +++ b/extensions/github-copilot/stream.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Context } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Context } from "@earendil-works/pi-ai"; import type { ProviderWrapStreamFnContext } from "openclaw/plugin-sdk/plugin-entry"; import { buildCopilotIdeHeaders, COPILOT_INTEGRATION_ID } from "openclaw/plugin-sdk/provider-auth"; import { diff --git a/extensions/google/google-shared.test-helpers.ts b/extensions/google/google-shared.test-helpers.ts index 9023853c1a29..996a8634cad7 100644 --- a/extensions/google/google-shared.test-helpers.ts +++ b/extensions/google/google-shared.test-helpers.ts @@ -1,4 +1,4 @@ -import type { Model } from "@mariozechner/pi-ai"; +import type { Model } from "@earendil-works/pi-ai"; import { expect } from "vitest"; function makeZeroUsageSnapshot() { diff --git a/extensions/google/google-shared.test.ts b/extensions/google/google-shared.test.ts index aff6bb70dab1..b3074f5c0dc0 100644 --- a/extensions/google/google-shared.test.ts +++ b/extensions/google/google-shared.test.ts @@ -1,9 +1,9 @@ -import type { Context, Tool } from "@mariozechner/pi-ai"; +import type { Context, Tool } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { convertMessages, convertTools, -} from "../../node_modules/@mariozechner/pi-ai/dist/providers/google-shared.js"; +} from "../../node_modules/@earendil-works/pi-ai/dist/providers/google-shared.js"; import { asRecord, expectConvertedRoles, diff --git a/extensions/google/index.test.ts b/extensions/google/index.test.ts index cc57219d2a6e..4fad739f690d 100644 --- a/extensions/google/index.test.ts +++ b/extensions/google/index.test.ts @@ -1,4 +1,4 @@ -import type { Context, Model } from "@mariozechner/pi-ai"; +import type { Context, Model } from "@earendil-works/pi-ai"; import type { ProviderReplaySessionEntry, ProviderSanitizeReplayHistoryContext, diff --git a/extensions/google/package.json b/extensions/google/package.json index 332d3133d609..6ae7a0a157d1 100644 --- a/extensions/google/package.json +++ b/extensions/google/package.json @@ -6,7 +6,7 @@ "type": "module", "dependencies": { "@google/genai": "^2.0.1", - "@mariozechner/pi-ai": "0.73.1" + "@earendil-works/pi-ai": "0.74.0" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/google/transport-stream.test.ts b/extensions/google/transport-stream.test.ts index f51ae6be9748..2d93c7adb918 100644 --- a/extensions/google/transport-stream.test.ts +++ b/extensions/google/transport-stream.test.ts @@ -1,7 +1,7 @@ import { mkdir, mkdtemp, writeFile } from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import type { Model } from "@mariozechner/pi-ai"; +import type { Model } from "@earendil-works/pi-ai"; import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const { buildGuardedModelFetchMock, guardedFetchMock } = vi.hoisted(() => ({ diff --git a/extensions/google/transport-stream.ts b/extensions/google/transport-stream.ts index 643b9b70d16a..c2fd6ad121a9 100644 --- a/extensions/google/transport-stream.ts +++ b/extensions/google/transport-stream.ts @@ -1,4 +1,4 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import { calculateCost, getEnvApiKey, @@ -6,7 +6,7 @@ import { type Model, type SimpleStreamOptions, type ThinkingLevel, -} from "@mariozechner/pi-ai"; +} from "@earendil-works/pi-ai"; import { createProviderHttpError } from "openclaw/plugin-sdk/provider-http"; import { buildGuardedModelFetch, diff --git a/extensions/kilocode/index.test.ts b/extensions/kilocode/index.test.ts index 509f30839076..2f653652103e 100644 --- a/extensions/kilocode/index.test.ts +++ b/extensions/kilocode/index.test.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Context, Model } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Context, Model } from "@earendil-works/pi-ai"; import { registerSingleProviderPlugin } from "openclaw/plugin-sdk/plugin-test-runtime"; import { expectPassthroughReplayPolicy } from "openclaw/plugin-sdk/provider-test-contracts"; import { describe, expect, it } from "vitest"; diff --git a/extensions/kimi-coding/package.json b/extensions/kimi-coding/package.json index 54757654b26e..0dc5a2106e05 100644 --- a/extensions/kimi-coding/package.json +++ b/extensions/kimi-coding/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw Kimi provider plugin", "type": "module", "dependencies": { - "@mariozechner/pi-ai": "0.73.1" + "@earendil-works/pi-ai": "0.74.0" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/kimi-coding/stream.test.ts b/extensions/kimi-coding/stream.test.ts index 42dc36c51453..83a77efaaa40 100644 --- a/extensions/kimi-coding/stream.test.ts +++ b/extensions/kimi-coding/stream.test.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Context, Model } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Context, Model } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { createKimiThinkingWrapper, diff --git a/extensions/kimi-coding/stream.ts b/extensions/kimi-coding/stream.ts index 8dd873aa0ab4..5f8a5e5b57d5 100644 --- a/extensions/kimi-coding/stream.ts +++ b/extensions/kimi-coding/stream.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { streamSimple } from "@earendil-works/pi-ai"; import type { ProviderWrapStreamFnContext } from "openclaw/plugin-sdk/plugin-entry"; import { streamWithPayloadPatch } from "openclaw/plugin-sdk/provider-stream-shared"; import { normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/string-coerce-runtime"; diff --git a/extensions/lmstudio/package.json b/extensions/lmstudio/package.json index a7cabaa1fb0e..d9c5085e2f31 100644 --- a/extensions/lmstudio/package.json +++ b/extensions/lmstudio/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw LM Studio provider plugin", "type": "module", "dependencies": { - "@mariozechner/pi-ai": "0.73.1" + "@earendil-works/pi-ai": "0.74.0" }, "openclaw": { "extensions": [ diff --git a/extensions/lmstudio/src/stream.test.ts b/extensions/lmstudio/src/stream.test.ts index 496f3dbe81af..bb4a0494e027 100644 --- a/extensions/lmstudio/src/stream.test.ts +++ b/extensions/lmstudio/src/stream.test.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { createAssistantMessageEventStream } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { createAssistantMessageEventStream } from "@earendil-works/pi-ai"; import { afterAll, afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { __resetLmstudioPreloadCooldownForTest, wrapLmstudioInferencePreload } from "./stream.js"; diff --git a/extensions/lmstudio/src/stream.ts b/extensions/lmstudio/src/stream.ts index 08544c968ff2..211d4439f58e 100644 --- a/extensions/lmstudio/src/stream.ts +++ b/extensions/lmstudio/src/stream.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { createAssistantMessageEventStream, streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { createAssistantMessageEventStream, streamSimple } from "@earendil-works/pi-ai"; import { createSubsystemLogger } from "openclaw/plugin-sdk/logging-core"; import type { ProviderWrapStreamFnContext } from "openclaw/plugin-sdk/plugin-entry"; import { ssrfPolicyFromHttpBaseUrlAllowedHostname } from "openclaw/plugin-sdk/ssrf-runtime"; diff --git a/extensions/matrix/src/tool-actions.ts b/extensions/matrix/src/tool-actions.ts index 614adac5c887..582bbc20be11 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 { normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/string-coerce-runtime"; import { resolveMatrixAccountConfig } from "./matrix/accounts.js"; import { diff --git a/extensions/minimax/index.test.ts b/extensions/minimax/index.test.ts index 6f2caef2685e..8c2bb4626c92 100644 --- a/extensions/minimax/index.test.ts +++ b/extensions/minimax/index.test.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Context, Model } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Context, Model } from "@earendil-works/pi-ai"; import { registerProviderPlugin, requireRegisteredProvider, diff --git a/extensions/moonshot/index.test.ts b/extensions/moonshot/index.test.ts index a3531ee36fda..482fd9738a49 100644 --- a/extensions/moonshot/index.test.ts +++ b/extensions/moonshot/index.test.ts @@ -1,5 +1,5 @@ import fs from "node:fs"; -import type { Context, Model } from "@mariozechner/pi-ai"; +import type { Context, Model } from "@earendil-works/pi-ai"; import { registerSingleProviderPlugin } from "openclaw/plugin-sdk/plugin-test-runtime"; import { createCapturedThinkingConfigStream } from "openclaw/plugin-sdk/provider-test-contracts"; import { describe, expect, it } from "vitest"; diff --git a/extensions/ollama/package.json b/extensions/ollama/package.json index f18fe4f40a38..9e554fa9ebef 100644 --- a/extensions/ollama/package.json +++ b/extensions/ollama/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw Ollama provider plugin", "type": "module", "dependencies": { - "@mariozechner/pi-ai": "0.73.1", + "@earendil-works/pi-ai": "0.74.0", "typebox": "1.1.38" }, "devDependencies": { diff --git a/extensions/ollama/src/stream.ts b/extensions/ollama/src/stream.ts index 1ac2082b8b4e..d51368fc7d2a 100644 --- a/extensions/ollama/src/stream.ts +++ b/extensions/ollama/src/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, @@ -8,8 +8,8 @@ import type { ToolCall, Tool, Usage, -} from "@mariozechner/pi-ai"; -import { createAssistantMessageEventStream, streamSimple } from "@mariozechner/pi-ai"; +} from "@earendil-works/pi-ai"; +import { createAssistantMessageEventStream, streamSimple } from "@earendil-works/pi-ai"; import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime"; import type { OpenClawConfig, diff --git a/extensions/openai/index.test.ts b/extensions/openai/index.test.ts index e0b60ad03b2d..fbddd7bb9f1e 100644 --- a/extensions/openai/index.test.ts +++ b/extensions/openai/index.test.ts @@ -32,7 +32,7 @@ vi.mock("openclaw/plugin-sdk/runtime-env", async () => { }; }); -vi.mock("@mariozechner/pi-ai/oauth", () => ({ +vi.mock("@earendil-works/pi-ai/oauth", () => ({ getOAuthApiKey: vi.fn(), getOAuthProviders: () => [], loginOpenAICodex: vi.fn(), diff --git a/extensions/openai/native-web-search.ts b/extensions/openai/native-web-search.ts index 9eba01c818cf..7257b62f1255 100644 --- a/extensions/openai/native-web-search.ts +++ b/extensions/openai/native-web-search.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { streamSimple } from "@earendil-works/pi-ai"; import type { OpenClawConfig } from "openclaw/plugin-sdk/config-contracts"; import { normalizeProviderId } from "openclaw/plugin-sdk/provider-model-shared"; import { streamWithPayloadPatch } from "openclaw/plugin-sdk/provider-stream-shared"; diff --git a/extensions/openai/openai-codex-oauth.runtime.ts b/extensions/openai/openai-codex-oauth.runtime.ts index 9214ea232497..15b012acd25d 100644 --- a/extensions/openai/openai-codex-oauth.runtime.ts +++ b/extensions/openai/openai-codex-oauth.runtime.ts @@ -1,5 +1,5 @@ import path from "node:path"; -import { loginOpenAICodex, type OAuthCredentials } from "@mariozechner/pi-ai/oauth"; +import { loginOpenAICodex, type OAuthCredentials } from "@earendil-works/pi-ai/oauth"; import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime"; import type { ProviderAuthContext } from "openclaw/plugin-sdk/plugin-entry"; import { ensureGlobalUndiciEnvProxyDispatcher } from "openclaw/plugin-sdk/runtime-env"; diff --git a/extensions/openai/openai-codex-provider.runtime.ts b/extensions/openai/openai-codex-provider.runtime.ts index 7f328bc7c807..1cd9854f4060 100644 --- a/extensions/openai/openai-codex-provider.runtime.ts +++ b/extensions/openai/openai-codex-provider.runtime.ts @@ -1,7 +1,7 @@ import { getOAuthApiKey as getOAuthApiKeyFromPi, refreshOpenAICodexToken as refreshOpenAICodexTokenFromPi, -} from "@mariozechner/pi-ai/oauth"; +} from "@earendil-works/pi-ai/oauth"; import { ensureGlobalUndiciEnvProxyDispatcher } from "openclaw/plugin-sdk/runtime-env"; type OpenAICodexProviderRuntimeDeps = { diff --git a/extensions/openai/openai-provider.live.test.ts b/extensions/openai/openai-provider.live.test.ts index ba7217f2536d..ddb9f3a996ba 100644 --- a/extensions/openai/openai-provider.live.test.ts +++ b/extensions/openai/openai-provider.live.test.ts @@ -1,4 +1,4 @@ -import { getModel, type Api, type Model } from "@mariozechner/pi-ai"; +import { getModel, type Api, type Model } from "@earendil-works/pi-ai"; import OpenAI from "openai"; import type { ProviderRuntimeModel } from "openclaw/plugin-sdk/plugin-entry"; import { describe, expect, it } from "vitest"; diff --git a/extensions/openai/openai-provider.test.ts b/extensions/openai/openai-provider.test.ts index 4fae0eefd522..33afd123b731 100644 --- a/extensions/openai/openai-provider.test.ts +++ b/extensions/openai/openai-provider.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 { beforeEach, describe, expect, it, vi } from "vitest"; import { buildOpenAICodexProviderPlugin } from "./openai-codex-provider.js"; import { buildOpenAIProvider } from "./openai-provider.js"; diff --git a/extensions/openai/openai.live.test.ts b/extensions/openai/openai.live.test.ts index ae46107957b0..b1fc16d87ea5 100644 --- a/extensions/openai/openai.live.test.ts +++ b/extensions/openai/openai.live.test.ts @@ -1,8 +1,8 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import { getModel, type Api, type Model } from "@mariozechner/pi-ai"; -import { AuthStorage, ModelRegistry } from "@mariozechner/pi-coding-agent"; +import { getModel, type Api, type Model } from "@earendil-works/pi-ai"; +import { AuthStorage, ModelRegistry } from "@earendil-works/pi-coding-agent"; import OpenAI from "openai"; import type { ResolvedTtsConfig } from "openclaw/plugin-sdk/agent-runtime"; import type { OpenClawConfig } from "openclaw/plugin-sdk/config-contracts"; diff --git a/extensions/openai/openclaw.plugin.test.ts b/extensions/openai/openclaw.plugin.test.ts index ea6a52453446..28bae24f50a3 100644 --- a/extensions/openai/openclaw.plugin.test.ts +++ b/extensions/openai/openclaw.plugin.test.ts @@ -68,7 +68,7 @@ function providerWizardByKey() { describe("OpenAI plugin manifest", () => { it("keeps runtime dependencies in the package manifest", () => { - expect(packageJson.dependencies?.["@mariozechner/pi-ai"]).toBe("0.73.1"); + expect(packageJson.dependencies?.["@earendil-works/pi-ai"]).toBe("0.74.0"); expect(packageJson.dependencies?.ws).toBe("^8.20.0"); }); diff --git a/extensions/openai/package.json b/extensions/openai/package.json index 0c2b0f7ac42f..b10a14be2db2 100644 --- a/extensions/openai/package.json +++ b/extensions/openai/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw OpenAI provider plugins", "type": "module", "dependencies": { - "@mariozechner/pi-ai": "0.73.1", + "@earendil-works/pi-ai": "0.74.0", "ws": "^8.20.0" }, "devDependencies": { diff --git a/extensions/opencode-go/index.test.ts b/extensions/opencode-go/index.test.ts index 39cf4d4eccb9..01d6d1298fe1 100644 --- a/extensions/opencode-go/index.test.ts +++ b/extensions/opencode-go/index.test.ts @@ -1,4 +1,4 @@ -import { getModels } from "@mariozechner/pi-ai"; +import { getModels } from "@earendil-works/pi-ai"; import { registerProviderPlugin, registerSingleProviderPlugin, diff --git a/extensions/opencode/media-understanding-provider.ts b/extensions/opencode/media-understanding-provider.ts index cd3891535527..83c50a9f0deb 100644 --- a/extensions/opencode/media-understanding-provider.ts +++ b/extensions/opencode/media-understanding-provider.ts @@ -1,4 +1,4 @@ -import type { ProviderStreamOptions } from "@mariozechner/pi-ai"; +import type { ProviderStreamOptions } from "@earendil-works/pi-ai"; import { describeImageWithModelPayloadTransform, describeImagesWithModelPayloadTransform, diff --git a/extensions/openrouter/index.test.ts b/extensions/openrouter/index.test.ts index ddebbf9aa1e1..350af53205f3 100644 --- a/extensions/openrouter/index.test.ts +++ b/extensions/openrouter/index.test.ts @@ -196,7 +196,7 @@ describe("openrouter provider hooks", () => { it("injects provider routing into compat before applying stream wrappers", async () => { const provider = await registerSingleProviderPlugin(openrouterPlugin); const baseStreamFn = vi.fn( - (..._args: Parameters) => + (..._args: Parameters) => ({ async *[Symbol.asyncIterator]() {} }) as never, ); @@ -235,8 +235,8 @@ describe("openrouter provider hooks", () => { let capturedPayload: Record | undefined; const baseStreamFn = vi.fn( ( - ...args: Parameters - ): ReturnType => { + ...args: Parameters + ): ReturnType => { void args[2]?.onPayload?.({}, args[0]); return { async *[Symbol.asyncIterator]() {} } as never; }, @@ -274,8 +274,8 @@ describe("openrouter provider hooks", () => { let capturedPayload: Record | undefined; const baseStreamFn = vi.fn( ( - ...args: Parameters - ): ReturnType => { + ...args: Parameters + ): ReturnType => { const payload = { messages: [ { role: "user", content: "read file" }, @@ -329,8 +329,8 @@ describe("openrouter provider hooks", () => { const payloads: Array> = []; const baseStreamFn = vi.fn( ( - ...args: Parameters - ): ReturnType => { + ...args: Parameters + ): ReturnType => { const payload = { messages: [] }; void args[2]?.onPayload?.(payload, args[0]); payloads.push(payload); @@ -373,8 +373,8 @@ describe("openrouter provider hooks", () => { const payloads: Array> = []; const baseStreamFn = vi.fn( ( - ...args: Parameters - ): ReturnType => { + ...args: Parameters + ): ReturnType => { const payload = { messages: [{ role: "assistant", tool_calls: [{ id: "call_1", type: "function" }] }], }; @@ -437,8 +437,8 @@ describe("openrouter provider hooks", () => { let capturedPayload: Record | undefined; const baseStreamFn = vi.fn( ( - ...args: Parameters - ): ReturnType => { + ...args: Parameters + ): ReturnType => { const payload = { messages: [ { role: "user", content: "Return JSON." }, @@ -480,8 +480,8 @@ describe("openrouter provider hooks", () => { const payloads: Array> = []; const baseStreamFn = vi.fn( ( - ...args: Parameters - ): ReturnType => { + ...args: Parameters + ): ReturnType => { const payload = { messages: [ { role: "user", content: "Return JSON." }, diff --git a/extensions/openrouter/openrouter.live.test.ts b/extensions/openrouter/openrouter.live.test.ts index 6ba22e869a1b..24a6b77fff21 100644 --- a/extensions/openrouter/openrouter.live.test.ts +++ b/extensions/openrouter/openrouter.live.test.ts @@ -1,4 +1,4 @@ -import { AuthStorage, ModelRegistry } from "@mariozechner/pi-coding-agent"; +import { AuthStorage, ModelRegistry } from "@earendil-works/pi-coding-agent"; import OpenAI from "openai"; import { registerProviderPlugin, diff --git a/extensions/openrouter/stream.ts b/extensions/openrouter/stream.ts index 88d1b7a14ec0..7e781b34d47c 100644 --- a/extensions/openrouter/stream.ts +++ b/extensions/openrouter/stream.ts @@ -1,4 +1,4 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import type { ProviderWrapStreamFnContext } from "openclaw/plugin-sdk/plugin-entry"; import { OPENROUTER_THINKING_STREAM_HOOKS } from "openclaw/plugin-sdk/provider-stream-family"; import { diff --git a/extensions/qwen/stream.test.ts b/extensions/qwen/stream.test.ts index 6424497bd2bb..8e30e90a77fe 100644 --- a/extensions/qwen/stream.test.ts +++ b/extensions/qwen/stream.test.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Context, Model } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Context, Model } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { createQwenThinkingWrapper, wrapQwenProviderStream } from "./stream.js"; diff --git a/extensions/qwen/stream.ts b/extensions/qwen/stream.ts index c3ec46f91d71..c406c85a5c8e 100644 --- a/extensions/qwen/stream.ts +++ b/extensions/qwen/stream.ts @@ -1,4 +1,4 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import type { ProviderWrapStreamFnContext } from "openclaw/plugin-sdk/plugin-entry"; import { normalizeProviderId } from "openclaw/plugin-sdk/provider-model-shared"; import { diff --git a/extensions/slack/src/action-runtime.ts b/extensions/slack/src/action-runtime.ts index 422257ee6da5..909733387dfd 100644 --- a/extensions/slack/src/action-runtime.ts +++ b/extensions/slack/src/action-runtime.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { readBooleanParam } from "openclaw/plugin-sdk/boolean-param"; import { isSingleUseReplyToMode } from "openclaw/plugin-sdk/reply-reference"; import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime"; diff --git a/extensions/slack/src/channel-actions.ts b/extensions/slack/src/channel-actions.ts index a1895900b078..6271c0842a65 100644 --- a/extensions/slack/src/channel-actions.ts +++ b/extensions/slack/src/channel-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 { ChannelMessageActionAdapter } from "openclaw/plugin-sdk/channel-contract"; import type { SlackActionContext } from "./action-runtime.js"; import { handleSlackMessageAction } from "./message-action-dispatch.js"; diff --git a/extensions/slack/src/message-action-dispatch.ts b/extensions/slack/src/message-action-dispatch.ts index 2a3915023a06..4e3c46aca1b6 100644 --- a/extensions/slack/src/message-action-dispatch.ts +++ b/extensions/slack/src/message-action-dispatch.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { readBooleanParam } from "openclaw/plugin-sdk/boolean-param"; import type { ChannelMessageActionContext } from "openclaw/plugin-sdk/channel-contract"; import { diff --git a/extensions/telegram/src/action-runtime.ts b/extensions/telegram/src/action-runtime.ts index f0779eac9e87..9c8721126013 100644 --- a/extensions/telegram/src/action-runtime.ts +++ b/extensions/telegram/src/action-runtime.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { readBooleanParam } from "openclaw/plugin-sdk/boolean-param"; import { jsonResult, diff --git a/extensions/test-support/provider-model-test-helpers.ts b/extensions/test-support/provider-model-test-helpers.ts index 10536e19fb2d..5420200940d5 100644 --- a/extensions/test-support/provider-model-test-helpers.ts +++ b/extensions/test-support/provider-model-test-helpers.ts @@ -1,4 +1,4 @@ -import type { ModelRegistry } from "@mariozechner/pi-coding-agent"; +import type { ModelRegistry } from "@earendil-works/pi-coding-agent"; import type { ProviderCatalogContext, ProviderResolveDynamicModelContext, diff --git a/extensions/twitch/package.json b/extensions/twitch/package.json index c7505934bd0f..62663ad0a603 100644 --- a/extensions/twitch/package.json +++ b/extensions/twitch/package.json @@ -8,9 +8,9 @@ }, "type": "module", "dependencies": { - "@twurple/api": "^8.1.3", - "@twurple/auth": "^8.1.3", - "@twurple/chat": "^8.1.3", + "@twurple/api": "^8.1.4", + "@twurple/auth": "^8.1.4", + "@twurple/chat": "^8.1.4", "zod": "^4.4.3" }, "devDependencies": { diff --git a/extensions/vllm/stream.test.ts b/extensions/vllm/stream.test.ts index 15263bbc830c..38ca89ce5098 100644 --- a/extensions/vllm/stream.test.ts +++ b/extensions/vllm/stream.test.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Context, Model } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Context, Model } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { createVllmProviderThinkingWrapper, diff --git a/extensions/vllm/stream.ts b/extensions/vllm/stream.ts index 19f5392ea1f3..603087bb40c7 100644 --- a/extensions/vllm/stream.ts +++ b/extensions/vllm/stream.ts @@ -1,4 +1,4 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import type { ProviderWrapStreamFnContext } from "openclaw/plugin-sdk/plugin-entry"; import { normalizeProviderId } from "openclaw/plugin-sdk/provider-model-shared"; import { diff --git a/extensions/whatsapp/src/action-runtime.ts b/extensions/whatsapp/src/action-runtime.ts index 1d34a6815546..0412b84c9d8d 100644 --- a/extensions/whatsapp/src/action-runtime.ts +++ b/extensions/whatsapp/src/action-runtime.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/xai/package.json b/extensions/xai/package.json index 219436053a87..107e327d2b1e 100644 --- a/extensions/xai/package.json +++ b/extensions/xai/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw xAI plugin", "type": "module", "dependencies": { - "@mariozechner/pi-ai": "0.73.1", + "@earendil-works/pi-ai": "0.74.0", "typebox": "1.1.38" }, "devDependencies": { diff --git a/extensions/xai/stream.test.ts b/extensions/xai/stream.test.ts index 2ede53d6027f..9d66ec77aa58 100644 --- a/extensions/xai/stream.test.ts +++ b/extensions/xai/stream.test.ts @@ -1,6 +1,6 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Api, Context, Model } from "@mariozechner/pi-ai"; -import { streamSimpleOpenAIResponses } from "@mariozechner/pi-ai/openai-responses"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Api, Context, Model } from "@earendil-works/pi-ai"; +import { streamSimpleOpenAIResponses } from "@earendil-works/pi-ai/openai-responses"; import { describe, expect, it } from "vitest"; import { applyXaiRuntimeModelCompat } from "./runtime-model-compat.js"; import { diff --git a/extensions/xai/stream.ts b/extensions/xai/stream.ts index 84969ed76062..01b6d7549bd5 100644 --- a/extensions/xai/stream.ts +++ b/extensions/xai/stream.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { streamSimple } from "@earendil-works/pi-ai"; import type { ProviderWrapStreamFnContext } from "openclaw/plugin-sdk/plugin-entry"; import { composeProviderStreamWrappers, diff --git a/extensions/xai/test-helpers.ts b/extensions/xai/test-helpers.ts index 366019f4adf6..790ab0346dbb 100644 --- a/extensions/xai/test-helpers.ts +++ b/extensions/xai/test-helpers.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Context, Model } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Context, Model } from "@earendil-works/pi-ai"; import { expect } from "vitest"; type XaiToolPayloadFunction = { diff --git a/extensions/xai/x-search-tool-shared.ts b/extensions/xai/x-search-tool-shared.ts index 9d37ef8a26fe..4cbbaede68f2 100644 --- a/extensions/xai/x-search-tool-shared.ts +++ b/extensions/xai/x-search-tool-shared.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { Type } from "typebox"; export function buildMissingXSearchApiKeyPayload() { diff --git a/extensions/zai/index.test.ts b/extensions/zai/index.test.ts index 75d471cea33d..ff0c8ad1d662 100644 --- a/extensions/zai/index.test.ts +++ b/extensions/zai/index.test.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Context, Model } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Context, Model } from "@earendil-works/pi-ai"; import { registerSingleProviderPlugin } from "openclaw/plugin-sdk/plugin-test-runtime"; import { buildOpenAICompletionsParams } from "openclaw/plugin-sdk/provider-transport-runtime"; import { describe, expect, it } from "vitest"; diff --git a/package.json b/package.json index 46597e62b574..a054f5e7ab36 100644 --- a/package.json +++ b/package.json @@ -1683,9 +1683,6 @@ "test:voicecall:closedloop": "node scripts/test-voicecall-closedloop.mjs", "test:watch": "node scripts/test-projects.mjs --watch", "test:windows:ci": "node scripts/test-projects.mjs src/shared/runtime-import.test.ts src/plugins/import-specifier.test.ts src/process/exec.windows.test.ts src/process/windows-command.test.ts src/infra/windows-install-roots.test.ts extensions/lobster/src/lobster-runner.test.ts test/scripts/npm-runner.test.ts test/scripts/pnpm-runner.test.ts test/scripts/ui.test.ts test/scripts/vitest-process-group.test.ts", - "testbox:claim": "node scripts/blacksmith-testbox-runner.mjs --claim", - "testbox:run": "node scripts/blacksmith-testbox-runner.mjs", - "testbox:sanity": "node scripts/testbox-sync-sanity.mjs", "tool-display:check": "node --import tsx scripts/tool-display.ts --check", "tool-display:write": "node --import tsx scripts/tool-display.ts --write", "ts-topology": "node --import tsx scripts/ts-topology.ts", @@ -1727,13 +1724,13 @@ "@grammyjs/transformer-throttler": "^1.2.1", "@homebridge/ciao": "^1.3.8", "@lydell/node-pty": "1.2.0-beta.12", - "@mariozechner/pi-agent-core": "0.73.1", - "@mariozechner/pi-ai": "0.73.1", - "@mariozechner/pi-coding-agent": "0.73.1", - "@mariozechner/pi-tui": "0.73.1", + "@earendil-works/pi-agent-core": "0.74.0", + "@earendil-works/pi-ai": "0.74.0", + "@earendil-works/pi-coding-agent": "0.74.0", + "@earendil-works/pi-tui": "0.74.0", "@modelcontextprotocol/sdk": "1.29.0", "@mozilla/readability": "^0.6.0", - "@openclaw/fs-safe": "github:openclaw/fs-safe#c7ccb99d3058f2acf2ad2758ad2470c7e113a53c", + "@openclaw/fs-safe": "^0.2.1", "@slack/bolt": "^4.7.2", "@slack/types": "^2.21.1", "@slack/web-api": "^7.15.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 37715d4ee6ce..e58dd28b51a8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -31,15 +31,11 @@ overrides: protobufjs: 7.5.5 uuid: 14.0.0 -packageExtensionsChecksum: sha256-n+P/SQo4Pf+dHYpYn1Y6wL4cJEVoVzZ835N0OEp4TM8= +packageExtensionsChecksum: sha256-dYQ0sWkVmDP3h45qaFTG+rd1lBoV5PWy5sLOMeDND7g= patchedDependencies: - '@agentclientprotocol/claude-agent-acp@0.33.1': - hash: 3995624bb834cc60fea1461c7ef33f1fcdd8fb58b8f43f2f1490bc689f6e1be2 - path: patches/@agentclientprotocol__claude-agent-acp@0.33.1.patch - baileys@7.0.0-rc10: - hash: a9aea1790d2c65b1ae543c77faca4119bbfb91ee3b6ca6c38d1cad4f5702ada2 - path: patches/baileys@7.0.0-rc10.patch + '@agentclientprotocol/claude-agent-acp@0.33.1': 3995624bb834cc60fea1461c7ef33f1fcdd8fb58b8f43f2f1490bc689f6e1be2 + baileys@7.0.0-rc10: a9aea1790d2c65b1ae543c77faca4119bbfb91ee3b6ca6c38d1cad4f5702ada2 importers: @@ -72,6 +68,18 @@ importers: '@clack/prompts': specifier: ^1.3.0 version: 1.3.0 + '@earendil-works/pi-agent-core': + specifier: 0.74.0 + version: 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@earendil-works/pi-ai': + specifier: 0.74.0 + version: 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@earendil-works/pi-coding-agent': + specifier: 0.74.0 + version: 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@earendil-works/pi-tui': + specifier: 0.74.0 + version: 0.74.0 '@google/genai': specifier: ^2.0.1 version: 2.0.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3)) @@ -87,18 +95,6 @@ importers: '@lydell/node-pty': specifier: 1.2.0-beta.12 version: 1.2.0-beta.12 - '@mariozechner/pi-agent-core': - specifier: 0.73.1 - version: 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) - '@mariozechner/pi-ai': - specifier: 0.73.1 - version: 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) - '@mariozechner/pi-coding-agent': - specifier: 0.73.1 - version: 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) - '@mariozechner/pi-tui': - specifier: 0.73.1 - version: 0.73.1 '@modelcontextprotocol/sdk': specifier: 1.29.0 version: 1.29.0(zod@4.4.3) @@ -106,8 +102,8 @@ importers: specifier: ^0.6.0 version: 0.6.0 '@openclaw/fs-safe': - specifier: github:openclaw/fs-safe#c7ccb99d3058f2acf2ad2758ad2470c7e113a53c - version: https://codeload.github.com/openclaw/fs-safe/tar.gz/c7ccb99d3058f2acf2ad2758ad2470c7e113a53c + specifier: ^0.2.1 + version: 0.2.1 '@slack/bolt': specifier: ^4.7.2 version: 4.7.2(@types/express@5.0.6) @@ -288,7 +284,7 @@ importers: version: 0.21.1(signal-polyfill@0.2.2) tsdown: specifier: 0.22.0 - version: 0.22.0(@typescript/native-preview@7.0.0-dev.20260510.1)(tsx@4.21.0)(typescript@6.0.3)(unrun@0.2.37) + version: 0.22.0(@typescript/native-preview@7.0.0-dev.20260510.1)(tsx@4.21.0)(typescript@6.0.3) tsx: specifier: ^4.21.0 version: 4.21.0 @@ -339,9 +335,9 @@ importers: '@aws-sdk/credential-provider-node': specifier: 3.972.39 version: 3.972.39 - '@mariozechner/pi-ai': - specifier: 0.73.1 - version: 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@earendil-works/pi-ai': + specifier: 0.74.0 + version: 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) '@smithy/shared-ini-file-loader': specifier: 4.4.9 version: 4.4.9 @@ -358,9 +354,9 @@ importers: '@aws/bedrock-token-generator': specifier: ^1.1.0 version: 1.1.0 - '@mariozechner/pi-ai': - specifier: 0.73.1 - version: 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@earendil-works/pi-ai': + specifier: 0.74.0 + version: 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -368,9 +364,9 @@ importers: extensions/anthropic: dependencies: - '@mariozechner/pi-ai': - specifier: 0.73.1 - version: 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@earendil-works/pi-ai': + specifier: 0.74.0 + version: 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -381,12 +377,12 @@ importers: '@anthropic-ai/vertex-sdk': specifier: ^0.16.0 version: 0.16.0(zod@4.4.3) - '@mariozechner/pi-agent-core': - specifier: 0.73.1 - version: 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) - '@mariozechner/pi-ai': - specifier: 0.73.1 - version: 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@earendil-works/pi-agent-core': + specifier: 0.74.0 + version: 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@earendil-works/pi-ai': + specifier: 0.74.0 + version: 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -515,9 +511,9 @@ importers: extensions/codex: dependencies: - '@mariozechner/pi-coding-agent': - specifier: 0.73.1 - version: 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@earendil-works/pi-coding-agent': + specifier: 0.74.0 + version: 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) '@openai/codex': specifier: 0.130.0 version: 0.130.0 @@ -637,7 +633,7 @@ importers: dependencies: '@discordjs/voice': specifier: ^0.19.2 - version: 0.19.2(@discordjs/opus@0.10.0)(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(opusscript@0.1.1) + version: 0.19.2(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(opusscript@0.1.1) discord-api-types: specifier: ^0.38.47 version: 0.38.47 @@ -745,9 +741,9 @@ importers: extensions/fireworks: dependencies: - '@mariozechner/pi-ai': - specifier: 0.73.1 - version: 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@earendil-works/pi-ai': + specifier: 0.74.0 + version: 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -759,21 +755,21 @@ importers: specifier: ^1.3.0 version: 1.3.0 devDependencies: - '@mariozechner/pi-ai': - specifier: 0.73.1 - version: 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@earendil-works/pi-ai': + specifier: 0.74.0 + version: 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) '@openclaw/plugin-sdk': specifier: workspace:* version: link:../../packages/plugin-sdk extensions/google: dependencies: + '@earendil-works/pi-ai': + specifier: 0.74.0 + version: 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) '@google/genai': specifier: ^2.0.1 version: 2.0.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3)) - '@mariozechner/pi-ai': - specifier: 0.73.1 - version: 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -868,9 +864,9 @@ importers: extensions/kimi-coding: dependencies: - '@mariozechner/pi-ai': - specifier: 0.73.1 - version: 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@earendil-works/pi-ai': + specifier: 0.74.0 + version: 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -910,9 +906,9 @@ importers: extensions/lmstudio: dependencies: - '@mariozechner/pi-ai': - specifier: 0.73.1 - version: 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@earendil-works/pi-ai': + specifier: 0.74.0 + version: 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) extensions/lobster: dependencies: @@ -1193,9 +1189,9 @@ importers: extensions/ollama: dependencies: - '@mariozechner/pi-ai': - specifier: 0.73.1 - version: 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@earendil-works/pi-ai': + specifier: 0.74.0 + version: 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) typebox: specifier: 1.1.38 version: 1.1.38 @@ -1212,9 +1208,9 @@ importers: extensions/openai: dependencies: - '@mariozechner/pi-ai': - specifier: 0.73.1 - version: 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@earendil-works/pi-ai': + specifier: 0.74.0 + version: 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) ws: specifier: ^8.20.0 version: 8.20.0 @@ -1548,14 +1544,14 @@ importers: extensions/twitch: dependencies: '@twurple/api': - specifier: ^8.1.3 - version: 8.1.3(@twurple/auth@8.1.3) + specifier: ^8.1.4 + version: 8.1.4(@twurple/auth@8.1.4) '@twurple/auth': - specifier: ^8.1.3 - version: 8.1.3 + specifier: ^8.1.4 + version: 8.1.4 '@twurple/chat': - specifier: ^8.1.3 - version: 8.1.3(@twurple/auth@8.1.3) + specifier: ^8.1.4 + version: 8.1.4(@twurple/auth@8.1.4) zod: specifier: ^4.4.3 version: 4.4.3 @@ -1655,7 +1651,7 @@ importers: dependencies: baileys: specifier: 7.0.0-rc10 - version: 7.0.0-rc10(patch_hash=a9aea1790d2c65b1ae543c77faca4119bbfb91ee3b6ca6c38d1cad4f5702ada2)(audio-decode@2.2.3)(jimp@1.6.1)(sharp@0.34.5) + version: 7.0.0-rc10(patch_hash=a9aea1790d2c65b1ae543c77faca4119bbfb91ee3b6ca6c38d1cad4f5702ada2)(jimp@1.6.1)(sharp@0.34.5) https-proxy-agent: specifier: ^9.0.0 version: 9.0.0 @@ -1678,9 +1674,9 @@ importers: extensions/xai: dependencies: - '@mariozechner/pi-ai': - specifier: 0.73.1 - version: 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@earendil-works/pi-ai': + specifier: 0.74.0 + version: 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) typebox: specifier: 1.1.38 version: 1.1.38 @@ -2325,18 +2321,28 @@ packages: '@d-fischer/typed-event-emitter@3.3.3': resolution: {integrity: sha512-OvSEOa8icfdWDqcRtjSEZtgJTFOFNgTjje7zaL0+nAtu2/kZtRCSK5wUMrI/aXtCH8o0Qz2vA8UqkhWUTARFQQ==} - '@discordjs/node-pre-gyp@0.4.5': - resolution: {integrity: sha512-YJOVVZ545x24mHzANfYoy0BJX5PDyeZlpiJjDkUBM/V/Ao7TFX9lcUvCN4nr0tbr5ubeaXxtEBILUrHtTphVeQ==} - hasBin: true - - '@discordjs/opus@0.10.0': - resolution: {integrity: sha512-HHEnSNrSPmFEyndRdQBJN2YE6egyXS9JUnJWyP6jficK0Y+qKMEZXyYTgmzpjrxXP1exM/hKaNP7BRBUEWkU5w==} - engines: {node: '>=12.0.0'} - '@discordjs/voice@0.19.2': resolution: {integrity: sha512-3yJ255e4ag3wfZu/DSxeOZK1UtnqNxnspmLaQetGT0pDkThNZoHs+Zg6dgZZ19JEVomXygvfHn9lNpICZuYtEA==} engines: {node: '>=22.12.0'} + '@earendil-works/pi-agent-core@0.74.0': + resolution: {integrity: sha512-6GMR7/wwjEJ1EsXLWEz03QOWin4AMrJ/AZoMpgm5DJ6GHsF6q6GOhQbj5Zip4dow3vo/TmBAVqM+vmGfrjGAFQ==} + engines: {node: '>=20.0.0'} + + '@earendil-works/pi-ai@0.74.0': + resolution: {integrity: sha512-7M7qcrZY/KEkH4wFkX3eqzvmKru4O88wezNKoN0KD2m4aAOmp9tdW2xCmUgSTSWlKB7b2Xw9QtAgrzHtg6t6iw==} + engines: {node: '>=20.0.0'} + hasBin: true + + '@earendil-works/pi-coding-agent@0.74.0': + resolution: {integrity: sha512-Q5GikbB5vRBrsrrf/uvet53rPSQ1sn5I5mO+l7sIobdXYpS04/X2oOc2UHFm90fNdkl3yU+ANTZL0zOtHbnqRw==} + engines: {node: '>=20.6.0'} + hasBin: true + + '@earendil-works/pi-tui@0.74.0': + resolution: {integrity: sha512-1aIfXZp7D/z+1VlZX8BZcs6pgO8rjmil7kwyhctNDsWvce3Yfl8GVgu4eq+I0Mjhr8Cj+ipBiv9CLIzdoyCOIQ==} + engines: {node: '>=20.0.0'} + '@emnapi/core@1.10.0': resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} @@ -3058,28 +3064,6 @@ packages: resolution: {integrity: sha512-D3F+UrU9CR7roJt0zDLp6Oc+4/KlLDIrN4frH+6V90SJNW2KKUec1oCQIPaaDjCqeOsQyX9dyqYbImIQIM45PA==} engines: {node: '>= 10'} - '@mariozechner/pi-agent-core@0.73.1': - resolution: {integrity: sha512-Y/KVOhuKSgRQgYBlwmRtO2gPkUcoavOSqGF9bpQIINvNZvc19k6Z1H3bFDTce3Vp5ApMmTsfLH3+tNvOg75fAQ==} - engines: {node: '>=20.0.0'} - deprecated: please use @earendil-works/pi-agent-core instead going forward - - '@mariozechner/pi-ai@0.73.1': - resolution: {integrity: sha512-Jh4lXawZYuC83HzSIYuVum9NBqJD49i4JOt3H96cGW/924cwJMOyUs1Mv/e4QPzTXnzrqMoGviNQnvGgSu1LSg==} - engines: {node: '>=20.0.0'} - deprecated: please use @earendil-works/pi-ai instead going forward - hasBin: true - - '@mariozechner/pi-coding-agent@0.73.1': - resolution: {integrity: sha512-gXQh3SaZmWTfVMc4Ao5+LGbVeKvzyO7tolok0nLsZgq9nGjZx/EEU3NM8C+qUnB4Nvs2rswG5qOVgLzQkq0fHQ==} - engines: {node: '>=20.6.0'} - deprecated: please use @earendil-works/pi-coding-agent instead going forward - hasBin: true - - '@mariozechner/pi-tui@0.73.1': - resolution: {integrity: sha512-ybVsRnUbzQRtbocltJ2OXb2QogrO67N2BlUyKjZz9BHcZYiDJtNkcKQockxDjsVvDc0uBCLDX6iZJoBElBd8fw==} - engines: {node: '>=20.0.0'} - deprecated: please use @earendil-works/pi-tui instead going forward - '@matrix-org/matrix-sdk-crypto-nodejs@0.5.1': resolution: {integrity: sha512-m1nTFhUJv8AZCvuVmZ0wgYsFaseVNMhl3Jqu18KoHs7TQa+mmAW4q3xY6MuVApd75Zu9E0ooQeA5obUZdQ24OA==} engines: {node: '>= 24'} @@ -3359,9 +3343,8 @@ packages: cpu: [x64] os: [win32] - '@openclaw/fs-safe@https://codeload.github.com/openclaw/fs-safe/tar.gz/c7ccb99d3058f2acf2ad2758ad2470c7e113a53c': - resolution: {gitHosted: true, tarball: https://codeload.github.com/openclaw/fs-safe/tar.gz/c7ccb99d3058f2acf2ad2758ad2470c7e113a53c} - version: 0.2.0 + '@openclaw/fs-safe@0.2.1': + resolution: {integrity: sha512-xFLJZHRtnxI9V5RfrPArzPXZRs5bVAbhV0x96qYKFmvyqxRwAyCdjXYLHpLHqU3uzwOGzRQFP8anAVNcfI7umA==} engines: {node: '>=20.11'} '@opentelemetry/api-logs@0.217.0': @@ -3532,9 +3515,6 @@ packages: resolution: {integrity: sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw==} engines: {node: '>=14'} - '@oxc-project/types@0.127.0': - resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==} - '@oxc-project/types@0.128.0': resolution: {integrity: sha512-huv1Y/LzBJkBVHt3OlC7u0zHBW9qXf1FdD7sGmc1rXc2P1mTwHssYv7jyGx5KAACSCH+9B3Bhn6Z9luHRvf7pQ==} @@ -3877,12 +3857,6 @@ packages: cpu: [arm64] os: [android] - '@rolldown/binding-android-arm64@1.0.0-rc.17': - resolution: {integrity: sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [android] - '@rolldown/binding-android-arm64@1.0.0-rc.18': resolution: {integrity: sha512-lIDyUAfD7U3+BWKzdxMbJcsYHuqXqmGz40aeRqvuAm3y5TkJSYTBW2RDrn65DJFPQqVjUAUqq5uz8urzQ8aBdQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3895,12 +3869,6 @@ packages: cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-arm64@1.0.0-rc.17': - resolution: {integrity: sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [darwin] - '@rolldown/binding-darwin-arm64@1.0.0-rc.18': resolution: {integrity: sha512-apJq2ktnGp27nSInMR5Vcj8kY6xJzDAvfdIFlpDcAK/w4cDO58qVoi1YQsES/SKiFNge/6e4CUzgjfHduYqWpQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3913,12 +3881,6 @@ packages: cpu: [x64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-rc.17': - resolution: {integrity: sha512-SUSDOI6WwUVNcWxd02QEBjLdY1VPHvlEkw6T/8nYG322iYWCTxRb1vzk4E+mWWYehTp7ERibq54LSJGjmouOsw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-rc.18': resolution: {integrity: sha512-5Ofot8xbs+pxRHJqm9/9N/4sTQOvdrwEsmPE9pdLEEoAbdZtG6F2LMDfO1sp6ZAtXJuJV/21ew2srq3W8NXB5g==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3931,12 +3893,6 @@ packages: cpu: [x64] os: [freebsd] - '@rolldown/binding-freebsd-x64@1.0.0-rc.17': - resolution: {integrity: sha512-hwnz3nw9dbJ05EDO/PvcjaaewqqDy7Y1rn1UO81l8iIK1GjenME75dl16ajbvSSMfv66WXSRCYKIqfgq2KCfxw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [freebsd] - '@rolldown/binding-freebsd-x64@1.0.0-rc.18': resolution: {integrity: sha512-7h8eeOTT1eyqJyx64BFCnWZpNm486hGWt2sqeLLgDxA0xI1oGZ9H7gK1S85uNGmBhkdPwa/6reTxfFFKvIsebw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3949,12 +3905,6 @@ packages: cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17': - resolution: {integrity: sha512-IS+W7epTcwANmFSQFrS1SivEXHtl1JtuQA9wlxrZTcNi6mx+FDOYrakGevvvTwgj2JvWiK8B29/qD9BELZPyXQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [linux] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.18': resolution: {integrity: sha512-eRcm/HVt9U/JFu5RKAEKwGQYtDCKWLiaH6wOnsSEp6NMBb/3Os8LgHZlNyzMpFVNmiiMFlfb2zEnebfzJrHFmg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3968,13 +3918,6 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17': - resolution: {integrity: sha512-e6usGaHKW5BMNZOymS1UcEYGowQMWcgZ71Z17Sl/h2+ZziNJ1a9n3Zvcz6LdRyIW5572wBCTH/Z+bKuZouGk9Q==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.18': resolution: {integrity: sha512-SOrT/cT4ukTmgnrEz/Hg3m7LBnuCLW9psDeMKrimRWY4I8DmnO7Lco8W2vtqPmMkbVu8iJ+g4GFLVLLOVjJ9DQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3989,13 +3932,6 @@ packages: os: [linux] libc: [musl] - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17': - resolution: {integrity: sha512-b/CgbwAJpmrRLp02RPfhbudf5tZnN9nsPWK82znefso832etkem8H7FSZwxrOI9djcdTP7U6YfNhbRnh7djErg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [musl] - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.18': resolution: {integrity: sha512-QWjdxN1HJCpBTAcZ5N5F7wju3gVPzRzSpmGzx7na0c/1qpN9CFil+xt+l9lV/1M6/gqHSNXCiqPfwhVJPeLnug==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4010,13 +3946,6 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17': - resolution: {integrity: sha512-4EII1iNGRUN5WwGbF/kOh/EIkoDN9HsupgLQoXfY+D1oyJm7/F4t5PYU5n8SWZgG0FEwakyM8pGgwcBYruGTlA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.18': resolution: {integrity: sha512-ugCOyj7a4d9h3q9B+wXmf6g3a68UsjGh6dob5DHevHGMwDUbhsYNbSPxJsENcIttJZ9jv7qGM2UesLw5jqIhdg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4031,13 +3960,6 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17': - resolution: {integrity: sha512-AH8oq3XqQo4IibpVXvPeLDI5pzkpYn0WiZAfT05kFzoJ6tQNzwRdDYQ45M8I/gslbodRZwW8uxLhbSBbkv96rA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.18': resolution: {integrity: sha512-kKWRhbsotpXkGbcd5dllUWg5gEXcDAa8u5YnP9AV5DYNbvJHGzzuwv7dpmhc8NqKMJldl0a+x76IHbspEpEmdA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4052,13 +3974,6 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17': - resolution: {integrity: sha512-cLnjV3xfo7KslbU41Z7z8BH/E1y5mzUYzAqih1d1MDaIGZRCMqTijqLv76/P7fyHuvUcfGsIpqCdddbxLLK9rA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.18': resolution: {integrity: sha512-uCo8ElcCIAMyYAZyuIZ81oFkhTSIllNvUCHCAlbhlN4ji3uC28h7IIdlXyIvGO7HsuqnV9p3rD/bpH7XhIyhRw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4073,13 +3988,6 @@ packages: os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-musl@1.0.0-rc.17': - resolution: {integrity: sha512-0phclDw1spsL7dUB37sIARuis2tAgomCJXAHZlpt8PXZ4Ba0dRP1e+66lsRqrfhISeN9bEGNjQs+T/Fbd7oYGw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [musl] - '@rolldown/binding-linux-x64-musl@1.0.0-rc.18': resolution: {integrity: sha512-XNOQZtuE6yUIvx4rwGemwh8kpL1xvU41FXy/s9K7T/3JVcqGzo3NfKM2HrbrGgfPYGFW42f07Wk++aOC6B9NWA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4093,12 +4001,6 @@ packages: cpu: [arm64] os: [openharmony] - '@rolldown/binding-openharmony-arm64@1.0.0-rc.17': - resolution: {integrity: sha512-0ag/hEgXOwgw4t8QyQvUCxvEg+V0KBcA6YuOx9g0r02MprutRF5dyljgm3EmR02O292UX7UeS6HzWHAl6KgyhA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [openharmony] - '@rolldown/binding-openharmony-arm64@1.0.0-rc.18': resolution: {integrity: sha512-tSn/kzrfa7tNOXr7sEacDBN4YsIqTyLqh45IO0nHDwtpKIDNDJr+VFojt+4klSpChxB29JLyduSsE0MKEwa65A==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4110,11 +4012,6 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@rolldown/binding-wasm32-wasi@1.0.0-rc.17': - resolution: {integrity: sha512-LEXei6vo0E5wTGwpkJ4KoT3OZJRnglwldt5ziLzOlc6qqb55z4tWNq2A+PFqCJuvWWdP53CVhG1Z9NtToDPJrA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [wasm32] - '@rolldown/binding-wasm32-wasi@1.0.0-rc.18': resolution: {integrity: sha512-+J9YGmc+czgqlhYmwun3S3O0FIZhsH8ep2456xwjAdIOmuJxM7xz4P4PtrxU+Bz17a/5bqPA8o3HAAoX0teUdg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4126,12 +4023,6 @@ packages: cpu: [arm64] os: [win32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': - resolution: {integrity: sha512-gUmyzBl3SPMa6hrqFUth9sVfcLBlYsbMzBx5PlexMroZStgzGqlZ26pYG89rBb45Mnia+oil6YAIFeEWGWhoZA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [win32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.18': resolution: {integrity: sha512-zsu47DgU0FQzSwi6sU9dZoEdUv7pc1AptSEz/Z8HBg54sV0Pbs3N0+CrIbTsgiu6EyoaNN9CHboqbLaz9lhOyQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4144,12 +4035,6 @@ packages: cpu: [x64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17': - resolution: {integrity: sha512-3hkiolcUAvPB9FLb3UZdfjVVNWherN1f/skkGWJP/fgSQhYUZpSIRr0/I8ZK9TkF3F7kxvJAk0+IcKvPHk9qQg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.18': resolution: {integrity: sha512-7H+3yqGgmnlDTRRhw/xpYY9J1kf4GC681nVc4GqKhExZTDrVVrV2tsOR9kso0fvgBdcTCcQShx4SLLoHgaLwhg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4159,9 +4044,6 @@ packages: '@rolldown/pluginutils@1.0.0': resolution: {integrity: sha512-aKs/3GSWyV0mrhNmt/96/Z3yczC3yvrzYATCiCXQebBsGyYzjNdUphRVLeJQ67ySKVXRfMxt2lm12pmXvbPFQQ==} - '@rolldown/pluginutils@1.0.0-rc.17': - resolution: {integrity: sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==} - '@rolldown/pluginutils@1.0.0-rc.18': resolution: {integrity: sha512-CUY5Mnhe64xQBGZEEXQ5WyZwsc1JU3vAZLIxtrsBt3LO6UOb+C8GunVKqe9sT8NeWb4lqSaoJtp2xo6GxT1MNw==} @@ -4546,14 +4428,6 @@ packages: resolution: {integrity: sha512-3nQ2mdyzPRKpBHjd3QiKZDwNzw1F7fBN+rSq8Xms2gg+JWZR4SY2Zdf+doqTyXdyVjG4Y0QM7IA4U42zT9xxzw==} engines: {node: '>=18.0.0'} - '@thi.ng/bitstream@2.4.48': - resolution: {integrity: sha512-s17d5i8xlPC8+/YEyFVzwTNSvaQxr/QCpqUtGVtrDnp+cKQnb7HMXnOvrLGUYCpWtweSVFzFCWp20xjU9xh2IA==} - engines: {node: '>=18'} - - '@thi.ng/errors@2.6.10': - resolution: {integrity: sha512-UYgdHPjJOaEct0kfURpaSzlyU18VDMg+HQ2csG3O+eBWyh/lUq3X1+gxN7/5y1xjp4pHyNd7iVvLklJZTFkTqA==} - engines: {node: '>=18'} - '@tloncorp/tlon-skill-darwin-arm64@0.3.6': resolution: {integrity: sha512-vR6OeFsIGg9K1QVG2ZZaMC+8QuTyoEp0mGwEJPCooMXF2FxAHTzAE99CNgTmNZbCkCDXIsCL9jMJTcfUNr6xyA==} cpu: [arm64] @@ -4592,24 +4466,24 @@ packages: '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@twurple/api-call@8.1.3': - resolution: {integrity: sha512-eKIoIRHyPsyJwCOpofE+/J+C5O+bPnxtq3bPUzMsS4EzZOF268WocbkaKLW1Fh3tepyxj3TvTNxEvKA6jbJr0A==} + '@twurple/api-call@8.1.4': + resolution: {integrity: sha512-qh2TpdxxyiSkwadcCSes6uBHQB6l4Fz8sVfmzk+Brb12asemHMXTEyQAdrMJT7LlgtZq01nr+RASzWM3jmGtkw==} - '@twurple/api@8.1.3': - resolution: {integrity: sha512-DTa/VX+h7kciDz3ZBQmrpVy1nPIepRMv4BtldaXKfDERlXRQBt4V2d6KfNn/hdUkRkxJ2Xi8x4PfBFE79VSrBw==} + '@twurple/api@8.1.4': + resolution: {integrity: sha512-UA2eg5lyZRB0w55NjGvdhSmWPyIBaOthFKGPjg3L/jCQVYnY/FcmUuPipe2Op9U4Ej99c29cdjsmTSQI7P7Vqg==} peerDependencies: - '@twurple/auth': 8.1.3 + '@twurple/auth': 8.1.4 - '@twurple/auth@8.1.3': - resolution: {integrity: sha512-UklOtXzQUnZskFsvt3h3kmkjXsILqNXe4NCMR1SYPicsYVnVMElS1uMiVI/H5mzJhVR5MFx5wQQyI15b5YtBxw==} + '@twurple/auth@8.1.4': + resolution: {integrity: sha512-ylsJoPInCw9BwOqxKcx+1k2ce9QG3vJpKFzPdIyHh49HvM/ulQZ0CAGysydugDYXF0iO/TGryh7PluSwx5fIwA==} - '@twurple/chat@8.1.3': - resolution: {integrity: sha512-BTamweCTlv8Bdkx1um0dSn0sDXBm3CX4js0GbatWPsX6mrMWljny2pQgIj+PSkTtHfsR4fmGEIayAticEydxnQ==} + '@twurple/chat@8.1.4': + resolution: {integrity: sha512-654LU7BwEpR7lLnWaVMgHtd7wMsaQo71GPTrFZ5ChS283d7B7GTe+9RJ5SxNliNxB5Xn0+R3R3M5HJlUOGYNeA==} peerDependencies: - '@twurple/auth': 8.1.3 + '@twurple/auth': 8.1.4 - '@twurple/common@8.1.3': - resolution: {integrity: sha512-B2BT42fJAEYqSPGjTd6qyZoUv6kgFzIvUJuTIrOUcBiJxcvZh8tD+WLRd5xfMKhtLbUFgesYlHxdPhmdar8/zw==} + '@twurple/common@8.1.4': + resolution: {integrity: sha512-1iN5DvOnW+g+Nl3OTI5zUJHgAfjmPCb50HpKsAFik6OYQEAHLsscQKgTOJ+KRuFBYepo/JkHsOWOmWhXxnK6lQ==} '@tybys/wasm-util@0.10.2': resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} @@ -4838,15 +4712,6 @@ packages: '@wasm-audio-decoders/common@9.0.7': resolution: {integrity: sha512-WRaUuWSKV7pkttBygml/a6dIEpatq2nnZGFIoPTc5yPLkxL6Wk4YaslPM98OPQvWacvNZ+Py9xROGDtrFBDzag==} - '@wasm-audio-decoders/flac@0.2.10': - resolution: {integrity: sha512-YfcyoD2rYRBa6ffawZKNi5qvV5HArJmNmuMVUPoutuZ2hhGi6WNSWIzgvbROGmPbFivLL764Am7xxJENWJDhjw==} - - '@wasm-audio-decoders/ogg-vorbis@0.1.20': - resolution: {integrity: sha512-zaQPasU5usRjUDXtXOHYED5tfkR4QMXd+EH3Nrz1+4+M5pCsdD+s9YxJqb0oqnTyRu/KUujOmu5Z/m/NT47vwg==} - - '@wasm-audio-decoders/opus-ml@0.0.2': - resolution: {integrity: sha512-58rWEqDGg+CKCyEeKm2KoxxSwTWtHh/NLTW9ObR4K8CGF6VwuuGudEI1CtniS/oSRmL1nJq/eh8MKARiluw4DQ==} - '@whiskeysockets/libsignal-node@https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67': resolution: {gitHosted: true, tarball: https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67} version: 2.0.1 @@ -4891,9 +4756,6 @@ packages: resolution: {integrity: sha512-IT9Zh9YDsRfXnc+RN9T00OCBFZrvQxzsWARWL9C1f0do4xB67eCZGildkJCHjoXmGAyYn1V7rIdRR6/+PzDdmw==} hasBin: true - abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -4927,10 +4789,6 @@ packages: engines: {node: '>=22.12.0'} hasBin: true - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - agent-base@7.1.4: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} @@ -4979,14 +4837,6 @@ packages: resolution: {integrity: sha512-v/ShMp57iBnBp4lDgV8Jx3d3Q5/Hac25FWmQ98eMahUiHPXcvwIMKJD0hBIgclm/FCG+LwPkAKtkRO1O/W0YGg==} hasBin: true - aproba@2.1.0: - resolution: {integrity: sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew==} - - are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -5036,16 +4886,6 @@ packages: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} - audio-buffer@5.0.0: - resolution: {integrity: sha512-gsDyj1wwUp8u7NBB+eW6yhLb9ICf+0eBmDX8NGaAS00w8/fLqFdxUlL5Ge/U8kB64DlQhdonxYC59dXy1J7H/w==} - - audio-decode@2.2.3: - resolution: {integrity: sha512-Z0lHvMayR/Pad9+O9ddzaBJE0DrhZkQlStrC1RwcAHF3AhQAsdwKHeLGK8fYKyp2DDU6xHxzGb4CLMui12yVrg==} - - audio-type@2.4.1: - resolution: {integrity: sha512-dK9Z/P83C/rBfTrXXgPD3jZ+aXxx2o/P4rq8+H1JqxbXklitEeJw4CrcwMC5CkON3CX3yy2gaWnIEVYejYh0zQ==} - engines: {node: '>=14'} - await-to-js@3.0.0: resolution: {integrity: sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==} engines: {node: '>=6.0.0'} @@ -5294,9 +5134,6 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} - codec-parser@2.5.0: - resolution: {integrity: sha512-Ru9t80fV8B0ZiixQl8xhMTLru+dzuis/KQld32/x5T/+3LwZb0/YvQdSKytX9JqCnRdiupvAvyYJINKrXieziQ==} - collapse-white-space@2.1.0: resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} @@ -5307,10 +5144,6 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - colors@1.4.0: resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} engines: {node: '>=0.1.90'} @@ -5338,9 +5171,6 @@ packages: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} - console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - constantinople@4.0.1: resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} @@ -5473,9 +5303,6 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -5820,9 +5647,6 @@ packages: resolution: {integrity: sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==} engines: {node: '>=14.14'} - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -5836,11 +5660,6 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - gaxios@6.7.1: resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} engines: {node: '>=14'} @@ -5903,10 +5722,6 @@ packages: resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} engines: {node: 18 || 20 || >=22} - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - global-agent@4.1.3: resolution: {integrity: sha512-KUJEViiuFT3I97t+GYMikLPJS2Lfo/S2F+DQuBWzuzaMPnvt5yyZePzArx36fBzpGTxZjIpDbXLeySLgh+k76g==} engines: {node: '>=10.0'} @@ -5965,9 +5780,6 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - hashery@1.5.1: resolution: {integrity: sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==} engines: {node: '>=20'} @@ -6040,10 +5852,6 @@ packages: resolution: {integrity: sha512-JrF8SSLVmcvc5NducxgyOrKXe3EsyHMgBFgSaIUGmArKe+rwr0uphRkRXvwiom3I+fpIfoItveHrfudL8/rxuA==} engines: {node: '>=16'} - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} @@ -6081,10 +5889,6 @@ packages: resolution: {integrity: sha512-NkJQA7oZ4YHQhd2+H3BoRFKF3d/XNsiKpHZCQEMH9pDX27hQQLsTyOocyRgaIVtf8gHX3Nt3LPkR4e5EdtPAGQ==} engines: {node: ^22.18.0 || >=24.0.0} - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -6493,10 +6297,6 @@ packages: magicast@0.5.2: resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} @@ -6793,15 +6593,6 @@ packages: resolution: {integrity: sha512-tGnJW6OKRii9u/b2WiUViTJS+h7Apxx17qsMUjsUeNDiMMX5ZFf8F8Fcz7PAQ6omvOxHZtvDTmOYKJQwmfpjeg==} engines: {node: '>=20'} - node-wav@0.0.2: - resolution: {integrity: sha512-M6Rm/bbG6De/gKGxOpeOobx/dnGuP0dz40adqx38boqHhlWssBJZgLCPBNtb9NkrmnKYiV04xELq+R6PFOnoLA==} - engines: {node: '>=4.4.0'} - - nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true - nostr-tools@2.23.3: resolution: {integrity: sha512-AALyt9k8xPdF4UV2mlLJ2mgCn4kpTB0DZ8t2r6wjdUh6anfx2cTVBsHUlo9U0EY/cKC5wcNyiMAmRJV5OVEalA==} peerDependencies: @@ -6817,10 +6608,6 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - deprecated: This package is no longer supported. - nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -6839,9 +6626,6 @@ packages: obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} - ogg-opus-decoder@1.7.3: - resolution: {integrity: sha512-w47tiZpkLgdkpa+34VzYD8mHUj8I9kfWVZa82mBbNwDvB1byfLXSSzW/HxA4fI3e9kVlICSpXGFwMLV1LPdjwg==} - oidc-client-ts@3.5.0: resolution: {integrity: sha512-l2q8l9CTCTOlbX+AnK4p3M+4CEpKpyQhle6blQkdFhm0IsBqsxm15bYaSa11G7pWdsYr6epdsRZxJpCyCRbT8A==} engines: {node: '>=18'} @@ -6903,9 +6687,6 @@ packages: engines: {node: '>=18'} hasBin: true - opus-decoder@0.7.11: - resolution: {integrity: sha512-+e+Jz3vGQLxRTBHs8YJQPRPc1Tr+/aC6coV/DlZylriA29BdHQAYXhvNRKtjftof17OFng0+P4wsFIqQu3a48A==} - opusscript@0.1.1: resolution: {integrity: sha512-mL0fZZOUnXdZ78woRXp18lApwpp0lF5tozJOD1Wut0dgrA9WuQTgSels/CSmFleaAZrJi/nci5KOVtbuxeWoQA==} @@ -7035,10 +6816,6 @@ packages: resolution: {integrity: sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==} engines: {node: '>=14.0.0'} - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -7231,9 +7008,6 @@ packages: resolution: {integrity: sha512-+Owyggi9IxT1ePKGafcI87ubSmxol6smwJ+RAHDQlx9+9cPwFWDiKFFCPuWhr9ignlGpZ9vDQLw67N4dcTVFEA==} engines: {node: '>=20'} - qoa-format@1.0.1: - resolution: {integrity: sha512-dMB0Z6XQjdpz/Cw4Rf6RiBpQvUSPCfYlQMWvmuWlWkAT7nDQD29cVZ1SwDUB6DYJSitHENwbt90lqfI+7bvMcw==} - qrcode-terminal@0.12.0: resolution: {integrity: sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==} hasBin: true @@ -7282,10 +7056,6 @@ packages: readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - readdirp@5.0.0: resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} engines: {node: '>= 20.19.0'} @@ -7374,11 +7144,6 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rolldown-plugin-dts@0.25.0: resolution: {integrity: sha512-GE3uDZgUuA9l6g+1u928TRmadd5IVhaWiwpWast2kCyLv9tYJJCC6E5HHkV0HGmwC5ZL73xh12/PRZI+KZ2vdQ==} engines: {node: ^22.18.0 || >=24.0.0} @@ -7403,11 +7168,6 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rolldown@1.0.0-rc.17: - resolution: {integrity: sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - rolldown@1.0.0-rc.18: resolution: {integrity: sha512-phmyKBpuBdRYDf4hgyynGAYn/rDDe+iZXKVJ7WX5b1zQzpLkP5oJRPGsfJuHdzPMlyyEO/4sPW6yfSx2gf7lVg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -7459,10 +7219,6 @@ packages: resolution: {integrity: sha512-gfYVRGxjHkGF2NPeUWHw5u6T/KGFtS5/drPms73gaSuMaVHKCY3lpLnGDfswVQO0kddeePoti09AwhYP4zA8dQ==} hasBin: true - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - semver@7.8.0: resolution: {integrity: sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==} engines: {node: '>=10'} @@ -7652,9 +7408,6 @@ packages: string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} @@ -7944,16 +7697,6 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - unrun@0.2.37: - resolution: {integrity: sha512-AA7vDuYsgeSYVzJMm16UKA+aXFKhy7nFqW9z5l7q44K4ppFWZAMqYS58ePRZbugMLPH0fwwMzD5A8nP0avxwZQ==} - engines: {node: '>=20.19.0'} - hasBin: true - peerDependencies: - synckit: ^0.11.11 - peerDependenciesMeta: - synckit: - optional: true - url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} @@ -8115,9 +7858,6 @@ packages: engines: {node: '>=8'} hasBin: true - wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - win-guid@0.2.1: resolution: {integrity: sha512-gEIQU4mkgl2OPeoNrWflcJFJ3Ae2BPd4eCsHHA/XikslkIVms/nHhvnvzIZV7VLmBvtFlDOzLt9rrZT+n6D67A==} @@ -9306,37 +9046,12 @@ snapshots: dependencies: tslib: 2.8.1 - '@discordjs/node-pre-gyp@0.4.5': - dependencies: - detect-libc: 2.1.2 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.7.0 - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.8.0 - tar: 7.5.15 - transitivePeerDependencies: - - encoding - - supports-color - optional: true - - '@discordjs/opus@0.10.0': - dependencies: - '@discordjs/node-pre-gyp': 0.4.5 - node-addon-api: 8.7.0 - transitivePeerDependencies: - - encoding - - supports-color - optional: true - - '@discordjs/voice@0.19.2(@discordjs/opus@0.10.0)(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(opusscript@0.1.1)': + '@discordjs/voice@0.19.2(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(opusscript@0.1.1)': dependencies: '@snazzah/davey': 0.1.11(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) '@types/ws': 8.18.1 discord-api-types: 0.38.47 - prism-media: 1.3.5(@discordjs/opus@0.10.0)(opusscript@0.1.1) + prism-media: 1.3.5(opusscript@0.1.1) tslib: 2.8.1 ws: 8.20.0 transitivePeerDependencies: @@ -9349,6 +9064,85 @@ snapshots: - opusscript - utf-8-validate + '@earendil-works/pi-agent-core@0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)': + dependencies: + '@earendil-works/pi-ai': 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + typebox: 1.1.38 + transitivePeerDependencies: + - '@modelcontextprotocol/sdk' + - aws-crt + - bufferutil + - supports-color + - utf-8-validate + - ws + - zod + + '@earendil-works/pi-ai@0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)': + dependencies: + '@anthropic-ai/sdk': 0.95.1(zod@4.4.3) + '@aws-sdk/client-bedrock-runtime': 3.1045.0 + '@google/genai': 1.52.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3)) + '@mistralai/mistralai': 2.2.1 + chalk: 5.6.2 + openai: 6.26.0(ws@8.20.0)(zod@4.4.3) + partial-json: 0.1.7 + proxy-agent: 6.5.0 + typebox: 1.1.38 + undici: 7.25.0 + zod-to-json-schema: 3.25.2(zod@4.4.3) + transitivePeerDependencies: + - '@modelcontextprotocol/sdk' + - aws-crt + - bufferutil + - supports-color + - utf-8-validate + - ws + - zod + + '@earendil-works/pi-coding-agent@0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)': + dependencies: + '@earendil-works/pi-agent-core': 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@earendil-works/pi-ai': 0.74.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@earendil-works/pi-tui': 0.74.0 + '@silvia-odwyer/photon-node': 0.3.4 + chalk: 5.6.2 + cli-highlight: 2.1.11 + diff: 8.0.4 + extract-zip: 2.0.1 + file-type: 22.0.1 + glob: 13.0.6 + hosted-git-info: 9.0.3 + ignore: 7.0.5 + jiti: 2.7.0 + marked: 15.0.12 + minimatch: 10.2.5 + proper-lockfile: 4.1.2 + strip-ansi: 7.2.0 + typebox: 1.1.38 + undici: 7.25.0 + uuid: 14.0.0 + yaml: 2.8.4 + optionalDependencies: + '@mariozechner/clipboard': 0.3.5 + transitivePeerDependencies: + - '@modelcontextprotocol/sdk' + - aws-crt + - bufferutil + - supports-color + - utf-8-validate + - ws + - zod + + '@earendil-works/pi-tui@0.74.0': + dependencies: + '@types/mime-types': 2.1.4 + chalk: 5.6.2 + get-east-asian-width: 1.6.0 + marked: 15.0.12 + mime-types: 3.0.2 + optionalDependencies: + koffi: 2.16.2 + '@emnapi/core@1.10.0': dependencies: '@emnapi/wasi-threads': 1.2.1 @@ -10042,85 +9836,6 @@ snapshots: '@mariozechner/clipboard-win32-x64-msvc': 0.3.2 optional: true - '@mariozechner/pi-agent-core@0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)': - dependencies: - '@mariozechner/pi-ai': 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) - typebox: 1.1.38 - transitivePeerDependencies: - - '@modelcontextprotocol/sdk' - - aws-crt - - bufferutil - - supports-color - - utf-8-validate - - ws - - zod - - '@mariozechner/pi-ai@0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)': - dependencies: - '@anthropic-ai/sdk': 0.95.1(zod@4.4.3) - '@aws-sdk/client-bedrock-runtime': 3.1045.0 - '@google/genai': 1.52.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3)) - '@mistralai/mistralai': 2.2.1 - chalk: 5.6.2 - openai: 6.26.0(ws@8.20.0)(zod@4.4.3) - partial-json: 0.1.7 - proxy-agent: 6.5.0 - typebox: 1.1.38 - undici: 7.25.0 - zod-to-json-schema: 3.25.2(zod@4.4.3) - transitivePeerDependencies: - - '@modelcontextprotocol/sdk' - - aws-crt - - bufferutil - - supports-color - - utf-8-validate - - ws - - zod - - '@mariozechner/pi-coding-agent@0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)': - dependencies: - '@mariozechner/pi-agent-core': 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) - '@mariozechner/pi-ai': 0.73.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) - '@mariozechner/pi-tui': 0.73.1 - '@silvia-odwyer/photon-node': 0.3.4 - chalk: 5.6.2 - cli-highlight: 2.1.11 - diff: 8.0.4 - extract-zip: 2.0.1 - file-type: 22.0.1 - glob: 13.0.6 - hosted-git-info: 9.0.3 - ignore: 7.0.5 - jiti: 2.7.0 - marked: 15.0.12 - minimatch: 10.2.5 - proper-lockfile: 4.1.2 - strip-ansi: 7.2.0 - typebox: 1.1.38 - undici: 7.25.0 - uuid: 14.0.0 - yaml: 2.8.4 - optionalDependencies: - '@mariozechner/clipboard': 0.3.5 - transitivePeerDependencies: - - '@modelcontextprotocol/sdk' - - aws-crt - - bufferutil - - supports-color - - utf-8-validate - - ws - - zod - - '@mariozechner/pi-tui@0.73.1': - dependencies: - '@types/mime-types': 2.1.4 - chalk: 5.6.2 - get-east-asian-width: 1.6.0 - marked: 15.0.12 - mime-types: 3.0.2 - optionalDependencies: - koffi: 2.16.2 - '@matrix-org/matrix-sdk-crypto-nodejs@0.5.1': dependencies: https-proxy-agent: 7.0.6 @@ -10388,7 +10103,7 @@ snapshots: '@openai/codex@0.130.0-win32-x64': optional: true - '@openclaw/fs-safe@https://codeload.github.com/openclaw/fs-safe/tar.gz/c7ccb99d3058f2acf2ad2758ad2470c7e113a53c': + '@openclaw/fs-safe@0.2.1': optionalDependencies: jszip: 3.10.1 tar: 7.5.15 @@ -10631,9 +10346,6 @@ snapshots: '@opentelemetry/semantic-conventions@1.40.0': {} - '@oxc-project/types@0.127.0': - optional: true - '@oxc-project/types@0.128.0': {} '@oxc-project/types@0.129.0': {} @@ -10821,108 +10533,72 @@ snapshots: '@rolldown/binding-android-arm64@1.0.0': optional: true - '@rolldown/binding-android-arm64@1.0.0-rc.17': - optional: true - '@rolldown/binding-android-arm64@1.0.0-rc.18': optional: true '@rolldown/binding-darwin-arm64@1.0.0': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-rc.17': - optional: true - '@rolldown/binding-darwin-arm64@1.0.0-rc.18': optional: true '@rolldown/binding-darwin-x64@1.0.0': optional: true - '@rolldown/binding-darwin-x64@1.0.0-rc.17': - optional: true - '@rolldown/binding-darwin-x64@1.0.0-rc.18': optional: true '@rolldown/binding-freebsd-x64@1.0.0': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.17': - optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.18': optional: true '@rolldown/binding-linux-arm-gnueabihf@1.0.0': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17': - optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.18': optional: true '@rolldown/binding-linux-arm64-gnu@1.0.0': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17': - optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.18': optional: true '@rolldown/binding-linux-arm64-musl@1.0.0': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17': - optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.18': optional: true '@rolldown/binding-linux-ppc64-gnu@1.0.0': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17': - optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.18': optional: true '@rolldown/binding-linux-s390x-gnu@1.0.0': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17': - optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.18': optional: true '@rolldown/binding-linux-x64-gnu@1.0.0': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17': - optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.18': optional: true '@rolldown/binding-linux-x64-musl@1.0.0': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.17': - optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.18': optional: true '@rolldown/binding-openharmony-arm64@1.0.0': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.17': - optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.18': optional: true @@ -10933,13 +10609,6 @@ snapshots: '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.17': - dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) - optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.18': dependencies: '@emnapi/core': 1.10.0 @@ -10950,26 +10619,17 @@ snapshots: '@rolldown/binding-win32-arm64-msvc@1.0.0': optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': - optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.18': optional: true '@rolldown/binding-win32-x64-msvc@1.0.0': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17': - optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.18': optional: true '@rolldown/pluginutils@1.0.0': {} - '@rolldown/pluginutils@1.0.0-rc.17': - optional: true - '@rolldown/pluginutils@1.0.0-rc.18': {} '@scure/base@2.0.0': {} @@ -11504,14 +11164,6 @@ snapshots: dependencies: qrcode-terminal: 0.12.0 - '@thi.ng/bitstream@2.4.48': - dependencies: - '@thi.ng/errors': 2.6.10 - optional: true - - '@thi.ng/errors@2.6.10': - optional: true - '@tloncorp/tlon-skill-darwin-arm64@0.3.6': optional: true @@ -11542,13 +11194,13 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} - '@twurple/api-call@8.1.3': + '@twurple/api-call@8.1.4': dependencies: '@d-fischer/shared-utils': 3.6.4 - '@twurple/common': 8.1.3 + '@twurple/common': 8.1.4 tslib: 2.8.1 - '@twurple/api@8.1.3(@twurple/auth@8.1.3)': + '@twurple/api@8.1.4(@twurple/auth@8.1.4)': dependencies: '@d-fischer/cache-decorators': 4.0.1 '@d-fischer/detect-node': 3.0.1 @@ -11556,22 +11208,22 @@ snapshots: '@d-fischer/rate-limiter': 1.1.0 '@d-fischer/shared-utils': 3.6.4 '@d-fischer/typed-event-emitter': 3.3.3 - '@twurple/api-call': 8.1.3 - '@twurple/auth': 8.1.3 - '@twurple/common': 8.1.3 + '@twurple/api-call': 8.1.4 + '@twurple/auth': 8.1.4 + '@twurple/common': 8.1.4 retry: 0.13.1 tslib: 2.8.1 - '@twurple/auth@8.1.3': + '@twurple/auth@8.1.4': dependencies: '@d-fischer/logger': 4.2.4 '@d-fischer/shared-utils': 3.6.4 '@d-fischer/typed-event-emitter': 3.3.3 - '@twurple/api-call': 8.1.3 - '@twurple/common': 8.1.3 + '@twurple/api-call': 8.1.4 + '@twurple/common': 8.1.4 tslib: 2.8.1 - '@twurple/chat@8.1.3(@twurple/auth@8.1.3)': + '@twurple/chat@8.1.4(@twurple/auth@8.1.4)': dependencies: '@d-fischer/cache-decorators': 4.0.1 '@d-fischer/deprecate': 2.0.2 @@ -11579,15 +11231,15 @@ snapshots: '@d-fischer/rate-limiter': 1.1.0 '@d-fischer/shared-utils': 3.6.4 '@d-fischer/typed-event-emitter': 3.3.3 - '@twurple/auth': 8.1.3 - '@twurple/common': 8.1.3 + '@twurple/auth': 8.1.4 + '@twurple/common': 8.1.4 ircv3: 0.33.1 tslib: 2.8.1 transitivePeerDependencies: - bufferutil - utf-8-validate - '@twurple/common@8.1.3': + '@twurple/common@8.1.4': dependencies: '@d-fischer/shared-utils': 3.6.4 klona: 2.0.6 @@ -11856,23 +11508,6 @@ snapshots: '@eshaz/web-worker': 1.2.2 simple-yenc: 1.0.4 - '@wasm-audio-decoders/flac@0.2.10': - dependencies: - '@wasm-audio-decoders/common': 9.0.7 - codec-parser: 2.5.0 - optional: true - - '@wasm-audio-decoders/ogg-vorbis@0.1.20': - dependencies: - '@wasm-audio-decoders/common': 9.0.7 - codec-parser: 2.5.0 - optional: true - - '@wasm-audio-decoders/opus-ml@0.0.2': - dependencies: - '@wasm-audio-decoders/common': 9.0.7 - optional: true - '@whiskeysockets/libsignal-node@https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67': dependencies: curve25519-js: 0.0.4 @@ -11905,9 +11540,6 @@ snapshots: '@zed-industries/codex-acp-win32-arm64': 0.14.0 '@zed-industries/codex-acp-win32-x64': 0.14.0 - abbrev@1.1.1: - optional: true - abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -11941,13 +11573,6 @@ snapshots: - bare-buffer - react-native-b4a - agent-base@6.0.2: - dependencies: - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - optional: true - agent-base@7.1.4: {} agent-base@9.0.0: {} @@ -11991,15 +11616,6 @@ snapshots: json-bignum: 0.0.3 tslib: 2.8.1 - aproba@2.1.0: - optional: true - - are-we-there-yet@2.0.0: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - optional: true - argparse@2.0.1: {} array-back@3.1.0: {} @@ -12045,24 +11661,6 @@ snapshots: atomic-sleep@1.0.0: {} - audio-buffer@5.0.0: - optional: true - - audio-decode@2.2.3: - dependencies: - '@wasm-audio-decoders/flac': 0.2.10 - '@wasm-audio-decoders/ogg-vorbis': 0.1.20 - audio-buffer: 5.0.0 - audio-type: 2.4.1 - mpg123-decoder: 1.0.3 - node-wav: 0.0.2 - ogg-opus-decoder: 1.7.3 - qoa-format: 1.0.1 - optional: true - - audio-type@2.4.1: - optional: true - await-to-js@3.0.0: {} axios@1.16.0: @@ -12083,7 +11681,7 @@ snapshots: bail@2.0.2: {} - baileys@7.0.0-rc10(patch_hash=a9aea1790d2c65b1ae543c77faca4119bbfb91ee3b6ca6c38d1cad4f5702ada2)(audio-decode@2.2.3)(jimp@1.6.1)(sharp@0.34.5): + baileys@7.0.0-rc10(patch_hash=a9aea1790d2c65b1ae543c77faca4119bbfb91ee3b6ca6c38d1cad4f5702ada2)(jimp@1.6.1)(sharp@0.34.5): dependencies: '@cacheable/node-cache': 1.7.6 '@hapi/boom': 9.1.4 @@ -12098,7 +11696,6 @@ snapshots: whatsapp-rust-bridge: 0.5.3 ws: 8.20.0 optionalDependencies: - audio-decode: 2.2.3 jimp: 1.6.1 transitivePeerDependencies: - bufferutil @@ -12305,9 +11902,6 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - codec-parser@2.5.0: - optional: true - collapse-white-space@2.1.0: {} color-convert@2.0.1: @@ -12316,9 +11910,6 @@ snapshots: color-name@1.1.4: {} - color-support@1.1.3: - optional: true - colors@1.4.0: {} combined-stream@1.0.8: @@ -12345,9 +11936,6 @@ snapshots: commander@5.1.0: {} - console-control-strings@1.1.0: - optional: true - constantinople@4.0.1: dependencies: '@babel/parser': 7.29.3 @@ -12464,9 +12052,6 @@ snapshots: delayed-stream@1.0.0: {} - delegates@1.0.0: - optional: true - depd@2.0.0: {} dequal@2.0.3: {} @@ -12857,9 +12442,6 @@ snapshots: jsonfile: 6.2.1 universalify: 2.0.1 - fs.realpath@1.0.0: - optional: true - fsevents@2.3.2: optional: true @@ -12868,19 +12450,6 @@ snapshots: function-bind@1.1.2: {} - gauge@3.0.2: - dependencies: - aproba: 2.1.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - optional: true - gaxios@6.7.1: dependencies: extend: 3.0.2 @@ -12982,16 +12551,6 @@ snapshots: minipass: 7.1.3 path-scurry: 2.0.2 - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 10.2.5 - once: 1.4.0 - path-is-absolute: 1.0.1 - optional: true - global-agent@4.1.3: dependencies: globalthis: 1.0.4 @@ -13067,9 +12626,6 @@ snapshots: dependencies: has-symbols: 1.1.0 - has-unicode@2.0.1: - optional: true - hashery@1.5.1: dependencies: hookified: 1.15.1 @@ -13194,14 +12750,6 @@ snapshots: http_ece@1.2.0: {} - https-proxy-agent@5.0.1: - dependencies: - agent-base: 6.0.2 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - optional: true - https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 @@ -13241,12 +12789,6 @@ snapshots: import-without-cache@0.4.0: {} - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - optional: true - inherits@2.0.4: {} inline-style-parser@0.2.7: {} @@ -13679,11 +13221,6 @@ snapshots: '@babel/types': 7.29.0 source-map-js: 1.2.1 - make-dir@3.1.0: - dependencies: - semver: 6.3.1 - optional: true - make-dir@4.0.0: dependencies: semver: 7.8.0 @@ -14160,14 +13697,6 @@ snapshots: '@types/sarif': 2.1.7 fs-extra: 11.3.5 - node-wav@0.0.2: - optional: true - - nopt@5.0.0: - dependencies: - abbrev: 1.1.1 - optional: true - nostr-tools@2.23.3(typescript@6.0.3): dependencies: '@noble/ciphers': 2.1.1 @@ -14186,14 +13715,6 @@ snapshots: dependencies: path-key: 3.1.1 - npmlog@5.0.1: - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - optional: true - nth-check@2.1.1: dependencies: boolbase: 1.0.0 @@ -14206,14 +13727,6 @@ snapshots: obug@2.1.1: {} - ogg-opus-decoder@1.7.3: - dependencies: - '@wasm-audio-decoders/common': 9.0.7 - '@wasm-audio-decoders/opus-ml': 0.0.2 - codec-parser: 2.5.0 - opus-decoder: 0.7.11 - optional: true - oidc-client-ts@3.5.0: dependencies: jwt-decode: 4.0.0 @@ -14267,11 +13780,6 @@ snapshots: - encoding - supports-color - opus-decoder@0.7.11: - dependencies: - '@wasm-audio-decoders/common': 9.0.7 - optional: true - opusscript@0.1.1: {} oxfmt@0.48.0: @@ -14449,9 +13957,6 @@ snapshots: path-expression-matcher@1.5.0: {} - path-is-absolute@1.0.1: - optional: true - path-key@3.1.1: {} path-parse@1.0.7: {} @@ -14523,9 +14028,8 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - prism-media@1.3.5(@discordjs/opus@0.10.0)(opusscript@0.1.1): + prism-media@1.3.5(opusscript@0.1.1): optionalDependencies: - '@discordjs/opus': 0.10.0 opusscript: 0.1.1 prismjs@1.30.0: {} @@ -14680,11 +14184,6 @@ snapshots: dependencies: hookified: 2.2.0 - qoa-format@1.0.1: - dependencies: - '@thi.ng/bitstream': 2.4.48 - optional: true - qrcode-terminal@0.12.0: {} qrcode@1.5.4: @@ -14733,13 +14232,6 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - optional: true - readdirp@5.0.0: {} real-require@0.2.0: {} @@ -14849,11 +14341,6 @@ snapshots: reusify@1.1.0: {} - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - optional: true - rolldown-plugin-dts@0.25.0(@typescript/native-preview@7.0.0-dev.20260510.1)(rolldown@1.0.0)(typescript@6.0.3): dependencies: '@babel/generator': 8.0.0-rc.4 @@ -14892,28 +14379,6 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.0.0 '@rolldown/binding-win32-x64-msvc': 1.0.0 - rolldown@1.0.0-rc.17: - dependencies: - '@oxc-project/types': 0.127.0 - '@rolldown/pluginutils': 1.0.0-rc.17 - optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.17 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.17 - '@rolldown/binding-darwin-x64': 1.0.0-rc.17 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.17 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.17 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.17 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.17 - '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.17 - '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.17 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.17 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.17 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.17 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.17 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.17 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.17 - optional: true - rolldown@1.0.0-rc.18: dependencies: '@oxc-project/types': 0.128.0 @@ -14975,9 +14440,6 @@ snapshots: sdp-transform@3.0.0: {} - semver@6.3.1: - optional: true - semver@7.8.0: {} send@1.2.1: @@ -15222,11 +14684,6 @@ snapshots: dependencies: safe-buffer: 5.1.2 - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - optional: true - stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 @@ -15386,7 +14843,7 @@ snapshots: ts-algebra@2.0.0: {} - tsdown@0.22.0(@typescript/native-preview@7.0.0-dev.20260510.1)(tsx@4.21.0)(typescript@6.0.3)(unrun@0.2.37): + tsdown@0.22.0(@typescript/native-preview@7.0.0-dev.20260510.1)(tsx@4.21.0)(typescript@6.0.3): dependencies: ansis: 4.2.0 cac: 7.0.0 @@ -15406,7 +14863,6 @@ snapshots: optionalDependencies: tsx: 4.21.0 typescript: 6.0.3 - unrun: 0.2.37 transitivePeerDependencies: - '@ts-macro/tsc' - '@typescript/native-preview' @@ -15508,11 +14964,6 @@ snapshots: unpipe@1.0.0: {} - unrun@0.2.37: - dependencies: - rolldown: 1.0.0-rc.17 - optional: true - url-parse@1.5.10: dependencies: querystringify: 2.2.0 @@ -15636,11 +15087,6 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - wide-align@1.1.5: - dependencies: - string-width: 4.2.3 - optional: true - win-guid@0.2.1: {} with@7.0.2: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index ba001af66cc7..e57c5eeffe49 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -79,9 +79,10 @@ allowBuilds: protobufjs: true sharp: true tree-sitter-bash: false + openclaw: true packageExtensions: - "@mariozechner/pi-coding-agent": + "@earendil-works/pi-coding-agent": dependencies: strip-ansi: ^7.2.0 diff --git a/scripts/bench-model.ts b/scripts/bench-model.ts index 471338d34510..707c6f87e7f7 100644 --- a/scripts/bench-model.ts +++ b/scripts/bench-model.ts @@ -1,4 +1,4 @@ -import { completeSimple, getModel, type Api, type Model } from "@mariozechner/pi-ai"; +import { completeSimple, getModel, type Api, type Model } from "@earendil-works/pi-ai"; type Usage = { input?: number; diff --git a/scripts/blacksmith-testbox-runner.mjs b/scripts/blacksmith-testbox-runner.mjs deleted file mode 100644 index e85de808727a..000000000000 --- a/scripts/blacksmith-testbox-runner.mjs +++ /dev/null @@ -1,194 +0,0 @@ -#!/usr/bin/env node - -import { execFileSync, spawn as nodeSpawn } from "node:child_process"; -import path from "node:path"; -import { pathToFileURL } from "node:url"; -import { - evaluateLocalTestboxKey, - evaluateOpenClawTestboxClaim, - resolveTestboxId, - writeOpenClawTestboxClaim, -} from "./blacksmith-testbox-state.mjs"; - -function git(args, cwd) { - return execFileSync("git", args, { cwd, encoding: "utf8" }); -} - -export function splitRunnerArgs(argv = []) { - const separatorIndex = argv.indexOf("--"); - if (separatorIndex === -1) { - return { runnerArgs: argv, commandArgs: [] }; - } - return { - runnerArgs: argv.slice(0, separatorIndex), - commandArgs: argv.slice(separatorIndex + 1), - }; -} - -export function buildBlacksmithRunArgs({ commandArgs, testboxId }) { - const command = commandArgs.join(" ").trim(); - if (!command) { - return []; - } - return ["testbox", "run", "--id", testboxId, command]; -} - -export function resolveTestboxSyncTimeoutMs(env = process.env) { - const raw = env.OPENCLAW_TESTBOX_SYNC_TIMEOUT_MS; - if (raw === undefined || raw === "") { - return 5 * 60 * 1000; - } - const parsed = Number(raw); - return Number.isFinite(parsed) && parsed >= 0 ? parsed : 5 * 60 * 1000; -} - -function hasClaimFlag(runnerArgs) { - return runnerArgs.includes("--claim") || runnerArgs.includes("--claim-fresh"); -} - -function stripRunnerOnlyFlags(runnerArgs) { - return runnerArgs.filter((arg) => arg !== "--claim" && arg !== "--claim-fresh"); -} - -function pipeChunk(stream, chunk) { - if (chunk) { - stream.write(chunk); - } -} - -function runBlacksmithWithSyncGuard({ args, cwd, env, spawn, stderr, stdout, syncTimeoutMs }) { - return new Promise((resolve) => { - const child = spawn("blacksmith", args, { - cwd, - env, - stdio: ["inherit", "pipe", "pipe"], - }); - let settled = false; - let syncingSince = 0; - let timedOut = false; - let timer; - - const finish = (code) => { - if (settled) { - return; - } - settled = true; - clearInterval(timer); - resolve(timedOut ? 124 : typeof code === "number" ? code : 1); - }; - - const handleOutput = (stream, chunk) => { - const text = String(chunk); - pipeChunk(stream, chunk); - if (text.includes("Syncing...")) { - syncingSince ||= Date.now(); - } else if (syncingSince && /\b(running|executing|command|pnpm|npm|yarn|bun)\b/iu.test(text)) { - syncingSince = 0; - } - }; - - child.stdout?.on("data", (chunk) => handleOutput(stdout, chunk)); - child.stderr?.on("data", (chunk) => handleOutput(stderr, chunk)); - child.on("error", (error) => { - stderr.write(`Failed to start blacksmith: ${error.message}\n`); - finish(1); - }); - child.on("close", (code) => finish(code)); - - timer = setInterval( - () => { - if (!syncingSince || syncTimeoutMs <= 0) { - return; - } - if (Date.now() - syncingSince < syncTimeoutMs) { - return; - } - stderr.write( - `Blacksmith Testbox sync produced no post-sync output for ${syncTimeoutMs}ms; terminating local runner. ` + - "Rerun with OPENCLAW_TESTBOX_SYNC_TIMEOUT_MS=0 to disable this guard.\n", - ); - timedOut = true; - syncingSince = 0; - child.kill?.("SIGTERM"); - }, - Math.min(Math.max(syncTimeoutMs, 1), 1000), - ); - }); -} - -export async function runBlacksmithTestboxRunner({ - argv = process.argv.slice(2), - cwd = process.cwd(), - env = process.env, - spawn = nodeSpawn, - stderr = process.stderr, - stdout = process.stdout, -} = {}) { - const { runnerArgs, commandArgs } = splitRunnerArgs(argv); - const shouldClaim = hasClaimFlag(runnerArgs); - const testboxId = resolveTestboxId({ argv: stripRunnerOnlyFlags(runnerArgs), env }); - if (!testboxId) { - stderr.write( - "Missing Testbox id. Pass `--id ` or set OPENCLAW_TESTBOX_ID from this session's warmup output.\n", - ); - return 2; - } - - const keyResult = evaluateLocalTestboxKey({ env, testboxId }); - if (!keyResult.ok) { - stderr.write(`${keyResult.problems.join("\n")}\n`); - stderr.write( - "Refusing to reuse a remote-visible Testbox without the local private key. Run:\n" + - " blacksmith testbox warmup ci-check-testbox.yml --ref main --idle-timeout 90\n", - ); - return 2; - } - - const root = git(["rev-parse", "--show-toplevel"], cwd).trim(); - if (path.resolve(cwd) !== path.resolve(root)) { - stderr.write( - `Refusing to run Testbox sync from ${cwd}; run from repo root ${root} so rsync does not mirror a subdirectory.\n`, - ); - return 2; - } - - if (shouldClaim) { - const claim = writeOpenClawTestboxClaim({ cwd: root, env, testboxId }); - stdout.write(`OpenClaw Testbox claim written: ${testboxId} -> ${claim.claimPath}\n`); - } else { - const claimResult = evaluateOpenClawTestboxClaim({ - cwd: root, - env, - testboxId, - }); - if (!claimResult.ok) { - stderr.write(`${claimResult.problems.join("\n")}\n`); - stderr.write( - "Refusing to run a Testbox that was not claimed by this OpenClaw checkout. Run:\n" + - " blacksmith testbox warmup ci-check-testbox.yml --ref main --idle-timeout 90\n" + - " pnpm testbox:claim --id \n", - ); - return 2; - } - } - - const blacksmithArgs = buildBlacksmithRunArgs({ commandArgs, testboxId }); - if (blacksmithArgs.length === 0) { - stdout.write(`Testbox local key and OpenClaw claim ok: ${testboxId}\n`); - return 0; - } - - return await runBlacksmithWithSyncGuard({ - args: blacksmithArgs, - cwd, - env, - spawn, - stderr, - stdout, - syncTimeoutMs: resolveTestboxSyncTimeoutMs(env), - }); -} - -if (import.meta.url === pathToFileURL(process.argv[1] ?? "").href) { - process.exitCode = await runBlacksmithTestboxRunner(); -} diff --git a/scripts/blacksmith-testbox-state.mjs b/scripts/blacksmith-testbox-state.mjs deleted file mode 100644 index 0be2f6045275..000000000000 --- a/scripts/blacksmith-testbox-state.mjs +++ /dev/null @@ -1,194 +0,0 @@ -import fs from "node:fs"; -import path from "node:path"; - -const DEFAULT_OPENCLAW_TESTBOX_CLAIM_TTL_MINUTES = 12 * 60; -const TESTBOX_ID_PATTERN = /^tbx_[a-z0-9]+$/u; -const OPENCLAW_TESTBOX_CLAIM_FILE = "openclaw-runner.json"; - -function parsePositiveInteger(value, fallback) { - if (!value) { - return fallback; - } - const parsed = Number.parseInt(value, 10); - return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback; -} - -export function parseTestboxIdArg(argv = []) { - for (let index = 0; index < argv.length; index += 1) { - const value = argv[index]; - if (value === "--id" || value === "--testbox-id") { - return argv[index + 1] ?? ""; - } - if (value?.startsWith("--id=")) { - return value.slice("--id=".length); - } - if (value?.startsWith("--testbox-id=")) { - return value.slice("--testbox-id=".length); - } - } - return ""; -} - -export function resolveTestboxId({ argv = [], env = process.env } = {}) { - return ( - parseTestboxIdArg(argv) || - env.OPENCLAW_TESTBOX_ID || - env.BLACKSMITH_TESTBOX_ID || - env.TESTBOX_ID || - "" - ).trim(); -} - -function resolveBlacksmithTestboxStateDir({ env = process.env, homeDir } = {}) { - if (env.OPENCLAW_BLACKSMITH_TESTBOX_STATE_DIR) { - return env.OPENCLAW_BLACKSMITH_TESTBOX_STATE_DIR; - } - const blacksmithHome = - env.BLACKSMITH_HOME || path.join(homeDir || env.HOME || process.cwd(), ".blacksmith"); - return path.join(blacksmithHome, "testboxes"); -} - -export function evaluateLocalTestboxKey({ - testboxId, - env = process.env, - exists = fs.existsSync, - homeDir, -} = {}) { - if (!testboxId) { - return { ok: true, checked: false, problems: [] }; - } - - const problems = []; - if (!TESTBOX_ID_PATTERN.test(testboxId)) { - problems.push(`invalid Testbox id: ${testboxId}`); - return { - ok: false, - checked: true, - keyPath: "", - problems, - testboxId, - }; - } - - const stateDir = resolveBlacksmithTestboxStateDir({ env, homeDir }); - const testboxDir = path.join(stateDir, testboxId); - const keyPath = path.join(testboxDir, "id_ed25519"); - if (!exists(keyPath)) { - problems.push( - `local Testbox SSH key missing for ${testboxId}: expected ${keyPath}. ` + - "This id may be visible in `blacksmith testbox list` but unusable by this operator; warm a fresh box instead.", - ); - } - - return { - ok: problems.length === 0, - checked: true, - keyPath, - problems, - testboxDir, - testboxId, - }; -} - -function resolveOpenClawTestboxClaimPath({ testboxId, env = process.env, homeDir } = {}) { - const stateDir = resolveBlacksmithTestboxStateDir({ env, homeDir }); - return path.join(stateDir, testboxId, OPENCLAW_TESTBOX_CLAIM_FILE); -} - -export function evaluateOpenClawTestboxClaim({ - testboxId, - cwd, - env = process.env, - exists = fs.existsSync, - now = () => new Date(), - readFile = fs.readFileSync, - homeDir, -} = {}) { - if (!testboxId) { - return { ok: true, checked: false, problems: [] }; - } - - const claimPath = resolveOpenClawTestboxClaimPath({ testboxId, env, homeDir }); - const expectedRepoRoot = path.resolve(cwd || process.cwd()); - const maxAgeMinutes = parsePositiveInteger( - env.OPENCLAW_TESTBOX_CLAIM_TTL_MINUTES, - DEFAULT_OPENCLAW_TESTBOX_CLAIM_TTL_MINUTES, - ); - const problems = []; - - if (!exists(claimPath)) { - problems.push( - `OpenClaw Testbox claim missing for ${testboxId}: expected ${claimPath}. ` + - "Do not reuse ids from `blacksmith testbox list`; warm a fresh box and claim it with `pnpm testbox:claim --id `.", - ); - return { - ok: false, - checked: true, - claimPath, - expectedRepoRoot, - problems, - testboxId, - }; - } - - let claim; - try { - claim = JSON.parse(readFile(claimPath, "utf8")); - } catch (error) { - problems.push(`OpenClaw Testbox claim is unreadable for ${testboxId}: ${error.message}`); - } - - const claimedRepoRoot = claim?.repoRoot ? path.resolve(claim.repoRoot) : ""; - if (!claimedRepoRoot) { - problems.push(`OpenClaw Testbox claim is missing repoRoot for ${testboxId}: ${claimPath}`); - } else if (claimedRepoRoot !== expectedRepoRoot) { - problems.push( - `OpenClaw Testbox claim repo mismatch for ${testboxId}: claimed ${claimedRepoRoot}, current ${expectedRepoRoot}. ` + - "Warm and claim a fresh box for this checkout.", - ); - } - - const claimedAtMs = Date.parse(claim?.claimedAt ?? ""); - if (!Number.isFinite(claimedAtMs)) { - problems.push(`OpenClaw Testbox claim is missing claimedAt for ${testboxId}: ${claimPath}`); - } else { - const ageMinutes = Math.floor((now().getTime() - claimedAtMs) / 60000); - if (ageMinutes > maxAgeMinutes) { - problems.push( - `OpenClaw Testbox claim is stale for ${testboxId}: ${ageMinutes}m old, limit ${maxAgeMinutes}m. ` + - "Warm and claim a fresh box after crashes or long pauses.", - ); - } - } - - return { - ok: problems.length === 0, - checked: true, - claim, - claimPath, - expectedRepoRoot, - problems, - testboxId, - }; -} - -export function writeOpenClawTestboxClaim({ - testboxId, - cwd, - env = process.env, - homeDir, - mkdir = fs.mkdirSync, - writeFile = fs.writeFileSync, - now = () => new Date(), -} = {}) { - const claimPath = resolveOpenClawTestboxClaimPath({ testboxId, env, homeDir }); - const repoRoot = path.resolve(cwd || process.cwd()); - const payload = { - claimedAt: now().toISOString(), - repoRoot, - runnerVersion: 1, - }; - mkdir(path.dirname(claimPath), { recursive: true }); - writeFile(claimPath, `${JSON.stringify(payload, null, 2)}\n`); - return { claimPath, payload, testboxId }; -} diff --git a/scripts/check-changed.mjs b/scripts/check-changed.mjs index 54f89c7bab9d..947b34b826ae 100644 --- a/scripts/check-changed.mjs +++ b/scripts/check-changed.mjs @@ -40,7 +40,7 @@ function isTruthyEnvFlag(value) { return normalized !== "" && normalized !== "0" && normalized !== "false" && normalized !== "no"; } -export function shouldDelegateChangedCheckToTestbox(argv = [], env = process.env) { +export function shouldDelegateChangedCheckToCrabbox(argv = [], env = process.env) { if (!isTruthyEnvFlag(env.OPENCLAW_TESTBOX)) { return false; } @@ -56,10 +56,31 @@ export function shouldDelegateChangedCheckToTestbox(argv = [], env = process.env return true; } -export function buildChangedCheckTestboxArgs(argv = []) { +export function buildChangedCheckCrabboxArgs(argv = []) { return [ - "testbox:run", + "crabbox:run", "--", + "--provider", + "blacksmith-testbox", + "--blacksmith-org", + "openclaw", + "--blacksmith-workflow", + ".github/workflows/ci-check-testbox.yml", + "--blacksmith-job", + "check", + "--blacksmith-ref", + "main", + "--idle-timeout", + "90m", + "--ttl", + "240m", + "--timing-json", + "--", + "CI=1", + "NODE_OPTIONS=--max-old-space-size=4096", + "OPENCLAW_TEST_PROJECTS_PARALLEL=6", + "OPENCLAW_VITEST_MAX_WORKERS=1", + "OPENCLAW_VITEST_NO_OUTPUT_TIMEOUT_MS=900000", "OPENCLAW_TESTBOX=1", "OPENCLAW_TESTBOX_REMOTE_RUN=1", "pnpm", @@ -68,13 +89,13 @@ export function buildChangedCheckTestboxArgs(argv = []) { ]; } -export async function runChangedCheckViaTestbox(argv = [], env = process.env) { +export async function runChangedCheckViaCrabbox(argv = [], env = process.env) { console.error( - "[check:changed] OPENCLAW_TESTBOX=1 set; delegating to Blacksmith Testbox via `pnpm testbox:run`.", + "[check:changed] OPENCLAW_TESTBOX=1 set; delegating to Blacksmith Testbox via `pnpm crabbox:run`.", ); return await runManagedCommand({ bin: "pnpm", - args: buildChangedCheckTestboxArgs(argv), + args: buildChangedCheckCrabboxArgs(argv), env, }); } @@ -330,8 +351,8 @@ function isDirectRun() { if (isDirectRun()) { const argv = process.argv.slice(2); - if (shouldDelegateChangedCheckToTestbox(argv, process.env)) { - process.exitCode = await runChangedCheckViaTestbox(argv, process.env); + if (shouldDelegateChangedCheckToCrabbox(argv, process.env)) { + process.exitCode = await runChangedCheckViaCrabbox(argv, process.env); } else { const args = parseArgs(argv); const paths = diff --git a/scripts/control-ui-i18n.ts b/scripts/control-ui-i18n.ts index e401251c3c4a..031672e1fc51 100644 --- a/scripts/control-ui-i18n.ts +++ b/scripts/control-ui-i18n.ts @@ -953,7 +953,7 @@ async function resolvePiCommand(): Promise { "--silent", "--no-audit", "--no-fund", - `@mariozechner/pi-coding-agent@${resolvePiPackageVersion()}`, + `@earendil-works/pi-coding-agent@${resolvePiPackageVersion()}`, ], { cwd: runtimeDir, diff --git a/scripts/e2e/session-runtime-context-docker-client.ts b/scripts/e2e/session-runtime-context-docker-client.ts index 753c6e36c77f..497ceed34641 100644 --- a/scripts/e2e/session-runtime-context-docker-client.ts +++ b/scripts/e2e/session-runtime-context-docker-client.ts @@ -5,7 +5,7 @@ import { spawnSync } from "node:child_process"; import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import { queueRuntimeContextForNextTurn, resolveRuntimeContextPromptParts, diff --git a/scripts/lib/dependency-ownership.json b/scripts/lib/dependency-ownership.json index 93c576ead0fb..086561064259 100644 --- a/scripts/lib/dependency-ownership.json +++ b/scripts/lib/dependency-ownership.json @@ -16,22 +16,22 @@ "class": "core-runtime", "risk": ["native", "terminal"] }, - "@mariozechner/pi-agent-core": { + "@earendil-works/pi-agent-core": { "owner": "capability:agent-runtime-pi", "class": "default-runtime-initially", "risk": ["large-transitive-cone", "agent-runtime"] }, - "@mariozechner/pi-ai": { + "@earendil-works/pi-ai": { "owner": "capability:agent-runtime-pi", "class": "default-runtime-initially", "risk": ["large-transitive-cone", "provider-sdk-fanout"] }, - "@mariozechner/pi-coding-agent": { + "@earendil-works/pi-coding-agent": { "owner": "capability:agent-runtime-pi", "class": "default-runtime-initially", "risk": ["large-transitive-cone", "agent-runtime"] }, - "@mariozechner/pi-tui": { + "@earendil-works/pi-tui": { "owner": "capability:tui-pi", "class": "default-runtime-initially", "risk": ["tui-runtime"] diff --git a/scripts/package-mac-app.sh b/scripts/package-mac-app.sh index 39265d255177..d089f762768c 100755 --- a/scripts/package-mac-app.sh +++ b/scripts/package-mac-app.sh @@ -262,7 +262,7 @@ rm -rf "$APP_ROOT/Contents/Resources/DeviceModels" cp -R "$ROOT_DIR/apps/macos/Sources/OpenClaw/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/scripts/test-projects.test-support.mjs b/scripts/test-projects.test-support.mjs index 7ed7796bc02f..0aa84f58b3fc 100644 --- a/scripts/test-projects.test-support.mjs +++ b/scripts/test-projects.test-support.mjs @@ -371,9 +371,6 @@ const TOOLING_SOURCE_TEST_TARGETS = new Map([ ["scripts/test-projects.mjs", ["test/scripts/test-projects.test.ts"]], ["scripts/test-projects.test-support.d.mts", ["test/scripts/test-projects.test.ts"]], ["scripts/test-projects.test-support.mjs", ["test/scripts/test-projects.test.ts"]], - ["scripts/blacksmith-testbox-state.mjs", ["test/scripts/blacksmith-testbox-state.test.ts"]], - ["scripts/blacksmith-testbox-runner.mjs", ["test/scripts/blacksmith-testbox-runner.test.ts"]], - ["scripts/testbox-sync-sanity.mjs", ["test/scripts/testbox-sync-sanity.test.ts"]], ["scripts/bundled-plugin-assets.mjs", ["test/scripts/bundled-plugin-assets.test.ts"]], ["scripts/bundle-a2ui.mjs", ["test/scripts/bundled-plugin-assets.test.ts"]], ["extensions/canvas/scripts/bundle-a2ui.mjs", ["extensions/canvas/scripts/bundle-a2ui.test.ts"]], @@ -401,15 +398,6 @@ const TOOLING_TEST_TARGETS = new Map([ ["test/scripts/plugin-prerelease-test-plan.test.ts"], ], ["test/scripts/test-projects.test.ts", ["test/scripts/test-projects.test.ts"]], - [ - "test/scripts/blacksmith-testbox-runner.test.ts", - ["test/scripts/blacksmith-testbox-runner.test.ts"], - ], - [ - "test/scripts/blacksmith-testbox-state.test.ts", - ["test/scripts/blacksmith-testbox-state.test.ts"], - ], - ["test/scripts/testbox-sync-sanity.test.ts", ["test/scripts/testbox-sync-sanity.test.ts"]], [ "test/scripts/vitest-local-scheduling.test.ts", ["test/scripts/vitest-local-scheduling.test.ts"], diff --git a/scripts/testbox-sync-sanity.mjs b/scripts/testbox-sync-sanity.mjs deleted file mode 100644 index 6942c385f580..000000000000 --- a/scripts/testbox-sync-sanity.mjs +++ /dev/null @@ -1,134 +0,0 @@ -#!/usr/bin/env node - -import { execFileSync } from "node:child_process"; -import fs from "node:fs"; -import path from "node:path"; -import { pathToFileURL } from "node:url"; -import { - evaluateLocalTestboxKey, - evaluateOpenClawTestboxClaim, - resolveTestboxId, -} from "./blacksmith-testbox-state.mjs"; - -const DEFAULT_DELETION_THRESHOLD = 200; -const REQUIRED_ROOT_FILES = ["package.json", "pnpm-lock.yaml", ".gitignore"]; - -function parseBooleanEnv(value) { - return ["1", "true", "yes", "on"].includes(value?.trim().toLowerCase() ?? ""); -} - -function parsePositiveInteger(value, fallback) { - if (!value) { - return fallback; - } - const parsed = Number.parseInt(value, 10); - return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback; -} - -export function parseGitShortStatus(raw) { - return raw - .split(/\r?\n/u) - .map((line) => line.trimEnd()) - .filter(Boolean) - .map((line) => { - const status = line.slice(0, 2); - const rawPath = line.slice(3); - return { - line, - path: rawPath.includes(" -> ") ? (rawPath.split(" -> ").at(-1) ?? rawPath) : rawPath, - status, - trackedDeletion: status.includes("D") && status !== "??", - }; - }); -} - -export function evaluateTestboxSyncSanity({ - cwd, - statusRaw, - exists = fs.existsSync, - deletionThreshold = DEFAULT_DELETION_THRESHOLD, - allowMassDeletions = false, -}) { - const missingRootFiles = REQUIRED_ROOT_FILES.filter((file) => !exists(path.join(cwd, file))); - const statusEntries = parseGitShortStatus(statusRaw); - const trackedDeletions = statusEntries.filter((entry) => entry.trackedDeletion); - const problems = []; - - if (missingRootFiles.length > 0) { - problems.push(`missing required root files: ${missingRootFiles.join(", ")}`); - } - if (!allowMassDeletions && trackedDeletions.length >= deletionThreshold) { - const examples = trackedDeletions - .slice(0, 8) - .map((entry) => entry.path) - .join(", "); - problems.push( - `remote git status has ${trackedDeletions.length} tracked deletions (threshold ${deletionThreshold}); examples: ${examples}`, - ); - } - - return { - ok: problems.length === 0, - missingRootFiles, - problems, - statusEntryCount: statusEntries.length, - trackedDeletionCount: trackedDeletions.length, - }; -} - -function git(args, cwd) { - return execFileSync("git", args, { cwd, encoding: "utf8" }); -} - -export function runTestboxSyncSanity({ - cwd = process.cwd(), - env = process.env, - argv = process.argv.slice(2), - stdout = process.stdout, - stderr = process.stderr, -} = {}) { - const root = git(["rev-parse", "--show-toplevel"], cwd).trim(); - const statusRaw = git(["status", "--short", "--untracked-files=all"], root); - const testboxId = resolveTestboxId({ argv, env }); - const keyResult = evaluateLocalTestboxKey({ - env, - testboxId, - }); - const claimResult = evaluateOpenClawTestboxClaim({ - cwd: root, - env, - testboxId, - }); - const result = evaluateTestboxSyncSanity({ - cwd: root, - statusRaw, - deletionThreshold: parsePositiveInteger( - env.OPENCLAW_TESTBOX_DELETION_THRESHOLD, - DEFAULT_DELETION_THRESHOLD, - ), - allowMassDeletions: parseBooleanEnv(env.OPENCLAW_TESTBOX_ALLOW_MASS_DELETIONS), - }); - result.problems.push(...keyResult.problems); - result.problems.push(...claimResult.problems); - result.ok = result.problems.length === 0; - - if (!result.ok) { - stderr.write(`Testbox sync sanity failed:\n- ${result.problems.join("\n- ")}\n`); - stderr.write( - "Warm a fresh box, keep using the id from this session, or rerun from a clean repo root before spending a gate.\n", - ); - return 1; - } - - if (keyResult.checked) { - stdout.write(`Testbox local key and OpenClaw claim ok: ${keyResult.testboxId}\n`); - } - stdout.write( - `Testbox sync sanity ok: ${result.statusEntryCount} changed entries, ${result.trackedDeletionCount} tracked deletions.\n`, - ); - return 0; -} - -if (import.meta.url === pathToFileURL(process.argv[1] ?? "").href) { - process.exitCode = runTestboxSyncSanity(); -} diff --git a/skills/coding-agent/SKILL.md b/skills/coding-agent/SKILL.md index 8d8adb032ff7..fe06186c7cfe 100644 --- a/skills/coding-agent/SKILL.md +++ b/skills/coding-agent/SKILL.md @@ -264,7 +264,7 @@ bash pty:true workdir:~/project background:true 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 background:true command:"pi 'Your task'" # Non-interactive mode diff --git a/src/agents/anthropic-payload-log.test.ts b/src/agents/anthropic-payload-log.test.ts index 0b26f633cd24..92bc1a889c68 100644 --- a/src/agents/anthropic-payload-log.test.ts +++ b/src/agents/anthropic-payload-log.test.ts @@ -1,5 +1,5 @@ import crypto from "node:crypto"; -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import { describe, expect, it } from "vitest"; import { createAnthropicPayloadLogger } from "./anthropic-payload-log.js"; diff --git a/src/agents/anthropic-payload-log.ts b/src/agents/anthropic-payload-log.ts index 6a1669598cbf..a41e67e94748 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"; diff --git a/src/agents/anthropic-transport-stream.live.test.ts b/src/agents/anthropic-transport-stream.live.test.ts index b2509437cce1..ebb52664290b 100644 --- a/src/agents/anthropic-transport-stream.live.test.ts +++ b/src/agents/anthropic-transport-stream.live.test.ts @@ -1,5 +1,5 @@ import http from "node:http"; -import type { Model } from "@mariozechner/pi-ai"; +import type { Model } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { createAnthropicMessagesTransportStreamFn } from "./anthropic-transport-stream.js"; import { isLiveTestEnabled } from "./live-test-helpers.js"; diff --git a/src/agents/anthropic-transport-stream.test.ts b/src/agents/anthropic-transport-stream.test.ts index 6b1de454e163..f5b244979de5 100644 --- a/src/agents/anthropic-transport-stream.test.ts +++ b/src/agents/anthropic-transport-stream.test.ts @@ -1,4 +1,4 @@ -import type { Model } from "@mariozechner/pi-ai"; +import type { Model } from "@earendil-works/pi-ai"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { attachModelProviderRequestTransport } from "./provider-request-config.js"; diff --git a/src/agents/anthropic-transport-stream.ts b/src/agents/anthropic-transport-stream.ts index 3828cce7a838..99a14e729e7f 100644 --- a/src/agents/anthropic-transport-stream.ts +++ b/src/agents/anthropic-transport-stream.ts @@ -1,4 +1,4 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import { calculateCost, getEnvApiKey, @@ -8,7 +8,7 @@ import { type Model, type SimpleStreamOptions, type ThinkingLevel, -} from "@mariozechner/pi-ai"; +} from "@earendil-works/pi-ai"; import { MALFORMED_STREAMING_FRAGMENT_ERROR_MESSAGE } from "../shared/assistant-error-format.js"; import { normalizeLowercaseStringOrEmpty } from "../shared/string-coerce.js"; import { diff --git a/src/agents/anthropic-vertex-stream.ts b/src/agents/anthropic-vertex-stream.ts index cd0a1c202fcc..0594832c2903 100644 --- a/src/agents/anthropic-vertex-stream.ts +++ b/src/agents/anthropic-vertex-stream.ts @@ -1,4 +1,4 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import { loadBundledPluginPublicSurfaceModuleSync } from "../plugin-sdk/facade-loader.js"; type AnthropicVertexStreamFacade = { diff --git a/src/agents/anthropic.setup-token.live.test.ts b/src/agents/anthropic.setup-token.live.test.ts index fd2848cbca83..429d9151aaf2 100644 --- a/src/agents/anthropic.setup-token.live.test.ts +++ b/src/agents/anthropic.setup-token.live.test.ts @@ -2,7 +2,7 @@ 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, completeSimple, type Model } from "@earendil-works/pi-ai"; 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 783888356eea..e06a76def2a3 100644 --- a/src/agents/apply-patch.ts +++ b/src/agents/apply-patch.ts @@ -1,7 +1,7 @@ import syncFs from "node:fs"; 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 "typebox"; import { openRootFile, type RootFileOpenResult } from "../infra/boundary-file-read.js"; import { root as fsRoot } from "../infra/fs-safe.js"; diff --git a/src/agents/auth-profiles/oauth-refresh-queue.test.ts b/src/agents/auth-profiles/oauth-refresh-queue.test.ts index 3b075375e8aa..d95c8b1c85b2 100644 --- a/src/agents/auth-profiles/oauth-refresh-queue.test.ts +++ b/src/agents/auth-profiles/oauth-refresh-queue.test.ts @@ -26,7 +26,7 @@ const { formatProviderAuthProfileApiKeyWithPluginMock, } = getOAuthProviderRuntimeMocks(); -vi.mock("@mariozechner/pi-ai/oauth", () => ({ +vi.mock("@earendil-works/pi-ai/oauth", () => ({ getOAuthApiKey: vi.fn(async () => null), getOAuthProviders: () => [{ id: "openai-codex" }], })); diff --git a/src/agents/auth-profiles/oauth.adopt-identity.test.ts b/src/agents/auth-profiles/oauth.adopt-identity.test.ts index b473bcc5b602..9c07f2974fa2 100644 --- a/src/agents/auth-profiles/oauth.adopt-identity.test.ts +++ b/src/agents/auth-profiles/oauth.adopt-identity.test.ts @@ -48,7 +48,7 @@ function expectOAuthProfileFields( // sub-agent store. Unit tests cover policy variants; this suite proves each // production branch refuses a mismatched accountId. -vi.mock("@mariozechner/pi-ai/oauth", () => ({ +vi.mock("@earendil-works/pi-ai/oauth", () => ({ getOAuthApiKey: vi.fn(async () => null), getOAuthProviders: () => [{ id: "openai-codex" }, { id: "anthropic" }], })); diff --git a/src/agents/auth-profiles/oauth.concurrent-agents.test.ts b/src/agents/auth-profiles/oauth.concurrent-agents.test.ts index 4ed4fe46bca0..c93a77db6db3 100644 --- a/src/agents/auth-profiles/oauth.concurrent-agents.test.ts +++ b/src/agents/auth-profiles/oauth.concurrent-agents.test.ts @@ -32,7 +32,7 @@ async function loadOAuthModuleForTest() { ({ resolveApiKeyForProfile, resetOAuthRefreshQueuesForTest } = await import("./oauth.js")); } -vi.mock("@mariozechner/pi-ai/oauth", () => ({ +vi.mock("@earendil-works/pi-ai/oauth", () => ({ getOAuthApiKey: vi.fn(async () => null), getOAuthProviders: () => [{ id: "openai-codex" }], })); diff --git a/src/agents/auth-profiles/oauth.fallback-to-main-agent.test.ts b/src/agents/auth-profiles/oauth.fallback-to-main-agent.test.ts index fb4cf1481ec5..436016a4bcbd 100644 --- a/src/agents/auth-profiles/oauth.fallback-to-main-agent.test.ts +++ b/src/agents/auth-profiles/oauth.fallback-to-main-agent.test.ts @@ -13,7 +13,7 @@ const { getOAuthApiKeyMock } = vi.hoisted(() => ({ }), })); -vi.mock("@mariozechner/pi-ai/oauth", () => ({ +vi.mock("@earendil-works/pi-ai/oauth", () => ({ getOAuthApiKey: getOAuthApiKeyMock, getOAuthProviders: () => [{ id: "anthropic" }, { id: "openai-codex" }], })); @@ -37,7 +37,7 @@ vi.mock("../../plugins/provider-runtime.js", () => ({ })); afterAll(() => { - vi.doUnmock("@mariozechner/pi-ai/oauth"); + vi.doUnmock("@earendil-works/pi-ai/oauth"); vi.doUnmock("../cli-credentials.js"); vi.doUnmock("../../plugins/provider-runtime.runtime.js"); vi.doUnmock("../../plugins/provider-runtime.js"); diff --git a/src/agents/auth-profiles/oauth.mirror-refresh.test.ts b/src/agents/auth-profiles/oauth.mirror-refresh.test.ts index 97dca98927a1..04357615e68d 100644 --- a/src/agents/auth-profiles/oauth.mirror-refresh.test.ts +++ b/src/agents/auth-profiles/oauth.mirror-refresh.test.ts @@ -36,7 +36,7 @@ function requireOAuthCredential(store: AuthProfileStore, profileId: string): OAu return profile; } -vi.mock("@mariozechner/pi-ai/oauth", () => ({ +vi.mock("@earendil-works/pi-ai/oauth", () => ({ getOAuthProviders: () => [{ id: "anthropic" }, { id: "openai-codex" }], getOAuthApiKey: vi.fn(async (provider: string, credentials: Record) => { const credential = credentials[provider]; diff --git a/src/agents/auth-profiles/oauth.openai-codex-refresh-fallback.test.ts b/src/agents/auth-profiles/oauth.openai-codex-refresh-fallback.test.ts index 5ffd83e7f1f8..600b01e91133 100644 --- a/src/agents/auth-profiles/oauth.openai-codex-refresh-fallback.test.ts +++ b/src/agents/auth-profiles/oauth.openai-codex-refresh-fallback.test.ts @@ -12,7 +12,7 @@ import { } from "./store.js"; import type { AuthProfileStore, OAuthCredential } from "./types.js"; let resolveApiKeyForProfile: typeof import("./oauth.js").resolveApiKeyForProfile; -type GetOAuthApiKey = typeof import("@mariozechner/pi-ai/oauth").getOAuthApiKey; +type GetOAuthApiKey = typeof import("@earendil-works/pi-ai/oauth").getOAuthApiKey; const { getOAuthApiKeyMock } = vi.hoisted(() => ({ getOAuthApiKeyMock: vi.fn(async () => { @@ -43,7 +43,7 @@ vi.mock("../cli-credentials.js", () => ({ resetCliCredentialCachesForTest: () => undefined, })); -vi.mock("@mariozechner/pi-ai/oauth", () => ({ +vi.mock("@earendil-works/pi-ai/oauth", () => ({ getOAuthApiKey: getOAuthApiKeyMock, getOAuthProviders: () => [ { id: "openai-codex", envApiKey: "OPENAI_API_KEY", oauthTokenEnv: "OPENAI_OAUTH_TOKEN" }, // pragma: allowlist secret @@ -62,7 +62,7 @@ vi.mock("../../plugins/provider-runtime.js", () => ({ })); afterAll(() => { - vi.doUnmock("@mariozechner/pi-ai/oauth"); + vi.doUnmock("@earendil-works/pi-ai/oauth"); vi.doUnmock("../cli-credentials.js"); vi.doUnmock("../../plugins/provider-runtime.runtime.js"); vi.doUnmock("../../plugins/provider-runtime.js"); diff --git a/src/agents/auth-profiles/oauth.ts b/src/agents/auth-profiles/oauth.ts index 6703114ee4d1..4fb672db7f15 100644 --- a/src/agents/auth-profiles/oauth.ts +++ b/src/agents/auth-profiles/oauth.ts @@ -3,7 +3,7 @@ import { getOAuthProviders, type OAuthCredentials, type OAuthProvider, -} from "@mariozechner/pi-ai/oauth"; +} from "@earendil-works/pi-ai/oauth"; import { getRuntimeConfig } from "../../config/config.js"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; import { coerceSecretRef } from "../../config/types.secrets.js"; diff --git a/src/agents/bash-tools.exec-host-gateway.ts b/src/agents/bash-tools.exec-host-gateway.ts index 09cc814bd6a0..3562ae09f85e 100644 --- a/src/agents/bash-tools.exec-host-gateway.ts +++ b/src/agents/bash-tools.exec-host-gateway.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { describeInterpreterInlineEval } from "../infra/command-analysis/inline-eval.js"; import { detectPolicyInlineEval } from "../infra/command-analysis/policy.js"; import { diff --git a/src/agents/bash-tools.exec-host-node-phases.ts b/src/agents/bash-tools.exec-host-node-phases.ts index 753b06a47c2a..3fb5b80aab7e 100644 --- a/src/agents/bash-tools.exec-host-node-phases.ts +++ b/src/agents/bash-tools.exec-host-node-phases.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 { describeInterpreterInlineEval, type InterpreterInlineEvalHit, diff --git a/src/agents/bash-tools.exec-host-node.ts b/src/agents/bash-tools.exec-host-node.ts index 00f0c255ce32..479eb2a1bec1 100644 --- a/src/agents/bash-tools.exec-host-node.ts +++ b/src/agents/bash-tools.exec-host-node.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { APPROVALS_SCOPE, WRITE_SCOPE } from "../gateway/operator-scopes.js"; import { requiresExecApproval, diff --git a/src/agents/bash-tools.exec-host-shared.ts b/src/agents/bash-tools.exec-host-shared.ts index b66e9bf54cd5..d987143a87cf 100644 --- a/src/agents/bash-tools.exec-host-shared.ts +++ b/src/agents/bash-tools.exec-host-shared.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 { formatErrorMessage } from "../infra/errors.js"; import { buildExecApprovalUnavailableReplyPayload } from "../infra/exec-approval-reply.js"; import { diff --git a/src/agents/bash-tools.exec-runtime.ts b/src/agents/bash-tools.exec-runtime.ts index 169d92e753c0..dc03d060faa4 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 { emitDiagnosticEvent } from "../infra/diagnostic-events.js"; import { DEFAULT_EXEC_APPROVAL_TIMEOUT_MS, diff --git a/src/agents/bash-tools.exec.ts b/src/agents/bash-tools.exec.ts index 68b1052df198..a707676ac864 100644 --- a/src/agents/bash-tools.exec.ts +++ b/src/agents/bash-tools.exec.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 { buildCommandPayloadCandidates } from "../infra/command-analysis/risks.js"; import { analyzeShellCommand } from "../infra/exec-approvals-analysis.js"; import { diff --git a/src/agents/bash-tools.process-send-keys.ts b/src/agents/bash-tools.process-send-keys.ts index 880d98f6a9d6..5c79234da28a 100644 --- a/src/agents/bash-tools.process-send-keys.ts +++ b/src/agents/bash-tools.process-send-keys.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import type { ProcessSession } from "./bash-process-registry.js"; import { deriveSessionName } from "./bash-tools.shared.js"; import { encodeKeySequence, hasCursorModeSensitiveKeys } from "./pty-keys.js"; diff --git a/src/agents/bash-tools.process.ts b/src/agents/bash-tools.process.ts index 65f88b5dd005..e0942d9084fb 100644 --- a/src/agents/bash-tools.process.ts +++ b/src/agents/bash-tools.process.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { formatDurationCompact } from "../infra/format-time/format-duration.ts"; import { getDiagnosticSessionState } from "../logging/diagnostic-session-state.js"; import { killProcessTree } from "../process/kill-tree.js"; diff --git a/src/agents/btw-transcript.ts b/src/agents/btw-transcript.ts index 486dbbfb6c01..4c96f424a063 100644 --- a/src/agents/btw-transcript.ts +++ b/src/agents/btw-transcript.ts @@ -4,7 +4,7 @@ import { migrateSessionEntries, parseSessionEntries, type SessionEntry as PiSessionEntry, -} from "@mariozechner/pi-coding-agent"; +} from "@earendil-works/pi-coding-agent"; import { resolveSessionFilePath, resolveSessionFilePathOptions, diff --git a/src/agents/btw.test.ts b/src/agents/btw.test.ts index 06676390571a..cabe5aabe88d 100644 --- a/src/agents/btw.test.ts +++ b/src/agents/btw.test.ts @@ -22,9 +22,9 @@ const prepareProviderRuntimeAuthMock = vi.fn(); const registerProviderStreamForModelMock = vi.fn(); const diagDebugMock = vi.fn(); -vi.mock("@mariozechner/pi-ai", async () => { +vi.mock("@earendil-works/pi-ai", async () => { const original = - await vi.importActual("@mariozechner/pi-ai"); + await vi.importActual("@earendil-works/pi-ai"); return { ...original, streamSimple: (...args: unknown[]) => streamSimpleMock(...args), @@ -38,7 +38,7 @@ vi.mock("node:fs/promises", () => ({ readFile: (...args: unknown[]) => readFileMock(...args), })); -vi.mock("@mariozechner/pi-coding-agent", () => ({ +vi.mock("@earendil-works/pi-coding-agent", () => ({ buildSessionContext: (...args: unknown[]) => buildSessionContextMock(...args), generateSummary: vi.fn(async () => "summary"), migrateSessionEntries: (...args: unknown[]) => migrateSessionEntriesMock(...args), diff --git a/src/agents/btw.ts b/src/agents/btw.ts index 4bcf0fc0aca4..7b10fb9af367 100644 --- a/src/agents/btw.ts +++ b/src/agents/btw.ts @@ -6,7 +6,7 @@ import { type Message, type Model, type TextContent, -} from "@mariozechner/pi-ai"; +} from "@earendil-works/pi-ai"; import type { GetReplyOptions } from "../auto-reply/get-reply-options.types.js"; import type { ReplyPayload } from "../auto-reply/reply-payload.js"; import type { ReasoningLevel, ThinkLevel } from "../auto-reply/thinking.js"; diff --git a/src/agents/cache-trace.ts b/src/agents/cache-trace.ts index 43f7bd4a1775..b9d0909a9fa7 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 { resolveStateDir } from "../config/paths.js"; import type { OpenClawConfig } from "../config/types.openclaw.js"; import { resolveUserPath } from "../utils.js"; diff --git a/src/agents/chutes-oauth.ts b/src/agents/chutes-oauth.ts index 5c3d6f8ef77c..1959afdb8529 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"; import { normalizeOptionalString } from "../shared/string-coerce.js"; const CHUTES_OAUTH_ISSUER = "https://api.chutes.ai"; diff --git a/src/agents/cli-runner.helpers.test.ts b/src/agents/cli-runner.helpers.test.ts index 9a726c7f63be..d75977e2fbb7 100644 --- a/src/agents/cli-runner.helpers.test.ts +++ b/src/agents/cli-runner.helpers.test.ts @@ -1,6 +1,6 @@ import fs from "node:fs/promises"; import path from "node:path"; -import type { ImageContent } from "@mariozechner/pi-ai"; +import type { ImageContent } from "@earendil-works/pi-ai"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { resolvePreferredOpenClawTmpDir } from "../infra/tmp-openclaw-dir.js"; import { MAX_IMAGE_BYTES } from "../media/constants.js"; diff --git a/src/agents/cli-runner.reliability.test.ts b/src/agents/cli-runner.reliability.test.ts index 98c31531042c..f13385311eb3 100644 --- a/src/agents/cli-runner.reliability.test.ts +++ b/src/agents/cli-runner.reliability.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 { afterEach, describe, expect, it, vi } from "vitest"; import { __testing as replyRunTesting, diff --git a/src/agents/cli-runner.ts b/src/agents/cli-runner.ts index 0c9b3a69ae85..9b320347462a 100644 --- a/src/agents/cli-runner.ts +++ b/src/agents/cli-runner.ts @@ -1,4 +1,4 @@ -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import type { ReplyPayload } from "../auto-reply/reply-payload.js"; import { SILENT_REPLY_TOKEN } from "../auto-reply/tokens.js"; import { formatErrorMessage } from "../infra/errors.js"; diff --git a/src/agents/cli-runner/helpers.ts b/src/agents/cli-runner/helpers.ts index 45348096d30c..8e4f97d64883 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 { KeyedAsyncQueue } from "openclaw/plugin-sdk/keyed-async-queue"; import { isAcpRuntimeSpawnAvailable } from "../../acp/runtime/availability.js"; import type { SourceReplyDeliveryMode } from "../../auto-reply/get-reply-options.types.js"; diff --git a/src/agents/cli-runner/prepare.test.ts b/src/agents/cli-runner/prepare.test.ts index 56d86447329c..7691fa320608 100644 --- a/src/agents/cli-runner/prepare.test.ts +++ b/src/agents/cli-runner/prepare.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 { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; import { getGlobalHookRunner } from "../../plugins/hook-runner-global.js"; diff --git a/src/agents/cli-runner/session-history.test.ts b/src/agents/cli-runner/session-history.test.ts index aaac867cff92..14f324915b80 100644 --- a/src/agents/cli-runner/session-history.test.ts +++ b/src/agents/cli-runner/session-history.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 { afterEach, describe, expect, it, vi } from "vitest"; import { buildCliSessionHistoryPrompt, diff --git a/src/agents/cli-runner/session-history.ts b/src/agents/cli-runner/session-history.ts index 402d67ebbc70..dddf4578ed58 100644 --- a/src/agents/cli-runner/session-history.ts +++ b/src/agents/cli-runner/session-history.ts @@ -1,6 +1,6 @@ import fsp from "node:fs/promises"; import path from "node:path"; -import { migrateSessionEntries, parseSessionEntries } from "@mariozechner/pi-coding-agent"; +import { migrateSessionEntries, parseSessionEntries } from "@earendil-works/pi-coding-agent"; import { resolveSessionFilePath, resolveSessionFilePathOptions, diff --git a/src/agents/cli-runner/types.ts b/src/agents/cli-runner/types.ts index 04690798ef85..485c8bb2b380 100644 --- a/src/agents/cli-runner/types.ts +++ b/src/agents/cli-runner/types.ts @@ -1,4 +1,4 @@ -import type { ImageContent } from "@mariozechner/pi-ai"; +import type { ImageContent } from "@earendil-works/pi-ai"; import type { SourceReplyDeliveryMode } from "../../auto-reply/get-reply-options.types.js"; import type { ReplyOperation } from "../../auto-reply/reply/reply-run-registry.js"; import type { ThinkLevel } from "../../auto-reply/thinking.js"; diff --git a/src/agents/command/attempt-execution.ts b/src/agents/command/attempt-execution.ts index 145d3508a81c..4551ff46c0c1 100644 --- a/src/agents/command/attempt-execution.ts +++ b/src/agents/command/attempt-execution.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { formatAcpErrorChain } from "../../acp/runtime/errors.js"; import { normalizeReplyPayload } from "../../auto-reply/reply/normalize-reply.js"; import type { ThinkLevel, VerboseLevel } from "../../auto-reply/thinking.js"; diff --git a/src/agents/command/cli-compaction.test.ts b/src/agents/command/cli-compaction.test.ts index a494a26fcb05..00b029971f70 100644 --- a/src/agents/command/cli-compaction.test.ts +++ b/src/agents/command/cli-compaction.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, beforeEach, describe, expect, it, vi } from "vitest"; import type { SessionEntry } from "../../config/sessions/types.js"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; diff --git a/src/agents/command/cli-compaction.ts b/src/agents/command/cli-compaction.ts index 52c14818baee..25d90ba7b365 100644 --- a/src/agents/command/cli-compaction.ts +++ b/src/agents/command/cli-compaction.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 type { SessionEntry } from "../../config/sessions/types.js"; import type { AgentCompactionMode } from "../../config/types.agent-defaults.js"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; diff --git a/src/agents/compaction-real-conversation.ts b/src/agents/compaction-real-conversation.ts index 09e2453aafc2..85280f9fe0ba 100644 --- a/src/agents/compaction-real-conversation.ts +++ b/src/agents/compaction-real-conversation.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { stripHeartbeatToken } from "../auto-reply/heartbeat.js"; import { isSilentReplyText } from "../auto-reply/tokens.js"; diff --git a/src/agents/compaction.identifier-preservation.test.ts b/src/agents/compaction.identifier-preservation.test.ts index 957180c72a91..b4f92014d926 100644 --- a/src/agents/compaction.identifier-preservation.test.ts +++ b/src/agents/compaction.identifier-preservation.test.ts @@ -1,10 +1,10 @@ -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 { beforeEach, describe, expect, it, vi } from "vitest"; -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, generateSummary: vi.fn(), diff --git a/src/agents/compaction.retry.test.ts b/src/agents/compaction.retry.test.ts index 91d19cbf6b55..a155743b331d 100644 --- a/src/agents/compaction.retry.test.ts +++ b/src/agents/compaction.retry.test.ts @@ -1,13 +1,13 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { AssistantMessage, UserMessage } from "@mariozechner/pi-ai"; -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 { AssistantMessage, UserMessage } from "@earendil-works/pi-ai"; +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 () => { - 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, generateSummary: vi.fn(), diff --git a/src/agents/compaction.summarize-fallback.test.ts b/src/agents/compaction.summarize-fallback.test.ts index 67a8d13d7b6d..13bfe7d47491 100644 --- a/src/agents/compaction.summarize-fallback.test.ts +++ b/src/agents/compaction.summarize-fallback.test.ts @@ -1,6 +1,6 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { UserMessage } from "@mariozechner/pi-ai"; -import type { ExtensionContext } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { UserMessage } from "@earendil-works/pi-ai"; +import type { ExtensionContext } from "@earendil-works/pi-coding-agent"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { summarizeWithFallback } from "./compaction.js"; @@ -9,9 +9,9 @@ const piCodingAgentMocks = vi.hoisted(() => ({ estimateTokens: vi.fn((_message: unknown) => 100), })); -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.test.ts b/src/agents/compaction.test.ts index 2a5db1f9797b..13e878751217 100644 --- a/src/agents/compaction.test.ts +++ b/src/agents/compaction.test.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { AssistantMessage, ToolResultMessage } from "@mariozechner/pi-ai"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { AssistantMessage, ToolResultMessage } from "@earendil-works/pi-ai"; import { beforeAll, describe, expect, it, vi } from "vitest"; import { makeAgentAssistantMessage } from "./test-helpers/agent-message-fixtures.js"; import "./test-helpers/pi-coding-agent-token-mock.js"; diff --git a/src/agents/compaction.token-sanitize.test.ts b/src/agents/compaction.token-sanitize.test.ts index 5c97d8907710..bc03f882975d 100644 --- a/src/agents/compaction.token-sanitize.test.ts +++ b/src/agents/compaction.token-sanitize.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, vi } from "vitest"; const piCodingAgentMocks = vi.hoisted(() => ({ @@ -6,9 +6,9 @@ const piCodingAgentMocks = vi.hoisted(() => ({ generateSummary: vi.fn(async () => "summary"), })); -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.tool-result-details.test.ts b/src/agents/compaction.tool-result-details.test.ts index 391b6bf588b0..1adc5ceecaa3 100644 --- a/src/agents/compaction.tool-result-details.test.ts +++ b/src/agents/compaction.tool-result-details.test.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { AssistantMessage, ToolResultMessage } from "@mariozechner/pi-ai"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { AssistantMessage, ToolResultMessage } from "@earendil-works/pi-ai"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { makeAgentAssistantMessage } from "./test-helpers/agent-message-fixtures.js"; @@ -8,9 +8,9 @@ const piCodingAgentMocks = vi.hoisted(() => ({ estimateTokens: vi.fn((_message: unknown) => 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 7a1721aeb8dc..158ac4845961 100644 --- a/src/agents/compaction.ts +++ b/src/agents/compaction.ts @@ -1,9 +1,9 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { ExtensionContext } 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 as piGenerateSummary, -} from "@mariozechner/pi-coding-agent"; +} from "@earendil-works/pi-coding-agent"; import type { AgentCompactionIdentifierPolicy } from "../config/types.agent-defaults.js"; import { formatErrorMessage } from "../infra/errors.js"; import { retryAsync } from "../infra/retry.js"; diff --git a/src/agents/copilot-dynamic-headers.ts b/src/agents/copilot-dynamic-headers.ts index 99f5b2caf1ad..210a1d20a7fd 100644 --- a/src/agents/copilot-dynamic-headers.ts +++ b/src/agents/copilot-dynamic-headers.ts @@ -1,4 +1,4 @@ -import type { Context } from "@mariozechner/pi-ai"; +import type { Context } from "@earendil-works/pi-ai"; import { COPILOT_INTEGRATION_ID, buildCopilotIdeHeaders } from "../plugin-sdk/provider-auth.js"; export { COPILOT_INTEGRATION_ID, buildCopilotIdeHeaders } from "../plugin-sdk/provider-auth.js"; diff --git a/src/agents/custom-api-registry.test.ts b/src/agents/custom-api-registry.test.ts index 4e22673de07d..3b222b2a0e2f 100644 --- a/src/agents/custom-api-registry.test.ts +++ b/src/agents/custom-api-registry.test.ts @@ -4,7 +4,7 @@ import { getApiProvider, registerBuiltInApiProviders, unregisterApiProviders, -} from "@mariozechner/pi-ai"; +} from "@earendil-works/pi-ai"; import { afterEach, describe, expect, it, vi } from "vitest"; import { ensureCustomApiRegistered, getCustomApiRegistrySourceId } from "./custom-api-registry.js"; diff --git a/src/agents/custom-api-registry.ts b/src/agents/custom-api-registry.ts index 72c056d6f5a1..51d687a4dd79 100644 --- a/src/agents/custom-api-registry.ts +++ b/src/agents/custom-api-registry.ts @@ -1,10 +1,10 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import { getApiProvider, registerApiProvider, type Api, type StreamOptions, -} from "@mariozechner/pi-ai"; +} from "@earendil-works/pi-ai"; const CUSTOM_API_SOURCE_PREFIX = "openclaw-custom-api:"; diff --git a/src/agents/google-gemini-switch.live.test.ts b/src/agents/google-gemini-switch.live.test.ts index efc275c4d165..5169a164ca99 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"; import { Type } from "typebox"; import { describe, expect, it } from "vitest"; import { isLiveTestEnabled } from "./live-test-helpers.js"; diff --git a/src/agents/harness/codex-app-server-extensions.ts b/src/agents/harness/codex-app-server-extensions.ts index 4aaf14a9b441..aff8f3a79117 100644 --- a/src/agents/harness/codex-app-server-extensions.ts +++ b/src/agents/harness/codex-app-server-extensions.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { createSubsystemLogger } from "../../logging/subsystem.js"; import { listCodexAppServerExtensionFactories } from "../../plugins/codex-app-server-extension-factory.js"; import type { diff --git a/src/agents/harness/context-engine-lifecycle.test.ts b/src/agents/harness/context-engine-lifecycle.test.ts index 77859338c50e..597f32f1f345 100644 --- a/src/agents/harness/context-engine-lifecycle.test.ts +++ b/src/agents/harness/context-engine-lifecycle.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, vi } from "vitest"; import type { ContextEngine } from "../../context-engine/types.js"; import { OPENCLAW_RUNTIME_CONTEXT_CUSTOM_TYPE } from "../internal-runtime-context.js"; diff --git a/src/agents/harness/context-engine-lifecycle.ts b/src/agents/harness/context-engine-lifecycle.ts index 01e4db51a6e2..f9c66e47d76b 100644 --- a/src/agents/harness/context-engine-lifecycle.ts +++ b/src/agents/harness/context-engine-lifecycle.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import type { MemoryCitationsMode } from "../../config/types.memory.js"; import type { ContextEngine, ContextEngineRuntimeContext } from "../../context-engine/types.js"; import { stripRuntimeContextCustomMessages } from "../internal-runtime-context.js"; diff --git a/src/agents/harness/hook-helpers.ts b/src/agents/harness/hook-helpers.ts index c3efccf600cb..abf8fc8c95ac 100644 --- a/src/agents/harness/hook-helpers.ts +++ b/src/agents/harness/hook-helpers.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { createSubsystemLogger } from "../../logging/subsystem.js"; import { getGlobalHookRunner } from "../../plugins/hook-runner-global.js"; import { consumeAdjustedParamsForToolCall } from "../pi-tools.before-tool-call.js"; diff --git a/src/agents/harness/prompt-compaction-hook-helpers.ts b/src/agents/harness/prompt-compaction-hook-helpers.ts index df556682985f..a9655ffea235 100644 --- a/src/agents/harness/prompt-compaction-hook-helpers.ts +++ b/src/agents/harness/prompt-compaction-hook-helpers.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { createSubsystemLogger } from "../../logging/subsystem.js"; import { getGlobalHookRunner } from "../../plugins/hook-runner-global.js"; import type { diff --git a/src/agents/harness/selection.test.ts b/src/agents/harness/selection.test.ts index 2cc81d8e21ab..8347a0b28f42 100644 --- a/src/agents/harness/selection.test.ts +++ b/src/agents/harness/selection.test.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import type { OpenClawConfig } from "../../config/config.js"; import type { diff --git a/src/agents/harness/v2.test.ts b/src/agents/harness/v2.test.ts index 9405146df2e9..8d9c5a371e12 100644 --- a/src/agents/harness/v2.test.ts +++ b/src/agents/harness/v2.test.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { afterEach, describe, expect, it, vi } from "vitest"; import { onInternalDiagnosticEvent, diff --git a/src/agents/live-cache-regression-runner.ts b/src/agents/live-cache-regression-runner.ts index ac91ba0f5876..3a89cdc4116b 100644 --- a/src/agents/live-cache-regression-runner.ts +++ b/src/agents/live-cache-regression-runner.ts @@ -1,6 +1,6 @@ import { randomUUID } from "node:crypto"; import fs from "node:fs/promises"; -import type { AssistantMessage, Message, Tool } from "@mariozechner/pi-ai"; +import type { AssistantMessage, Message, Tool } from "@earendil-works/pi-ai"; import { Type } from "typebox"; import { normalizeLowercaseStringOrEmpty } from "../shared/string-coerce.js"; import { diff --git a/src/agents/live-cache-test-support.ts b/src/agents/live-cache-test-support.ts index 0087100363de..cfad4014ceb3 100644 --- a/src/agents/live-cache-test-support.ts +++ b/src/agents/live-cache-test-support.ts @@ -4,7 +4,7 @@ import { type Api, type AssistantMessage, type Model, -} from "@mariozechner/pi-ai"; +} from "@earendil-works/pi-ai"; import { getRuntimeConfig } from "../config/config.js"; import { isTruthyEnvValue } from "../infra/env.js"; import { resolveDefaultAgentDir } from "./agent-scope.js"; diff --git a/src/agents/live-model-turn-probes.ts b/src/agents/live-model-turn-probes.ts index a2279eaf201a..03e3caff1104 100644 --- a/src/agents/live-model-turn-probes.ts +++ b/src/agents/live-model-turn-probes.ts @@ -1,4 +1,4 @@ -import type { Api, AssistantMessage, Context, Model } from "@mariozechner/pi-ai"; +import type { Api, AssistantMessage, Context, Model } from "@earendil-works/pi-ai"; export const LIVE_MODEL_FILE_PROBE_TOKEN = "opal"; diff --git a/src/agents/minimax.live.test.ts b/src/agents/minimax.live.test.ts index 30c982a791a9..37ef3be1434f 100644 --- a/src/agents/minimax.live.test.ts +++ b/src/agents/minimax.live.test.ts @@ -1,4 +1,4 @@ -import { completeSimple, type Model } from "@mariozechner/pi-ai"; +import { completeSimple, type Model } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { createSingleUserPromptMessage, diff --git a/src/agents/model-auth.profiles.test.ts b/src/agents/model-auth.profiles.test.ts index 569ee6969952..54ced5004c8a 100644 --- a/src/agents/model-auth.profiles.test.ts +++ b/src/agents/model-auth.profiles.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 { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import type { OpenClawConfig } from "../config/types.openclaw.js"; import { withEnvAsync } from "../test-utils/env.js"; diff --git a/src/agents/model-auth.test.ts b/src/agents/model-auth.test.ts index 1c5398a4d632..12cdc1cffa63 100644 --- a/src/agents/model-auth.test.ts +++ b/src/agents/model-auth.test.ts @@ -1,4 +1,4 @@ -import type { Model } from "@mariozechner/pi-ai"; +import type { Model } from "@earendil-works/pi-ai"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import type { ModelProviderConfig } from "../config/config.js"; import type { AuthProfileStore } from "./auth-profiles.js"; diff --git a/src/agents/model-auth.ts b/src/agents/model-auth.ts index 2279ec339b63..015e64bcc553 100644 --- a/src/agents/model-auth.ts +++ b/src/agents/model-auth.ts @@ -1,5 +1,5 @@ import path from "node:path"; -import { type Api, type Model } from "@mariozechner/pi-ai"; +import { type Api, type Model } from "@earendil-works/pi-ai"; import { formatCliCommand } from "../cli/command-format.js"; import { getRuntimeConfigSnapshot } from "../config/config.js"; import type { ModelProviderAuthMode, ModelProviderConfig } from "../config/types.js"; diff --git a/src/agents/model-compat.test.ts b/src/agents/model-compat.test.ts index 9c0cbeba01b0..7781a5c6732a 100644 --- a/src/agents/model-compat.test.ts +++ b/src/agents/model-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 { beforeEach, describe, expect, it, vi } from "vitest"; const providerRuntimeMocks = vi.hoisted(() => ({ diff --git a/src/agents/model-scan.ts b/src/agents/model-scan.ts index de891ef4ec27..e57f8665e06a 100644 --- a/src/agents/model-scan.ts +++ b/src/agents/model-scan.ts @@ -6,7 +6,7 @@ import { type Model, type OpenAICompletionsOptions, type Tool, -} from "@mariozechner/pi-ai"; +} from "@earendil-works/pi-ai"; import { Type } from "typebox"; import { formatErrorMessage } from "../infra/errors.js"; 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 d81aecf53891..127685499027 100644 --- a/src/agents/models.profiles.live.test.ts +++ b/src/agents/models.profiles.live.test.ts @@ -6,7 +6,7 @@ import { getProviders, type KnownProvider, type Model, -} from "@mariozechner/pi-ai"; +} from "@earendil-works/pi-ai"; import { Type } from "typebox"; import { describe, expect, it } from "vitest"; import { getRuntimeConfig } from "../config/config.js"; diff --git a/src/agents/moonshot.live.test.ts b/src/agents/moonshot.live.test.ts index 3c407393863a..e8ffb43ab8b4 100644 --- a/src/agents/moonshot.live.test.ts +++ b/src/agents/moonshot.live.test.ts @@ -1,4 +1,4 @@ -import { completeSimple, type Model } from "@mariozechner/pi-ai"; +import { completeSimple, type Model } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { createSingleUserPromptMessage, diff --git a/src/agents/openai-completions-compat.ts b/src/agents/openai-completions-compat.ts index a22613af6c53..d4c3431c7459 100644 --- a/src/agents/openai-completions-compat.ts +++ b/src/agents/openai-completions-compat.ts @@ -1,4 +1,4 @@ -import type { Model } from "@mariozechner/pi-ai"; +import type { Model } from "@earendil-works/pi-ai"; import type { ProviderEndpointClass, ProviderRequestCapabilities } from "./provider-attribution.js"; import { resolveProviderRequestCapabilities } from "./provider-attribution.js"; diff --git a/src/agents/openai-reasoning-compat.live.test.ts b/src/agents/openai-reasoning-compat.live.test.ts index 36a0d7657861..d6339873e443 100644 --- a/src/agents/openai-reasoning-compat.live.test.ts +++ b/src/agents/openai-reasoning-compat.live.test.ts @@ -1,6 +1,6 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import { completeSimple, type Api, type Model } from "@mariozechner/pi-ai"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import { completeSimple, type Api, type Model } from "@earendil-works/pi-ai"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import { Type } from "typebox"; import { describe, expect, it } from "vitest"; import { getRuntimeConfig } from "../config/config.js"; diff --git a/src/agents/openai-responses-payload-policy.test.ts b/src/agents/openai-responses-payload-policy.test.ts index 5b618f1ea282..8734d164a604 100644 --- a/src/agents/openai-responses-payload-policy.test.ts +++ b/src/agents/openai-responses-payload-policy.test.ts @@ -1,4 +1,4 @@ -import type { Model } from "@mariozechner/pi-ai"; +import type { Model } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { applyOpenAIResponsesPayloadPolicy, diff --git a/src/agents/openai-responses.reasoning-replay.test.ts b/src/agents/openai-responses.reasoning-replay.test.ts index 2e6ae50d3e5b..1dc5ab8cb685 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"; import { Type } from "typebox"; import { describe, expect, it } from "vitest"; diff --git a/src/agents/openai-thinking-contract.test.ts b/src/agents/openai-thinking-contract.test.ts index 4d4b0a0e1018..14bf0a671e2b 100644 --- a/src/agents/openai-thinking-contract.test.ts +++ b/src/agents/openai-thinking-contract.test.ts @@ -1,13 +1,13 @@ -import { Agent, type StreamFn } from "@mariozechner/pi-agent-core"; +import { Agent, type StreamFn } from "@earendil-works/pi-agent-core"; import { createAssistantMessageEventStream, type AssistantMessage, type Context, type Model, type SimpleStreamOptions, -} from "@mariozechner/pi-ai"; -import { streamSimpleOpenAICodexResponses } from "@mariozechner/pi-ai/openai-codex-responses"; -import { streamSimpleOpenAIResponses } from "@mariozechner/pi-ai/openai-responses"; +} from "@earendil-works/pi-ai"; +import { streamSimpleOpenAICodexResponses } from "@earendil-works/pi-ai/openai-codex-responses"; +import { streamSimpleOpenAIResponses } from "@earendil-works/pi-ai/openai-responses"; import { describe, expect, it } from "vitest"; type ResponsesModel = Model<"openai-responses"> | Model<"openai-codex-responses">; diff --git a/src/agents/openai-transport-stream.test.ts b/src/agents/openai-transport-stream.test.ts index e0602a6f46c7..280049187cb6 100644 --- a/src/agents/openai-transport-stream.test.ts +++ b/src/agents/openai-transport-stream.test.ts @@ -1,5 +1,5 @@ import { createServer } from "node:http"; -import type { Model } from "@mariozechner/pi-ai"; +import type { Model } from "@earendil-works/pi-ai"; import { describe, expect, it, vi } from "vitest"; import { buildOpenAIResponsesParams, diff --git a/src/agents/openai-transport-stream.ts b/src/agents/openai-transport-stream.ts index 2143d9f10dda..408c51de1680 100644 --- a/src/agents/openai-transport-stream.ts +++ b/src/agents/openai-transport-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 { calculateCost, createAssistantMessageEventStream, @@ -8,8 +8,8 @@ import { type Api, type Context, type Model, -} from "@mariozechner/pi-ai"; -import { convertMessages } from "@mariozechner/pi-ai/openai-completions"; +} from "@earendil-works/pi-ai"; +import { convertMessages } from "@earendil-works/pi-ai/openai-completions"; import OpenAI, { AzureOpenAI } from "openai"; import type { ChatCompletionChunk } from "openai/resources/chat/completions.js"; import type { diff --git a/src/agents/openclaw-owned-tool-runtime-contract.test.ts b/src/agents/openclaw-owned-tool-runtime-contract.test.ts index 607873e41199..23e8cf2dbc7c 100644 --- a/src/agents/openclaw-owned-tool-runtime-contract.test.ts +++ b/src/agents/openclaw-owned-tool-runtime-contract.test.ts @@ -1,5 +1,5 @@ -import type { AgentTool } from "@mariozechner/pi-agent-core"; -import type { ExtensionContext } from "@mariozechner/pi-coding-agent"; +import type { AgentTool } from "@earendil-works/pi-agent-core"; +import type { ExtensionContext } from "@earendil-works/pi-coding-agent"; import { installOpenClawOwnedToolHooks, resetOpenClawOwnedToolHooks, diff --git a/src/agents/pi-bundle-lsp-runtime.ts b/src/agents/pi-bundle-lsp-runtime.ts index 315802efb489..f4323846528e 100644 --- a/src/agents/pi-bundle-lsp-runtime.ts +++ b/src/agents/pi-bundle-lsp-runtime.ts @@ -1,12 +1,12 @@ import { spawn, type ChildProcess } from "node:child_process"; -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import type { OpenClawConfig } from "../config/types.openclaw.js"; +import { sanitizeHostExecEnv } from "../infra/host-env-security.js"; import { logDebug, logWarn } from "../logger.js"; import { materializeWindowsSpawnProgram, resolveWindowsSpawnProgram, } from "../plugin-sdk/windows-spawn.js"; -import { sanitizeHostExecEnv } from "../infra/host-env-security.js"; import { setPluginToolMeta } from "../plugins/tools.js"; import { killProcessTree } from "../process/kill-tree.js"; import { normalizeOptionalLowercaseString } from "../shared/string-coerce.js"; diff --git a/src/agents/pi-bundle-mcp-materialize.ts b/src/agents/pi-bundle-mcp-materialize.ts index 4c33286486a7..7a77f0cc2073 100644 --- a/src/agents/pi-bundle-mcp-materialize.ts +++ b/src/agents/pi-bundle-mcp-materialize.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 { CallToolResult } from "@modelcontextprotocol/sdk/types.js"; import type { OpenClawConfig } from "../config/types.openclaw.js"; import { logWarn } from "../logger.js"; diff --git a/src/agents/pi-embedded-helpers.formatassistanterrortext.test.ts b/src/agents/pi-embedded-helpers.formatassistanterrortext.test.ts index 9d1a18ee5bcb..518131e3c092 100644 --- a/src/agents/pi-embedded-helpers.formatassistanterrortext.test.ts +++ b/src/agents/pi-embedded-helpers.formatassistanterrortext.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 { MALFORMED_STREAMING_FRAGMENT_ERROR_MESSAGE } from "../shared/assistant-error-format.js"; import { diff --git a/src/agents/pi-embedded-helpers.sanitize-session-messages-images.removes-empty-assistant-text-blocks-but-preserves.test.ts b/src/agents/pi-embedded-helpers.sanitize-session-messages-images.removes-empty-assistant-text-blocks-but-preserves.test.ts index ab2e42fb777c..4ddc09fc69e8 100644 --- a/src/agents/pi-embedded-helpers.sanitize-session-messages-images.removes-empty-assistant-text-blocks-but-preserves.test.ts +++ b/src/agents/pi-embedded-helpers.sanitize-session-messages-images.removes-empty-assistant-text-blocks-but-preserves.test.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { AssistantMessage, ToolResultMessage, UserMessage } from "@mariozechner/pi-ai"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { AssistantMessage, ToolResultMessage, UserMessage } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { sanitizeGoogleTurnOrdering, diff --git a/src/agents/pi-embedded-helpers.validate-turns.test.ts b/src/agents/pi-embedded-helpers.validate-turns.test.ts index 43510040634b..ff394804d394 100644 --- a/src/agents/pi-embedded-helpers.validate-turns.test.ts +++ b/src/agents/pi-embedded-helpers.validate-turns.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 059bd8ef2c9f..765314401746 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 { OpenClawConfig } from "../../config/types.openclaw.js"; import { sanitizeGoogleAssistantFirstOrdering } from "../../shared/google-turn-ordering.js"; import { normalizeOptionalString } from "../../shared/string-coerce.js"; diff --git a/src/agents/pi-embedded-helpers/errors.test.ts b/src/agents/pi-embedded-helpers/errors.test.ts index a8b38d51368a..3077bc613174 100644 --- a/src/agents/pi-embedded-helpers/errors.test.ts +++ b/src/agents/pi-embedded-helpers/errors.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 { MALFORMED_STREAMING_FRAGMENT_ERROR_MESSAGE } from "../../shared/assistant-error-format.js"; import { makeAssistantMessageFixture } from "../test-helpers/assistant-message-fixtures.js"; diff --git a/src/agents/pi-embedded-helpers/errors.ts b/src/agents/pi-embedded-helpers/errors.ts index 7c40d4df59b6..ffdf63a7c196 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 { OpenClawConfig } from "../../config/types.openclaw.js"; import { createSubsystemLogger } from "../../logging/subsystem.js"; import { diff --git a/src/agents/pi-embedded-helpers/images.ts b/src/agents/pi-embedded-helpers/images.ts index 4812642d8f92..d74541a1ab21 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 13bfb2248762..ab676979b237 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 5c3871f49844..99c7a00e9705 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"; import { normalizeOptionalString } from "../../shared/string-coerce.js"; import { extractToolCallsFromAssistant, extractToolResultId } from "../tool-call-id.js"; diff --git a/src/agents/pi-embedded-runner-extraparams-openrouter.test.ts b/src/agents/pi-embedded-runner-extraparams-openrouter.test.ts index bf7a693ddfe2..577fad8dfe05 100644 --- a/src/agents/pi-embedded-runner-extraparams-openrouter.test.ts +++ b/src/agents/pi-embedded-runner-extraparams-openrouter.test.ts @@ -1,4 +1,4 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { runExtraParamsPayloadCase } from "./pi-embedded-runner-extraparams.test-support.js"; import { diff --git a/src/agents/pi-embedded-runner-extraparams.live.test.ts b/src/agents/pi-embedded-runner-extraparams.live.test.ts index 18971aa50d52..ab21051561dd 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"; import { describe, expect, it } from "vitest"; import type { OpenClawConfig } from "../config/config.js"; import { isLiveTestEnabled } from "./live-test-helpers.js"; diff --git a/src/agents/pi-embedded-runner-extraparams.test-support.ts b/src/agents/pi-embedded-runner-extraparams.test-support.ts index 69ee942b67fa..863e6c75df2a 100644 --- a/src/agents/pi-embedded-runner-extraparams.test-support.ts +++ b/src/agents/pi-embedded-runner-extraparams.test-support.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Context, Model } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Context, Model } from "@earendil-works/pi-ai"; import { applyExtraParamsToAgent } from "./pi-embedded-runner/extra-params.js"; export function runExtraParamsPayloadCase(params: { diff --git a/src/agents/pi-embedded-runner-extraparams.test.ts b/src/agents/pi-embedded-runner-extraparams.test.ts index ae56156a9189..e8379b60178b 100644 --- a/src/agents/pi-embedded-runner-extraparams.test.ts +++ b/src/agents/pi-embedded-runner-extraparams.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 { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { __testing as extraParamsTesting } from "./pi-embedded-runner/extra-params.js"; diff --git a/src/agents/pi-embedded-runner.anthropic-tool-replay.live.test.ts b/src/agents/pi-embedded-runner.anthropic-tool-replay.live.test.ts index a7c642ecbce0..d2465d5e9f38 100644 --- a/src/agents/pi-embedded-runner.anthropic-tool-replay.live.test.ts +++ b/src/agents/pi-embedded-runner.anthropic-tool-replay.live.test.ts @@ -1,4 +1,4 @@ -import type { Message, Model } from "@mariozechner/pi-ai"; +import type { Message, Model } from "@earendil-works/pi-ai"; import { describe, expect, it, vi } from "vitest"; import { completeSimpleWithLiveTimeout, diff --git a/src/agents/pi-embedded-runner.cache.live.test.ts b/src/agents/pi-embedded-runner.cache.live.test.ts index 77a6eccd579d..55cb22637ccf 100644 --- a/src/agents/pi-embedded-runner.cache.live.test.ts +++ b/src/agents/pi-embedded-runner.cache.live.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, Message, Tool } from "@mariozechner/pi-ai"; +import type { AssistantMessage, Message, Tool } from "@earendil-works/pi-ai"; import { Type } from "typebox"; import { afterAll, beforeAll, describe, expect, it } from "vitest"; import type { OpenClawConfig } from "../config/config.js"; diff --git a/src/agents/pi-embedded-runner.e2e.test.ts b/src/agents/pi-embedded-runner.e2e.test.ts index 71b8a48d68e3..bf7deb653ffa 100644 --- a/src/agents/pi-embedded-runner.e2e.test.ts +++ b/src/agents/pi-embedded-runner.e2e.test.ts @@ -31,8 +31,9 @@ const ensureOpenClawModelsJsonMock = vi.fn(async () => ({ wrote: false })); const loggerWarnMock = vi.fn(); let refreshRuntimeAuthOnFirstPromptError = false; -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, @@ -153,7 +154,7 @@ const installRunEmbeddedMocks = () => { }; let runEmbeddedPiAgent: typeof import("./pi-embedded-runner/run.js").runEmbeddedPiAgent; -let SessionManager: typeof import("@mariozechner/pi-coding-agent").SessionManager; +let SessionManager: typeof import("@earendil-works/pi-coding-agent").SessionManager; let e2eWorkspace: EmbeddedPiRunnerTestWorkspace | undefined; let agentDir: string; let workspaceDir: string; @@ -165,7 +166,7 @@ beforeAll(async () => { vi.resetModules(); installRunEmbeddedMocks(); ({ runEmbeddedPiAgent } = await import("./pi-embedded-runner/run.js")); - ({ SessionManager } = await import("@mariozechner/pi-coding-agent")); + ({ SessionManager } = await import("@earendil-works/pi-coding-agent")); e2eWorkspace = await createEmbeddedPiRunnerTestWorkspace("openclaw-embedded-agent-"); ({ agentDir, workspaceDir } = e2eWorkspace); }, 180_000); diff --git a/src/agents/pi-embedded-runner.extensions.test.ts b/src/agents/pi-embedded-runner.extensions.test.ts index dc949aed8cc3..17bcfe88964b 100644 --- a/src/agents/pi-embedded-runner.extensions.test.ts +++ b/src/agents/pi-embedded-runner.extensions.test.ts @@ -1,4 +1,4 @@ -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import { afterEach, describe, expect, it } from "vitest"; import { createEmptyPluginRegistry } from "../plugins/registry.js"; import { setActivePluginRegistry } from "../plugins/runtime.js"; diff --git a/src/agents/pi-embedded-runner.guard.test.ts b/src/agents/pi-embedded-runner.guard.test.ts index fbc1df5bb6f4..cfbe9af7b95b 100644 --- a/src/agents/pi-embedded-runner.guard.test.ts +++ b/src/agents/pi-embedded-runner.guard.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 type { OpenClawConfig } from "../config/types.openclaw.js"; import { guardSessionManager } from "./session-tool-result-guard-wrapper.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 a4e189d6b491..c2b2521dde83 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.test.ts b/src/agents/pi-embedded-runner.limithistoryturns.test.ts index 811fa2e13f12..0cd5ccfc79ec 100644 --- a/src/agents/pi-embedded-runner.limithistoryturns.test.ts +++ b/src/agents/pi-embedded-runner.limithistoryturns.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/history.js"; diff --git a/src/agents/pi-embedded-runner.openai-tool-id-preservation.test.ts b/src/agents/pi-embedded-runner.openai-tool-id-preservation.test.ts index 3ccd73230e3b..4008c7113d5e 100644 --- a/src/agents/pi-embedded-runner.openai-tool-id-preservation.test.ts +++ b/src/agents/pi-embedded-runner.openai-tool-id-preservation.test.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { beforeAll, describe, expect, it, vi } from "vitest"; import { createSanitizeSessionHistoryHelpersMock, 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 5c92d094d9df..28908cecdd03 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 { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import type { OpenClawConfig } from "../config/config.js"; import { redactIdentifier } from "../logging/redact-identifier.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 a1e0ccb18760..37ad741f1dc5 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 type { TranscriptPolicy } from "./transcript-policy.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 f3f0e505e65a..8194769bc6b8 100644 --- a/src/agents/pi-embedded-runner.sanitize-session-history.test.ts +++ b/src/agents/pi-embedded-runner.sanitize-session-history.test.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { AssistantMessage, UserMessage, Usage } from "@mariozechner/pi-ai"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { AssistantMessage, UserMessage, Usage } from "@earendil-works/pi-ai"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { expectOpenAIResponsesStrictSanitizeCall, diff --git a/src/agents/pi-embedded-runner/anthropic-family-tool-payload-compat.ts b/src/agents/pi-embedded-runner/anthropic-family-tool-payload-compat.ts index 96990cc76df1..d1970061e3dc 100644 --- a/src/agents/pi-embedded-runner/anthropic-family-tool-payload-compat.ts +++ b/src/agents/pi-embedded-runner/anthropic-family-tool-payload-compat.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { streamSimple } from "@earendil-works/pi-ai"; import { normalizeOptionalString } from "../../shared/string-coerce.js"; type AnthropicToolSchemaMode = "openai-functions"; type AnthropicToolChoiceMode = "openai-string-modes"; diff --git a/src/agents/pi-embedded-runner/compact.hooks.harness.ts b/src/agents/pi-embedded-runner/compact.hooks.harness.ts index b7b6473a4aae..94d032971328 100644 --- a/src/agents/pi-embedded-runner/compact.hooks.harness.ts +++ b/src/agents/pi-embedded-runner/compact.hooks.harness.ts @@ -359,9 +359,9 @@ export async function loadCompactHooksHarness(): Promise<{ }; }); - vi.doMock("@mariozechner/pi-ai/oauth", async () => { - const actual = await vi.importActual( - "@mariozechner/pi-ai/oauth", + vi.doMock("@earendil-works/pi-ai/oauth", async () => { + const actual = await vi.importActual( + "@earendil-works/pi-ai/oauth", ); return { ...actual, @@ -370,7 +370,7 @@ export async function loadCompactHooksHarness(): Promise<{ }; }); - vi.doMock("@mariozechner/pi-coding-agent", () => ({ + vi.doMock("@earendil-works/pi-coding-agent", () => ({ AuthStorage: function AuthStorage() {}, ModelRegistry: function ModelRegistry() {}, createAgentSession: vi.fn(async () => { diff --git a/src/agents/pi-embedded-runner/compact.hooks.test.ts b/src/agents/pi-embedded-runner/compact.hooks.test.ts index b4e47d1775df..22a1245b9d59 100644 --- a/src/agents/pi-embedded-runner/compact.hooks.test.ts +++ b/src/agents/pi-embedded-runner/compact.hooks.test.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { applyExtraParamsToAgentMock, diff --git a/src/agents/pi-embedded-runner/compact.ts b/src/agents/pi-embedded-runner/compact.ts index 2ed90892bd6a..36394c6b1a41 100644 --- a/src/agents/pi-embedded-runner/compact.ts +++ b/src/agents/pi-embedded-runner/compact.ts @@ -1,12 +1,12 @@ 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, -} from "@mariozechner/pi-coding-agent"; +} from "@earendil-works/pi-coding-agent"; import { isAcpRuntimeSpawnAvailable } from "../../acp/runtime/availability.js"; import type { ThinkLevel } from "../../auto-reply/thinking.js"; import { resolveAgentModelFallbackValues } from "../../config/model-input.js"; diff --git a/src/agents/pi-embedded-runner/compaction-hooks.ts b/src/agents/pi-embedded-runner/compaction-hooks.ts index a410d348d4e1..8efdd6664569 100644 --- a/src/agents/pi-embedded-runner/compaction-hooks.ts +++ b/src/agents/pi-embedded-runner/compaction-hooks.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; import { createInternalHookEvent, triggerInternalHook } from "../../hooks/internal-hooks.js"; import { formatErrorMessage } from "../../infra/errors.js"; diff --git a/src/agents/pi-embedded-runner/compaction-successor-transcript.test.ts b/src/agents/pi-embedded-runner/compaction-successor-transcript.test.ts index c03ad2fdd698..aa94b7cd5cb2 100644 --- a/src/agents/pi-embedded-runner/compaction-successor-transcript.test.ts +++ b/src/agents/pi-embedded-runner/compaction-successor-transcript.test.ts @@ -1,7 +1,7 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import { afterEach, describe, expect, it, vi } from "vitest"; import { makeAgentAssistantMessage } from "../test-helpers/agent-message-fixtures.js"; import { diff --git a/src/agents/pi-embedded-runner/compaction-successor-transcript.ts b/src/agents/pi-embedded-runner/compaction-successor-transcript.ts index eebe56251eea..651453c00aa4 100644 --- a/src/agents/pi-embedded-runner/compaction-successor-transcript.ts +++ b/src/agents/pi-embedded-runner/compaction-successor-transcript.ts @@ -5,7 +5,7 @@ import { type CompactionEntry, type SessionEntry, type SessionHeader, -} from "@mariozechner/pi-coding-agent"; +} from "@earendil-works/pi-coding-agent"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; import { collectDuplicateUserMessageEntryIdsForCompaction } from "./compaction-duplicate-user-messages.js"; import { diff --git a/src/agents/pi-embedded-runner/extensions.test.ts b/src/agents/pi-embedded-runner/extensions.test.ts index 239274e2700c..9b1fc90f9162 100644 --- a/src/agents/pi-embedded-runner/extensions.test.ts +++ b/src/agents/pi-embedded-runner/extensions.test.ts @@ -1,5 +1,5 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; -import type { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { Api, Model } from "@earendil-works/pi-ai"; +import type { SessionManager } from "@earendil-works/pi-coding-agent"; import { describe, expect, it, vi } from "vitest"; import type { OpenClawConfig } from "../../config/config.js"; import { getCompactionSafeguardRuntime } from "../pi-hooks/compaction-safeguard-runtime.js"; diff --git a/src/agents/pi-embedded-runner/extensions.ts b/src/agents/pi-embedded-runner/extensions.ts index fa88f47d934a..89c7b015db6c 100644 --- a/src/agents/pi-embedded-runner/extensions.ts +++ b/src/agents/pi-embedded-runner/extensions.ts @@ -1,6 +1,6 @@ import { randomUUID } from "node:crypto"; -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; -import type { ExtensionFactory, SessionManager } from "@mariozechner/pi-coding-agent"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; +import type { ExtensionFactory, SessionManager } from "@earendil-works/pi-coding-agent"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; import type { ProviderRuntimeModel } from "../../plugins/provider-runtime-model.types.js"; import { resolveContextWindowInfo } from "../context-window-guard.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 d011590e90d9..b39a6a112933 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 { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { createPiAiStreamSimpleMock } from "../../../test/helpers/agents/pi-ai-stream-simple-mock.js"; import { isOpenRouterAnthropicModelRef } from "./anthropic-family-cache-semantics.js"; @@ -39,7 +39,7 @@ vi.mock("./logger.js", () => ({ }, })); -vi.mock("@mariozechner/pi-ai", () => createPiAiStreamSimpleMock()); +vi.mock("@earendil-works/pi-ai", () => createPiAiStreamSimpleMock()); beforeEach(() => { extraParamsTesting.setProviderRuntimeDepsForTest({ diff --git a/src/agents/pi-embedded-runner/extra-params.google.test.ts b/src/agents/pi-embedded-runner/extra-params.google.test.ts index 23724bc09f06..32a5d878b742 100644 --- a/src/agents/pi-embedded-runner/extra-params.google.test.ts +++ b/src/agents/pi-embedded-runner/extra-params.google.test.ts @@ -1,10 +1,10 @@ -import type { Model } from "@mariozechner/pi-ai"; +import type { Model } from "@earendil-works/pi-ai"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { createPiAiStreamSimpleMock } from "../../../test/helpers/agents/pi-ai-stream-simple-mock.js"; import { __testing as extraParamsTesting } from "./extra-params.js"; import { runExtraParamsCase } from "./extra-params.test-support.js"; -vi.mock("@mariozechner/pi-ai", () => createPiAiStreamSimpleMock()); +vi.mock("@earendil-works/pi-ai", () => createPiAiStreamSimpleMock()); beforeEach(() => { extraParamsTesting.setProviderRuntimeDepsForTest({ diff --git a/src/agents/pi-embedded-runner/extra-params.kilocode.test.ts b/src/agents/pi-embedded-runner/extra-params.kilocode.test.ts index 6dcd7a962983..221eb59bf030 100644 --- a/src/agents/pi-embedded-runner/extra-params.kilocode.test.ts +++ b/src/agents/pi-embedded-runner/extra-params.kilocode.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 { afterEach, describe, expect, it } from "vitest"; import { captureEnv } from "../../test-utils/env.js"; import { createKilocodeWrapper, isProxyReasoningUnsupported } from "./proxy-stream-wrappers.js"; diff --git a/src/agents/pi-embedded-runner/extra-params.openrouter-cache-control.test.ts b/src/agents/pi-embedded-runner/extra-params.openrouter-cache-control.test.ts index 30778636cda7..913155be4680 100644 --- a/src/agents/pi-embedded-runner/extra-params.openrouter-cache-control.test.ts +++ b/src/agents/pi-embedded-runner/extra-params.openrouter-cache-control.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 } from "vitest"; import { createOpenRouterSystemCacheWrapper } from "./proxy-stream-wrappers.js"; diff --git a/src/agents/pi-embedded-runner/extra-params.provider-runtime.test.ts b/src/agents/pi-embedded-runner/extra-params.provider-runtime.test.ts index 4025bec5928e..22c8dccdf30a 100644 --- a/src/agents/pi-embedded-runner/extra-params.provider-runtime.test.ts +++ b/src/agents/pi-embedded-runner/extra-params.provider-runtime.test.ts @@ -1,4 +1,4 @@ -import type { Model } from "@mariozechner/pi-ai"; +import type { Model } from "@earendil-works/pi-ai"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { createPiAiStreamSimpleMock } from "../../../test/helpers/agents/pi-ai-stream-simple-mock.js"; import { @@ -8,7 +8,7 @@ import { } from "./extra-params.js"; import { runExtraParamsCase } from "./extra-params.test-support.js"; -vi.mock("@mariozechner/pi-ai", () => createPiAiStreamSimpleMock()); +vi.mock("@earendil-works/pi-ai", () => createPiAiStreamSimpleMock()); beforeEach(() => { extraParamsTesting.setProviderRuntimeDepsForTest({ diff --git a/src/agents/pi-embedded-runner/extra-params.test-support.ts b/src/agents/pi-embedded-runner/extra-params.test-support.ts index 72bce1bcf842..69ce673bfbb5 100644 --- a/src/agents/pi-embedded-runner/extra-params.test-support.ts +++ b/src/agents/pi-embedded-runner/extra-params.test-support.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 type { ThinkLevel } from "../../auto-reply/thinking.shared.js"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; import { __testing as extraParamsTesting, applyExtraParamsToAgent } from "./extra-params.js"; diff --git a/src/agents/pi-embedded-runner/extra-params.ts b/src/agents/pi-embedded-runner/extra-params.ts index 4cfad2be6e1c..5fc9bcea7e7d 100644 --- a/src/agents/pi-embedded-runner/extra-params.ts +++ b/src/agents/pi-embedded-runner/extra-params.ts @@ -1,7 +1,7 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { SimpleStreamOptions } from "@mariozechner/pi-ai"; -import { streamSimple } from "@mariozechner/pi-ai"; -import type { SettingsManager } from "@mariozechner/pi-coding-agent"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { SimpleStreamOptions } from "@earendil-works/pi-ai"; +import { streamSimple } from "@earendil-works/pi-ai"; +import type { SettingsManager } from "@earendil-works/pi-coding-agent"; import type { ThinkLevel } from "../../auto-reply/thinking.js"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; import { createDeepSeekV4OpenAICompatibleThinkingWrapper } from "../../plugin-sdk/provider-stream-shared.js"; 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 035b2c892674..f69eba7d2ecc 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,9 +1,9 @@ -import type { Model, SimpleStreamOptions } from "@mariozechner/pi-ai"; +import type { Model, SimpleStreamOptions } from "@earendil-works/pi-ai"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { createPiAiStreamSimpleMock } from "../../../test/helpers/agents/pi-ai-stream-simple-mock.js"; import type { OpenClawConfig } from "../../config/config.js"; -vi.mock("@mariozechner/pi-ai", () => createPiAiStreamSimpleMock()); +vi.mock("@earendil-works/pi-ai", () => createPiAiStreamSimpleMock()); let runExtraParamsCase: typeof import("./extra-params.test-support.js").runExtraParamsCase; let extraParamsTesting: typeof import("./extra-params.js").__testing; diff --git a/src/agents/pi-embedded-runner/google-prompt-cache.test.ts b/src/agents/pi-embedded-runner/google-prompt-cache.test.ts index 907d1cef0cd6..b2ac83239acb 100644 --- a/src/agents/pi-embedded-runner/google-prompt-cache.test.ts +++ b/src/agents/pi-embedded-runner/google-prompt-cache.test.ts @@ -1,6 +1,6 @@ import crypto from "node:crypto"; -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Model } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Model } from "@earendil-works/pi-ai"; import { describe, expect, it, vi } from "vitest"; import { prepareGooglePromptCacheStreamFn } from "./google-prompt-cache.js"; diff --git a/src/agents/pi-embedded-runner/google-prompt-cache.ts b/src/agents/pi-embedded-runner/google-prompt-cache.ts index 7755e46be24e..2d0e412c731a 100644 --- a/src/agents/pi-embedded-runner/google-prompt-cache.ts +++ b/src/agents/pi-embedded-runner/google-prompt-cache.ts @@ -1,6 +1,6 @@ import crypto from "node:crypto"; -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { parseGeminiAuth } from "../../infra/gemini-auth.js"; import { normalizeGoogleApiBaseUrl } from "../../infra/google-api-base-url.js"; import { normalizeOptionalString } from "../../shared/string-coerce.js"; diff --git a/src/agents/pi-embedded-runner/history.ts b/src/agents/pi-embedded-runner/history.ts index 55c9a0ef2b6a..bad1f48d5abb 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 { OpenClawConfig } from "../../config/types.openclaw.js"; import { normalizeOptionalLowercaseString } from "../../shared/string-coerce.js"; import { normalizeProviderId } from "../provider-id.js"; diff --git a/src/agents/pi-embedded-runner/manual-compaction-boundary.test.ts b/src/agents/pi-embedded-runner/manual-compaction-boundary.test.ts index c4e2567ddb34..4a95c9c8ce68 100644 --- a/src/agents/pi-embedded-runner/manual-compaction-boundary.test.ts +++ b/src/agents/pi-embedded-runner/manual-compaction-boundary.test.ts @@ -1,9 +1,9 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { AssistantMessage } from "@mariozechner/pi-ai"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import { afterEach, describe, expect, it, vi } from "vitest"; import { hardenManualCompactionBoundary } from "./manual-compaction-boundary.js"; diff --git a/src/agents/pi-embedded-runner/manual-compaction-boundary.ts b/src/agents/pi-embedded-runner/manual-compaction-boundary.ts index 2a1ebb05361b..dd5fe4499413 100644 --- a/src/agents/pi-embedded-runner/manual-compaction-boundary.ts +++ b/src/agents/pi-embedded-runner/manual-compaction-boundary.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { SessionEntry } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { SessionEntry } from "@earendil-works/pi-coding-agent"; import { readTranscriptFileState, TranscriptFileState, diff --git a/src/agents/pi-embedded-runner/minimax-stream-wrappers.test.ts b/src/agents/pi-embedded-runner/minimax-stream-wrappers.test.ts index 9b2934a43f0a..1b515f529b0d 100644 --- a/src/agents/pi-embedded-runner/minimax-stream-wrappers.test.ts +++ b/src/agents/pi-embedded-runner/minimax-stream-wrappers.test.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Context, Model } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Context, Model } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { createMinimaxFastModeWrapper, diff --git a/src/agents/pi-embedded-runner/minimax-stream-wrappers.ts b/src/agents/pi-embedded-runner/minimax-stream-wrappers.ts index b8a6e37071d0..cd216daf4e6e 100644 --- a/src/agents/pi-embedded-runner/minimax-stream-wrappers.ts +++ b/src/agents/pi-embedded-runner/minimax-stream-wrappers.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { streamSimple } from "@earendil-works/pi-ai"; const MINIMAX_FAST_MODEL_IDS = new Map([ ["MiniMax-M2.7", "MiniMax-M2.7-highspeed"], diff --git a/src/agents/pi-embedded-runner/model-context-tokens.ts b/src/agents/pi-embedded-runner/model-context-tokens.ts index 1aa623d3f411..1f81ff34d32e 100644 --- a/src/agents/pi-embedded-runner/model-context-tokens.ts +++ b/src/agents/pi-embedded-runner/model-context-tokens.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; type PiModelWithOptionalContextTokens = Model & { contextTokens?: number; diff --git a/src/agents/pi-embedded-runner/model.inline-provider.ts b/src/agents/pi-embedded-runner/model.inline-provider.ts index ff2ea274ae10..a439870fd0d1 100644 --- a/src/agents/pi-embedded-runner/model.inline-provider.ts +++ b/src/agents/pi-embedded-runner/model.inline-provider.ts @@ -1,4 +1,4 @@ -import type { Api } from "@mariozechner/pi-ai"; +import type { Api } from "@earendil-works/pi-ai"; import type { ModelDefinitionConfig, ModelProviderConfig } from "../../config/types.js"; import { normalizeGoogleApiBaseUrl } from "../../infra/google-api-base-url.js"; import { normalizeOptionalLowercaseString } from "../../shared/string-coerce.js"; diff --git a/src/agents/pi-embedded-runner/model.provider-normalization.ts b/src/agents/pi-embedded-runner/model.provider-normalization.ts index b6090379c96e..f73b85ff2e25 100644 --- a/src/agents/pi-embedded-runner/model.provider-normalization.ts +++ b/src/agents/pi-embedded-runner/model.provider-normalization.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { normalizeModelCompat } from "../../plugins/provider-model-compat.js"; export function normalizeResolvedProviderModel(params: { diff --git a/src/agents/pi-embedded-runner/model.static-catalog.ts b/src/agents/pi-embedded-runner/model.static-catalog.ts index 7dfc417b5bcd..7f60033fdce6 100644 --- a/src/agents/pi-embedded-runner/model.static-catalog.ts +++ b/src/agents/pi-embedded-runner/model.static-catalog.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; import { planManifestModelCatalogRows } from "../../model-catalog/manifest-planner.js"; import type { NormalizedModelCatalogRow } from "../../model-catalog/types.js"; diff --git a/src/agents/pi-embedded-runner/model.ts b/src/agents/pi-embedded-runner/model.ts index 6e0c965ef333..fc9a573285ab 100644 --- a/src/agents/pi-embedded-runner/model.ts +++ b/src/agents/pi-embedded-runner/model.ts @@ -1,10 +1,10 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { AuthStorage as PiAuthStorageClass, ModelRegistry as PiModelRegistryClass, type AuthStorage, type ModelRegistry, -} from "@mariozechner/pi-coding-agent"; +} from "@earendil-works/pi-coding-agent"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; import type { ProviderRuntimeModel } from "../../plugins/provider-runtime-model.types.js"; import { diff --git a/src/agents/pi-embedded-runner/moonshot-stream-wrappers.ts b/src/agents/pi-embedded-runner/moonshot-stream-wrappers.ts index e6cd30048c50..9d08febff767 100644 --- a/src/agents/pi-embedded-runner/moonshot-stream-wrappers.ts +++ b/src/agents/pi-embedded-runner/moonshot-stream-wrappers.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { streamSimple } from "@earendil-works/pi-ai"; import type { ThinkLevel } from "../../auto-reply/thinking.js"; import { streamWithPayloadPatch } from "./stream-payload-utils.js"; diff --git a/src/agents/pi-embedded-runner/moonshot-thinking-stream-wrappers.ts b/src/agents/pi-embedded-runner/moonshot-thinking-stream-wrappers.ts index 5e108ce6bf8f..e29464b92df3 100644 --- a/src/agents/pi-embedded-runner/moonshot-thinking-stream-wrappers.ts +++ b/src/agents/pi-embedded-runner/moonshot-thinking-stream-wrappers.ts @@ -1,4 +1,4 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import type { ThinkLevel } from "../../auto-reply/thinking.js"; import { createLazyImportLoader } from "../../shared/lazy-promise.js"; import { normalizeOptionalLowercaseString } from "../../shared/string-coerce.js"; @@ -7,7 +7,7 @@ import { streamWithPayloadPatch } from "./stream-payload-utils.js"; type MoonshotThinkingType = "enabled" | "disabled"; type MoonshotThinkingKeep = "all"; const MOONSHOT_THINKING_KEEP_MODEL_ID = "kimi-k2.6"; -const piAiRuntimeLoader = createLazyImportLoader(() => import("@mariozechner/pi-ai")); +const piAiRuntimeLoader = createLazyImportLoader(() => import("@earendil-works/pi-ai")); async function loadDefaultStreamFn(): Promise { const runtime = await piAiRuntimeLoader.load(); diff --git a/src/agents/pi-embedded-runner/openai-stream-wrappers.test.ts b/src/agents/pi-embedded-runner/openai-stream-wrappers.test.ts index 4d80d0839d6e..c9d71516b5cb 100644 --- a/src/agents/pi-embedded-runner/openai-stream-wrappers.test.ts +++ b/src/agents/pi-embedded-runner/openai-stream-wrappers.test.ts @@ -1,6 +1,6 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Model } from "@mariozechner/pi-ai"; -import { createAssistantMessageEventStream } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Model } from "@earendil-works/pi-ai"; +import { createAssistantMessageEventStream } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { createOpenAIAttributionHeadersWrapper, diff --git a/src/agents/pi-embedded-runner/openai-stream-wrappers.ts b/src/agents/pi-embedded-runner/openai-stream-wrappers.ts index ce6ab89c772d..d08ae3849f8c 100644 --- a/src/agents/pi-embedded-runner/openai-stream-wrappers.ts +++ b/src/agents/pi-embedded-runner/openai-stream-wrappers.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 { SimpleStreamOptions } from "@earendil-works/pi-ai"; +import { streamSimple } from "@earendil-works/pi-ai"; import type { ThinkLevel } from "../../auto-reply/thinking.js"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; import { normalizeOptionalLowercaseString, readStringValue } from "../../shared/string-coerce.js"; diff --git a/src/agents/pi-embedded-runner/proxy-stream-wrappers.test.ts b/src/agents/pi-embedded-runner/proxy-stream-wrappers.test.ts index d6dbbf7adb82..35a6a3546f36 100644 --- a/src/agents/pi-embedded-runner/proxy-stream-wrappers.test.ts +++ b/src/agents/pi-embedded-runner/proxy-stream-wrappers.test.ts @@ -1,6 +1,6 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Context, Model } from "@mariozechner/pi-ai"; -import { createAssistantMessageEventStream } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Context, Model } from "@earendil-works/pi-ai"; +import { createAssistantMessageEventStream } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { createOpenRouterSystemCacheWrapper, diff --git a/src/agents/pi-embedded-runner/proxy-stream-wrappers.ts b/src/agents/pi-embedded-runner/proxy-stream-wrappers.ts index 5a658728561e..cb8d73068025 100644 --- a/src/agents/pi-embedded-runner/proxy-stream-wrappers.ts +++ b/src/agents/pi-embedded-runner/proxy-stream-wrappers.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { streamSimple } from "@earendil-works/pi-ai"; import type { ThinkLevel } from "../../auto-reply/thinking.js"; import { normalizeOptionalLowercaseString, readStringValue } from "../../shared/string-coerce.js"; import { resolveProviderRequestPolicy } from "../provider-attribution.js"; diff --git a/src/agents/pi-embedded-runner/replay-history.test.ts b/src/agents/pi-embedded-runner/replay-history.test.ts index 4aa0daaba661..0051d42203ca 100644 --- a/src/agents/pi-embedded-runner/replay-history.test.ts +++ b/src/agents/pi-embedded-runner/replay-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 { describe, expect, it } from "vitest"; import { normalizeAssistantReplayContent } from "./replay-history.js"; diff --git a/src/agents/pi-embedded-runner/replay-history.ts b/src/agents/pi-embedded-runner/replay-history.ts index df2bff2427a1..704c5646c67b 100644 --- a/src/agents/pi-embedded-runner/replay-history.ts +++ b/src/agents/pi-embedded-runner/replay-history.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 { stripInboundMetadata } from "../../auto-reply/reply/strip-inbound-meta.js"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; import type { ProviderRuntimeModel } from "../../plugins/provider-runtime-model.types.js"; diff --git a/src/agents/pi-embedded-runner/run/assistant-failover.ts b/src/agents/pi-embedded-runner/run/assistant-failover.ts index 1d8a72bf748d..00674f20319b 100644 --- a/src/agents/pi-embedded-runner/run/assistant-failover.ts +++ b/src/agents/pi-embedded-runner/run/assistant-failover.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import type { OpenClawConfig } from "../../../config/types.openclaw.js"; import { sanitizeForLog } from "../../../terminal/ansi.js"; import type { AuthProfileFailureReason } from "../../auth-profiles.js"; diff --git a/src/agents/pi-embedded-runner/run/attempt-session.ts b/src/agents/pi-embedded-runner/run/attempt-session.ts index fc45c68cf8be..fe2bbdcbcab7 100644 --- a/src/agents/pi-embedded-runner/run/attempt-session.ts +++ b/src/agents/pi-embedded-runner/run/attempt-session.ts @@ -1,4 +1,4 @@ -import type { CreateAgentSessionOptions } from "@mariozechner/pi-coding-agent"; +import type { CreateAgentSessionOptions } from "@earendil-works/pi-coding-agent"; export type EmbeddedAgentSessionOptions = { cwd: string; diff --git a/src/agents/pi-embedded-runner/run/attempt.context-engine-helpers.ts b/src/agents/pi-embedded-runner/run/attempt.context-engine-helpers.ts index 362bc6d10946..e44ae706ab38 100644 --- a/src/agents/pi-embedded-runner/run/attempt.context-engine-helpers.ts +++ b/src/agents/pi-embedded-runner/run/attempt.context-engine-helpers.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 type { ContextEngine } from "../../../context-engine/types.js"; import type { BootstrapMode } from "../../bootstrap-mode.js"; import { normalizeUsage, type NormalizedUsage } from "../../usage.js"; diff --git a/src/agents/pi-embedded-runner/run/attempt.memory-flush-forwarding.test.ts b/src/agents/pi-embedded-runner/run/attempt.memory-flush-forwarding.test.ts index 8e0bbe8b6a90..23651367871c 100644 --- a/src/agents/pi-embedded-runner/run/attempt.memory-flush-forwarding.test.ts +++ b/src/agents/pi-embedded-runner/run/attempt.memory-flush-forwarding.test.ts @@ -1,8 +1,8 @@ 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 { AuthStorage, ModelRegistry } from "@mariozechner/pi-coding-agent"; +import type { Api, Model } from "@earendil-works/pi-ai"; +import type { AuthStorage, ModelRegistry } from "@earendil-works/pi-coding-agent"; import { describe, expect, it, vi } from "vitest"; import type { AnyAgentTool } from "../../pi-tools.types.js"; import { buildEmbeddedAttemptToolRunContext } from "./attempt.tool-run-context.js"; diff --git a/src/agents/pi-embedded-runner/run/attempt.model-diagnostic-events.test.ts b/src/agents/pi-embedded-runner/run/attempt.model-diagnostic-events.test.ts index c6534cfa4d1d..90490d8797bf 100644 --- a/src/agents/pi-embedded-runner/run/attempt.model-diagnostic-events.test.ts +++ b/src/agents/pi-embedded-runner/run/attempt.model-diagnostic-events.test.ts @@ -1,4 +1,4 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { onInternalDiagnosticEvent, diff --git a/src/agents/pi-embedded-runner/run/attempt.model-diagnostic-events.ts b/src/agents/pi-embedded-runner/run/attempt.model-diagnostic-events.ts index 487f8320b620..1a1fbf0a5506 100644 --- a/src/agents/pi-embedded-runner/run/attempt.model-diagnostic-events.ts +++ b/src/agents/pi-embedded-runner/run/attempt.model-diagnostic-events.ts @@ -1,4 +1,4 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import { fireAndForgetBoundedHook } from "../../../hooks/fire-and-forget.js"; import { diagnosticErrorCategory, diff --git a/src/agents/pi-embedded-runner/run/attempt.sessions-yield.ts b/src/agents/pi-embedded-runner/run/attempt.sessions-yield.ts index 52b20b820906..0f4a34279090 100644 --- a/src/agents/pi-embedded-runner/run/attempt.sessions-yield.ts +++ b/src/agents/pi-embedded-runner/run/attempt.sessions-yield.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { log } from "../logger.js"; const SESSIONS_YIELD_INTERRUPT_CUSTOM_TYPE = "openclaw.sessions_yield_interrupt"; diff --git a/src/agents/pi-embedded-runner/run/attempt.spawn-workspace.context-engine.test.ts b/src/agents/pi-embedded-runner/run/attempt.spawn-workspace.context-engine.test.ts index 15f44dff3873..891e36f6364b 100644 --- a/src/agents/pi-embedded-runner/run/attempt.spawn-workspace.context-engine.test.ts +++ b/src/agents/pi-embedded-runner/run/attempt.spawn-workspace.context-engine.test.ts @@ -1,7 +1,7 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import type { OpenClawConfig } from "../../../config/types.js"; import { buildMemorySystemPromptAddition } from "../../../context-engine/delegate.js"; diff --git a/src/agents/pi-embedded-runner/run/attempt.spawn-workspace.context-injection.test.ts b/src/agents/pi-embedded-runner/run/attempt.spawn-workspace.context-injection.test.ts index 233a2a6975d6..f6e2e8fa28d9 100644 --- a/src/agents/pi-embedded-runner/run/attempt.spawn-workspace.context-injection.test.ts +++ b/src/agents/pi-embedded-runner/run/attempt.spawn-workspace.context-injection.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 { filterHeartbeatPairs } from "../../../auto-reply/heartbeat-filter.js"; import { HEARTBEAT_PROMPT } from "../../../auto-reply/heartbeat.js"; diff --git a/src/agents/pi-embedded-runner/run/attempt.spawn-workspace.test-support.ts b/src/agents/pi-embedded-runner/run/attempt.spawn-workspace.test-support.ts index 40c60df18968..326ea9d5bbc7 100644 --- a/src/agents/pi-embedded-runner/run/attempt.spawn-workspace.test-support.ts +++ b/src/agents/pi-embedded-runner/run/attempt.spawn-workspace.test-support.ts @@ -1,8 +1,8 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { expect, vi, type Mock } from "vitest"; import type { AssembleResult, @@ -279,7 +279,7 @@ vi.mock("../../../trajectory/metadata.js", () => ({ buildTrajectoryRunMetadata: () => ({ source: "test" }), })); -vi.mock("@mariozechner/pi-coding-agent", () => { +vi.mock("@earendil-works/pi-coding-agent", () => { function AuthStorage() {} class DefaultResourceLoader { async reload() {} diff --git a/src/agents/pi-embedded-runner/run/attempt.stop-reason-recovery.test.ts b/src/agents/pi-embedded-runner/run/attempt.stop-reason-recovery.test.ts index 9d848bcd05b6..1bd28bf1df31 100644 --- a/src/agents/pi-embedded-runner/run/attempt.stop-reason-recovery.test.ts +++ b/src/agents/pi-embedded-runner/run/attempt.stop-reason-recovery.test.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { createAssistantMessageEventStream, type Context, type Model } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { createAssistantMessageEventStream, type Context, type Model } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { wrapStreamFnHandleSensitiveStopReason } from "./attempt.stop-reason-recovery.js"; diff --git a/src/agents/pi-embedded-runner/run/attempt.stop-reason-recovery.ts b/src/agents/pi-embedded-runner/run/attempt.stop-reason-recovery.ts index d11627fc93ed..792a89612284 100644 --- a/src/agents/pi-embedded-runner/run/attempt.stop-reason-recovery.ts +++ b/src/agents/pi-embedded-runner/run/attempt.stop-reason-recovery.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { createAssistantMessageEventStream, streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { createAssistantMessageEventStream, streamSimple } from "@earendil-works/pi-ai"; import { formatErrorMessage } from "../../../infra/errors.js"; import { createStreamIteratorWrapper } from "../../stream-iterator-wrapper.js"; import { buildStreamErrorAssistantMessage } from "../../stream-message-shared.js"; diff --git a/src/agents/pi-embedded-runner/run/attempt.test.ts b/src/agents/pi-embedded-runner/run/attempt.test.ts index 427dea289cae..34e5c59b5a3d 100644 --- a/src/agents/pi-embedded-runner/run/attempt.test.ts +++ b/src/agents/pi-embedded-runner/run/attempt.test.ts @@ -1,4 +1,4 @@ -import { streamSimple } from "@mariozechner/pi-ai"; +import { streamSimple } from "@earendil-works/pi-ai"; import { describe, expect, it, vi } from "vitest"; vi.mock("../context-engine-capabilities.js", () => ({ diff --git a/src/agents/pi-embedded-runner/run/attempt.tool-call-argument-repair.ts b/src/agents/pi-embedded-runner/run/attempt.tool-call-argument-repair.ts index a63e44303f9c..896112a8e7ca 100644 --- a/src/agents/pi-embedded-runner/run/attempt.tool-call-argument-repair.ts +++ b/src/agents/pi-embedded-runner/run/attempt.tool-call-argument-repair.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { streamSimple } from "@earendil-works/pi-ai"; import { extractBalancedJsonPrefix } from "../../../shared/balanced-json.js"; import { normalizeProviderId } from "../../model-selection.js"; import { log } from "../logger.js"; diff --git a/src/agents/pi-embedded-runner/run/attempt.tool-call-normalization.test.ts b/src/agents/pi-embedded-runner/run/attempt.tool-call-normalization.test.ts index 4270a447fc68..9a7b9e9b6fda 100644 --- a/src/agents/pi-embedded-runner/run/attempt.tool-call-normalization.test.ts +++ b/src/agents/pi-embedded-runner/run/attempt.tool-call-normalization.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 { sanitizeReplayToolCallIdsForStream } from "./attempt.tool-call-normalization.js"; diff --git a/src/agents/pi-embedded-runner/run/attempt.tool-call-normalization.ts b/src/agents/pi-embedded-runner/run/attempt.tool-call-normalization.ts index c5e890a02ac5..a0541fdfa093 100644 --- a/src/agents/pi-embedded-runner/run/attempt.tool-call-normalization.ts +++ b/src/agents/pi-embedded-runner/run/attempt.tool-call-normalization.ts @@ -1,5 +1,5 @@ -import type { AgentMessage, StreamFn } from "@mariozechner/pi-agent-core"; -import { streamSimple } from "@mariozechner/pi-ai"; +import type { AgentMessage, StreamFn } from "@earendil-works/pi-agent-core"; +import { streamSimple } from "@earendil-works/pi-ai"; import { visitObjectContentBlocks } from "../../../shared/message-content-blocks.js"; import { normalizeLowercaseStringOrEmpty } from "../../../shared/string-coerce.js"; import { validateAnthropicTurns, validateGeminiTurns } from "../../pi-embedded-helpers.js"; diff --git a/src/agents/pi-embedded-runner/run/attempt.ts b/src/agents/pi-embedded-runner/run/attempt.ts index 47a602ca5112..0412561dcedc 100644 --- a/src/agents/pi-embedded-runner/run/attempt.ts +++ b/src/agents/pi-embedded-runner/run/attempt.ts @@ -1,12 +1,12 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { createAgentSession, DefaultResourceLoader, SessionManager, -} from "@mariozechner/pi-coding-agent"; +} from "@earendil-works/pi-coding-agent"; import { isAcpRuntimeSpawnAvailable } from "../../../acp/runtime/availability.js"; import { buildHierarchyReinforcementMessage } from "../../../auto-reply/handoff-summarizer.js"; import { filterHeartbeatPairs } from "../../../auto-reply/heartbeat-filter.js"; diff --git a/src/agents/pi-embedded-runner/run/auth-controller.test.ts b/src/agents/pi-embedded-runner/run/auth-controller.test.ts index c786dfbbc315..49752379b6be 100644 --- a/src/agents/pi-embedded-runner/run/auth-controller.test.ts +++ b/src/agents/pi-embedded-runner/run/auth-controller.test.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { beforeEach, describe, expect, it, vi, type Mock } from "vitest"; import type { AuthProfileStore } from "../../auth-profiles.js"; import type { RuntimeAuthState } from "./helpers.js"; diff --git a/src/agents/pi-embedded-runner/run/auth-controller.ts b/src/agents/pi-embedded-runner/run/auth-controller.ts index 00c0752381f1..055ae8c54c03 100644 --- a/src/agents/pi-embedded-runner/run/auth-controller.ts +++ b/src/agents/pi-embedded-runner/run/auth-controller.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import type { ThinkLevel } from "../../../auto-reply/thinking.js"; import { formatErrorMessage } from "../../../infra/errors.js"; import { prepareProviderRuntimeAuth } from "../../../plugins/provider-runtime.js"; diff --git a/src/agents/pi-embedded-runner/run/compaction-timeout.ts b/src/agents/pi-embedded-runner/run/compaction-timeout.ts index 97e1dfff4e3f..4f8691e8fd08 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/helpers.test.ts b/src/agents/pi-embedded-runner/run/helpers.test.ts index f744042ae113..198729084276 100644 --- a/src/agents/pi-embedded-runner/run/helpers.test.ts +++ b/src/agents/pi-embedded-runner/run/helpers.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 { resolveFinalAssistantRawText, resolveFinalAssistantVisibleText } from "./helpers.js"; diff --git a/src/agents/pi-embedded-runner/run/helpers.ts b/src/agents/pi-embedded-runner/run/helpers.ts index 524a642c5cbd..7e8022348915 100644 --- a/src/agents/pi-embedded-runner/run/helpers.ts +++ b/src/agents/pi-embedded-runner/run/helpers.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import type { OpenClawConfig } from "../../../config/types.openclaw.js"; import { generateSecureToken } from "../../../infra/secure-random.js"; import { extractAssistantTextForPhase } from "../../../shared/chat-message-content.js"; diff --git a/src/agents/pi-embedded-runner/run/history-image-prune.test.ts b/src/agents/pi-embedded-runner/run/history-image-prune.test.ts index 1149007efa99..86cce22fb7c0 100644 --- a/src/agents/pi-embedded-runner/run/history-image-prune.test.ts +++ b/src/agents/pi-embedded-runner/run/history-image-prune.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 { castAgentMessage } from "../../test-helpers/agent-message-fixtures.js"; import { diff --git a/src/agents/pi-embedded-runner/run/history-image-prune.ts b/src/agents/pi-embedded-runner/run/history-image-prune.ts index 20cc6fbf9da7..bdeefd8d1a77 100644 --- a/src/agents/pi-embedded-runner/run/history-image-prune.ts +++ b/src/agents/pi-embedded-runner/run/history-image-prune.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; export const PRUNED_HISTORY_IMAGE_MARKER = "[image data removed - already processed by model]"; export const PRUNED_HISTORY_MEDIA_REFERENCE_MARKER = diff --git a/src/agents/pi-embedded-runner/run/images.ts b/src/agents/pi-embedded-runner/run/images.ts index 66ad521ae3ef..6e030e5e5e5a 100644 --- a/src/agents/pi-embedded-runner/run/images.ts +++ b/src/agents/pi-embedded-runner/run/images.ts @@ -1,5 +1,5 @@ import path from "node:path"; -import type { ImageContent } from "@mariozechner/pi-ai"; +import type { ImageContent } from "@earendil-works/pi-ai"; import { formatErrorMessage } from "../../../infra/errors.js"; import { assertNoWindowsNetworkPath, safeFileURLToPath } from "../../../infra/local-file-access.js"; import type { PromptImageOrderEntry } from "../../../media/prompt-image-order.js"; diff --git a/src/agents/pi-embedded-runner/run/incomplete-turn.ts b/src/agents/pi-embedded-runner/run/incomplete-turn.ts index 601a6b68a18a..f4f0bfeea136 100644 --- a/src/agents/pi-embedded-runner/run/incomplete-turn.ts +++ b/src/agents/pi-embedded-runner/run/incomplete-turn.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { isSilentReplyPayloadText, isSilentReplyText, diff --git a/src/agents/pi-embedded-runner/run/llm-idle-timeout.ts b/src/agents/pi-embedded-runner/run/llm-idle-timeout.ts index bb68f59a47e8..4409e311a9a4 100644 --- a/src/agents/pi-embedded-runner/run/llm-idle-timeout.ts +++ b/src/agents/pi-embedded-runner/run/llm-idle-timeout.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { streamSimple } from "@earendil-works/pi-ai"; import { DEFAULT_LLM_IDLE_TIMEOUT_SECONDS } from "../../../config/agent-timeout-defaults.js"; import type { OpenClawConfig } from "../../../config/types.openclaw.js"; import { createStreamIteratorWrapper } from "../../stream-iterator-wrapper.js"; diff --git a/src/agents/pi-embedded-runner/run/params.ts b/src/agents/pi-embedded-runner/run/params.ts index 19477fb352db..5329c53e3f68 100644 --- a/src/agents/pi-embedded-runner/run/params.ts +++ b/src/agents/pi-embedded-runner/run/params.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 type { PartialReplyPayload, SourceReplyDeliveryMode, diff --git a/src/agents/pi-embedded-runner/run/payloads.errors.test.ts b/src/agents/pi-embedded-runner/run/payloads.errors.test.ts index 054958e1f367..2716c4b4ec2b 100644 --- a/src/agents/pi-embedded-runner/run/payloads.errors.test.ts +++ b/src/agents/pi-embedded-runner/run/payloads.errors.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.test.ts b/src/agents/pi-embedded-runner/run/payloads.test.ts index e4f9111384e9..e18527536be6 100644 --- a/src/agents/pi-embedded-runner/run/payloads.test.ts +++ b/src/agents/pi-embedded-runner/run/payloads.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 { buildPayloads, diff --git a/src/agents/pi-embedded-runner/run/payloads.ts b/src/agents/pi-embedded-runner/run/payloads.ts index 3ad0d565652e..50024860dc1d 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 { hasOutboundReplyContent } from "openclaw/plugin-sdk/reply-payload"; import { createHeartbeatToolResponsePayload, diff --git a/src/agents/pi-embedded-runner/run/preemptive-compaction.test.ts b/src/agents/pi-embedded-runner/run/preemptive-compaction.test.ts index 67bdb2cf3834..45947c80d366 100644 --- a/src/agents/pi-embedded-runner/run/preemptive-compaction.test.ts +++ b/src/agents/pi-embedded-runner/run/preemptive-compaction.test.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { beforeAll, describe, expect, it, vi } from "vitest"; import "../../test-helpers/pi-coding-agent-token-mock.js"; import { estimateToolResultReductionPotential } from "../tool-result-truncation.js"; diff --git a/src/agents/pi-embedded-runner/run/preemptive-compaction.ts b/src/agents/pi-embedded-runner/run/preemptive-compaction.ts index 9cc1ac334bc4..a6486727736d 100644 --- a/src/agents/pi-embedded-runner/run/preemptive-compaction.ts +++ b/src/agents/pi-embedded-runner/run/preemptive-compaction.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import { estimateTokens } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import { estimateTokens } from "@earendil-works/pi-coding-agent"; import { SAFETY_MARGIN, estimateMessagesTokens } from "../../compaction.js"; import { MIN_PROMPT_BUDGET_RATIO, diff --git a/src/agents/pi-embedded-runner/run/stream-wrapper.ts b/src/agents/pi-embedded-runner/run/stream-wrapper.ts index 2273873d6db8..7224cf511465 100644 --- a/src/agents/pi-embedded-runner/run/stream-wrapper.ts +++ b/src/agents/pi-embedded-runner/run/stream-wrapper.ts @@ -1,4 +1,4 @@ -import { streamSimple } from "@mariozechner/pi-ai"; +import { streamSimple } from "@earendil-works/pi-ai"; import { createStreamIteratorWrapper } from "../../stream-iterator-wrapper.js"; type SimpleStream = ReturnType; diff --git a/src/agents/pi-embedded-runner/run/types.ts b/src/agents/pi-embedded-runner/run/types.ts index 0fced82fc4dc..f227548321b9 100644 --- a/src/agents/pi-embedded-runner/run/types.ts +++ b/src/agents/pi-embedded-runner/run/types.ts @@ -1,6 +1,6 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { Api, AssistantMessage, Model } from "@mariozechner/pi-ai"; -import type { AuthStorage, ModelRegistry } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { Api, AssistantMessage, Model } from "@earendil-works/pi-ai"; +import type { AuthStorage, ModelRegistry } from "@earendil-works/pi-coding-agent"; import type { HeartbeatToolResponse } from "../../../auto-reply/heartbeat-tool-response.js"; import type { ThinkLevel } from "../../../auto-reply/thinking.js"; import type { SessionSystemPromptReport } from "../../../config/sessions/types.js"; diff --git a/src/agents/pi-embedded-runner/sanitize-session-history.tool-result-details.test.ts b/src/agents/pi-embedded-runner/sanitize-session-history.tool-result-details.test.ts index da6fbe33d068..6cc039931542 100644 --- a/src/agents/pi-embedded-runner/sanitize-session-history.tool-result-details.test.ts +++ b/src/agents/pi-embedded-runner/sanitize-session-history.tool-result-details.test.ts @@ -1,6 +1,6 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { ToolResultMessage, UserMessage } from "@mariozechner/pi-ai"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { ToolResultMessage, UserMessage } from "@earendil-works/pi-ai"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import { describe, expect, it, vi } from "vitest"; import { makeAgentAssistantMessage } from "../test-helpers/agent-message-fixtures.js"; import { sanitizeSessionHistory } from "./replay-history.js"; diff --git a/src/agents/pi-embedded-runner/stream-payload-utils.ts b/src/agents/pi-embedded-runner/stream-payload-utils.ts index 9fe634b7932c..1d102cb87733 100644 --- a/src/agents/pi-embedded-runner/stream-payload-utils.ts +++ b/src/agents/pi-embedded-runner/stream-payload-utils.ts @@ -1,4 +1,4 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; export function streamWithPayloadPatch( underlying: StreamFn, diff --git a/src/agents/pi-embedded-runner/stream-resolution.test.ts b/src/agents/pi-embedded-runner/stream-resolution.test.ts index b0ac7d3312d3..3b20605c0aee 100644 --- a/src/agents/pi-embedded-runner/stream-resolution.test.ts +++ b/src/agents/pi-embedded-runner/stream-resolution.test.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { getApiProvider, streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { getApiProvider, streamSimple } from "@earendil-works/pi-ai"; import { afterEach, describe, expect, it, vi } from "vitest"; import * as providerTransportStream from "../provider-transport-stream.js"; import { SYSTEM_PROMPT_CACHE_BOUNDARY } from "../system-prompt-cache-boundary.js"; diff --git a/src/agents/pi-embedded-runner/stream-resolution.ts b/src/agents/pi-embedded-runner/stream-resolution.ts index 56aa2df2991b..ec2f5cc585cb 100644 --- a/src/agents/pi-embedded-runner/stream-resolution.ts +++ b/src/agents/pi-embedded-runner/stream-resolution.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { getApiProvider, streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { getApiProvider, streamSimple } from "@earendil-works/pi-ai"; import { createAnthropicVertexStreamFnForModel } from "../anthropic-vertex-stream.js"; import { createBoundaryAwareStreamFnForModel } from "../provider-transport-stream.js"; import { stripSystemPromptCacheBoundary } from "../system-prompt-cache-boundary.js"; diff --git a/src/agents/pi-embedded-runner/system-prompt.test.ts b/src/agents/pi-embedded-runner/system-prompt.test.ts index 5cd7cd2ca974..83a5811c6c76 100644 --- a/src/agents/pi-embedded-runner/system-prompt.test.ts +++ b/src/agents/pi-embedded-runner/system-prompt.test.ts @@ -1,4 +1,4 @@ -import type { AgentSession } from "@mariozechner/pi-coding-agent"; +import type { AgentSession } from "@earendil-works/pi-coding-agent"; import { afterEach, describe, expect, it, vi } from "vitest"; import { clearMemoryPluginState, registerMemoryPromptSection } from "../../plugins/memory-state.js"; import { diff --git a/src/agents/pi-embedded-runner/system-prompt.ts b/src/agents/pi-embedded-runner/system-prompt.ts index d3ebe7dec88b..24934a9afba5 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 { SourceReplyDeliveryMode } from "../../auto-reply/get-reply-options.types.js"; import type { SubagentDelegationMode } from "../../config/types.agent-defaults.js"; import type { MemoryCitationsMode } from "../../config/types.memory.js"; diff --git a/src/agents/pi-embedded-runner/thinking.test.ts b/src/agents/pi-embedded-runner/thinking.test.ts index 095e0505f39f..7efee4eec8b2 100644 --- a/src/agents/pi-embedded-runner/thinking.test.ts +++ b/src/agents/pi-embedded-runner/thinking.test.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import { createAssistantMessageEventStream } from "@mariozechner/pi-ai"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import { createAssistantMessageEventStream } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { castAgentMessage, castAgentMessages } from "../test-helpers/agent-message-fixtures.js"; import { diff --git a/src/agents/pi-embedded-runner/thinking.ts b/src/agents/pi-embedded-runner/thinking.ts index 03d5ad79d110..bb7f106882b7 100644 --- a/src/agents/pi-embedded-runner/thinking.ts +++ b/src/agents/pi-embedded-runner/thinking.ts @@ -1,5 +1,5 @@ -import type { AgentMessage, StreamFn } from "@mariozechner/pi-agent-core"; -import { createAssistantMessageEventStream } from "@mariozechner/pi-ai"; +import type { AgentMessage, StreamFn } from "@earendil-works/pi-agent-core"; +import { createAssistantMessageEventStream } from "@earendil-works/pi-ai"; import { formatErrorMessage } from "../../infra/errors.js"; import { log } from "./logger.js"; diff --git a/src/agents/pi-embedded-runner/tool-call-argument-decoding.ts b/src/agents/pi-embedded-runner/tool-call-argument-decoding.ts index acb67c480dbf..b61cf2150a03 100644 --- a/src/agents/pi-embedded-runner/tool-call-argument-decoding.ts +++ b/src/agents/pi-embedded-runner/tool-call-argument-decoding.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { streamSimple } from "@earendil-works/pi-ai"; import { visitObjectContentBlocks } from "../../shared/message-content-blocks.js"; const HTML_ENTITY_RE = /&(?:amp|lt|gt|quot|apos|#39|#x[0-9a-f]+|#\d+);/i; diff --git a/src/agents/pi-embedded-runner/tool-name-allowlist.ts b/src/agents/pi-embedded-runner/tool-name-allowlist.ts index 25ffb5d7b472..da8b28f7a267 100644 --- a/src/agents/pi-embedded-runner/tool-name-allowlist.ts +++ b/src/agents/pi-embedded-runner/tool-name-allowlist.ts @@ -1,4 +1,4 @@ -import type { AgentTool } from "@mariozechner/pi-agent-core"; +import type { AgentTool } from "@earendil-works/pi-agent-core"; import type { ClientToolDefinition } from "./run/params.js"; /** diff --git a/src/agents/pi-embedded-runner/tool-result-char-estimator.test.ts b/src/agents/pi-embedded-runner/tool-result-char-estimator.test.ts index de64b40df95d..6675b392c2db 100644 --- a/src/agents/pi-embedded-runner/tool-result-char-estimator.test.ts +++ b/src/agents/pi-embedded-runner/tool-result-char-estimator.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 { createMessageCharEstimateCache, diff --git a/src/agents/pi-embedded-runner/tool-result-char-estimator.ts b/src/agents/pi-embedded-runner/tool-result-char-estimator.ts index 0b836a12f3b5..6928bf3e7e75 100644 --- a/src/agents/pi-embedded-runner/tool-result-char-estimator.ts +++ b/src/agents/pi-embedded-runner/tool-result-char-estimator.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; export const CHARS_PER_TOKEN_ESTIMATE = 4; export const TOOL_RESULT_CHARS_PER_TOKEN_ESTIMATE = 2; diff --git a/src/agents/pi-embedded-runner/tool-result-context-guard.test.ts b/src/agents/pi-embedded-runner/tool-result-context-guard.test.ts index 10eca7eacfca..1ebb4fb373fb 100644 --- a/src/agents/pi-embedded-runner/tool-result-context-guard.test.ts +++ b/src/agents/pi-embedded-runner/tool-result-context-guard.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, vi } from "vitest"; import type { ContextEngine } from "../../context-engine/types.js"; import { castAgentMessage } from "../test-helpers/agent-message-fixtures.js"; 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 baace4452552..6e45144fb99a 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"; import type { ContextEngine, ContextEngineRuntimeContext } from "../../context-engine/types.js"; import { CONTEXT_LIMIT_TRUNCATION_NOTICE, diff --git a/src/agents/pi-embedded-runner/tool-result-truncation.test.ts b/src/agents/pi-embedded-runner/tool-result-truncation.test.ts index 4a9265cc19de..f44f6b9c3633 100644 --- a/src/agents/pi-embedded-runner/tool-result-truncation.test.ts +++ b/src/agents/pi-embedded-runner/tool-result-truncation.test.ts @@ -1,9 +1,9 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { AssistantMessage, ToolResultMessage, UserMessage } from "@mariozechner/pi-ai"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { AssistantMessage, ToolResultMessage, UserMessage } from "@earendil-works/pi-ai"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { onSessionTranscriptUpdate } from "../../sessions/transcript-events.js"; import { makeAgentAssistantMessage } from "../test-helpers/agent-message-fixtures.js"; diff --git a/src/agents/pi-embedded-runner/tool-result-truncation.ts b/src/agents/pi-embedded-runner/tool-result-truncation.ts index 34dda5d79c32..d15d2b9217bc 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 type { OpenClawConfig } from "../../config/types.openclaw.js"; import { formatErrorMessage } from "../../infra/errors.js"; import { emitSessionTranscriptUpdate } from "../../sessions/transcript-events.js"; diff --git a/src/agents/pi-embedded-runner/tool-schema-runtime.ts b/src/agents/pi-embedded-runner/tool-schema-runtime.ts index 91ec528588ec..16793dc60efb 100644 --- a/src/agents/pi-embedded-runner/tool-schema-runtime.ts +++ b/src/agents/pi-embedded-runner/tool-schema-runtime.ts @@ -1,4 +1,4 @@ -import type { AgentTool } from "@mariozechner/pi-agent-core"; +import type { AgentTool } from "@earendil-works/pi-agent-core"; import type { TSchema } from "typebox"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; import type { ProviderRuntimePluginHandle } from "../../plugins/provider-hook-runtime.js"; diff --git a/src/agents/pi-embedded-runner/tool-split.ts b/src/agents/pi-embedded-runner/tool-split.ts index e4dd08b28b3e..59a82babfc2e 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, diff --git a/src/agents/pi-embedded-runner/transcript-file-state.ts b/src/agents/pi-embedded-runner/transcript-file-state.ts index e9f6df6db3ba..7d9be4e1d96a 100644 --- a/src/agents/pi-embedded-runner/transcript-file-state.ts +++ b/src/agents/pi-embedded-runner/transcript-file-state.ts @@ -10,7 +10,7 @@ import { type SessionContext, type SessionEntry, type SessionHeader, -} from "@mariozechner/pi-coding-agent"; +} from "@earendil-works/pi-coding-agent"; import { appendRegularFile } from "../../infra/fs-safe.js"; import { privateFileStore } from "../../infra/private-file-store.js"; diff --git a/src/agents/pi-embedded-runner/transcript-rewrite.test.ts b/src/agents/pi-embedded-runner/transcript-rewrite.test.ts index 2721185b574d..7ca70777136f 100644 --- a/src/agents/pi-embedded-runner/transcript-rewrite.test.ts +++ b/src/agents/pi-embedded-runner/transcript-rewrite.test.ts @@ -1,8 +1,8 @@ import fs from "node:fs/promises"; 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 { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { buildSessionWriteLockModuleMock } from "../../test-utils/session-write-lock-module-mock.js"; diff --git a/src/agents/pi-embedded-runner/transcript-rewrite.ts b/src/agents/pi-embedded-runner/transcript-rewrite.ts index 9040e4efbe0c..111866080601 100644 --- a/src/agents/pi-embedded-runner/transcript-rewrite.ts +++ b/src/agents/pi-embedded-runner/transcript-rewrite.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 type { TranscriptRewriteReplacement, TranscriptRewriteRequest, diff --git a/src/agents/pi-embedded-runner/usage-reporting.test.ts b/src/agents/pi-embedded-runner/usage-reporting.test.ts index ed08c4ac1c2e..ffcd4f6a6ce6 100644 --- a/src/agents/pi-embedded-runner/usage-reporting.test.ts +++ b/src/agents/pi-embedded-runner/usage-reporting.test.ts @@ -1,4 +1,4 @@ -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 { makeAttemptResult } from "./run.overflow-compaction.fixture.js"; import { diff --git a/src/agents/pi-embedded-runner/utils.ts b/src/agents/pi-embedded-runner/utils.ts index e55e6103a119..711df4019c9e 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-runner/zai-stream-wrappers.ts b/src/agents/pi-embedded-runner/zai-stream-wrappers.ts index 6fb2ece7f34f..c98ac5ae0e14 100644 --- a/src/agents/pi-embedded-runner/zai-stream-wrappers.ts +++ b/src/agents/pi-embedded-runner/zai-stream-wrappers.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { streamSimple } from "@earendil-works/pi-ai"; import { streamWithPayloadPatch } from "./stream-payload-utils.js"; /** diff --git a/src/agents/pi-embedded-subscribe.e2e-harness.ts b/src/agents/pi-embedded-subscribe.e2e-harness.ts index 12138fefbcd6..2359928de38f 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 6a35f90c03c8..4d7106d094bb 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 d91ea349c510..5f1122d1081a 100644 --- a/src/agents/pi-embedded-subscribe.handlers.messages.ts +++ b/src/agents/pi-embedded-subscribe.handlers.messages.ts @@ -1,5 +1,5 @@ -import type { AgentEvent, AgentMessage } from "@mariozechner/pi-agent-core"; -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AgentEvent, AgentMessage } from "@earendil-works/pi-agent-core"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload"; import { parseReplyDirectives, diff --git a/src/agents/pi-embedded-subscribe.handlers.tools.test.ts b/src/agents/pi-embedded-subscribe.handlers.tools.test.ts index cb3506cd3b7c..521be4a30daa 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 { afterEach, describe, expect, it, vi } from "vitest"; import { onAgentEvent as registerAgentEventListener, diff --git a/src/agents/pi-embedded-subscribe.handlers.tools.ts b/src/agents/pi-embedded-subscribe.handlers.tools.ts index 29001e81389c..a1b79bd3921c 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 { HEARTBEAT_RESPONSE_TOOL_NAME, normalizeHeartbeatToolResponse, diff --git a/src/agents/pi-embedded-subscribe.handlers.types.ts b/src/agents/pi-embedded-subscribe.handlers.types.ts index 15ed4a58eab8..72f5da730054 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 { HeartbeatToolResponse } from "../auto-reply/heartbeat-tool-response.js"; import type { ReplyDirectiveParseResult } from "../auto-reply/reply/reply-directives.js"; import type { ReasoningLevel } from "../auto-reply/thinking.js"; diff --git a/src/agents/pi-embedded-subscribe.reply-tags.test.ts b/src/agents/pi-embedded-subscribe.reply-tags.test.ts index a76db6022918..961ec5571b05 100644 --- a/src/agents/pi-embedded-subscribe.reply-tags.test.ts +++ b/src/agents/pi-embedded-subscribe.reply-tags.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.test.ts b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.does-not-emit-duplicate-block-replies-text.test.ts index 1639dae622aa..96d68951ce9a 100644 --- a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.does-not-emit-duplicate-block-replies-text.test.ts +++ b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.does-not-emit-duplicate-block-replies-text.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.test.ts b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.emits-block-replies-text-end-does-not.test.ts index 7c61a211771a..2f6ffd4133cd 100644 --- a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.emits-block-replies-text-end-does-not.test.ts +++ b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.emits-block-replies-text-end-does-not.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.test.ts b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.emits-reasoning-as-separate-message-enabled.test.ts index 82a6e375b8e1..ea7bb228cdd1 100644 --- a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.emits-reasoning-as-separate-message-enabled.test.ts +++ b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.emits-reasoning-as-separate-message-enabled.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.test.ts b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.filters-final-suppresses-output-without-start-tag.test.ts index 2ca639d30e7c..1fe7b2c596d0 100644 --- a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.filters-final-suppresses-output-without-start-tag.test.ts +++ b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.filters-final-suppresses-output-without-start-tag.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.test.ts b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.splits-long-single-line-fenced-blocks-reopen.test.ts index 057898f7f4ce..803463de96a7 100644 --- a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.splits-long-single-line-fenced-blocks-reopen.test.ts +++ b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.splits-long-single-line-fenced-blocks-reopen.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.test.ts b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.subscribeembeddedpisession.test.ts index c7994277ea3e..f9fd1cae6e9f 100644 --- a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.subscribeembeddedpisession.test.ts +++ b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.subscribeembeddedpisession.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 * as agentEvents from "../infra/agent-events.js"; import { diff --git a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.suppresses-commentary-phase-output.test.ts b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.suppresses-commentary-phase-output.test.ts index 675ed9d8d50a..ab25c4ad7b27 100644 --- a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.suppresses-commentary-phase-output.test.ts +++ b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.suppresses-commentary-phase-output.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 { createSubscribedSessionHarness } from "./pi-embedded-subscribe.e2e-harness.js"; diff --git a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.suppresses-message-end-block-replies-message-tool.test.ts b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.suppresses-message-end-block-replies-message-tool.test.ts index f050a37032bc..3c2f0ddd7f16 100644 --- a/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.suppresses-message-end-block-replies-message-tool.test.ts +++ b/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.suppresses-message-end-block-replies-message-tool.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.tool-text-diagnostics.ts b/src/agents/pi-embedded-subscribe.tool-text-diagnostics.ts index 5f64d828563c..062359ad30c8 100644 --- a/src/agents/pi-embedded-subscribe.tool-text-diagnostics.ts +++ b/src/agents/pi-embedded-subscribe.tool-text-diagnostics.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { extractTextFromChatContent } from "../shared/chat-content.js"; import { normalizeOptionalString } from "../shared/string-coerce.js"; import { detectToolCallShapedText } from "../shared/text/tool-call-shaped-text.js"; diff --git a/src/agents/pi-embedded-subscribe.ts b/src/agents/pi-embedded-subscribe.ts index be2524f5e2c5..6a3ae9fe9555 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 { setReplyPayloadMetadata } from "../auto-reply/reply-payload.js"; import { parseReplyDirectives } from "../auto-reply/reply/reply-directives.js"; import { createStreamingDirectiveAccumulator } from "../auto-reply/reply/streaming-directives.js"; diff --git a/src/agents/pi-embedded-subscribe.types.ts b/src/agents/pi-embedded-subscribe.types.ts index 3abb563fda71..265b4f34193d 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 { PartialReplyPayload } from "../auto-reply/get-reply-options.types.js"; import type { ReplyPayload } from "../auto-reply/reply-payload.js"; import type { ReasoningLevel, ThinkLevel, VerboseLevel } from "../auto-reply/thinking.js"; diff --git a/src/agents/pi-embedded-utils.test.ts b/src/agents/pi-embedded-utils.test.ts index 2283d68e67ba..9e46224bfcd6 100644 --- a/src/agents/pi-embedded-utils.test.ts +++ b/src/agents/pi-embedded-utils.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 59bb2514e6dd..ef2fa66d812f 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 { normalizeAssistantPhase, diff --git a/src/agents/pi-hooks/compaction-safeguard-runtime.ts b/src/agents/pi-hooks/compaction-safeguard-runtime.ts index 20f172e50d8b..545c05ec0b03 100644 --- a/src/agents/pi-hooks/compaction-safeguard-runtime.ts +++ b/src/agents/pi-hooks/compaction-safeguard-runtime.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import type { AgentCompactionIdentifierPolicy } from "../../config/types.agent-defaults.js"; import { createSessionManagerRuntimeRegistry } from "./session-manager-runtime-registry.js"; diff --git a/src/agents/pi-hooks/compaction-safeguard.test.ts b/src/agents/pi-hooks/compaction-safeguard.test.ts index 13db40fe5f4d..1469fb2e5bdc 100644 --- a/src/agents/pi-hooks/compaction-safeguard.test.ts +++ b/src/agents/pi-hooks/compaction-safeguard.test.ts @@ -1,9 +1,9 @@ import fs from "node:fs"; import os from "node:os"; import path from "node:path"; -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { Api, Model } from "@mariozechner/pi-ai"; -import type { ExtensionAPI, ExtensionContext } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { Api, Model } from "@earendil-works/pi-ai"; +import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import type { OpenClawConfig } from "../../config/config.js"; import { diff --git a/src/agents/pi-hooks/compaction-safeguard.ts b/src/agents/pi-hooks/compaction-safeguard.ts index 789c8d82684f..59f087010660 100644 --- a/src/agents/pi-hooks/compaction-safeguard.ts +++ b/src/agents/pi-hooks/compaction-safeguard.ts @@ -1,7 +1,11 @@ import fs from "node:fs"; import path from "node:path"; -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { ExtensionAPI, ExtensionContext, FileOperations } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { + ExtensionAPI, + ExtensionContext, + FileOperations, +} from "@earendil-works/pi-coding-agent"; import { extractSections } from "../../auto-reply/reply/post-compaction-context.js"; import { openRootFile } from "../../infra/boundary-file-read.js"; import { formatErrorMessage } from "../../infra/errors.js"; diff --git a/src/agents/pi-hooks/context-pruning.test.ts b/src/agents/pi-hooks/context-pruning.test.ts index e45d15d2644f..6206d5086af3 100644 --- a/src/agents/pi-hooks/context-pruning.test.ts +++ b/src/agents/pi-hooks/context-pruning.test.ts @@ -1,6 +1,6 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { ToolResultMessage } from "@mariozechner/pi-ai"; -import type { ExtensionAPI, ExtensionContext } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { ToolResultMessage } from "@earendil-works/pi-ai"; +import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent"; import { describe, expect, it } from "vitest"; import { computeEffectiveSettings, diff --git a/src/agents/pi-hooks/context-pruning/extension.ts b/src/agents/pi-hooks/context-pruning/extension.ts index e8f979cc89ff..98c031f1bf59 100644 --- a/src/agents/pi-hooks/context-pruning/extension.ts +++ b/src/agents/pi-hooks/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-hooks/context-pruning/pruner.test.ts b/src/agents/pi-hooks/context-pruning/pruner.test.ts index cb64db13bb1a..d997ed245b17 100644 --- a/src/agents/pi-hooks/context-pruning/pruner.test.ts +++ b/src/agents/pi-hooks/context-pruning/pruner.test.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { ExtensionContext } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { ExtensionContext } from "@earendil-works/pi-coding-agent"; import { describe, expect, it } from "vitest"; import { pruneContextMessages } from "./pruner.js"; import { DEFAULT_CONTEXT_PRUNING_SETTINGS } from "./settings.js"; diff --git a/src/agents/pi-hooks/context-pruning/pruner.ts b/src/agents/pi-hooks/context-pruning/pruner.ts index c1b3c0411690..121bebc3ef5a 100644 --- a/src/agents/pi-hooks/context-pruning/pruner.ts +++ b/src/agents/pi-hooks/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 { CHARS_PER_TOKEN_ESTIMATE, estimateStringChars } from "../../../utils/cjk-chars.js"; import { dropThinkingBlocks } from "../../pi-embedded-runner/thinking.js"; import type { EffectiveContextPruningSettings } from "./settings.js"; diff --git a/src/agents/pi-mcp-style.cache.live.test.ts b/src/agents/pi-mcp-style.cache.live.test.ts index 20d9efef80c8..990ab9304d6d 100644 --- a/src/agents/pi-mcp-style.cache.live.test.ts +++ b/src/agents/pi-mcp-style.cache.live.test.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage, Tool } from "@mariozechner/pi-ai"; +import type { AssistantMessage, Tool } from "@earendil-works/pi-ai"; import { Type } from "typebox"; import { describe, expect, it } from "vitest"; import { diff --git a/src/agents/pi-model-discovery.compat.e2e.test.ts b/src/agents/pi-model-discovery.compat.e2e.test.ts index 815c51139d77..51054bf50cc4 100644 --- a/src/agents/pi-model-discovery.compat.e2e.test.ts +++ b/src/agents/pi-model-discovery.compat.e2e.test.ts @@ -2,12 +2,12 @@ import { afterEach, describe, expect, it, vi } from "vitest"; describe("pi-model-discovery module compatibility", () => { afterEach(() => { - vi.doUnmock("@mariozechner/pi-coding-agent"); + vi.doUnmock("@earendil-works/pi-coding-agent"); }); it("loads when InMemoryAuthStorageBackend is not exported", async () => { vi.resetModules(); - vi.doMock("@mariozechner/pi-coding-agent", () => { + vi.doMock("@earendil-works/pi-coding-agent", () => { function MockAuthStorage() {} function MockModelRegistry() {} diff --git a/src/agents/pi-model-discovery.ts b/src/agents/pi-model-discovery.ts index e40736d5acb2..9033297b3c18 100644 --- a/src/agents/pi-model-discovery.ts +++ b/src/agents/pi-model-discovery.ts @@ -1,10 +1,10 @@ import path from "node:path"; -import type { Api, Model } from "@mariozechner/pi-ai"; -import * as PiCodingAgent from "@mariozechner/pi-coding-agent"; +import type { Api, Model } from "@earendil-works/pi-ai"; +import * as PiCodingAgent from "@earendil-works/pi-coding-agent"; import type { AuthStorage as PiAuthStorage, ModelRegistry as PiModelRegistry, -} from "@mariozechner/pi-coding-agent"; +} from "@earendil-works/pi-coding-agent"; import { normalizeModelCompat } from "../plugins/provider-model-compat.js"; import { applyProviderResolvedModelCompatWithPlugins, diff --git a/src/agents/pi-project-settings-snapshot.ts b/src/agents/pi-project-settings-snapshot.ts index f3acc01da5b7..ba5ca097c910 100644 --- a/src/agents/pi-project-settings-snapshot.ts +++ b/src/agents/pi-project-settings-snapshot.ts @@ -1,5 +1,5 @@ import path from "node:path"; -import type { SettingsManager } from "@mariozechner/pi-coding-agent"; +import type { SettingsManager } from "@earendil-works/pi-coding-agent"; import { applyMergePatch } from "../config/merge-patch.js"; import type { OpenClawConfig } from "../config/types.openclaw.js"; import { readRootJsonObjectSync } from "../infra/json-files.js"; diff --git a/src/agents/pi-project-settings.ts b/src/agents/pi-project-settings.ts index 010bc9c8ceb8..9106f1836ddb 100644 --- a/src/agents/pi-project-settings.ts +++ b/src/agents/pi-project-settings.ts @@ -1,4 +1,4 @@ -import { SettingsManager } from "@mariozechner/pi-coding-agent"; +import { SettingsManager } from "@earendil-works/pi-coding-agent"; import type { OpenClawConfig } from "../config/types.openclaw.js"; import type { PluginMetadataSnapshot } from "../plugins/plugin-metadata-snapshot.js"; import { diff --git a/src/agents/pi-tool-definition-adapter.after-tool-call.fires-once.test.ts b/src/agents/pi-tool-definition-adapter.after-tool-call.fires-once.test.ts index eb02273e0533..a2518b98f6fc 100644 --- a/src/agents/pi-tool-definition-adapter.after-tool-call.fires-once.test.ts +++ b/src/agents/pi-tool-definition-adapter.after-tool-call.fires-once.test.ts @@ -6,7 +6,7 @@ * Regression guard for the double-fire bug fixed by removing the adapter-side * after_tool_call invocation (see PR #27283 → dedup in this fix). */ -import type { AgentTool } from "@mariozechner/pi-agent-core"; +import type { AgentTool } from "@earendil-works/pi-agent-core"; import { Type } from "typebox"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { createBaseToolHandlerState } from "./pi-tool-handler-state.test-helpers.js"; diff --git a/src/agents/pi-tool-definition-adapter.after-tool-call.test.ts b/src/agents/pi-tool-definition-adapter.after-tool-call.test.ts index 966d5a210786..a4fa8f2705b0 100644 --- a/src/agents/pi-tool-definition-adapter.after-tool-call.test.ts +++ b/src/agents/pi-tool-definition-adapter.after-tool-call.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 "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.logging.test.ts b/src/agents/pi-tool-definition-adapter.logging.test.ts index b259d14c792c..3750c4d56a5d 100644 --- a/src/agents/pi-tool-definition-adapter.logging.test.ts +++ b/src/agents/pi-tool-definition-adapter.logging.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 "typebox"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/src/agents/pi-tool-definition-adapter.test.ts b/src/agents/pi-tool-definition-adapter.test.ts index 03d3dd9ebed9..fe1d571445f2 100644 --- a/src/agents/pi-tool-definition-adapter.test.ts +++ b/src/agents/pi-tool-definition-adapter.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 "typebox"; import { describe, expect, it } from "vitest"; import type { ClientToolDefinition } from "./pi-embedded-runner/run/params.js"; diff --git a/src/agents/pi-tool-definition-adapter.ts b/src/agents/pi-tool-definition-adapter.ts index 56bfd49d99f3..512b483b271d 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 { redactToolDetail } from "../logging/redact.js"; import { isPlainObject } from "../utils.js"; diff --git a/src/agents/pi-tools.create-openclaw-coding-tools.adds-claude-style-aliases-schemas-without-dropping-g.test.ts b/src/agents/pi-tools.create-openclaw-coding-tools.adds-claude-style-aliases-schemas-without-dropping-g.test.ts index d68035c4187a..5ac7040965d4 100644 --- a/src/agents/pi-tools.create-openclaw-coding-tools.adds-claude-style-aliases-schemas-without-dropping-g.test.ts +++ b/src/agents/pi-tools.create-openclaw-coding-tools.adds-claude-style-aliases-schemas-without-dropping-g.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 "typebox"; import { describe, expect, it, vi } from "vitest"; import { createOpenClawReadTool, createSandboxedReadTool } from "./pi-tools.read.js"; diff --git a/src/agents/pi-tools.host-edit.ts b/src/agents/pi-tools.host-edit.ts index dbe6cb37c062..01578e87982e 100644 --- a/src/agents/pi-tools.host-edit.ts +++ b/src/agents/pi-tools.host-edit.ts @@ -1,5 +1,5 @@ import path from "node:path"; -import type { AgentToolResult, AgentToolUpdateCallback } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult, AgentToolUpdateCallback } from "@earendil-works/pi-agent-core"; import { expandHomePrefix, resolveOsHomeDir } from "../infra/home-dir.js"; import { getToolParamsRecord } from "./pi-tools.params.js"; import type { AnyAgentTool } from "./pi-tools.types.js"; diff --git a/src/agents/pi-tools.read.host-edit-access.test.ts b/src/agents/pi-tools.read.host-edit-access.test.ts index f1da476f8bcb..94ad2c58b29f 100644 --- a/src/agents/pi-tools.read.host-edit-access.test.ts +++ b/src/agents/pi-tools.read.host-edit-access.test.ts @@ -12,9 +12,9 @@ const mocks = vi.hoisted(() => ({ operations: undefined as CapturedEditOperations | undefined, })); -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/pi-tools.read.host-tilde-expansion.test.ts b/src/agents/pi-tools.read.host-tilde-expansion.test.ts index 3be885cd4632..441c16d43d39 100644 --- a/src/agents/pi-tools.read.host-tilde-expansion.test.ts +++ b/src/agents/pi-tools.read.host-tilde-expansion.test.ts @@ -19,9 +19,9 @@ const mocks = vi.hoisted(() => ({ writeOps: undefined as CapturedWriteOperations | undefined, })); -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/pi-tools.read.ts b/src/agents/pi-tools.read.ts index 9dee15413a7b..a71e3b18f5da 100644 --- a/src/agents/pi-tools.read.ts +++ b/src/agents/pi-tools.read.ts @@ -1,8 +1,8 @@ import fs from "node:fs/promises"; import path from "node:path"; import { URL } from "node:url"; -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 { isWindowsDrivePath } from "../infra/archive-path.js"; import { root as fsRoot, FsSafeError } from "../infra/fs-safe.js"; import { expandHomePrefix, resolveOsHomeDir } from "../infra/home-dir.js"; diff --git a/src/agents/pi-tools.safe-bins.test.ts b/src/agents/pi-tools.safe-bins.test.ts index e375b15c467f..d237cd24e8f1 100644 --- a/src/agents/pi-tools.safe-bins.test.ts +++ b/src/agents/pi-tools.safe-bins.test.ts @@ -137,7 +137,7 @@ vi.mock("../plugins/tools.js", () => ({ getPluginToolMeta: () => undefined, })); -vi.mock("@mariozechner/pi-coding-agent", () => ({ +vi.mock("@earendil-works/pi-coding-agent", () => ({ AuthStorage: vi.fn(), CURRENT_SESSION_VERSION: 1, ModelRegistry: vi.fn(), diff --git a/src/agents/pi-tools.schema.test.ts b/src/agents/pi-tools.schema.test.ts index d9590d736a03..acd7ebb5ea2c 100644 --- a/src/agents/pi-tools.schema.test.ts +++ b/src/agents/pi-tools.schema.test.ts @@ -1,5 +1,5 @@ -import { runAgentLoop, type AgentEvent, type StreamFn } from "@mariozechner/pi-agent-core"; -import { createAssistantMessageEventStream, validateToolArguments } from "@mariozechner/pi-ai"; +import { runAgentLoop, type AgentEvent, type StreamFn } from "@earendil-works/pi-agent-core"; +import { createAssistantMessageEventStream, validateToolArguments } from "@earendil-works/pi-ai"; import { Type, type TSchema } from "typebox"; import { describe, expect, it, vi } from "vitest"; import { wrapToolWithBeforeToolCallHook } from "./pi-tools.before-tool-call.js"; diff --git a/src/agents/pi-tools.ts b/src/agents/pi-tools.ts index 2a2fc8918ef9..6bc7140399f3 100644 --- a/src/agents/pi-tools.ts +++ b/src/agents/pi-tools.ts @@ -1,4 +1,4 @@ -import { createCodingTools, createReadTool } from "@mariozechner/pi-coding-agent"; +import { createCodingTools, createReadTool } from "@earendil-works/pi-coding-agent"; import type { SourceReplyDeliveryMode } from "../auto-reply/get-reply-options.types.js"; import { HEARTBEAT_RESPONSE_TOOL_NAME } from "../auto-reply/heartbeat-tool-response.js"; import type { ModelCompatConfig } from "../config/types.models.js"; diff --git a/src/agents/pi-tools.workspace-only-false.test.ts b/src/agents/pi-tools.workspace-only-false.test.ts index f7c1c9e6ec1e..ac4f81b7d5dd 100644 --- a/src/agents/pi-tools.workspace-only-false.test.ts +++ b/src/agents/pi-tools.workspace-only-false.test.ts @@ -1,20 +1,20 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import { createReadTool } from "@mariozechner/pi-coding-agent"; +import { createReadTool } from "@earendil-works/pi-coding-agent"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -vi.mock("@mariozechner/pi-ai", async () => { +vi.mock("@earendil-works/pi-ai", async () => { const original = - await vi.importActual("@mariozechner/pi-ai"); + await vi.importActual("@earendil-works/pi-ai"); return { ...original, }; }); -vi.mock("@mariozechner/pi-ai/oauth", async () => { - const actual = await vi.importActual( - "@mariozechner/pi-ai/oauth", +vi.mock("@earendil-works/pi-ai/oauth", async () => { + const actual = await vi.importActual( + "@earendil-works/pi-ai/oauth", ); return { ...actual, diff --git a/src/agents/plugin-text-transforms.test.ts b/src/agents/plugin-text-transforms.test.ts index 3c637d562b46..63966be3e194 100644 --- a/src/agents/plugin-text-transforms.test.ts +++ b/src/agents/plugin-text-transforms.test.ts @@ -1,10 +1,10 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import { createAssistantMessageEventStream, type AssistantMessage, type Context, type Model, -} from "@mariozechner/pi-ai"; +} from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { applyPluginTextReplacements, diff --git a/src/agents/plugin-text-transforms.ts b/src/agents/plugin-text-transforms.ts index 826a56d4129c..8f62046cfc32 100644 --- a/src/agents/plugin-text-transforms.ts +++ b/src/agents/plugin-text-transforms.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { streamSimple, type AssistantMessageEvent } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { streamSimple, type AssistantMessageEvent } from "@earendil-works/pi-ai"; import type { PluginTextReplacement, PluginTextTransforms } from "../plugins/cli-backend.types.js"; import { createStreamIteratorWrapper } from "./stream-iterator-wrapper.js"; diff --git a/src/agents/provider-local-service.test.ts b/src/agents/provider-local-service.test.ts index 5eb25bd14860..85338cbf8979 100644 --- a/src/agents/provider-local-service.test.ts +++ b/src/agents/provider-local-service.test.ts @@ -2,7 +2,7 @@ import fs from "node:fs/promises"; import net from "node:net"; import os from "node:os"; import path from "node:path"; -import type { Model } from "@mariozechner/pi-ai"; +import type { Model } from "@earendil-works/pi-ai"; import { afterEach, describe, expect, it } from "vitest"; import { attachModelProviderLocalService, diff --git a/src/agents/provider-local-service.ts b/src/agents/provider-local-service.ts index c94c13ee50bf..eee0ee6c3b61 100644 --- a/src/agents/provider-local-service.ts +++ b/src/agents/provider-local-service.ts @@ -1,6 +1,6 @@ import { spawn, type ChildProcess } from "node:child_process"; import path from "node:path"; -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import type { ModelProviderLocalServiceConfig } from "../config/types.models.js"; import { createSubsystemLogger } from "../logging/subsystem.js"; diff --git a/src/agents/provider-request-config.ts b/src/agents/provider-request-config.ts index 2ead58d9952e..a83637c57dd8 100644 --- a/src/agents/provider-request-config.ts +++ b/src/agents/provider-request-config.ts @@ -1,4 +1,4 @@ -import type { Api } from "@mariozechner/pi-ai"; +import type { Api } from "@earendil-works/pi-ai"; import type { ModelDefinitionConfig } from "../config/types.js"; import type { ConfiguredModelProviderRequest, diff --git a/src/agents/provider-stream.ts b/src/agents/provider-stream.ts index d0f7493e9359..3821ae502255 100644 --- a/src/agents/provider-stream.ts +++ b/src/agents/provider-stream.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Api, Model } from "@earendil-works/pi-ai"; import type { OpenClawConfig } from "../config/types.openclaw.js"; import { resolveProviderStreamFn } from "../plugins/provider-runtime.js"; import { ensureCustomApiRegistered } from "./custom-api-registry.js"; diff --git a/src/agents/provider-transport-fetch.test.ts b/src/agents/provider-transport-fetch.test.ts index 583c8adc612c..281bf380a3fd 100644 --- a/src/agents/provider-transport-fetch.test.ts +++ b/src/agents/provider-transport-fetch.test.ts @@ -1,4 +1,4 @@ -import type { Model } from "@mariozechner/pi-ai"; +import type { Model } from "@earendil-works/pi-ai"; import { Stream } from "openai/streaming"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { buildGuardedModelFetch } from "./provider-transport-fetch.js"; diff --git a/src/agents/provider-transport-fetch.ts b/src/agents/provider-transport-fetch.ts index e982521b0b74..f70c9e655b40 100644 --- a/src/agents/provider-transport-fetch.ts +++ b/src/agents/provider-transport-fetch.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { fetchWithSsrFGuard, withTrustedEnvProxyGuardedFetchMode, diff --git a/src/agents/provider-transport-stream.test.ts b/src/agents/provider-transport-stream.test.ts index 0428a6180276..49bdf6e8c408 100644 --- a/src/agents/provider-transport-stream.test.ts +++ b/src/agents/provider-transport-stream.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 { attachModelProviderLocalService } from "./provider-local-service.js"; import { attachModelProviderRequestTransport } from "./provider-request-config.js"; diff --git a/src/agents/provider-transport-stream.ts b/src/agents/provider-transport-stream.ts index d1ae98d3212e..5b25731afaac 100644 --- a/src/agents/provider-transport-stream.ts +++ b/src/agents/provider-transport-stream.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Api, Model } from "@earendil-works/pi-ai"; import type { OpenClawConfig } from "../config/types.openclaw.js"; import { resolveProviderStreamFn } from "../plugins/provider-runtime.js"; import { createAnthropicMessagesTransportStreamFn } from "./anthropic-transport-stream.js"; diff --git a/src/agents/runtime-plan/build.ts b/src/agents/runtime-plan/build.ts index a24f59c7f984..ba5bb7c7236b 100644 --- a/src/agents/runtime-plan/build.ts +++ b/src/agents/runtime-plan/build.ts @@ -1,4 +1,4 @@ -import type { AgentTool } from "@mariozechner/pi-agent-core"; +import type { AgentTool } from "@earendil-works/pi-agent-core"; import { resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload"; import type { TSchema } from "typebox"; import type { ThinkLevel } from "../../auto-reply/thinking.js"; diff --git a/src/agents/runtime-plan/tools.test.ts b/src/agents/runtime-plan/tools.test.ts index 85e7b4744f23..feba414325b4 100644 --- a/src/agents/runtime-plan/tools.test.ts +++ b/src/agents/runtime-plan/tools.test.ts @@ -1,4 +1,4 @@ -import type { AgentTool } from "@mariozechner/pi-agent-core"; +import type { AgentTool } from "@earendil-works/pi-agent-core"; import { createNativeOpenAIResponsesModel, createParameterFreeTool, diff --git a/src/agents/runtime-plan/tools.ts b/src/agents/runtime-plan/tools.ts index 6fa6dca1b473..824b9252920d 100644 --- a/src/agents/runtime-plan/tools.ts +++ b/src/agents/runtime-plan/tools.ts @@ -1,4 +1,4 @@ -import type { AgentTool } from "@mariozechner/pi-agent-core"; +import type { AgentTool } from "@earendil-works/pi-agent-core"; import type { TSchema } from "typebox"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; import type { ProviderRuntimeModel } from "../../plugins/provider-runtime-model.types.js"; diff --git a/src/agents/runtime-plan/types.ts b/src/agents/runtime-plan/types.ts index 3637634c4b9d..e84474a42f70 100644 --- a/src/agents/runtime-plan/types.ts +++ b/src/agents/runtime-plan/types.ts @@ -1,4 +1,4 @@ -import type { AgentTool } from "@mariozechner/pi-agent-core"; +import type { AgentTool } from "@earendil-works/pi-agent-core"; import type { TSchema } from "typebox"; export type AgentRuntimeTransport = "sse" | "websocket" | "auto"; diff --git a/src/agents/schema-normalization-runtime-contract.test.ts b/src/agents/schema-normalization-runtime-contract.test.ts index 34d8f366e25a..54e5049035d1 100644 --- a/src/agents/schema-normalization-runtime-contract.test.ts +++ b/src/agents/schema-normalization-runtime-contract.test.ts @@ -1,4 +1,4 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; import { createNativeOpenAIResponsesModel, createParameterFreeTool, diff --git a/src/agents/session-raw-append-message.ts b/src/agents/session-raw-append-message.ts index ea8c39d33646..4af375a377d9 100644 --- a/src/agents/session-raw-append-message.ts +++ b/src/agents/session-raw-append-message.ts @@ -1,4 +1,4 @@ -import type { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { SessionManager } from "@earendil-works/pi-coding-agent"; const RAW_APPEND_MESSAGE = Symbol("openclaw.session.rawAppendMessage"); diff --git a/src/agents/session-tool-result-guard-wrapper.ts b/src/agents/session-tool-result-guard-wrapper.ts index 318f7e7266cd..768cab827fb4 100644 --- a/src/agents/session-tool-result-guard-wrapper.ts +++ b/src/agents/session-tool-result-guard-wrapper.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 type { OpenClawConfig } from "../config/types.openclaw.js"; import { redactSensitiveText } from "../logging/redact.js"; import { getGlobalHookRunner } from "../plugins/hook-runner-global.js"; @@ -109,7 +109,7 @@ export function guardSessionManager( const hookRunner = getGlobalHookRunner(); const beforeMessageWrite = (event: { - message: import("@mariozechner/pi-agent-core").AgentMessage; + message: import("@earendil-works/pi-agent-core").AgentMessage; }) => { let message = event.message; let changed = false; diff --git a/src/agents/session-tool-result-guard.test.ts b/src/agents/session-tool-result-guard.test.ts index 9db8f1c580ad..a48145567a6d 100644 --- a/src/agents/session-tool-result-guard.test.ts +++ b/src/agents/session-tool-result-guard.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"; import { castAgentMessage } from "./test-helpers/agent-message-fixtures.js"; diff --git a/src/agents/session-tool-result-guard.tool-result-persist-hook.test.ts b/src/agents/session-tool-result-guard.tool-result-persist-hook.test.ts index 46cf83a5742d..3f3a532926ad 100644 --- a/src/agents/session-tool-result-guard.tool-result-persist-hook.test.ts +++ b/src/agents/session-tool-result-guard.tool-result-persist-hook.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, vi } from "vitest"; import { initializeGlobalHookRunner, diff --git a/src/agents/session-tool-result-guard.transcript-events.test.ts b/src/agents/session-tool-result-guard.transcript-events.test.ts index a9efbd24e569..aaa66d36ba6f 100644 --- a/src/agents/session-tool-result-guard.transcript-events.test.ts +++ b/src/agents/session-tool-result-guard.transcript-events.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 } from "vitest"; import { onSessionTranscriptUpdate, diff --git a/src/agents/session-tool-result-guard.ts b/src/agents/session-tool-result-guard.ts index 2fdb52ab8d83..fca445013941 100644 --- a/src/agents/session-tool-result-guard.ts +++ b/src/agents/session-tool-result-guard.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 { boundedJsonUtf8Bytes, firstEnumerableOwnKeys, diff --git a/src/agents/session-transcript-repair.attachments.test.ts b/src/agents/session-transcript-repair.attachments.test.ts index 7428325378ee..7daa2a9afe78 100644 --- a/src/agents/session-transcript-repair.attachments.test.ts +++ b/src/agents/session-transcript-repair.attachments.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, it, expect } from "vitest"; import { sanitizeToolCallInputs } from "./session-transcript-repair.js"; import { castAgentMessage, castAgentMessages } from "./test-helpers/agent-message-fixtures.js"; diff --git a/src/agents/session-transcript-repair.test.ts b/src/agents/session-transcript-repair.test.ts index 130b9324606f..67baa7e85ea2 100644 --- a/src/agents/session-transcript-repair.test.ts +++ b/src/agents/session-transcript-repair.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 96ee67f38f87..d18b423e0253 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 { normalizeLowercaseStringOrEmpty, normalizeOptionalString, diff --git a/src/agents/simple-completion-runtime.test.ts b/src/agents/simple-completion-runtime.test.ts index 10145203a067..55fa8eb4e8db 100644 --- a/src/agents/simple-completion-runtime.test.ts +++ b/src/agents/simple-completion-runtime.test.ts @@ -1,4 +1,4 @@ -import type { Model } from "@mariozechner/pi-ai"; +import type { Model } from "@earendil-works/pi-ai"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const hoisted = vi.hoisted(() => ({ @@ -13,7 +13,7 @@ const hoisted = vi.hoisted(() => ({ completeMock: vi.fn(), })); -vi.mock("@mariozechner/pi-ai", () => ({ +vi.mock("@earendil-works/pi-ai", () => ({ completeSimple: hoisted.completeMock, })); diff --git a/src/agents/simple-completion-runtime.ts b/src/agents/simple-completion-runtime.ts index 221ff8f707a7..fcece086efca 100644 --- a/src/agents/simple-completion-runtime.ts +++ b/src/agents/simple-completion-runtime.ts @@ -3,7 +3,7 @@ import { type Api, type Model, type ThinkingLevel as SimpleCompletionThinkingLevel, -} from "@mariozechner/pi-ai"; +} from "@earendil-works/pi-ai"; import type { ThinkLevel } from "../auto-reply/thinking.js"; import type { OpenClawConfig } from "../config/types.openclaw.js"; import { formatErrorMessage } from "../infra/errors.js"; diff --git a/src/agents/simple-completion-transport.test.ts b/src/agents/simple-completion-transport.test.ts index 8848127e6c67..5c202045eb99 100644 --- a/src/agents/simple-completion-transport.test.ts +++ b/src/agents/simple-completion-transport.test.ts @@ -1,4 +1,4 @@ -import type { Model } from "@mariozechner/pi-ai"; +import type { Model } from "@earendil-works/pi-ai"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import type { OpenClawConfig } from "../config/config.js"; diff --git a/src/agents/simple-completion-transport.ts b/src/agents/simple-completion-transport.ts index 623f10740612..3a54cf2532aa 100644 --- a/src/agents/simple-completion-transport.ts +++ b/src/agents/simple-completion-transport.ts @@ -1,4 +1,4 @@ -import { getApiProvider, type Api, type Model } from "@mariozechner/pi-ai"; +import { getApiProvider, type Api, type Model } from "@earendil-works/pi-ai"; import type { OpenClawConfig } from "../config/types.openclaw.js"; import { createAnthropicVertexStreamFnForModel } from "./anthropic-vertex-stream.js"; import { ensureCustomApiRegistered } from "./custom-api-registry.js"; diff --git a/src/agents/skills/compact-format.test.ts b/src/agents/skills/compact-format.test.ts index 074b33b9dfa3..6e1654b28df2 100644 --- a/src/agents/skills/compact-format.test.ts +++ b/src/agents/skills/compact-format.test.ts @@ -1,5 +1,5 @@ import os from "node:os"; -import { formatSkillsForPrompt as upstreamFormatSkillsForPrompt } from "@mariozechner/pi-coding-agent"; +import { formatSkillsForPrompt as upstreamFormatSkillsForPrompt } from "@earendil-works/pi-coding-agent"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import type { OpenClawConfig } from "../../config/config.js"; import { createCanonicalFixtureSkill } from "../skills.test-helpers.js"; diff --git a/src/agents/skills/skill-contract.ts b/src/agents/skills/skill-contract.ts index 1662ed8aa5fa..11f1a024a7c1 100644 --- a/src/agents/skills/skill-contract.ts +++ b/src/agents/skills/skill-contract.ts @@ -1,4 +1,4 @@ -import type { Skill as CanonicalSkill, SourceInfo } from "@mariozechner/pi-coding-agent"; +import type { Skill as CanonicalSkill, SourceInfo } from "@earendil-works/pi-coding-agent"; export type SourceScope = "user" | "project" | "temporary"; export type SourceOrigin = "package" | "top-level"; diff --git a/src/agents/stream-message-shared.ts b/src/agents/stream-message-shared.ts index e71720a06e2b..e669d26d08e0 100644 --- a/src/agents/stream-message-shared.ts +++ b/src/agents/stream-message-shared.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage, StopReason, Usage } from "@mariozechner/pi-ai"; +import type { AssistantMessage, StopReason, Usage } from "@earendil-works/pi-ai"; type StreamModelDescriptor = { api: string; diff --git a/src/agents/subagent-spawn.workspace.test.ts b/src/agents/subagent-spawn.workspace.test.ts index 74ffefebe1e6..36783b01236e 100644 --- a/src/agents/subagent-spawn.workspace.test.ts +++ b/src/agents/subagent-spawn.workspace.test.ts @@ -32,9 +32,9 @@ const hoisted = vi.hoisted(() => ({ let spawnSubagentDirect: typeof import("./subagent-spawn.js").spawnSubagentDirect; let resetSubagentRegistryForTests: typeof import("./subagent-registry.js").resetSubagentRegistryForTests; -vi.mock("@mariozechner/pi-ai/oauth", async () => { - const actual = await vi.importActual( - "@mariozechner/pi-ai/oauth", +vi.mock("@earendil-works/pi-ai/oauth", async () => { + const actual = await vi.importActual( + "@earendil-works/pi-ai/oauth", ); return { ...actual, diff --git a/src/agents/system-prompt-report.ts b/src/agents/system-prompt-report.ts index 21a1085b571f..09ca5f992603 100644 --- a/src/agents/system-prompt-report.ts +++ b/src/agents/system-prompt-report.ts @@ -1,4 +1,4 @@ -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 { buildBootstrapInjectionStats } from "./bootstrap-budget.js"; import type { EmbeddedContextFile } from "./pi-embedded-helpers.js"; diff --git a/src/agents/test-helpers/agent-message-fixtures.ts b/src/agents/test-helpers/agent-message-fixtures.ts index 9d1f5da85f0e..64be4a0bebd6 100644 --- a/src/agents/test-helpers/agent-message-fixtures.ts +++ b/src/agents/test-helpers/agent-message-fixtures.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { AssistantMessage, UserMessage } from "@mariozechner/pi-ai"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { AssistantMessage, UserMessage } from "@earendil-works/pi-ai"; import { ZERO_USAGE_FIXTURE } from "./usage-fixtures.js"; export function castAgentMessage(message: unknown): AgentMessage { diff --git a/src/agents/test-helpers/assistant-message-fixtures.ts b/src/agents/test-helpers/assistant-message-fixtures.ts index 72606a245ad6..a95624266f2f 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"; import { ZERO_USAGE_FIXTURE } from "./usage-fixtures.js"; export function makeAssistantMessageFixture( diff --git a/src/agents/test-helpers/pi-coding-agent-token-mock.ts b/src/agents/test-helpers/pi-coding-agent-token-mock.ts index a9062ddbfd4e..ea978bc2a261 100644 --- a/src/agents/test-helpers/pi-coding-agent-token-mock.ts +++ b/src/agents/test-helpers/pi-coding-agent-token-mock.ts @@ -24,9 +24,9 @@ const piCodingAgentTokenMocks = vi.hoisted(() => { }; }); -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/test-helpers/pi-embedded-runner-e2e-fixtures.ts b/src/agents/test-helpers/pi-embedded-runner-e2e-fixtures.ts index 8c6de7359168..ffb3d57d6ecf 100644 --- a/src/agents/test-helpers/pi-embedded-runner-e2e-fixtures.ts +++ b/src/agents/test-helpers/pi-embedded-runner-e2e-fixtures.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 type { OpenClawConfig } from "../../config/types.openclaw.js"; import { buildAttemptReplayMetadata } from "../pi-embedded-runner/run/incomplete-turn.js"; import type { EmbeddedRunAttemptResult } from "../pi-embedded-runner/run/types.js"; diff --git a/src/agents/test-helpers/pi-tool-stubs.ts b/src/agents/test-helpers/pi-tool-stubs.ts index 4a42aed13ee5..746fc8830daf 100644 --- a/src/agents/test-helpers/pi-tool-stubs.ts +++ b/src/agents/test-helpers/pi-tool-stubs.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 "typebox"; export function createStubTool(name: string): AgentTool { diff --git a/src/agents/test-helpers/usage-fixtures.ts b/src/agents/test-helpers/usage-fixtures.ts index 5b292290c308..ae827cbf5754 100644 --- a/src/agents/test-helpers/usage-fixtures.ts +++ b/src/agents/test-helpers/usage-fixtures.ts @@ -1,4 +1,4 @@ -import type { Usage } from "@mariozechner/pi-ai"; +import type { Usage } from "@earendil-works/pi-ai"; export const ZERO_USAGE_FIXTURE: Usage = { input: 0, diff --git a/src/agents/tool-call-id.test.ts b/src/agents/tool-call-id.test.ts index dcb7202c3347..7994c94ba84b 100644 --- a/src/agents/tool-call-id.test.ts +++ b/src/agents/tool-call-id.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 { castAgentMessages } from "./test-helpers/agent-message-fixtures.js"; import { diff --git a/src/agents/tool-call-id.ts b/src/agents/tool-call-id.ts index 0cfd38e4e8dd..133b26b25f4e 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"; import { hasUnredactedSessionsSpawnAttachments, isAllowedToolCallName, diff --git a/src/agents/tool-images.ts b/src/agents/tool-images.ts index 9937cb03604b..100efc025ec0 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 { canonicalizeBase64 } from "../media/base64.js"; import { diff --git a/src/agents/tool-replay-repair.live.test.ts b/src/agents/tool-replay-repair.live.test.ts index 0e25628608a9..e65841d0509d 100644 --- a/src/agents/tool-replay-repair.live.test.ts +++ b/src/agents/tool-replay-repair.live.test.ts @@ -1,6 +1,6 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import { completeSimple, type Api, type Context, type Model } from "@mariozechner/pi-ai"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import { completeSimple, type Api, type Context, type Model } from "@earendil-works/pi-ai"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import { Type } from "typebox"; import { describe, expect, it } from "vitest"; import { getRuntimeConfig } from "../config/config.js"; diff --git a/src/agents/tool-search.ts b/src/agents/tool-search.ts index bc7d9fdb2084..2bb64c13bb6d 100644 --- a/src/agents/tool-search.ts +++ b/src/agents/tool-search.ts @@ -4,8 +4,8 @@ import type { AgentMessage, 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 { Type } from "typebox"; import type { OpenClawConfig } from "../config/types.openclaw.js"; import { getPluginToolMeta } from "../plugins/tools.js"; diff --git a/src/agents/tools/common.ts b/src/agents/tools/common.ts index becf37bd8767..a3d5ba014187 100644 --- a/src/agents/tools/common.ts +++ b/src/agents/tools/common.ts @@ -2,7 +2,7 @@ import type { AgentTool, AgentToolResult, AgentToolUpdateCallback, -} from "@mariozechner/pi-agent-core"; +} from "@earendil-works/pi-agent-core"; import type { TSchema } from "typebox"; import { readLocalFileSafely } from "../../infra/fs-safe.js"; import { detectMime } from "../../media/mime.js"; diff --git a/src/agents/tools/image-tool.helpers.ts b/src/agents/tools/image-tool.helpers.ts index 7dd18ae404dc..ab7a178c6d87 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 { OpenClawConfig } from "../../config/types.openclaw.js"; import { estimateBase64DecodedBytes } from "../../media/base64.js"; import { normalizeLowercaseStringOrEmpty } from "../../shared/string-coerce.js"; diff --git a/src/agents/tools/media-tool-shared.ts b/src/agents/tools/media-tool-shared.ts index d126bbfd9bed..e0b35f72b6d0 100644 --- a/src/agents/tools/media-tool-shared.ts +++ b/src/agents/tools/media-tool-shared.ts @@ -1,4 +1,4 @@ -import { type Api, type Model } from "@mariozechner/pi-ai"; +import { type Api, type Model } from "@earendil-works/pi-ai"; import type { AgentModelConfig } from "../../config/types.agents-shared.js"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; import type { SsrFPolicy } from "../../infra/net/ssrf.js"; diff --git a/src/agents/tools/nodes-tool-media.ts b/src/agents/tools/nodes-tool-media.ts index 29abc2d9b22e..64a23bdcc992 100644 --- a/src/agents/tools/nodes-tool-media.ts +++ b/src/agents/tools/nodes-tool-media.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 CameraFacing, cameraTempPath, diff --git a/src/agents/tools/pdf-tool.helpers.ts b/src/agents/tools/pdf-tool.helpers.ts index 055902eebf49..3f54f68612ce 100644 --- a/src/agents/tools/pdf-tool.helpers.ts +++ b/src/agents/tools/pdf-tool.helpers.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import { resolveAgentModelFallbackValues, resolveAgentModelPrimaryValue, diff --git a/src/agents/tools/pdf-tool.test.ts b/src/agents/tools/pdf-tool.test.ts index b2a60220b8b9..4dca5ff913c8 100644 --- a/src/agents/tools/pdf-tool.test.ts +++ b/src/agents/tools/pdf-tool.test.ts @@ -15,8 +15,9 @@ import { resetPdfToolAuthEnv, withTempPdfAgentDir } from "./pdf-tool.test-suppor const completeMock = vi.hoisted(() => vi.fn()); -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"); return { ...actual, complete: completeMock, diff --git a/src/agents/tools/pdf-tool.ts b/src/agents/tools/pdf-tool.ts index 32e83e41aa65..6c180cda2198 100644 --- a/src/agents/tools/pdf-tool.ts +++ b/src/agents/tools/pdf-tool.ts @@ -1,4 +1,4 @@ -import { type Context, complete } from "@mariozechner/pi-ai"; +import { type Context, complete } from "@earendil-works/pi-ai"; import { Type } from "typebox"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; import { diff --git a/src/agents/transport-message-transform.test.ts b/src/agents/transport-message-transform.test.ts index 0621b2c98098..1e397be5d3b6 100644 --- a/src/agents/transport-message-transform.test.ts +++ b/src/agents/transport-message-transform.test.ts @@ -1,4 +1,4 @@ -import type { Api, Context, Model } from "@mariozechner/pi-ai"; +import type { Api, Context, Model } from "@earendil-works/pi-ai"; import { describe, expect, it } from "vitest"; import { transformTransportMessages } from "./transport-message-transform.js"; diff --git a/src/agents/transport-message-transform.ts b/src/agents/transport-message-transform.ts index deebf68da9e5..0deb60ed5641 100644 --- a/src/agents/transport-message-transform.ts +++ b/src/agents/transport-message-transform.ts @@ -1,4 +1,4 @@ -import type { Api, Context, Model } from "@mariozechner/pi-ai"; +import type { Api, Context, Model } from "@earendil-works/pi-ai"; import { repairToolUseResultPairing } from "./session-transcript-repair.js"; const SYNTHETIC_TOOL_RESULT_APIS = new Set([ diff --git a/src/agents/transport-params-runtime-contract.test.ts b/src/agents/transport-params-runtime-contract.test.ts index 0587bac53d4f..c84e5815347d 100644 --- a/src/agents/transport-params-runtime-contract.test.ts +++ b/src/agents/transport-params-runtime-contract.test.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { Context, Model } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { Context, Model } from "@earendil-works/pi-ai"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { GPT_PARALLEL_TOOL_CALLS_PAYLOAD_APIS, diff --git a/src/agents/transport-stream-shared.ts b/src/agents/transport-stream-shared.ts index b961dec70792..e297a3fbc5e0 100644 --- a/src/agents/transport-stream-shared.ts +++ b/src/agents/transport-stream-shared.ts @@ -1,4 +1,4 @@ -import { createAssistantMessageEventStream } from "@mariozechner/pi-ai"; +import { createAssistantMessageEventStream } from "@earendil-works/pi-ai"; type TransportUsage = { input: number; diff --git a/src/agents/xai.live.test.ts b/src/agents/xai.live.test.ts index ec19fc89ae34..c133ef546597 100644 --- a/src/agents/xai.live.test.ts +++ b/src/agents/xai.live.test.ts @@ -1,4 +1,4 @@ -import { completeSimple, getModel, streamSimple } from "@mariozechner/pi-ai"; +import { completeSimple, getModel, streamSimple } from "@earendil-works/pi-ai"; import { Type } from "typebox"; import { describe, expect, it } from "vitest"; import { diff --git a/src/agents/zai.live.test.ts b/src/agents/zai.live.test.ts index 5ecf66c65182..32dbe3ef11f0 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"; import { describe, expect, it } from "vitest"; import { createSingleUserPromptMessage, diff --git a/src/auto-reply/get-reply-options.types.ts b/src/auto-reply/get-reply-options.types.ts index 8471e6b2a96e..27b2a076957c 100644 --- a/src/auto-reply/get-reply-options.types.ts +++ b/src/auto-reply/get-reply-options.types.ts @@ -1,4 +1,4 @@ -import type { ImageContent } from "@mariozechner/pi-ai"; +import type { ImageContent } from "@earendil-works/pi-ai"; import type { PromptImageOrderEntry } from "../media/prompt-image-order.js"; import type { ReplyPayload } from "./reply-payload.js"; import type { TypingController } from "./reply/typing.js"; diff --git a/src/auto-reply/handoff-summarizer.ts b/src/auto-reply/handoff-summarizer.ts index 0a063e2ca047..6e085703f561 100644 --- a/src/auto-reply/handoff-summarizer.ts +++ b/src/auto-reply/handoff-summarizer.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; export interface HandoffSnapshot { summary: string; diff --git a/src/auto-reply/reply/agent-runner-memory.ts b/src/auto-reply/reply/agent-runner-memory.ts index 4e821883566e..a38c936eb009 100644 --- a/src/auto-reply/reply/agent-runner-memory.ts +++ b/src/auto-reply/reply/agent-runner-memory.ts @@ -1,6 +1,6 @@ import crypto from "node:crypto"; import fs from "node:fs"; -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { resolveBootstrapWarningSignaturesSeen } from "../../agents/bootstrap-budget.js"; import { estimateMessagesTokens } from "../../agents/compaction.js"; import { runWithModelFallback } from "../../agents/model-fallback.js"; diff --git a/src/auto-reply/reply/commands-export-session.ts b/src/auto-reply/reply/commands-export-session.ts index 3d585f7db69a..b9e97592a2cb 100644 --- a/src/auto-reply/reply/commands-export-session.ts +++ b/src/auto-reply/reply/commands-export-session.ts @@ -6,7 +6,7 @@ import { parseSessionEntries, type SessionEntry as PiSessionEntry, type SessionHeader, -} from "@mariozechner/pi-coding-agent"; +} from "@earendil-works/pi-coding-agent"; import { pathExists } from "../../infra/fs-safe.js"; import type { ReplyPayload } from "../types.js"; import { diff --git a/src/auto-reply/reply/commands-system-prompt.ts b/src/auto-reply/reply/commands-system-prompt.ts index 01d0280e8089..8442c86df215 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 { isAcpRuntimeSpawnAvailable } from "../../acp/runtime/availability.js"; import { resolveSessionAgentIds } from "../../agents/agent-scope.js"; import { resolveBootstrapContextForRun } from "../../agents/bootstrap-files.js"; diff --git a/src/auto-reply/reply/conversation-label-generator.test.ts b/src/auto-reply/reply/conversation-label-generator.test.ts index 0671181b70c0..d7fe4210371e 100644 --- a/src/auto-reply/reply/conversation-label-generator.test.ts +++ b/src/auto-reply/reply/conversation-label-generator.test.ts @@ -8,9 +8,9 @@ const resolveDefaultModelForAgent = vi.hoisted(() => vi.fn()); const resolveModelAsync = vi.hoisted(() => vi.fn()); const prepareModelForSimpleCompletion = vi.hoisted(() => vi.fn()); -vi.mock("@mariozechner/pi-ai", async () => { +vi.mock("@earendil-works/pi-ai", async () => { const original = - await vi.importActual("@mariozechner/pi-ai"); + await vi.importActual("@earendil-works/pi-ai"); return { ...original, completeSimple, diff --git a/src/auto-reply/reply/conversation-label-generator.ts b/src/auto-reply/reply/conversation-label-generator.ts index b84dc726b40d..9b97a4bf72ee 100644 --- a/src/auto-reply/reply/conversation-label-generator.ts +++ b/src/auto-reply/reply/conversation-label-generator.ts @@ -1,4 +1,4 @@ -import { completeSimple, type TextContent } from "@mariozechner/pi-ai"; +import { completeSimple, type TextContent } from "@earendil-works/pi-ai"; import { requireApiKey } from "../../agents/model-auth.js"; import { resolveDefaultModelForAgent } from "../../agents/model-selection.js"; import { resolveModelAsync } from "../../agents/pi-embedded-runner/model.js"; diff --git a/src/auto-reply/reply/session-fork.runtime.ts b/src/auto-reply/reply/session-fork.runtime.ts index 2c6197bf500e..14375aaae111 100644 --- a/src/auto-reply/reply/session-fork.runtime.ts +++ b/src/auto-reply/reply/session-fork.runtime.ts @@ -8,7 +8,7 @@ import { type FileEntry, type SessionEntry as PiSessionEntry, type SessionHeader, -} from "@mariozechner/pi-coding-agent"; +} from "@earendil-works/pi-coding-agent"; import { derivePromptTokens } from "../../agents/usage.js"; import { resolveSessionFilePath, diff --git a/src/auto-reply/reply/session-transcript-replay.ts b/src/auto-reply/reply/session-transcript-replay.ts index b7afdbc97633..8b843d24980b 100644 --- a/src/auto-reply/reply/session-transcript-replay.ts +++ b/src/auto-reply/reply/session-transcript-replay.ts @@ -1,7 +1,7 @@ import fs from "node:fs"; import fsp from "node:fs/promises"; import path from "node:path"; -import { CURRENT_SESSION_VERSION } from "@mariozechner/pi-coding-agent"; +import { CURRENT_SESSION_VERSION } from "@earendil-works/pi-coding-agent"; /** Tail kept so DM continuity survives silent session rotations. */ export const DEFAULT_REPLAY_MAX_MESSAGES = 6; diff --git a/src/channels/plugins/message-action-dispatch.ts b/src/channels/plugins/message-action-dispatch.ts index 224c70088fce..aa73da4700ab 100644 --- a/src/channels/plugins/message-action-dispatch.ts +++ b/src/channels/plugins/message-action-dispatch.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { getChannelPlugin } from "./index.js"; import type { ChannelMessageActionContext } from "./types.public.js"; diff --git a/src/channels/plugins/types.core.ts b/src/channels/plugins/types.core.ts index 2ee3fa29c773..0d6e7e34af66 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 "typebox"; import type { ReplyPayload } from "../../auto-reply/reply-payload.js"; import type { MsgContext } from "../../auto-reply/templating.js"; diff --git a/src/cli/skills-cli.test.ts b/src/cli/skills-cli.test.ts index 509c18310052..59d75f51e931 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/chutes-oauth.ts b/src/commands/chutes-oauth.ts index 7ad91d14184a..86da7aafa14b 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 5e8802dbe58d..2d9671d43e73 100644 --- a/src/commands/models/list.list-command.ts +++ b/src/commands/models/list.list-command.ts @@ -1,5 +1,5 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; -import type { ModelRegistry } from "@mariozechner/pi-coding-agent"; +import type { Api, Model } from "@earendil-works/pi-ai"; +import type { ModelRegistry } from "@earendil-works/pi-coding-agent"; import { parseModelRef } from "../../agents/model-selection.js"; import type { RuntimeEnv } from "../../runtime.js"; import { createLazyImportLoader } from "../../shared/lazy-promise.js"; diff --git a/src/commands/models/list.provider-catalog.ts b/src/commands/models/list.provider-catalog.ts index 4d9aaf482f6e..e242bd3f5b2e 100644 --- a/src/commands/models/list.provider-catalog.ts +++ b/src/commands/models/list.provider-catalog.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { normalizeProviderId } from "../../agents/provider-id.js"; import type { ModelProviderConfig } from "../../config/types.models.js"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; diff --git a/src/commands/models/list.registry-load.ts b/src/commands/models/list.registry-load.ts index 997962ab81f4..6dcb80e7e94b 100644 --- a/src/commands/models/list.registry-load.ts +++ b/src/commands/models/list.registry-load.ts @@ -1,5 +1,5 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; -import type { ModelRegistry } from "@mariozechner/pi-coding-agent"; +import type { Api, Model } from "@earendil-works/pi-ai"; +import type { ModelRegistry } from "@earendil-works/pi-coding-agent"; import { resolveDefaultAgentDir } from "../../agents/agent-scope.js"; import { shouldSuppressBuiltInModel } from "../../agents/model-suppression.js"; import { discoverAuthStorage, discoverModels } from "../../agents/pi-model-discovery.js"; diff --git a/src/commands/models/list.registry.ts b/src/commands/models/list.registry.ts index ce810efe797c..217f849874e6 100644 --- a/src/commands/models/list.registry.ts +++ b/src/commands/models/list.registry.ts @@ -1,5 +1,5 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; -import type { ModelRegistry } from "@mariozechner/pi-coding-agent"; +import type { Api, Model } from "@earendil-works/pi-ai"; +import type { ModelRegistry } from "@earendil-works/pi-coding-agent"; import { resolveDefaultAgentDir } from "../../agents/agent-scope.js"; import { shouldSuppressBuiltInModel, diff --git a/src/commands/models/list.row-sources.ts b/src/commands/models/list.row-sources.ts index 997a0f37ceb7..ccb68c80ecc5 100644 --- a/src/commands/models/list.row-sources.ts +++ b/src/commands/models/list.row-sources.ts @@ -1,4 +1,4 @@ -import type { ModelRegistry } from "@mariozechner/pi-coding-agent"; +import type { ModelRegistry } from "@earendil-works/pi-coding-agent"; import { appendCatalogSupplementRows, appendAuthenticatedCatalogRows, diff --git a/src/commands/models/list.rows.ts b/src/commands/models/list.rows.ts index fa16f2bc7d44..450bb0686fb8 100644 --- a/src/commands/models/list.rows.ts +++ b/src/commands/models/list.rows.ts @@ -1,5 +1,5 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; -import type { ModelRegistry } from "@mariozechner/pi-coding-agent"; +import type { Api, Model } from "@earendil-works/pi-ai"; +import type { ModelRegistry } from "@earendil-works/pi-coding-agent"; import { DEFAULT_CONTEXT_TOKENS } from "../../agents/defaults.js"; import { shouldSuppressBuiltInModel, diff --git a/src/commands/models/scan.ts b/src/commands/models/scan.ts index 56c1c72d1b4b..c9efe2a0b016 100644 --- a/src/commands/models/scan.ts +++ b/src/commands/models/scan.ts @@ -1,5 +1,5 @@ import { cancel, multiselect as clackMultiselect, isCancel } from "@clack/prompts"; -import { getEnvApiKey } from "@mariozechner/pi-ai"; +import { getEnvApiKey } from "@earendil-works/pi-ai"; import { resolveApiKeyForProvider } from "../../agents/model-auth.js"; import { type ModelScanResult, scanOpenRouterModels } from "../../agents/model-scan.js"; import { formatCliCommand } from "../../cli/command-format.js"; diff --git a/src/commands/onboard-auth.test.ts b/src/commands/onboard-auth.test.ts index b356ecd65d75..4f763c777269 100644 --- a/src/commands/onboard-auth.test.ts +++ b/src/commands/onboard-auth.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, vi } from "vitest"; import { applyAuthProfileConfig, diff --git a/src/config/sessions/transcript-append.ts b/src/config/sessions/transcript-append.ts index 9f88b7864278..39ff44f09d10 100644 --- a/src/config/sessions/transcript-append.ts +++ b/src/config/sessions/transcript-append.ts @@ -11,12 +11,12 @@ import { const TRANSCRIPT_APPEND_SCAN_CHUNK_BYTES = 64 * 1024; const SESSION_MANAGER_APPEND_MAX_BYTES = 8 * 1024 * 1024; -let piCodingAgentModulePromise: Promise | null = +let piCodingAgentModulePromise: Promise | null = null; const transcriptAppendQueues = new Map>(); async function loadCurrentSessionVersion(): Promise { - piCodingAgentModulePromise ??= import("@mariozechner/pi-coding-agent"); + piCodingAgentModulePromise ??= import("@earendil-works/pi-coding-agent"); return (await piCodingAgentModulePromise).CURRENT_SESSION_VERSION; } diff --git a/src/config/sessions/transcript.ts b/src/config/sessions/transcript.ts index 7ebd91e490ee..e0b08d5a28fe 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 type { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { SessionManager } from "@earendil-works/pi-coding-agent"; import type { SessionWriteLockAcquireTimeoutConfig } from "../../agents/session-write-lock.js"; import { formatErrorMessage } from "../../infra/errors.js"; import { emitSessionTranscriptUpdate } from "../../sessions/transcript-events.js"; @@ -18,11 +18,13 @@ import { appendSessionTranscriptMessage } from "./transcript-append.js"; import { resolveMirroredTranscriptText } from "./transcript-mirror.js"; import type { SessionEntry } from "./types.js"; -let piCodingAgentModulePromise: Promise | null = +let piCodingAgentModulePromise: Promise | null = null; -async function loadPiCodingAgentModule(): Promise { - piCodingAgentModulePromise ??= import("@mariozechner/pi-coding-agent"); +async function loadPiCodingAgentModule(): Promise< + typeof import("@earendil-works/pi-coding-agent") +> { + piCodingAgentModulePromise ??= import("@earendil-works/pi-coding-agent"); return await piCodingAgentModulePromise; } diff --git a/src/config/sessions/types.ts b/src/config/sessions/types.ts index 5276e4ffea45..3e9198ccc89b 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/channel-id.types.js"; import { normalizeOptionalString } from "../../shared/string-coerce.js"; diff --git a/src/config/types.models.ts b/src/config/types.models.ts index 7a7b18900ad3..5a586b357189 100644 --- a/src/config/types.models.ts +++ b/src/config/types.models.ts @@ -2,7 +2,7 @@ import type { AnthropicMessagesCompat, OpenAICompletionsCompat, OpenAIResponsesCompat, -} from "@mariozechner/pi-ai"; +} from "@earendil-works/pi-ai"; import type { AgentRuntimePolicyConfig } from "./types.agents-shared.js"; import type { ConfiguredModelProviderRequest } from "./types.provider-request.js"; import type { SecretInput } from "./types.secrets.js"; diff --git a/src/context-engine/context-engine.test.ts b/src/context-engine/context-engine.test.ts index e1cc4c838047..dd28de90fa85 100644 --- a/src/context-engine/context-engine.test.ts +++ b/src/context-engine/context-engine.test.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import type { MemoryCitationsMode } from "../config/types.memory.js"; import type { OpenClawConfig } from "../config/types.openclaw.js"; diff --git a/src/context-engine/legacy.ts b/src/context-engine/legacy.ts index 88830bebb059..39cdfa9b95fd 100644 --- a/src/context-engine/legacy.ts +++ b/src/context-engine/legacy.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import type { MemoryCitationsMode } from "../config/types.memory.js"; import { delegateCompactionToRuntime } from "./delegate.js"; import type { diff --git a/src/context-engine/types.ts b/src/context-engine/types.ts index b870192a3ee0..4438a3f5f554 100644 --- a/src/context-engine/types.ts +++ b/src/context-engine/types.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import type { MemoryCitationsMode } from "../config/types.memory.js"; // Result types diff --git a/src/gateway/gateway-models.profiles.live.test.ts b/src/gateway/gateway-models.profiles.live.test.ts index ac4f54b3ba12..6a1d79ad4259 100644 --- a/src/gateway/gateway-models.profiles.live.test.ts +++ b/src/gateway/gateway-models.profiles.live.test.ts @@ -12,7 +12,7 @@ import { type KnownProvider, type Model, type ModelThinkingLevel, -} from "@mariozechner/pi-ai"; +} from "@earendil-works/pi-ai"; import { afterEach, describe, expect, it } from "vitest"; import { resolveAgentWorkspaceDir, resolveDefaultAgentDir } from "../agents/agent-scope.js"; import { diff --git a/src/gateway/server-methods/chat-transcript-inject.ts b/src/gateway/server-methods/chat-transcript-inject.ts index ef5299b322a3..a04187a1cf3f 100644 --- a/src/gateway/server-methods/chat-transcript-inject.ts +++ b/src/gateway/server-methods/chat-transcript-inject.ts @@ -1,4 +1,4 @@ -import type { SessionManager } from "@mariozechner/pi-coding-agent"; +import type { SessionManager } from "@earendil-works/pi-coding-agent"; import type { SessionWriteLockAcquireTimeoutConfig } from "../../agents/session-write-lock.js"; import { appendSessionTranscriptMessage } from "../../config/sessions/transcript-append.js"; import { formatErrorMessage } from "../../infra/errors.js"; diff --git a/src/gateway/server-methods/chat.abort-persistence.test.ts b/src/gateway/server-methods/chat.abort-persistence.test.ts index 1b9fb0feade2..29db6e05d893 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"; import { createActiveRun, diff --git a/src/gateway/server-methods/chat.directive-tags.test.ts b/src/gateway/server-methods/chat.directive-tags.test.ts index 12c08f6e4c27..6041fe620733 100644 --- a/src/gateway/server-methods/chat.directive-tags.test.ts +++ b/src/gateway/server-methods/chat.directive-tags.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 { afterEach, describe, expect, it, vi } from "vitest"; import type { ModelCatalogEntry } from "../../agents/model-catalog.types.js"; import type { MsgContext } from "../../auto-reply/templating.js"; diff --git a/src/gateway/server-methods/chat.test-helpers.ts b/src/gateway/server-methods/chat.test-helpers.ts index 602a732ce34a..69fc5399b76c 100644 --- a/src/gateway/server-methods/chat.test-helpers.ts +++ b/src/gateway/server-methods/chat.test-helpers.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"; export function createTranscriptFixtureSync(params: { prefix: string; diff --git a/src/gateway/server-methods/chat.ts b/src/gateway/server-methods/chat.ts index cd49bd6846c4..e5e21417c9f3 100644 --- a/src/gateway/server-methods/chat.ts +++ b/src/gateway/server-methods/chat.ts @@ -1,8 +1,8 @@ import { createHash } from "node:crypto"; import fs from "node:fs"; import path from "node:path"; -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import { CURRENT_SESSION_VERSION } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import { CURRENT_SESSION_VERSION } from "@earendil-works/pi-coding-agent"; import { resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload"; import { resolveAgentWorkspaceDir, resolveSessionAgentId } from "../../agents/agent-scope.js"; import { rewriteTranscriptEntriesInSessionFile } from "../../agents/pi-embedded-runner/transcript-rewrite.js"; diff --git a/src/gateway/server-methods/sessions.ts b/src/gateway/server-methods/sessions.ts index 29ac01b84998..abe6b4525bde 100644 --- a/src/gateway/server-methods/sessions.ts +++ b/src/gateway/server-methods/sessions.ts @@ -1,7 +1,7 @@ import { randomUUID } from "node:crypto"; import fs from "node:fs"; 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 { resolveModelAgentRuntimeMetadata } from "../../agents/agent-runtime-metadata.js"; import { listAgentIds, diff --git a/src/gateway/session-compaction-checkpoints.test.ts b/src/gateway/session-compaction-checkpoints.test.ts index ce575c7b1d63..753aed6af32e 100644 --- a/src/gateway/session-compaction-checkpoints.test.ts +++ b/src/gateway/session-compaction-checkpoints.test.ts @@ -2,8 +2,8 @@ import fsSync from "node:fs"; import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import type { AssistantMessage } from "@mariozechner/pi-ai"; -import { CURRENT_SESSION_VERSION, SessionManager } from "@mariozechner/pi-coding-agent"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; +import { CURRENT_SESSION_VERSION, SessionManager } from "@earendil-works/pi-coding-agent"; import { afterEach, describe, expect, test, vi } from "vitest"; import type { OpenClawConfig } from "../config/types.openclaw.js"; import { diff --git a/src/gateway/session-compaction-checkpoints.ts b/src/gateway/session-compaction-checkpoints.ts index ccef53e7f85a..89917b5f2836 100644 --- a/src/gateway/session-compaction-checkpoints.ts +++ b/src/gateway/session-compaction-checkpoints.ts @@ -6,7 +6,7 @@ import { migrateSessionEntries, SessionManager, type FileEntry as PiSessionFileEntry, -} from "@mariozechner/pi-coding-agent"; +} from "@earendil-works/pi-coding-agent"; import { updateSessionStore } from "../config/sessions.js"; import type { SessionCompactionCheckpoint, diff --git a/src/gateway/session-reset-service.ts b/src/gateway/session-reset-service.ts index 69e7e7f75227..0f9600342591 100644 --- a/src/gateway/session-reset-service.ts +++ b/src/gateway/session-reset-service.ts @@ -1,7 +1,7 @@ import { randomUUID } from "node:crypto"; import fs from "node:fs"; 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 { getAcpSessionManager } from "../acp/control-plane/manager.js"; import { getAcpRuntimeBackend } from "../acp/runtime/registry.js"; import { readAcpSessionEntry, upsertAcpSessionMeta } from "../acp/runtime/session-meta.js"; diff --git a/src/gateway/session-utils.fs.test.ts b/src/gateway/session-utils.fs.test.ts index 56e507d4e62e..194b0d0faf9a 100644 --- a/src/gateway/session-utils.fs.test.ts +++ b/src/gateway/session-utils.fs.test.ts @@ -1,7 +1,7 @@ import fs from "node:fs"; import os from "node:os"; import path from "node:path"; -import { SessionManager } from "@mariozechner/pi-coding-agent"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; import { afterAll, afterEach, beforeAll, describe, expect, test, vi } from "vitest"; import { createToolSummaryPreviewTranscriptLines } from "./session-preview.test-helpers.js"; import { clearSessionTranscriptIndexCache } from "./session-transcript-index.fs.js"; diff --git a/src/gateway/sessions-history-http.test.ts b/src/gateway/sessions-history-http.test.ts index 68c824d0c04d..d2107f09af88 100644 --- a/src/gateway/sessions-history-http.test.ts +++ b/src/gateway/sessions-history-http.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 { afterEach, describe, expect, test } from "vitest"; import { appendAssistantMessageToSessionTranscript, diff --git a/src/gateway/test/server-sessions.test-helpers.ts b/src/gateway/test/server-sessions.test-helpers.ts index 09b6a261dd45..0109b6b7048a 100644 --- a/src/gateway/test/server-sessions.test-helpers.ts +++ b/src/gateway/test/server-sessions.test-helpers.ts @@ -2,7 +2,7 @@ import fsSync from "node:fs"; import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import type { AssistantMessage, UserMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage, UserMessage } from "@earendil-works/pi-ai"; import { afterAll, beforeAll, beforeEach, expect, vi } from "vitest"; import type { SessionEntry } from "../../config/sessions.js"; import type { InternalHookEvent } from "../../hooks/internal-hooks.js"; @@ -19,12 +19,12 @@ import { } from "../test-helpers.js"; let sessionManagerModulePromise: - | Promise + | Promise | undefined; let gatewayConfigModulePromise: Promise | undefined; export async function getSessionManagerModule() { - sessionManagerModulePromise ??= import("@mariozechner/pi-coding-agent"); + sessionManagerModulePromise ??= import("@earendil-works/pi-coding-agent"); return await sessionManagerModulePromise; } diff --git a/src/infra/outbound/message-action-runner.ts b/src/infra/outbound/message-action-runner.ts index 119f6eb047e9..019a16527a41 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 466f6dda96d9..d2c67e264e5c 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 type { ReplyPayload } from "../../auto-reply/reply-payload.js"; import { dispatchChannelMessageAction } from "../../channels/plugins/message-action-dispatch.js"; import type { diff --git a/src/media-understanding/image.test.ts b/src/media-understanding/image.test.ts index 8b2a7430a144..6ca1f267308c 100644 --- a/src/media-understanding/image.test.ts +++ b/src/media-understanding/image.test.ts @@ -48,8 +48,9 @@ type AuthRequestCall = { store?: unknown; }; -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"); return { ...actual, complete: completeMock, diff --git a/src/media-understanding/image.ts b/src/media-understanding/image.ts index 2ea8cb3d1c9d..3a18ab02081e 100644 --- a/src/media-understanding/image.ts +++ b/src/media-understanding/image.ts @@ -1,5 +1,5 @@ -import type { Api, Context, Model, ProviderStreamOptions } from "@mariozechner/pi-ai"; -import { complete } from "@mariozechner/pi-ai"; +import type { Api, Context, Model, ProviderStreamOptions } from "@earendil-works/pi-ai"; +import { complete } from "@earendil-works/pi-ai"; import { isMinimaxVlmModel, minimaxUnderstandImage } from "../agents/minimax-vlm.js"; import { getApiKeyForModel, diff --git a/src/plugin-sdk/agent-harness-runtime.ts b/src/plugin-sdk/agent-harness-runtime.ts index f82f3c45e4f6..743cc05f4a53 100644 --- a/src/plugin-sdk/agent-harness-runtime.ts +++ b/src/plugin-sdk/agent-harness-runtime.ts @@ -16,7 +16,7 @@ import { truncateUtf16Safe } from "../utils.js"; export const TOOL_PROGRESS_OUTPUT_MAX_CHARS = 8_000; -export type { AgentMessage } from "@mariozechner/pi-agent-core"; +export type { AgentMessage } from "@earendil-works/pi-agent-core"; export type { AgentHarness, AgentHarnessAttemptParams, diff --git a/src/plugin-sdk/provider-stream-shared.test.ts b/src/plugin-sdk/provider-stream-shared.test.ts index 809902c0d89f..43b63ccc4513 100644 --- a/src/plugin-sdk/provider-stream-shared.test.ts +++ b/src/plugin-sdk/provider-stream-shared.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 } from "vitest"; import { createDeepSeekV4OpenAICompatibleThinkingWrapper, diff --git a/src/plugin-sdk/provider-stream-shared.ts b/src/plugin-sdk/provider-stream-shared.ts index 0b9faac52203..f9fe7779197d 100644 --- a/src/plugin-sdk/provider-stream-shared.ts +++ b/src/plugin-sdk/provider-stream-shared.ts @@ -1,5 +1,5 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import { streamSimple } from "@mariozechner/pi-ai"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import { streamSimple } from "@earendil-works/pi-ai"; import { streamWithPayloadPatch } from "../agents/pi-embedded-runner/stream-payload-utils.js"; import { normalizeLowercaseStringOrEmpty } from "../shared/string-coerce.js"; import type { ProviderWrapStreamFnContext } from "./plugin-entry.js"; diff --git a/src/plugin-sdk/provider-stream.test.ts b/src/plugin-sdk/provider-stream.test.ts index 73a17a82bdcf..a4f1d2b727e6 100644 --- a/src/plugin-sdk/provider-stream.test.ts +++ b/src/plugin-sdk/provider-stream.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 } from "vitest"; import { VERSION } from "../version.js"; import { diff --git a/src/plugin-sdk/test-helpers/agents/openclaw-owned-tool-runtime-contract.ts b/src/plugin-sdk/test-helpers/agents/openclaw-owned-tool-runtime-contract.ts index 533833adefff..1fd99558b273 100644 --- a/src/plugin-sdk/test-helpers/agents/openclaw-owned-tool-runtime-contract.ts +++ b/src/plugin-sdk/test-helpers/agents/openclaw-owned-tool-runtime-contract.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import { vi } from "vitest"; import { resetAdjustedParamsByToolCallIdForTests } from "../../../agents/pi-tools.before-tool-call.state.js"; import type { diff --git a/src/plugin-sdk/test-helpers/agents/transcript-repair-runtime-contract.ts b/src/plugin-sdk/test-helpers/agents/transcript-repair-runtime-contract.ts index 30da2592e291..65111854b663 100644 --- a/src/plugin-sdk/test-helpers/agents/transcript-repair-runtime-contract.ts +++ b/src/plugin-sdk/test-helpers/agents/transcript-repair-runtime-contract.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; export const QUEUED_USER_MESSAGE_MARKER = "[Queued user message that arrived while the previous turn was still active]"; diff --git a/src/plugin-sdk/test-helpers/provider-runtime-contract.ts b/src/plugin-sdk/test-helpers/provider-runtime-contract.ts index e91f1bbc3ab5..6d3e20c8257e 100644 --- a/src/plugin-sdk/test-helpers/provider-runtime-contract.ts +++ b/src/plugin-sdk/test-helpers/provider-runtime-contract.ts @@ -9,7 +9,7 @@ import { createProviderUsageFetch, makeResponse } from "../test-env.js"; const CONTRACT_SETUP_TIMEOUT_MS = 300_000; -const OAUTH_MODULE_ID = "@mariozechner/pi-ai/oauth"; +const OAUTH_MODULE_ID = "@earendil-works/pi-ai/oauth"; const OPENAI_CODEX_PROVIDER_RUNTIME_MODULE_ID = "../../../extensions/openai/openai-codex-provider.runtime.js"; const refreshOpenAICodexTokenMock = vi.fn(); @@ -22,7 +22,7 @@ const getOAuthProvidersMock = vi.fn(() => [ function installProviderRuntimeContractMocks() { vi.doMock(OAUTH_MODULE_ID, async () => { const actual = - await vi.importActual(OAUTH_MODULE_ID); + await vi.importActual(OAUTH_MODULE_ID); return { ...actual, refreshOpenAICodexToken: refreshOpenAICodexTokenMock, diff --git a/src/plugin-sdk/test-helpers/stream-hooks.ts b/src/plugin-sdk/test-helpers/stream-hooks.ts index 1b8b7fe70486..096ad65a704a 100644 --- a/src/plugin-sdk/test-helpers/stream-hooks.ts +++ b/src/plugin-sdk/test-helpers/stream-hooks.ts @@ -1,4 +1,4 @@ -import type { StreamFn } from "@mariozechner/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; export function createCapturedThinkingConfigStream() { let capturedPayload: Record | undefined; diff --git a/src/plugins/agent-tool-result-middleware-types.ts b/src/plugins/agent-tool-result-middleware-types.ts index 63e7a12710cb..b355dc08606a 100644 --- a/src/plugins/agent-tool-result-middleware-types.ts +++ b/src/plugins/agent-tool-result-middleware-types.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult as PiAgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult as PiAgentToolResult } from "@earendil-works/pi-agent-core"; export type OpenClawAgentToolResult = PiAgentToolResult; diff --git a/src/plugins/codex-app-server-extension-types.ts b/src/plugins/codex-app-server-extension-types.ts index 1e9b813554c0..c9dd43677f00 100644 --- a/src/plugins/codex-app-server-extension-types.ts +++ b/src/plugins/codex-app-server-extension-types.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; export type CodexAppServerToolResultEvent = { threadId: string; diff --git a/src/plugins/contracts/tts-contract-suites.ts b/src/plugins/contracts/tts-contract-suites.ts index 20de6fbac474..b34459b0ce35 100644 --- a/src/plugins/contracts/tts-contract-suites.ts +++ b/src/plugins/contracts/tts-contract-suites.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AssistantMessage } from "@earendil-works/pi-ai"; import type { OpenClawConfig } from "openclaw/plugin-sdk/config-contracts"; import { createEmptyPluginRegistry, @@ -23,7 +23,7 @@ let ttsRuntime: TtsRuntimeModule; let ttsRuntimePromise: Promise | null = null; let ttsRuntimeInitialized = false; let ttsCorePromise: Promise | null = null; -let completeSimple: typeof import("@mariozechner/pi-ai").completeSimple; +let completeSimple: typeof import("@earendil-works/pi-ai").completeSimple; let getApiKeyForModelMock: SummarizeTextDeps["getApiKeyForModel"]; let requireApiKeyMock: SummarizeTextDeps["requireApiKey"]; let resolveModelAsyncMock: SummarizeTextDeps["resolveModelAsync"]; @@ -70,7 +70,7 @@ async function withIsolatedSpeechProviderEnvAsync( return await withEnvAsync(isolatedSpeechProviderEnv(overrides), fn); } -vi.mock("@mariozechner/pi-ai", () => { +vi.mock("@earendil-works/pi-ai", () => { const getApiProvider = vi.fn(() => undefined); return { completeSimple: vi.fn(), @@ -84,7 +84,7 @@ vi.mock("@mariozechner/pi-ai", () => { }; }); -vi.mock("@mariozechner/pi-ai/oauth", () => { +vi.mock("@earendil-works/pi-ai/oauth", () => { return { getOAuthProviders: () => [], getOAuthApiKey: vi.fn(async () => null), @@ -496,7 +496,7 @@ function createResolvedSummarizationConfig(cfg: OpenClawConfig): ResolvedTtsConf async function setupSummarizationMocks() { ({ summarizeText: summarizeTextCore } = await loadTtsCore()); - ({ completeSimple } = await import("@mariozechner/pi-ai")); + ({ completeSimple } = await import("@earendil-works/pi-ai")); getApiKeyForModelMock = vi.fn() as SummarizeTextDeps["getApiKeyForModel"]; requireApiKeyMock = vi.fn() as SummarizeTextDeps["requireApiKey"]; resolveModelAsyncMock = vi.fn() as SummarizeTextDeps["resolveModelAsync"]; diff --git a/src/plugins/hook-types.ts b/src/plugins/hook-types.ts index 78ecb9861c1e..f4a5bcc36fb4 100644 --- a/src/plugins/hook-types.ts +++ b/src/plugins/hook-types.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import type { SourceReplyDeliveryMode } from "../auto-reply/get-reply-options.types.js"; import type { ReplyPayload } from "../auto-reply/reply-payload.js"; import type { diff --git a/src/plugins/hooks.sync-only.test.ts b/src/plugins/hooks.sync-only.test.ts index 7999a0d9b942..c5f5342318b1 100644 --- a/src/plugins/hooks.sync-only.test.ts +++ b/src/plugins/hooks.sync-only.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, vi } from "vitest"; import { createHookRunner, type HookRunnerLogger } from "./hooks.js"; import { createMockPluginRegistry } from "./hooks.test-helpers.js"; diff --git a/src/plugins/host-hook-turn-types.ts b/src/plugins/host-hook-turn-types.ts index 2dbf0d4bb808..0d250c3aaff5 100644 --- a/src/plugins/host-hook-turn-types.ts +++ b/src/plugins/host-hook-turn-types.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import type { PluginJsonValue } from "./host-hook-json.js"; export type PluginNextTurnInjectionPlacement = "prepend_context" | "append_context"; diff --git a/src/plugins/pi-package-graph.test.ts b/src/plugins/pi-package-graph.test.ts index 8bd9675de482..79a9d73ae18d 100644 --- a/src/plugins/pi-package-graph.test.ts +++ b/src/plugins/pi-package-graph.test.ts @@ -12,10 +12,10 @@ type PnpmWorkspaceConfig = { }; const PI_PACKAGE_NAMES = [ - "@mariozechner/pi-agent-core", - "@mariozechner/pi-ai", - "@mariozechner/pi-coding-agent", - "@mariozechner/pi-tui", + "@earendil-works/pi-agent-core", + "@earendil-works/pi-ai", + "@earendil-works/pi-coding-agent", + "@earendil-works/pi-tui", ] as const; function readRootManifest(): RootPackageManifest { diff --git a/src/plugins/provider-auth-helpers.ts b/src/plugins/provider-auth-helpers.ts index ce97bf4162ac..802af53927c3 100644 --- a/src/plugins/provider-auth-helpers.ts +++ b/src/plugins/provider-auth-helpers.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 { resolveDefaultAgentDir } from "../agents/agent-scope-config.js"; import { buildAuthProfileId } from "../agents/auth-profiles/identity.js"; import { upsertAuthProfile } from "../agents/auth-profiles/profiles.js"; diff --git a/src/plugins/provider-model-compat.ts b/src/plugins/provider-model-compat.ts index 7f4e5a52c40d..1480ad5a4a7d 100644 --- a/src/plugins/provider-model-compat.ts +++ b/src/plugins/provider-model-compat.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { detectOpenAICompletionsCompat } from "../agents/openai-completions-compat.js"; import type { ModelCompatConfig } from "../config/types.models.js"; diff --git a/src/plugins/provider-model-helpers.test.ts b/src/plugins/provider-model-helpers.test.ts index b96d23f17b16..5a34fb4dd730 100644 --- a/src/plugins/provider-model-helpers.test.ts +++ b/src/plugins/provider-model-helpers.test.ts @@ -1,4 +1,4 @@ -import type { ModelRegistry } from "@mariozechner/pi-coding-agent"; +import type { ModelRegistry } from "@earendil-works/pi-coding-agent"; import { describe, expect, it } from "vitest"; import { cloneFirstTemplateModel, matchesExactOrPrefix } from "./provider-model-helpers.js"; import type { ProviderRuntimeModel } from "./provider-runtime-model.types.js"; diff --git a/src/plugins/provider-openai-codex-oauth.test.ts b/src/plugins/provider-openai-codex-oauth.test.ts index 4ee5737e0fe7..7a7af1b25f40 100644 --- a/src/plugins/provider-openai-codex-oauth.test.ts +++ b/src/plugins/provider-openai-codex-oauth.test.ts @@ -8,9 +8,9 @@ const mocks = vi.hoisted(() => ({ formatOpenAIOAuthTlsPreflightFix: vi.fn(), })); -vi.mock("@mariozechner/pi-ai/oauth", async () => { - const actual = await vi.importActual( - "@mariozechner/pi-ai/oauth", +vi.mock("@earendil-works/pi-ai/oauth", async () => { + const actual = await vi.importActual( + "@earendil-works/pi-ai/oauth", ); return { ...actual, diff --git a/src/plugins/provider-openai-codex-oauth.ts b/src/plugins/provider-openai-codex-oauth.ts index dd286dbbbdae..b41f3f05d75b 100644 --- a/src/plugins/provider-openai-codex-oauth.ts +++ b/src/plugins/provider-openai-codex-oauth.ts @@ -1,4 +1,4 @@ -import { loginOpenAICodex, type OAuthCredentials } from "@mariozechner/pi-ai/oauth"; +import { loginOpenAICodex, type OAuthCredentials } from "@earendil-works/pi-ai/oauth"; import { formatErrorMessage } from "../infra/errors.js"; import { ensureGlobalUndiciEnvProxyDispatcher } from "../infra/net/undici-global-dispatcher.js"; import type { RuntimeEnv } from "../runtime.js"; diff --git a/src/plugins/provider-replay-helpers.ts b/src/plugins/provider-replay-helpers.ts index c4edd59988cb..eec976e185de 100644 --- a/src/plugins/provider-replay-helpers.ts +++ b/src/plugins/provider-replay-helpers.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { isGemma4ModelId } from "../shared/google-models.js"; import { sanitizeGoogleAssistantFirstOrdering } from "../shared/google-turn-ordering.js"; import { normalizeLowercaseStringOrEmpty } from "../shared/string-coerce.js"; diff --git a/src/plugins/provider-runtime-model.types.ts b/src/plugins/provider-runtime-model.types.ts index d5364097d347..a2e267dbbc94 100644 --- a/src/plugins/provider-runtime-model.types.ts +++ b/src/plugins/provider-runtime-model.types.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import type { ModelCompatConfig } from "../config/types.models.js"; /** diff --git a/src/plugins/provider-runtime.test.ts b/src/plugins/provider-runtime.test.ts index 114c333ca992..11a84e6f8d6e 100644 --- a/src/plugins/provider-runtime.test.ts +++ b/src/plugins/provider-runtime.test.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import type { ModelProviderConfig, OpenClawConfig } from "../config/types.js"; import type { ProviderRuntimeModel } from "./provider-runtime-model.types.js"; diff --git a/src/plugins/runtime/runtime-llm.runtime.ts b/src/plugins/runtime/runtime-llm.runtime.ts index 8567058d4d10..421d5c3fbe42 100644 --- a/src/plugins/runtime/runtime-llm.runtime.ts +++ b/src/plugins/runtime/runtime-llm.runtime.ts @@ -1,4 +1,4 @@ -import type { Api, Message } from "@mariozechner/pi-ai"; +import type { Api, Message } from "@earendil-works/pi-ai"; import { normalizeModelRef } from "../../agents/model-selection.js"; import type { NormalizedUsage, UsageLike } from "../../agents/usage.js"; import { normalizeUsage } from "../../agents/usage.js"; diff --git a/src/plugins/runtime/runtime-model-auth.runtime.ts b/src/plugins/runtime/runtime-model-auth.runtime.ts index 5c37bff3dd72..f5f774fcf212 100644 --- a/src/plugins/runtime/runtime-model-auth.runtime.ts +++ b/src/plugins/runtime/runtime-model-auth.runtime.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { getApiKeyForModel as resolveModelApiKey, resolveApiKeyForProvider as resolveProviderApiKey, diff --git a/src/plugins/runtime/runtime-web-channel-plugin.ts b/src/plugins/runtime/runtime-web-channel-plugin.ts index 843ee9b0e1b5..f4fd644d8817 100644 --- a/src/plugins/runtime/runtime-web-channel-plugin.ts +++ b/src/plugins/runtime/runtime-web-channel-plugin.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@earendil-works/pi-agent-core"; import type { ChannelAgentTool } from "../../channels/plugins/types.core.js"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; import { diff --git a/src/plugins/runtime/types-core.ts b/src/plugins/runtime/types-core.ts index 7b36f2187502..5b198d840c62 100644 --- a/src/plugins/runtime/types-core.ts +++ b/src/plugins/runtime/types-core.ts @@ -317,13 +317,13 @@ export type PluginRuntimeCore = { modelAuth: { /** Resolve auth for a model. Only provider/model, optional cfg, and workspaceDir are used. */ getApiKeyForModel: (params: { - model: import("@mariozechner/pi-ai").Model; + model: import("@earendil-works/pi-ai").Model; cfg?: import("../../config/types.openclaw.js").OpenClawConfig; workspaceDir?: string; }) => Promise; /** Resolve request-ready auth for a model, including provider runtime exchanges. */ getRuntimeAuthForModel: (params: { - model: import("@mariozechner/pi-ai").Model; + model: import("@earendil-works/pi-ai").Model; cfg?: import("../../config/types.openclaw.js").OpenClawConfig; workspaceDir?: string; }) => Promise; diff --git a/src/plugins/types.ts b/src/plugins/types.ts index 383054c19d27..35966cba50ef 100644 --- a/src/plugins/types.ts +++ b/src/plugins/types.ts @@ -1,8 +1,8 @@ import type { IncomingMessage, ServerResponse } from "node:http"; import type { Duplex } from "node:stream"; -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { StreamFn } from "@mariozechner/pi-agent-core"; -import type { ModelRegistry } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { StreamFn } from "@earendil-works/pi-agent-core"; +import type { ModelRegistry } from "@earendil-works/pi-coding-agent"; import type { Command } from "commander"; import type { ApiKeyCredential, diff --git a/src/sessions/input-provenance.ts b/src/sessions/input-provenance.ts index dce11826d576..31ba9db0f27d 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"; import { normalizeOptionalString } from "../shared/string-coerce.js"; export const INPUT_PROVENANCE_KIND_VALUES = [ diff --git a/src/shared/google-turn-ordering.ts b/src/shared/google-turn-ordering.ts index a442d6075480..db6192f2bfac 100644 --- a/src/shared/google-turn-ordering.ts +++ b/src/shared/google-turn-ordering.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; const GOOGLE_TURN_ORDER_BOOTSTRAP_TEXT = "(session bootstrap)"; diff --git a/src/trajectory/export.test.ts b/src/trajectory/export.test.ts index 712f0c923963..dc6ba570590a 100644 --- a/src/trajectory/export.test.ts +++ b/src/trajectory/export.test.ts @@ -1,7 +1,7 @@ import fs from "node:fs"; import os from "node:os"; import path from "node:path"; -import type { Message, Usage } from "@mariozechner/pi-ai"; +import type { Message, Usage } from "@earendil-works/pi-ai"; import { afterAll, describe, expect, it } from "vitest"; import { exportTrajectoryBundle, resolveDefaultTrajectoryExportDir } from "./export.js"; import { TRAJECTORY_RUNTIME_FILE_MAX_BYTES, resolveTrajectoryPointerFilePath } from "./paths.js"; diff --git a/src/trajectory/export.ts b/src/trajectory/export.ts index 441c6a53e338..fbbd7e1b6cc1 100644 --- a/src/trajectory/export.ts +++ b/src/trajectory/export.ts @@ -1,7 +1,7 @@ import fsp from "node:fs/promises"; import path from "node:path"; -import type { AgentMessage } from "@mariozechner/pi-agent-core"; -import type { FileEntry, SessionEntry, SessionHeader } from "@mariozechner/pi-coding-agent"; +import type { AgentMessage } from "@earendil-works/pi-agent-core"; +import type { FileEntry, SessionEntry, SessionHeader } from "@earendil-works/pi-coding-agent"; import { sanitizeDiagnosticPayload } from "../agents/payload-redaction.js"; import { resolveStateDir } from "../config/paths.js"; import { diff --git a/src/tts/tts-core.ts b/src/tts/tts-core.ts index 405cfd4e230f..5a107c99cab5 100644 --- a/src/tts/tts-core.ts +++ b/src/tts/tts-core.ts @@ -1,4 +1,4 @@ -import { completeSimple, type TextContent } from "@mariozechner/pi-ai"; +import { completeSimple, type TextContent } from "@earendil-works/pi-ai"; import { getApiKeyForModel, requireApiKey } from "../agents/model-auth.js"; import { buildModelAliasIndex, diff --git a/src/tui/commands.ts b/src/tui/commands.ts index 2319c2b86a5b..22e6a279e9dc 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 type { OpenClawConfig } from "../config/types.js"; diff --git a/src/tui/components/assistant-message.ts b/src/tui/components/assistant-message.ts index 99e1e9280437..a8b442a1d5c3 100644 --- a/src/tui/components/assistant-message.ts +++ b/src/tui/components/assistant-message.ts @@ -1,4 +1,4 @@ -import { Container, Spacer } from "@mariozechner/pi-tui"; +import { Container, Spacer } from "@earendil-works/pi-tui"; import { markdownTheme, theme } from "../theme/theme.js"; import { HyperlinkMarkdown } from "./hyperlink-markdown.js"; diff --git a/src/tui/components/btw-inline-message.ts b/src/tui/components/btw-inline-message.ts index 7aa813a457e7..d0bcc67616c4 100644 --- a/src/tui/components/btw-inline-message.ts +++ b/src/tui/components/btw-inline-message.ts @@ -1,4 +1,4 @@ -import { Container, Spacer, Text } from "@mariozechner/pi-tui"; +import { Container, Spacer, Text } from "@earendil-works/pi-tui"; import { theme } from "../theme/theme.js"; import { AssistantMessageComponent } from "./assistant-message.js"; diff --git a/src/tui/components/chat-log.ts b/src/tui/components/chat-log.ts index cf5711ad8c64..9df80af2e56d 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 { BtwInlineMessage } from "./btw-inline-message.js"; diff --git a/src/tui/components/custom-editor.test.ts b/src/tui/components/custom-editor.test.ts index 31728eb8279e..b47ae20baf0d 100644 --- a/src/tui/components/custom-editor.test.ts +++ b/src/tui/components/custom-editor.test.ts @@ -1,4 +1,4 @@ -import { TUI } from "@mariozechner/pi-tui"; +import { TUI } from "@earendil-works/pi-tui"; import { afterEach, describe, expect, it, vi } from "vitest"; import { editorTheme } from "../theme/theme.js"; import { CustomEditor } from "./custom-editor.js"; diff --git a/src/tui/components/custom-editor.ts b/src/tui/components/custom-editor.ts index a1d5f51b0ece..5e1bac65aabd 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"; export class CustomEditor extends Editor { onEscape?: () => void; diff --git a/src/tui/components/filterable-select-list.ts b/src/tui/components/filterable-select-list.ts index ca39098e7902..2815aecc03ac 100644 --- a/src/tui/components/filterable-select-list.ts +++ b/src/tui/components/filterable-select-list.ts @@ -1,11 +1,11 @@ -import type { Component } from "@mariozechner/pi-tui"; +import type { Component } from "@earendil-works/pi-tui"; import { Input, matchesKey, type SelectItem, SelectList, type SelectListTheme, -} from "@mariozechner/pi-tui"; +} from "@earendil-works/pi-tui"; import chalk from "chalk"; import { normalizeLowercaseStringOrEmpty } from "../../shared/string-coerce.js"; import { fuzzyFilterLower, prepareSearchItems } from "./fuzzy-filter.js"; diff --git a/src/tui/components/hyperlink-markdown.ts b/src/tui/components/hyperlink-markdown.ts index 6eb0c9fa58d2..0f482311667f 100644 --- a/src/tui/components/hyperlink-markdown.ts +++ b/src/tui/components/hyperlink-markdown.ts @@ -1,5 +1,5 @@ -import type { Component, DefaultTextStyle, MarkdownTheme } from "@mariozechner/pi-tui"; -import { Markdown } from "@mariozechner/pi-tui"; +import type { Component, DefaultTextStyle, MarkdownTheme } from "@earendil-works/pi-tui"; +import { Markdown } from "@earendil-works/pi-tui"; import { addOsc8Hyperlinks, extractUrls } from "../osc8-hyperlinks.js"; /** diff --git a/src/tui/components/markdown-message.ts b/src/tui/components/markdown-message.ts index 12dc935a6add..38e21572fb73 100644 --- a/src/tui/components/markdown-message.ts +++ b/src/tui/components/markdown-message.ts @@ -1,4 +1,4 @@ -import { Container, Spacer } from "@mariozechner/pi-tui"; +import { Container, Spacer } from "@earendil-works/pi-tui"; import { markdownTheme } from "../theme/theme.js"; import { HyperlinkMarkdown } from "./hyperlink-markdown.js"; diff --git a/src/tui/components/searchable-select-list.ts b/src/tui/components/searchable-select-list.ts index 678efadb318e..0c2ecb614664 100644 --- a/src/tui/components/searchable-select-list.ts +++ b/src/tui/components/searchable-select-list.ts @@ -6,7 +6,7 @@ import { type SelectItem, type SelectListTheme, truncateToWidth, -} from "@mariozechner/pi-tui"; +} from "@earendil-works/pi-tui"; import { normalizeLowercaseStringOrEmpty } from "../../shared/string-coerce.js"; import { stripAnsi, visibleWidth } from "../../terminal/ansi.js"; import { findWordBoundaryIndex, fuzzyFilterLower } from "./fuzzy-filter.js"; diff --git a/src/tui/components/selectors.ts b/src/tui/components/selectors.ts index d64430a341bf..9b523778ce7d 100644 --- a/src/tui/components/selectors.ts +++ b/src/tui/components/selectors.ts @@ -1,4 +1,4 @@ -import { type SelectItem, type SettingItem, SettingsList } from "@mariozechner/pi-tui"; +import { type SelectItem, 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 afa86d0089b1..a764e1016edd 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 { markdownTheme, theme } from "../theme/theme.js"; import { sanitizeRenderableText } from "../tui-formatters.js"; diff --git a/src/tui/theme/theme.ts b/src/tui/theme/theme.ts index 31b725068103..b5d71ab0d946 100644 --- a/src/tui/theme/theme.ts +++ b/src/tui/theme/theme.ts @@ -3,7 +3,7 @@ import type { MarkdownTheme, SelectListTheme, SettingsListTheme, -} from "@mariozechner/pi-tui"; +} from "@earendil-works/pi-tui"; import chalk from "chalk"; import { normalizeOptionalLowercaseString } from "../../shared/string-coerce.js"; import type { SearchableSelectListTheme } from "../components/searchable-select-list.js"; diff --git a/src/tui/tui-command-handlers.ts b/src/tui/tui-command-handlers.ts index 98d100ffe822..5a9f541d198d 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, SelectItem, TUI } from "@mariozechner/pi-tui"; +import type { Component, SelectItem, TUI } from "@earendil-works/pi-tui"; import { modelKey } from "../agents/model-ref-shared.js"; import { normalizeGroupActivation } from "../auto-reply/group-activation.js"; import { diff --git a/src/tui/tui-local-shell.ts b/src/tui/tui-local-shell.ts index e9bea276d342..41b4c7125e4b 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 070eb0a847d2..b2bcbd9dfd71 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 51ba45a980d6..fc9fa42849e1 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 9316d530f041..f2f78745dd58 100644 --- a/src/tui/tui-session-actions.test.ts +++ b/src/tui/tui-session-actions.test.ts @@ -43,7 +43,7 @@ describe("tui session actions", () => { clearAll: vi.fn(), } as unknown as import("./components/chat-log.js").ChatLog, btw: createBtwPresenter(), - tui: { requestRender: vi.fn() } as unknown as import("@mariozechner/pi-tui").TUI, + tui: { requestRender: vi.fn() } as unknown as import("@earendil-works/pi-tui").TUI, opts: {}, state: createBaseState(), agentNames: new Map(), @@ -86,7 +86,7 @@ describe("tui session actions", () => { client: { listSessions } as unknown as TuiBackend, chatLog: { addSystem: vi.fn() } as unknown as import("./components/chat-log.js").ChatLog, btw: createBtwPresenter(), - tui: { requestRender } as unknown as import("@mariozechner/pi-tui").TUI, + tui: { requestRender } as unknown as import("@earendil-works/pi-tui").TUI, state, updateFooter, updateAutocompleteProvider, @@ -291,7 +291,7 @@ describe("tui session actions", () => { client: { listSessions } as unknown as TuiBackend, chatLog: { addSystem: vi.fn() } as unknown as import("./components/chat-log.js").ChatLog, btw: createBtwPresenter(), - tui: { requestRender: vi.fn() } as unknown as import("@mariozechner/pi-tui").TUI, + tui: { requestRender: vi.fn() } as unknown as import("@earendil-works/pi-tui").TUI, opts: {}, state, agentNames: new Map(), @@ -362,7 +362,7 @@ describe("tui session actions", () => { clearAll: vi.fn(), } as unknown as import("./components/chat-log.js").ChatLog, btw: createBtwPresenter(), - tui: { requestRender: vi.fn() } as unknown as import("@mariozechner/pi-tui").TUI, + tui: { requestRender: vi.fn() } 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 9a853292ebe2..8d65a146a84e 100644 --- a/src/tui/tui-session-actions.ts +++ b/src/tui/tui-session-actions.ts @@ -1,4 +1,4 @@ -import type { TUI } from "@mariozechner/pi-tui"; +import type { TUI } from "@earendil-works/pi-tui"; import { resolveSessionInfoModelSelection } from "../agents/model-selection-display.js"; import type { SessionsPatchResult } from "../gateway/protocol/index.js"; import { diff --git a/src/tui/tui.ts b/src/tui/tui.ts index 6a2ab017a58e..ccfceb4b1bee 100644 --- a/src/tui/tui.ts +++ b/src/tui/tui.ts @@ -11,7 +11,7 @@ import { ProcessTerminal, Text, TUI, -} from "@mariozechner/pi-tui"; +} from "@earendil-works/pi-tui"; import { resolveAgentIdByWorkspacePath, resolveDefaultAgentId } from "../agents/agent-scope.js"; import { getRuntimeConfig, type OpenClawConfig } from "../config/config.js"; import { registerUncaughtExceptionHandler } from "../infra/unhandled-rejections.js"; diff --git a/src/types/pi-agent-core.d.ts b/src/types/pi-agent-core.d.ts index 12ed4ee5817d..5f0f90c6ee14 100644 --- a/src/types/pi-agent-core.d.ts +++ b/src/types/pi-agent-core.d.ts @@ -1,6 +1,6 @@ -import "@mariozechner/pi-agent-core"; +import "@earendil-works/pi-agent-core"; -declare module "@mariozechner/pi-agent-core" { +declare module "@earendil-works/pi-agent-core" { // OpenClaw persists compaction markers alongside normal agent history. interface CustomAgentMessages { compactionSummary: { diff --git a/src/types/pi-coding-agent.d.ts b/src/types/pi-coding-agent.d.ts index dd411117c469..008ae2f91f11 100644 --- a/src/types/pi-coding-agent.d.ts +++ b/src/types/pi-coding-agent.d.ts @@ -1,6 +1,6 @@ export type OpenClawPiCodingAgentSkillSourceAugmentation = never; -declare module "@mariozechner/pi-coding-agent" { +declare module "@earendil-works/pi-coding-agent" { interface Skill { // OpenClaw relies on the source identifier returned by pi skill loaders. source: string; diff --git a/test/helpers/agents/happy-path-prompt-snapshots.ts b/test/helpers/agents/happy-path-prompt-snapshots.ts index 4c736cfeb662..f8bc8b7c513a 100644 --- a/test/helpers/agents/happy-path-prompt-snapshots.ts +++ b/test/helpers/agents/happy-path-prompt-snapshots.ts @@ -1,6 +1,6 @@ import fs from "node:fs"; import path from "node:path"; -import type { Api, Model } from "@mariozechner/pi-ai"; +import type { Api, Model } from "@earendil-works/pi-ai"; import { resolveHeartbeatPromptForResponseTool } from "../../../src/auto-reply/heartbeat.js"; import { buildDirectChatContext, diff --git a/test/scripts/blacksmith-testbox-runner.test.ts b/test/scripts/blacksmith-testbox-runner.test.ts deleted file mode 100644 index c995d910d9d8..000000000000 --- a/test/scripts/blacksmith-testbox-runner.test.ts +++ /dev/null @@ -1,160 +0,0 @@ -import { EventEmitter } from "node:events"; -import fs from "node:fs"; -import os from "node:os"; -import path from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; -import { - buildBlacksmithRunArgs, - resolveTestboxSyncTimeoutMs, - runBlacksmithTestboxRunner, - splitRunnerArgs, -} from "../../scripts/blacksmith-testbox-runner.mjs"; - -describe("blacksmith testbox runner", () => { - const tempDirs: string[] = []; - - afterEach(() => { - for (const dir of tempDirs.splice(0)) { - fs.rmSync(dir, { recursive: true, force: true }); - } - }); - - it("splits runner args from the remote command", () => { - expect( - splitRunnerArgs(["--id", "tbx_abc123", "--", "OPENCLAW_TESTBOX=1", "pnpm", "check:changed"]), - ).toEqual({ - runnerArgs: ["--id", "tbx_abc123"], - commandArgs: ["OPENCLAW_TESTBOX=1", "pnpm", "check:changed"], - }); - }); - - it("builds blacksmith run arguments", () => { - expect( - buildBlacksmithRunArgs({ - commandArgs: ["OPENCLAW_TESTBOX=1", "pnpm", "check:changed"], - testboxId: "tbx_abc123", - }), - ).toEqual(["testbox", "run", "--id", "tbx_abc123", "OPENCLAW_TESTBOX=1 pnpm check:changed"]); - }); - - it("refuses to run a remote-visible id without a local private key", async () => { - let spawned = false; - const stderr = { write: (value: string) => value.length }; - const code = await runBlacksmithTestboxRunner({ - argv: ["--id", "tbx_01kqap50t9fqggzw1akg5dtmmq", "--", "pnpm", "check:changed"], - env: { OPENCLAW_BLACKSMITH_TESTBOX_STATE_DIR: "/state/testboxes" }, - spawn: () => { - spawned = true; - return { status: 0 }; - }, - stderr, - }); - - expect(code).toBe(2); - expect(spawned).toBe(false); - }); - - it("refuses to run a keyed id that was not claimed by this checkout", async () => { - const stateDir = fs.mkdtempSync(path.join(os.tmpdir(), "openclaw-testbox-runner-")); - tempDirs.push(stateDir); - const testboxDir = path.join(stateDir, "tbx_01kqap50t9fqggzw1akg5dtmmq"); - fs.mkdirSync(testboxDir, { recursive: true }); - fs.writeFileSync(path.join(testboxDir, "id_ed25519"), "test-key\n"); - - let spawned = false; - let stderrText = ""; - const code = await runBlacksmithTestboxRunner({ - argv: ["--id", "tbx_01kqap50t9fqggzw1akg5dtmmq", "--", "pnpm", "check:changed"], - env: { ...process.env, OPENCLAW_BLACKSMITH_TESTBOX_STATE_DIR: stateDir }, - spawn: () => { - spawned = true; - return { status: 0 }; - }, - stderr: { write: (value: string) => (stderrText += value) }, - }); - - expect(code).toBe(2); - expect(spawned).toBe(false); - expect(stderrText).toContain("OpenClaw Testbox claim missing"); - }); - - it("claims a keyed id without spawning when no remote command is supplied", async () => { - const stateDir = fs.mkdtempSync(path.join(os.tmpdir(), "openclaw-testbox-runner-")); - tempDirs.push(stateDir); - const testboxDir = path.join(stateDir, "tbx_01kqap50t9fqggzw1akg5dtmmq"); - const claimPath = path.join(testboxDir, "openclaw-runner.json"); - fs.mkdirSync(testboxDir, { recursive: true }); - fs.writeFileSync(path.join(testboxDir, "id_ed25519"), "test-key\n"); - - let spawned = false; - let stdoutText = ""; - const code = await runBlacksmithTestboxRunner({ - argv: ["--claim", "--id", "tbx_01kqap50t9fqggzw1akg5dtmmq"], - env: { ...process.env, OPENCLAW_BLACKSMITH_TESTBOX_STATE_DIR: stateDir }, - spawn: () => { - spawned = true; - return { status: 0 }; - }, - stdout: { write: (value: string) => (stdoutText += value) }, - }); - - expect(code).toBe(0); - expect(spawned).toBe(false); - expect(stdoutText).toContain("OpenClaw Testbox claim written"); - expect(JSON.parse(fs.readFileSync(claimPath, "utf8")).repoRoot).toBe(process.cwd()); - }); - - it("defaults the Testbox sync timeout and accepts disable override", () => { - expect(resolveTestboxSyncTimeoutMs({})).toBe(300000); - expect(resolveTestboxSyncTimeoutMs({ OPENCLAW_TESTBOX_SYNC_TIMEOUT_MS: "0" })).toBe(0); - expect(resolveTestboxSyncTimeoutMs({ OPENCLAW_TESTBOX_SYNC_TIMEOUT_MS: "2500" })).toBe(2500); - }); - - it("terminates a Testbox run that stalls in sync", async () => { - const stateDir = fs.mkdtempSync(path.join(os.tmpdir(), "openclaw-testbox-runner-")); - tempDirs.push(stateDir); - const testboxId = "tbx_01kqap50t9fqggzw1akg5dtmmq"; - const testboxDir = path.join(stateDir, testboxId); - fs.mkdirSync(testboxDir, { recursive: true }); - fs.writeFileSync(path.join(testboxDir, "id_ed25519"), "test-key\n"); - await runBlacksmithTestboxRunner({ - argv: ["--claim", "--id", testboxId], - env: { ...process.env, OPENCLAW_BLACKSMITH_TESTBOX_STATE_DIR: stateDir }, - stdout: { write: () => 0 }, - }); - - let killed = false; - let stderrText = ""; - const fakeSpawn = () => { - const child = new EventEmitter() as EventEmitter & { - stdout: EventEmitter; - stderr: EventEmitter; - kill: () => void; - }; - child.stdout = new EventEmitter(); - child.stderr = new EventEmitter(); - child.kill = () => { - killed = true; - child.emit("close", 143); - }; - queueMicrotask(() => child.stdout.emit("data", "Syncing... (still in progress)")); - return child; - }; - - const code = await runBlacksmithTestboxRunner({ - argv: ["--id", testboxId, "--", "pnpm", "check:changed"], - env: { - ...process.env, - OPENCLAW_BLACKSMITH_TESTBOX_STATE_DIR: stateDir, - OPENCLAW_TESTBOX_SYNC_TIMEOUT_MS: "1", - }, - spawn: fakeSpawn, - stderr: { write: (value: string) => (stderrText += value) }, - stdout: { write: () => 0 }, - }); - - expect(code).toBe(124); - expect(killed).toBe(true); - expect(stderrText).toContain("Blacksmith Testbox sync produced no post-sync output"); - }); -}); diff --git a/test/scripts/blacksmith-testbox-state.test.ts b/test/scripts/blacksmith-testbox-state.test.ts deleted file mode 100644 index f536ab749e57..000000000000 --- a/test/scripts/blacksmith-testbox-state.test.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { - evaluateLocalTestboxKey, - evaluateOpenClawTestboxClaim, - parseTestboxIdArg, - resolveTestboxId, - writeOpenClawTestboxClaim, -} from "../../scripts/blacksmith-testbox-state.mjs"; - -describe("blacksmith testbox state", () => { - it("parses Testbox ids from args and env", () => { - expect(parseTestboxIdArg(["--id", "tbx_abc123"])).toBe("tbx_abc123"); - expect(parseTestboxIdArg(["--testbox-id=tbx_def456"])).toBe("tbx_def456"); - expect(resolveTestboxId({ argv: [], env: { OPENCLAW_TESTBOX_ID: "tbx_env123" } })).toBe( - "tbx_env123", - ); - }); - - it("fails when a remote-visible Testbox id has no local private key", () => { - const result = evaluateLocalTestboxKey({ - env: { OPENCLAW_BLACKSMITH_TESTBOX_STATE_DIR: "/state/testboxes" }, - exists: () => false, - testboxId: "tbx_01kqap50t9fqggzw1akg5dtmmq", - }); - - expect(result.ok).toBe(false); - expect(result.keyPath).toBe("/state/testboxes/tbx_01kqap50t9fqggzw1akg5dtmmq/id_ed25519"); - expect(result.problems[0]).toContain("local Testbox SSH key missing"); - }); - - it("accepts a Testbox id with a local private key", () => { - const result = evaluateLocalTestboxKey({ - env: { OPENCLAW_BLACKSMITH_TESTBOX_STATE_DIR: "/state/testboxes" }, - exists: (file) => file.endsWith("/tbx_01kqap50t9fqggzw1akg5dtmmq/id_ed25519"), - testboxId: "tbx_01kqap50t9fqggzw1akg5dtmmq", - }); - - expect(result.ok).toBe(true); - expect(result.checked).toBe(true); - }); - - it("fails when a keyed Testbox id has no OpenClaw claim", () => { - const result = evaluateOpenClawTestboxClaim({ - cwd: "/repo", - env: { OPENCLAW_BLACKSMITH_TESTBOX_STATE_DIR: "/state/testboxes" }, - exists: () => false, - testboxId: "tbx_01kqap50t9fqggzw1akg5dtmmq", - }); - - expect(result.ok).toBe(false); - expect(result.claimPath).toBe( - "/state/testboxes/tbx_01kqap50t9fqggzw1akg5dtmmq/openclaw-runner.json", - ); - expect(result.problems[0]).toContain("OpenClaw Testbox claim missing"); - }); - - it("fails when an OpenClaw claim belongs to a different checkout", () => { - const result = evaluateOpenClawTestboxClaim({ - cwd: "/repo/current", - env: { OPENCLAW_BLACKSMITH_TESTBOX_STATE_DIR: "/state/testboxes" }, - exists: () => true, - now: () => new Date("2026-04-29T12:00:00.000Z"), - readFile: () => JSON.stringify({ repoRoot: "/repo/other" }), - testboxId: "tbx_01kqap50t9fqggzw1akg5dtmmq", - }); - - expect(result.ok).toBe(false); - expect(result.problems[0]).toContain("claim repo mismatch"); - }); - - it("fails when an OpenClaw claim is stale after a crash or long pause", () => { - const result = evaluateOpenClawTestboxClaim({ - cwd: "/repo/current", - env: { - OPENCLAW_BLACKSMITH_TESTBOX_STATE_DIR: "/state/testboxes", - OPENCLAW_TESTBOX_CLAIM_TTL_MINUTES: "90", - }, - exists: () => true, - now: () => new Date("2026-04-29T14:00:00.000Z"), - readFile: () => - JSON.stringify({ - claimedAt: "2026-04-29T12:00:00.000Z", - repoRoot: "/repo/current", - }), - testboxId: "tbx_01kqap50t9fqggzw1akg5dtmmq", - }); - - expect(result.ok).toBe(false); - expect(result.problems[0]).toContain("claim is stale"); - }); - - it("writes and accepts an OpenClaw Testbox claim for the current checkout", () => { - const writes = new Map(); - const claim = writeOpenClawTestboxClaim({ - cwd: "/repo/current", - env: { OPENCLAW_BLACKSMITH_TESTBOX_STATE_DIR: "/state/testboxes" }, - mkdir: () => undefined, - now: () => new Date("2026-04-29T12:00:00.000Z"), - testboxId: "tbx_01kqap50t9fqggzw1akg5dtmmq", - writeFile: (file, value) => writes.set(file, value), - }); - - expect(claim.payload).toEqual({ - claimedAt: "2026-04-29T12:00:00.000Z", - repoRoot: "/repo/current", - runnerVersion: 1, - }); - expect( - evaluateOpenClawTestboxClaim({ - cwd: "/repo/current", - env: { OPENCLAW_BLACKSMITH_TESTBOX_STATE_DIR: "/state/testboxes" }, - exists: (file) => writes.has(file), - now: () => new Date("2026-04-29T12:30:00.000Z"), - readFile: (file) => writes.get(file) ?? "", - testboxId: "tbx_01kqap50t9fqggzw1akg5dtmmq", - }).ok, - ).toBe(true); - }); -}); diff --git a/test/scripts/changed-lanes.test.ts b/test/scripts/changed-lanes.test.ts index 4ef9d5bce024..7d07a676ff5a 100644 --- a/test/scripts/changed-lanes.test.ts +++ b/test/scripts/changed-lanes.test.ts @@ -9,10 +9,10 @@ import { isPackageScriptOnlyChange, } from "../../scripts/changed-lanes.mjs"; import { - buildChangedCheckTestboxArgs, + buildChangedCheckCrabboxArgs, createChangedCheckChildEnv, createChangedCheckPlan, - shouldDelegateChangedCheckToTestbox, + shouldDelegateChangedCheckToCrabbox, } from "../../scripts/check-changed.mjs"; import { cleanupTempDirs, makeTempRepoRoot } from "../helpers/temp-repo.js"; @@ -243,15 +243,36 @@ describe("scripts/changed-lanes", () => { it("delegates local Testbox-mode changed gates before running locally", () => { expect( - shouldDelegateChangedCheckToTestbox(["--base", "origin/main"], { + shouldDelegateChangedCheckToCrabbox(["--base", "origin/main"], { OPENCLAW_TESTBOX: "1", PATH: "/usr/bin", }), ).toBe(true); - expect(buildChangedCheckTestboxArgs(["--base", "origin/main", "--head", "HEAD"])).toEqual([ - "testbox:run", + expect(buildChangedCheckCrabboxArgs(["--base", "origin/main", "--head", "HEAD"])).toEqual([ + "crabbox:run", "--", + "--provider", + "blacksmith-testbox", + "--blacksmith-org", + "openclaw", + "--blacksmith-workflow", + ".github/workflows/ci-check-testbox.yml", + "--blacksmith-job", + "check", + "--blacksmith-ref", + "main", + "--idle-timeout", + "90m", + "--ttl", + "240m", + "--timing-json", + "--", + "CI=1", + "NODE_OPTIONS=--max-old-space-size=4096", + "OPENCLAW_TEST_PROJECTS_PARALLEL=6", + "OPENCLAW_VITEST_MAX_WORKERS=1", + "OPENCLAW_VITEST_NO_OUTPUT_TIMEOUT_MS=900000", "OPENCLAW_TESTBOX=1", "OPENCLAW_TESTBOX_REMOTE_RUN=1", "pnpm", @@ -264,15 +285,15 @@ describe("scripts/changed-lanes", () => { }); it("does not delegate dry-run, CI, or already-remote changed gates", () => { - expect(shouldDelegateChangedCheckToTestbox(["--dry-run"], { OPENCLAW_TESTBOX: "1" })).toBe( + expect(shouldDelegateChangedCheckToCrabbox(["--dry-run"], { OPENCLAW_TESTBOX: "1" })).toBe( false, ); expect( - shouldDelegateChangedCheckToTestbox([], { OPENCLAW_TESTBOX: "1", GITHUB_ACTIONS: "true" }), + shouldDelegateChangedCheckToCrabbox([], { OPENCLAW_TESTBOX: "1", GITHUB_ACTIONS: "true" }), ).toBe(false); - expect(shouldDelegateChangedCheckToTestbox([], { OPENCLAW_TESTBOX: "1", CI: "1" })).toBe(false); + expect(shouldDelegateChangedCheckToCrabbox([], { OPENCLAW_TESTBOX: "1", CI: "1" })).toBe(false); expect( - shouldDelegateChangedCheckToTestbox([], { + shouldDelegateChangedCheckToCrabbox([], { OPENCLAW_TESTBOX: "1", OPENCLAW_TESTBOX_REMOTE_RUN: "1", }), diff --git a/test/scripts/testbox-sync-sanity.test.ts b/test/scripts/testbox-sync-sanity.test.ts deleted file mode 100644 index 26bd7016a929..000000000000 --- a/test/scripts/testbox-sync-sanity.test.ts +++ /dev/null @@ -1,76 +0,0 @@ -import path from "node:path"; -import { describe, expect, it } from "vitest"; -import { - evaluateTestboxSyncSanity, - parseGitShortStatus, -} from "../../scripts/testbox-sync-sanity.mjs"; - -describe("testbox sync sanity", () => { - it("parses tracked deletions from git short status", () => { - expect( - parseGitShortStatus( - " D pnpm-lock.yaml\nD package.json\n?? scratch.txt\nR old.ts -> new.ts\n", - ), - ).toEqual([ - { - line: " D pnpm-lock.yaml", - path: "pnpm-lock.yaml", - status: " D", - trackedDeletion: true, - }, - { - line: "D package.json", - path: "package.json", - status: "D ", - trackedDeletion: true, - }, - { - line: "?? scratch.txt", - path: "scratch.txt", - status: "??", - trackedDeletion: false, - }, - { - line: "R old.ts -> new.ts", - path: "new.ts", - status: "R ", - trackedDeletion: false, - }, - ]); - }); - - it("fails before a gate when critical repo files disappeared", () => { - const result = evaluateTestboxSyncSanity({ - cwd: "/repo", - statusRaw: "", - exists: (file) => path.basename(file) !== "pnpm-lock.yaml", - }); - - expect(result.ok).toBe(false); - expect(result.problems).toContain("missing required root files: pnpm-lock.yaml"); - }); - - it("fails on mass tracked deletions unless explicitly allowed", () => { - const statusRaw = Array.from({ length: 3 }, (_, index) => ` D file-${index}.ts`).join("\n"); - const result = evaluateTestboxSyncSanity({ - cwd: "/repo", - statusRaw, - deletionThreshold: 3, - exists: () => true, - }); - - expect(result.ok).toBe(false); - expect(result.trackedDeletionCount).toBe(3); - expect(result.problems[0]).toContain("remote git status has 3 tracked deletions"); - - expect( - evaluateTestboxSyncSanity({ - cwd: "/repo", - statusRaw, - deletionThreshold: 3, - allowMassDeletions: true, - exists: () => true, - }).ok, - ).toBe(true); - }); -}); diff --git a/test/setup.shared.ts b/test/setup.shared.ts index f43c52ac9e46..e3121fc92a2b 100644 --- a/test/setup.shared.ts +++ b/test/setup.shared.ts @@ -5,7 +5,7 @@ declare global { var __OPENCLAW_TEST_REFRESH_OPENAI_CODEX_TOKEN__: ((...args: unknown[]) => unknown) | undefined; } -vi.mock("@mariozechner/pi-ai/oauth", () => ({ +vi.mock("@earendil-works/pi-ai/oauth", () => ({ getOAuthApiKey: () => undefined, getOAuthProviders: () => [], loginOpenAICodex: vi.fn(),